Вышеописанные примеры неэффективной работы относятся исключительно к чистым ФП языкам (как Хаскель). Скажем, на той же Скале таких ограничений нет. И вообще, проблема хоть и есть, но достаточно переоценена — читать www.cs.cmu.edu/~rwh/theses/okasaki.pdf для деталей. Для большинства императивных алгоритмов существуют чисто функциональных аналоги с той же асимптотической сложностью времени работы.
Лучшее, что я читал на эту тему — www.lihaoyi.com/...tyleConcisenessNames.html
И что именно из вышеперечисленного вызывает такой негатив?
А что с Венгрией?
Ну как же, ни один из них не принадлежит JB. Фатальнее некуда.
Хотя, в общем-то я рад за котлин — хороший пинок остальным jvm языкам, из конкуренции идет прогресс.
Как минимум, 8 там так и не появилась (без костылей).
На 90% — сахар над джавой. Учить особо даже не надо, берешь и пишешь.
Если бы на андроиде была нормальная джава, то нужда в котлине была бы раз в 10 меньшей.
sealed interface Node { }
data class IntNode(int value) implements Node { }
data class NegNode(Node node) implements Node { }
data class SumNode(Node left, Node right) implements Node { }
data class MulNode(Node left, Node right) implements Node { }
data class ParenNode(Node node) implements Node { }
Будут.
А вместе с local type inference котлин можно отправлять в мусорку — становится не нужен.
И второе, если даже не первое — напрочь игнорить «мелочи» производительности. Выбрать O(N^2) вместо O(N) или добавить десяток аллокаций/оберток на элемент коллекции, увы, многими считается нормой. Или там родить запутанный иммутабельный код, где так и просится мутабельность (локальная).
Неудивительно, ведь котлин — скала, в которой насильно урезали часть возможностей, соответственно с «политикой партии» разработчиков. Кому-то оно и к лучшему.
Ничего, что сравнение спарка и кликхауса — сравнение яблока с шуруповертом?
Кликхаус — очень специализированная штука, для специфичных кейсов.
«параллелизм из коробки» (из либы) сделан много где. Сейчас не 2000 год, все-таки. Корутины — чуть ли не единственное, что мне в Го нравится, к слову. Хотя будь они сделаны отдельной либой, нравились бы больше.
«подходы, поощряющие новые более перспективные практики программирования» — это какие? Вездесущие «if nil == nil then return nil» ? о_О
А что не нравится — абсолютное отрицание всех идей, что появились после
Проводя аналогию с цитатой Форда про автомобилей и коней, Го — более быстрая лошадь, и этим он тормозит развитие автомобилей, оттягивая ресурсы.
Если вы не понимаете бенефитов такого подхода, это не значит, что их нет.
Вообще говоря, что С в свое время, что Го сейчас отодвигают индустрию на эпохи (с тз computer science) назад. И это печально.
making.duolingo.com/...
Просто чтобы не складывалось впечатление, что со скалы лишь уходят. Само собой, рефакторинг архитектуры сыграл свою роль, и с ним не так сильно важно, куда именно двигать.
Это про скорость Го против Скалы?
1) Оригинальный коммент именно что без аргументации, просто вброс.
2) На разных бенчмарках они показывают разные результаты. Ну и не стоит забывать, что бенчмарки крайне сложно сделать так, чтобы все остались довольны — например, в сравнении горутин с акка акторами замена последних на футуры сразу выводит скалу в лидеры. Почему-то этот PR не приняли. Я бы сказал, что «в среднем по палате» скорость абстрактного чего-то у Скалы и Го примерно одна.
Особенно понравилось
— бессильность grep’а перед синтаксисом ScalaИспользовать grep для регулярного поиска по коду в 2017, серьезно?
К слову, в тех случаях, когда приходилось грепать, проблем не было. Возможно, потому что грепал я по ключевым словам (проект большой, всего не знаешь), а не по синтаксису.
Дальше сплошные «гиперболы»:
— простой в изученииЕсли в бекграунде только QBasic с пхп, то да, Го проще. Если есть хотя бы опыт с Джавой — нет. Какие пол-года?
— легко читаемый кодУж это точно не плюс Го. Императивная портянка с тонной «if nil return nil».
программы на Go быстрее работаютПросто ложь.
— программы на Go требуют меньше памятиСитуативно. И уж явно бредово меряться образом докер контейнера.
Общее впечатление от статьи — 4 человека с бекграундом в бейсике и пхп купились на хайп и начали писать на Скале. Что же могло пойти не так?
При чем тут это? Например, длина 1 цикла — [N(100, 6)], длина второго как-то зависит от первого, а третьего — от второго. Это можно упросить и в итоге все снова сведется к «умножению», но все же.
Вы априори посчитали, что P("четная длина") = P("нечетная длина) = 0.5, что не так.
Правильный ответ — с учетом плотности распределений, нигде не сказано, что там равномерное. А ведь они ещё и зависимые могут быть! Задача поставлена не совсем корректно.
До тех пор, пока это дело влазит на одну машину. Кроме того, как только появляется необходимость в супервайзинге, или в сложной логике по типу FSM, или хотя бы в безболезненной обработке мутабельности — akka стает более предпочтительным вариантом, а голанг обрастает велосипедами.
Какого года коммент про руби в твиттере, s.dou.ua/...8-07-17_at_3.52.01_PM.png ? Они как раз оттуда убежали на Скалу, потому что не хватало производительности и надежности.
Ну и оно давно уже не на руби.