Атомо — маленький, простой, дико гибкий и выразительный язык. Дизайн языка опирается на Scheme (маленькое простое ядро), Slate (множественная диспетчеризация, ключевые слова), Ruby (дружественность к DSL) и Erlang (message-passing concurrency). Написан на Haskell и использует его рантайм, предоставляя доступ ко всем возможностям и библиотекам Haskell'а через тонкую прослойку. Динамическая типизация, прототипное ОО. Significant whitespace. Сопоставление с образцом. Вызов функций — диспетчеризация/посылка сообщений
То есть язык, вобравщий в себя практически все возможные баззворды и холиварные топики индустрии
Для затравки:
Greeter = Object clone
Greeter new: n :=
Greeter clone do: {
name = n
}
(g: Greeter) say-hi :=
(g name .. ": Hi!") print
(Greeter new: "Alex") say-hi
with-output-to: "out-file" do: {
"Hello, world!" print
}
Но сейчас новая волна — делать языки компилируемые в JavaScript. Типа, Amber (есть даже видео с реальным продуктом на нём).
Обожателей Silverlight должно быть корёжит от такой "нелогичной" тенденции.
Здравствуйте, D. Mon, Вы писали:
DM>Интерпретируемые языки с динамической типизацией не нужны! Тем более с significant whitespace. :crash: {let the holy war begin :) }
Зато посмотри, у него message passing похож на постфиксную нотацию применения функции. Няшечно же!
Здравствуйте, D. Mon, Вы писали:
DM>Интерпретируемые языки с динамической типизацией не нужны! Тем более с significant whitespace. {let the holy war begin }
Это да, согласен. Но на синтаксис посмотреть интересно.
Здравствуйте, Qbit86, Вы писали:
DM>>Интерпретируемые языки с динамической типизацией не нужны! Тем более с significant whitespace. {let the holy war begin }
Q>Зато посмотри, у него message passing похож на постфиксную нотацию применения функции. Няшечно же!
Синтаксически его message passing похож на таковой у Smalltalk (Self, Objective-C etc).
Здравствуйте, Andrei N.Sobchuck, Вы писали:
DM>> {let the holy war begin } ANS>А смысл? JS живее всех живых, а Silverlight издох.
Сдается мне, что там дело не в языках совсем.
Смысл — его нет, конечно. Но я просто негодую, как можно взять хаскель и _настолько_ все испортить, выкинув статическую типизацию и добавив ООП, прототипы и т.п. Ну и кому нужен 43262-й JS/Python/Io? Лучше б что-нибудь хорошее сделали.
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>>Синтаксически его message passing похож на таковой у Smalltalk (Self, Objective-C etc).
Q>В Obj-C получатель идёт вначале, разве нет?
Здравствуйте, D. Mon, Вы писали:
DM>>> {let the holy war begin } ANS>>А смысл? JS живее всех живых, а Silverlight издох. DM>Сдается мне, что там дело не в языках совсем.
А в чем еще? "Среда" с "ран-тайм" у JS совсем же беспросветна. В отличии от.
DM>Смысл — его нет, конечно. Но я просто негодую, как можно взять хаскель и _настолько_ все испортить, выкинув статическую типизацию и добавив ООП, прототипы и т.п. DM>Ну и кому нужен 43262-й JS/Python/Io?
Это да. Но наличие чего-либо не повод не делать альтернативу А если еще и программу на Хаскеле можно будет этим заскриптовать...
DM>Лучше б что-нибудь хорошее сделали.
Делают, что умеют Скрещают концепции, так сказать. Почему бы не написать на Хаскеле? Или он для этого не подходит?
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>>>JS живее всех живых, а Silverlight издох. DM>>Сдается мне, что там дело не в языках совсем. ANS>А в чем еще?
В политике MS, в предоставляемых возможностях, в доступности для пользователя. Это все вещи, не связанные с языком, и намного более существенные. Если б в сервелате был внутри JS, это бы ему не помогло.
DM>>Ну и кому нужен 43262-й JS/Python/Io? ANS>Это да. Но наличие чего-либо не повод не делать альтернативу
Вот пусть и делают альтернатву, а не очередную копию.
ANS> Почему бы не написать на Хаскеле? Или он для этого не подходит?
Я вовсе не против реализации на хаскеле, только за. Но пытаться использовать его библиотеки из динамического ОО-языка — это та еще камасутра, сдается мне. Сила хаскеля в типах и ленивости, а тут...
Здравствуйте, Mamut, Вы писали:
M>http://atomo-lang.org/ M>Атомо — маленький, простой, дико гибкий и выразительный язык.
Похож на IO Language один в один. Даже заглавные странички сайтов как братья — висящие посреди листа бумаги ч/б слова, вводный параграф, список фич, ссылки.
Что-то мне Io больше по душе. Там не нужны significant white space и макросы, блоки кода передаются как параметры метода. Прямо таки LISP с человеческим лицом. Написан на C, можно встроить как скрипт к себе и наслаждаться “myApp windows foreach(wnd, wnd minimize)”. Atomo написан на хаскеле и я не представляю, куда бы я хоть теоретически мог бы его приткнуть.
ANS>>>>JS живее всех живых, а Silverlight издох. DM>>>Сдается мне, что там дело не в языках совсем. ANS>>А в чем еще? DM>В политике MS, в предоставляемых возможностях, в доступности для пользователя. Это все вещи, не связанные с языком, и намного более существенные. Если б в сервелате был внутри JS, это бы ему не помогло.
За политику не знаю, но возможности и доступность пользователю — могли внести свою лепту. Хотя Flash вот был и доступен и возможности имел, а потом сплыл.
Я думаю дело в языке. Не только в том, что динамические языки рулят ;)
. А в гибкости, которая позволила исправить кривость языка и ран-тайма (это я у Крокфорда подслушал, но я полностью согласен).
DM>>>Ну и кому нужен 43262-й JS/Python/Io? ANS>>Это да. Но наличие чего-либо не повод не делать альтернативу DM>Вот пусть и делают альтернатву, а не очередную копию.
Я не защищаю — Atomo меня не интересует. Мне нравится Io (хотя его не использую).
ANS>> Почему бы не написать на Хаскеле? Или он для этого не подходит? DM>Я вовсе не против реализации на хаскеле, только за. DM>Но пытаться использовать его библиотеки из динамического ОО-языка — это та еще камасутра, сдается мне.
Так это ж челендж
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>За политику не знаю, но возможности и доступность пользователю — могли внести свою лепту. Хотя Flash вот был и доступен и возможности имел, а потом сплыл.
Пока еще не совсем сплыл, но проблемы у него те же — не везде доступен (особенно с ростом популярности яблочных устройств без оного) и не имеет нужных возможностей по изменению страницы, ограничен заданным квадратиком, грубо говоря. Плюс масса ограничений по работе с сетью, вызванных ожогами адоби на теме безопасности. А язык-то во флеше изначально был практически JS — ECMAScript, потом эволюционировал в сторону джавы/шарпа — появились статические типы, классы и пр. С ними и скорость улучшилась, и жить стало веселее.
ANS>Я думаю дело в языке. Не только в том, что динамические языки рулят ;)
. А в гибкости, которая позволила исправить кривость языка и ран-тайма (это я у Крокфорда подслушал, но я полностью согласен).
О, какой знатный срач по ссылке, надо перечитать на досуге. В конкретном посте по ссылке не увидел доводов в пользу их руления кроме популярности, но популярность — редко признак качества. Что же до легендарной гибкости, то я еще не видел убедительных примеров, которые нельзя было бы повторить в приличной статической системе типов.
Здравствуйте, D. Mon, Вы писали:
DM> А язык-то во флеше изначально был практически JS — ECMAScript, потом эволюционировал в сторону джавы/шарпа — появились статические типы, классы и пр. С ними и скорость улучшилась, и жить стало веселее.
Тут м.быть и другое объяснение. Пока там был практически JS — популярность росла. А как повелись на нытьё любителей классов и статических типов — так сразу и кирдык.
DM>О, какой знатный срач по ссылке, надо перечитать на досуге.
Хе-хе. Не знаю как это получается, но мне иногда проглядывать старые срачи интереснее, чем что-то свежее обсуждать
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Хе-хе. Не знаю как это получается, но мне иногда проглядывать старые срачи интереснее, чем что-то свежее обсуждать :)
Да, срачи уже не те... (Пойти Луговского перечитать, что ли.)
По поводу конкретно статика vs динамика.
По моим наблюдениям рантайм для динамики сделать всё-таки проще — лукап по хеш-таблице для поиска мембера. А статика требует решения такой нетривиальной задачки, как проверка типов, а лучше их вывод. Это клепать что-то вроде пролога в компиляторе.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Здравствуйте, D. Mon, Вы писали:
DM>> А язык-то во флеше изначально был практически JS — ECMAScript, потом эволюционировал в сторону джавы/шарпа — появились статические типы, классы и пр. С ними и скорость улучшилась, и жить стало веселее.
ANS>Тут м.быть и другое объяснение. Пока там был практически JS — популярность росла. А как повелись на нытьё любителей классов и статических типов — так сразу и кирдык.
Не, просто сейчас в отрасли нефть сама фонтанирует — хоть вёдрами собирай. Но вот начнёт подходить к концу — придётся и инструменты посерьёзнее тащить.