Пользователь
0,0
рейтинг
2 января 2012 в 02:11

Разработка → Scala хуже, чем Java. Как минимум, для половины Java проектов перевод

JAVA*
Итак, в своем посте (прим.пер. Да, Вирджиния, Scala сложна!) я согласился с тем, что Scala слишком сложна для большей части Java разработчиков. Тот пост вызвал немало дискуссий, большая часть которых исказила его смысл. Теперь я пишу снова, надеясь пояснить, о чем я, собственно, говорил и зачем мне все это нужно.

Но сначала обо мне. Меня зовут Дэвид Поллак. Я активный участник Scala сообщества с ноября 2006 года. Являюсь основателем проекта Lift.
Еще несколько важных моментов, о которых стоит упомянуть:
  • Я пишу Scala код непрерывно в течение большего времени, чем кто-либо за пределами EPFL (прим.пер. Scala разрабатывается в Лозаннском Политехе). [Обновление — @propensive и Билл Веннерс участвуют Scala комьюнити дольше, чем я.]
  • Я организовал первую конференцию по Scala в 2008 году, Scala Lift Off, и продолжаю проводить её по сегодняшний день.
  • Написал больше строк кода на Scala (более 250K), чем кто-либо на планете.
  • Написал популярную книгу, введение в Scala: Beginning Scala.
  • В течение последних пяти лет я писал более 10,000 раз на форумах Scala и Lift, на темы непосредственно относящиеся к Scala и Lift (это говорит о том, что я общался с огромным количеством разработчиков).
  • Я основал проект Lift web framework и написал значительную его часть, включая проектирование core API. Lift — это один из самых популярных framework'ов, основанных на Scala и первая широко известная Scala библиотека.
  • Сделал ревью более полумиллиона строк кода на Scala за последний год.
  • Я зарабатываю на жизнь консультированием, в основном для Scala и Lift, и, таким образом, активно участвую во множестве проектов.
  • Провел более 25 презентаций о Scala и Lift за последние 5 лет.
  • Обучал сотни людей тому, как использовать Scala и Lift в небольших командах.
  • Представлял Scala, прямо или косвенно, более, чем половине потребителей, которые перечислены на главной странице TypeSafe (прим.пер. Xerox, Siemens, Sony и другие киты).

Всё вышесказанное можно просуммировать: «У меня есть значительный опыт кодирования на Scala, преподавания Scala и презентации Scala самым разным людям и организациям. Я общался с достаточным количеством людей использующих Scala или собирающихся это делать, чтобы накопить большой объем данных для анализа факторов успеха Scala». Это не означает, что я считаю, что я прав, а все остальные неправы. Но это, тем ни менее, говорит о том, что люди, которые используют риторику с переходом на личности в качестве аргумента — не имеют веса в этой дискуссии. [Обновление: перечитав поста fogus'а… Я неправильно его понял. Думаю, fogus и я пришли к одинаковым выводам. Я остаюсь при своем мнении, не объявляя его истиной в последней инстанции. Тем ни менее, прошу прощения за жесткость к fogus'у и его посту!]

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

Это утверждение не более спорно, чем:
  • Java — неподходящий язык для большинства PHP разработчиков и не может рассматриваться как замена PHP, поскольку, как минимум, для половины PHP разработчиков сложность Java перечеркивает её достоинства.

Хотя я сказал «Scala трудна для некоторых разработчиков» в своем предыдущем посте, я буду намного более конкретным в этот раз. Я не говорю, что я считаю Scala сложной. Однако, я вижу множество разработчиков, для которых Scala сложна и изложил свои рассуждения здесь и здесь. Для этого класса разработчиков, затраты на Scala перевешивают её преимущества.

Обсуждение

Одна из вещей, в которых я особенно слаб, — правописание. Мой мозг просто не запоминает написание слов. Когда я был редактором студенческой газеты, одна из журналистов бросила мне в лицо фразу о том, что только ленивый не знает правописания (это был 1985 год… до spell checkers). Я написал на меловой доске интеграл (это было до белых досок) и попросил решить его. Она сказала: «Это математика… это сложно… А я говорю о такой простой вещи как правописание ». Ну, что касается меня, я могу решать интегралы во сне, и я не смогу правильно написать слово даже если от этого будет зависеть моя жизнь. У разных людей — разные навыки.

