Deutsch

Lua. кто-нибудь пользуется? почему это хорошо?

733  1 2 3 все
moose старожил11.12.17 15:43
moose
NEW 11.12.17 15:43 

столкнулся с такой интересной архитектурой: в чипе прошивается интерпретатор луа, который после загрузки ищет файл с определенным именем, в котором луа-скрипт, а дальше все оттуда управляется.

архитектура не новая, java тоже создавалась когда-то с мыслью программировать "игрушки".

смущает, что сама луа занимает прилично памяти (хотя ее футпринт на порядок меньше, чем у python'а, но в конце-концов зависит от того, какой функционалитет мы включим в этот интерпретатор (есть "стандартный" вариант прошивки, и можно скомпилировать индивидуально). некая RTOS, но убогенькая, как мне показалось. и сырая

пошел на сайт производителя чипа, https://nodemcu-build.com/, там они предлагают самому выбрать конфигурацию, они сгенерируют байнэри и вышлют. выслали. прошил. чип вместо того чтобы сказать, как при дифолтном, что он не находит инициализационного файла, "пришел в панику": начал что-то делать, вообще непонятно что. я устал с этим разбираться. может, кто-то уже пробовал и подскажет? пока перепрошил "нормальным" си-кодом, чип работает без проблем (в нужном мне объеме), но нервирует, что не получился эксперимент.

If idiots have a majority, it does not mean that they are right
#1 
AlexNek патриот11.12.17 21:46
AlexNek
11.12.17 21:46 
в ответ moose 11.12.17 15:43

А что можно хорошего ожидать от кодогенератора, наверняка чего то нестандартного захотелось.

А эмулятора для отладки нет?

#2 
moose старожил11.12.17 22:58
moose
NEW 11.12.17 22:58 
в ответ AlexNek 11.12.17 21:46, Последний раз изменено 11.12.17 23:01 (moose)

в принципе есть и кроссплатформ компайлеры и много чего еще, но дибажить, вроде, нечем. по крайней мере, нет никакой гарантии, что если все правильно в дивэлопмэнт окружении, то оно так же все будет и на устройстве. брэйкпоинт поставить и посмотреть, что там с переменными - никаких шансов. что-то от психологии бедного мужика. но скорее всего, я просто не понимаю, чем это так хорошо. наверняка имеются случаи, где это (или подобное) оправдано. у nordic semiconductor это называется soft device, у большинства - просто RTOS, однако там код пишется на с/с++. все это, конечно, лучше, чем все писать на ассемблере, и только если имеется что-то готовое, перенимать, на чем бы оно не было сделано, как я это делаю. но я могу себе это позволить, т.к. никто мне не говорит, что и как, я сам определяю, и могу выбрать не то, что производительно, а то, что мне хочется. а если идет работа над коммерческим продуктом, там от выбора платформы/технологии во многом зависит успех/провал. почему для кого-то луа - хорошее решение, я пока не поймал.

как-то (года два назад) ездил собеседоваться в фирму, которая забыл уже что разрабатывает, но они для гуи своего продукта используют javaFX. спросил, имеют ли они целью мультиплатформенность. ответ - нет, только windows. тогда спросил, откуда такой выбор. честно признались, что лучше всего (а похоже, что только и всего) "главный" знает java, и они решили таким образом выбрать цукунфтзихэрэ тэхнологи. но луа, в отличие от жавы, похоже, скорее экзотика, чем то, что знает каждый студент. поэтому ее применение не может быть вызвано тем, что "мы знаем только луа, поэтому...".

не догоняю пока...

If idiots have a majority, it does not mean that they are right
#3 
AlexNek патриот11.12.17 23:27
AlexNek
NEW 11.12.17 23:27 
в ответ moose 11.12.17 22:58

К сожалению, с Луа совсем не знаком, но применять скриптовые языки в железяке, как то напрягает. Помню как то плюсы засунул, когда все С пользовали, но давно это было. Сейчас с железяками на уровне АПИ, не ниже.

#4 
moose старожил12.12.17 10:49
moose
NEW 12.12.17 10:49 
в ответ AlexNek 11.12.17 23:27
К сожалению, с Луа совсем не знаком

да я тоже. вот только начал разбираться, и оно меня только расстроило...


применять скриптовые языки в железяке, как то напрягает.

не знаю. если бы оно работало, как обещает, то почему нет? вам не нужно весь чип перепрошивать, там есть простенькая файловая система (SPIFFS: SPI Flash File System), наличие которой позволяет не переписывать каждый раз весь чип, а только те файлы, которые вы изменили. а скрипты здесь очень даже кстати, и язык вполне достаточный для приложений, работающих "в игрушках".

If idiots have a majority, it does not mean that they are right
#5 
AlexNek патриот12.12.17 21:44
AlexNek
NEW 12.12.17 21:44 
в ответ moose 12.12.17 10:49
и оно меня только расстроило...

А отчего расстроило, ну не получилось как хотелось - часто бывает. У разработчиков то получается,значит какие то отличия были.

Я просто пока не сталкивался с "игрушками"

#6 
moose старожил12.12.17 23:32
moose
NEW 12.12.17 23:32 
в ответ AlexNek 12.12.17 21:44
Я просто пока не сталкивался с "игрушками"

знаю. а то бы вы давно разрулили мою проблему : )

