А вот где бы посмотреть на простые (простые — это не окамл с хаскеллом, пожалуйста) скриптовые языки со
статической типизацией? Т.е. что бы тип всех переменных выводится в компайл-тайме. Нужен источник вдохновения.
Что-то все, какие (из простых) знаю навскидку — с динамической типизацией: tcl, js, lua, ...
Интересно, можно ли сделать легковесную (простую в реализации) статическую систему типов.
Делать динамическую типизацию очень сильно не хочется, т.к. крайняя простота компилятора
оборачивается усложнением vm и разрастанием кода и memory footprint — так как информация
о типах и рантайм полиморфизм, в общем, обходятся дороговато.
Здравствуйте, dmz, Вы писали:
dmz>А вот где бы посмотреть на простые (простые — это не окамл с хаскеллом, пожалуйста) скриптовые языки со dmz>статической типизацией? Т.е. что бы тип всех переменных выводится в компайл-тайме. Нужен источник вдохновения.
См.: Boo (http://boo.codehaus.org/).
Sapienti sat!
Re: А вот скриптовые языки со статической типизацией?
dmz>А вот где бы посмотреть на простые (простые — это не окамл с хаскеллом, пожалуйста) скриптовые языки со dmz>статической типизацией? Т.е. что бы тип всех переменных выводится в компайл-тайме. Нужен источник вдохновения.
Здравствуйте, dmz, Вы писали:
dmz>А вот где бы посмотреть на простые (простые — это не окамл с хаскеллом, пожалуйста) скриптовые языки со dmz>статической типизацией? Т.е. что бы тип всех переменных выводится в компайл-тайме. Нужен источник вдохновения.
Basic.
dmz>Что-то все, какие (из простых) знаю навскидку — с динамической типизацией: tcl, js, lua, ...
Это, простите, интерпретаторы. А тебе компилятор нужен.
dmz>>А вот где бы посмотреть на простые (простые — это не окамл с хаскеллом, пожалуйста) скриптовые языки со dmz>>статической типизацией? Т.е. что бы тип всех переменных выводится в компайл-тайме. Нужен источник вдохновения.
M>Basic.
Я так думаю, для изучения его исходники малопригодны.
dmz>>Что-то все, какие (из простых) знаю навскидку — с динамической типизацией: tcl, js, lua, ...
M>Это, простите, интерпретаторы. А тебе компилятор нужен.
lua компилируется.
Re[2]: А вот скриптовые языки со статической типизацией?
Попробую пофтыкать, но что-то мне казалось, что это вообще интерпретатор.
Z>Можно заодно(с Haxe) NekoML посмотреть — но он не сильно проще Caml light. Или http://www.ccs.neu.edu/home/samth/typed-scheme/
Кстати, у меня оно даже валяется, но что-то казалось, что там динамическая типизация. Посмотрел в исходники — и правда статическая.
Re[3]: А вот скриптовые языки со статической типизацией?
Здравствуйте, dmz, Вы писали:
Z>>TAPL! Z>>http://www.cis.upenn.edu/~bcpierce/tapl/
dmz>Заказал, но систему типов придется реализовать до того, как она приедет с амазона
Здравствуйте, dmz, Вы писали:
dmz>>>Что-то все, какие (из простых) знаю навскидку — с динамической типизацией: tcl, js, lua, ...
M>>Это, простите, интерпретаторы. А тебе компилятор нужен.
dmz>lua компилируется.
Разница между современным компилятором и интерпретатором не очень велика. Как правило в интерпретатор встроено некое подобие виртуальной машины. Программа предварительно компилируется в байт-код, а потом исполняется на виртуальной машине. Единственное -- пожалуй только не оптимизируется так подробно как при компиляции. Ибо долго это, а для интерпретатора время запуска программы бывает критичным.
А с какой целью вообще возникла такая потребность, дизайн языка разрабатываете или хотите отдельные вопросы реализации прояснить ?
Re[4]: А вот скриптовые языки со статической типизацией?
J>А с какой целью вообще возникла такая потребность, дизайн языка разрабатываете или хотите отдельные вопросы реализации прояснить ?
Язык есть, надо типизацию прикрутить. Статическую, к сожалению.
Re[5]: А вот скриптовые языки со статической типизацией?
Здравствуйте, dmz, Вы писали:
J>>А с какой целью вообще возникла такая потребность, дизайн языка разрабатываете или хотите отдельные вопросы реализации прояснить ? dmz>Язык есть, надо типизацию прикрутить. Статическую, к сожалению.
Так прикручивай.
Не бывает типизации "вообще".
Она зависит от твоего языка. Если в нём нет структур, наследования, полиморфизма, параметризации типов и пр. — только фиксированный набор типов — это один случай. Если есть структуры — другой. Если есть наследование — третий. Если функции как first class объекты — четвёртый. И так далее.
И в зависимости от твоего языка — тебе и надо искать примеры реализации.
M>Так прикручивай.
Есть мнение, что надо сначала подумать, потом делать. Хотя бы пару дней подумать. Я пока не понимаю, как работает вывод типов, который меня, в общем, устраивает для задачи, вероятно рано или поздно пойму.
M>И в зависимости от твоего языка — тебе и надо искать примеры реализации.
Вот именно этим я и занимаюсь.
Re[7]: А вот скриптовые языки со статической типизацией?
Здравствуйте, dmz, Вы писали:
M>>Так прикручивай. dmz>Есть мнение, что надо сначала подумать, потом делать. Хотя бы пару дней подумать. Я пока не понимаю, как работает вывод типов, который меня, в общем, устраивает для задачи, вероятно рано или поздно пойму.
То есть ты ещё не знаешь, какая тебе нужна типизация.
M>>И в зависимости от твоего языка — тебе и надо искать примеры реализации. dmz>Вот именно этим я и занимаюсь.
M>То есть ты ещё не знаешь, какая тебе нужна типизация.
Боюсь, что знаю. Вообще, тут линк на умный книжка публиковали, если что.
И короче, этот топик не обсуждение моей скромной персоны. Линки, которых сюда бросили — очень помогли, тот же Neko.
Я к тому, что места для флейма тут нет.
Re[7]: А вот скриптовые языки со статической типизацией?
M>>Так прикручивай. dmz>Есть мнение, что надо сначала подумать, потом делать. Хотя бы пару дней подумать. Я пока не понимаю, как работает вывод типов, который меня, в общем, устраивает для задачи, вероятно рано или поздно пойму.
Полный вывод типов работает для довольно узких классов систем типов (и языков). Выше дали ссылку на Пирса, 22 глава, Type Reconstruction, как раз описывает самый знаменитый алгоритм вывода типов, Хиндли-Милнера. Правда это как раз и есть то, что используют и Хаскелл, и ML
Re[8]: А вот скриптовые языки со статической типизацией?
D>>Правда это как раз и есть то, что используют и Хаскелл, и ML dmz>Боюсь, что так.
Беда (или счастье, это как посмотреть) в том, что полиморфизм — абсолютно естественная вещь:
function id ( x )
{
return x;
}
(язык условный). Эта функция полиморфна истинным (параметрическим) полиморфизмом. Тип x — под квантором всеобщности, если хочется вывода типов, никуда не деться.
Re: А вот скриптовые языки со статической типизацией?
dmz пишет:
> А вот где бы посмотреть на *простые* (простые — это не окамл с > хаскеллом, пожалуйста) скриптовые языки со > статической типизацией? Т.е. что бы тип всех переменных выводится в