Ada_Ru форум

Обсуждение языка Ада

Какое подмножество

Оставить новое сообщение

Сообщения

Иван Леваше
Какое подмножество
2013-01-19 07:51:29
Alexey Veselovsky пишет:

>> Я поищу и пришлю на ваш адрес. Кстати, с его помощью, я очень
>> быстро переписал программы PL/I MF на PC DOS. Ессть ещё два
>> транслятора с АДА Janus Ada compiler was recently validated. Alsys
>> compiler validated
>> 
> 
> Я надеюсь что эти компиляторы где-то есть в исходниках, иначе особого
> смысла, не имеет.

Ada/Ed: https://github.com/daveshields/AdaEd
SparForte/BUSH: http://www.pegasoft.ca/sparforte.html
Gela: http://forge.ada-ru.org/gela

Вопрос интересный и не праздный, попытаюсь поддержать дискуссию.

До некоторой степени мне нравится тот уровень абстракции, который 
позволяет строить Ада. Скажем, в Delphi надо всем показать каждый тип, 
который используется в protected и private.

Система типов, включающая subtypes — подмножества базовых типов, при 
промежуточных вычислениях в которых результаты могут выходить за рамки 
subtype, но должны оставаться в рамках type. А также концепция views в 
системе типов, реализованная type ... is new для не–tagged типов. Не 
меняя содержимое, меняем взгляд.

Чёткое соответствие модуль–файл. А не так, что каждый пишет в любое 
понравившееся пространство имён, а потом разберись, откуда что пришло.

Прозрачная перегрузка (даже слова такого нет, как overload) между 
модулями. Поиск соответствия не только по типам аргументов, но и по типу 
результата. Правда, именно в Аде этим пользоваться тяжело. Если я 
изобретаю Boolean_32, чтобы он всячески выглядел как Boolean, логично 
перегрузить по аргументам "&", чтоб всякие комбинации Boolean_32 
принимал. Однако, стоит только начать перегружать по результатам, как 
обе этих перегрузки переклинит из–за неоднозначностей, и использование, 
наоборот, станет исключительно неудобным.

Неплохая поддержка низкоуровневых типов, таких, как массивы, особенно, 
неопределённой длины.

Хорошая работа со значениями, а не со ссылками. in out аргументы, 
reference-counted строки. Наверное, даже можно сделать что–то типа Euphoria

Про рандеву не буду упоминать, спорный сиюминутный вопрос. 56ядерные 
Xeon Phi в каждой квартире не скоро появятся, а миллион или хотя бы 
тысячу соединений держать хочется, и желательно без миллиона или тысячи 
потоков. libevent, libdispatch — всё к этому идёт, а нативные потоки — 
это от недостатка асинхронных версий библиотек. Software Transaction 
Memory — тоже интересное направление, поддерживается Intel.



Ближе к теме, так или иначе сейчас есть потребность компиляции в 
JavaScript. При всём похвальном разнообразии платформ, куда была 
портирована Ада, всё равно не хватает И это не только MIPS на роутерах, 
но и такие платформы, как Flash. Java вернулась в GNAT поздно для web, 
ну тут и так понятно, что мы на подножках чужого поезда. Пока не 
попросит толстый клиент компиляцию в SWF и JavaScript, в GNAT их не 
появится.

Зато есть haXe, и некоторые другие языки, компилируемые в JS.

В JavaScript компилировать можно по–разному. Событийная модель браузеров 
устроена так, что управление надо рано или поздно возвращать бразуеру. В 
принципе, почему бы и нет, но что хуже всего, этот нюанс непрозрачен с 
точки зрения JavaScript. При этом в JavaScript нет продолжений. И много 
чего другого нет, типа бектрейсов, что автоматически сгенеренный код мог 
бы компенсировать. В автоматически сгенеренном коде можно считать 
условно потраченное время и по истечении лимита выбрасывать специальный 
exception, который, пролетая через все вызовы, аккумулирует стек 
продолжений, который потом можно будет размотать и продолжить.



Я далёк от роботехники и embedded, зато я вижу, как с нуля поднимаются 
языки, наплевав на отсутствие биндингов, за счёт обслуживания 
потребностей web: web–сервер, желательно, асинхронный, на 100500 
соединений, желательно, с WebSockets и прочим Comet, либо и вовсе 
компиляция в JavaScript. И это очень эффектно. От взгляда на язык 
отделяет один клик.

-- 
If you want to get to the top, you have to start at the bottom
Alexey Veselovsky
Re: [ada_ru] Какое подмножество
2013-01-19 14:53:34
Про компиляцию в js: если бы у Ады был бекенд для llvm, то можно было бы
воспользоваться Emscripten: https://github.com/kripken/emscripten/wiki


2013/1/19 Иван Левашев <[email protected]>
Иван Леваше
Re: [ada_ru] Какое подмножество
2013-01-19 17:07:58
Alexey Veselovsky пишет:
> Про компиляцию в js: если бы у Ады был бекенд для llvm, то можно было бы
> воспользоваться Emscripten: https://github.com/kripken/emscripten/wiki

Здорово. Наконец–то C задвинули туда, где ему и место.

Я имел в виду что–нибудь типа:
p2js: http://habrahabr.ru/post/137336/
DelphiWebScript: http://delphitools.info/dwscript/

То есть, что–нибудь без lax virtual machine

-- 
If you want to get to the top, you have to start at the bottom
Иван Леваше
Re: [ada_ru] Какое подмножество
2013-01-19 17:45:07
Alexey Veselovsky пишет:
> Про компиляцию в js: если бы у Ады был бекенд для llvm, то можно было бы
> воспользоваться Emscripten: https://github.com/kripken/emscripten/wiki
> 

Попробовал разные примеры. Как–то через раз работает. Интерпретатор Lua 
работает, и даже Skywriter работает. На c9.io не работает, Firefox 4 им, 
видишь ли, подавай, а у этих и на FF3 работает. Руки из правильного места.

Что–то посложнее, js.js не работает. Int32Array not defined. Нахимичат и 
сидят, даже не знают, что у них сайты не работают. Так не годится. Не 
хочу быть в их числе. Поэтому решениям типа p4js и haXe я больше доверяю.

-- 
If you want to get to the top, you have to start at the bottom
Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти