LISP для Ардуино

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ворота пишет:

Я не про то. Там говорится о дальнейшем развитии фортрана (это к нашей теме) - тут его уже некоторые похоронили.

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

В частности, в группу опрашиваемых никогда не попадают разработчики на Фортране или Коболе. Хотя бы потому, что им дела нет до каких-то социологических опросов.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

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

Ощущение власти конечно - вспомните - 'одним движением руки...двинул он полки'
 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

Logik пишет:

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

Я тут пообщался с группой разработчиков...

В общем, результат таков:

На первом месте - Фортран (с большим отрывом).

На втором - Паскаль/Делфи.

На третьем - С/С++.

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

Это с какими разработчиками вы пообщались?
На первом месте сейчас СИ-ШАРП и за ним претендентов не видно,
есть разве еще языки позволяющие пилить многомиллионное бабло с такой лёгкостью?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Клапауций 112 пишет:

коммунизм и Гулаг тоже на идеях Маркса и Энгельса построены, но это две большие разницы.

Коммунизи и Гулаг - две большие разницы?

Или Маркс и Энгельс?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП пишет:

andriano, а какого характера разработки? Инжиниринг?

Да неважно это.

В данном контексте важно лишь то, что указанную группу разработчиков никогда не будут опрашивать социологи.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

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

yeng
Offline
Зарегистрирован: 13.02.2018

ЕвгенийП пишет:

Вот, случайно наткнулся на проект. Скачал, но пока толком не исследовал. ИНтересно насколько законченная реализация LISP'а. Само по себе прикольно, поковыряюсь на досуге. Кому интересно, присоединяйтесь.

Блинк на LISP'е

(defun blink ()
	(pinmode 13 t)
	(loop
		(digitalwrite 13 t)
		(delay 1000)
		(digitalwrite 13 nil) 
		(delay 1000)
	)
)

 

Здравствуйте. Скажите, Вы до сих пор пользуетесь Lisp'ом для программирования Arduino. Было бы очень интересно присоединиться к вам, если, конечно, время есть)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

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

11111000000
Offline
Зарегистрирован: 14.02.2018

Я пользуюсь. Мы с коллегами начали тестировать uLisp на Arduino. Очень интересно, что у нас получится. Сейчас пытаюсь пробросить REPL и понять, сможем ли мы расширять программы в реальном времени, ради чего и связались с этим.

А что касается живости или мёртвости Lisp. Да... почитал тред... Что сказать... За язык не обидно. Вот за образование в России - обидно.  Иначе любопытно, откуда берутся, и чем (по их мнению) деланы люди, называющие "мёртвым" язык, на котором:

0) Написан лучший в мире учебник по созданию интерпретаторов,  преподающийся в MIT (до сих пор SICP - это рекомендуемый здесь учебник, несмотря на наличие курса на Пайтон) и собственно, вариаций различных интерпретаторов этого языка на Гитхаб каждый день появляется N-дцать новых... Что об этом, если даже Javascript (ECMAScript) вырос из Схемки Брэндона Айка, а Ruby - сам его создатель называет Matz's Lisp! 

1) написан второй (или уже первый?) по популярности среди профессионалов текстовый редактор (EMACS), которому уже 34 года, а он и не думает умирать, а только развивается! (google: Gource EMACS)  

2) который является языком множества активно поддерживаемых систем автоматического проектирования (того же Автокада напр) и вообще, активнейшим образом, применяется для создания DSL, являясь метаязыком

3) Диалектом которого является чуть ли не самое популярное и практичное на данный момент развитие Java - Clojure

4) Диалект которого буквально выбран в качестве ОСНОВНОГО языка расширения GNU, и одной из самых перспективных встраиваемых платформ - Guile, на базе которой уже реализованы всякие ЛУА итп ПАЙТОНЫ  - как макропрограммы

5) На котором написан новейший, космический по своим возможностям загрузчик (система инициализации) Linux - Shepherd, конкурент SystemD, используемый в официальном дистрибутиве GNU Guix, который по сути может заменить Docker!  А оный дистрибутив по наблюдениям - активнейшим (!) образом используется иразвивается на равне с NIX - и при том, не где нибудь - а на острие биоинформатики, европейскими и американскими институтами