я сегодня ее уже и сам разрулил. обыдно стало, решил вернуться к теме, почитать побольше (иногда полезно : ), и оказалось, что вычитал причину: при ПЕРЕпрошивках нужно учитывать тот факт, что при этом перезаписывается только память, занимаемая новой версией, остальное остается как было. а эта фирмвара лезет за пределы своей памяти, предполагая, что там находится "файловая система" (о которой я писал), отформатированная исходя из размеров самой фирмвары. а форматируется она только, если там ничего нет. а там - файловая система, созданная предыдущей прошивкой. поэтому сперва следует потереть весь флэш, и только потом аплоудить новую версию. проделал это все (пришлось и python вспомнить, с которым почти не знаком, и кое-что еще), и ОНО РАБОТАЕТ! осталось в луе поднасобачиться (книга хорошая уже скачана и полупрочитана), освоить тулчейн для компиляции-загрузки скриптов на чип, и все пойдет как по маслу : ). единственное что смущает - дибажить невозможно (люди пишут). придется или лог какой-нибудь изобретать или изобретенный осваивать, или еще как, но у меня задачи простенькие относительно, надеюсь, без ошибок все запрограммирую (это ведь луа : )

If idiots have a majority, it does not mean that they are right
#7 
AlexNek патриот13.12.17 22:58
AlexNek
NEW 13.12.17 22:58 
в ответ moose 12.12.17 23:32
знаю. а то бы вы давно разрулили мою проблему

ну об этом то и речи не могло идти, вроде понятно было с самого начала.

Просто иногда, даже просто при пересказе свой проблемы может "загореться лампочка".

Я вот тоже вчера нашел отчего у меня гит по SSH не работал, долго искал, оказалось одного каталога на сервере не хватало.

#8 
moose старожил15.12.17 12:23
moose
NEW 15.12.17 12:23 
в ответ AlexNek 13.12.17 22:58, Последний раз изменено 15.12.17 12:27 (moose)
Просто иногда, даже просто при пересказе свой проблемы может "загореться лампочка".

это очень верно. я еще лет 30 назад начал пользоваться этой "зажигалкой": была одна коллега, которая понять меня не могла, но умела на удивление внимательно слушать: кивать, держать визуальный контакт, в общем, вести себя, будто ни на миг не упускает нить. и, рассказывая ей, я был вынужден то, что "плавало в воздухе", четче формулировать, и в конце-концов начинал это ясно понимать. вы тоже этот механизм имели ввиду?


