Перейти к содержанию
    

Сама по себе тема поднималась на форуме неоднократно, и сам я немало нафлудил в этих топиках.

Речь идет о портировании известных скриптовых языков на МК.

Есть немало открытых исходников и готовых портов.

Но в данном случае речь идет о теории. Где можно взять инфу по внутреннему устройству интерпретаторов?

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

Копание вслепую не слишком результативно :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сама по себе тема поднималась на форуме неоднократно, и сам я немало нафлудил в этих топиках.

Речь идет о портировании известных скриптовых языков на МК.

Есть немало открытых исходников и готовых портов.

Но в данном случае речь идет о теории. Где можно взять инфу по внутреннему устройству интерпретаторов?

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

Копание вслепую не слишком результативно :(

 

IMHO: PHP неплохо документирован и источников информации по нему много.

А последние версии, по возможностям, не уступают Perl-у ( при использовании в консольных приложениях ).

 

Ещё, вроде бы, существует порт Lisp-а для МК. Но, «в свободной продаже» не встречал его.

( могу ошибаться. Лет 15 уже с ним работать не доводилось ).

 

Ёклмн... ещё одна поправка. :)

Есть же ветка Forth, начатая когда-то, Андреем Черезовым ( SP-Forth, http://www.eserv.ru/eserv/, http://www.enet.ru/win/cherezov/ ), поддержанная Николаем Немцевым ( автор nncron & nnbackup ― http://www.nncron.ru/).

Вот уж что годится для портирования на МК, так это Forth !

 

Кстати, в соседней ветке, уважаемый Kopa, запостил линк на девайсы, работающие под управлением редкостной Forth-OS

http://technoforth.ru/index.php?page=mPOS64

Изменено пользователем ?ELF

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё, вроде бы, существует порт Lisp-а для МК. Но, «в свободной продаже» не встречал его.

( могу ошибаться. Лет 15 уже с ним работать не доводилось ).

 

Ёклмн... ещё одна поправка. :)

Есть же ветка Forth, начатая когда-то, Андреем Черезовым ( SP-Forth, http://www.eserv.ru/eserv/, http://www.enet.ru/win/cherezov/ ), поддержанная Николаем Немцевым ( автор nncron & nnbackup ― http://www.nncron.ru/).

Вот уж что годится для портирования на МК, так это Forth !

 

Кстати, в соседней ветке, уважаемый Kopa, запостил линк на девайсы, работающие под управлением редкостной Forth-OS

http://technoforth.ru/index.php?page=mPOS64

 

И Forth и LISP - портируемы и реализуемы в малых конфигурациях (сам помню раскручивал Forth ещё для x8086) ... но это всё - "другая песня" - это стековые машины, с которыми должны быть интегрированы приложения-программы, т.е. то, что называется: одноязыковая среда. К скриптовым языкам - управления заданиями - это имеет очень опосредованное отношение.

По моему мнению (прогнозу, предположению - IMHO) единственное, что перспективно портировать в этом смысле - это Perl; благо, всё что к нему относится - это free + open source.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По моему мнению (прогнозу, предположению - IMHO) единственное, что перспективно портировать в этом смысле - это Perl; благо, всё что к нему относится - это free + open source

Ну почему же, есть готовая реализация tcl для ARM, Lua для М16.Компилил Lua для ARM, немножко игрался. Но чтобы сделать полноценную реализацию надо очень хорошо знать внутренности (представление данных, механизм исполнения итп.). К сожалению без полноценного знания теории копание исходников сродни забиванию шурупов молотком :( Поэтому и спрашиваю.

Возможно при вдумчивой оценке и Perl окажется решением.

А может Python удастся урезать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

К скриптовым языкам - управления заданиями - это имеет очень опосредованное отношение.

"Скриптовость" языков и подразумевает интегрирование скрипта с базисным языком без

процедуры перекомпилирования базиса:)

 

Форт можно расширить до синтаксиса и семантики заданного языка, что часто и делают,

создавая проблемно ориентированные расширения Форт языка. Лисп тоже близок

Форту, но в своей основе имеет другой базис.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Скриптовость" языков и подразумевает интегрирование скрипта с базисным языком без

процедуры перекомпилирования базиса:)