6) ...устанешь перечислять - http://pchristensen.com/blog/lisp-companies/  ...

7) ... https://www.european-lisp-symposium.org/ - эти учёные такие дураки, %username%

... Да, в конце концов, язык, который является прямым отражением AST-дерева, которое есть внутренний язык вообще всех трансляторов - не может быть мёртвым. Вот, кстати, и - ничего удивительного, когда мы видим знакомый синтаксис и (nil) в парсере GCC... 

Эх вы, горе-тролли, натроллили на три страницы, так поешьте что-ли скобочек ))))

Не знать всех этих фактов, это... ну это ещё ладно, бывает... Не все же читают по английски... 
Но вот не понимать SICP и считать LISP "мёртвым", когда это, по сути - живейший и универсальнейший язык, а точнее - семейство языков! Это - безграмотность, Карл. 

sadman41
Offline
Зарегистрирован: 19.10.2016

8) Высочайший уровень защиты: "Хакерам удалось украсть последние 50 МБ исходного кода программы на Lisp, которая управляет запуском баллистических ракет США. К счастью, там были только закрывающие скобки."

11111000000
Offline
Зарегистрирован: 14.02.2018

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

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну, вообще-то это с анекдот.ру.

11111000000
Offline
Зарегистрирован: 14.02.2018

годнота, чо )

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

11111000000 пишет:

А что касается живости или мёртвости Lisp. Да... почитал тред... Что сказать... За язык не обидно. Вот за образование в России - обидно.  

А мне и за язык было обидно - первая любовь, всё же. Потом, решил, что обижаться попросту не на кого. Люди, которые в этой ветке задирали хвост на лисп называют себя прогерами и разрабами. Уровень грамотности комментировать надо, или Вы сами всё поняли?

Я рад, что Вы здесь появились, одним грамотным человеком больше. Может поболтаем ещё.

yeng
Offline
Зарегистрирован: 13.02.2018

11111000000 пишет:

А что касается живости или мёртвости Lisp. Да... почитал тред... Что сказать... За язык не обидно. Вот за образование в России - обидно. 

За образование - это да. Больная нынче тема. Кстати, очень понравился ваш отзыв, всё по полочкам разложили. uLisp действительно хороший проект, за которым я наблюдаю почти год. Удивительно, что ещё остались люди, которые любят этот язык не только за его "скобочность", но и за философию языка, ибо программирование на Lisp - это целое искусство.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Искусство - это на Forth-е код шить. 

yeng
Offline
Зарегистрирован: 13.02.2018

Не, на Lisp лучше)

11111000000
Offline
Зарегистрирован: 14.02.2018

А вот нашлась такая любопытная штука, как имплементация DSL для ардуино на Scheme

https://github.com/egallesio/ArduinoML-scheme

Причём собрать её можно, используя разные интерпретаторы, вплоть до Guile!

Пример
 

(define-application Example_with_two_leds
  :sensors
  ((button 9))
  :actuators
  ((led1 11)
   (led2 12))
  :states
  ((on  (set! led1 "HIGH") (set! led2 "LOW"))
   (off (set! led1 "LOW")  (set! led2 "HIGH")))
  :transitions
  ((on -> off when button "HIGH")
   (off -> on when button "HIGH"))
  :initial
  off)

Документация для ArduinoML тут: https://github.com/mosser/ArduinoML-kernel/blob/master/docs/README.md

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вот примерно так надо писать студенческие задания ленивым задницам, которые приходят на форум с требованием "срочно напишите мне мигание двумя светодиодами, а то сдавать завтра". Написать на лиспе (можно и на брейнфаке) и нехай себе сдают. Заодно преподу дадим повод постебаться :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

Искусство - это на Forth-е код шить. 

Кстати, о форте. Не встречали интерпретатора для Ардуино? В принципе и самому несложно сделать, если нет. Было бы забавно.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ЕвгенийП пишет:

DetSimen пишет:

Искусство - это на Forth-е код шить. 