Разные люди ценят разные вещи. Существует целый класс людей, которые любят компьютеры и любят писать код. Я среди них. И существует класс людей, которые не поставили бы программирование в топ-5 своих любимых занятий.

Есть множество программистов, выбравших карьеру в сфере разработки программного обеспечения, но не имеющих некой комбинации врожденных способностей и желания. Существуют школы, которые развивают эти способности и дают мотивацию. Но никакой блоггинг и хвастовство не могут этого изменить.
Для тех, кому не хватает врожденных способностей к кодингу и интереса к личностному росту, Scala обременительна. И если слишком много такого бремени на Scala окажется вокруг (читай — провальных Scala проектов), Scala перестанет расти, а это серьезная субоптимальная ситуация (прим.пер. ситуация, не обеспечивающая глобального экстремума) для людей вроде меня, который инвестировал более $ 600 000 в экосистему Scala. Подробнее о мотивации в конце поста.

Один из ключевых аргументов против моего поста «Вирджиния» было то, что мы должны использовать всех Java-разработчиков как есть, потому что Scala не настолько лучше, чтобы вызвать существенное повышение общего уровня этих программистов. Процитирую себя:
  • Я отвергаю аргумент: «Ну, тогда, найдите лучших программистов". Мы могли бы решать проблему сложности Scala путем повышения общего качества разработчиков (до тех, кто понимает сигнатуры типов, может описать свои программы математически и т.д.), но это не решит проблемы. Дело в том, что Scala не настолько лучше, чтобы спровоцировать революцию в области подготовки кадров, образования и приема на работу, и, таким образом, настолько изменить качество среднего разработчика, чтобы сделать её же доступной для этого разработчика.

Я согласен с Paul Snively, что Scala можно научиться. Именно поэтому я активно продвигаю Scala в течение многих лет. Штука в том, что Scala изучаем определенным видом людей. Этот вид не включает тех, кто не хочет учиться, и тех, у кого не хватает на это способностей (так же, как есть и те, кто может писать код на PHP, но не способны программировать на Java.)

Суть того, о чем я говорю это факт, что существует класс программистов, для которых Scala не подходит, и я говорю об этом уже в течение почти четырех лет… может быть и дольше, но это самый старый пост, который я смог найти. Моя позиция в то время не слишком отличается от того, к чему многие приходят сегодня: обучая и увольняя разработчиков, которые становятся менее продуктивны переходя на Scala. Кроме того, для меня совершенно очевидно, что есть группа чисто Java программистов, у который не получается со Scala, по крайней мере, на протяжении последних трех лет. Таким образом, моя позиция остаётся неизменной все эти годы.

Что изменилось в моем понимании, так это то, что я осознал, что есть огромное количество компаний, где программист появляется в начале рабочего дня, участвует в нескольких совещаниях, пишет несколько строк кода и идет домой. У меня был опыт работы с тремя компаниями такого типа в течение последнего года. Одни внедряют Scala, сражаются изо всех сил, пытаются сделать все правильно, несмотря на проблемы с Java кодом переписанным на Scala, поиском разработчиков и внутренним сопротивлением внутри компании. Другие принимают решение не внедрять Scala (хотя у них работает немного кода на Scala, о котором не знает руководство, этот код поддерживает один человек, для задач которого Scala значительно лучше, чем Java). Третьи приняли решение вернуться от Scala обратно к Java, поскольку организационные расходы на замену половины разработчиков, отправку 25% оставшихся на дорогие курсы, и отказ от аутсорсинга части проектов перевешивают все те преимущества, которые Scala дает троим лучшим программистам в их команде.

Мы живем в мире, где средний разработчик пишет 3250 строк кода в год (около 20 в день). Это происходит в Eclipse, нажатием кнопки «дай мне шаблон X» с подстановкой кода в предложенные средой разработки места. Потом поход на несколько митингов. И они называют это рабочим днем. Мы не можем уволить всех этих разработчиков. Мы не можем обучить их, чтобы они стали лучше. Это Середняки. Эти разработчики могут быть героями мультиков про Дилберта (прим.пер юмористическая лента про офисный планктон). Но знаете что? Это именно те, кто использует Java. А знаете что еще? У таких программистов нет той самой комбинации врожденных способностей и желания стать лучше. Но дело не только в этом, вся цепочка менеджмента над программистом не имеет ни способности, ни воли к изменению ситуации. Мы не можем сдвинуть эту гору… или, конкретнее говоря, Scala не настолько лучше, чтобы уволить 50% непродуктивных разработчиков.
Итак, лучшими направлениеми движения могут быть:
  • Сфокусироваться на тех программистах и проектах, которые будут втрое эффективнее, используй они Scala; или;
  • Усовершенствовать Scala для программистов-середняков (этого не произойдет до тех пор, пока Scala, в первую очередь, инновационный, исследовательский язык)
