Что выбрать для серверов.
От: Катберт  
Дата: 23.07.10 11:30
Оценка:
Здравствуйте.

Такая вот история. Сам я .NET-чик, но в последнее время у меня от этой платформы начинают появлятся рвотные рефлексы. Не буду рассказывать почему да как — скажем просто "надоело". Захотелось чего-то другого и стал я выбирать "а чего бы мне попробовать". Причем так, чтобы подальше от Microsoft, который мне тоже ужасно надоел.

Если говорить о языках/платформах, то вот что заинтересовало:
1. Erlang
2. Scala
3. OCaml

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

Наверное меня спросят о том, где я бы хотел их использовать. Это различные серверные приложения (ММОРПГ, CCTV, аналитика и т.п.) с высокой нагрузкой. Нагрузка как со стороны количества пользователей, так и с точки зрения обработки и анализа данных.
Re: Что выбрать для серверов.
От: Temoto  
Дата: 23.07.10 12:09
Оценка: +1
К>Такая вот история. Сам я .NET-чик, но в последнее время у меня от этой платформы начинают появлятся рвотные рефлексы. Не буду рассказывать почему да как — скажем просто "надоело". Захотелось чего-то другого и стал я выбирать "а чего бы мне попробовать". Причем так, чтобы подальше от Microsoft, который мне тоже ужасно надоел.

К>Если говорить о языках/платформах, то вот что заинтересовало:

К>1. Erlang
К>2. Scala
К>3. OCaml

К>Поскольку в этом я пока чайник, не могли бы вы объяснить мне плюсы и минусы этих языков с практической точки зрения. Какие могут ожидать проблемы, в чём плюсы, в чём минусы.


К>Наверное меня спросят о том, где я бы хотел их использовать. Это различные серверные приложения (ММОРПГ, CCTV, аналитика и т.п.) с высокой нагрузкой. Нагрузка как со стороны количества пользователей, так и с точки зрения обработки и анализа данных.


Пятничное трололо

Скажу что вас ожидает в эрланге.
1. Пол дня рвоты от синтаксиса. Потом проходит и всё нормально.
2. Из-за single assignment и имутабельности — немного рвоты от бреда типа S1 = f(S), S2 = process(S1), S3 = tootoo(S2). Зато очень хорошо читается и появляется чувство, что ты хорошо понимаешь код, знаешь где что происходит.
3. Внимательное изучение man erl (а это немаленький документ). Потому что без этого ещё сложнее.
4. Сообщения об ошибок "для пытливых умов", типа "модуль такой-то, функция такая-то. Undef." Что-то где-то неопределено. Угадай-ка.
5. Запускать поток на каждый чих поначалу интересно и приятно.
Лично у меня были сложности с поиском "с чего начать решать эту проблему", "как/из чего построить приложение" (ну там OTP всякие).

В качестве голосования, очень советую попробовать недельку эрланг и окамл. Не сдаваясь идти от одних граблей к другим, чтоб составить своё индивидуальное мнение об этих инструментах.
Re: Что выбрать для серверов.
От: FR  
Дата: 23.07.10 12:22
Оценка:
Здравствуйте, Катберт, Вы писали:

У OCaml плюсы хороший выразительный язык в котором вполне удобно использовать как функциональное так и императивное
программирование. ООП не совсем мейнстримный, но в принципе вполне органично вписан в язык. Еще один плюс Camlp4.

Из минусов самый главный нет поддержки SMP, так как GC однопоточный, это обходится или легкими потоками или
распараллеливанием с помощью процессов. Еще минус то, что (опять виноват GC использующий теги) типы данных
имеют на один бит меньше чем позволяет процессор, например для x86 int не 32 а 31 бит. Хотя тот же GC хоть
и однопоточный, но весьма шустрый и достаточно гибко настраиваемый.

Для web есть один большой фреймворк http://ocsigen.org/
Re: Что выбрать для серверов.
От: Mamut Швеция http://dmitriid.com
Дата: 23.07.10 14:05
Оценка:
Здравствуйте, Катберт, Вы писали:

К>Здравствуйте.


К>Такая вот история. Сам я .NET-чик, но в последнее время у меня от этой платформы начинают появлятся рвотные рефлексы. Не буду рассказывать почему да как — скажем просто "надоело". Захотелось чего-то другого и стал я выбирать "а чего бы мне попробовать". Причем так, чтобы подальше от Microsoft, который мне тоже ужасно надоел.


