Случайно набрел на форум и специально зарегистрировался чтобы поддержать Shurik насчет того, что
"Си хуже горькой редьки, а придумал его один мудак по фамилии Деннис Ритчи"
Совершенно сгласен. По сравнению с Паскалем, СИ - полное говно.
Мне тоже Паскаль нравится больше, чем С, но я не разделяю мнения, что только ради этого утверждания стоило бы регистрироваться на форуме.
Но смое главное - язык следует выбирать под задачу, а не наоборот. ПОэтому раз Arduino IDE предусматривает C, то и нечего выкаблучиваться. По крайней мере, если целью видится конкретный проект (в железе) на Arduino, а не модификация среды разработки для этой платфоримы.
Т.е. переводить среду на Паскаль ради того, чтобы перевести ее на Паскаль - можно, а ради того, чтобы собрать на Паскале конкретный проект - нецелесообразно.
Доброго времени суток всем! Может не по теме, но недавно удалось запустить свою Ардуинку с АЦП и выводом на 4х разрядный индикатор через драйвер MAX7219. Среду разработки использовал Mikropascal? скачанный с оф. сайта. представляю свой листинг программы, может кому понадобится для ознакомления
program ArduinoUno;
uses
ATMEGA328P,
MAX7219;
var
CS: sbit at PORTB0_bit; //8
SCLK: sbit at PORTB1_bit; //9
DIN: sbit at PORTB2_bit; //10
C: byte;
Val, D: word;
//Str: array[6] of char;
begin
DDRB := $7;//%00111000;// äëÿ àðäóèíî
MAX7219_Initialize(3, $00);
MAX7219_TestDisplay;
//MAX7219_ClearDisplay;
Max7219_SendData(cMax7219_DecodeMode, $FF);
{for C := 0 to $F do
begin
Max7219_SendData(cMax7219_Digit1, C + $10);
Max7219_SendData(cMax7219_Digit2, C);
Max7219_SendData(cMax7219_Digit3, C);
Delay_ms(200);
end; }
//Max7219_SendData(cMax7219_DecodeMode, $00);
//Delay_ms(500);
ADC_Init_Advanced(_ADC_INTERNAL_REF);
while true do
begin
//UART1_Init(9600);
Val := ADC_Get_Sample(0);
D := Dec2Bcd16(Val);
//$FFFF
//C := ;
Max7219_SendData(cMax7219_Digit0, Hi(D) shr 4);
//C := ;
MAX7219_SendData(cMax7219_Digit1, (Hi(D) and $F));
//C := ;
MAX7219_SendData(cMax7219_Digit2, Lo(D) shr 4);
//C := ;
MAX7219_SendData(cMax7219_Digit3, (Lo(D) and $F));
//MAX7219_ClearDisplay;
//Delay_ms(10);
end;
end.
Для компиляции исходников брал за основу Avrdude и написал свою оболочку для ее запуска на основе Xloader. Запуск оболочки осуществляется через интерфейс Mikropascal))
Также пишу на микроПаскале, для Ардуинок ( чаще UNO ) - удобно для отладки макетов и программ, затем конечно делю свою схему, печатку и т.д. Нравиться. И прерывания, и таймеры и LCD и все подряд. Для загрузки в Ардуинку использую программку "gcUploader"
Маленький экранчик, сама видит когда обновился hex файл и если режим автомат - - сама и запихает его в Ардуинку. Кстати ей без разницы че пихать. Можете на Си писать или на ассемблере ( отдельно от среды IDE ) и затем пихаете файлы в Ардуинку.
Сами изделия Ардуинки - универсальны. Они к IDE АРДУИНО никак не привязаны, это просто плата с микроконтролером и вшитым в него загрузчиком. Писать и грузить можете в него луюбые hex для AVR.
Ну, наверное потому, что первоначально тема называлась "Работаем на Паскале. Первые шаги." Было бы обсуждение "Работаем на Ада. Первые шаги" - обсуждали бы Аду. ;););)
Но в любом случае, спасибо за ссылку - Ваш опыт действительно любопытен для расширения кругозора, жаль, что Вы не довели свой эксперимент до конца:
ЕвгенийП пишет:
Вот зачем я его ставил - в этом языке есть родная (именно языковая) мультизадачность, причём очень неплохая. Я хотел попробовать запустить два блокирующих блинка параллельно и посмотреть как он выкрутится. Но тут облом. В опциях "из коробки" мультизадачность оказалась выключенной, а когда я включил, компилятор стал требовать какие-то доп. файлы, которых у него не оказалось. Не стал разбираться - не очень-то и хотелось. Час я на это потратил, а больше - жалко.
Тем более, что Ада действительно разрабатывалась как универсальный язык программирования - от бухгалтерии или развертывания стратегических операций - до программирования встроенных систем, и, кстати, разрабатывался на основе Паскаля, только ещё более строгого, чем сам Паскаль, а варианты на основе языка С даже не прошли на конкурс... - Это я к высказыванию ТС и людей, его поддержавших:
Alexmin пишет:
Случайно набрел на форум и специально зарегистрировался чтобы поддержать Shurik насчет того, что
"Си хуже горькой редьки, а придумал его один мудак по фамилии Деннис Ритчи"
Совершенно согласен. По сравнению с Паскалем, СИ - полное говно.
Итак, интересует именно Паскаль, причем, в моём уточняющем вопросе именно на fpc/Lazarus. Повторю свой вопрос - пробовал ли кто-нибудь этот вариант взамен MikroPascal? Потому что последний - уже 7-ой версии и по прежнему требует лекарства, а fpc/Lazarus - opensource. Такой вот простой мотив...
Не троллинга ради, а токма волей к самообразованию - зачем вам паскаль для ардуино?
Что не хватает в ненавистном Си?
Я сам для окошек все приложения в лазарусе пишу, но вот применять его для программирования МК, вроде как извращение. Даже в приведённой статье, куча асм вставок, нужно знать все регистры, т.е. явно это не для чайников. Что тогда? Заменить {} на begin end?
... Даже в приведённой статье, куча асм вставок, нужно знать все регистры, т.е. явно это не для чайников. Что тогда? Заменить {} на begin end?
Эти все примеры для описания возможностей — вместо руководства на язык. Разница между Си и Паскаль в Менталитете пользователя, а не в begin-end. Любым этим языком можно описать алгоритм и реализацию AVR. НО Си gcc – создан исходно для других машин, другой архитектуры, и в нем НЕ ВОЗМОЖНО делать то что надо для AVR, только через специальные определения или библиотеки на ассемблере. Пример на Си gcc константы хранятся не в ПЗУ а в ОЗУ !!, чтобы они хранились в ПЗУ — есть определение progmem и куча функций по изъятие их от туда, а микро Паскале — константа — сразу в ПЗУ и работа с ней как с обычным определением. Регистры, порты и Биты в Си gcc только со стрелками в право влево и булевыми операциями типа
DDRD = DDRD | ( 1<< 6); и т далее, а микроПаскале — объявил
PINx : sbit at PIND.3; и далее работай — PINx:=1; (или 0) или так = if PINx then …. .
А разместит программу или функцию или переменную, а также константу в нужном месте ОЗУ, ПЗУ — нет проблем — типа =
Procedure test_rw(); org 0x0F00; = И все !! процедура расположена по нужному адресу !!
А все потому, что эта конкретная реализация микро Паскаля под архитектура микроконтроллера, а не процессора для персонального компьютера. И таких плюшек ОЧЕНЬ много, не говоря уже и ЧИТАЕМОМ СИНТАКСИСЕ НА РАЗ. Не возможно на Паскале ничего написать на определениях типа define и скрыть все внутри. Все корректно и ОДНОЗНАЧНО. В общем все в менталитете.
Не троллинга ради, а токма волей к самообразованию - зачем вам паскаль для ардуино? Что не хватает в ненавистном Си?
KindMan, Вы, видимо, по диагонали просмотрели всю тему, если вообще смотрели её с самого начала...
Там в первых постах, (начиная с третьего, по-моему - ну и далее по тексту) Топик Стартер дал ответ на Ваш вопрос, не вижу смысла разводить холивар. Многолетний опыт таких холиваров показывает, что мы (Си-шники и Паскалисты) не переубедим друг друга.
От себя добавлю лишь - да всего хватает, но есть один изъян - НЕ НРАВИТСЯ язык её IDE, ведь возня с Ардуино для большинства её пользователей - это хобби, занятие "для души", а душа к нему не лежит: это как если бы Вы сделали, например, некую поделку с дверным звонком - и красивую, и аккуратную, и всё в ней работает хорошо и правильно, а звонок в ней неприятен для слуха - дребезжит противно и "смазывает" всё впечатление! Что Вы захотите сделать сразу же - конечно поменять звонок на более приятный и мелодичный, чтобы получить подлинное удовольствие! Так и с Ардуино - Паскаль приятнее! ;) Хотя, конечно же, это дело вкуса!
И ещё - Ваш вопрос (про замену скобочек на бегин/энды - если он, конечно же, искренен, а не действительно троллинг) вызван глубоким заблуждением, что эти языки равны. Действительно, практически каждый код на Си может быть переписан на Паскале (и да - в тексте длиннее из-за замены скобочек, знаков присвоения и т.д., но по результирующему коду они всё равно будут практически равны, а если написан в Паскалевском стиле - так и текст может быть короче), но не всякий код на Паскале может быть переписан без специальных ухищрений на Си. Более того, текст на Паскале, если он "в лоб" переписан с кода на Си почти всегда сразу же виден в программе и вызывает неприятное отторжение - типа, фу, Си-шная калька, на Паскале так не пишут! И единственным оправданием такого убогого фрагмента в коде - недостаток времени чтобы переписать этот фрагмент, потому что, как всегда работу нужно было сдавать "ещё вчера", но при этом с обязательной отметкой в ToDo - непременно переписать эту грубую кальку на нормальный Паскаль при первой же возможности.
Поэтому дело не в скобочках и бегин/эндах: как мы видим - даже якобы Паскалевский код (калька с Си-шной программы) вызывает такое же отторжение, а в различии стилей. Паскалевский - прост, логичен, понятен и прозрачен, я бы даже сказал - лаконичен(!), поэтому программа легко может быть модифицирована и легко поддерживается, чего не скажешь о Си-шном стиле, да и вообще о самом языке Си, за создание которого его автор приносил извинения общественности. И не удивительно - ведь за созданием Паскаля стоит профессор Вирт и вся академическая школа (а в основе - куча академических языков, включая Алгол), а за созданием Си - ПТУ-шник, которого тут уже назвали нелицеприятным словом. А второй ПТУ-шник создал на его основе Си-с-классами, пресловутый С++, правда потом посетовал - зря я взял за основу Си, мол, надо было что-то другое... :)
Что касается возможности лёгкой вставки на ассемблере - так это для нас, Паскалистов - ПЛЮС, а не МИНУС, впрочем об этом и о логичности Паскаля уже ответил уважаемый wasq -(пока я писал этот пост - он опередил) в чем я его категорически поддерживаю!
Поэтому, Си-шники, успокойтесь, спрос на Паскаль не убить! Идите в свои темы!
Meligo, как я писал выше, я не Сишник, и опыта в Паскале у меня гораздо больше. Мой вопрос был именно про ваше желание воспользоваться fpc. Пост wasq мне как раз понятен, но он про микропаскаль.
P. S..был недавно опыт по работе на микроСи с PICами, и мне он абсолютно не понравился, не знаю как там для АВР.
Ну тогда извините, просто я воспринял Ваш вопрос скорее как очередную подколку Си-шника, троллинг, как Вы говорите...
Мотив своего интереса к fpc/Lazarus я уже обозначил чуть выше:
meligo пишет:
...Повторю свой вопрос - пробовал ли кто-нибудь этот вариант взамен MikroPascal? Потому что последний - уже 7-ой версии и по прежнему требует лекарства, а fpc/Lazarus - opensource. Такой вот простой мотив...
Пиратом не хочу быть или клянчить лекарство на форуме к MikroPascal - выше его уже давали, но к 6-ке, а у них сейчас 7-мая версия.
... Пиратом не хочу быть или клянчить лекарство на форуме к MikroPascal - выше его уже давали, но к 6-ке, а у них сейчас 7-мая версия.
Много по английски читать не хочу, но чувствую, что с fpc/lazarus видимо будет страдать тем же, что и Cи gcc - компилятор сделан на архитектуру Неймана процессоров ПК и будут неудобства с константами, расположением в памяти разного типа, с адресацией битов и пошаговой отладки и т.п.
Конечно 240$ это не мало за микроПаскаль, но в отличии других платных сред ( от 2 000 $ и выше), это не много и я себе на 7 десятке лет позволил наслаждаться по полной программе купив себе 7 версию микроПаскаля и уже 3 год получаю бесконечную радость от работы с ним.
Я пока ещё не определился, в состоянии оценки возможных решений, в том числе бесплатного.
Что касается английского (или немецкого - там в ссылках, которые я приводил), через Chrome (Google браузер) зайти по ссылкам, правой кнопкой мыши на странице - перевести на русский всю страницу! И никаких проблем, что английский текст, что немецкий. Текст технический - переводит всё близко по смыслу! Ищем нужный фрагмент на русском - дальше вдумчиво, если заинтересовало - проверяем перевод. Очень экономит время и не зависит от языка - исходный текст может быть хоть на китайском, или на нескольких языках :) Текст программы конечно исказит, перевести ключевые слова пытается, но для этого правой кнопкой мыши справа в адресной строке - вернуть назад, потом - там же обратно на русский и т.д.
Короче, автоматический переводчик сейчас уже включен в Chrome - можно очень быстро, не напрягаясь, ссылки по-русски посмотреть, нужное на странице найти и уже внимательно изучить!
Короче, автоматический переводчик сейчас уже включен в Chrome - можно очень быстро, не напрягаясь, ссылки по-русски посмотреть, нужное на странице найти и уже внимательно изучить!
любители ПАскаля не знают языков? одно это уже говорит о многом :)
Ок ! Давно и активно пользуюсь Этим, но тем не менее - мало информации, наверняка основа информации в HELP в самой среде, но это надо качать, ставить изучать, тестировать, а это время, а так как у меня микро Паскаль 7.01, то у меня нет стимула, а библиотек в микро Паскале и описаний всего типа Help - Завались
Вы к тому же ещё и невнимательны - во-первых там несколько ссылок, и они на разных языках, а во-вторых уважаемый пожилой человек пишет, что, вот де, на седьмом десятке купил себе лицензию на программный продукт и делится впечатлением, сравнивает цены и т.д... А потом посетовал, что ссылки подробно не смотрел, не по-русски напрягает сейчас. И я пытаюсь ему помочь. Тем более, что языков там несколько...
По-моему, Ваше неуместное замечание более характеризует Вас, чем, как Вы говорите "любителей Паскаля", Вам не кажется? Какими иностранными языками в совершенстве владеете Вы, жертва ЕГЭ, перечислите пожалуйста! :)))
На самом деле, если без флейма - я бы с удовольствием почитал бы дискуссию умных людей о преимуществах Паскаля над Си - желательно только на серьезном уровне, а не про то что "begin end красивее скобок". Я когда-то (лет 30 назад) начинал с паскаля и, честно говоря, не запомнил в нем ничего сверхоригинального.
Возможно, глупость скажу - но по-моему все ЯВУ очень похожи - во всех один и тот же набор основных элементов - переменные и структуры, блоки begin-end и циклы, функции и подпрограммы. Зная один ЯВУ, освоить любой другой уже в 10 раз проще, алгоритмы по большому счету к языку не привязаны.
В принципе, это же относится и к языкам иностранным - выучив один, каждый следующий идет легче.
Я в Дельфи пописываю с 1997 года, с самой первой версии, еще 16ти разрядной под Win 3.11. Это совершенно не мешает мне программировать контроллеры на С++, да с ненависным Вами goto, и вовсе не парица по поводу какой язык лучше. Любой, если ты знаешь, что делаешь.
Единственное, что я принес с собой из Дельфи в Си - это привычку именования типов и переменных.
Как в Дельфи. Типы начиинаются с Т, TClass, TTimerlist, параметры, передаваемые в функцию, начинаются с А, void Dec(const uint8_t AValue); Поля класса (переменные) начинаются с F и т.д. Я так привык, поэтому глаз не ломаю, переходя с Дельфовских текстов на Сишные. Разница у этих языков невелика, если в дебри всяких функторов и замыканий не лезть.
/// в Дельфи пописываю с 1997 года, с самой первой версии, еще 16ти разрядной под Win 3.11. Это совершенно не мешает мне программировать контроллеры на С++,
Вот и я не знаю, к умным мне или к красивым. И на паскале/делфи и на с/плюсы лет так по 8-10 оттрубил на каждом. Ну в смысле основной язык продукта, а остальное на чем попало. ИМХО - все языки одна херня, через годы можно и не вспомнить на чем писалось. Главное алгоритм запрятаный внутри. А на чем он изложен - вопрос конкретного удобства в конкретном случае. Для ардуины это си - работает из коробки , на шару,. компилятор стандартный де факто. Что ещё нужно. Нахрена другое ещё и платное. Бери да пиши шо хош.
Как в Дельфи. Типы начиинаются с Т, TClass, TTimerlist, параметры, передаваемые в функцию, начинаются с А, void Dec(const uint8_t AValue); Поля класса (переменные) начинаются с F и т.д. Я так привык, поэтому глаз не ломаю, переходя с Дельфовских текстов на Сишные.
Дет, а мошт есть какой дакумент вордафский с правилами ентими, ну шоп принтеру атдать. Хачу приклеить на стол свой кампутерный, ибо код твой уж больно причёсанный, сматреть приятна.
Как в Дельфи. Типы начиинаются с Т, TClass, TTimerlist, параметры, передаваемые в функцию, начинаются с А, void Dec(const uint8_t AValue); Поля класса (переменные) начинаются с F и т.д. Я так привык, поэтому глаз не ломаю, переходя с Дельфовских текстов на Сишные.
Дет, а мошт есть какой дакумент вордафский с правилами ентими, ну шоп принтеру атдать. Хачу приклеить на стол свой кампутерный, ибо код твой уж больно причёсанный, сматреть приятна.
Для ардуины это си - работает из коробки , на шару,. компилятор стандартный де факто. Что ещё нужно. Нахрена другое ещё и платное. Бери да пиши шо хош.
Взгляд чайника: язык предназначен для профессионалов, очень мощный/гибкий - и крайне недружелюбный для начинающих (обратная сторона мощности и "профессиональности").
"Он для суровых парней, которые привыкли к трудностям и могут в голове удержать тысячу нюансов. Накрепко выучили множество правил и всегда используют проверенные методики, что позволяют обходить проблемные места"
вступлюсь за паскаль, во времена когда из компьютеров были только 286 машины довелось мне решать задачу автоматизации рассчетов за платежи ЖКХ в одной фирме, реализовал на Инфо-Бухгалтере, еще под ДОС...так вот столкнулся с задачей сортировки базы данных, естественно открываю Вирта и...проверяю все его методы сортировки, не одолел только одну (просто не понял идеи), остановился на QUICKSORT она для моих данных оказалась самая быстрая, так вот если бы алгоритм был на С перенести его в Инфо-Бухгалтер точно не смог бы, Паскаль более читабелен что ли
ЗЫ windows тогда была но только 2.0 (и даже использовали) )))
Видимо, там наибольшая концентрация людей, хотящих странного.
DetSimen, с какой целью Вы оставили Ваше сообщение? Раскройте, пожалуйста, полнее Вашу мысль - не про Украину, конечно же, Бог с ней, она и так уже всем надоела, а про "хотящих странного..." - чего странного, если тема, в которой Вы оставляете своё (действительно странное) сообщение называется "Работаем на Паскале. Первые шаги".
Ещё в самом начале темы (уже в третьем посте) Топик Стартер вам всем подробно всё разъяснил для чего эта тема и как он "ценит" ответы и мнения Си-шников, если лень читать - могу перевести в лаконичный стиль...
Если Вы читали его разъяснительный пост и Вам всё понятно, тогда почему Вы всё ещё здесь? Зачем Вы забалтываете тему? У Вас есть что сказать по теме топика? - Скажите! Если нет - тогда зачем Вы сюда пришли, пофлудить?
Я потру потом, каданибуть, лишие посты, останеца голая квинтэссенция.
- Ладно, Ок.
Кстати, DetSimen, тут выше хвалили Ваш стиль оформления кода, даже на Си, перенесённый вами из Дельфей, хотел взглянуть на Ваши посты с кодом, но я новичёк на форуме и ещё не разобрался, как найти посты конкретного человека, Ваши, например ;) - Не подскажете, как это сделать, ну или дайте ссылку на Ваши посты с кодом!
Ещё в самом начале темы (уже в третьем посте) Топик Стартер вам всем подробно всё разъяснил для чего эта тема и как он "ценит" ответы и мнения Си-шников, если лень читать - могу перевести в лаконичный стиль...
Если Вы читали его разъяснительный пост и Вам всё понятно, тогда почему Вы всё ещё здесь? Зачем Вы забалтываете тему? У Вас есть что сказать по теме топика? - Скажите! Если нет - тогда зачем Вы сюда пришли, пофлудить?
Уважаемый Мелиго, а Вам не кажется, что для человека, зарегистрировавшегося на форуме только вчера - вы как-то слишком уж нахально себя ведете? Раздаете тут советы - одному куда идти, другому о чем писать... Тема эта - она как заповедник для неведомых зверушек, занесенных в Красную книгу - вас тут обрегают и лелеют. Вам позволяют всячески обсирать Си, являющийся де-факто основным языком программирования на форуме. Сишники сдерживаются, и не обсирают Паскаль в ответ.... хотя есть за что, я уверен. Но вообще терпение народа не безгранично, советую все же помнить, уж извините за прямоту - свое место.
А место Паскаля - вот оно. Си уверенно занимает первую строчку в рейтинге языков по опросу эмбеддеров. в то время как паскаль ДАЖЕ НЕ ПОПАЛ В СПИСОК
В принципе, это же относится и к языкам иностранным - выучив один, каждый следующий идет легче.
Ну только если чуть-чуть. Если следующий относится к языкам той же группы.
После английского немецкий или французский - да, согласен. Если после английского учить финский и арабский - ничем не помогает :)
На самом деле, лингвисты говорят, что даже китайский после английского учить легче. чем сразу. Грамматика всех языков имеет общие черты (например, все ли подозревают, что грамматика русского - основана на смеси латыни и греческого?). Но главное, что выучив один язык - человек усваивает приемы обучения.
Цитата:
То же и с программированием: после паскаля си - хорошо. После паскаля js, джаву или хаскел - не помогает.
вот не первый раз читаю, что JS категорически не похож на С. Мне как-то пришлось править и частично переписывать один проект на жаваскрипте - я совершенно комфортно чувствовал себя со своими знаниями Си и перла. Что там такого принципиально другого в яваскрипте по сравнению с Си
вот не первый раз читаю, что JS категорически не похож на С. Мне как-то пришлось править и частично переписывать один проект на жаваскрипте - я совершенно комфортно чувствовал себя со своими знаниями Си и перла. Что там такого принципиально другого в яваскрипте по сравнению с Си
Хе-хе, процедуры там по-человечески объявляются. И переменные. И тип переменных указывать не нужно - просто var, и клади в нее что угодно )))
Не, после Паскаля JS воспринимать крайне тяжело. Пришлось однажды делать режим для слабовидящих для одного сайта - обматерился весь, пока разобрался )))
И С после Паскаля - тоже жесть. Поначалу смотрел в код и видел только скобочки. Не для человека сей синтаксис создавался, ой не для человека ))
Хе-хе, процедуры там по-человечески объявляются. И переменные. И тип переменных указывать не нужно - просто var, и клади в нее что угодно )))
Не, после Паскаля JS воспринимать крайне тяжело. Пришлось однажды делать режим для слабовидящих для одного сайта - обматерился весь, пока разобрался )))
И С после Паскаля - тоже жесть. Поначалу смотрел в код и видел только скобочки. Не для человека сей синтаксис создавался, ой не для человека ))
ну тогда мне все понятно :) В перле переменные тоже не обьявляются - даже var указывать не нужно. А скобочки там - как в Си. Так что я не испытал шока при переходе к JS и С - и даже не очень заметил этот момент.
Тот, кто знает синтаксис Перла - никогда не скажет, что Си непонятный :)
Кто-то из Паскалеведов выше справедливо заметил, что синтаксис Си специально придуман так,, чтобы набирать поменьше. Но разве это недостаток? - мы же не профессиональные машинистки, чтобы набирать сотни знаков и получать от этого удовольствие. Ларри Вэлл (создатель перла) пошел в этом еще дальше - в перле очень многие служебные слова заменены на символы - решетки, подчеркивания. доллара и тд. Выглядит ужасающе, зато текст втрое короче
Ну не было тогда нормальных IDE с автозавершением и прочими плюшками
Не в этом дело. В 70-е годы ОЗУ на компах было чуть больше, чем щас у Ардуино, поэтому втискивать туда тексты своих программ приходилось со всем возможным тщанием, экономя даже на пробелах. :) Поэтому, кста, в Си и регистр букв различался, чтоб можно было создать аш 52 однобуквенных переменных.
или вот полный класс для AM2320, датчик температуры и влажности
class TAM2320 : public TI2CCustomSensor {
private:
static const uint8_t DEV_DEFAULT_ADDRESS = 0x5C;
static const uint8_t DEV_MEMORY_SIZE = 0x08;
static const uint8_t CMD_READ = 0x03; // команда: прочитать память даччика
static const uint8_t CMD_WRITE = 0x10; // команда: записать в память даччика
protected:
int8_t FTemperature; // тут храница тенпература
uint8_t FHumidity; // а тут - влажность
bool CheckCRC(uint8_t *ANewValues, const uint8_t ASize) {
uint16_t read_crc = (ANewValues[ASize+1] << 8) | (ANewValues[ASize]);
uint16_t calc_crc = 0xFFFF;
for (uint8_t i=0; i<ASize; i++) {
calc_crc ^= ANewValues[i];
for (uint8_t j = 0; j < 8; j++) {
bool b = calc_crc & 0x01;
calc_crc >>= 1;
if (b) calc_crc ^= 0xA001;
}
}
return (read_crc == calc_crc);
}
void Check(const uint8_t ANewData[]) {
uint8_t h = ((ANewData[2] << 8) + (ANewData[3])) / 10;
if (FHumidity != h) { // если влажность поменялась
FHumidity = h; // запомним новое её значение
PostMessage(msg_HumidityChanged, FHumidity); // и уведомим приложение
}
int8_t TH = ANewData[4];
uint8_t TL = ANewData[5];
int k = (TH & 0x80) ? -1 : 1;
TH &= 0x7F;
int8_t t = k* (((TH << 8) + TL) / 10);
if (FTemperature != t) { // то же для тенпературки
FTemperature = t;
PostMessage(msg_TemperatureChanged, FTemperature);
}
}
void internalRead(void) override {
uint8_t data[DEV_MEMORY_SIZE];
int error = 0;
if (!WakeUpDevice(FDevAddress)) {
error = err_i2c_DeviceNotFound;
goto err_exit;
}
delay(5);
Wire.beginTransmission(FDevAddress);
Wire.write(CMD_READ);
Wire.write(0x00);
Wire.write(0x04);
if (Wire.endTransmission() > 0) {
error = err_i2c_ReadError;
goto err_exit;
}
delay(2);
Wire.requestFrom(FDevAddress, DEV_MEMORY_SIZE);
if (Wire.readBytes(data, DEV_MEMORY_SIZE) != DEV_MEMORY_SIZE) {
error = err_i2c_ReadError;
goto err_exit;
}
if (!CheckCRC(data,DEV_MEMORY_SIZE-2)) {
error = err_i2c_CRCError;
goto err_exit;
}
Check(data);
return;
err_exit:
if (error == err_i2c_CRCError) {
PostMessage(msg_Error, error);
}
else {
Error(error);
}
}
public:
TAM2320():TAM2320(DEV_DEFAULT_ADDRESS) {}
TAM2320(const uint8_t ADevAddr) :TI2CCustomSensor(ADevAddr) {
FHumidity = INVALID_HUMIDITY;
FTemperature = INVALID_TEMPERATURE;
FReadInterval = 2000;
FLastReadTime = 0 - FReadInterval - 1;
FFastSpeed = false;
classname = F("AM2320");
}
inline int16_t GetTemperature() {
if (FTemperature == INVALID_TEMPERATURE) Read();
if (isError()) return INVALID_TEMPERATURE;
return FTemperature;
}
inline int16_t GetHumidity() {
if (FHumidity == INVALID_HUMIDITY) Read();
if (isError()) return INVALID_HUMIDITY;
return FHumidity;
}
};
DetSimen! Спасибо, оценил!
Выглядит действительно впечатляюще, недаром Вас тут за оформление кода неоднократно хвалили! Сразу видно - старая (Паскалевская ;) школа! Мне ещё сопроводительная записка понравилась к коду - сразу чувствуется стиль, но особенно доставило - на "электропочту", чтобы не присылали простыней с просьбой вставить Ваши таймеры в их программу. Выглядит очень убедительно, как "электрошокер" :):):)
Ну не было тогда нормальных IDE с автозавершением и прочими плюшками
Не в этом дело. В 70-е годы ОЗУ на компах было чуть больше, чем щас у Ардуино, поэтому втискивать туда тексты своих программ приходилось со всем возможным тщанием, экономя даже на пробелах. :) Поэтому, кста, в Си и регистр букв различался, чтоб можно было создать аш 52 однобуквенных переменных.
Паскаль в те же годы появился, и ему для begin/end и ":=" ОЗУ хватало. А для текстов сишных программ памяти не хватало до такой степени, что пришлось применить извращённый оператор присваивания, чтобы байт съэкономить.
На самом деле, если без флейма - я бы с удовольствием почитал бы дискуссию умных людей о преимуществах Паскаля над Си - желательно только на серьезном уровне, а не про то что "begin end красивее скобок".
b707, Вы правы - здесь в конкретной теме нет смысла разводить флейм, я ведь тоже к этому призывал и призываю!
Несомненно, "Паскаль vs Си" - это тема для религиозных разделов форумов, холиваров так сказать. Таких уже было "миллион и маленькая тележка" и большинство из них, как правило, действительно скатывались к холиварам, но если Вы действительно хотите почитать, как Вы говорите, "дискуссию умных людей о преимуществах Паскаля над Си, (а я добавлю и Си над Паскалем) - желательно только на серьезном уровне", то могу предложить Вам ссылку на уже давно проводившуюся дискуссию на эту тему (раньше она велась на progz.ru, теперь со всей историей переехала на hardforum.ru).
Это довольно старая дискуссия (с 2002 года!) и сейчас там уже под пол-тысячи(!) страниц, но её достоинство в том, что оппоненты там попались довольно интеллигентные, и дискуссию вели в целом сдержано, взаимоуважительно и аргументированно - с примерами и взаимным разбором кодов, аргументами "за" и "против", а также контраргументами, подкреплёнными кодом и т.д. и т.п. - вот почему она сохранилась до сих пор, и, по-моему, даже сейчас жива, правда в конце перешла уже к другим языкам, но и не удивительно, ведь тема дискуссии - Самый крутой язык программирования
Поэтому её сохранили до сих пор и даже перенесли на новый форум - редкий случай, когда, казалось бы, холивар не скатился до банальной, как обычно, перебранки и взаимных оскорблений и упреков, к тому же она представляет исторический интерес - многое из того, что хвалилось в одном языке, но отсутствовало в другом уже перенесли туда, а что-то симметрично заимствовали обратно, но в целом она действительно представляет культорологическую ценность и действительно заслуживала сохранения - спасибо их админам за это!
Что касается тех языков, которые Вас интересуют в Вашем вопросе, то если Вас заинтересует моя ссылка, я бы советовал обратить внимание на страницы, с которых начал дискуссию S.Yu.Gubanov - довольно известная личность в этом вопросе и он, несомненно, являлся камертоном по стилю ведения беседы - всегда с приведением примеров в доказательство своих аргументов и разборов контрпримеров, что требовало аналогичного поведения его оппонентов, хотя и его единомышленники, и оппоненты - безусловно, тоже очень достойные люди. Собственно это обстоятельство и позволило дискуссии приобрести столь конструктивный облик и, думаю, определило её историческую ценность!
Короче, на даче, под печкой или камином, в дождь, под рюмку "чаю" (или коньячок и сигару - кому как нравится) - самое то: и исторично, и познавательно! И место в нашей теме освободим от флейма - если, конечно, я правильно понял суть Вашего вопроса! :) Если нет - не обессудьте, я искренно пытался Вам помочь!
Случайно набрел на форум и специально зарегистрировался чтобы поддержать Shurik насчет того, что
"Си хуже горькой редьки, а придумал его один мудак по фамилии Деннис Ритчи"
Совершенно сгласен. По сравнению с Паскалем, СИ - полное говно.
Мне тоже Паскаль нравится больше, чем С, но я не разделяю мнения, что только ради этого утверждания стоило бы регистрироваться на форуме.
Но смое главное - язык следует выбирать под задачу, а не наоборот. ПОэтому раз Arduino IDE предусматривает C, то и нечего выкаблучиваться. По крайней мере, если целью видится конкретный проект (в железе) на Arduino, а не модификация среды разработки для этой платфоримы.
Т.е. переводить среду на Паскаль ради того, чтобы перевести ее на Паскаль - можно, а ради того, чтобы собрать на Паскале конкретный проект - нецелесообразно.
Доброго времени суток всем! Может не по теме, но недавно удалось запустить свою Ардуинку с АЦП и выводом на 4х разрядный индикатор через драйвер MAX7219. Среду разработки использовал Mikropascal? скачанный с оф. сайта. представляю свой листинг программы, может кому понадобится для ознакомления
Для компиляции исходников брал за основу Avrdude и написал свою оболочку для ее запуска на основе Xloader. Запуск оболочки осуществляется через интерфейс Mikropascal))
ссылка на мою оболочку https://yadi.sk/d/Ou1HFSzg3JpzGy
Также пишу на микроПаскале, для Ардуинок ( чаще UNO ) - удобно для отладки макетов и программ, затем конечно делю свою схему, печатку и т.д. Нравиться. И прерывания, и таймеры и LCD и все подряд. Для загрузки в Ардуинку использую программку "gcUploader"
http://www.getchip.net/posts/148-avtomaticheskijj-zagruzchik-hex-fajjlov-dlya-avr-mikrokontrollerov-obnovlenie-gcuploader/
Маленький экранчик, сама видит когда обновился hex файл и если режим автомат - - сама и запихает его в Ардуинку. Кстати ей без разницы че пихать. Можете на Си писать или на ассемблере ( отдельно от среды IDE ) и затем пихаете файлы в Ардуинку.
Сами изделия Ардуинки - универсальны. Они к IDE АРДУИНО никак не привязаны, это просто плата с микроконтролером и вшитым в него загрузчиком. Писать и грузить можете в него луюбые hex для AVR.
Заинтересовал в самом начале вопрос, поднятый топик стартером... (Программирование Ардуино на Паскале)
Порылся в интернете и обнаружил интересную статью в вики от Free Pascal (fpc): https://wiki.freepascal.org/Arduino
А также внутри этой статьи - ссылку на Minimal Arduino FPC serial example (AVR Programming): https://wiki.freepascal.org/AVR_Programming
И дальше там на Lazarus для Ардуино и т.д.:
https://wiki.freepascal.org/AVR_Embedded_Tutorial_-_Various_programmers/de
https://wiki.freepascal.org/AVR_Embedded_Tutorial_-_Entry_Lazarus_and_Arduino/de
https://github.com/sechshelme/Lazarus-Embedded
Вопрос: Кто-нибудь пробовал это направление в свете программирования Ардуино на Паскале? (т.е. создание программ для Ардуино на fpc / Lazarus)
А почему Паскаль? Вон целая Ада есть - http://arduino.ru/forum/programmirovanie/adskie-sketchi
А почему Паскаль? Вон целая Ада есть - http://arduino.ru/forum/programmirovanie/adskie-sketchi
Ну, наверное потому, что первоначально тема называлась "Работаем на Паскале. Первые шаги." Было бы обсуждение "Работаем на Ада. Первые шаги" - обсуждали бы Аду. ;););)
Но в любом случае, спасибо за ссылку - Ваш опыт действительно любопытен для расширения кругозора, жаль, что Вы не довели свой эксперимент до конца:
Вот зачем я его ставил - в этом языке есть родная (именно языковая) мультизадачность, причём очень неплохая. Я хотел попробовать запустить два блокирующих блинка параллельно и посмотреть как он выкрутится. Но тут облом. В опциях "из коробки" мультизадачность оказалась выключенной, а когда я включил, компилятор стал требовать какие-то доп. файлы, которых у него не оказалось. Не стал разбираться - не очень-то и хотелось. Час я на это потратил, а больше - жалко.
Тем более, что Ада действительно разрабатывалась как универсальный язык программирования - от бухгалтерии или развертывания стратегических операций - до программирования встроенных систем, и, кстати, разрабатывался на основе Паскаля, только ещё более строгого, чем сам Паскаль, а варианты на основе языка С даже не прошли на конкурс... - Это я к высказыванию ТС и людей, его поддержавших:
Случайно набрел на форум и специально зарегистрировался чтобы поддержать Shurik насчет того, что
"Си хуже горькой редьки, а придумал его один мудак по фамилии Деннис Ритчи"
Совершенно согласен. По сравнению с Паскалем, СИ - полное говно.
Итак, интересует именно Паскаль, причем, в моём уточняющем вопросе именно на fpc/Lazarus. Повторю свой вопрос - пробовал ли кто-нибудь этот вариант взамен MikroPascal? Потому что последний - уже 7-ой версии и по прежнему требует лекарства, а fpc/Lazarus - opensource. Такой вот простой мотив...
Не троллинга ради, а токма волей к самообразованию - зачем вам паскаль для ардуино?
Что не хватает в ненавистном Си?
Я сам для окошек все приложения в лазарусе пишу, но вот применять его для программирования МК, вроде как извращение. Даже в приведённой статье, куча асм вставок, нужно знать все регистры, т.е. явно это не для чайников. Что тогда? Заменить {} на begin end?
Эти все примеры для описания возможностей — вместо руководства на язык. Разница между Си и Паскаль в Менталитете пользователя, а не в begin-end. Любым этим языком можно описать алгоритм и реализацию AVR. НО Си gcc – создан исходно для других машин, другой архитектуры, и в нем НЕ ВОЗМОЖНО делать то что надо для AVR, только через специальные определения или библиотеки на ассемблере. Пример на Си gcc константы хранятся не в ПЗУ а в ОЗУ !!, чтобы они хранились в ПЗУ — есть определение progmem и куча функций по изъятие их от туда, а микро Паскале — константа — сразу в ПЗУ и работа с ней как с обычным определением. Регистры, порты и Биты в Си gcc только со стрелками в право влево и булевыми операциями типа
DDRD = DDRD | ( 1<< 6); и т далее, а микроПаскале — объявил
PINx : sbit at PIND.3; и далее работай — PINx:=1; (или 0) или так = if PINx then …. .
А разместит программу или функцию или переменную, а также константу в нужном месте ОЗУ, ПЗУ — нет проблем — типа =
Procedure test_rw(); org 0x0F00; = И все !! процедура расположена по нужному адресу !!
А все потому, что эта конкретная реализация микро Паскаля под архитектура микроконтроллера, а не процессора для персонального компьютера. И таких плюшек ОЧЕНЬ много, не говоря уже и ЧИТАЕМОМ СИНТАКСИСЕ НА РАЗ. Не возможно на Паскале ничего написать на определениях типа define и скрыть все внутри. Все корректно и ОДНОЗНАЧНО. В общем все в менталитете.
KindMan, Вы, видимо, по диагонали просмотрели всю тему, если вообще смотрели её с самого начала...
Там в первых постах, (начиная с третьего, по-моему - ну и далее по тексту) Топик Стартер дал ответ на Ваш вопрос, не вижу смысла разводить холивар. Многолетний опыт таких холиваров показывает, что мы (Си-шники и Паскалисты) не переубедим друг друга.
От себя добавлю лишь - да всего хватает, но есть один изъян - НЕ НРАВИТСЯ язык её IDE, ведь возня с Ардуино для большинства её пользователей - это хобби, занятие "для души", а душа к нему не лежит: это как если бы Вы сделали, например, некую поделку с дверным звонком - и красивую, и аккуратную, и всё в ней работает хорошо и правильно, а звонок в ней неприятен для слуха - дребезжит противно и "смазывает" всё впечатление! Что Вы захотите сделать сразу же - конечно поменять звонок на более приятный и мелодичный, чтобы получить подлинное удовольствие! Так и с Ардуино - Паскаль приятнее! ;) Хотя, конечно же, это дело вкуса!
И ещё - Ваш вопрос (про замену скобочек на бегин/энды - если он, конечно же, искренен, а не действительно троллинг) вызван глубоким заблуждением, что эти языки равны. Действительно, практически каждый код на Си может быть переписан на Паскале (и да - в тексте длиннее из-за замены скобочек, знаков присвоения и т.д., но по результирующему коду они всё равно будут практически равны, а если написан в Паскалевском стиле - так и текст может быть короче), но не всякий код на Паскале может быть переписан без специальных ухищрений на Си. Более того, текст на Паскале, если он "в лоб" переписан с кода на Си почти всегда сразу же виден в программе и вызывает неприятное отторжение - типа, фу, Си-шная калька, на Паскале так не пишут! И единственным оправданием такого убогого фрагмента в коде - недостаток времени чтобы переписать этот фрагмент, потому что, как всегда работу нужно было сдавать "ещё вчера", но при этом с обязательной отметкой в ToDo - непременно переписать эту грубую кальку на нормальный Паскаль при первой же возможности.
Поэтому дело не в скобочках и бегин/эндах: как мы видим - даже якобы Паскалевский код (калька с Си-шной программы) вызывает такое же отторжение, а в различии стилей. Паскалевский - прост, логичен, понятен и прозрачен, я бы даже сказал - лаконичен(!), поэтому программа легко может быть модифицирована и легко поддерживается, чего не скажешь о Си-шном стиле, да и вообще о самом языке Си, за создание которого его автор приносил извинения общественности. И не удивительно - ведь за созданием Паскаля стоит профессор Вирт и вся академическая школа (а в основе - куча академических языков, включая Алгол), а за созданием Си - ПТУ-шник, которого тут уже назвали нелицеприятным словом. А второй ПТУ-шник создал на его основе Си-с-классами, пресловутый С++, правда потом посетовал - зря я взял за основу Си, мол, надо было что-то другое... :)
Что касается возможности лёгкой вставки на ассемблере - так это для нас, Паскалистов - ПЛЮС, а не МИНУС, впрочем об этом и о логичности Паскаля уже ответил уважаемый wasq - (пока я писал этот пост - он опередил) в чем я его категорически поддерживаю!
Поэтому, Си-шники, успокойтесь, спрос на Паскаль не убить! Идите в свои темы!
Meligo, как я писал выше, я не Сишник, и опыта в Паскале у меня гораздо больше. Мой вопрос был именно про ваше желание воспользоваться fpc. Пост wasq мне как раз понятен, но он про микропаскаль.
P. S..был недавно опыт по работе на микроСи с PICами, и мне он абсолютно не понравился, не знаю как там для АВР.
Ну тогда извините, просто я воспринял Ваш вопрос скорее как очередную подколку Си-шника, троллинг, как Вы говорите...
Мотив своего интереса к fpc/Lazarus я уже обозначил чуть выше:
...Повторю свой вопрос - пробовал ли кто-нибудь этот вариант взамен MikroPascal? Потому что последний - уже 7-ой версии и по прежнему требует лекарства, а fpc/Lazarus - opensource. Такой вот простой мотив...
Пиратом не хочу быть или клянчить лекарство на форуме к MikroPascal - выше его уже давали, но к 6-ке, а у них сейчас 7-мая версия.
Много по английски читать не хочу, но чувствую, что с fpc/lazarus видимо будет страдать тем же, что и Cи gcc - компилятор сделан на архитектуру Неймана процессоров ПК и будут неудобства с константами, расположением в памяти разного типа, с адресацией битов и пошаговой отладки и т.п.
Конечно 240$ это не мало за микроПаскаль, но в отличии других платных сред ( от 2 000 $ и выше), это не много и я себе на 7 десятке лет позволил наслаждаться по полной программе купив себе 7 версию микроПаскаля и уже 3 год получаю бесконечную радость от работы с ним.
wasq, спасибо за ценную информацию!
Я пока ещё не определился, в состоянии оценки возможных решений, в том числе бесплатного.
Что касается английского (или немецкого - там в ссылках, которые я приводил), через Chrome (Google браузер) зайти по ссылкам, правой кнопкой мыши на странице - перевести на русский всю страницу! И никаких проблем, что английский текст, что немецкий. Текст технический - переводит всё близко по смыслу! Ищем нужный фрагмент на русском - дальше вдумчиво, если заинтересовало - проверяем перевод. Очень экономит время и не зависит от языка - исходный текст может быть хоть на китайском, или на нескольких языках :) Текст программы конечно исказит, перевести ключевые слова пытается, но для этого правой кнопкой мыши справа в адресной строке - вернуть назад, потом - там же обратно на русский и т.д.
Короче, автоматический переводчик сейчас уже включен в Chrome - можно очень быстро, не напрягаясь, ссылки по-русски посмотреть, нужное на странице найти и уже внимательно изучить!
Короче, автоматический переводчик сейчас уже включен в Chrome - можно очень быстро, не напрягаясь, ссылки по-русски посмотреть, нужное на странице найти и уже внимательно изучить!
любители ПАскаля не знают языков? одно это уже говорит о многом :)
Ок ! Давно и активно пользуюсь Этим, но тем не менее - мало информации, наверняка основа информации в HELP в самой среде, но это надо качать, ставить изучать, тестировать, а это время, а так как у меня микро Паскаль 7.01, то у меня нет стимула, а библиотек в микро Паскале и описаний всего типа Help - Завались
Уважаемый b707!
Вы к тому же ещё и невнимательны - во-первых там несколько ссылок, и они на разных языках, а во-вторых уважаемый пожилой человек пишет, что, вот де, на седьмом десятке купил себе лицензию на программный продукт и делится впечатлением, сравнивает цены и т.д... А потом посетовал, что ссылки подробно не смотрел, не по-русски напрягает сейчас. И я пытаюсь ему помочь. Тем более, что языков там несколько...
По-моему, Ваше неуместное замечание более характеризует Вас, чем, как Вы говорите "любителей Паскаля", Вам не кажется? Какими иностранными языками в совершенстве владеете Вы, жертва ЕГЭ, перечислите пожалуйста! :)))
По-моему, Ваше неуместное замечание более характеризует Вас, чем, как Вы говорите "любителей Паскаля", Вам не кажется?
сами виноваты, запретили в этой теме флудить на тему ЯЗЫКОВ ПРОГРАМИРОВАНИЯ... так получите дискуссию на тему языков иностранных...
Какими иностранными языками в совершенстве владеете Вы, жертва ЕГЭ, перечислите пожалуйста! :)))
Виноват, ваЧесть! Разрешите доложить - ЕГЭ не сдавал, так что подтвердить владение "в совершенстве" не сумею даже русским...
На самом деле, если без флейма - я бы с удовольствием почитал бы дискуссию умных людей о преимуществах Паскаля над Си - желательно только на серьезном уровне, а не про то что "begin end красивее скобок". Я когда-то (лет 30 назад) начинал с паскаля и, честно говоря, не запомнил в нем ничего сверхоригинального.
Возможно, глупость скажу - но по-моему все ЯВУ очень похожи - во всех один и тот же набор основных элементов - переменные и структуры, блоки begin-end и циклы, функции и подпрограммы. Зная один ЯВУ, освоить любой другой уже в 10 раз проще, алгоритмы по большому счету к языку не привязаны.
В принципе, это же относится и к языкам иностранным - выучив один, каждый следующий идет легче.
Я в Дельфи пописываю с 1997 года, с самой первой версии, еще 16ти разрядной под Win 3.11. Это совершенно не мешает мне программировать контроллеры на С++, да с ненависным Вами goto, и вовсе не парица по поводу какой язык лучше. Любой, если ты знаешь, что делаешь.
Единственное, что я принес с собой из Дельфи в Си - это привычку именования типов и переменных.
Единственное, что я принес с собой из Дельфи в Си - это привычку именования типов и переменных.
что за привычка?
Как в Дельфи. Типы начиинаются с Т, TClass, TTimerlist, параметры, передаваемые в функцию, начинаются с А, void Dec(const uint8_t AValue); Поля класса (переменные) начинаются с F и т.д. Я так привык, поэтому глаз не ломаю, переходя с Дельфовских текстов на Сишные. Разница у этих языков невелика, если в дебри всяких функторов и замыканий не лезть.
Единственное, что я принес с собой из Дельфи в Си - это привычку именования типов и переменных.
Кстати, да - в глаза бросается ))
В принципе, это же относится и к языкам иностранным - выучив один, каждый следующий идет легче.
Ну только если чуть-чуть. Если следующий относится к языкам той же группы.
После английского немецкий или французский - да, согласен. Если после английского учить финский и арабский - ничем не помогает :)
То же и с программированием: после паскаля си - хорошо. После паскаля js, джаву или хаскел - не помогает.
/// в Дельфи пописываю с 1997 года, с самой первой версии, еще 16ти разрядной под Win 3.11. Это совершенно не мешает мне программировать контроллеры на С++,
Вот и я не знаю, к умным мне или к красивым. И на паскале/делфи и на с/плюсы лет так по 8-10 оттрубил на каждом. Ну в смысле основной язык продукта, а остальное на чем попало. ИМХО - все языки одна херня, через годы можно и не вспомнить на чем писалось. Главное алгоритм запрятаный внутри. А на чем он изложен - вопрос конкретного удобства в конкретном случае. Для ардуины это си - работает из коробки , на шару,. компилятор стандартный де факто. Что ещё нужно. Нахрена другое ещё и платное. Бери да пиши шо хош.
Как в Дельфи. Типы начиинаются с Т, TClass, TTimerlist, параметры, передаваемые в функцию, начинаются с А, void Dec(const uint8_t AValue); Поля класса (переменные) начинаются с F и т.д. Я так привык, поэтому глаз не ломаю, переходя с Дельфовских текстов на Сишные.
Дет, а мошт есть какой дакумент вордафский с правилами ентими, ну шоп принтеру атдать. Хачу приклеить на стол свой кампутерный, ибо код твой уж больно причёсанный, сматреть приятна.
Как в Дельфи. Типы начиинаются с Т, TClass, TTimerlist, параметры, передаваемые в функцию, начинаются с А, void Dec(const uint8_t AValue); Поля класса (переменные) начинаются с F и т.д. Я так привык, поэтому глаз не ломаю, переходя с Дельфовских текстов на Сишные.
Дет, а мошт есть какой дакумент вордафский с правилами ентими, ну шоп принтеру атдать. Хачу приклеить на стол свой кампутерный, ибо код твой уж больно причёсанный, сматреть приятна.
Для ардуины это си - работает из коробки , на шару,. компилятор стандартный де факто. Что ещё нужно. Нахрена другое ещё и платное. Бери да пиши шо хош.
"Он для суровых парней, которые привыкли к трудностям и могут в голове удержать тысячу нюансов. Накрепко выучили множество правил и всегда используют проверенные методики, что позволяют обходить проблемные места"
meligo, Вы с Украины?
meligo, Вы с Украины?
Нет, из Москвы. Странно, а почему вы так решили?
почему вы так решили?
Видимо, там наибольшая концентрация людей, хотящих странного.
Если бы люди не хотели странного, а только обыденное = не было бы даже перфолент, не говоря уж о Си. Спасибо им, кто хочет и делает странное.
вступлюсь за паскаль, во времена когда из компьютеров были только 286 машины довелось мне решать задачу автоматизации рассчетов за платежи ЖКХ в одной фирме, реализовал на Инфо-Бухгалтере, еще под ДОС...так вот столкнулся с задачей сортировки базы данных, естественно открываю Вирта и...проверяю все его методы сортировки, не одолел только одну (просто не понял идеи), остановился на QUICKSORT она для моих данных оказалась самая быстрая, так вот если бы алгоритм был на С перенести его в Инфо-Бухгалтер точно не смог бы, Паскаль более читабелен что ли
ЗЫ windows тогда была но только 2.0 (и даже использовали) )))
почему вы так решили?
Видимо, там наибольшая концентрация людей, хотящих странного.
DetSimen, с какой целью Вы оставили Ваше сообщение? Раскройте, пожалуйста, полнее Вашу мысль - не про Украину, конечно же, Бог с ней, она и так уже всем надоела, а про "хотящих странного..." - чего странного, если тема, в которой Вы оставляете своё (действительно странное) сообщение называется "Работаем на Паскале. Первые шаги".
Ещё в самом начале темы (уже в третьем посте) Топик Стартер вам всем подробно всё разъяснил для чего эта тема и как он "ценит" ответы и мнения Си-шников, если лень читать - могу перевести в лаконичный стиль...
Если Вы читали его разъяснительный пост и Вам всё понятно, тогда почему Вы всё ещё здесь? Зачем Вы забалтываете тему? У Вас есть что сказать по теме топика? - Скажите! Если нет - тогда зачем Вы сюда пришли, пофлудить?
зачем Вы сюда пришли, пофлудить?
Исключительно только за этим.
Я потру потом, каданибуть, лишие посты, останеца голая квинтэссенция.
meligo, Вы с Украины?
Нет, из Москвы. Странно, а почему вы так решили?
Ну, тогда всё правильно!
В 1986 году киевские коллеги рассказали мне украинскую народную поговорку: "для москаля немає краще Паскаля, а ми усi програмуємо на Сі" :-)))
Я потру потом, каданибуть, лишие посты, останеца голая квинтэссенция.
- Ладно, Ок.
Кстати, DetSimen, тут выше хвалили Ваш стиль оформления кода, даже на Си, перенесённый вами из Дельфей, хотел взглянуть на Ваши посты с кодом, но я новичёк на форуме и ещё не разобрался, как найти посты конкретного человека, Ваши, например ;) - Не подскажете, как это сделать, ну или дайте ссылку на Ваши посты с кодом!
https://github.com/DetSimen/Arduino_TimerList
https://github.com/DetSimen/TM1637
или вот полный класс для AM2320, датчик температуры и влажности
Ещё в самом начале темы (уже в третьем посте) Топик Стартер вам всем подробно всё разъяснил для чего эта тема и как он "ценит" ответы и мнения Си-шников, если лень читать - могу перевести в лаконичный стиль...
Если Вы читали его разъяснительный пост и Вам всё понятно, тогда почему Вы всё ещё здесь? Зачем Вы забалтываете тему? У Вас есть что сказать по теме топика? - Скажите! Если нет - тогда зачем Вы сюда пришли, пофлудить?
Уважаемый Мелиго, а Вам не кажется, что для человека, зарегистрировавшегося на форуме только вчера - вы как-то слишком уж нахально себя ведете? Раздаете тут советы - одному куда идти, другому о чем писать... Тема эта - она как заповедник для неведомых зверушек, занесенных в Красную книгу - вас тут обрегают и лелеют. Вам позволяют всячески обсирать Си, являющийся де-факто основным языком программирования на форуме. Сишники сдерживаются, и не обсирают Паскаль в ответ.... хотя есть за что, я уверен. Но вообще терпение народа не безгранично, советую все же помнить, уж извините за прямоту - свое место.
А место Паскаля - вот оно. Си уверенно занимает первую строчку в рейтинге языков по опросу эмбеддеров. в то время как паскаль ДАЖЕ НЕ ПОПАЛ В СПИСОК
В принципе, это же относится и к языкам иностранным - выучив один, каждый следующий идет легче.
Ну только если чуть-чуть. Если следующий относится к языкам той же группы.
После английского немецкий или французский - да, согласен. Если после английского учить финский и арабский - ничем не помогает :)
На самом деле, лингвисты говорят, что даже китайский после английского учить легче. чем сразу. Грамматика всех языков имеет общие черты (например, все ли подозревают, что грамматика русского - основана на смеси латыни и греческого?). Но главное, что выучив один язык - человек усваивает приемы обучения.
То же и с программированием: после паскаля си - хорошо. После паскаля js, джаву или хаскел - не помогает.
вот не первый раз читаю, что JS категорически не похож на С. Мне как-то пришлось править и частично переписывать один проект на жаваскрипте - я совершенно комфортно чувствовал себя со своими знаниями Си и перла. Что там такого принципиально другого в яваскрипте по сравнению с Си
вот не первый раз читаю, что JS категорически не похож на С. Мне как-то пришлось править и частично переписывать один проект на жаваскрипте - я совершенно комфортно чувствовал себя со своими знаниями Си и перла. Что там такого принципиально другого в яваскрипте по сравнению с Си
Хе-хе, процедуры там по-человечески объявляются. И переменные. И тип переменных указывать не нужно - просто var, и клади в нее что угодно )))
Не, после Паскаля JS воспринимать крайне тяжело. Пришлось однажды делать режим для слабовидящих для одного сайта - обматерился весь, пока разобрался )))
И С после Паскаля - тоже жесть. Поначалу смотрел в код и видел только скобочки. Не для человека сей синтаксис создавался, ой не для человека ))
зато лаконичненько.
Гы, тут не поспоришь )))
Хе-хе, процедуры там по-человечески объявляются. И переменные. И тип переменных указывать не нужно - просто var, и клади в нее что угодно )))
Не, после Паскаля JS воспринимать крайне тяжело. Пришлось однажды делать режим для слабовидящих для одного сайта - обматерился весь, пока разобрался )))
И С после Паскаля - тоже жесть. Поначалу смотрел в код и видел только скобочки. Не для человека сей синтаксис создавался, ой не для человека ))
ну тогда мне все понятно :) В перле переменные тоже не обьявляются - даже var указывать не нужно. А скобочки там - как в Си. Так что я не испытал шока при переходе к JS и С - и даже не очень заметил этот момент.
Тот, кто знает синтаксис Перла - никогда не скажет, что Си непонятный :)
Кто-то из Паскалеведов выше справедливо заметил, что синтаксис Си специально придуман так,, чтобы набирать поменьше. Но разве это недостаток? - мы же не профессиональные машинистки, чтобы набирать сотни знаков и получать от этого удовольствие. Ларри Вэлл (создатель перла) пошел в этом еще дальше - в перле очень многие служебные слова заменены на символы - решетки, подчеркивания. доллара и тд. Выглядит ужасающе, зато текст втрое короче
Выглядит ужасающе, зато текст втрое короче
Римлянеписалибезпробеловвыглядитужасающеноихвполнеустраивало )))
А у кого-то гласные не писались.
Тексты программ вообще-то для людей пишутся. Что ж хорошего, если у них с читаемостью бяда? )))
Это стремление к лаконичности - оно таки от безысходности. Ну не было тогда нормальных IDE с автозавершением и прочими плюшками
Ну не было тогда нормальных IDE с автозавершением и прочими плюшками
Не в этом дело. В 70-е годы ОЗУ на компах было чуть больше, чем щас у Ардуино, поэтому втискивать туда тексты своих программ приходилось со всем возможным тщанием, экономя даже на пробелах. :) Поэтому, кста, в Си и регистр букв различался, чтоб можно было создать аш 52 однобуквенных переменных.
https://github.com/DetSimen/Arduino_TimerList
https://github.com/DetSimen/TM1637
или вот полный класс для AM2320, датчик температуры и влажности
DetSimen! Спасибо, оценил!
Выглядит действительно впечатляюще, недаром Вас тут за оформление кода неоднократно хвалили! Сразу видно - старая (Паскалевская ;) школа! Мне ещё сопроводительная записка понравилась к коду - сразу чувствуется стиль, но особенно доставило - на "электропочту", чтобы не присылали простыней с просьбой вставить Ваши таймеры в их программу. Выглядит очень убедительно, как "электрошокер" :):):)
Ну не было тогда нормальных IDE с автозавершением и прочими плюшками
Не в этом дело. В 70-е годы ОЗУ на компах было чуть больше, чем щас у Ардуино, поэтому втискивать туда тексты своих программ приходилось со всем возможным тщанием, экономя даже на пробелах. :) Поэтому, кста, в Си и регистр букв различался, чтоб можно было создать аш 52 однобуквенных переменных.
На самом деле, если без флейма - я бы с удовольствием почитал бы дискуссию умных людей о преимуществах Паскаля над Си - желательно только на серьезном уровне, а не про то что "begin end красивее скобок".
b707, Вы правы - здесь в конкретной теме нет смысла разводить флейм, я ведь тоже к этому призывал и призываю!
Несомненно, "Паскаль vs Си" - это тема для религиозных разделов форумов, холиваров так сказать. Таких уже было "миллион и маленькая тележка" и большинство из них, как правило, действительно скатывались к холиварам, но если Вы действительно хотите почитать, как Вы говорите, "дискуссию умных людей о преимуществах Паскаля над Си, (а я добавлю и Си над Паскалем) - желательно только на серьезном уровне", то могу предложить Вам ссылку на уже давно проводившуюся дискуссию на эту тему (раньше она велась на progz.ru, теперь со всей историей переехала на hardforum.ru).
Это довольно старая дискуссия (с 2002 года!) и сейчас там уже под пол-тысячи(!) страниц, но её достоинство в том, что оппоненты там попались довольно интеллигентные, и дискуссию вели в целом сдержано, взаимоуважительно и аргументированно - с примерами и взаимным разбором кодов, аргументами "за" и "против", а также контраргументами, подкреплёнными кодом и т.д. и т.п. - вот почему она сохранилась до сих пор, и, по-моему, даже сейчас жива, правда в конце перешла уже к другим языкам, но и не удивительно, ведь тема дискуссии - Самый крутой язык программирования
Поэтому её сохранили до сих пор и даже перенесли на новый форум - редкий случай, когда, казалось бы, холивар не скатился до банальной, как обычно, перебранки и взаимных оскорблений и упреков, к тому же она представляет исторический интерес - многое из того, что хвалилось в одном языке, но отсутствовало в другом уже перенесли туда, а что-то симметрично заимствовали обратно, но в целом она действительно представляет культорологическую ценность и действительно заслуживала сохранения - спасибо их админам за это!
Что касается тех языков, которые Вас интересуют в Вашем вопросе, то если Вас заинтересует моя ссылка, я бы советовал обратить внимание на страницы, с которых начал дискуссию S.Yu.Gubanov - довольно известная личность в этом вопросе и он, несомненно, являлся камертоном по стилю ведения беседы - всегда с приведением примеров в доказательство своих аргументов и разборов контрпримеров, что требовало аналогичного поведения его оппонентов, хотя и его единомышленники, и оппоненты - безусловно, тоже очень достойные люди. Собственно это обстоятельство и позволило дискуссии приобрести столь конструктивный облик и, думаю, определило её историческую ценность!
Короче, на даче, под печкой или камином, в дождь, под рюмку "чаю" (или коньячок и сигару - кому как нравится) - самое то: и исторично, и познавательно! И место в нашей теме освободим от флейма - если, конечно, я правильно понял суть Вашего вопроса! :) Если нет - не обессудьте, я искренно пытался Вам помочь!