немного "сблизился" с этой луой, и у меня на данном этапе такое создается впечатление, что это - попытка изобрести костыль, пользуясь которым, любой калека сразу должен бы побежать, причем очень быстро и в нужном направлении.

все, что народ пытается сделать и показать на этой луе, гораздо эффективнее делается на с/с++. причем здесь уже наработана масса библиотек, другого кода, и тем, кто имеет опыт в этих языках, нет необходимости осваивать еще и луу. но чтобы человеку освоить с/с++, требуется время, и не каждый, затративший это время, освоит это хорошо. а луа - некий basic, который, считается, каждый человек с улицы в состоянии за пару вечеров освоить в объеме, достаточном, чтобы создавать качественные приложения. уверен, и на луа в принципе можно писать эффективный код, и на с/с++ создавать ужас, на который нельзя смотреть. но продемонстрирую на живом примере актуальный уровень.

задаем в гугле lua esp8266 smtp send email example

в вервых рядах - эта ссылка:

https://github.com/nodemcu/nodemcu-firmware/blob/master/lu...

в первой строчке кода следующий комментарий:

Working Example:

.

о! форум даже сразу ссылку расшифровал!

на видео кто-то рассказывает и демонстрирует, как этот код работает. и массы берут этот код за образец, пытаются его воспроизвести и пр.

не нужно знать даже основы луа, чтобы понять, что здесь делается. а делается то, чего делать в принципе никогда нельзя.

нашел еще пример кода на adafruit, уже получше, но все равно для меня - очень непрофессионально. т.е. вывод напрашивается, что в среде луа даже учиться не у кого (в интернете по крайней мере). а когда нет грамотного ядра комъюнити, там не могут вырасти хорошие плоды: они смотрят на говнокод, другого они ничего в жизни не видели (и, возможно, видеть не желают), и сами начинают плодить подобное.

вспомнил нашего "коллегу" из соседней ветки с его потугами призвать regex, чтобы наконец-то запихнуть -1.5 в целое число : ). но он хоть признается, что не учился и не собирается, а здесь - говнокод прямо от "гуру".

If idiots have a majority, it does not mean that they are right
#9 
moose старожил15.12.17 20:31
moose
NEW 15.12.17 20:31 
в ответ moose 15.12.17 12:23

ну вот, дочел книжку до корки. конечно, не все запомнил (и не стремился), но впечатление получил. вполне интересный язык. требует привыкания, но это - дело наживное. захотелось даже попробовать поиспользовать. сильно углубляться не планирую, но побалуюсь, пока не надоест.

If idiots have a majority, it does not mean that they are right
#10 
AlexNek патриот16.12.17 17:25
AlexNek
NEW 16.12.17 17:25 
в ответ moose 15.12.17 12:23
вы тоже этот механизм имели ввиду?

ну что то подобное...

#11 
moose старожил17.12.17 21:27
moose
NEW 17.12.17 21:27 
в ответ moose 15.12.17 20:31

таки залез поглубже. новые эркэнтниссэ - неприятные. не знаю, назвать ли это "гибкостью" или дерьмовым концептуальным решением.

короче так. я как-то привык ("в других, нормальных языках" : ), что если я не объявлю переменную или ф-ю, то при обнаружении сразу возникает особый случай. в луе - "никаких проблем"! причем, если вы описали ф-ю, а потом какой-то переменной присвоили ее значение, то можно потом вызвать ф-ю через эту переменную. но если вы или опечатались в имени ф-ии (или переменной), или объявили ф-ю позже, чем переменную, то никто не будет ругаться, аж пока не произойдет попытка вызова этой ф-ии! естественно, "нужно программировать правильно". но я еще во времена фортрана встречал ошибки, вызванные "вольным стилем" объявления переменных. в общем, час потерял, пока это дошло. хотя сейчас удивляюсь, отчего так долго тупил : )