Кстати, о форте. Не встречали интерпретатора для Ардуино? В принципе и самому несложно сделать, если нет. Было бы забавно.

Памяти ОЗУ маловато. Так что писать придется аналог IDE Ардуины только не под Си, а под Forth 

yeng
Offline
Зарегистрирован: 13.02.2018

Есть. Встречал пару проектов по реализации Forth интерпретатора для Arduino на github'e.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwone пишет:
  писать придется аналог IDE Ардуины только не под Си, а под Forth
Ну, это уж точно не придётся - так его просто не сделаешь.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

yeng пишет:

Есть. Встречал пару проектов по реализации Forth интерпретатора для Arduino на github'e.

Что есть. Традиционный Форт он язык не под ООП. Так что сначала надо внести в него механизмы ООП. те же классы и прочие вещи. :) На Ардуине есть язык Си. Вот исходник с Си превращается в код на Ардуине. Вы хотите сказать что видели компилятор с языка Форт в код на Ардуине ??

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwone пишет:

Традиционный Форт он язык не под ООП.

И что? Вы вон умудряетесь даже на С++ без ООП писать, и даже с широким использованием ключевого слова class. Это Вам уже и я пытался объяснять, и Logic.

qwone пишет:

Так что сначала надо внести в него механизмы ООП. те же классы и прочие вещи. :) 

НА-ХРЕ-НА ?

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Предлагаю рецепт: изготовить переводчик Форта на честный Си для Ардуины, чтобы потом исходник Си превращался в код на Ардуине. Завернуть этов все в ICO и блохчейн, пропустить через миксер... Промайнить три часа. Присыпать сверху свежими скобочками. Подавать на перфокартах под звук стрекочущего в ночи АЦПУ со стопкой казенного "протирочного" спирта.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

ЕвгенийП пишет:

И что? Вы вон умудряетесь даже на С++ без ООП писать, и даже с широким использованием ключевого слова class.

Тсс, не рвите шаблон винни :) Строго говоря, много кто не понимает, что использование классов - ещё не значит ООП. Но винни жалко - шаблоны рушатся на глазах :) :) :)

yeng
Offline
Зарегистрирован: 13.02.2018

qwone пишет:

yeng пишет:

Есть. Встречал пару проектов по реализации Forth интерпретатора для Arduino на github'e.

Так что сначала надо внести в него механизмы ООП. те же классы и прочие вещи. :)

Один вопрос - зачем? Зачем forth'у ООП? Вы хоть раз видели код на этом языке, может быть вы писали на нём? Если нет, то для начала изучите Википедию, прежде чем такими мыслями задаваться.

yeng
Offline
Зарегистрирован: 13.02.2018

qwone пишет:

yeng пишет:

Есть. Встречал пару проектов по реализации Forth интерпретатора для Arduino на github'e.

  Вы хотите сказать что видели компилятор с языка Форт в код на Ардуине ??

Я писал выше, что видел примеры именно интерпретаторов, а не компиляторов.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

DIYMan пишет:

Тсс, не рвите шаблон винни :) Строго говоря, много кто не понимает, что использование классов - ещё не значит ООП. Но винни жалко - шаблоны рушатся на глазах :) :) :)

он ключевые слова перепутывает.  Везде, где нада struct, у него class. Мошт, он про struct и не знает?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

yeng,видел,писал. Любой интерплетатор можно сделать компилятором. Пример бейсик. 

ПС: Когда иврит делали современным, столкнулись с тем , что слов на современные вещи и идеи в нем не нашлось. Пришлось ,или заимствовать из других языков, какое конщунство, или придумывать свои. Так и с Фортом, если выводить его из мертвого языка, то вводить надо новые механизмы. Если писать код на Форте в Ардуине, то придется вводить свои millis(), delay(), digitalRead и прочее.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwone пишет:

Любой интерплетатор можно сделать компилятором. Пример бейсик. 

Ох, не любой, совсем не любой, тем более на гарвардской архитектуре. А бейсик - самый неудачный из всех возможным примеров. Причём тут бейсик, когда мы говорим о языке с глубокой рефлексией на которой собственно всё в нём и построено?

qwone пишет:

