Friday, December 14, 2007

Erlang @ Amazon

А между тем замечательный язык erlang действительно напрашивается на то чтоб стать next big thing в веб-приложениях. Последнее время все больше и больше интересных новостей из этой области — особенно тут отличился Amazon.

Однако ж обо всем по порядку.

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

Первой ласточкой был EC2 — нечто, крайне напоминающее обычный VPS хостинг — амазон предоставляет вам в пользование виртуальные машины с операционной системой на выбор, однако деньги берет не помесячно, а за машино-часы и переданные гигабайты (от $0.10 до $0.80 за машино-час, плюс $0.10-$0.20 за переданный гигабайт).

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

Таким образом за приемлемые деньги можно получить небольшой (или большой) кластер из виртуальных машин.

Народ сразу оживился — действительно, EC2 и распределенный erlang будто созданы друг для друга. Можно запускать сколько нужно нодов на нужном количестве инстансов EC2, при этом не заморачиваясь никакими оргвопросами связанными с покупкой и администрированием настоящих серверов.

Второе — это S3, сервис по хранению данных. Деньги амазон берет за количество запросов + гигабайты в месяц, без всяких фиксированных тарифных планов.

И теперь амазон объявляет о запуске еще одного сервиса под названием SimpleDb — и все встает на свои места.

Это база данных, однако больше всего она похожа на большой excel-евский spreadsheet:

  • данные организуются в таблицы (которые называются доменами), 
  • никаких сложных запросов, но работает, говорят крайне быстро -- чуть ли не реалтайм;
  • в одной ячейке можно хранить несколько значений (как список или кортеж)
  • никаких типов у хранимых данных нет
  • таблицы распределены по многим серверам

Если кто читал про ерланговскую родную базу данных mnesia, сразу увидит много знакомых фраз. Точнее, практически все эти фичи есть и у mnesia.

Вкупе с распределенным подходом в EC2 это начинает казаться не случайным совпадением — похоже, в амазоне появилась ячейка любителей ерланга.

И действительно, в блоге амазоновского разработчика находим подтверждение: SimpleDb построена на erlang!

Если SimpleDb будет популярна — а предпосылки для этого есть (это ж Amazon) — это будет самый убийственный пример применения erlang в боевых условиях.

Да и просто факт, что уже доступна отличная и недорогая платформа для хостинга эрланговских приложений — уже очень хорошая новость.


Tuesday, November 27, 2007

Erlang Job

Для тех, кто не читает форумы рсдн (что, конечно, идеологически правильно): cовершенно неожиданно оказалось что Joel Reymont (чувак с покером на эрланге) родился в Санкт-Петербурге и отлично говорит по-русски. И вообще треть жизни прожил тут.

Оказалось это в связи с тем, что Джоель сейчас ищет программистов на Erlang и OCaml (пока part-time). На сайте у него говорится про разработку бэкенда для того самого OpenPoker, но из треда на рсдне видно что планы у него намного глобальнее.

Так как это уже не первое предложение работы на erlang на русском языке за последнее время, уже очень хочется это назвать тенденцией.


Thursday, November 08, 2007

Угадайка

Как думаете, какой язык поддерживает сразу

  • First-class функции, лямбды и замыкания;
  • параметризованные типы;
  • хвостовые вызовы;
  • array comprehensions;
  • ООП с классами и интерфейсами;
  • ООП на основе прототипов;
  • мультиметоды;
  • coroutines (оператор yield);
  • структурные и номинальные подтипы;
  • перегрузку операторов;
  • Nullable/Non nullable аттрибуты для всех типов.

Ну и по мелочи: for-each, array slicing а-ля питон, регулярные выражения, открытые пространства имен и пр.

Однако ж это все ожидается в чудесном новом Javascript ECMAScript 4!

Еще  одна из самых интересных возможностей в четвертой версии — опциональная статическая проверка типов. Это должно упростить написание сложных систем (засчет строго описанных интерфейсов), и помочь [jit] компиляторам иногда генерировать более эффективный код. Опциональные статические типы, похоже, становятся модными: в Python 3000 тоже не так давно добавили что-то похожее.

Четвертая версия пока получается довольно пестрой — появилась куча новых механизмов и языковых конструкций (см. выше), а совместимость с предыдущей версией надо, по возможности, сохранить — поэтому синтаксис местами получился довольно странный: скажем, [int] это массив целых чисел, а [int, string] — это уже кортеж из целого и строки.

Еще из забавных вещей — явная поддержка структурных типов. В частности, с помощью специального оператора like можно задать переменной структурный тип (то есть ей можно присвоить только объект, обладающий набором заданных свойств):

