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

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

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

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

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

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

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

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

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

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

В списке http://www.idiom.com/free-compilers/ECATEG...compiler-1.html найдите "компилятор компиляторов" Gray Антона Эртла. Скачайте и, используя рекомендованный (его же) Форт, задайте ему БНФ Ады, как описано в описании, и запустите. Вы получите компилятор Ады, исполняемый Форт-системой. А также интерпретатор и виртуальную машину (стековую, ессно) в том же флаконе. Таков Форт :)

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


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

В списке http://www.idiom.com/free-compilers/ECATEG...compiler-1.html найдите "компилятор компиляторов" Gray Антона Эртла. Скачайте и, используя рекомендованный (его же) Форт, задайте ему БНФ Ады, как описано в описании, и запустите. Вы получите компилятор Ады, исполняемый Форт-системой. А также интерпретатор и виртуальную машину (стековую, ессно) в том же флаконе. Таков Форт :)

Не сомневаюсь, и достаточно хорошо представляю как это делается ... да только:

1. Вы считаете, что откомпилировать в некоторый промежуточный байт-код текст с Ada + затем этот промежуточный код исполнять на стековой виртуальной машине - это и есть Ada, и соответствует целям и задачам, для которых на неё потратили столько времени? Так вы это скажите тем, кто делал эту разработаку и её продолжает, или, неплохо, тем, кто финансировал эту программу, и ...

2. В сообществе Ada (это как 1 частный пример) есть такой порядок признания "того что является Ada":

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

- система тестов сертифицирована и не подлежит изменениям;

- та представленная Ada-система, которая проходит все тесты - считается Ada-системой, всё остальное считается ... "неизвестно что" ...

- в мире существует 5 систем - прошедшие систему сертификации (до какого-то времени в прошлом ;)) - среди них, не только среди прошедших, но просто среди представляемых - нет ни 1-й, реализованной по описанной вами схеме a'la Java...

Ну и что вы таким способом получите? "система в кое-чём напоминающую Ada"?

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


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

Не сомневаюсь, и достаточно хорошо представляю как это делается ... да только:

...

Ну и что вы таким способом получите? "система в кое-чём напоминающую Ada"?

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

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


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

декларировали техническую возможность реализации любого языка на Форте, когда же Вы в этом усомнились - продемонстрировали эту возможность чуть более детально. Будет заказчик и финансирование -

Это не реализация, это - игрушка.

На такое не будет ни заказчика, ни финансирования - никогда.

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


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

Это не реализация, это - игрушка.

На такое не будет ни заказчика, ни финансирования - никогда.

Существует A# - a port of Ada to the Microsoft .NET Platform: "A# is freely distributed by the Department of Computer Science at the United States Air Force Academy as a service to the Ada community under the terms of the GNU general public license." Hа мой непросвещенный взгляд выглядит как достаточно серьезный проект, вполне пригодный для изучения как языка Ada, так и .NET

 

1. Вы считаете, что откомпилировать в некоторый промежуточный байт-код текст с Ada + затем этот промежуточный код исполнять на стековой виртуальной машине - это и есть Ada, и соответствует целям и задачам, для которых на неё потратили столько времени? Так вы это скажите тем, кто делал эту разработаку и её продолжает, или, неплохо, тем, кто финансировал эту программу, и ...

Я не специалист в Аде. Задайте свои вопросы разработчикам A#, на приведенной ссылке есть адрес е-мэйл.

 

Кстати, Вы не поняли, как будет работать система на основе Форт+Gray. Там нет промежуточного байт-кода, раздельных компилятора и интерпретатора. Так, как Вы описали, работает A#. А в Форт+Gray, после загрузки БНФ языка (в нашем примере - Ада), грузится исходник программы на этом языке, после чего все вместе становится исполняемой программой. Совсем другая концепция, как видите.

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


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

...

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

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

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

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

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

 

Если семантика языка программирования "Синяя птица", то я Шекспир:)

А чем тогда выступает синтаксис языка?

 

Из прведенных вариантов реализации Aды на Форте выбирается любой из предложенных.

 

P.S. Что такое Ада у меня есть начальное представление.

Что мне, в свое время в ней понравилось, так несколько более выразительные конструкции

управляющих структур, чем в Си языке.

А не понравилось большой акцент на декларирование обрамляющих

описаний. ( Возможно в крупных проектах это позволяет контролировать их).

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


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

Кстати, Вы не поняли, как будет работать система на основе Форт+Gray. Там нет промежуточного байт-кода, раздельных компилятора и интерпретатора. Так, как Вы описали, работает A#. А в Форт+Gray, после загрузки БНФ языка (в нашем примере - Ада), грузится исходник программы на этом языке, после чего все вместе становится исполняемой программой. Совсем другая концепция, как видите.

