реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Скриптовые языки, что почитать?
beer_warrior
сообщение Jan 26 2007, 23:53
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Сама по себе тема поднималась на форуме неоднократно, и сам я немало нафлудил в этих топиках.
Речь идет о портировании известных скриптовых языков на МК.
Есть немало открытых исходников и готовых портов.
Но в данном случае речь идет о теории. Где можно взять инфу по внутреннему устройству интерпретаторов?
Задача - научиться самому портировать язык, причем возможно с урезанием функциональности (т.е копанием во внутренностях), на любой кристалл и/или RTOS.
Копание вслепую не слишком результативно sad.gif


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
?ELF
сообщение Jan 27 2007, 00:28
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 8-09-06
Из: Россия, Челябинская область
Пользователь №: 20 187



Цитата(beer_warrior @ Jan 27 2007, 01:53) *
Сама по себе тема поднималась на форуме неоднократно, и сам я немало нафлудил в этих топиках.
Речь идет о портировании известных скриптовых языков на МК.
Есть немало открытых исходников и готовых портов.
Но в данном случае речь идет о теории. Где можно взять инфу по внутреннему устройству интерпретаторов?
Задача - научиться самому портировать язык, причем возможно с урезанием функциональности (т.е копанием во внутренностях), на любой кристалл и/или RTOS.
Копание вслепую не слишком результативно sad.gif


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

Ещё, вроде бы, существует порт Lisp-а для МК. Но, «в свободной продаже» не встречал его.
( могу ошибаться. Лет 15 уже с ним работать не доводилось ).

Ёклмн... ещё одна поправка. smile.gif
Есть же ветка 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 - Jan 27 2007, 01:15


--------------------
do ut des
Go to the top of the page
 
+Quote Post
Olej
сообщение Jan 27 2007, 22:48
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(?ELF @ Jan 27 2007, 01:28) *
Ещё, вроде бы, существует порт Lisp-а для МК. Но, «в свободной продаже» не встречал его.
( могу ошибаться. Лет 15 уже с ним работать не доводилось ).

Ёклмн... ещё одна поправка. smile.gif
Есть же ветка 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.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jan 27 2007, 23:22
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



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

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


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jan 28 2007, 08:34
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



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

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

Форт можно расширить до синтаксиса и семантики заданного языка, что часто и делают,
создавая проблемно ориентированные расширения Форт языка. Лисп тоже близок
Форту, но в своей основе имеет другой базис.
Go to the top of the page
 
+Quote Post
Olej
сообщение Jan 28 2007, 16:32
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(Kopa @ Jan 28 2007, 09:34) *
"Скриптовость" языков и подразумевает интегрирование скрипта с базисным языком без
процедуры перекомпилирования базисаsmile.gif

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

Цитата(Kopa @ Jan 28 2007, 09:34) *
Форт можно расширить до синтаксиса и семантики заданного языка, что часто и делают,
создавая проблемно ориентированные расширения Форт языка. Лисп тоже близок
Форту, но в своей основе имеет другой базис.

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

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

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

А в отношении:
Цитата(beer_warrior @ Jan 28 2007, 00:22) *
Ну почему же, есть готовая реализация tcl для ARM, Lua для М16.Компилил Lua для ARM, немножко игрался. Но чтобы сделать полноценную реализацию надо очень хорошо знать внутренности (представление данных, механизм исполнения итп.). К сожалению без полноценного знания теории копание исходников сродни забиванию шурупов молотком sad.gif Поэтому и спрашиваю.
Возможно при вдумчивой оценке и Perl окажется решением.
А может Python удастся урезать.

... есть. А ещё есть Ruby и много другого .... но всё это экзотика последних времён, в которой всё очень зыбко и меняется, и если переносить/портировать, и тратить на это много времени - то то, в первую очередь: а). для чего есть уже устоявшиеся стандарты синтаксиса и семантики + б). для чего есть уже большие объёмы готового наработанного кода. Именно только из таких соображений я предложил Perl. и это только моё IMHO.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jan 28 2007, 17:27
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



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

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

Цитата
А ещё есть Ruby и много другого .... но всё это экзотика
последних времён, в которой всё очень зыбко и меняется

Который стоит на 10/11-м месте по популярности. Меня во всяком случае весьма заинтересовал.
Есть еще древнейший tcl, чуть ли не ровесник Юникса.


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

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


Попробую объяснится. В принципе языки такого класса предназначены для написания несложных программ в сжатые сроки.
Да они медленные, но не требуют перекомпиляции. Да код открыт, но это несущественно если пишется для себя. Типизация на лету и несложные конструкции сильно облегчают жизнь людям не слишком искушенным в программировании, хотя станут головной болью в большм проекте.
Задача состоит в том, чтобы тонкое конфигурирование устройства было возложено на скрипт. Точно так же как в Квартусе встроен tcl, а сценарии игрушек написаны на Lua. Работа с железом возлагается на жестко прошитый софт, реакции на события отрабатывает скрипт.
Тогда можно буквально несколькими строчками из консоли перенастроить сложное устройство.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Olej
сообщение Jan 28 2007, 23:19
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(beer_warrior @ Jan 28 2007, 18:27) *
Perl ориентирован прежде всего на разбор текста. Да и весьма тяжел.