Мотивация

«Ну и что?» — спросите вы, — «ты для того столько всего написал, чтобы доказать, что Scala не успешна и сложна?»

Я сторонник и фанат Scala с того самого времени, как столкнулся этим языком почти пять лет назад. Есть всего несколько человек, которые переехали на Scala и работают с ней дольше меня. Я кровно заинтересован в том, чтобы Scala и Lift и дальше шли к успеху.

И у Scala есть несколько удивительных историй успеха. Цитаты и статьи и общее ощущение чего-то необычайного вокруг Scala — всё это всерьёз и всё это заслужено. Scala — замечательный язык; язык, который не имеет себе равных в современном программировании с точки зрения его универсальности для решения широчайшего спектра задач, от простых и повседневных до самых и самых сложных.

Но, Scala — не панацея. Scala успешна только там, где нанимают отличных программистов. Scala позволяет таким программистам многократно преумножить их возможности по сравнению с работой на Java или большинством других языков. Но в менее опытных руках или, еще хуже, в руках тех, кто недоволен Scala, Scala будет хуже, чем Java. Это приведет к распрям и раздорам в команде, и, учитывая что команды такого типа, часто пассивно-агрессивны, к срывам сроков и, в конечном счете, виноват будет язык программирования.

Для того, чтобы Scala продолжила свой рост, она должна оставаться успешной и с ней должен быть связан минимум проблемных проектов. Это означает, что необходимо быть открытым и честным, говоря о сильных и слабых сторонах Scala, чтобы правильно выбирать области применения для Scala и Lift. Для роста Scala необходимо, чтобы она была предложена именно тому типу программистов, у которых есть правильное сочетание умения и желания создавать удивительные вещи с помощью Scala.
Мы должны принять, что Scala не собирается вытеснять Java в утилитах командной строки, CRUD и фронтэндах баз данных. Сила Scala для написания ORM (извини, Макс… Squeryl — реально классная штука) намного меньше, чем значение Scala для для разработки систем реального времени, распределенных, распараллельных приложений. Но большинство-то делает ORM, CRUD, утилиты, и прочие штуки в стиле заполни-форму-и-сохрани-в-базе. Вот где большинство разработчиков и где деньги. В то время как крутые парни разрабатывают гигантские нечеткие, управляемые событиями, мега-гипер-супер-колоссальные-реального-времени-супер-бла-бла-бла штуки, большинство программистов делают скучные вещи, перекладывая данные из базы данных и обратно, и Oracle/SQL предлагает механизм, прекрасно подходящий для этого.

Как сообщество, мы должны принять слабые стороны Scala. Мы должны привлечь разработчиков, которые собираются использовать преимущества Scala (а их чрезвычайно много). Мы также должны активно препятствовать людям использовать Scala, когда есть реальная вероятность провала. Бренд «Scala сложна» или «Scala для действительно хороших программистов» намного лучше, чем «Scala — это риск, который время от времени приводит к провалу».

Моей мотивацией для написания этого поста было желание вселить осознание того, о чем я сказал в мозги разработчиков. Я предпочел бы увидеть 5000 новых проектов на Scala в следующем году, 4000 из которых успешны, чем видеть 50000 новых проектов, лишь 10000 из которых являются успешными. Программисты, со способностями и склонностями к Scala, после успешных экспериментов с языком, скорее всего, читая мои посты, скажут, что я не знаю, о чем говорю. Остальные разработчики будут повторять заключение («Скала слишком сложна») и не использовать её. И такой результат, с намного большей вероятностью будет вести Scala к успеху; пока её доделают настолько, чтобы она стала доступной и для середняков. Это лучший путь для Scala и Lift.