Если писать код на Форте в Ардуине, то придется вводить свои millis(), delay(), digitalRead и прочее.

Это как раз в него добавляется естественным образом, в отличие от ООП. Встроенные (или невстроенные) функции - это то из чего он состоит чуть менее, чем полностью.

-----------

Колитесь, Вы ведь понятия не имееете, что за Форт такой, правда? Ничем другим не могу объяснить такие Ваши  заявления.

 

11111000000
Offline
Зарегистрирован: 14.02.2018

Форт конечно интересно на контроллерах запускать, к тому же он весьма низкоуровневый. Это уже для отдельной темы тред пошёл.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Я кину ссылку для любознательных: Л.Броуди Начальный курс...

Кто сидит на Линуксе - можно gforth сразу поставить и получать удовольствие читая книгу и делая примеры тут же.

Для Винды - ну сами поищите. Под  MinGW можно все ..никсовое поставить, может есть и нативные виндоус приложения.

---

Только что проверил на виртуалке с Вин10-64: с сайта gforth.org  скачал готовый gfoth64.exe  все работает, как и на Линуксе.

Даже MinGW ставить не надо. У меня голая виртуалка Вин10-64 - только для торгового терминала (все сложно ;) ) - вот на ней и проверял.

---

Есть еще путь - использовать http://www.tutorialspoint.com/execute_forth_online.php

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

11111000000 пишет:

А что касается живости или мёртвости Lisp. Да... почитал тред... Что сказать... За язык не обидно. Вот за образование в России - обидно.  

А мне и за язык было обидно - первая любовь, всё же. Потом, решил, что обижаться попросту не на кого. Люди, которые в этой ветке задирали хвост на лисп называют себя прогерами и разрабами. Уровень грамотности комментировать надо, или Вы сами всё поняли?

Я рад, что Вы здесь появились, одним грамотным человеком больше. Может поболтаем ещё.

Евгений Петрович, не, не задирал, я в курсе, что всевозможные автокадовские расширения на оном написаны )))
Это я перед Вами как кующий железом по железу оправдываюсь )))
Просто у нас был инженер с Лиспом на ты, он мышкой не чертил, он в строке командами чертил, это быстрее раз в пять )))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

qwone пишет:

Традиционный Форт он язык не под ООП.

И что? Вы вон умудряетесь даже на С++ без ООП писать, и даже с широким использованием ключевого слова class. Это Вам уже и я пытался объяснять, и Logic.

qwone пишет:

Так что сначала надо внести в него механизмы ООП. те же классы и прочие вещи. :) 

НА-ХРЕ-НА ?

 

но внезапно чёрный ворон примешался к разговорам, вспыхнув синими очами, он сказал: "А на фига?!" )))

11111000000
Offline
Зарегистрирован: 14.02.2018

http://ryansuchocki.github.io/microscheme/

Караван идёт )

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

11111000000 пишет:

http://ryansuchocki.github.io/microscheme/

Караван идёт )

Оригинально, а вот сколько памяти сжирает этот скетч

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

 а вот сколько памяти сжирает этот скетч

"Экий ты меркантильный Маргадон, о душе бы подумал"

Logik
Offline
Зарегистрирован: 05.08.2014

ua6em пишет:

11111000000 пишет:

http://ryansuchocki.github.io/microscheme/

Караван идёт )

Оригинально, а вот сколько памяти сжирает этот скетч

Разумеется жрет - не прокормить. Но его задача не в эффективности, а чтоб старперы могли вспомнить времена когда на форте (липсе, аде и т.д.) писали и хер стоял. Теперь вот снова напишут, может и остальное вернется ;) Форт жил, форт жив, форт будет жить! ( В.И. Ленин ;) Призрак лиспа бродит по компилятору! 

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

 а вот сколько памяти сжирает этот скетч

"Экий ты меркантильный Маргадон, о душе бы подумал"


...где, скажи, хотя б пол глоточка, элексира - который ДУША?

11111000000
Offline
Зарегистрирован: 14.02.2018

Малоуважаемый Logik, олдовее C++, в котором даже сборки мусора нет принципиально - только твои предрассудки.