Круто :a14: ... зауважал ... чем-то напомнило забытый "Общий курс политэкономии" :laugh:

Скриптовость языка, вообще то говоря, ничего не подразумевает :laugh: - чем же интегрирован shell (разные sell: ksh, bash etc.) с базовым языком С ОС UNIX?

 

Форт можно расширить до синтаксиса и семантики заданного языка, что часто и делают,

создавая проблемно ориентированные расширения Форт языка. Лисп тоже близок

Форту, но в своей основе имеет другой базис.

Можно расширить... Но только в "одноязыковых" системах, см. на этот счёт проекты школы Н.Вирта: Modula - Lylith - Oberon - BlyeBottle ...

Если ваши приложения - в Forth системе, то Forth может быть и языком управления задачами, если ваши приложения - Lisp, то и стековой машиной Lisp вы можете управлять из Lisp... Но управлять выполнением из скриптового языка заданиями, приведенными в ELF-формат из C, C++, FORTRAN, Ada, Forth & Lisp (да ещё и одновременно из разных) - ни из Forth ни из Lisp вы не построите управляющую надстройку.

 

В этом смысле путаницу вносит неточно сформулированное исходное пожелание:

Речь идет о портировании известных скриптовых языков на МК.

...

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

- что сие значит?

 

А в отношении:

Ну почему же, есть готовая реализация tcl для ARM, Lua для М16.Компилил Lua для ARM, немножко игрался. Но чтобы сделать полноценную реализацию надо очень хорошо знать внутренности (представление данных, механизм исполнения итп.). К сожалению без полноценного знания теории копание исходников сродни забиванию шурупов молотком :( Поэтому и спрашиваю.

Возможно при вдумчивой оценке и Perl окажется решением.

А может Python удастся урезать.

... есть. А ещё есть Ruby и много другого .... но всё это экзотика последних времён, в которой всё очень зыбко и меняется, и если переносить/портировать, и тратить на это много времени - то то, в первую очередь: а). для чего есть уже устоявшиеся стандарты синтаксиса и семантики + б). для чего есть уже большие объёмы готового наработанного кода. Именно только из таких соображений я предложил Perl. и это только моё IMHO.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- что сие значит?

Значит это то, что большинство интерпретаторов весят мегабайты и рассчитаны на большие машины.

Для того чтобы уложить их в однокристалку надо их серьезно урезать и подменять вызовы операционки чем-то своим. В частности для Lua есть такая документация. http://www.lua.org/notes/, но хотелось бы чего-нибудь более абстракного. Понимания всей идеологии.

 

А ещё есть Ruby и много другого .... но всё это экзотика

последних времён, в которой всё очень зыбко и меняется

Который стоит на 10/11-м месте по популярности. Меня во всяком случае весьма заинтересовал.

Есть еще древнейший tcl, чуть ли не ровесник Юникса.

 

 

Именно только из таких соображений я предложил Perl.

Perl ориентирован прежде всего на разбор текста. Да и весьма тяжел.

 

 

Попробую объяснится. В принципе языки такого класса предназначены для написания несложных программ в сжатые сроки.

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

Задача состоит в том, чтобы тонкое конфигурирование устройства было возложено на скрипт. Точно так же как в Квартусе встроен tcl, а сценарии игрушек написаны на Lua. Работа с железом возлагается на жестко прошитый софт, реакции на события отрабатывает скрипт.

Тогда можно буквально несколькими строчками из консоли перенастроить сложное устройство.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Perl ориентирован прежде всего на разбор текста. Да и весьма тяжел.