К>Если говорить о языках/платформах, то вот что заинтересовало:

К>1. Erlang
К>2. Scala
К>3. OCaml

К>Поскольку в этом я пока чайник, не могли бы вы объяснить мне плюсы и минусы этих языков с практической точки зрения. Какие могут ожидать проблемы, в чём плюсы, в чём минусы.


К>Наверное меня спросят о том, где я бы хотел их использовать. Это различные серверные приложения (ММОРПГ, CCTV, аналитика и т.п.) с высокой нагрузкой. Нагрузка как со стороны количества пользователей, так и с точки зрения обработки и анализа данных.


Я люблю Erlang Я бы посоветовал Webmachine, потому что этот фреймворк позволяет писать полноценные и правильные RESTful веб-сайты/сервисы сразу, и не напрягаясь.

Одно но — наскоком ее взять не удастся. Особенно если захочется понять, как оно работает.

Erlang учится с нуля до комфортабельной работы за 2 недели. Это подтверждается различными отчетами и презентациями. Из последнего — презентация Льва Валкина из JSKit/Echo (тоже сверхвысоконагруженный сервис, используют Erlang и OCaml).


dmitriid.comGitHubLinkedIn
Re: Что выбрать для серверов.
От: BulatZiganshin  
Дата: 23.07.10 15:30
Оценка:
Здравствуйте, Катберт, Вы писали:

К>Наверное меня спросят о том, где я бы хотел их использовать. Это различные серверные приложения (ММОРПГ, CCTV, аналитика и т.п.) с высокой нагрузкой. Нагрузка как со стороны количества пользователей, так и с точки зрения обработки и анализа данных.


работы на фп языках в москве сейчас нет. так что учить их можно только в расчёте на везение или для общего развития
Люди, я люблю вас! Будьте бдительны!!!
Re: Что выбрать для серверов.
От: DmitryMe  
Дата: 24.07.10 11:54
Оценка:
Здравствуйте, Катберт, Вы писали:

Erlang для серверов самое то.
1. Есть готовый фрамеворк OTP, который если допилить напильником очень даже комильфо.
2. Хорошо маштабируется.
3. MPI
4. Язык очень простой — 2 недели на освоение. Минусы: после императивщины будет ломка, потом нормально
5. Трудозатраты на программирование меньше чем на майнстим C++/Java и т.д. . В размере кода я бы оценил от 1:2 до 1:10.
6. FFI: NIFs, ports
Re[2]: Что выбрать для серверов.
От: cadet354 Россия
Дата: 28.07.10 13:01
Оценка:
Здравствуйте, Temoto, Вы писали:

предисловие: сам дотнетчик

T>Скажу что вас ожидает в эрланге.

T>1. Пол дня рвоты от синтаксиса. Потом проходит и всё нормально.
у меня такого не было
T>2. Из-за single assignment и имутабельности — немного рвоты от бреда типа S1 = f(S), S2 = process(S1), S3 = tootoo(S2). Зато очень хорошо читается и появляется чувство, что ты хорошо понимаешь код, знаешь где что происходит.
+1
T>3. Внимательное изучение man erl (а это немаленький документ). Потому что без этого ещё сложнее.
под виндой этого нет,но есть html документация
T>4. Сообщения об ошибок "для пытливых умов", типа "модуль такой-то, функция такая-то. Undef." Что-то где-то неопределено. Угадай-ка.
+1 есть такое, но в качестве плюса по сообщению можно увидеть из-за чего упало приложение (аргументы функции), отладка значительно упрощается.
T>5. Запускать поток на каждый чих поначалу интересно и приятно.
T>Лично у меня были сложности с поиском "с чего начать решать эту проблему", "как/из чего построить приложение" (ну там OTP всякие).
+1 сейчас хоть есть книги, два года назад стартовать было б сложнее.
что еще может вызвать рвоту: хреновую (оригинальную ) работу со строками, настройку и работу в emacs (после VS), закат солнца вручную при работе с mnesia (по сравнению с MSSQL).

для себя сделал вывод следующий: был бы аналог OTP в .NET+нормальная обработка ошибок в дочерних потоках (аналог linked processes) наверное и не использовал бы эрланг т.к. тысячи конкуретных потоков в задачах которые мне приходятся решать не помогут.
Эрланг у меня нашел применение в критически важных подсистемах, которые общаются с миром .net по средством веб-сервисов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.