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

Про компиляцию в js: если бы у Ады был бекенд для llvm, то можно было бы воспользоваться Emscripten: https://github.com/kripken/emscripten/wiki

 

2013/1/19 Иван Левашев <octagram@bluebottle.com>

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

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

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