If idiots have a majority, it does not mean that they are right
#12 
Simple Nothing is f*cked18.12.17 14:07
Simple
NEW 18.12.17 14:07 
в ответ moose 17.12.17 21:27

Нормальные свойства динамических языков.

#13 
AlexNek патриот18.12.17 22:10
AlexNek
NEW 18.12.17 22:10 
в ответ moose 17.12.17 21:27
"в других, нормальных языках"

Одна из причин по которым не люблю интерпретаторы

#14 
moose старожил18.12.17 23:02
moose
NEW 18.12.17 23:02 
в ответ AlexNek 18.12.17 22:10

а причем здесь интерпретаторы? в этом смысле и java, и c# - интерпретаторы. и знаю точно, что уже давно имеются компиляторы, позволяющие из жава-кода икзэшник изготовить (не мультиплатформенный теперь уже, естественно : ). наверное, и с сишарпом такое же уже проделывают (или подмножеством). также можно в принципе написать с++-машину, которая будет интерпретировать с++ код.

If idiots have a majority, it does not mean that they are right
#15 
AlexNek патриот18.12.17 23:59
AlexNek
NEW 18.12.17 23:59 
в ответ moose 18.12.17 23:02

ну когда на байт коде или ИЛе будете писать приходите в гости смущ

#16 
moose старожил19.12.17 18:57
moose
NEW 19.12.17 18:57 
в ответ AlexNek 18.12.17 23:59
ну когда на байт коде или ИЛе будете писать приходите в гости смущ

знаю, у вас писька длинее. и толще. "еще бы стояла, цены бы ей не было" (с; )

If idiots have a majority, it does not mean that they are right
#17 
AlexNek патриот19.12.17 22:41
AlexNek
NEW 19.12.17 22:41 
в ответ moose 19.12.17 18:57

А я уж было решил что с Вами можно и нормально общаться, типа как на перекуре. Жалко. Прийдется тогда тоже другую пластинку ставить.


Для тех кто кроме своих личных проблем ничего больше не замечает, поясню что имелось в виду.

Код на Java и С# компилируется в некий промежуточный код (байт код и ИЛ соответственно), а уж этот промежуточный код интерпретируется.


Вот еще табличку нашел по разным видам типизаций. Вроде интерпретируемые и компилируемые языки имеют различные тенденции или?


Статическая / динамическая | Сильная / слабая |Явная / неявная
---------------------------------------------------
JavaScript  - Динамическая | Слабая      | Неявная
Ruby        - Динамическая | Сильная     | Неявная
Python      - Динамическая | Сильная     | Неявная
Java        - Статическая  | Сильная     | Явная
PHP         - Динамическая | Слабая      | Неявная
C           - Статическая  | Слабая      | Явная
C++         - Статическая  | Слабая      | Явная
Perl        - Динамическая | Слабая      | Неявная
Objective-C - Статическая  | Слабая      | Явная
C#          - Статическая  | Сильная     | Явная
Haskell     - Статическая  | Сильная     | Неявная
Common Lisp - Динамическая | Сильная     | Неявная
D           - Статическая  | Сильная     | Явная
Delphi      - Статическая  | Сильная     | Явная

вв

#18 
moose старожил19.12.17 23:57
moose
NEW 19.12.17 23:57 
в ответ AlexNek 19.12.17 22:41

я ведь признал уже привселюдно, что у вас больше. чего бы еще вам желать? ладно: и в поиске табличек у вас тоже больше : )


зы. не понимаю, что вы хотите сказать? вижу только "а я все равно больше знаю, толще вижу, длиннее понимаю...". я не против, если вас это тешит : )

If idiots have a majority, it does not mean that they are right
#19 
AlexNek патриот20.12.17 00:15
AlexNek
NEW 20.12.17 00:15 
в ответ moose 19.12.17 23:57
а я все равно больше знаю

где это Вы такое увидели?


не понимаю, что вы хотите сказать?

то что уже и сказал - не люблю интерпетируемые языки.

#20 
1 2 3 все