среда, 13 октября 2010 г.

[prog.flame] В LinkedIn Signal используются Scala и JRuby

В конце сентября в статусе бета-версии запустился новый сервис LinkedId – LinkedIn Signal. Насколько я могу судить, это что-то вроде очередной социальной сети, на этот раз вокруг LinkedIn.

11 октября на InfoQ.com опубликовали небольшой рассказ об архитектуре LinkedIn Signal и ответы ключевых разработчиков этого сервиса на вопросы InfoQ. Может быть, кому-то будет это интересно. Мне же понравились примеры кода на Scalatra – вэб-фреймворке для Scala (оказывается, не Lift-ом единым…). Не часто увидишь к месту использованную родную поддержку XML-я в языке Scala:

package org.scalatra

class ScalatraExample extends ScalatraServlet {

  // send a text/html content type back each time
  before {
    contentType = "text/html"
  }

  // parse matching requests, saving things prefixed with ':' as params
  get("/date/:year/:month/:day") {
    <ul>
      <li>Year: {params("year")}</li>
      <li>Month: {params("month")}</li>
      <li>Day: {params("day")}</li>
    </ul>
  }

Но больше всего меня вставила вот эта фраза от одного из разработчиков (это Chris Conrad рассказывал о своих впечатлениях от Scala):

Regarding pitfalls, I think that the most common has to do with the mixed object oriented/functional nature of Scala.  Programmers will need to spend the time and learn when to model the program using objects and when to model their program using functions and how to mix the two together.  Personally, while writing Norbert, I had to go back and revisit some pieces of code multiple times as I became more comfortable with using Scala.

Что в моем вольном переводе (с помощью ув.тов.alexey-rom) звучит как:

Если касаться проблем, то я думаю, чаще всего они связаны со смешанной объектно-ориентированной/функциональной природой Scala. Программистам приходится приходится тратить время на то, чтобы учиться определять, когда программы нужно строить посредством объектов, а когда посредством функций, и как все это смешивать друг с другом. Лично я, когда писал Norbert, был вынужден возвращаться назад и переделывать куски кода по несколько раз по мере того, как я все больше привыкал к Scala.

По началу для меня, как для замшелого C++ника, такое высказывание было диким. С++никам же постоянно приходится выбирать – ООП ли использовать, обычное процедурное программирование, обобщенное программирование или еще что-то. Что в этом сложного? ;)

А потом вспомнилось, что на Scala переходят Java-исты, которые измучены нарзаном были воспитаны дятлами чистым и ущербным Java ООП. У них же кроме классов и интерфейсов ничего не было. И, более того, многим именно это и нравилось. А тут на тебе! И функции, и объекты, и трайты, и паттерн-матчинг… Конечно, так сразу все это счастье не переживешь :)

8 комментариев:

Golovach Ivan комментирует...
Этот комментарий был удален автором.
Golovach Ivan комментирует...

Скажите, как по-Вашему, если в блоге, который я постоянно читаю, меня автор называет "воспитаным дятлами", мне стоит бросить его читать?
Ведь, судя по всему:
1) автор не уважает меня;
2) автор в принципе крайне невоспитанный человек.

Qrilka комментирует...

по поводу "не лифтом" - http://www.circumflex.ru/

eao197 комментирует...

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

Так что скажу, что я в принципе не очень воспитанный человек.

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

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

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

Дальше решать вам.

eao197 комментирует...

@Qrillka: спасибо за ссылку. Действительно, впечатляет, что для Scala есть не только Lift.

Rustam комментирует...

Да Scala мужает :)

Насчет использования ООП, вот в OCaml ситуация похоже обратная, очень мало используют классы и объекты, а сейчас с появлением первоклассных модулей и explicit polymorphic type совсем могут перестать :)
Притом самое смешное что дизайн во многих больших программах явно ОО, но использующий не классы а ML модули.

Анонимный комментирует...

Пара небольших поправок к переводу (на мой вкус):

"наиболее общей является необходимость иметь дело со" -> "чаще всего они связаны со"; "приходится тратить время и учиться определять" -> "приходится тратить время на то, чтобы учиться определять"

eao197 комментирует...

@alexey-rom: вы правы, так будет лучше. Внес изменения.