О… и все вы, злые умные люди, которые раздвигают (или, уверен, скоро будут раздвигать) границы, с мега-событийно-управляемыми-в-режиме-реального-времени штуковинами, вы обнаружите, что Scala — это мечта, которая сбылась, и нет ничего подобного (ну, разве что, кроме Haskell). Так что, идите, создавайте ваши крутые штуки на Scala и пусть у вас всё получится.
Перевод: David Pollak
Maks @Maksym
карма
8,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (80)

  • НЛО прилетело и опубликовало эту надпись здесь
    • +5
      Мне показалось, что в этом посте Поллака понятие «средний разработчик» никак не вяжется с ведением собственных, пусть даже маленьких, open-source проектов :)
      Ну и он линк дает на место, откуда цифру взял.
      • НЛО прилетело и опубликовало эту надпись здесь
        • +7
          Он написал их только на scala. И он не говорил, что он пишет только на ней
          • НЛО прилетело и опубликовало эту надпись здесь
            • +3
              Вы не написали. Но вы предъявили ему, что 50к в год — это мало. Так вот, повторю, он не указал, что он пишет и на других языках.

              Будете и дальше спорить или гадать «он себе других языков не представляет»?
            • +2
              фанатик? — очень похоже на то. Ну а по поводу количества строк кода… Мне вот стало сильно интересно, а сколько же я пишу строк кода если посчитать так, в среднем. И, по результатам гита, у меня получилось за прошедший год по 87,6 измененных строк в день. что достаточно хорошо корреллирует с тем, что он написал.
              • 0
                если мы говорим о Java, то 100500 строк в день можно стабильно получать применением рефакторинга «change signature» :)

                можно попробовать считать как Тёма Лебедев при выплате зарплаты коллегам — «единицами смысла»(http://www.artlebedev.ru/kovodstvo/sections/148/). Но тогда ни о каких «красивых числах» в десятках и тысячах речи уже не будет…
          • +5
            не забывайте, что Скала в несколько раз компактнее Java, так что 50к строк Скалы это под 100к строк эквивалентной Java
    • +28
      >Т.е. порядка 200 строк в день.

      Сродни «любой женщине хватит всего 30 см.». Демотивирует и направляет по ложному пути.

      200 строк качественного кода — это очень и очень много для большинства языков. А дерьма/копипаста наклепать можно и 1000 строк в день.

      Количество строк кода нельзя указывать в отрыве от (1) языка, (2) сложности проекта, (3) и главное — качества проекта.
      • +10
        Очень точно. Можно 10 кликами в IDE сгенерить какой нибудь Entity класс по схеме базы, или шаблон юнит теста по существующему коду. Это что, показатель что ли?

        Опять же 100 строк кода веб-приложения на Java, сохраняющего какую-нибудь сущность в БД, пусть с какой нибудь приаттаченной воркфлоу, это мягко говоря не то же самое, что 100 строк кода CryEngine, например, или 100 строк драйвера какого нибудь.

        А еще, те кто был в Ынтерпрайз проектах знают, бывает что 4 часа фиксишь баг хитрый, из них два часа сидишь в дебаггере, а ведь фикс, когда смотришь дифф — 10 строк кода.

        А еще тут не покрываются случаи, когда ведь день занят, например, измерениями производительности, или ответами на письма программистов, которые пользуются твоим модулем, на всякие встречи и прочее, на написании документации, наконец.
      • +3
        Насколько я знаю, при подобных подсчетах подразумевают некий боле-менее «готовый к употреблению» код.
        То есть если я за понедельник ударно нафигачил 200 строк чернового кода, а потом ещё 4 дня его отлаживал — в среднем я писал 40 строк в день. А ударные темпы текстового набора первого дня никого не интересуют.
    • 0
      «Осень уже пришла!» –
      Шепнул мне на ухо ветер,
      Подкравшись к постели моей.
    • +1
      они 3250 строк в год получили при статистическом анализе больших проектов, проживших уже пару лет. Програмист в этом случае не пишет новый код, он его добавляет в существующий проект, пытаясь не поламать существующий функциолан. И если существующий уже код запутаный/глюкавый/индусский, то эти 3250 в год покажутся еще прекрасной производительностью труда.
      А при написании нового проекта, с нуля или на начальный стадиях, производительность будет намного большей. По-этому мерять в «SLOC в день» не самый лучшей подход.
  • +4
    Хорошо написано, даже обидно стало, что не имеет, судя по всему, смысла смотреть что такое Scala, разве что для общего развития, ведь пишу «в стиле заполни-форму-и-сохрани-в-базе», а не «мега-событийно-управляемыми-в-режиме-реального-времени штуковины».
    • +5
      Ну а как вы собираетесь перейти на написание второго типа проектов (если, конечно, есть такое желание)?
      Не попробуешь — не узнаешь, как говорится.
      Попробуйте, может, как раз и окажется, что ваше место не в «заполни-форму-и-сохрани-в-базе».
      • +1
        Знал бы — перешёл бы даже без Scala или Java с родным PHP, и почувствовав его ущербность недостаточность для таких задач стал бы искать другие инструменты. Просто задач соответствующих нет, а для не highload CRUD-приложений «мега-событийно-управляемыми-в-режиме-реального-времени штуковины» PHP вполне хватает, а та же Java мне кажется избыточной даже чисто синтаксически из-за сильной типизации, не говоря о большой сложности начального (прежде всего) развёртывания и дев-, и продакшен сред (тут у PHP, по-моему, вообще конкурентов нет).

        P.S. Пошел читать Simply Lift
        • 0
          Да есть они :( Вся веб-разработка под жаву — памятник избыточности и ненужности, которую никак не обойти в рамках языка. Каждый раз когда ты юзаешь Google Guava или QueryDSL, понимаешь, что где-то в другом мире все эти проблемы давно решены.

          Проблема в том, что пока большинству людей удобней заниматься копипастом огромных кусков кода (в т.ч. генераторами модулей популярных рельсофреймворков), и они могут обосновать это извращение финансово, ничего никуда не сдвинется :(
  • +10
    Мне одному кажется, что пост полон снобизма в стиле «Java круче PHP, потому что сложнее, Scala круче Java, потому что сложнее»?
    • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      Согласен. Думаю что такой уж сложной Scala может быть только для тех Java-программистов, которые кроме Java ничего и не видели.
    • +6
      Угу, после такого маркетинга и смотреть-то на scala не хочется теперь, по правде говоря. Мол, докажи, что ты в касте лучших программистов, перейди на скалу, слабо что-ли, а если скала не понравилась или не подходит — то ты среди середняков, в «классе программистов, которым скала не подходит», без способностей и мозгов. Потрясающе. Может это какая-то особенность сравнения с Java и это их местные разборки какие-то (если не можешь/не хочешь конкретно с Java на Scala перейти, то офисное скучное существо, решающее скучные задачи скучными способами) и я не совсем в теме, но со стороны выглядит так себе все это, понты и манипуляции.
    • +2
      По-моему, это не кажется, а так и есть. Снобизм присутствует. Но мне показалось, что он нарочитый. Поллак специально давит в эту точку. А в предпопослднем абзаце объясняет чего хочет этим добиться.
    • 0
      Никакого снобизма нет. Его мессадж не в том, что Scala круче, а в том, что не надо винить Scala в том, что не получилось.
      • 0
        Ни к Java, ни к Scala никакого отношения не имею, но в том-то и дело, ага, совсем никакого снобизма, не получилось или язык не подошел — значит сам дурак, слабо, а вот Scala с нимбом, ее винить нельзя, очень удобная позиция с точки зрения разработчика языка, не находите? Кто-нить: «мне Scala не подошла», реакция — «о, слабак», обсуждение достоинств-недостатков языка переводится на обсуждение достоинств-недостатков критикующих, так себе приемчик.

        Я лично про содержание сказать по делу не могу ничего (ну понятно, что на функциональном языке писать поприятнее, и чуть больше знать нужно), но по форме — выглядит не очень все это.
        • +2
          Я только начал изучать Scala (статья взяла на «слабо» :) ), но понял, что функциональные возможности можно вообще не использовать. Это прежде всего ООП язык, а в каком стиле (императивном или функциональном) писать решает каждый сам. Просто даже из-за сахара (один автоматический вывод типа чего стоит) писать приятней, чем на Java при том же (по идее) результате (байт-коде JVM) и использовании тех же библиотек/фреймворков.

          Странно другое. Может я до каких-то нюансов не докопался ещё, но как может средний (или даже начинающий) Java-программист не освоить императивную сторону Scala я не понимаю. И как переход на Scala может помешать проекту (ну, минус некоторое время на изучение особенностей синтаксиса) — тоже. Или дело в инфраструктуре (IDE, инструменты деплоя, тестирования и анализа и т. п.), или является заблуждением мнение о легкости использования Java-классов и сборок, или статья откровенный вброс для поднятия популярности Scala. В последнем случае своей цели она отчасти достигла. Судя по топику минимум два человека начали изучать Scala только на ХАбре :)

          Вот с постепенным переводом Java-проекта на Scala проблемы могут быть, даже если начинать не с самого верха.
        • +1
          И всё-таки, автор не говорил «значит сам дурак». Это ваше восприятие.
          Автор говорит: «сложность Scala перечеркивает её достоинства». Это не значит, что «сам дурак», это значит «Scala пока сложная». Автор несколько раз говорит, что Скала только развивается, и пока не доведена до ума (не стала достаточно простой). Так что никакого снобизма.

          Кстати, он не разработчик языка, а всего лишь активный пользователь.
          • 0
            Да, и он — один из тех, из-за кого Скала стала «сложной». Попробуйте Lift попользовать :) А потом сравните с Play, которую предпочли взять в свой стек Typesafe. (Я сам пишу на лифте уже года полтора).
            • 0
              Тоже пытался начать новый коммерческий проект на Lift. Порог вхождения высок.
  • –5
    Бросил читать после фразы «линий кода»
    • +4
      А зря. Один неудачный оборот в статье не должен вас откатывать.
      • +2
        Просто когда встречаются такие обороты, понимаешь, что проще читать оригинал.
    • 0
      Согласен, для перевода это — ляп.
      Просто я и на русском так говорю, не смог переключиться в должной мере.
      • 0
        Поэтому перед опубликованием лучше дать прочитать статью другому человеку на предмет выявления ляпов.
  • +12
    А я пошел смотреть, что такое Scala. На первый взгляд — очень интересно.
    • 0
      Тогда советую также Clojure посмотреть, может он вам подойдет больше.
      • 0
        Или немного подождать и посмотреть на Kotlin
        • +2
          Кстати, недавнее видео про Kotlin от автора языка:

          www.devclub.eu/2011/12/26/abreslav-kotlin/
          • 0
            О, спасибо, а то посмотреть не успел толком, а топик куда-то пропал с Хабра. Вот только из того что успел глянуть сразу вопрос возник. Язык хорошо (действительно интересный, правда читая сейчас про Scala ясно откуда ноги у многого растут, тогда это откровением казалось), хорошая IDE еще лучше (кто бы сомневался, что она будет хорошей), но остальная инфраструктура — привязки к GUI, фреймворки, библиотеки — предполагается Java/Scala использовать или надеяться на энтузиастов?
      • 0
        Ну и раз так, то не забудьте перед чтением — посмотреть сравнительные таблицы ключевых отличий Scala от Closure. Тогда читать будет вдвойне интересно. Но ссылками не кинусь, давно это было.
  • 0
    На мой взгляд он ошибается также и в том, что перейти с PHP на Java слишком сложно. Лично я перешел в силу необходимости с PHP на Java (SmartGWT) за полторы недели из которых часть времени ушла на развертывание окружения. У нас народ переходит с PHP сразу на Scala и опять же без проблем. Тут дело в желании скорее и в упорстве.
    • +1
      Вот именно, дело в желании и в упорстве. Про это и написано. Он не говорит конкретно про Вас или других способных людей.
      • 0
        «Тут дело в желании скорее и в упорстве.» — да, вот ключ, о котором он говорит.
  • +4
    Одно время изучал Scala. Язык похож на универсальный швейцарский нож, в котором есть все. Из-за такой универсальности он конечно сложноват, наверно имеет смысл его изучать под конкретную задачу, а не вообще. Нельзя не отметить шикарный Lift, концепции заложенные в нем это будущее сложных веб сайтов и систем, особенно в части реал тайма и параллельной обработки данных.
    Конечно для общего развития стоит почитать пару книг о языке или почитать хотя бы «7 languages in 7 weeks» там есть как раз одна глава о Scala.
    • 0
      Согласен с швейцарским ножом. Больше всего расстраивает, что язык динамично развивается, а практика и исследования по использованию отстают. В том плане, что Scala сложный синтаксис и много новых понятий по сравнению с Java.
      Может кто подскажет хороший мануал по Scala: только не Scala for Dummies, а что-то типа Scala fundamentals.
      Хочется понять именно базу языка и как он расширяется (плагинизируется) и в то же время как он соответствует Java code. Хотелось бы разобраться, что в ядре, а что синтаксический сахар (currying, lazy evaluation, actors, mixins, ...)

      Java очень популярна, потому что она крайне проста. К сожалению все фреймворки (библиотеки) изменили впечателие о простоте, но для того, чтобы понимать изнутри эта простота крайне важна. Interface, class, method, primitives + synchronized construction.

      P.S.: если брать чисто язык я бы сказал, что PHP сложнее Java, хотя API у Java побольше и библиотек туча.
  • 0
    Курсивы, зачеркивания, примечания переводчика, обновления, жирный шрифт — пожалейте глаза читателей! Ну, и суммирование — нетипичная операция для «вышесказанного» :-)
    • 0
      Спасибо. :) Будем работать надо собой.
    • 0
      Глянул еще раз оригинал (прошло кое-какое время между переводом и публикацией) — автор там изрядно начеркал, моей отсебятины мало :)
  • +15
    Ягуар хуже, чем Нива. Как минимум, для половины СНГ дорог.

    • +1
      Во! Во! А всяких недоумков — в топку мартеновской печи! Плюсую.
  • +1
    Бред какой то написан. Как по мне так это php сложнее java, а не наоборот. Ява приличный, структурированный язык, чего в нем сложного?
    • +4
      Инфраструктура. У людей реально мозг ломается, когда речь заходит про сервера приложений, виртуальные машины java, class loader`ы, не говоря о Maven, Spring etc.
      • +3
        Ну не знаю, у меня мозг ломается когда я вижу в пхп 5 практически одинаковых способов реализации одного и того же) Особенно когда я их всех вижу в одном проекте)
      • 0
        В PHP тоже есть виртуальная машина, правда?
        • +2
          Даже ещё более виртуальная чем в Java, никаких компиляций байт-кода в нативный, чистая его интерпретация :)
      • +2
        Ну в целом, ява как язык — очень простой. Куда проще например, Python-a (мое субъективное мнение). Просто если работаешь с джавой — знать язык сам по себе ниче не значит, если не знаешь инфраструктуру.
    • 0
      Ява — да, структурированный, приличный.
      а вот мозги у многих — нет)
  • +3
    > Это происходит в Eclipse, нажатием кнопки «дай мне шаблон X» с подстановкой кода в предложенные средой разработки места. Потом поход на несколько митингов. И они называют это рабочим днем.

    То, то программирование стало носить интеграционный характер — прикручивание готовых и документированных кусокв друг-другу по документированной схеме, вообще причина того, что в разработку пришло большое количество людей, строго говоря, к ней не относящихся. Со временем область деятельности этих леммингов полностью автоматизируется и они начинают массово мигрировать.
    • +1
      и что будет дальше?
      останутся конторы с маленьким штатом лютых профессионалов верифицирующих свой код?
      как по-вашему что будет дальше?
      • 0
        Сложно сказать.
        Есть много компаний в т.ч. и MS, заинтересованных в большом количестве специалистов, работающих с их стеком, подобные рабочие места врядли исчезнут, просто локализуются.
        Для остальных будут созданы редакторы, платформы вроде yahoo pipes, новое поколение билдеров и т.д.
  • +3
    «А тебе слабо перейти на Scala? Пиши тогда дальше на Java, середняк!». Почему-то пост вызвал именно такие мысли.
    • НЛО прилетело и опубликовало эту надпись здесь
      • +1
        А мне как раз не понравился позыв «слабо?», как в школе.
        • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      Да не было такого призыва. Призыв был «не надо винить Scala, если у вас не получилось».
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Поправте меня, если я ошибаюсь, но одним из серьезных препятствий в повсеместном использовании Scala была «хрупкость» сгенерированного ее компилятором байт-кода (о чем, кстати, писал сам Поллак). Соответсвтенно, когда я сам, в свое время, задумался о том, чтобы все это дело поизучать, сразу встал вопрос, а имеет ли смысл этим заниматься… Если это проект, который должен прожить какой год-полтора, то ладно. А если разрабатывается масштабный проект, над которым будет работать целая команда разработчиков и который будет использоваться 5-10 лет, то как все это вообще можно будет нормально поддерживать? У той же джавы просто исключительная обратная совместимость, легко найти специалистов если что, большинство других JVM проектов тоже в первую очередь ориентируются на джаву.

    Может для каких-нибудь исследовательских проектов Scala и подходит, но как быть с набившем оскомину энтерпрайзом, в котором как раз таки и сконцентрированна основная масса денег?..
    • +1
      Это проблема номер один. В Scala, пока еще, необходимо делать то, что недопустимо в энтерпрайзе — пересобирать всю систему при переходе на новый компилятор даже в одной из её компонент. Для масштабных проектов это — не вариант.
      Ситуация не изменится пока проект остается инновационным, исследовательским. Разработчики плюнули на обратную совместимость, чтобы быстрее идти вперед. Это и плюс и минус.
      Scala — очень неоднозначная, очень перспективная технология, которая грозит стать мэйнстримом, но пока только грозит.
  • 0
    > Scala не настолько лучше, чтобы уволить 50% непродуктивных разработчиков.

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

    хотя, возможно, уволить стоит их начальство, которое специально ставит их в ситуацию, когда «плохо — это хорошо», и заставляет работать непродуктивным способом.
    • 0
      >непродуктивных разработчиков и прочий балласт стоит уволить самих по себе, без всякой скалы.

      Автор просто слишком политкоректен :) Но я думаю он того же мнения.
  • +1
    > В то время как крутые парни разрабатывают гигантские нечеткие, управляемые событиями, мега-гипер-супер-колоссальные-реального-времени-супер-бла-бла-бла штуки, большинство программистов делают скучные вещи, перекладывая данные из базы данных и обратно, и Oracle/SQL предлагает механизм, прекрасно подходящий для этого.

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

    А потом молодые люди думают: вот есть крутой функциональщик, от получает N бабок. А вот есть совсем не крутой копальщик от забора и до обеда, и получает он всего лишь в 2 раза меньше. Очевидно, что здесь выгодней. Так индустрия скатывается во мракобесие, а общество — во всеобщее потупление.
    • –1
      Копать — тоже нужно. Причем копальщиков объективно нужно намного больше, чем крутых специалистов.
      Кроме того далеко не все хотят быть крутыми специалистами — это геморрой. Работа — далеко не главное в жизни большинства людей.
      • 0
        >Кроме того далеко не все хотят быть крутыми специалистами — это геморрой.

        А какой смысл говорить о всех? Выбор чего-либо нужно делать предметно, для решения каких-то проблем. Вот если есть сложные наукоемкий проект, то люди для которых «работа не главное в жизни» идут лесом. Если же нужно набыдлокодить еще одни фронтенд к базе данных, то дело другое. Кесарю кесарево, а Богу Богово.
    • 0
      Хороших, годных компаний, в которых работают такие же годные специалисты — единицы. Что-то с этим сделать нельзя. Глупые будут выбирать глупое, а умные — умное. Нам остается лишь расслабиться и наблюдать за процессом.
  • +2
    Поллак давно вдарился в эмо, зайдите в его блог и прочитайте несколько последних постов.
    При желании всегда можно найти обоснование своему мнению.
    В Typesafe взяли Play, а не Lift, так теперь Поллак уже всё вокруг слезами залил.
    Время всё покажет, а пока что — трёхкратный рост кол-ва вакансий за год: www.indeed.com/jobtrends?q=scala&l=
    • +1
      Да, они там с Одерски вроде горшки побили.
  • 0
    Подскажите, где оригинал статьи? На goodstuff.im не нахожу.
    • 0
      Это перевод. Прямо под постом — ссылка на оригинал (между тэгами и комментариями, слева от моего ника).
      • 0
        Спасибо огромное. А то я этот маленький пиптик не заметил:
        img534.imageshack.us/img534/6994/screenshot2012010511325.png
        … и начал было уже думать, что я чего-то не понимаю. Даже спросить стеснялся.
  • 0
    Если в проекте решаются стандартные задачи, используется мощные фрейворки вроде Spring, Hibernate, Java EE то использование Java будет продуктивнее из-за лучшей поддержки в IDE. И про разработчиков все верно. Java толком мало кто знает, что уж говорить о Scala.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.