• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение Arduino IDE vs "честный" Си

kab

New member
На этом форуме часто вспыхивают дискуссии, на чем же, всё-таки надо программировать :).
Интересный аспект аналогичного обсуждения обнаружил на родственном форуме сайта arduino.ru в разделе, "Ищу исполнителя" - это платные услуги. Если интересен первоисточник - ищите сами, а я попытаюсь изложить позиции сторон, как понял я сам. Итак:
- В этом разделе сформировалась более-менее устойчивая группа ребят/девчат (можно догадаться о солидном возрасте некоторых), предлагающих свои услуги по написанию кода (и созданию законченных устройств в т. ч.). И среди них выделяется один ник, который в качестве конкурентного преимущества перед остальными провозглашает, что "хотя он может выполнить работу и на Arduino IDE, для большей надежности работы устройства он, за те же деньги может написать программу на честном Си" (цитата не дословная, но близко к первоисточнику). Подразумевается, что этот исполнитель обладает "тайным знанием", позволяющем ему работать более качественно, чем остальные, использующие преимущественно Arduino IDE. Отмечу, что большая часть заказов на уровне - вывести на экранчик показание датчика и включить/выключить люстру, либо мотор. Или несколько...
Остальные относятся к товарищу несколько иронично, хотя иногда предпринимаются попытки объяснить, в чем он не прав. Эти соображения сводятся к следующему:
- По сути, во-первых, подобными заявлениями вышеуказанный товарищ обманывает неквалифицированного заказчика, т. к. надежность в большей мере обеспечивается не средой программирования, а уровнем программиста и соответствующим задаче выбором аппаратных средств.
- Во вторых, большая часть исполнителей, имеющих серьезный опыт, хорошо представляет ограничения, которые имеет Arduino IDE и использует его совершенно осознанно в задачах, подходящих для него.
- И, в-третьих (для меня именно это стало откровением), сознательно отказываясь от Arduino IDE в случаях, когда это использование оправданно, исполнитель некорректно относится к заказчику, усложняя его возможности по личному "вхождению в тему", либо ограничивая выбор исполнителя для дальнейшего развития системы заказчика.

Последние три соображения лично мне представляются обоснованными.
 

Sr.FatCat

Member
Вот интересно, на кой вы тут холивар провоцируете? :)
Ну сделали для себя выводы непротиворечивые и логичные и зачем-то вынесли их на обсуждение. Если будет не лень, набегут сейчас олдскульщики и приведут вам сто тысяч примеров, когда использование Arduino
- невозможно
- вредно
- портит карму
- отупляет и оглупляет
- вызывает зависимость

и буду по своему правы. И дальше: бессмысленный и беспощадный холивар...

Вот для меня лично Arduino - отличный компромис, позволяющий сэкономить время на изучении аппаратно-зависимых тонкостей в угоду бизнес-логике проектов, но кого и в чем кроме меня это должно убедить?
 
  • Like
Реакции: kab

kab

New member
Вот интересно, на кой вы тут холивар провоцируете?
Отвечаю совершенно честно - в этой теме совершенно недавно и хочу поглубже понять, в чем же ограничения Arduino IDE проявляются конкретно технически. Большинство обсуждений носят явно эмоциональный характер и технические тонкости выявит там достаточно сложно. Мои конкретно технические вопросы по Arduino IDE в разных топиках были проигнорированы. Так что - небольшая месть :)

И вообще, как я уже писал ранее, люблю поспамить :D
 

gerkimuyda

New member
@kab Тогда встречный вопрос, а зачем писать на Ардуино ИДЕ, если есть NodeMCU Lua ?
Или еще проще - AT командами (даже знание языков программирования не надо).
пс: почему пошел от ардуины в сторону эклипса и асма - оптимизация кода, быстродействие, да и на ардуине тупо esp-сервер некорректно работает с роутером в режиме station (глючные либы в ардуине)
 

kab

New member
Вы противопоставляете теплое мягкому. Речь идет о С vs Wiring
Вот опять же интересно:
- По сути с этим замечанием Вы правы. Я его понимаю и принимаю. Но! Уверен, что большая часть народа, пользующаяся Arduino IDE не подозревает, что программирует на Wiring. И это не мешает им жить и творить :). Так что, давайте считать, что я поместил вульгаризм в названии темы сознательно. Хотя это не так :).
 

kab

New member
Тогда встречный вопрос, а зачем писать на Ардуино ИДЕ, если есть NodeMCU Lua ?
Или еще проще - AT командами
Это как раз не вопрос :). Кому что нравится, тот на этом и пишет.
Меня то возмущает другое - если ты можешь позволить себе ездить на мерсе, нечего хаить жигуль, с которого ты начинал много лет назад. Утверждение не теряет актуальности, даже если ты на мерс сел сразу...
Я доступно выразился?
 

Sr.FatCat

Member
Вы противопоставляете теплое мягкому. Речь идет о С vs Wiring
Единственное чем Wiring отличается (тут даже это слово не подходит) от С это, то, что
скрыто
main(argv, argc){
setup();
while(true) loop();
}