Перечитай мой первый пост, на который (ввиду отсутствия аргументов) ты не смог ничего пукнуть, и раз сказать по сути нечего, иди вон из этой темы. 

В России мало кто понимает в лиспах - это так. И ничего удивительного, когда целое поколение тех, кто разбирался в компьютерной науке - или уехали на запад, или на высших должностях в корпорациях. Так кому фундаментальное преподавать оболтусам? Но если кто и преподаёт, так ленивые и наглые студиозусы спят на лекциях, а потом идут в ад, говнокодить очередной велосипед на PHP, за зарплату в три раза выше чем у профессора (но в три раза ниже реальной рыночной), совершая при этом все возможные ошибки проектирования, описанные ещё в 80-х. (см. SICP гл. "ловушки императивного программирования") 

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

(https://www.forrester.com/report/The+New+Dawn+Of+Functional+Programming/-/E-RES135953?utm_source=zdnet&utm_medium=pr&utm_campaign=2017_tmbg_et&utm_content=report_facemire)

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

Но тут тема про Лиспы на контроллерах, и если просто память коротка:

uLisp Requirements

Program memory: At least 8 Kbytes.

RAM: At least 1 Kbytes.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

11111000000, не мечите. Вы разве не поняли, что это был обычный тролльский вброс на вентиллятор. Будете отвечать, сами не заметите, как тема в клоаку превратится.

11111000000
Offline
Зарегистрирован: 14.02.2018

Уже превратилась, хуже точно не будет. Кстати, какого она перемещена в "отвлечённые". Считаю, в разделе Программирование она и должна быть - верните. Более того, это очень важная тема. И uLisp и тот же ArduinoML на Scheme - очень перспективная и практичная тема!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

11111000000 пишет:

хуже точно не будет.

Вы оптимист :)

11111000000 пишет:

верните

Возможностей вернуть у меня не больше, чем у Вас.

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

11111000000 пишет:
Более того, это очень важная тема. И uLisp и тот же ArduinoML на Scheme - очень перспективная и практичная тема!
Для кого и для чего? Для трепа, так и здесь можно. А если для работы, то где выложеный сюда рабочий ваш код. Нету. Ну https://www.youtube.com/watch?v=Upry8Fb7MpQ

11111000000
Offline
Зарегистрирован: 14.02.2018

По поводу "для чего" - я выше уже достаточно написал на эту тему. Остались вопросы? 

Есть практическое применение - конечный автомат для Arduino на ArduinoML Scheme - читается прекрасно и код на C генерирует хороший.  

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

Почему на английском тема лиспов на контроллерах широко обсуждается, а на русском - в "отвлечённых"?

То, что здесь на первые три страницы развели неграмотный трёп, так это не повод тему закрывать. 
 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

А вы какой труд , помимо "я выше уже достаточно написал на эту тему" сделали. ГуглоИскателей и КоеЧего писателей хватает. А вот взять Ардуино и наваять свой код, а не я видел ролик на ютубе и этого достаточно для меня. А на остальное так не на это у меня руки заточены.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Пух, ты опять накурился сегодня?

KPG
Offline
Зарегистрирован: 09.06.2019

В теме спрашивали про Форт для Ардуино :)

amForth один из популярных  для Ардуино, есть и другие кому интересно.

P.S. На идеях Форт и Лисп есть язык программирования Factor.

Ещё можно упомянуть мультиплатформенный  язык 8th

The Arduino Controlled by EForth https://archive.org/details/TheArduinoControlledByEForth  

The ATTINY Project 2018 https://archive.org/details/TheATTINYProject2018

Некоторый архив книг по Форту https://archive.org/search.php?query=subject%3A%22FORTH+%28Computer+program+language%29%22

Странно что Форта на данном форуме почти нет в обсуждениях.

Можно исправить ситуацию. :)

Лично собирал amForth для двух контроллеров Atmega8515 и Atmega162

А в базовый 328 контроллер amForth уместится с большим запасом.

Также разные Форт есть для различных других контроллеров, помимо AVR

Форт можно встретить много где, например пользовательские скрипты в платe Pololu Maestro Servo - Maestro Scripting Language