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 - Статическая | Сильная | Явная
вв
я ведь признал уже привселюдно, что у вас больше. чего бы еще вам желать? ладно: и в поиске табличек у вас тоже больше : )
зы. не понимаю, что вы хотите сказать? вижу только "а я все равно больше знаю, толще вижу, длиннее понимаю...". я не против, если вас это тешит : )
Все они с JIT
Существующие наиболее распространённые интерпретаторы языков PHP, Ruby, Perl, Python и им подобных, имеют ограниченные или неполные JIT.
https://ru.wikipedia.org/wiki/JIT-комп...
и для большинства задач не уступают компилируемым
Практически не интересует то, что одну и туже задачу можно реализовать на различных языках
Интересует прежде всего удобство пользования и прочие индивидуальные предпочтения.
Вот казалось бы, относительно конечной цели VB.NET и C# разницы не имеют, а вот когда приходится пользовать VB хочется "рвать".
хорошая IDE - с моей колокольни опыта - не обазятельно "промышленная IDE" в обычном понимании. теперь, из embedded domain, для меня это просто удобный tool chain, то, к чему вы привыкли. для меня пока самым удобным в некоторых случаях редактором кода остается vi, sorry ....
Говнокод можно писать на любом языке.
Вы не то увидели. Подобные ошибки вполне могут быть. И одно дело когда их видно сразу после набора кода / компиляции.
.jetbrains.com - речь шла о бесплатных. Если мне нужно чего то сделать на PHP дома раз в пару лет, то смысл в покупке?
Все, что вы хотели сказать, я понял. Это также относится к говнокоду. Я достаточно пописал на js и в курсе.
Насколько мне известно, у jetbrains есть бесплатная версия для личного пользования. Phpstorm емнип. Полная навигация не только по php-коду, но и по шаблонам twig. С говностудией не сравнить.
да ничем он не лучше, чем остальные. особенно если для майкрософт платформ что-то делать нужно. работал и с вижуал студио, и нетбинз, и эклипс, и мвижн, и виай, и еще наверняка кучей всего, не говоря о перфокартах. "иде" удобно то, к которому привык и запорожец в том числе может быть кому-то удобнее бмв, не нужно людей за это пинать. иде не решают главную проблему: понимать problem domain, процесс разработки, интересы людей, которые в этом задействованы и кучу всякого еще. а то, что "оно" мне, когда я печатаю, подсказки высвечивает, "оно" может идти гулять, я быстрее ручками напечатаю : )
Это также относится к говнокоду.
Что эта мысль не совсем понятна.
Дали "нормальный" проект. Нужно что то добавить. В силу каких причинначали пользовать имеющееся имя но с другим типом.
у jetbrains есть бесплатная версия для личного пользования. Phpstorm емнип
https://www.jetbrains.com/phpstorm/buy/#edition=personal
может раньше и была бесплатной
разные языки имеют право на существование, иначе бы все до сих пор на фортране писали.
имеется много разных критериев по которым языки разрабатываются и выбираются, и компилируемость - не самый решающий. Особенно это касается DSLs, где гибкость и понятность - более важны
это как если слесарь будет говорить, что ему не нравятся крестообразные отвертки, а только торксы. наверное, если у вас все шурупы под торкс, то логично, но не стоит сердиться, когда шуруп с крестообразным шлицом плохо идет под торксовой отверткой.
кстати, к луа вполне можно приспособиться (я уже немного пообвыкся, хотя далеко не эксперт). такой себе "minipython"
Я интегрировал Луа в нашу программу (КАД для мебели)
у нас есть сложный 3д обьект, теперь в нём можно порграмировать на Луа.
например, если человек меняет размер ширину шкафа, то, до определённой ширины, полки меняют ширину, потом вместо 2х полок - одна....
Лиа лекго интегрируется, я запустил её за неделю.
Смотрим на языки со слабой типизацией
https://foren.germany.ru/showmessage.pl?Number=32877785&Bo...
А Бейсик это совсем отдельная тема.