Это уже частности, но интересно заметить, что : "Perl ориентирован прежде всего на разбор текста" - это 1 из бытующих народных стереотипов, такая красивая народная легенда... Perl был первоначально ориентирован Лэрри Уолшем в 1986г. , да и то - что значит "ориентирован"? то что там заложен мощнейший механизм сопоставления с образцом, который, в принципе, был известен своей мощью задолго до Perl.

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

Водолазский В., Семериков В. "Энциклопедия Perl" - Спб.: Питер, 2002 - хорошие авторы, хорошая книжка - что ещё нужно ;)... которая, возможно, убедит вас в том, что как считают весьма многие, что Perl - это язык системного программирования в UNIX.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может Python удастся урезать.

 

Кстати, python для платформы S60 есть здесь

http://www.forum.nokia.com/info/sw.nokia.c...on_for_S60.html

и здесь

http://opensource.nokia.com/projects/pythonfors60/

 

ARM архитектура. Может, пригодится ?

 

Глубоко не копал. Только установил его в 2005-м ( ещё одну из первых версий ) на свой N6600.

Поиграл камерой, записной книжкой и SMS-ками.

Проект активно развивается. И, по-моему, у них неплохо всё документировано.

Есть несколько интересных форумов по этой теме.

---

 

Форумчане, а, что скажете на счёт Prolog-а в контексте этого топика ?

Хороший язык. В начале 90-х очень я им увлёкался ...

Знаю людей, которые до сих пор его используют ( в собственных реализациях ).

Есть даже версии для Sinclair ZX Spectrum :)

http://spectrum128.spb.ru/help/MicroProlog.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Но затык в том, что и Перл и Питон штуки довольно громоздкие.

Я правда скачал исходники Питона 1.1, но все равно 2 с хвостом мегабайта в исходниках, т.е. резать и еще раз резать.

Очень хочеться знать где и как?

Что жизненно необходимо, а что можно и исключить?

Как представляются данные ?(для tcl немного разобрался)

Как работает интерпретатор?

Как определяются типы?

итд, итп.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Форт можно расширить до синтаксиса и семантики заданного языка, что часто и делают,

 

Можно расширить... Но только в "одноязыковых" системах, см. на этот счёт проекты школы Н.Вирта: Modula - Lylith - Oberon - BlyeBottle ...

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

 

"Одноязыковость" в вашем контексте подразумевает следование синтаксису и семантики

заданного языка?

Но Форт может менять свой синтаксис и семантику, без перекомпиляции ядра, до произвольно заданного языка!!!. Форт при этом тоже остается доступным.

 

... если ваши приложения - Lisp, то и стековой машиной Lisp вы можете управлять из Lisp... Но управлять выполнением из скриптового языка заданиями, приведенными в ELF-формат из C, C++, FORTRAN, Ada, Forth & Lisp (да ещё и одновременно из разных) - ни из Forth ни из Lisp вы не построите управляющую надстройку.

 

По моему это уже относится к заданному расширению конкретного общего языка операционными возможностями. ( затрагивает уровень операционной сисстемы).

 

P.S. Под базисом языка имелось ввиду его синтаксис и семантика. ( shell не С, С++ язык)

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит это то, что большинство интерпретаторов весят мегабайты и рассчитаны на большие машины.

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

Полноценный Форт "весит" примерно 8 кил. Полноценный - значит, полностью резидентный, самодостаточный, с компилятором, интерпретатором и зачаточной осью. Коммерческий Форт для однокристалок http://www.forth.com/embedded/index.html

 

Кросс-компилятор позволяет уменьшить вес резидентной части, т.е. интерпретатора, до примерно 2 кил (и это не предел). Фриверный - см., например, http://sourceforge.net/projects/c-fvm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Форт системы пишутся на разных языках есть, например, и на Bash:)

 

http://www.forthfreak.net/index.cgi?BashForth

 

BashForth is a ForthInterpreter, written entirely in the bash scripting language.