> var foo : like {x : int, y : int};

А переменная, объявленная с ключевым словом wrap автоматически дополняет хранимый в ней объект нужными свойствами:

var bar : wrap foo { x : int, y : int} = {x : 10, y : 20}.

Может и не революционная фича, конечно, но выглядит крайне интересно.

В ECMAScript 4 обещают также обязательную оптимизацию хвостовых вызовов. В Python 3000 их точно не будет, с руби ситуация туманна —что делает ES4 лучшим выбором в качестве платформы для компиляторов с функциональных языков. В общем-то уже сейчас есть компиляторы, как минимум, OCaml, SML и Haskell, генерирующие код на ECMASCript 3.

Собственно мощь и текущей-то версии js во многом недооценена. Кстати, только я не знал, что автор один из авторов первой версии Javascript — Гай Стил мл., а в качестве основных источников вдохновения при разработке Javascript 3 авторы называют языки Scheme и Self?

Новый Javascript явно претендует на что-то большее. Если он действительно будет "принят на вооружение" — определенно можно ожидать появления изрядного количества серверных приложений и фреймворков на js. Во всяком случае, язык получился явно не слабее питона и руби — хотя, конечно, вряд ли средства интеграции с кодом на C и C++ будут тут столь же развиты, ниша у языка все-таки другая.

Ссылки:


Thursday, October 25, 2007

Пятиминутка ненависти к C++

..на этот раз не моя, однако почитать другим пострадавшим будет довольно забавно. Автор — yousefk, видимо, годами записывал в книжечку все подлянки, которые ему устраивал C++, и в результате у него получился вот такой весьма объемный документ.

Называется это C++ Frequently Questioned Answers, и проезжается он практически по всем сколько-нибудь заметным фичам C++.

За основу взят широко известный C++ FAQ Lite, дополненный "альтернативными" ответами в среднеиздевательском тоне — то есть автор, к счастью, не совсем сваливается в непрерывное брюзжание (как я иногда), что сделало бы такой огромный труд невыносимо скучным.

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


Monday, October 08, 2007

Эзотерические языки - самый полный список

..найден на вики-сайте канала #esolangs в irc-сети freenode.

За ссылку спасибо жж сообществу ru_brainfucker.

Языков там какое-то дикое количество, а особенно выдающимся создателем странных языков оказался некто Дэвид Морган-Мар, очевидно, тру программист. В числе его творений:

  • язык Petrovich (назван в честь И.П. Павлова), основанный на концепции наград и наказаний и выработки у программы нужных "условных рефлексов" :

Petrovich> do something
11:15:23 11 June 2005
Petrovich> reward
Petrovich>

  • язык Haifu, где программы выглядят как хокку
  • язык Piet, исходники выглядят как абстракционистские произведения живописи:

Это собственно программа на Piet, печатающая первые сто чисел Фибоначчи.

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


Monday, September 24, 2007

Ссылки: Erlang for .NET, Python 3000 и все все все

Вернувшись из отпуска, продолжаю разгребать залежи непрочитанных RSS. Разобраться со всем подробно некогда, поэтому получился небольшой дайджест:

  • Некий товарищ тут вот собирается писать erlang для .NET, при этом подробно комментируя процесс в блоге. Не знаю надолго ли его хватит (блогу всего неделя), но начало интригующее. Например пост про внутренности виртуальной машины эрланга — BEAM. У эрланга вообще всплеск популярности, вон даже у O'Reilly в ONLamp появилось небольшое введение в Erlang. И еще вот неплохое интервью про практическое применение Erlang некими австралийцами.

  • Гвидо ван Россум и Брюс Эккель в своих блогах интересно спорят о Python 3.0, многопоточности в питоне и возможности/невозможности убрать из питона Global Interpreter Lock, вот ссылки на последние посты про питон 3.0 и про GIL (на первые посты ссылки давать бессмысленно, поскольку они там в форме "мой ответ на этот ответ Гвидо на мой пост...")

  • Двигаясь в сторону теоретических основ — отличный пост про связь между замыканиями (в смысле closures) и ООП, с иллюстрациями на Scheme.

  • Плюс, на youtube добрые люди начали делать видеолекции по всяким интересным темам из области теории категорий. В частности, серия лекций про монады и про сопряженные функторы.

  • Ну и в заключение опять немножко суровых практических вещей: интересная библиотека для генерации парсеров бинарных протоколов, "binpac: A yacc for Writing Application Protocol Parsers": Юзер гайд, whitepaper[PDF].