Lua. кто-нибудь пользуется? почему это хорошо?
столкнулся с такой интересной архитектурой: в чипе прошивается интерпретатор луа, который после загрузки ищет файл с определенным именем, в котором луа-скрипт, а дальше все оттуда управляется.
архитектура не новая, java тоже создавалась когда-то с мыслью программировать "игрушки".
смущает, что сама луа занимает прилично памяти (хотя ее футпринт на порядок меньше, чем у python'а, но в конце-концов зависит от того, какой функционалитет мы включим в этот интерпретатор (есть "стандартный" вариант прошивки, и можно скомпилировать индивидуально). некая RTOS, но убогенькая, как мне показалось. и сырая
пошел на сайт производителя чипа, https://nodemcu-build.com/, там они предлагают самому выбрать конфигурацию, они сгенерируют байнэри и вышлют. выслали. прошил. чип вместо того чтобы сказать, как при дифолтном, что он не находит инициализационного файла, "пришел в панику": начал
что-то делать, вообще непонятно что. я устал с этим разбираться. может, кто-то уже пробовал и подскажет? пока перепрошил "нормальным" си-кодом, чип работает без проблем (в нужном мне объеме), но нервирует, что не получился эксперимент.
А что можно хорошего ожидать от кодогенератора, наверняка чего то нестандартного захотелось.
А эмулятора для отладки нет?
в принципе есть и кроссплатформ компайлеры и много чего еще, но дибажить, вроде, нечем. по крайней мере, нет никакой гарантии, что если все правильно в дивэлопмэнт окружении, то оно так же все будет и на устройстве. брэйкпоинт поставить и посмотреть, что там с переменными - никаких шансов. что-то от психологии бедного мужика. но скорее всего, я просто не понимаю, чем это так хорошо. наверняка имеются случаи, где это (или подобное) оправдано. у nordic semiconductor это называется soft device, у большинства - просто RTOS, однако там код пишется на с/с++. все это, конечно, лучше, чем все писать на ассемблере, и только если имеется что-то готовое, перенимать, на чем бы оно не было сделано, как я это делаю. но я могу себе это позволить, т.к. никто мне не говорит, что и как, я сам определяю, и могу выбрать не то, что производительно, а то, что мне хочется. а если идет работа над коммерческим продуктом, там от выбора платформы/технологии во многом зависит успех/провал. почему для кого-то луа - хорошее решение, я пока не поймал.
как-то (года два назад) ездил собеседоваться в фирму, которая забыл уже что разрабатывает, но они для гуи своего продукта используют javaFX. спросил, имеют ли они целью мультиплатформенность. ответ - нет, только windows. тогда спросил, откуда такой выбор. честно признались, что лучше всего (а похоже, что только и всего) "главный" знает java, и они решили таким образом выбрать цукунфтзихэрэ тэхнологи. но луа, в отличие от жавы, похоже, скорее экзотика, чем то, что знает каждый студент. поэтому ее применение не может быть вызвано тем, что "мы знаем только луа, поэтому...".
не догоняю пока...
К сожалению, с Луа совсем не знаком, но применять скриптовые языки в железяке, как то напрягает. Помню как то плюсы засунул, когда все С пользовали, но давно это было. Сейчас с железяками на уровне АПИ, не ниже.
К сожалению, с Луа совсем не знаком
да я тоже. вот только начал разбираться, и оно меня только расстроило...
применять скриптовые языки в железяке, как то напрягает.
не знаю. если бы оно работало, как обещает, то почему нет? вам не нужно весь чип перепрошивать, там есть простенькая файловая система (SPIFFS: SPI Flash File System), наличие которой позволяет не переписывать каждый раз весь чип, а только те файлы, которые вы изменили. а скрипты здесь очень даже кстати, и язык вполне достаточный для приложений, работающих "в игрушках".
и оно меня только расстроило...
А отчего расстроило, ну не получилось как хотелось - часто бывает. У разработчиков то получается,значит какие то отличия были.
Я просто пока не сталкивался с "игрушками"
Я просто пока не сталкивался с "игрушками"
знаю. а то бы вы давно разрулили мою проблему : )
я сегодня ее уже и сам разрулил. обыдно стало, решил вернуться к теме, почитать побольше (иногда полезно : ), и оказалось, что вычитал причину: при ПЕРЕпрошивках нужно учитывать тот факт, что при этом перезаписывается только память, занимаемая новой версией, остальное остается как было. а эта фирмвара лезет за пределы своей памяти, предполагая, что там находится "файловая система" (о которой я писал), отформатированная исходя из размеров самой фирмвары. а форматируется она только, если там ничего нет. а там - файловая система, созданная предыдущей прошивкой. поэтому сперва следует потереть весь флэш, и только потом аплоудить новую версию. проделал это все (пришлось и python вспомнить, с которым
почти не знаком, и кое-что еще), и ОНО РАБОТАЕТ! осталось в луе поднасобачиться (книга хорошая уже скачана и полупрочитана), освоить тулчейн для компиляции-загрузки скриптов на чип, и все пойдет как по маслу : ). единственное что смущает - дибажить невозможно (люди пишут). придется или лог какой-нибудь изобретать или изобретенный осваивать, или еще как, но у меня задачи простенькие относительно, надеюсь, без ошибок все запрограммирую (это ведь луа : )
знаю. а то бы вы давно разрулили мою проблему
ну об этом то и речи не могло идти, вроде понятно было с самого начала.
Просто иногда, даже просто при пересказе свой проблемы может "загореться лампочка".
Я вот тоже вчера нашел отчего у меня гит по SSH не работал, долго искал, оказалось одного каталога на сервере не хватало.
Просто иногда, даже просто при пересказе свой проблемы может "загореться лампочка".
это очень верно. я еще лет 30 назад начал пользоваться этой "зажигалкой": была одна коллега, которая понять меня не могла, но умела на удивление внимательно слушать: кивать, держать визуальный контакт, в общем, вести себя, будто ни на миг не упускает нить. и, рассказывая ей, я был вынужден то, что "плавало в воздухе", четче формулировать, и в конце-концов начинал это ясно понимать. вы тоже этот механизм имели ввиду?
немного "сблизился" с этой луой, и у меня на данном этапе такое создается впечатление, что это - попытка изобрести костыль, пользуясь которым, любой калека сразу должен бы побежать, причем очень быстро и в нужном направлении.
все, что народ пытается сделать и показать на этой луе, гораздо эффективнее делается на с/с++. причем здесь уже наработана масса библиотек, другого кода, и тем, кто имеет опыт в этих языках, нет необходимости осваивать еще и луу. но чтобы человеку освоить с/с++, требуется время, и не каждый, затративший это время, освоит это хорошо. а луа - некий basic, который, считается, каждый человек с улицы в состоянии за пару вечеров освоить в объеме, достаточном, чтобы создавать качественные приложения. уверен, и на луа в принципе можно писать эффективный код, и на с/с++ создавать ужас, на который нельзя смотреть. но продемонстрирую на живом примере актуальный уровень.
задаем в гугле lua esp8266 smtp send email example
в вервых рядах - эта ссылка:
https://github.com/nodemcu/nodemcu-firmware/blob/master/lu...
в первой строчке кода следующий комментарий:
Working Example:
.
о! форум даже сразу ссылку расшифровал!на видео кто-то рассказывает и демонстрирует, как этот код работает. и массы берут этот код за образец, пытаются его воспроизвести и пр.
не нужно знать даже основы луа, чтобы понять, что здесь делается. а делается то, чего делать в принципе никогда нельзя.
нашел еще пример кода на adafruit, уже получше, но все равно для меня - очень непрофессионально. т.е. вывод напрашивается, что в среде луа даже учиться не у кого (в интернете по крайней мере). а когда нет грамотного ядра комъюнити, там не могут вырасти хорошие плоды: они смотрят на говнокод, другого они ничего в жизни не видели (и, возможно, видеть не желают), и сами начинают плодить подобное.
вспомнил нашего "коллегу" из соседней ветки с
его потугами призвать regex, чтобы наконец-то запихнуть -1.5 в целое число : ). но он хоть признается, что не учился и не собирается, а здесь - говнокод прямо от "гуру".
ну вот, дочел книжку до корки. конечно, не все запомнил (и не стремился), но впечатление получил. вполне интересный язык. требует привыкания, но это - дело наживное. захотелось даже попробовать поиспользовать. сильно углубляться не планирую, но побалуюсь, пока не надоест.
таки залез поглубже. новые эркэнтниссэ - неприятные. не знаю, назвать ли это "гибкостью" или дерьмовым концептуальным решением.
короче так. я как-то привык ("в других, нормальных языках" : ), что если я не объявлю переменную или ф-ю, то при обнаружении сразу возникает особый случай. в луе - "никаких проблем"! причем, если вы описали ф-ю, а потом какой-то переменной присвоили ее значение, то можно потом вызвать ф-ю через эту переменную. но если вы или опечатались в имени ф-ии (или переменной), или объявили ф-ю позже, чем переменную, то никто не будет ругаться, аж пока не произойдет попытка вызова этой ф-ии! естественно, "нужно программировать правильно". но я еще во времена фортрана встречал ошибки, вызванные "вольным стилем" объявления переменных. в общем, час потерял, пока это дошло. хотя сейчас удивляюсь, отчего так долго тупил : )
а причем здесь интерпретаторы? в этом смысле и java, и c# - интерпретаторы. и знаю точно, что уже давно имеются компиляторы, позволяющие из жава-кода икзэшник изготовить (не мультиплатформенный теперь уже, естественно : ). наверное, и с сишарпом такое же уже проделывают (или подмножеством). также можно в принципе написать с++-машину, которая будет интерпретировать с++ код.
ну когда на байт коде или ИЛе будете писать приходите в гости
ну когда на байт коде или ИЛе будете писать приходите в гости
знаю, у вас писька длинее. и толще. "еще бы стояла, цены бы ей не было" (с; )
А я уж было решил что с Вами можно и нормально общаться, типа как на перекуре. Жалко. Прийдется тогда тоже другую пластинку ставить.
Для тех кто кроме своих личных проблем ничего больше не замечает, поясню что имелось в виду.
Код на Java и С# компилируется в некий промежуточный код (байт код и ИЛ соответственно), а уж этот промежуточный код интерпретируется.
Вот еще табличку нашел по разным видам типизаций. Вроде интерпретируемые и компилируемые языки имеют различные тенденции или?
Статическая / динамическая | Сильная / слабая |Явная / неявная --------------------------------------------------- JavaScript - Динамическая | Слабая | Неявная Ruby - Динамическая | Сильная | Неявная Python - Динамическая | Сильная | Неявная Java - Статическая | Сильная | Явная PHP - Динамическая | Слабая | Неявная C - Статическая | Слабая | Явная C++ - Статическая | Слабая | Явная Perl - Динамическая | Слабая | Неявная Objective-C - Статическая | Слабая | Явная C# - Статическая | Сильная | Явная Haskell - Статическая | Сильная | Неявная Common Lisp - Динамическая | Сильная | Неявная D - Статическая | Сильная | Явная Delphi - Статическая | Сильная | Явная
вв
я ведь признал уже привселюдно, что у вас больше. чего бы еще вам желать? ладно: и в поиске табличек у вас тоже больше : )
зы. не понимаю, что вы хотите сказать? вижу только "а я все равно больше знаю, толще вижу, длиннее понимаю...". я не против, если вас это тешит : )
а я все равно больше знаю
где это Вы такое увидели?
не понимаю, что вы хотите сказать?
то что уже и сказал - не люблю интерпетируемые языки.