Комментарии 21
НЛО прилетело и опубликовало эту надпись здесь
Ну а что еще мог Одерски ответить? На скале трудно писать библиотеки, но ничуть не легче написать библиотку эквивалентной сложности на Java а на С++ может и вообще нереально.
У меня впечатление что все кто ругают скалу делают это из-за того что она им нравиться но они бояться в этом признаться :-)
У меня впечатление что все кто ругают скалу делают это из-за того что она им нравиться но они бояться в этом признаться :-)
В Java труднее. Больше мусора, труднее работать с колбэками, нельзя спокойно возвращатьнеизменяемые коллекции и т.п.
C++ сравнивать пожалуй некорректно — радикально иные приоритеты у дизайна языка и тех, что его использует.
C++ сравнивать пожалуй некорректно — радикально иные приоритеты у дизайна языка и тех, что его использует.
Мда, многие программисты считают себя эдакими философами от науки. Я не имею ввиду Мартина, его вклад в развития языков неоценим, но многие другие настолько консервативны, что попросту притягивают за уши аргументы дабы оправдать своё нежелание вникнуть в парадигмы нового языка.
Скалисты делают 2 основные ошибки: вводят что-то новое/непривычное там, где оно не нужно, и ведут себя пафосно.
Пример нового/непривычного — библиотека dispatch для работы с HTTP, все функции в которой сделаны через перегрузку операторов (>>, |<, >|, etc.). Круто, лаконично, удобно, похоже на синтаксис перенаправления потоков в ОС, в конце концов. Теперь вопрос: а как это гуглить? А как это будет выглядеть при комбинации функций? А что с замыканиями, каррированием и прочими крутыми фичами Scala? В итоге вроде и выиграли что-то, но как это совмещать со всеми остальными фичами — не понятно.
Другой пример — возможное включение макросистемы а-ля Lisp/Nemerle. Не так давно видел запись в ЖЖ нашего соотечественника, работающего в лаборатории Мартина, с просьбой придумать хороший use case для макросов. Придумать, зачем нужна такая фича. Т.е. есть вопрос не в том, чтобы решить такую-то задачу с помощью такой-то фичи, а в том, чтобы найти задачу, где эта фича могла бы быть полезна. Насколько я помню, вменяемых use case'ов для каждодневного использования никто так и не придумал. (Это не значит, что макросы бесполезны, это лишь значит, что их ценность в языке с кучей других замечательных возможностей, таких как функции высшего порядка, каррирование, ламбда-фукнции, необязательные элементы синтаксиса и др., значительно снижается. Но инфраструктура Scala сейчас такова, что ради нескольких действительно уникальных задач их всё же могут включить в язык.)
Пафос, видимо, является проявлением чувства элитарности. Scala редко начинают учить первым языком программирования — большинство скалистов хорошо знакомы с добрым десятком других языков, концепций и парадигм. В результате многие скалисты начинают чувствовать себя частью сообщества избранных и вести себя соответственно. Ты Java-программист? Слюнтяй! Почитай про монаду Maybe! Ты не можешь понять этот синтаксис? Это потому что Scala не для среднестатистического разработчика! Так что давайте сделаем ещё вот так хитро — свои ребята разберутся, а остальные всё равно ещё на предыдущей стадии эволюции, так что нафиг ради них распинаться.
Это уже ни раз обсуждалось в Scala-сообществе, и Мартин дал чётко понять, что не хотел бы, чтобы Scala стала элитарным языком. Но инфраструктура языка создаётся не его автором, а сообществом.
Мощнейшие фичи всегда можно сделать простыми и очевидными. Scala не обязана быть сложной.
Пример нового/непривычного — библиотека dispatch для работы с HTTP, все функции в которой сделаны через перегрузку операторов (>>, |<, >|, etc.). Круто, лаконично, удобно, похоже на синтаксис перенаправления потоков в ОС, в конце концов. Теперь вопрос: а как это гуглить? А как это будет выглядеть при комбинации функций? А что с замыканиями, каррированием и прочими крутыми фичами Scala? В итоге вроде и выиграли что-то, но как это совмещать со всеми остальными фичами — не понятно.
Другой пример — возможное включение макросистемы а-ля Lisp/Nemerle. Не так давно видел запись в ЖЖ нашего соотечественника, работающего в лаборатории Мартина, с просьбой придумать хороший use case для макросов. Придумать, зачем нужна такая фича. Т.е. есть вопрос не в том, чтобы решить такую-то задачу с помощью такой-то фичи, а в том, чтобы найти задачу, где эта фича могла бы быть полезна. Насколько я помню, вменяемых use case'ов для каждодневного использования никто так и не придумал. (Это не значит, что макросы бесполезны, это лишь значит, что их ценность в языке с кучей других замечательных возможностей, таких как функции высшего порядка, каррирование, ламбда-фукнции, необязательные элементы синтаксиса и др., значительно снижается. Но инфраструктура Scala сейчас такова, что ради нескольких действительно уникальных задач их всё же могут включить в язык.)
Пафос, видимо, является проявлением чувства элитарности. Scala редко начинают учить первым языком программирования — большинство скалистов хорошо знакомы с добрым десятком других языков, концепций и парадигм. В результате многие скалисты начинают чувствовать себя частью сообщества избранных и вести себя соответственно. Ты Java-программист? Слюнтяй! Почитай про монаду Maybe! Ты не можешь понять этот синтаксис? Это потому что Scala не для среднестатистического разработчика! Так что давайте сделаем ещё вот так хитро — свои ребята разберутся, а остальные всё равно ещё на предыдущей стадии эволюции, так что нафиг ради них распинаться.
Это уже ни раз обсуждалось в Scala-сообществе, и Мартин дал чётко понять, что не хотел бы, чтобы Scala стала элитарным языком. Но инфраструктура языка создаётся не его автором, а сообществом.
Мощнейшие фичи всегда можно сделать простыми и очевидными. Scala не обязана быть сложной.
С лета пишу на Скале, много задавал вопросы на stackoverflow (ну тут было бы странно, что кто то так бы себя повел) и в группе рассылки lift, все быстро и просто объясняют, могут рассмотреть код.
Вообщем я к тому, что элитарность есть везде — это совершенно нормальное явления в любом языке, не к чему ее на все сообщество вешать (посмотрите на хаскелистов н-р)
Вообщем я к тому, что элитарность есть везде — это совершенно нормальное явления в любом языке, не к чему ее на все сообщество вешать (посмотрите на хаскелистов н-р)
А вы попробуйте не задавать, а отвечать на вопросы. Много раз видел, как какой-то ответ минусуют потому что он «недостаточно хорош» (хотя правила SO это не приветствуют). Может, конечно, это только мне так везёт, но такого поведения в вопросах про другие языки не встречал.
Разумеется, некоторая элитарность есть в любом сообществе, но конкретно Scala — это язык ещё молодой, и судьба его пока до конца не понятна, поэтому поведение сообщества, пишущего библиотеки и отвечающего на вопросы, может очень сильно повлиять на будущее языка.
Разумеется, некоторая элитарность есть в любом сообществе, но конкретно Scala — это язык ещё молодой, и судьба его пока до конца не понятна, поэтому поведение сообщества, пишущего библиотеки и отвечающего на вопросы, может очень сильно повлиять на будущее языка.
По поводу макросов. С Евгением Бурмако общался лично на одной из встреч Scala Enthusiasts Belarus. Хочу заверить, что фича не разрабатывается лишь для того, «чтоб былО». Общие юзкейсы не сильно привязаны к конкретным языкам и актуальны и для Скалы. Евгений своим «опросом» лишь пытается направить разработку по оптимальному пути, обеспечив решение самых актуальных проблем и задач в первую очередь. И задачи, кстати, не настолько уникальны как может показаться.
Я свято верю, что в язык нельзя пихать кучу фич для решения одних и тех же задач. Фундаментальные фичи языка должны быть как можно более ортогональны по отношению друг к другу, и должны привносить достаточно большую новую функциональность. В чём такая большая функциональность макросов в Scala, я пока не вижу.
Попробовали бы вы пообщаться с Ruby сообществом лет 5 назад, вот у кого ЧСВ зашкаливало. «Пишешь на Java? Бу го га, дидил, или отсюда.» (Возможно русская специфика, с англоязычным сообществом я общаться тогда не мог)
Если спросить про монады в любой группе — будут объяснять до последнего, как в сказке про золотую антилопу :)
Если спросить про монады в любой группе — будут объяснять до последнего, как в сказке про золотую антилопу :)
Как мне показалось, гораздо больше шума вызвал вот это пост:
blog.joda.org/2011/11/scala-feels-like-ejb-2-and-other.html
blog.joda.org/2011/11/scala-feels-like-ejb-2-and-other.html
По-моему просто трололо с громким заголовком. Конструктива нигде, кроме секции «Quality» нет и высказан он отнюдь не автором поста.
И шум очень странный. Когда, например был объявлен Kotlin многие участники Scala-сообщества отреагировали в блогах и твиттере, а на этого просто не обращают внимания.
И шум очень странный. Когда, например был объявлен Kotlin многие участники Scala-сообщества отреагировали в блогах и твиттере, а на этого просто не обращают внимания.
Я бы не сказал, что не обратили внимание. Многие активные члены комьюнити так или иначе прокомментировали этот пост. Начиная с Мартина: twitter.com/#!/odersky/status/138950022703222784
ну и далее:
www.infoq.com/news/2011/11/scala-ejb2
twitter.com/#!/jsuereth/status/139534894874370048
twitter.com/#!/djspiewak/status/139529954705678336
twitter.com/#!/djspiewak/status/139041200073224192
twitter.com/#!/djspiewak/status/139039455754457088
twitter.com/#!/jsuereth/status/138982915622178817
twitter.com/#!/milessabin/status/138961048257560577
twitter.com/#!/etorreborre/status/138919582541955072
Ну а что касается «нет конструктива». Пост, конечно, по большей части провокационный, но модульность — вполне конструктивная мысль.
ну и далее:
www.infoq.com/news/2011/11/scala-ejb2
twitter.com/#!/jsuereth/status/139534894874370048
twitter.com/#!/djspiewak/status/139529954705678336
twitter.com/#!/djspiewak/status/139041200073224192
twitter.com/#!/djspiewak/status/139039455754457088
twitter.com/#!/jsuereth/status/138982915622178817
twitter.com/#!/milessabin/status/138961048257560577
twitter.com/#!/etorreborre/status/138919582541955072
Ну а что касается «нет конструктива». Пост, конечно, по большей части провокационный, но модульность — вполне конструктивная мысль.
Да, вспомнил, просто твит Одерского был без ссылки.
Рантайм разрешение зависимостей и управление версиями? Этим не занимается ни один язык. Кроме того, IMHO, jar hell возникает там, где в одном процессе живёт 2-3 эпичных фреймворка (типа спринг во встроенном в JBoss томкате) и пара приложений сразу. А у таких монстриков версии модулей не главная беда.
Рантайм разрешение зависимостей и управление версиями? Этим не занимается ни один язык. Кроме того, IMHO, jar hell возникает там, где в одном процессе живёт 2-3 эпичных фреймворка (типа спринг во встроенном в JBoss томкате) и пара приложений сразу. А у таких монстриков версии модулей не главная беда.
Это только одному мне кажется что проблема не в сложности скалы а наоборот в простоте таких языков как PHP, которые позволяют любому желающему, не имея никакого соответствующего образования заполонять своими высерами сеть?
Да сделайте уже нормальную поддержку в IDE, а потом уже будем обсуждать сложность. Даже Intellij Idea нормальный продукт сделать не могут, потому что язык меняется быстрее, чем они успевают его поддерживать, в итоге у меня на проекте половина классов помечена ошибками, хотя все компилируется. А стоит «поправить» эти ошибки, как компилироваться перестает.
Язык мощный, очень много разных конструкций — сделать это тяжело, не сравнить с Java. Но меня устраивает eclipse для разработки под lift. Он действительно отображает ошибки компиляции (очевидно из-за того что сам компилирует код после сохранения), в IDEA же, как недавно просветили на встрече в Питере, иной подход — они сами пытаются воспроизвести все дерево синтаксиса Scala и соотвественно «обходятся» в проверке без компилятора.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Проблемы сложности Scala