Все остальное Wiring это С++ с библиотеками. Или что такое Wiring? Объясните! А то я, по наивности на С++ пишу и все работает, а ардуиной считаю набор библиотек и загрузчик
 

=AK=

New member
хочу поглубже понять, в чем же ограничения Arduino IDE проявляются конкретно технически.
Если коротко, то ни в чем.

А длинно можно очень долго воду в ступе толочь. Если брать конкретный аспект "большей надежности работы устройства", то разницы нет, поскольку сами языки С и С++ в этом плане примерно одинаковы. Для надежности можно на Драконе программировать, или на Эйфеле, и т.п., только для поделок, где используется Ардуино, это не имеет никакого смысла.
 

pvvx

Активный участник сообщества
Единственная здравая мысль:
Для надежности можно на Драконе программировать, или на Эйфеле, и т.п., только для поделок, где используется Ардуино, это не имеет никакого смысла.
приоткрывающая сферу применения Arduino, её цели и задачи.

@kab Классическое понятие ‘Arduino’ (тем более IDE) - это не язык, а простейший редактор в амбразуре окна с одним файлом “скетча”. Сам инструмент управления проектом на “C” или “C++” ограниченный понятием "скетч". Вторая часть – это устройства, предназначенные для Arduino. Кубики для игры. Третья часть понятия Arduino - стиль сообщества, живущего в среде передачи и копировании "sms" ("скетчей"), без создания чего-бы то нового.
В Arduino не входят понятия 'обучения программированию' или изготовление полностью готовых мелкосерийных или серийных устройств, как и разработка законченных устройств. Просьбы производства готовых проектов от клиентов на Arduino IDE - это всего побочка, возникающая от ограниченных знаний и возможностей освоения более профессиональных инструментов и ограничений в финансировании проекта.
В итоге ваша цитата “(цитата не дословная, но близко к первоисточнику)” - имеет другой смысл. Если её переводить, то - “с возможностью создания и исправления под задачу библиотек Arduino, базовой операционной системы и выбора среды развития проекта у заказчика”, что всегда производится на другом инструменте. Как следствие, “три соображения “, становятся необоснованными. Как и сравнения "Arduino IDE vs "честный" Си" . Arduino IDE сама содержит и чистый "СИ", как и база у языка "C++".
 
Последнее редактирование:

=AK=

New member
А то я, по наивности на С++ пишу и все работает, а ардуиной считаю набор библиотек и загрузчик
И это тоже, однако и это не все. Ардуино - это вполне законченная экосистема, которая включает и приличную документацию, и курсы обучения, и примеры, и форумы, и т.д. Набранная Ардуино инерция движения такова, что даже достаточно кривой форм фактор плат Ардуино стал стандартом, a промышленные монстры ST, Freescale, TI и пр. прогнулись и делают платы под него. Что лучше, чем всякая разномастица.

А всякие юродивые старперы могут тяфкать на Ардуино сколько угодно. Собака лает - ветер носит, а караван идет (c).
 

kab

New member
А всякие юродивые старперы могут тяфкать на Ардуино сколько угодно. Собака лает - ветер носит, а караван идет (c)
При всём уважении к плюрализму мнений - можно попросить Вас в моей теме не использовать лексику, направленную на личное унижение?
 

AndrF

Active member
Arduino IDE... Да кто заставляет использовать именно это IDE? Оно просто не удобно как среда разработки. Можно использовать MS Visual Studio IDE... Для того же Arduino...
 

kab

New member
Arduino IDE... Да кто заставляет использовать именно это IDE? Оно просто не удобно как среда разработки. Можно использовать MS Visual Studio IDE... Для того же Arduino...
Я правильно предположу, что со средой MS Visual Studio IDE Вы познакомились ранее, прежде чем начали программировать для ESP?
 

AndrF

Active member
Я правильно предположу, что со средой MS Visual Studio IDE Вы познакомились ранее, прежде чем начали программировать для ESP?
Конечно. А с Arduino (для ESP-шек) вначале ознакомился с его родной средой, а потом перешел на VS. Собственно сама-то среда изучается за пару дней, в отличии от языка на котором пишешь.
 

pvvx

Активный участник сообщества
Arduino IDE... Да кто заставляет использовать именно это IDE? Оно просто не удобно как среда разработки. Можно использовать MS Visual Studio IDE... Для того же Arduino...
А что тогда остается от Arduino?
Переименование файла пользователя в *.ino вместо *.cpp?
Набранная Ардуино инерция движения такова, что даже достаточно кривой форм фактор плат Ардуино стал стандартом, a промышленные монстры ST, Freescale, TI и пр. прогнулись и делают платы под него.
Вроде наблюдается только обратная тенденция - на готовых отладочных платах, библиотеках и IDE от производителей энтузиасты создают урезанную версию ПО для Arduino. Всего пару крупных компаний осуществляют поддержку Arduino, как одной из веток предлагаемого ПО для своих демо-плат. Главное в этом - для демо-плат.
Если отсортировать производителей на выпускающих свои IDE, то поддержки Arduino у них нет, как и у всех востребованных на сегодня MCU. Поддержка Arduino есть только у производителей не имеющих возможности создать свою IDE и когда их товар не востребован крупными потребителями.
Крупные производители модулей (а не микросхем) на малом сегменте рынка ширпотреба чаще предоставляют поддержку MBED.
Arduino имеет свой (c) и во многом не относится к свободному ПО (к примеру в случае с ESP). Т.е. это проприетарное ПО со своими ограничениями.
 
