воскресенье, 1 июня 2008 г.

Erlang - software for a concurrent world. Joe Armstrong.

Erlang is a concurrent functional programming language designed for programming fault-tolerant systems. With share-nothing semantics and pure message passing, Erlang programs scales on multicore computers. In this talk, Joe introduces Erlang, the ideas of Concurrent Oriented Programming and commercial applications written in Erlang.


В первой двадцатиминутке можно почерпнуть информацию об общих проблемах параллельных вычислений и о возможных путях их решений. Обратите внимание, что все эти проблемы двояко касаются, как командных (ява, с++) языков так и логических (ерланг). Армстронг явно делает упор на то, что в ерланге все предусмотрено для наиболее удобной разработки программ для мульти ядер. И основной упор делается на отсутствие в языке локов, так как среда не содержит общей памяти. Из за чего в первый момент может показаться что процессы ерланг не обмениваются данными вообще! Но на самом деле все гораздо трагичнее для ерланг, таких мест аж целых два: первое Process Dictionary, второе - это база данных мнеса. То есть аргумент используемый автором просто пустой звук, скрывающий реальность за красивыми терминами параллельных вычислений. Так же, обратите что на протяжении всего выступления идет игра словами, когда нам это выгодно мы разделяем понятия OTP и Erlang, представляя среду как мультипоточную и хвастаемся какой у нас хороший язык хотя на самом деле подразумеваем, что параллелизм в самом эраланге отсутствует. В других же случаях идет объединение обоих терминов точнее говоря библиотек и самого языка и громкое заявление Erlang - язык для мульти вычислений!

Два вопроса, на которые я не буду отвечать: Как может быть удобным язык без среды разработки? Или синтаксис, который требует дополнительных усилий для реализации привычных конструкций (об этом я уже писал).

Теперь следуя критериям автора выступления можно написать набор правил при написание кода для того же С++, в результате мы получим мощнейший набор синтаксических конструкций, шаблоны, объекты унаследованные от С++ и мощь параллельных вычислений и механизмов пропагандируемых Армстронгом.

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

Простой пример ералнг процесса на С++. Соблюдая терминологию ераланг, где процесс таковым не является. Хочу так же обратить на этот момент больше внимания, используя терминологию ерланг мы можем услышать маркетинговый лозугн о том, что создать 1 000 000 процессов за считанные секунды и убить их в эрланге это элементарно. Теперь используя привычные, не разрекламированные термины скажем тоже самое: мы можем создать 1 000 000 объектов за считанные секунды и убить их.

class MnesiaInterface
{
  void Update();
};

class MyErlangProcess: ProcessDictionary
{
  // avoid class variable members, except ProcessDictionary values
  int mul2(int num)
  {
     int num2 = num * 2;
     return num2;
  }
}; 

Я ничего не имею против лекций этого образованного и умного человека, слушайте, смотрите, читайте его книги, но не пишите на ерланг!

0 коммент.:

Отправить комментарий