Да всё я прекрасно понял, только какая разница? происходит ли это "снаружи" или "извнутри" ;) : когда всё это "все вместе становится исполняемой программой" то оно становится программой в шитом байт-коде для тсполняющей Forth виртуальной машины.

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

Да и разговор то об другом затевался?

 

Я не специалист в Аде. Задайте свои вопросы разработчикам A#, на приведенной ссылке есть адрес е-мэйл.

Ada - это только пример, так, к слову.

Та же история будет и с С/С++ : смоделировать синтаксически/семантически его можно, и разными средствами и разными tools, но очень многие веши в С/С++ окужении обеспечиваются (обеспечивают связь с) операционным окружением - где-то это ОС, где-то виртуальная Forth-машина, кому-то нравится p-код, через который так любили реализовывать Pascal. И без "средств под рукой" которые обеспечивает операционная среда С++ (большая часть которых вообще не являются частью языка, а предоставляются стандартными библиатеками) моделируемый на виртуальной машине представляет только "академический" интерес...

Чтоб было понятнее, о каких "вкусностях" речь, я назову только некоторые из них "на-вскидку", первое что в голову пришло: setjmp()/longjmp(), сигналы POSIX + сигналы реального врмени + ... sigsetjmp()/siglongjmp(), fork(), pthread_*() ... и мн. мн. других. Если ваша операционная среда не оперирует такими сущностями - то она и не может их предоставлять в С++, а кому тогда нужен такой С++, кроме отдельного узкого круга применений?

 

Вот такой "разночитаемостью" эта тема обязана размытой формулировке вопроса:

 

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

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

- а если этот МК предполагает, что он оснащён своей операционной средой - то совершенно другой, причём тоже радикально отличающиеся: RTOS QNX - это будет совершенно одно решение, а BlueBottle "стояший" на семантике Oberon/Zennon - то совершенно другое;

- а если: "на все случаи жизни" :cranky: - то вообще не будет никакого решения.

 

Из прведенных вариантов реализации Aды на Форте выбирается любой из предложенных.

Так в том-то и дело, что не выбирается никакое не только из приведенных, но и из подобно реализованных, птому как "оно" Ada - не является.

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


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

когда всё это "все вместе становится исполняемой программой" то оно становится программой в шитом байт-коде для тсполняющей Forth виртуальной машины.

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

 

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

 

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

 

Да и разговор то об другом затевался?

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

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


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

...Да всё я прекрасно понял, только какая разница? происходит ли это "снаружи" или "извнутри" ;) : когда всё это "все вместе становится исполняемой программой" то оно становится программой в шитом байт-коде для тсполняющей Forth виртуальной машины.

Поправка-

Современные Форт системы, обычно, транслируют исходный листинг в код целевого

процессора с той или иной степенью оптимизации:)

 

Из прведенных вариантов реализации Aды на Форте выбирается любой из предложенных.

Так в том-то и дело, что не выбирается никакое не только из приведенных, но и из подобно реализованных, птому как "оно" Ada - не является.

 

Не понятно,

Если сисстема пройдет регрессионные Aда тесты, то это еще не имеет права называться Aдой?

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

 

P.S. Ничего личного, но вникайте немного поглубже в затрагиваемые вопросы при обсуждении.

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

при программировании встроенных систем. Отсутствие в языке таких возможностей

уменьшает круг решаемых им задач.

 

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

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

Спросите своих коллег известен ли им Форт язык и его возможности и почему так произошло.

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


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

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

Одно из потверждений этому:)

Наработки этого проекта используются в Java машине с названием cacao ( cacaojvm.org )

Используемый GForth для портабельности написан на Cи.

 

http://www.complang.tuwien.ac.at/anton/vmgen/

 

Vmgen interpreter generator

Vmgen supports the construction of interpretive systems by generating the code for executing and dealing with virtual machine (VM) instructions from simple descriptions of the VM instructions.

 

Vmgen generates code for executing VM instructions (with optional tracing), for generating VM code, for disassembling VM code, and for profiling VM instruction sequences. A VM instruction description looks like this:

 

add ( i1 i2 -- i )

i = i1+i2;

 

Vmgen supports several techniques for writing efficient interpreters: virtual machine interpreters, threaded code, combining VM instructions into superinstructions, keeping the top-of-stack in a register, scheduling the dispatch of the next VM instruction, and a couple of minor optimizations. Interpreters created with vmgen usually are faster than competing interpreters and are typically only a factor of 2-10 slower than the code generateed by native-code compilers.

 

Vmgen has special support for stack-based VMs (but it can also be used to advantage when implementing a register-based VM).

 

Vmgen is currently distributed with Gforth (because it needs Gforth to run, and Gforth needs it to build), and is installed together with Gforth (read INSTALL for instructions).

 

P.S. Успехов.

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


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

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

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

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

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

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

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

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

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

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