|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
потому что скала имеет более глубокие различия. а котлин - это просто беттер жава. ну и жидбрейнзы постарались в своих продуктах его протолкнуть. куда уж тут одерскому-академику. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 11:19 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
andreykaT потому что скала имеет более глубокие различия. а котлин - это просто беттер жава. ну и жидбрейнзы постарались в своих продуктах его протолкнуть. куда уж тут одерскому-академику. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 11:24 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
andreykaT потому что скала имеет более глубокие различия. а котлин - это просто беттер жава. ну и жидбрейнзы постарались в своих продуктах его протолкнуть. куда уж тут одерскому-академику. Как бы да. Но на Scala было выпущено несколько хайповых проектов. К которым потом кое-как прикрутили совместимость Java. Т.е. средний java-программист не смог в Scala (как например я) А проекты хорошие, разработчиков нужно много, чтобы пилить БП Kotlin-же лихо стартовал, без хайповых проектов. Только за счет огромного количества синтаксического сахара. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 12:04 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
mad_nazgul, David Pollak тоже не смог. Хотя он и автор книг по Scala. Так что ты - не один. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 12:41 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
он стартовал за счет того что его промоутили и продолжают промоутить житбрейны и гугель лично впихивая туда кучу усилий и конечно же бабла. на мое имхо на скале писать как на котлине или даже как на джаве проблем особых нет от слова совсем - плюшки все те же в наличии. другое дело что скала плюс ко всем этим плюхам позволяет (не требует!) писать еще и лютую функциональщину к которой да, средний джавапрограммист не особо будет и готов и благосклонен. так и котлин вроде вполне с этим справляется? просто вот не пишут и все. а может и не надо. я сейчас сижу на проекте где по стечении двух лет тупо решили что скала в целом бизнесу не интересно, нет очевидного и явного бизнеспрофита, а вот головняк есть - и переезжают на джава котлин. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 12:43 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
andreykaT, не одобряю твою манеру коверкать слова. Если ты ненавидишь ДжетБрейн - то так и напиши. Просто в противном случае получается что у тебя есть что-то невысказанное и ты никак его не смог сформулировать. Не держи в себе короче. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 13:10 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
andreykaT я сейчас сижу на проекте где по стечении двух лет тупо решили что скала в целом бизнесу не интересно, нет очевидного и явного бизнеспрофита, а вот головняк есть - и переезжают на джава котлин. Есть проект что-то типа scala-native. Насколько я понял ребята замахнулось на сильный перформанс. Если он взлетит тогда scala будет собирать бинарники по производительности такие-же как clang/rust. Потому-что в стек технологий они вставили тот-же промежуточный компиллятор. Серъезная предъява. Я так ду. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 13:12 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
andreykaT он стартовал за счет того что его промоутили и продолжают промоутить житбрейны и гугель лично впихивая туда кучу усилий и конечно же бабла. JetBrains - да промоутили. С Гуглом немного сложнее. Скажем так они (Гугл) дествовали по принципу - "Не можешь победить, возглавь!" Т.е. это было большей частью иннициатива снизу. Когда еще бета версию Kotlin распробовали мобильщики. andreykaT на мое имхо на скале писать как на котлине или даже как на джаве проблем особых нет от слова совсем - плюшки все те же в наличии. другое дело что скала плюс ко всем этим плюхам позволяет (не требует!) писать еще и лютую функциональщину к которой да, средний джавапрограммист не особо будет и готов и благосклонен. так и котлин вроде вполне с этим справляется? просто вот не пишут и все. а может и не надо. Ну ФП сейчас и в Java внедряют, так что тут Scala первая, но не единственная. andreykaT я сейчас сижу на проекте где по стечении двух лет тупо решили что скала в целом бизнесу не интересно, нет очевидного и явного бизнеспрофита, а вот головняк есть - и переезжают на джава котлин. Главная проблема Scala что интероперабельность с Java ну очень посредственная. Так что иногда нужно плясать с бубном, чтобы подключить библиотеку Java и наоборот. Для примера Spring. Был такой проект Spring Scala но как-то сдулся. В то же время Spring Kotlin наоборот вполне себе живет и процветает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 15:39 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
спринг со своей парадигмой просто не встроился в скалу. вернее, они это поняли но уже сильно позже и стали рожать какую то реактивщину но сильно после. у скалы свой спринг есть - плей на акке и гуисе. для сферического в вакууме набора задач в общем то тоже самое что и спринг но такой модный реактивный... да он и на джаве есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:12 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
mad_nazgul Ну ФП сейчас и в Java внедряют, так что тут Scala первая, но не единственная. Давай я тебе расскажу одну штуку. Java - это очень (!) консервативный язык. У него есть комьюнити (JCP Java Community Process) где обсуждаются все-все возможности развития. Комьюните это строгое. И практически всегда отвергающее всё новое. Потому что слишком много стоит на кону. Много ентерпрайза. И позволить себе такие эксперименты над языком как делает C# это комьюнити не может. И это первое и последнее чудо что они втащили в язык синтаксический сахар для method-reference или как его назвали lambda. Потому что остальное было реализовани библиотеками типа Streams. Насколько я понимаю под это дело подпилили спецификацию виртульной машины и добавили возможность жонглировать ссылками на методы. (я попробую найти эти изменения в спеках где-то между 7 и 8). Объективно реализовать в полной мере ФП в Java будет скорей всего невозможно. Тут будут виновны система типов (mixin атомов и объетов) а также ограничения самой JVM. А также неполноценный механизм генериков который был хорош тем что он вообще был создан. И плох тем что он неполноценный. Не такой как в С++ например. Поэтому ФП в Java - это жалкая пародия на настоящее ФП. По сути это некий компромисс чтоб бородачи на самокатах почувствовали себя "в тренде". Вобщем не обольщайтесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:13 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
на джаве фп рюшки есть да. и синтаксис с определенными допущениями позволяет писать код.. но... это все не какое то топорное штоле. выглядит как попытка натянуть сову на кактус. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:14 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
andreykaT другое дело что скала плюс ко всем этим плюхам позволяет (не требует!) писать еще и лютую функциональщину к которой да, средний джавапрограммист не особо будет и готов и благосклонен. так и котлин вроде вполне с этим справляется? просто вот не пишут и все. а может и не надо. Это и сила и слабость скалы. Проблемы начинаются когда собираются вместе лютый ФП-шник с вчерашним java-прогером. А HR как набирают? Знаешь скалу? -Знаю. Ну на 200К. Начинаешь завтра. В лучшем случае они разобьют друг другу лицо))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:15 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
mad_nazgul Ну ФП сейчас и в Java внедряют, так что тут Scala первая, но не единственная. Не внедряют а пробуют внедрить, успехи так себе и я не думаю что станет лучше. Java никогда не сможет стать ФП если они сохранят backward compatibility Код: java 1. 2. 3. 4. 5.
И да, и нет. Подключить библиотеку в Java проект не составляет никакого труда, если разработчики озаботились созданием API, как спарк и кафка например. Требовать же спринг на скале - это как требовать поддержку ruby on rails для питонистов, наверное конечно можно, но не стоит. Но тут речь о фреймворках а не либах ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:20 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
Я вообще уже не понимаю, что в данной дискуссии понимают под ФП ))) В 1990-ом году, в школе, изучал APL. Ну да, нет там циклов for (как в Basic или Pascal которые изучали до этого), вместо циклов и вызова функции в цикле, нужно делать функцию и перемножать ее на матрицу. В целом, нам было глубоко пофиг, что for, что умножить на матрицу - какая разница? Только сейчас (лет 5-ть назад), случайно узнал, что оказывается, я изучал ФП ! Как я был крут ! mayton Java - это очень (!) консервативный язык Что и плохо. Посмотреть на Delphi. Взяли Pascal и не побоялись поменять язык так, что бы он был удобен, прост и хорошо сочитался со средой разработки и новыми (на тот момент) веяниями/технологиями. Программы для COM на Delphi выглядят не чуть не хуже/сложнее, чем на VB. Проперти в Delphi.... Блин, вроде элементарное расширение языка. Почему этого нет в Java? Смотришь на бесконечные простыни get'ов / set'ов и честно говоря, ООП тут же начинает асоциироваться с рядом слов из великого и могучего. mayton И это первое и последнее чудо что они втащили в язык синтаксический сахар для method-reference или как его назвали lambda. ... Насколько я понимаю под это дело подпилили спецификацию виртульной машины и добавили возможность жонглировать ссылками на методы Не уверен. У меня чувство, что для каждой лямбды просто создается свой отдельный внутренний класс. Никто не мешал и раньше делать "лямбды" (callback'и), только нужно было самому класс создавать. Т.е. чисто синтаксический сахар. Полезный, но: 1) нужно было сделать уже давно 2) синтаксис лямбд.... совершенно странный, через одно место и полностью велосипедно-квадратный Ссылок на ф-ции/методы (как в C++) вроде нет. mayton Объективно реализовать в полной мере ФП в Java будет скорей всего невозможно. Ху есть ФП, которое невозможно реализовать? mayton А также неполноценный механизм генериков который был хорош тем что он вообще был создан. И плох тем что он неполноценный. Не такой как в С++ например. IMHO механизм генериков в Java хорош именно своей неполноценностью. Может с точки зрения теории, оно и неполноценно. Но зато с точки практики - просто, понятно и в большинстве случаев работает template в C++ - IMHO это жуть и мрак. mayton Поэтому ФП в Java - это жалкая пародия на настоящее ФП. У меня большое подозрение, что значительная часть людей под "настоящее ФП" понимают всевозможную порнографию из Java Script и прочих скриптовых языков. Начиная от отказа в типизации - а кому нафиг нужна НЕ типизированная Java? и останется ли она Java'ов? и до возможнсоть переписывать вся и все "на лету" и впендюривать свои методы в чужие объекты Только при чем тут ФП, мне не понятно. Та же самая возможность "впендюривать" в Java Script реализована через ФОРТ ядро. Который, вроде, к ФП и не относится. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:46 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
ВикипедияА в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим одинаковый результат: выходные данные зависят только от входных. Это позволяет средам выполнения программ на функциональных языках кешировать результаты функций и вызывать их в порядке, не определяемом алгоритмом и распараллеливать их без каких-либо дополнительных действий со стороны программиста (что обеспечивают функции без побочных эффектов — чистые функции https://ru.wikipedia.org/wiki/Функциональное_программирование Как можно сделать ФП который компилируется в JVM bytecode или "будет собирать бинарники по производительности такие-же как clang/rust" мне совершенно не понятно. Что там останется от ФП ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 17:53 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
mayton Насколько я понимаю под это дело подпилили спецификацию виртульной машины и добавили возможность жонглировать ссылками на методы. (я попробую найти эти изменения в спеках где-то между 7 и 8). У Шипилёва в одном из старых роликов было про "лямбы врукопашную" на Java 7. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 18:13 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev У меня чувство, что для каждой лямбды просто создается свой отдельный внутренний класс. Никто не мешал и раньше делать "лямбды" (callback'и), только нужно было самому класс создавать. Я кажется дизассемблировал лямбду в восьмерке. Получалось что вроде каждая лямбда компилирует в текущем классе метод в знаком $ в составе имени. Попробую сегодня уточнить для 11-тки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 18:21 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Как можно сделать ФП который компилируется в JVM bytecode или "будет собирать бинарники по производительности такие-же как clang/rust" мне совершенно не понятно. Что там останется от ФП ? Вот тут не понял - а что мешает то? ФП это как SQL - декларативное описание программы. В какой очередности что-то дергать или выполнять(в том числе в абсолютно императивном стиле) - все идет на откуп движку БД. Но у тебя же не возникает вопроса - что там остается от SQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 18:40 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
забыл ник Leonid Kudryavtsev Как можно сделать ФП который компилируется в JVM bytecode или "будет собирать бинарники по производительности такие-же как clang/rust" мне совершенно не понятно. Что там останется от ФП ? Вот тут не понял - а что мешает то? ФП это как SQL - декларативное описание программы. В какой очередности что-то дергать или выполнять(в том числе в абсолютно императивном стиле) - все идет на откуп движку БД. Но у тебя же не возникает вопроса - что там остается от SQL? ФП-шность и способность кода собираться через LLVM - это два независимых вектора развития. Одно другому не мешает. Вот хаскель вроде тоже использует LLVM и ничего. Я хотел сказать что программисты владеющие Scala могут получить (внезапно!) помимо умного и лаконичного языка еще и язык с высоким перформансом. Если раньше на чаше весов Java-vs-Scala, первая побеждала в бизнес-решениях по скорости кода на выходе. То поесле нативного компиллятора ситуация может быть диаметральной. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 18:45 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Я вообще уже не понимаю, что в данной дискуссии понимают под ФП ))) В 1990-ом году, в школе, изучал APL. Ну да, нет там циклов for (как в Basic или Pascal которые изучали до этого), вместо циклов и вызова функции в цикле, нужно делать функцию и перемножать ее на матрицу. В целом, нам было глубоко пофиг, что for, что умножить на матрицу - какая разница? Только сейчас (лет 5-ть назад), случайно узнал, что оказывается, я изучал ФП ! Как я был крут ! Тогда ты изучал процедурное программирование а не ФП. maytonХу есть ФП, которое невозможно реализовать? Все можно, вопросв том как получится. Классическое ФП предполагает как минимум immutable - в Хаскеле например это вшито, в java же мутабельность повсеместна и нету способа гарантировать ее отсутствие в отдельно взятом куске кода, это и создает проблемы. Все эти map, flatMap io-монады работают потому что они следуют неким законам Также в джаве геморно с нулами и эксепшенами ну и система типов слабовата, поэтому не внося кардинальные изменения в язык ее не сделаешь ФП-шной, да и не надо если честно. IMHO механизм генериков в Java хорош именно своей неполноценностью. Может с точки зрения теории, оно и неполноценно. Но зато с точки практики - просто, понятно и в большинстве случаев работает Реально тебе нравится Map<Key<? super String>, Container<A extends Comparable<A>> понятным и очевидным? а как в рантайме отличить List<String> от List<Int>? template в C++ - IMHO это жуть и мрак. Возможно, но есть же и другие языки? Та же Scala просто уделывает по дженерикам У меня большое подозрение, что значительная часть людей под "настоящее ФП" понимают всевозможную порнографию из Java Script и прочих скриптовых языков. Ну это их проблемы. Вообще не сталкивался конкретно с таким, но что ФП понимают неправильно - это да Начиная от отказа в типизации - а кому нафиг нужна НЕ типизированная Java? и останется ли она Java'ов? Хотя есть примеры нетипизирванного ФП, все же на мой взгляд оно реально рулит только при сильной типизации и до возможнсоть переписывать вся и все "на лету" и впендюривать свои методы в чужие объекты Это может быть полезно. Как вариант решения expression problem. Но соглашусь с основным поинтом - ФП у каждого свое в голове, но нормальные материалы начинают появляться и я думаю что в скором времени "все договорятся". Просто говоря о ФП мешают много всего в кучу, хотя сама идея очень простая - программа описывается как "рецепт" где прописываются зависимости по данным(что от чего зависит) и способы получить из одних данных другими посредством чистых функций. Все описания сайд эффектов выносятся в lazy трансформации, и они выполняются непосредственно в рантайме. Таким образом ФП программа это некое синтаксическое дерево, которое подается на вход интерпретатору, в идеальном случае в методе main - которое и делает всю черную работу ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 18:57 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
mayton Я хотел сказать что программисты владеющие Scala могут получить (внезапно!) помимо умного и лаконичного языка еще и язык с высоким перформансом. Могут и не получить, поскольку функциональный язык может генерировать больше "мусора", мемоизация может потребовать больше памяти, а без мемоизации - может не быть и выигрыша по скорости.Если раньше на чаше весов Java-vs-Scala, первая побеждала в бизнес-решениях по скорости кода на выходе. То поесле нативного компиллятора ситуация может быть диаметральной.А что понимается под "нативным компилятором"??? Если AOT/JIT, то оба они работают с байт-кодом и не зависят от механизма генерации этого байт-кода. Если речь о прямой трансляции входного языка в байт-код (без промежуточной генерации java-текста), то как-то не наблюдается таковой. Наверное, создание эффективного компилятора с языка высокого уровня - не самая тривиальная задача? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 19:00 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
В С++ темплейты позволяют инжектить примитивные типы. int/double/long. В Java - только объекты-обёртки каждый из которых имеет офигенный футпринт. Концептуально вроде цель достигнута. Генерик работает но реализация конечно говно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 19:02 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
mayton Я хотел сказать что программисты владеющие Scala могут получить (внезапно!) помимо умного и лаконичного языка еще и язык с высоким перформансом. Если раньше на чаше весов Java-vs-Scala, первая побеждала в бизнес-решениях по скорости кода на выходе. То поесле нативного компиллятора ситуация может быть диаметральной. Ну я ради интереса года два назад писал бенчмарки и никакой разницы между скалой и java не заметил по перфомансу, все в пределах погрешности. Насчет того что при native станет лучше - я бы сильно не надеялся. Во-первых там есть ряд ограничений, во-вторых таже java заоптимизирована по самое небалуй и местами сравнимо с C++, так что... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 19:02 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
забыл ник mayton Я хотел сказать что программисты владеющие Scala могут получить (внезапно!) помимо умного и лаконичного языка еще и язык с высоким перформансом. Если раньше на чаше весов Java-vs-Scala, первая побеждала в бизнес-решениях по скорости кода на выходе. То поесле нативного компиллятора ситуация может быть диаметральной. Ну я ради интереса года два назад писал бенчмарки и никакой разницы между скалой и java не заметил по перфомансу, все в пределах погрешности. Насчет того что при native станет лучше - я бы сильно не надеялся. Во-первых там есть ряд ограничений, во-вторых таже java заоптимизирована по самое небалуй и местами сравнимо с C++, так что... Я в топиках карточного рей-трейсера обязательно подниму эту тему. Просто мой технический долг там лежит. Scala- реализация глючит. Тоесть не рендерит картинку правильно. И это меня обескураживает. Так-бы я уже сделал native benchmark ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 19:05 |
|
Сложить два числа в Kotlin :)
|
|||
---|---|---|---|
#18+
mayton В С++ темплейты позволяют инжектить примитивные типы. int/double/long. В Java - только объекты-обёртки каждый из которых имеет офигенный футпринт Точно-точно офигенный? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2020, 19:24 |
|
|
start [/forum/topic.php?fid=59&msg=39918482&tid=2120928]: |
0ms |
get settings: |
29ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
502ms |
get tp. blocked users: |
1ms |
others: | 331ms |
total: | 1050ms |
0 / 0 |