It requires bash v2.04 or higher. Its virtual machine makes use of StringThreadedCode.

Because its source code doesn't need to be compiled, it is highly portable (to any platform running bash).

 

P.S. Выводы делать Вам:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

Одними из первых до этого допедрили создатели Жабы. Однако с виртуальной машиной Жабы есть некоторые проблемы: полная машина довольно тяжеловесна (типично требует порядка 1М памяти и 32-бит проц). Прежде всего из-за выбранного ООП-подхода и встроенной сборки мусора. Если бы не это, виртуальная машина Жабы еще больше напоминала бы виртуальную машину Форта, т.к. обе суть стековые процессоры, но Форт-машина максимально простая, а Жаба-машина - с наворотами. Есть всевозможные варианты "урезанных Жаб", где прежде всего выбрасывают сборку мусора, но я в них не очень силен. В любом случае это будет кастрированный язык.

 

Второе достоинство интерпретатора состоит в том, что для хорошей виртуальной машины можно написать транслятор с любого языка. Сановцы до этого не доперли, для своей виртуальной Жаба-машины он предлагают один только язык Жаба. Этим обстоятельством воспользовались мелкомягкие и выкатили свой .NET.

 

В основе .NET лежит примерно такая же виртуальная машина (интерпретатор), какая используется в Жаба-машине, т.е. стековый проц с ООП наворотами и сборкой мусора. Однако языков под эту машину наплодили тучу. В отличие от Жабы, мелкомягкие, похоже, не имеют намерений "урезать" .NET. Правда, есть умельцы, которые занялись этим самостоятельно (кому интересно - гуглите на слова .NET lego mindstorm).

 

Форт-машина - одна из самых простых и удобных виртуальных машин. Это тоже стековая машина, как Жаба-машина и .NET-машина, но максимально компактная и упрощенная. Идеально подходит для встроенных применений, но - увы - в отличие от .NET и Жаба-машин, не поддержана доступными высококачественными кросс-трансляторами с удобных ЯВУ. Есть полуоткрытый югославский проект, где они делают Форт-машину с С-кросс-компилятором, но это маргинальные штучки.

 

Все, что помимо этих трех машин (Жаба, НЕТ, Форт) упоминалось в треде - это все отстой и суксь, имхо. Уродцы, обреченные на вымирание, нечаянно появившиеся в ходе эволюционного процесса, имхо. Там есть достойные изумления экземпляры, такие как проект регистровой виртуальной машины, "Попугай" для Перла, если память не изменяет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Одноязыковость" в вашем контексте подразумевает следование синтаксису и семантики

заданного языка?

"Одноязыковость" в моём контексте ( :laugh: - собственно, это не мой контекст: я его "украл" у Н.Вирта) подразумевает следование всей системы семантике и понятиям выбранного языка реализации. Лучшия тому пример: OS BlueBottle, реализованной в рамках понятий языка Oberon (или Zennon), которые (понятия) просто невозможно реализовать/смоделировать в рамках понятий другого языка реализации, например С; пример таким понятиям: "активные объекты" и мониторы Хоара.

 

Но Форт может менять свой синтаксис и семантику, без перекомпиляции ядра, до произвольно заданного языка!!!. Форт при этом тоже остается доступным.

Ну-ка, ну-ка - "реализуйте" мне в Forth семантику Ada (с пакетами, пространствами видимости, параллельностями и рандеву ... etc.).

- Я духов вызывать могу из бездны!

- Я тоже могу. Весь вопрос в том - явятся ли они на зов?

(с) В.Шекспир "Генрих IV".

И, собственно, что вы собираетесь конкретно реализовывать ... ("семантика" сама по себе ведь это некоторая фикция, в роде Синей Птицы?) :

- компилятор с Ada написанный на Forth?

- исполняющую систему, выполненную на Forth, интерпретирующую код на Ada?

- ... или ещё чего :w00t: ?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...