Это уже частности, но интересно заметить, что : "Perl ориентирован прежде всего на разбор текста" - это 1 из бытующих народных стереотипов, такая красивая народная легенда... Perl был первоначально ориентирован Лэрри Уолшем в 1986г. , да и то - что значит "ориентирован"? то что там заложен мощнейший механизм сопоставления с образцом, который, в принципе, был известен своей мощью задолго до Perl.
Но это было очень давно wink.gif ... много времени утекло, чтобы убедится, что нынешний Perl это никак не средство ориентированное на обработку текстовой информации - возьмите глянуть книжку:
Водолазский В., Семериков В. "Энциклопедия Perl" - Спб.: Питер, 2002 - хорошие авторы, хорошая книжка - что ещё нужно wink.gif... которая, возможно, убедит вас в том, что как считают весьма многие, что Perl - это язык системного программирования в UNIX.
Go to the top of the page
 
+Quote Post
?ELF
сообщение Jan 29 2007, 00:08
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 8-09-06
Из: Россия, Челябинская область
Пользователь №: 20 187



Цитата(beer_warrior @ Jan 28 2007, 01:22) *
А может 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 smile.gif
http://spectrum128.spb.ru/help/MicroProlog.pdf


--------------------
do ut des
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jan 29 2007, 00:34
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Не буду затевать священную войну, и за ссылки и за книжку большое спасибо, буду изучать.
Но затык в том, что и Перл и Питон штуки довольно громоздкие.
Я правда скачал исходники Питона 1.1, но все равно 2 с хвостом мегабайта в исходниках, т.е. резать и еще раз резать.
Очень хочеться знать где и как?
Что жизненно необходимо, а что можно и исключить?
Как представляются данные ?(для tcl немного разобрался)
Как работает интерпретатор?
Как определяются типы?
итд, итп.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jan 29 2007, 07:02
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(Olej @ Jan 28 2007, 16:32) *
Цитата(Kopa @ Jan 28 2007, 09:34) *

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


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


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

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


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

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

Сообщение отредактировал Kopa - Jan 29 2007, 07:04
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 29 2007, 07:45
Сообщение #12


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(beer_warrior @ Jan 28 2007, 23:57) *
Значит это то, что большинство интерпретаторов весят мегабайты и рассчитаны на большие машины.
Для того чтобы уложить их в однокристалку надо их серьезно урезать и подменять вызовы операционки чем-то своим.

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

Кросс-компилятор позволяет уменьшить вес резидентной части, т.е. интерпретатора, до примерно 2 кил (и это не предел). Фриверный - см., например, http://sourceforge.net/projects/c-fvm
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jan 29 2007, 10:24
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Форт системы пишутся на разных языках есть, например, и на 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. Выводы делать Вамsmile.gif
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 29 2007, 12:31
Сообщение #14


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



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

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

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

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

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

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

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

Все, что помимо этих трех машин (Жаба, НЕТ, Форт) упоминалось в треде - это все отстой и суксь, имхо. Уродцы, обреченные на вымирание, нечаянно появившиеся в ходе эволюционного процесса, имхо. Там есть достойные изумления экземпляры, такие как проект регистровой виртуальной машины, "Попугай" для Перла, если память не изменяет.
Go to the top of the page
 
+Quote Post
Olej
сообщение Jan 29 2007, 12:34
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(Kopa @ Jan 29 2007, 08:02) *
"Одноязыковость" в вашем контексте подразумевает следование синтаксису и семантики
заданного языка?

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

Цитата(Kopa @ Jan 29 2007, 08:02) *
Но Форт может менять свой синтаксис и семантику, без перекомпиляции ядра, до произвольно заданного языка!!!. Форт при этом тоже остается доступным.

Ну-ка, ну-ка - "реализуйте" мне в Forth семантику Ada (с пакетами, пространствами видимости, параллельностями и рандеву ... etc.).
- Я духов вызывать могу из бездны!
- Я тоже могу. Весь вопрос в том - явятся ли они на зов?
(с) В.Шекспир "Генрих IV".
И, собственно, что вы собираетесь конкретно реализовывать ... ("семантика" сама по себе ведь это некоторая фикция, в роде Синей Птицы?) :
- компилятор с Ada написанный на Forth?
- исполняющую систему, выполненную на Forth, интерпретирующую код на Ada?
- ... или ещё чего w00t.gif ?
(это, конечно, при условии, что вы отчётливо разграничиваете: а). компилятор б). интерпретатор в). моделирующую виртуальную машину, реализующую исполняющую систему, ... ).
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 03:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016