Последнее редактирование:

Sr.FatCat

Member
А что тогда остается от Arduino?
Переименование файла пользователя в *.ino вместо *.cpp?
Остается digitalRead, digitalWrite и т.п. вместо головломного квеста по регистрам с даташитами, сотни библиотек для переферии, десятки тысяч понятных примеров.

Если отсортировать производителей на выпускающих свои IDE, то поддержки Arduino у них нет, как и у всех востребованных на сегодня MCU. Поддержка Arduino есть только у производителей не имеющих возможности создать свою IDE и когда их товар не востребован крупными потребителями.
Atmel со своей студией смотрит на вас с непониманием :)
 

pvvx

Активный участник сообщества
Atmel со своей студией смотрит на вас с непониманием :)
Не встречал предоставленных в Atmel студии чипов в оборудовании и серийных изделиях для ширпотреба. Только платки на "али".
Итог этого и есть падение Atmel - поглощение Microchip-ом.
И куда смотрел Atmel? :) Скатился до малых сегментов рынка и почти разорился...
Остается digitalRead, digitalWrite и т.п. вместо головломного квеста по регистрам с даташитами, сотни библиотек для переферии, десятки тысяч понятных примеров.
Вы про MBED? :) Не путаете библиотеки от детей, производителей, языки высокого уровня, унификацию и прочее с IDE в амбразуре (Arduino)?

Если путаете, то надо начать с простого:

Есть свободное и проприетарное ПО. На микропроцессоры с современным свободным ПО нет Arduino. К ним относятся всякие *nix. Там царствуют другие IDE.
Есть мода, блоггеры, производители, домушники, профессионалы и прочий сброд.
Arduino - это очень малый сегмент, модный у блоггеров, с платками от домушников китайцев.

Мода Arduino проходит, т.к. причин много. Развитие электроники и ПО продолжается, что не сказать о Arduino. Унификация так-же захватывает всё большие объемы чипов, интеграция компонентов которых растет.

Основная причина устаревания концепции Arduino в её линейном программировании не годящемся для многозадачных и многоядерных CPU, кои ныне повсюду.
Путем вставки:
Код:
void setup() {
  // put your setup code here, to run once:
}
void setup1() {
  // put your setup code here, to run once:
}
void loop() {
  // put your main code here, to run repeatedly:
}
void loop1() {
  // put your main code here, to run repeatedly:
}
...
проблему многоядерности в Arduino не решить :)
Блоггеры и сегмент домочадцев быстрее переползет на другие языки высокого уровня со своими IDE, чем переделают концепцию Arduino.
У вас на устройство с Андроидом есть Arduino? :)
А это самые популярные устройства и массовый сегмент рынка.

Так-же вы не учитываете, что по принципу Arduino ныне не соединить ни один современный аппаратный интерфейс. К примеру, простейший - USB2.0. Он не работает через разъемы, тем более проводки со штекерами и шлейфами на платках, принятыми для Arduino (шаг 2.54 мм), т.е. ограничивает творчество... т.е. бытовым паяльником на новых системах уже не потыкать. Кубиков с унифицированными разъемами для скоростных интерфейсов пока нет. Все проекты таких наборов пока потерпели неудачу.
В итоге Arduino (и его поклонники) тормозит развитие народного творчества. Сжирает людские ресурсы и отговаривает от развития построения других народных (open-source) и доступных IDE для современных устройств.
Если оцените и разберете все факторы, то поймете, почему Ардуинщиков я называю “падальщиками”, “некромансерами” живущих на течении моды блоггеров (троллей) и рекламы.
 
Последнее редактирование:

Sr.FatCat

Member
@pvvx, Серьезные задачи, серьезное железо и прочее: тут да, не поспоришь. Требуют серьезного инструментария. Arduino тут не в кассу. И более, того - начинать освоение с него, возможно, будет вредно.

И тем не менее - ниша Arduino со "домашними" процессорами и "домашними" задачами. Не думаю, что она куда-то денется в ближайшее время.

Кстати, поделитесь, какие еще "народные IDE" хотя бы приблизились к популярности Arduino, имеют сопоставимое количество библиотек и примеров. А то что-то я озадачился....

И пассаж, про высокоскоростные интерфейсы как-то расшифруйте. Плат USB-Host и библиотек - в количестве, про сеть и видео - я молчу. Что не хватает то?
 
Последнее редактирование:
Сверху Снизу