Это копия, сохраненная 14 октября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
>Что имеем:
У нас есть лучший синтаксис для джавы, немного ФП, корутины с асинхронщиной и прагматичный синтаксис.
Так же котлин очень популярен в мобильной разработки под андроид и с последнего временно является там как рекомендуемый язык джава соснула, но мы её все равно любим.
Еще параллельно пиляться kotlin-js (котлин для javascript) и kotlin-native (компилируемый в нативный код котлин).
>Хайпуют:
Язык был подкреплен гуглом в связки мобильной разработки, а с недавних пор рекомендован как основной, из-за чего начался дикий рост популярности языка.
Так же для языка был создан фонд, чтобы в случае покупки создателей не повторилась судьба с джавой. Вероятно условия гугла
Котлин является одним из самых быстрорастущих языков последних нескольких лет по многим статистикам. Так же люди отмечают что он им очень нравится На все имеется пруф, ОП не пидр и позже может предоставить, но если вам прямо сейчас нужно покушать хайпа то гуглите эти статистики сами. Автор крайне рекомендует кушать хайп в меру.
>Важно
Хотя котлин стал весьма популярен в мобильной разработке, мы здесь не будем захламлять подобным материалом, ибо его дофига.
>IDE - среда разработки.
Бесплатная community editon - обычно более чем достаточно, но можете попробовать триал-версию.
https://www.jetbrains.com/idea/download/
>Производительность.
Не забываем, что java самая производительная в связки с работы с базой (что является 99% тормозов для веб приложения), а значит котлин тоже так же шустр. Пруф:
https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=query
Ну и даже в холастую есть асинхронные платформы, позволяющие писать код такой же быстрый как Rust или C++ Автор не любит мазахизм и поэтому не рекомендует раст и с++ для веба
>Официальный сайт и там же чтиво
https://kotlinlang.org/docs/reference/
>Что тоже читать на русском:
https://kotlinlang.ru/
>Видосы-уроки на русском (относительно приемлемого качества)
https://www.youtube.com/watch?v=-H98SWHayL4&list=PLlb7e2G7aSpRWQNlOIhvCV9aquTH-Y0eU
https://www.youtube.com/watch?v=L9k_NdTaMeI&list=PLIU76b8Cjem4ZOt3tlWykUX1AjL9zE19t
https://www.youtube.com/watch?v=3sW6Y6gPCUQ&list=PLkMykHMYBtQxYyQ2Eg-QSKzDbpC4t1vyy
>Материала на английском на порядок больше, такое вы и сами нагуглите.
>Окружение (либы/фреймы):
https://kotlin.link/
Этот сайт является представлением классического "awesome kotlin" и доступен по классике на гитхабе
https://github.com/KotlinBy/awesome-kotlin
Помним, что все съедобное для джавы, подходит и для котлин
>Чаты в телеге (не дохлые):
https://kotlinby.github.io/kotlin-telegram/
-Есть те же корутины, но ты сам управляешь в какой пул потоков кидать, то есть все гибко и костамизировано.
Часто возникают задачи когда надо дробить кучу медиа-файлов, даже те же картинки и круто было бы это скинуть отдельно в системный поток, чтобы не ронять асинхронщину. То есть, асинхронность всего и вся, она имеет подводные камни, лучше когда оба инструмента есть
-Хороший драйвер к бд, очень быстрая скорость.
-Сама JVM, точнее JIT допилен до блеска. влито тонна зеленых и человеко-часов.
-Вроде бы уже завезли GC подобный как у го (не в курсе, меня дефолтное устраивает, шустро).
-Исключения, как бы там не верещали, но в любом app нужно пробрасывать ошибки, порой до потолка. В любом случае if err != nil портят рабочий код, бойлерплейт же.
-Лол, дженерики
-Великолепный синтаксис. Возможно нужно будет привыкнуть по началу, если ты старый кодер, но не проблема.
-У джавы есть все, иногда кажется что чего-то нет - то это ты просто плохо искал.
-ООП и ФП парадигма, что может быть лучше.
-С работой го у меня сложились впечатления что либы пишут студенты. Все как-то "на отъ..бись" как-будто торопились.
-Субъективно, если не копаться в мусорках опенсорса - либы у джавы на порядок качественней. То что копируют и открывают для себя в js там уже давно де-факто стандарт.
-Нормальный пакетный менеджер (гредл).
Может еще что вспомню...
-Есть те же корутины, но ты сам управляешь в какой пул потоков кидать, то есть все гибко и костамизировано.
Часто возникают задачи когда надо дробить кучу медиа-файлов, даже те же картинки и круто было бы это скинуть отдельно в системный поток, чтобы не ронять асинхронщину. То есть, асинхронность всего и вся, она имеет подводные камни, лучше когда оба инструмента есть
-Хороший драйвер к бд, очень быстрая скорость.
-Сама JVM, точнее JIT допилен до блеска. влито тонна зеленых и человеко-часов.
-Вроде бы уже завезли GC подобный как у го (не в курсе, меня дефолтное устраивает, шустро).
-Исключения, как бы там не верещали, но в любом app нужно пробрасывать ошибки, порой до потолка. В любом случае if err != nil портят рабочий код, бойлерплейт же.
-Лол, дженерики
-Великолепный синтаксис. Возможно нужно будет привыкнуть по началу, если ты старый кодер, но не проблема.
-У джавы есть все, иногда кажется что чего-то нет - то это ты просто плохо искал.
-ООП и ФП парадигма, что может быть лучше.
-С работой го у меня сложились впечатления что либы пишут студенты. Все как-то "на отъ..бись" как-будто торопились.
-Субъективно, если не копаться в мусорках опенсорса - либы у джавы на порядок качественней. То что копируют и открывают для себя в js там уже давно де-факто стандарт.
-Нормальный пакетный менеджер (гредл).
Может еще что вспомню...
Под хорошими либами, я еще понимаю хорошую документацию на популярные решения. Причем это не как в пхп, "вот тебе красивая строчка, а дальше сам трахайся с исходниками".
Когда хочется по-троллить, но мозгов хватает только на выпук о возрасте или о орфографии.
Ты печалишь меня анон, в го треде и то матёрее тролли.
>Сама JVM, точнее JIT допилен до блеска. влито тонна зеленых и человеко-часов.
JVM будет родная оракловская в двух случаях: А - ынытпрайз и Б - если того захочет Гугл в случае Андроида.
А так получился очередной нишевой экспериментальный jvm язык вслед за Груви и Скалой. Олды по старинке будут писать на Яве, а фрики отправятся в свой загончик, дабы не портить своим помётом воздух окружающим.
При условия интеропа с джавой, любые кто пишут на джаве, автоматически пишут и на котлине.
Проблем тут нет, чувак. А вот писать на "джаве" с комфортом, это плюс - однозначно по крайней мере теперь можно не пускать слюну глядя на шарп
>любые кто пишут на джаве, автоматически пишут и на котлине.
Интересный у тебя логические цепочки. Наоборот
Удивительный мир, да?
Особенно в эпоху албанского.
Мне люто насрать, пока я понимаю собеседника. Главное мысль, а не твой дроч на буковки с нелогичными правилами языка
бамп, был небольшой опыт джава разработки, прошел курс быстренький котлина и реально некоторые вещи удобнее делать, сладко шо пиздец, но с другой стороны если ты быдло типа меня то будешь постоянно охуевать с лишних зависимостей градла скажем
>лишних зависимостей градла скажем
Не понял, типа импортов? Они же автоматические и если надо скрываемые
Сложные задачи всегда обрастают сложными решениями, даже в динамико-дрисне но там иногда придется ручками импорты проклацивать
Да, я хуёво написал имел в виду стандартные, которые появляются при генерации проекта. Импорты всякие плагины, и так далее, еще и вдобавок теперь по дефолту они .kts
Проблема в том что градл сразу и пакетный менеджер и система сборки (кто-то может сказать и деплоя).
По началу правда нужно только пакеты подключать отключать, но со временем когда начнешь релизить, нужно будет какая-то система сборки.
Что касается того, что стандартная библиотека джавы и котлина тонкая и многое придется тащить из вне - это одновременно и хорошо и плохо (хорошо что стандартная библиотека не тянет говна, которое тебе, может, уже и не нужно).
Например у до 9 версии таскали никому не нужный веб сервер. Нечто подобное стало и с го, стандартное решение уже смотрится сомнительно, когда есть такие производительные как fasthttp
Я понимаю, что это крутое средство, но как большинство крутых средств имеет какой никакой порог вхождения. Может подскажешь мне где вообще можно нормальную инфу про градл посмотреть (кроме оффициальных доков, разумеется). Кукбук может какой или типа того. А то каждый раз как умственно отсталый пытаюсь вспомнить что писать implementation или api
Да просто погугли, наверняка на каком-то хабре высрали давно.
Он приоритетный в мобилках, а там же много детей, по-любому статьи на ру-яз есть.
А так любой редактор типа Intellij Idea автоматом добавляет все это. Просто создай проект с градлем и все.
Из всех атрибутов тебе нужно будет только зависимости, если захочешь чтобы просто автоматом скалось что-то
dependencies{ ... } // Зависимости.
По началу тебе гредлом собирать ничего не нужно будет. Для запуска, берешь около main функции и жмешь на зеленый ромбик типа "play" (см картинку) и так и работаешь, учишь.
Вот простейший гредл-скрипт (я давно уже бухой, могут быть ошибки)
https://pastebin.com/X0czwg1s
Спасибо, и про крутую интеграцию справа знаю, всегда через таски вот эти как раз и собираю, так как у меня была ситуация, когда с помощью кнопки билд некоторые таски сборки, линтовщик например, не подтягивались. Я в итоге вычитал, что при нажатии на кнопку работает какой то встроенный в идею gradle ToolBox он там дохуя хитрый и так далее. Просто такой простейший градл скрипт и я могу в принципе написать без проблем, а вот когда начнется какая то залупа с кастомными сборками и прогонами тестов через градл таски я хуй знает, гуглю как могу. Добра тебе, хорошо выпить.
базара нет пиздатый езык жаль что следующая версия езыка прогромирования джява сделает его абсолютно ненужным т.к. котлен это джява с чуть более лучшим синтаксисом
А ну тогда доку читай. В любом случае тебе надо понять основную концепцию и просто посмотреть какие фичи и вообще что куда.
Это лучше чем об стену биться и пытаться методом тыка изучить слишком сложные системы, метод тыка тут уже не работает
К сожалению этого никогда не случиться, будут какие-то недо-сахарки, по типу лямб или недо-var.
Слишком многое на кану и слишком уже жестко задизайнен язык, чтобы сделать что-то с размахом.
В любом случае многие улучшения будут напрямую добавлять возможности в байт-код. А это даст много пиши для jvm языков. Они всегда будут на голову дальше просто, потому что это их стезя
Kotlin-native
Ничего не понял. На чём будут программы в гугл плее? Rust? Dart? Python? Go? Ни Джавы ни Котлина ни Свифта
Почему был когда-то выбрана джава? Просто потому что это самый популярный язык и на нем миллионы разработчиков.
Я не знаю будет ли фуксия, но я точно знаю что они не будут терять легион текущих разработчиков.
Я бы переживал за судьбу го и дарта, гугл любит закрывать свои проекты, но точно не переживал за котлин, который стал основным языком для андроид и это не голословные слова, это факт
Именно, JVM выросла из джавы, динозаврам ынтерпрайза все это нахуй ненужно им и на 6 норм.
Нет, просто ты озлобленный школьник, который не осилил что-то и теперь компенсируешь все свои проблемы в ИТ-тредах.
Мы тебя еще с php-треда помним, невротика сразу видно.
>JVM выросла из джавы,
Лолец ходячий
Различать людей на анонимном форуме это уже сверхспособность, ты же тупо паттерн озлобленного подростка (или взрослого который еще не перерос максимализм), поэтому значения не имеет кто ты, ты одно и тоже из тысяч.
Бля, Храни тебя Господь
Не очень, странный, юзал только ради горутин и в небольших мелких сервисах, поэтому легко переписать сейчас.
>>48004
В котлине сейчас есть корутины без await вызовов для suspend функций, код выглядит как в го, последовательный и не важно что там синхронная что нет.
На крайняк есть async/await во всех других языках, юзать го, я лично считаю, не умеет смысла.
Ну и он уступает по производительности прогретой jvm
На картинке "стрелки с волной" в IDE показываются где функции/методы "асинхронные"
И да, что важно, в котлине можешь контролировать где запускать корутины, в том числе в своем пуле потоков.
Сильно, смотрел чутка Бреслава про то как он рассказывал что зачем и как они пилили и понял что плохо знаю матчасть. Ну тип смысл лезть в корутины если сам плох во многопоточности так как не было опыта, чутка читал конкаренси ин практис, ну писал threadpoolexecuter, но бля я считаю что преждем чем осваивать нечто крутое нужно поковыряться в древнем. а вы как и что думаете про project loom, если слышали?
Они на конференциях зачем-то про кишки рассказывают, от чего вообще не понятно что такое корутина и какие нахер контюэшены... Но в реале там безумно просто.
Небольшой гайд на английском рассказывает именно что нужно
https://kotlinlang.org/docs/reference/coroutines/coroutines-guide.html
Там же есть пункт про Shared mutable state and concurrency, это в случае как раз параллелизма, то есть избегание гонок для shared данных (потому что корутина это не всегда параллелизм, так как если крутятся в одном только потоке, то будут последовательны, но быстры, кон).
Учи то что интересно и нравится, чувствуй себя исследователем. Никакого правила нет. Самый дорогой ресурс во всем этом программирование - это твоя мотивация, поэтому создавая какие-то искусственные преграды, типа "я этого не знаю, надо то и то" - будут только скашивать твою мотивацию и ты положишь болт. А так, если стало интересно как это работает, полез в доки, может в сорцы, в чаты, на SO - мозги пухнут, но через несколько дней уже что-то понимаешь и довольно урчишь.
Можешь даже потом закрепить и в каком-то блоге высрать и глядишь такой же как ты тоже вкатиться ну если забудешь, а по-любому забудешь, через год сам прочтешь освежишь память
>project loom, если слышали?
Там 100500 решений зеленых потоков, даже джава была изначально на них. В реале, коротины могут тебе даже не нужны.
Они нужны когда железу надо пережить больше 1000, 10.000, 100.000 запросов в секунду.
А теперь возьмем сайт с котиками,в среднем с котиками и текстом он отдает на запрос 100 кбайт. Берем 100мбитный канал и получаем ширину в 12,5 мбайт в секунду. А значит канал будет забить при ~125 запроса в секунду. О каких тут 10К или 100К можно говорить.
Но со случаем корутин, круто когда от твоего сервера выжимается максимум (а значит где-то даже экономия по железу).
Причем все это не запутано (в отличие от реактивного или калбэков или промисов) и легко сопровождаемо на статически типизированном языке, с удобным синтаксисом не уступающим динамик языках и поистине качественных либах если страдал на php, js... то поймешь
Ебать я вот уже день пишу сюда и удивляюсь, с каких пор на двач стали подвозить адекватных людей, за референс спасибо, он у меня вроде даже где-то сохранен был
>>47865
> поддерживает разработку приложений на этих перечисленных языках
> Fuchsia is designed to support a wide variety of languages. This directory contains documentation about how to bring a new language to Fuchsia.
> и позволяет добавить поддержку других языков https://fuchsia.dev/fuchsia-src/development/languages/new/structure.md
Конечно, гугл выбрал в свое время джаву не потому что уже были мобильные разработчики и она была одним из популярных языков. И конечно он, он сделают такую ОС в которой все новые разработчики останутся в луже, подумаешь.
И именно поэтому он сделал котлин приоритетным языком и часть сотрудников вступили в организованный фонд котлина.
Я бы переживал за дарт и го, серьезно.
Да и никто не слышал про котлин-нейтив
Как в свое время "пришел бизнес" и сказал - оставьте js, не суйте нам этот дарт. Так будет и здесь.
Флюгер поворачивают дяди из большого бизнеса, а не какие-то программисты запомни этот тезис
> Флюгер поворачивают дяди из большого бизнеса, а не какие-то программисты
В таком случае кобол не скатился бы до сегодняшнего состояния.
Они же его и убили. Основной поворот флюгера сделал именно бизнес и будет делать всегда, никто не говорил что они на инструмент и возможности не смотрят
Посмотри с точки зрения бизнеса на котлин и поймешь что там все сделано для работу на "флюгер". Как в свое время было с С и С++, перлом и пхп и C++ c java. Смотри на котлин как на java++
Люди имеют делать бизнес и чувствуют его и они не стали делать такую болванку как груви, или треш как скала, они точно пошли по ветру именно бизнеса.
Более того, они язык заточили под хорошую IDE, которая позволяет и (важно) помогает писать таким тупицам как я.
Неудача раста - они сделали язык еще сложнее чем С++
Но удачный флюгер - текущие данные производительности, они потащили его вверх (с сожаление статистика SO лежит, просто верь мне)
Для D - удача, его внесли gcc компилятор, но за ним не стоит крупная компания, тесты печалят - все это тянет на дно.
Флаттер вытащил из бездны дарт, его отмыли и дали версию 2.0, но именно дарт тащит флаттер на дно и не ясно кто кого перетащит. Но ясно что котлин сможет легко сделать враппер на флаттер.
Если будет так, команда станет перед интересным вопросом, "на чем ехать дальше"
Моя еще надежда на более качественным маркетинг для котлина, это будет тоже флюгер, его сейчас надо продвигать везде, но грамотно.
Да и почти весь маркетинг идет на западную аудиторию (что и правильно и печально в какой-то степени)
Какая простенькая среда существует для котлина?
Вот вообще похуй на эмуляторы-хуеляторы.
Достаточно будет кнопки запуск и консоли для вывода результата.
Ебучий продукт даунов андроид студио тормозит как шлюха и компилирует хелловорлд гребанную минуту. Стыд блять.
Хорошая статья про дженерики (ru)
https://programming086.blogspot.com/2018/02/kotlin-generics.html
>Неудача раста - они сделали язык еще сложнее чем С++
И ты мне тут втираешь про котлиновские дженерики?
Го спроектирован так, чтобы любая макака не чесала гриву от херовой туче монад-хуенад, дженериков-хуериков, а начала писать продакшн код в первый же день. Просто, но не проще этого.
И в Го нет корутин отчасти по этой же причины - ок, мозг еще потерпит несколько выходов из здание - один основной и куча пожарных. Но вход-то должен быть один! Причем парадный и с неоновыми вывесками над дверью. А уж когда тебя катапультируют из здания, а потом парашутируют назад - это вообще снос башни. Только святая простота, только горутины: залил брагу в перегонный куб, поддаешь огоньку, смотришь на приборы и открываешь иногда кран, откуда капает, а оно само там варится, только так.
В чем преимущество котлина перед явой? Скалой?
Вкатывайся, расскажешь нам.
>В чем преимущество котлина перед явой? Скалой?
Что не нужно писать на джаве или скале при работе с jvmя серьезно, это такое преимущество
Понятно, очередная better java для смузихлебов, через лет 5 жизни подохнет в своей узкой нише, как и скала.
Да, пока у нас есть 5 лет, торопись
Ох, откуда вы лезете.
Какой-то отдел вероятно выбил таску и сделал playground на своем внутреннем языке.
Никакой информации про релиз и замену андроид, но опубликовали чтобы посмотреть реакцию - зачем? А затем? что гугл так делает проекты, отдел создает, выплёвывает, не выстрелил - закрыл. И это нормально.
Но маняфантазеры уже даже релизы выдумывают, которых не будет, потому как это playground под флаттер. Выстрелит флаттер, будет вам ос, но флатер тухнет, потому что никто не хочет труп дарта изучать, когда у тебя бэграунд тонны кода на jvm. да и сам флаттер смотрится ужасно, как и к дарту много вопросов
,
PS я знаю что вы жалкие тролли, поэтому паста для адекватов, кормить не буду
>Кококо дарт убивца js
>Настолько шляпа что не пустили в хром.
>Кококо го убивца джавы, го заменит жабку на андроиде!
>Лол, как на этом писать?
Ну и да, котлин уже приоритетный язык для андроид где-то в сторонке плачет дарт и го
> Адепты уже почти ненужно языка бьют в конвульсиях ИТТ от одного упоминания ФУКСИИ, которая лишит их работы
ясн
Пять лет чтобы привести дела в порядок, отдать долги, попрощаться с близкими.
Основная цель dart - это flutter, который после выходы fuchsia окончательно отправит javaнутых на помоечку, чем он уже занимается вполне успешно
Основная цель дарта это полёт в космос и освоение нибиру, слезай уже с маняфантазий.
ktor - c корутинами от JB
javalin
vertx - очень быстрая асинхроная масштабируемая штука
spring - по классике
поиск тебе поможет больше чем я, но может и тут посмотреть
https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=query&l=xan9tr-f
https://kotlin.link/ // вкладка web
Для мейнстрим языков типа java, питон и т.д. - есть почти все, тупо погугли я хз что за обертки над реддитом
Ну апи для реддита
Туториал от жетбрейнса, как раз вот такой, чисто синтаксис языка с приколами
Но сука, что за блять CoroutineContext нахуй? Что за ебаный CoroutineScope? Зачем? Для чего? В каждом месте где я хочу пукнуть корутинами я блять должен держать какой-то скоуп и на нем вызывать функции-билдеры типа launch и async? Зачем? А если буду на GlobalScope ебашить, то хули дальше? Что за ебаный пиздец вот это: override val coroutineContext = Dispatchers.Main + job ? Какой сука джоб? Я блять знаю, что launch возвращает Job, а нахуя и причем тут это?
Что такое вообще концептуально "корутина"? Я знаю, что это переводится как сопрограмма. Заебись, с чем это ассоциировать, как это визуализировать у себя в голове? Cancell'ить их можно, видите ли. Зачем? Треды в жабе никто никогда не останавливает и все живы здоровы. Зато можно без проблем написать что-то типа
repeat(1000000000) {
GlobalScope.launch {
println("ХУЙ")
}
}
Ебааать, всю жизнь я мечтал так писать, как же я жил без этого.
Еще повсюду указывают на возможные утечки, связанные с корутинами, если неправильно заюзать. То есть несмотря на вышеперечисленное, выстрелить в ногу с ними проще, чем когда-либо.
Как после этого кто-то вообще может заикаться про порог вхождения у rxjava? Там как раз в целом легко и понятно. Ну не будешь знать 95% операторов, ну будешь из Subject'ов знать только BehaviorSubject, ну и ничего, спокойно будешь писать код.
Так это ладно, судя по всему за корутинами будущее, и вот как быть, если ты тупой?
400 страниц вроде, но изложение не очень, имхо, лучше правда туториал с оффсайта
Нельзя запустить suspend функции в синхронном "режиме".
Поэтому есть контекст, в котором есть потоки (диспетчер) где будет все вертеться.
Ну и есть заготовленные всякие scope билдеры, чтоб было легче.
Тут подробно и понятно:
https://kotlinlang.org/docs/reference/coroutines/coroutine-context-and-dispatchers.html
Лучше читать из офф источника, при релизе 1.3 из экспериментальной версии они там что-то меняли и поэтому старые маны могли устареть.
PS
Понятно, что в одном потоке корутины будут шустро перещелкиваться - но не будет параллелизма.
>fuchsia окончательно отправит javaнутых на помоечку
Фуксия никому нахуй будет не нужна без поддержки андроидовых приложений. Вспомни тот же виндоус мобайл, МС кучу бабла вливал и все равно соснул. А если будет поддержка андройд приложений, то какой смысл будет писать не на котлине, когда котлин будет позволять релизить приложения сразу и для андройда и для фуксии.
Да не нужно этим одарённым отвечать, понятно что никто не будет успешный топовый бизнес делить тупо на ноль.
Поэтому гугол заранее уже внедряет flutter, на нем можно писать и для андроида, и для айос, и, внезапно, для фуксии.
Года полтора назад в котлин-треде, в основном, глумились над тем, что язык этот представляет собой просто коллекцию грязных хаков, лол.
А теперь - вон как всё расцвело.
Ну, раз такое дело - нате вам книжку - The Joy of Kotlin.
https://www.manning.com/books/the-joy-of-kotlin
Это римейк известной Functional Programming in Java (https://www.manning.com/books/functional-programming-in-java), того же автора.
Те же темы, но на Kotlin.
А вот совсем свежачок, и совершенно бесплатный:
Safe Programming with Kotlin
https://www.manning.com/books/safe-programming-with-kotlin
На те вам книжку, но где ее искать ты конечно же не даешь. Благо я знаю ресурс, в котором можно все свежие книжки скачивать.
Мимо свифт господин, который плевал на кокотлин и всю его парашу.
+1 в карму тебя бротюнь
>Про libgen я думаю каждый уважающий себя программист давно уже знает.
Да это надо во всяких чатиках сидеть, где один флуд и только 0,001% годноты приходит.
>А теперь - вон как всё расцвело.
К сожалению, большая активность в мобильниках, бэкенд-анону приходится исследовать просторы котлина самому и на чистом ангельском.
В прочем, как и на всех прочих новых языках.
> котлин
> бэкенд
И как успехи?
Я несколько раз пытался, но, что-то не заходит. Не знаю почему.
А скала - слишком непрактична (для энтерпрайза).
Несовместимая библиотека коллекций сводит на нет все ништяки, ну, и язык несколько путаный, и его слишком много (я хорошо знаю скалу, не надо мне про неё рассказывать).
Груви - охуенен. Но, он, в основном, для скриптов и DSL.
При попытке писать на нём большие вещи, он быстро вырождается в джаву, ибо без статической типизации большие вещи не пишут.
А, так вам круды лепить. Ну тогда да, ты прав.
>А скала - слишком непрактична (для энтерпрайза).
Ну, раз ты обладаешь практическим опытом разработки подобных проектов на Scala, то мне было бы интересно послушать, что такого в Scala и ее экосистеме, что не позволяет лепить твои любимые круды?
>Несовместимая библиотека коллекций сводит на нет все ништяки
Это вообще пушка. Scala предоставляет необходимые иплиситы, которые конвертируют коллекции Scala в Java и обратно. Но так никто не делает, т.к. нахер тебе нужна Java?
>и язык несколько путаный, и его слишком много
Ебать ты толстяк, дружище. Языка у него слишком много. Ты в курсе, что спецификация языка Scala меньше Java? При этом Scala позволяет делать вещи, которые на Java в принципе невозможны.
>я хорошо знаю скалу
На хуй пошел, дуралей. Скалу он знает, лол.
Ну откуда вы лезете, блять?
>которые конвертируют коллекции Scala в Java и обратно
Я знаю, сынок.
Собственно, об этом и речь - несовместимая библиотека коллекций.
В груви сделали более лучше. Как и в кложуре.
А скалоёбы - они особенные, не такие, как все.
Чёткие и о'дерзкие.
Про остальное лень писать, иди нахуй.
И да, котлин - это такая практичная скала.
Нравится это тебе или нет.
Мне, кстати, не особо.
>Ебать ты толстяк, дружище. Языка у него слишком много.
Уже даже Одерски признал, что слишком много говно напихал, а скаладебилы все копротивляются.
Ага, так много добавил, что в дотти еще фич докинул. Уходи отсюда, толстяк.
Всмысле? если я тебя правильно понял, то тебе просто нужен Gradle Docker Plugin
Я знаю, что скала - вещь в себе.
Для изолированных задач (определённого рода) - очень хорошо, для гибридных проектов - хуета.
Кстати, примерно такого же мнения придерживается огромное количество людей, вполне себе осиливших скалу. Можешь почитать в гугле.
Собственно, потому и котлин.
Которого я, как раз, не знаю, и ничего не писал на нём.
Но, мотивации и назначение языка понятны совершенно.
Помогите разобраться с RecyclerView. Есть ли в RecyclerView коробочный вариант магнита к карточке? У меня все карточки одного размера. Мне пришлось написать свой smoothScrollToPosition, переопределив из LinearLayoutManager.
На скринах VK & Instagram. На третьем прототип моего говна. Прототип, как можете заметить, подтормаживает на доскроливании.
Я перехватываю onScrollStateChanged и если newState=2 (скролл пальцем прекратился), то смотрю насколько мы проскроллены и доскролливаю либо в одну либо в другую сторону. Без такого доскролливания пользователь может остаться на середине, между карточками.
У меня используется именно RecyclerView, потому что туда прибиндин Firebase. Вроде как сейчас RecyclerView считается самым правильным способом для отображения такого контента.
Всё, что мне нужно это повторить поведение VK или Инстаграмма — в конце скролла примагничиваться либо к одной либо к другой карточке. Как это сделать правильно?
Хуй дождёшься от вас.
Отвечу сам себе:
https://www.reddit.com/r/Kotlin/comments/bj5k4m/kotlin_for_backend_development/
Пишут, что всё охуенно.
А спринг (бут), типа, вообще теперь специально под котлин затачивают.
Ну да. Java/JakartaEE вроде бы как скорее мертва, чем жива.
Поэтому Спринг/СпрингБут во все щели.
Ну а Котлин со спрингбутом сейчас норм заходит.
спасяб анон , но я так понял он больше заточен под API вещи , быстро пробежал доку , не формы , не авторизация , нечего такого нет
В идее нельзя использовать произвольный компилятор котлина.
Только тот, что встроен в плагин.
Т.е. - хочешь последнюю версию - ставь последнюю идею.
И знаете, что я думаю?
А не пошли бы они на хуй со своим котлином.
Который есть ни что иное, как коллекция грязных хаков.
Ретурн на метку, блядь, совсем уже охуели, пидорасы.
Ушёл дочитывать Functional Programming In Scala.
За него не в курсе, но есть такая тенденция сейчас писать модульные фреймворки, типа БД или авторизация или куки отдельно, как например в flask.
>А сейчас что? Спринг?
Скорее всего будет vertx (версия на корутинах), но возможно ktor, пока щупаю, тестирую и руку набиваю.
Spring - это кому как нравится мне нет. И вроде они там специальную версию для котлина пилят.
Так Котлин и разрабатывается чтобы продавать IDEA :-)
ДжетБрайнс про это на всех докладах по Котлину трубят.
Тут достаточно большая дока, может там будет что-нить
https://micronaut-projects.github.io/micronaut-security/latest/guide/
сам я честно говоря хоть и посоветовал на нем ничего не писал, просто смотрел какую то презенташку где его со спрингом сравнивали или типа того
Тебе бесплатной коммьюнити версии с головой хватит
disposable += coordinatorOwner.coordinator.refresh().doOnTerminate { promotionsLoading = false; updateLoadingIndicator() }.subscribeBy({})
Это перегруженный оператор:
https://kotlinlang.org/docs/reference/operator-overloading.html#assignments
Ищи disposable.plusAssign()
Как максимум корутины, как минимум вообще кушать синхронно потому как в 99,999% случаев тебе потоков хватит
Это не ты в жс-треде днём писал про await?
Потоки, корутины и реактивность - это всё, как-бы, немножко разные вещи.
Реактивность - вообще про другое.
Это как фьючеры, но для непрерывных потоков событий, если угодно.
Какое, тут, в пизду, синхронно, корутины, и, тем более, сырые потоки?
>разные вещи
Выкинь из головы все чему ты внял и пойми, что это разные способы для достижения одной цели - асинхронности. Кто-то может колбечит, кто-то реактивностью страдать, делая такой же не читаемый код.
Как в истории и бывает, первые инженерные решения не очень удачны, но в конечном счете приходит нужное открытие и все старые уходят в историю.
нужно смериться с тем, что ты использовал промежуточный, не очень удачный инструмент
Не, в жс треде не сижу, тем более под конец лета лучше избегать пассивно-агрессивных школьников/студентов.
>но в конечном счете приходит нужное открытие
Это корутины?
Прекрасно, что ты открыл их для себя.
Когда в руках молоток, весь мир выглядит как гвоздь.
> смериться
Ебать же ж тебя в сраку, ёбаный ты папуас.
После того, как подучишь русский, попробуй разобраться с [F]RP, что это такое, и зачем это нужно.
Или, как вариант, просто не комментируй на эту тему - так тоже можно.
стадия отрицания и гнева
Короткоствол, please.
Не реагируйте на агрессивную малолетку, его тут обидели и теперь он думает что топит тред.
ffmpeg слишком низкоуровневая числодробилка, гугли врапперы
Как ты представляешь себе числодробилки на языках с со сборщиком мусора?
Враппер будет 100% аналогом, потому что для потребителя библиотеки разницы не будет никакой, ты будешь дергать тоже api на java. Хотя я понял что ты тролль, можешь идти уже учебники покупать
Объясню по другому. Я имел ввиду не врапперы для ffmpeg, а именно аналоги этой библиотеки, работающие /имеющие врапперы для джавы/котлина
Код пишу на линуксе, игры, серфинг и безделье на винде.
Но жабе пофиг, у меня так просто исторически из-за бэкенда сложилось.
Tiobe самый манярейтинг, никогда не понимал почему он так популярен. У них бейсик популярнее js в почти полтора раза, вообще охуеть.
А че там по скорости? А. Ясно.
Тред живи
ты, блядь, хочешь, чтобы мы глаза ломали об твою новомодную темную тему, блядь?
да иди ты на хуй, я даже твой ебучий код читать не стал
Тебе как бы намекнули что твои картиночки нафиг не нужны, кидай код хотя бы сюда.
https://play.kotlinlang.org/
И вырезай лишнее.
А так, тебе IDE сама говорит что у тебя несоответствие типов, ты конкурентную линкованную очередь кастишь к java массиву (зачем ты это делаешь)?
> 2012
От этого тёмная тема не становится меньшим хипстерским говном.
!00 лет до этого долдонили из какждого утюга, что белым по чёрному трудно читать и портит глаза.
И вдруг - это стало полезным и модным.
А почему? Потому, что красиво смотрится на веб-страничках.
Каким местом портит глаза, если текст/фон не контрастный?
Лол, перебирал разные toArray и правильный был toTypedArray
Что не так с груви, сынок?
Это охуенно практичный, и охуенно недооцененный широкими массами быдла язык.
В последнее время становится заметно популярнее.
Девопс-хуёпс, опять же, вот это вот всё.
И что-то я не вижу там ничего на букву K.
чего?
Ты не особо умён, да? Манярейтинг как бы показал, что в эпоху заката груви, он его отрисовал резко в топ с 44 места.
Очень интересный и неожиданный у них анализ.
Какого, блядь, заката?
Ты дурак?
Груви - вспомогательный язык.
Закатится он, разве что, вместе с джавой.
То-есть - никогда.
Иди подрочи свой вялый грязный хак на букву кэ, лол.
В груви можно делать динамическую динамику.
В скриптах это нужно.
Плюс необязательная типизация.
Плюс охуительнейшие литералы.
Прозрачная работа с BigDecimal - это охуенно.
И прочее подобное.
Просто удобный язык для небольших задач и тестирования.
И для скриптинга в приложениях (как питон в блендере, например).
И для конфигов и прочего.
Попробуй, предложи чувакам, которые делают дженкинс или gradle, использовать котлин вместо груви. Расскажешь, сколько хуёв тебе напихали.
Ну, и совершенно прозрачная интеграция с джавой.
В котлине не так, ибо синтаксис другой (и не только).
Как может быть хороший динамический язык на jvm, на сях то питоны и пхп тормозят аки черепахи.
Я прям представляю этот медленный животрепещущий старт каждый раз.
>В груви можно делать динамическую динамику.
Как раз от этого стараются последние 10 лет избавится, даже в динамические языки статику пытаются засунуть.
>Плюс необязательная типизация.
Захотел поставил, захотел нет, романтика.
Ты просто никогда не сопровождал чужой код на динамике.
>Прозрачная работа с BigDecimal - это охуенно.
То то в питоне сейчас удивятся.
А я вот не хочу магию, я хочу знать когда работаю с лонгом, а когда с бигом.
Память не резиновая.
>Плюс охуительнейшие литералы.
А если шрифты красивые прикрутить, то вообще абасаца мона.
>Просто удобный язык для небольших задач и тестирования.
О да, тестировать или конфиги писать на зоопарке языков, это прям реал круто.
>gradle
Ни че что они разменяли на котлин-скрипты?
>В котлине не так, ибо синтаксис другой (и не только).
Ты походу котлина не знаешь, все тоже самое и там завезли. Вдохновлялись по полной.
Как может быть хороший динамический язык на jvm, на сях то питоны и пхп тормозят аки черепахи.
Я прям представляю этот медленный животрепещущий старт каждый раз.
>В груви можно делать динамическую динамику.
Как раз от этого стараются последние 10 лет избавится, даже в динамические языки статику пытаются засунуть.
>Плюс необязательная типизация.
Захотел поставил, захотел нет, романтика.
Ты просто никогда не сопровождал чужой код на динамике.
>Прозрачная работа с BigDecimal - это охуенно.
То то в питоне сейчас удивятся.
А я вот не хочу магию, я хочу знать когда работаю с лонгом, а когда с бигом.
Память не резиновая.
>Плюс охуительнейшие литералы.
А если шрифты красивые прикрутить, то вообще абасаца мона.
>Просто удобный язык для небольших задач и тестирования.
О да, тестировать или конфиги писать на зоопарке языков, это прям реал круто.
>gradle
Ни че что они разменяли на котлин-скрипты?
>В котлине не так, ибо синтаксис другой (и не только).
Ты походу котлина не знаешь, все тоже самое и там завезли. Вдохновлялись по полной.
>нинужно
>не различает "можно" и "обязательно"
>...
Понятно.
Типичный представитель целевой аудитории нового супер-мега языка.
> gradle
Да, блядь, действительно, добавили котлин.
Надо посмотреть.
Но, спок, например, я не представляю на котлине.
Так, как раз, литералы и динамика решают.
Да есть там твой DSL как в груви, успокойся. Только типобезопасный он теперь.
Если для тебя эта фраза ничего не значит, то как минимум получишь вменяемый автокомплит в DSL
Открываешь и смотришь что больше нравится
Тогда может тебе javascript??
Как я могу тебя помочь, когда тебе надо пойти на официальный сайт и открыть доку, посмотреть примеры?
Я же не могу за тебя изучать.
Поначалу набегают js и groovy хейтеры, но потом понимают что язык неплох, а жаба богата инструментами - и они по тихому уходят читать маны, да просвещаться.
в языке мало говна как в го, по-троллить скудно получается, а так как котлин язык номер один в андроиде,
то на нашей стороне еще легион школьников
Котлину далеко до топов, хотя уже скалу обогнал на SO поэтому всегда лампово в таких малых комьюнити.
Хочу выкатиться из своей работы и попробовать вкатиться к вам.
Насколько реально выучить Котлин без корп опыта? Не хочу на позицию джуна (только не ссыте, плиз). Могу несколько месяцев сидеть дома и изучать. Базово знаком с джавой
А еще такое: насколько востребована в гйеропке? ПО текущей работе могу перебраться в ПОльшу или другую страну. Там же могу уволиться и начать искать. Но вангую, что опыта нужно дохуя, как и в РФ
Может искать фриланс, ведроид или прочую поеботу?
БОльшое спасибо за внимание
Не знаю что там с работой (ты это можешь быстро и сам исследовать и тут же выбрать себе стек библиотек).
Кровавый тырпрайз инертный, поэтому если там и будет котлин, то скорее всего с джавой (это я про бэкенд, в телефонах там все хорошо).
Хотя котлин и самодостаточный, в любом случае знания о джаве будут только в плюс, по крайнем мере будет понятно "почему так, а не так это сделано и работает".
Что касается "я хочу и у меня это получится?".
Все реально и даже просто. Есть такой тип людей который ставят себе цель и идут вопреки. Такие люди доходят, но их мало. Так что вопрос не в возможностях и количестве знаний (которых достаточно), а вопрос в тебе именно.
>Может искать фриланс, ведроид или прочую поеботу?
Не думаю что будет для джавы, хотя может что-то изменилось сейчас (опять же, лучше сам анализируй, а то тебе насоветуют тут).
Крупная компания скорее реализует свои мечты через аутсорсинг.
Никогда не был во фрилансе и мне, почему-то, не вериться что там будет хорошая работа за хорошие деньги. Мне думается, что будешь есть говно за относительные копейки.
Надо мечтать стать владельцем крупной аутсорсинг компании, а не вот этот трэш.
>А еще такое: насколько востребована в гйеропке
Мне кажется, можно через гитхаб себя показать хорошо, да так, что может тебя и самого куда-то пригласят. Если у тебя мощный бэкграунд знаний, то тебе стоит это только продемонстрировать.
У меня такого опыта нет, поэтому ничего не скажу, но вероятно пути хорошие есть.
Напиши wordpress на котлине, ты не только станешь популярным, но и привнесешь фриланс в жабо-мир
В той же Скале это на уровне концепции, типа этот класс объявлен внутри другого, значит он inner. А вот тут object рядом с классом с таким же именем, мы назовем его companion.
Нахуя котлин тащит это в синтаксис? Они бы еще цикл for обозвали каким-нибудь визитором.
>inner class
Мужы много лет кодили и поняли, что так лучше и нагляднее, как например паблик по дефолту.
>companion object
Насколько я понимаю в чистом ООП нет статической хери, решили так вот поменять. На вскидку не вспомню дает это что либо или нет.
> хуета вроде inner class или companion object?
inner class специально сделан, чтобы показать что эта хуйня дорогостоящая, требует иниц. класса родителя и захватывает ссылку на него, что в джаве было просто class и для большинства порождало на этом мемори лики. Тут же тебе спецом. слово, чтобы было наглядно, типо: "смотри вот эта хуйня держит ссылку на класс родителя".
А вот на счет companion object согласен, уродливая некрасивая хуйня получилась (пришло, кстати, из скалы что в общем-то неудивительно), это сами же jetBrains и говорят, что об этом желеют. Ну а интенция была вынести static из класса, так реально рябит, когда у тебя вроде класс, а то тут то там эти ебучие статики функции переменные и тебе в голове надо мысленно все разносить. Но правда стоит сказать, что companion object можно избежать, выноси просто функции и константы на пакетный уровень.
>Но правда стоит сказать, что companion object можно избежать, выноси просто функции и константы на пакетный уровень.
Придется звездочкой импортировать, в последствие уже и не понятно будет какие тут константы/функции свои, какие пришли от импорта.
Такая же модель в питоне и они ругают звездочку.
Зачем звездочкой? Они по имени импортятся замечательно, просто не разрешай "умной" идее юзать звездочку.
Посоветуй что можно по груви почитать посмотреть кроме официальных документаций и хвалебных од Баруха?
Покормлю тебя немножко, вдруг задумаешься.
Смотри, когда тебе надо уже подрасти и писать много кода и ну и читать много кода, в том числе чужого а твой код через год будет чужой ты замечаешь, что динамико-дрисню очень сложно сопровождать. А всякие мелкобаги с типизацией вводят вообще в уныние и ты понимаешь что все это не серьезно и не для твоего уровня.
Да и качество библиотек в динамо-деве просто добивает тебя.
Тогда встает вопрос - выбрать статический язык.
Но когда начинаешь искать, понимаешь, что кроме джавы ничего толком и нет. Шарп не нужен, тайпскрипт унылая и кривая обертка, го вообще костыль из сплошного бойлерплейта. Но и джава достаточно уже топорна, не хочется страдать после динамико-дрисни.
Так как нам нужен рабочий вменяемый язык, поэтому скала отпадает сразу, остальное полудохлое. Остается только Котлин.
То есть, получается что серебряная пуля котлина, это возможность писать на "джаве" jvm, без джавы.
Поэтому если хочешь потролить и задеть за живое, ты должен найти плюсы и удобство в джаве или в другом языке. Голословные выпуки, что котлин убог - ну это не задивает и вообще мимо проходят, потому что все равно он лучше чем писать на джаве, или другом статик-языке для веба
> шарп не нужен
> тайпскрипт кривой
> скала сложна
Ты сначала намекаешь на то, что мой пост был троллингом, а потом сам вбрасываешь толстоту.
> То есть, получается что серебряная пуля котлина, это возможность писать на "джаве" jvm, без джавы
Ты ебанько чтоли? Я так и написал:
> Единственный его плюс в том, что он лучше джавы
Всё. В остальном как языке это говнище костыльное.
Вот появиться новый вменяемый язык для бэкенда, сразу с 100500 готовых либ как у жабы. Вот тогда можно будет напрячься. Самой джаве рост тоже вредит, там у тырпрайза свои правила и обратную совместимость не нарушить - а значит красивого синтаксиса уже не видать, без выпиливания старья. не удивлюсь что тырпрайз зависнет на какой-нибудь 8 версии, как в свое время на 6
> скала сложна
Ты путаешь "ненужно" со сложным. Сложного там нет.
Мы же работать хотим, а не играться дома в пет-проекты, которые забросишь уже завтра.
>вбрасываешь толстоту
Сама истина бро, какая там толстота.
> Единственный его плюс в том, что он лучше джавы
> Всё. В остальном как языке это говнище костыльное.
У тебя шизофрения.
Опять же, повторюсь - то что она лучше джавы - этого достаточно.
А, так ты долбоеб просто. Тогда нахуй иди.
бля я спросил так как я никогда не видел грувистов, сам то на жаве/котле пишу, просто интересно, расширяю очко кругозор
>>55982
Если и в поиске все плохо, то тупо юзай fat jar, аналог сборки все в одно, как скажем в го
https://ktor.io/servers/deploy/packing/fatjar.html
Результат победы котлин - 120, js - 82
Сам разбор по 10 балльной системе:
-Популярность
J - 10
K - 1
-Наличие библиотек
J - 7
K - 10 // спасибо джаве
-Качество библиотек
J - 3
K - 9 // мобильное говнише все же есть, но наследие джавы хорошее.
Рефакторинг
J - 1 // Только через поиск, средства IDE под сомнением и мажут.
K - 10
-Изучение/исследование кода
J - 3 // Динамика, только через отладку. Но более простая форма восприятия кода, ибо динамика.
K - 8 // Статика - легко, но обилие абстракций в ООП мире джавы - требует больше и опыта усилий.
-Документация библиотек (из-за нехватки которых приходиться исследовать код)
J - 5
K - 8
-Динамичность, гибкость, рефлексия
J - 10
K - 4
-Программирование хэш мапами (мапы - есть структуры)
Стиль программирования, где оперирование данными важнее алгоритмов, то есть превосходство бизнес логики над кодом (не все это понимают, но такое существует, clojure программисты меня поймут)
J - 10 // даже в питоне не так круто как в js, все мапы это объекты.
K - 0 // ненужно, другой стиль
-Статика, структурированные данные и код.
J - 2 // Достижимо частично за счет JsDoc
K - 10
-Кроссплатформенность (фронт и бэкенд)
J - 9 // есть общее, но все равно для галочки
K - 4 // Возможность есть, но пока еще непонятно насколько это удобно (не изучал)
-Производительность
J - 4 // хз почему так плохо, вроде полностью асинхронный и jit есть.
K - 10 // Местами джава библиотеки идут вровень раста и обгоняют С++, это просто показатель того, что не надо разменивать удобную джаву на что-то еще, для обычных проектов.
-Маштабируемость
J - 8 // за счет разделение на процессы, подход сразу масштабируемый
K - 7 // Нужно заранее об этом задуматься, достигается только через специальные фреймворки/библиотеки (или юзать как js по процессам между машинами без общих состояний внутри). Но качество масштабируемых библиотек у джавы на высоте.
-Синтаксис
J - 3 // наследие древних костылей, только c ES6 стало немного лучше
K - 9 // Есть бесячие мелочи, но в целом, как альтернатива джаве - идеален.
-Системные потоки
J - 0 // их нет
K - 10
-Асинхронное программирование
J - 7 // Не все еще до промисов добрались, в той же node еще не видно асинков. Так же все только в одном потоке. Несмотря на асинхронную природу, производительность реальных фреймворков оставляет желать лучшего.
K - 10 // Полный контроль потоков и горутин, отсутствие потребности писать асинк-авей (код в в suspend функциях получается как в го)
-Синхронное программирование
J - 0 // невозможно, т.е. можно тупо повесить весь процесс.
K - 10 // изначально синхронный
Результат победы котлин - 120, js - 82
Сам разбор по 10 балльной системе:
-Популярность
J - 10
K - 1
-Наличие библиотек
J - 7
K - 10 // спасибо джаве
-Качество библиотек
J - 3
K - 9 // мобильное говнише все же есть, но наследие джавы хорошее.
Рефакторинг
J - 1 // Только через поиск, средства IDE под сомнением и мажут.
K - 10
-Изучение/исследование кода
J - 3 // Динамика, только через отладку. Но более простая форма восприятия кода, ибо динамика.
K - 8 // Статика - легко, но обилие абстракций в ООП мире джавы - требует больше и опыта усилий.
-Документация библиотек (из-за нехватки которых приходиться исследовать код)
J - 5
K - 8
-Динамичность, гибкость, рефлексия
J - 10
K - 4
-Программирование хэш мапами (мапы - есть структуры)
Стиль программирования, где оперирование данными важнее алгоритмов, то есть превосходство бизнес логики над кодом (не все это понимают, но такое существует, clojure программисты меня поймут)
J - 10 // даже в питоне не так круто как в js, все мапы это объекты.
K - 0 // ненужно, другой стиль
-Статика, структурированные данные и код.
J - 2 // Достижимо частично за счет JsDoc
K - 10
-Кроссплатформенность (фронт и бэкенд)
J - 9 // есть общее, но все равно для галочки
K - 4 // Возможность есть, но пока еще непонятно насколько это удобно (не изучал)
-Производительность
J - 4 // хз почему так плохо, вроде полностью асинхронный и jit есть.
K - 10 // Местами джава библиотеки идут вровень раста и обгоняют С++, это просто показатель того, что не надо разменивать удобную джаву на что-то еще, для обычных проектов.
-Маштабируемость
J - 8 // за счет разделение на процессы, подход сразу масштабируемый
K - 7 // Нужно заранее об этом задуматься, достигается только через специальные фреймворки/библиотеки (или юзать как js по процессам между машинами без общих состояний внутри). Но качество масштабируемых библиотек у джавы на высоте.
-Синтаксис
J - 3 // наследие древних костылей, только c ES6 стало немного лучше
K - 9 // Есть бесячие мелочи, но в целом, как альтернатива джаве - идеален.
-Системные потоки
J - 0 // их нет
K - 10
-Асинхронное программирование
J - 7 // Не все еще до промисов добрались, в той же node еще не видно асинков. Так же все только в одном потоке. Несмотря на асинхронную природу, производительность реальных фреймворков оставляет желать лучшего.
K - 10 // Полный контроль потоков и горутин, отсутствие потребности писать асинк-авей (код в в suspend функциях получается как в го)
-Синхронное программирование
J - 0 // невозможно, т.е. можно тупо повесить весь процесс.
K - 10 // изначально синхронный
Спасибо
Ладно, я разобрался. Только у меня почему-то генерируется два файла, один от shadow и другой 0.0.1.jar. Как отключить его генерацию? я до этого уже пытался сделать генерацию jar, может это последствия
В общем ниебу зачем оно нужно, и без него работает.
Другой вопрос.
Я использую nginx для reverse proxy и при попытке сбилдить jar мне выдается ошибка что адрес занят. Приходится каждый раз при билде менять в конфиге сайта proxy pass на другой, билдить jar и возвращать. Как это пофиксить?
А, понял. У меня старые прослушивания висят и какого-то хуя не завершаются при закрытии ssh или даже при exception.
Как мне заканчивать прослушивание порта?
Не понял про что ты, но вероятно приложение работает, нужно его завершить нормально (или убей процесс)
Посмотри это:
https://ktor.io/servers/features/shutdown-url.html
Вот еще
https://dev.to/viniciusccarvalho/graceful-shutdown-of-ktor-applications-1h53
Если юзаешь io.ktor.server.netty.EngineMain.main
То там уже прописан хук, просто убивай процесс
>io.ktor.server.netty.EngineMain.main
Оно:
https://github.com/ktorio/ktor/blob/6c724f804bd6f25158d284d05c49235c67573019/ktor-server/ktor-server-cio/src/io/ktor/server/cio/EngineMain.kt#L18
>просто убивай процесс
Конечно я про сигналы SIGTERM или SIGINT (Ctrl + C)
>я до этого уже пытался сделать генерацию
Есть таска гредла "clean" (тупо удаляет что насоздавало), имеет смысл иногда почистить, когда магию ловишь.
Он не нужен. Котлин надо учить так:
1. Учишь джаву до уверенного уровня
2. Пару дней листаешь мануалы по котлину
3. Все, ты можешь писать на котлине
https://play.kotlinlang.org/koans/overview
Ну и вообще:
https://kotlinlang.org/docs/reference/
>>56706
>Все, ты можешь писать на котлине
Можешь. Но, лучше не надо.
Ты не понимаешь. По письму складывается впечаталение о человеке. Если я вижу какую-то наитупейшую грамматическую ошибку, то у меня подсознательно возникает чувство неприязни к автору.
>подсознательно возникает чувство неприязни
Ты же понимаешь что это у тебя какой-то нездоровый невроз и тут в этом кроме тебя никто не виноват? Ты видимо недавно в интернетах, у тебя еще комплекс новичка, когда они даже в мессенджерах пытаются кого-то поправлять точку забыл или с не заглавной буквы написал, а на них как на идиотов смотрят.
Никто ради тебя, даже грамотные, не будут в постах на двачах напрягаться, потому как не у все выработан скилл писать грамотно на лету. Это как письмо в две руки, надо набивать руку или писать постоянно напрягаясь, вспоминая правила.
Не ты и не я этого не стоим.
Более того правила языка избыточно усложненные и я понимаю людей, которые кладут болт вообще и пишут на уровне "ну ты меня понял", потому как в этом мире важна информация, а не как её подали.
Именно так.
>>56748
Грамотность встраивается на уровне подсознания.
И оценка своей и чужой грамотности происходит тоже на уровне подсознания.
Были исследования, которые показали, что человек, сделав ошибку при написании слова/предложения испытывает физический дискомфорт в области шеи и позвоночника. Это было именно измерено, как электрические импульсы. Сто лет назад смотрел видео про это.
Т.е., здоровый грамотный человек начинает плохо себя чувствовать, читая безграмотный высер тупого малолетнего долбоёба.
Чем плохи безграмотные тексты?
Их трудно читать и понимать. Они напрягают.
Потому, что чтение тоже происходит на уровне подсознания.
Чтобы грамотно писать, нужно просто много читать.
Качественных текстов, лучше всего - книг.
Также, нужно понимать, что для программиста одним из важнейших навыков является исключительно хорошее владение родным язывком (Дейкстра).
мамку ебал)
>Были исследования, которые показали, что человек, сделав ошибку при написании слова/предложения испытывает физический дискомфорт в области шеи и позвоночника
Ой, иди на хер с этой херней. Это тред про котлин, а не про твои проблемы восприятия мира. А реальность такова - я делаю ошибки и буду делать ошибки и пусть у тебя болит в области позвонков седалищного нерва.
>что для программиста одним из важнейших навыков является исключительно хорошее владение родным язывком
А охотнику очень важно уметь играть на пианино.
Иди лучше код попиши, не занимайся мракобесием
>Ты видимо недавно в интернетах, у тебя еще комплекс новичка, когда они даже в мессенджерах пытаются кого-то поправлять точку забыл или с не заглавной буквы написал, а на них как на идиотов смотрят.
Никого не поправляю, но общение к безграмотным человеком свожу к минимуму или прекращаю. Безграмотный человек всегда ограничен, и поэтому я не могу почерпнуть от него ничего полезного, интеллектуально или духовно обогатиться. Поэтому я предпочту почитать книгу или документацию, чем общаться с тупым малолетним дебилом в седьмом поколении.
Спасибо, тебе анончик
Мне кажется такие проекты как javalin, выглядит именно так как нужно было делать микро-сервисное приложение.
Надеюсь когда-нибудь в джава мире появиться что-то разумное как flask у питона, где люди хотя бы стараются делать нормально.
В джава мире очень ОЧЕНЬ дохуя всего.
Но, школота этого осознать неспособна.
Алсо, писать что-то о тормознутости и пизданутости, и приводить питон как контр-пример, это реальная хуцпа, лол.
>В джава мире очень ОЧЕНЬ дохуя всего.
Стоит только выйти за стандартно де-факто либ, таких как спринг, хибернейт и еще что-то там, так тут же навернешь говна из библиотек-калек. Такое ощущение, что вне признанных библиотек обитают перекатившиеся из пхп программисты.
>Но, школота этого осознать неспособна.
Что мешало запилить подобие Flask, где есть банальный url_for, который просто умножает на ноль рефакторинг url в будущем? Нет, не одного фреймворка который бы это сделал кроме возможно play, но магические говно-рельсы не в счет. Так же нет фреймворка, который бы позволил бы расширить роутинг своим роутером только писать самому с нуля на платформенных вещах как netty или undertow
Кто мешает написать нормальный логер, который бы инициализировался нормально в main, чтобы можно по всему проекту сделать единый конфинг, а не йоба xml раскиданные в resource.
Почему спринг тормозит как джанго, но на джанге в 1000 раз быстрее и легче запилить пет-проект? потому что у них в тырпрайзе проще докупить кластер, переживать за какую-то производительность
Что за трешак этот ваш gradle, почему у него получается работать по разному если стартовать в консоле и в IDE? Как вообще это возможно. Нафига они поменяли подходы и теперь есть куча примеров из старых подходов и как их добавлять в новые непонятно.
Почему я вообще должен страдать, когда мне тупо надо либо подтянуть. Почему он тормозит как блядский асфальтовый каток!!!
>Алсо, писать что-то о тормознутости и пизданутости, и приводить питон как контр-пример
Так в питоне ты размениваешь простоту на производительность.
Самое интересное, что по сути никто не мешал делать удобные маленькие фичик-пакеты как в питоне. Почему в питоне тупо делают для людей, а в джаве как-будто "лишь бы работало вообще".
PS кстати, пробовал почитать сорцы на котлине, и если жабо код кое как читался мной, то котлин лямбда магия для меня просто нечитаема.
Я когда с C++ пришёл в джаву - был очень рад тому, что код снова можно читать, а не тыкаться глазами о ебучие символы. Спустя полгода меня вообще перестала пугать многословность, в сравнении с тем удобством, которые даёт строгость джавы.
Про котлин все говорят, что джависту в него легко вкатываться, но, бля, я не понимаю, как после джавы с красивымиЦепочками.методов.в.верблюжьемРегистре.дляРешенияЛюбойПроблемы() можно вкатываться в эти бесконечные двоеточия, знаки вопросы, звёзды, ёлочки и прочее
Двоеточия там и правд лишние, при условие что их же IDE могла бы красиво подрисовывать где типы, где переменные.
Верблюжья нотация, на самом деле, жопа. Конечно привыкаешь и нравится, но подчеркивание читается легче, просто в моно-шрифтах подчеркивание_слишком_длинное_и_режет_глаз
Меня в джаве все устраивало, хотелось только алиасов для импортов и что-то уже сделать с геттерами и сеттерами.
PS
Был код, где были дата классы тупо с паблик полями и за 4 года, никому даже в голову не пришло натянуть логику геттера и сеттера. В общем, эта хрень сильно притянута за уши.
красивыеВерблюжьюЦепочки никуда от перехода но котлин не исчезают.
Где ты нашел бесконечные двоеточия и елочки, я не понимаю.
Знаки вопроса... За возможность писать foo?.bar?.baz вместо сам понимаешь чего на джаве можно и потерпеть знаки вопроса.
В питоне нет простоты.
Она там была 20 лет назад (и в сравнении с тогдашними альтернативами, и вообще).
Теперь там есть хуета.
И именно её ты получаешь в обмен на производительность.
И нынешний хайп вокруг питона вообще никак не связан с достоинствами языка.
Насчет градла кароч. Когда ты тыкаешь в идее на молоток он юзает под капотом gradle toolbox или как то так, а не исполняет конкретный таск, поэтому и по разному работает, так что это всё жидбрейнс виновны
тыкай таски справа в выдвигающемся окошке и забивай хуй на молоточек. А вообще у меня всего одна такая ситуация была
Какие 20 лет назад, ты про баганутую 2.0? Это же жесть.
Я вообще не понимаю как он с косяками тогда еще заходил кому-то.
на самом деле и не был популярен
>Теперь там есть хуета.
В сравнение с джавой, там просто отдых.
Я серьезно, пора уже принять что качество либ там на отвратительном уровне.
>И нынешний хайп вокруг питона вообще никак не связан с достоинствами языка.
МО тут не сильно сыграло, скорее есть потребность в хорошем динамически строгом языке Конечно питон не из этого счета, он просто наименьшее зло из других
И кстати го за счет этого и выстрелил. Люди хотели производительности, но в джаву не хотели.
Хотя язык сам по себе хорош
>python
>хорошем динамически строгом языке
>go
>язык сам по себе хорош
Не продолжай, мы уже поняли, что ты говноед.
>ты про баганутую 2.0
Я про 1.5.2.
И про 2.1 - 2.2.
>на самом деле и не был популярен
Был, был. И заслуженно.
На нём писали реально большие системы.
Бизнес софт писали на полном серьёзе, ERP и прочую хуергу.
Но, всё когда-нибудь заканчивается.
Сейчас питон - это архаизм.
Клей для сишных либ и бейсик для админских скриптов.
>динамически строгом
Ага. Натурально гомосексуальном.
Динамические языки немножечко подзаебали уже всех, за эти самые 15-20 последних лет.
Ожидания не оправдались.
Руби, кстати, сдулся именно поэтому.
А джава, именно поэтому, поднялась.
> качество либ там на отвратительном уровне
>Я серьезно
Это, случайно, не ты в ньюфаг-треде пишешь про то, что английский учить не надо?
Риторика очень похожая.
Иди уже почитай про строгую типизацию, фантазер ты наш.
>А джава, именно поэтому, поднялась.
Не поэтому, поверь.
>Это, случайно, не ты
Нет, я бы писал что математику учить не надо.
Там фильмец о твоей Даше сняли.
Доре не надо использовать Eclipse.
И логика сразу найдётся.
Алсо, JBoss/Spring/Hibernate хуета != джава мир.
Так же, как и мейнстрим != лучшее.
95% чего угодно - говно. Но, я не беспокоюсь, мне хватает оставшихся 5%. ©
Это не говоря уже о том, что Spring и Django - разные вещи, для разных целей. Джанго тебе с вордпрессом сравнивать надо.
>>57989
Какая-то она худая.
Ляжки как спички.
>JBoss/Spring/Hibernate хуета != джава мир.
Как толсто андроид детё
>Так же, как и мейнстрим != лучшее.
>мне хватает оставшихся 5%
Так перечисли нам свой стек, а то только пердишь в треде.
>Это не говоря уже о том, что Spring и Django - разные вещи, для разных целей
Конечно, я про это и говорю, куда там до джанги. Тут дело то не в этом, а в том что твоя джава тормозит как джанга, но с джангой и рядом не стояла
Дора и потерянная бизнес-логика.
>твоя джава тормозит
Твоя джава тормозит.
Как я уже говорил, питоноёб, рассуждающий в котлин-треде о тормознутости джавы - это просто какая-то нереальная хуцпа.
Котлин это язык, который позволяет тебе нормально писать над "рантаймом" jvm, не используя джавы
Да, там IDE юзает другую версию jvm
Не понял(
Предлагаю нарезать выдержки для шапки следующего треда.
Там еще был сайт с котятами про котлин
И какой-то дед или мужик с голосом деда на ютубе рассказывает в 4:3 экране почему нужно учить котлин и питон. почему идея вообще стартанула на его старой пеке
Я уже давно хотел выучить программирование, не для заработка даже, а для бытовых программ(давно хотет написат парочку, для себя, рутинные). Погуглил, нашёл Go очень приятным + рекомендации хорошие, уже прошёл урок.
Таже глянул урок по Джаве - Яве - и она покзалсь мне слжнее, синтаксиси глаза режет.
НО: Го даже на Западе, не говоря уж о России, не очень популярен, вакансий мало, а если есть - нужны опытеы люди, сеньоры. А Джава нужна везде.
Тут я говорю о том, что мб нужно брать язык с прицелом на утройство на работу? на шее сидеть заебало, а больше у меня особых компетенций нет.
Вас тут легион желающих вкатиться в ИТ ради работы и бабла и где-то смело 95% отваливается по пути.
Поэтому бери что хочешь, скорее всего до конца ты не дойдешь.
Ну а если дойдешь, то уже через 2-3 года поймешь, что программирование, это унылое и неблагодарное занятие и мечты о супер топ компании и выезда за границу, уйдут так же быстро, как ероха-менеджер в пятницу вечером, у которого зарплата будет больше чем у тебя.
Котлин еще менее популярен чем го, если не брать в расчет легион аналдроида.
С го у тебя будет меньше шансов попасть в легаси EE или чего еще хуже. То есть, даже с котлином ты по любому случайно наступишь в "джаву".
Имхо, джава намертво сидит в кровавом тырпрайзе и ты о ней слышал, скорее всего, только благодаря аналдроиду. А так это COBOL нашего времени. Более того, те кто сидит в кровавом, им вообще срать на ваши скалы, груви и котлины.
- добавили перегрузку операторов,
- добавили возможность писать строки-шаблоны,
- вместо equals теперь можно писать ==,
- к листам и массивам можно стало обращаться через [index], вместо .get(index) и .set(index, value). Жаль только что не запилили подобную фичу для ХешМепов, но может быть еще запилят в следующих версиях.
Но в то же время, по непонятным причинам, в котлине испортили некоторые очень годные вещи. Вот возьмём к примеру классы. В джаве всё было предельно красиво реализовано:
есть объявление класса, внутри список свойств, один или несколько конструкторов и методы. В котлине же вместо этого какая-та абракадабра, с размазанными по файлу конструкторами,
>>51617
Теперь следующий вопрос: когда я быстро скроллю туда-сюда, у меня иногда приложение подвисает: я пальцем провёл слева направо, ноль отклика, а уже потом, через 500-1000 мс приложение само доскроливает направо. Как я понимаю, дело в том, что карточки из RecyclerView удаляются из памяти, а потом загружаются туда заново.
Можно ли с этим что-то сделать? Прогружать (инстанцировать заранее) наперёд N карточек? И наоборот, не удалять последние N карточек, которые были проискроллены.
Заранее спасибо
То, что ты перечислил как "серьёзные недостатки" - это просто полная хуйня.
Перегрузка операторов - так вообще зло, а не благо.
У джавы нет недостатков которые не были бы продолжением достоинств.
В этом и причина её огромной популярности и востребованности.
Котлин даже близко не сравнится с джавой в этом смысле.
В нём куча весьма спорных решений.
И он неудобочитаемый (если код сложнее хелловорлда).
Скала выглядит приличнее, но, там куча своих тараканов.
Поэтому, джава + груви = наш выбор.
>У джавы нет недостатков которые не были бы продолжением достоинств.
В чём например достоинство необходимости писать .equals вместо сравнения при помощи == ?
>Перегрузка операторов - так вообще зло, а не благо.
Если использовать перегрузку операторов в адекватных случаях, то никаких проблем не возникнет.
>необходимости писать .equals вместо сравнения при помощи == ?
Это не "необходимость".
Это - вызов метода equals().
Который может (и, часто, должен) быть переопределён у твоих объектов.
А когда у тебя написано ==, а на самом деле вызывается equals() - это хуйня.
В джаве нет двусмысленностей. И это очень ОЧЕНЬ большое достоинство.
Спасибо
>В джаве нет двусмысленностей. И это очень ОЧЕНЬ большое достоинство.
Ну а как же тогда метод toString(), который можно вызвать прибавив объект к строке:
"" + object
equals() - это наверное даже еще более важный метод и он вполне заслуживает собственный оператор.
Да понятно, что есть свои плюсы в том, чтобы использовать ==.
Меньше букв, например.
Но, надо понимать, что есть ещё и reference equality.
И в джаве всё логично: "==" - для примитивов (и ссылок, трактуемых как примитивы ("адреса") в этом случае), а метод equals() - для объектов.
>Ну а как же тогда метод toString(), который можно вызвать прибавив объект к строке:
Ого! Скоро ты узнаешь еще больше о приведении типов!
А потом, может, кто-нибудь тебе подскажет, что приведение совершенно однозначное и описано в спецификации.
>Если использовать перегрузку операторов в адекватных случаях, то никаких проблем не возникнет.
Я уже в коде видел треш когда плюсуют какой-то объект с каким-то другим (и это не числа, не коллекции, не строки) и честно признать это взрывает мозг потому, что непонятно, как можно сложить "кровать и лампочку".
Для этого достаточно чтобы у оператора + была сигнатура не позволяющая так делать
>добавили перегрузку операторов
Там многие не видят момент, что они реализовали подобие __оператор__ из питона. Это круче чем банальная перегрузка операторов.
Но тут же встает вопрос, почему не сделали перегрузку оператор ":" потому как key to value - это жопа, в том числе для их распиаренного DSL которые, если по честному, не так уж и прям и гибкая удобная штука. Иногда проще билдер через точку реализовать, чем возиться с множеством объектов DSL
>- добавили возможность писать строки-шаблоны,
>вместо equals теперь можно писать ==
Да, это круто, 21 век на дворе.
Но это просто сахар, который делает работу на джаве чуть красивее, не более.
Но было бы круто если бы они пофиксили джаву и все, но их же понесло
Переставили типы, надобавляли двоеточий, "companion object" - это видимо врожденная скрытая тяга писать длинные конструкции типа "public void static", с объявлением классом - да, перемудрили. По-закрывали классы, не дали полноценной гибкости в идентификаторах видимости для get и set потому что не хватило мозгов увидеть юзкейс. Сделали нулл-безопасность, но при этом дженерики по дефолту с нуллами. Даже корутины умудрились по другому сделать, не так как у всех.
И в целом кажется все продумано, но начинаешь писать код и комбинировать все эти вещи и понимаешь что все это топорно и сделано без души.
Господи, даже нет делегата проперти на проперти, первое с чем сталкиваешься когда строишь DSL то есть они по сути делали через мапы и поэтому есть сахар делегатов для мапы
Нет наследование в дата классах. Вообще когда начинаешь делать с ними что-то, понимаешь что они мало юзабельные. Больше напоминаю js объект который можно сделать налету, чем часть домен системы.
Это запутанность с return в лямбдах и инлайн функциях
Для основных структур - листов и мап можно было бы сделать урощенный синтаксис [] и {k:v} лол, тут бы и пригодился перегруженный ":"
>>58956
Но фатальный недостаток котлина - это отсутствие толстой стандартной библиотеки и флагманских проектов.
Другой момент, лично у меня вызвал мгновенное отторжение, это заявленный интероп с джавой, но на деле все не так гладко по синтаксису есть доклады, да и чтобы работать с каким-нибудь хибернейтом или спрингом нужны были плагины-фиксы. У меня тогда появилось сильное чувство, что меня пытаются нае...ть
> По-закрывали классы
Классы не закрывают только разгильдяи, которые ни одной публичной либы не суппортили. Но если у тебя не либа, то плагин allopen и вперед.
> не дали полноценной гибкости в идентификаторах видимости для get и set
set можно делать менее видимым, чем get. А тебе что надо, наоборот? Ищь чего захотел, извращенец.
>Классы не закрывают только разгильдяи, которые ни одной публичной либы не суппортили. Но если у тебя не либа, то плагин allopen и вперед.
У нас было ООП, мы с ним носились как с граалем, каждому рассказывали как он может просто взять и расширить функционал другого класса, но вдруг оказалась что это не лучшая практика, из-за хрупкой цепочки наследования, поэтому мы запретим.
И что получилось, те кто будут делать хрупкую цепочку, оно все равно это будут делать. А Васян, которому надо было про-мокать какой-то класс, остался в сосничестве.
Ну не лол же? Почему программисту надо вообще что-то запрещать или вставлять палки в колеса? Программист как бы может за себя постоять и решить как он будет делать, он же не даун, которого надо постоянно направлять. Он так и ООП перестанет юзать, раз ему основной функционал обрезают.
>set
Простая ситуация DSL, когда тебе надо записывать "конфигурировать", но не ненужно читать. Точнее не нужно чтобы поля фигурировали в правых выражениях get. Тут нам и требуется публичные set, приватный get.
То что разработчики языка возомнили себя самыми умными и просрали юзкейс из их же хваленной DSL, очень много говорит о языке.
Тут даже просто смотри - зачем это нужно было запрещать? Добавила бы это говнокода? Нет конечно. Они просто решили что умнее других, или не видели билдеры на set'ах.
PS
ну а то что получается вот так?
get() = field
set(value) = { field = value }
Говнокод же и так во всем языке. Как только твой юзкейс выходит за рамки презентации, ты натыкаешься на какие-то костылики неприятные.
Нужна серебряная пуля, или хотя бы хороший флагманский проект. тут дарт молодец с флаттером Но они потратились на другое. От части успешно, например каландроиде. Хотя вне каландроида он не получил успеха.
А именно бэкенд надо сейчас откусывать у таких кривых титанов как джавы/пхп/js/... Причем го показал, что можно быть еще кривее, но все же суметь откусить большой кусок, если только убрать вирт машину, убрать ООП и дать асинхронность по-умолчанию.
Я слышал что вроде на gradle не все так хорошо получилось? Они вроде смогли туда его пропихнув, добив груви, но что-то пошло не так?
Вот например корутины. У нас есть такие сущности как диспетчер - окей, контекст - окей, скоуп - нууу ладно, билдер - таак...
И вроде смотришь и все понятно, но потом спрашиваешь себя и не можешь за каждую сущность объяснить.
В этом весь ООП, они покрыли кишки сущностями, но не покрыли эти сущности интерфейсом (не за-дизайнили).
Нельзя было проще сделать, тупо какой-то диспетчер, который бы и запускал все эту херню и был бы доступен изнутри как контекст и все? Мы бы просто оперировали какими-то диспетчерами и мозги бы не распухали при видя очередной лямбды.
Я наверное слишком тупой, поэтому пойду на го.
Апи курутин реально хуевое и конченное. Они решили выебнуться и выкинуть курутины в отдельный пакет из стдлибы, при этом все равно засрав стдлибу и язык дефередом и саспендом. А могли не выбеваться и сделать как в няшном шарпе с async await и полноценной Task<T> и как в дарте.
>А Васян, которому надо было про-мокать какой-то класс, остался в сосничестве.
Васяну пора научится делать интерфейсы.
>все это топорно и сделано без души.
>>58958
>меня пытаются нае...ть
Да, это именно то чувство.
Сначала смотришь - о, какая классная штука!
Дождались! Наконец-то!
Нахуй эту блядскую скалу!
А потом - опа, а оно всё картонное.
А внутри - говно и палки.
>>58988
>бэкенд надо сейчас откусывать
Анус они себе откусят, я думаю.
Вот это вот ощущение "наебали" - оно у каждого первого.
На андроиде люди просто вынуждены это использовать.
А на бекэнде - извините.
>убрать вирт машину, убрать ООП
Понеслась пизда по кочкам, лол.
>добив груви
Разве что в твоих маня-фантазиях, лол.
Это разные языки, чувак. С разными целями.
И Груви - продуманный. Котлин - см. коммент выше.
>>убрать вирт машину, убрать ООП
>Понеслась пизда по кочкам, лол.
Если тут есть такие матёрые программисты, которые не просто с гита либы ставят, а ныряют в пучину чужого говнокода, то они поймут один момент. Текущий уровень ООП, он не совсем тот который пишут в книжках и преподносится. Если в книгах нам рисовали реальность в которой программист видит мир объектами пиздешь конечно и люди кодили в этой парадигме, то сегодня хорошим тоном является писать код небольшими методами и маленькими классами. То есть, достигается эффект, когда класс максимально решает только свою узкую задачу, подобие как в ФП пишутся функции. И вроде даже это логично, но вот только классы это не функции. На деле, очень низкоуровневый домен (бизнес-задача) покрывается таким же слоем низкоуровневых классов. Где бы в старой парадигме программист сделал бы 3-5 класса, сегодняшний джава-господин сделает 10-15 сущностей из полупустых классов. И получается, что наша логика она не решается где-то в каком-то наборе алгоритмов, она как бы размазывается на все эти классы и при этом она остается такой же низкоуровневой.
Изучать это код и сопровождать становится нереально. И именно поэтому одинаковые по сложности задачи, тот же питонист или гофер - решает проще и быстрее. Именно поэтому люди тянутся к функциям и ФП, которые дают возможность решать проблемы, а не оборачивают их.
>То есть, достигается эффект, когда класс максимально решает только свою узкую задачу, подобие как в ФП пишутся функции
> Именно поэтому люди тянутся к функциям и ФП, которые дают возможность решать проблемы
Логика уровня /б
> И именно поэтому одинаковые по сложности задачи, тот же питонист или гофер - решает проще и быстрее
Мантры уровня /б
Есть кто писал на груви? Я правильно понимаю, что груви это почти всегда grails или spring тоже ебошат? Что посмотреть почитать по грувям?
Лично я пишу всякие вспомогательные вещи.
Тестирование, скрипты, утилиты и т.п.
Spock посмотри, например (хотя, лично я его не использую).
Т.е. это такой питон/руби но в джава мире.
(Jython/JRuby - не то, я пробовал, при том, что и тот и тот я знаю).
Консоль можно к веб-приложению прикрутить, по типу https://groovyconsole.appspot.com
И т.д.
Как полностью самостоятельный язык - немного не то, лично для меня.
Но, можно писать части джава проекта на груви - вообще беспроблемно.
Почитать:
http://www.allitebooks.org/groovy-in-action-second-edition/
http://www.allitebooks.org/making-java-groovy/
http://www.allitebooks.org/learning-groovy-3-2nd-edition/
Последняя - новая и очень компактная.
google: baeldung groovy
Запусти в той груви веб-консоли вот это:
f = new File(".")
f.eachFileRecurse {
println it.path
}
println "OK"
На самом деле - это приложение в гуглооблаке (GAE).
Исходники есть на гитхабе, см. ссылку на сайте.
круто, чекну
>Как полностью самостоятельный язык - немного не то, лично для меня.
Зачем тогда мараться в нем? Не проще ли взять реальные скриптовые языки.
Я выше уже написал, что потратил достаточно времени на Jython и JRuby.
Тот и другой язык я хорошо знаю.
И это всё не то, если речь идёт о джава-платформе.
И чем, интересно, груви не "реальный скриптовой язык"?
Реальнее некуда.
>мараться
Ну, так не марайся, лол.
Почему так привлекает jvm мир, это же мир жрущего все ресурсы, интерпретированного до jit говна
Процесс руби или питона будет отъедать меньше озу, чем груви на jvm из-за самой jvm
Джава (платформа) - это инструмент для создания больших программ.
Большой и сложный инструмент с развитой экосистемой.
Ресурсов оно потребляет соответственно классу решаемых задач.
Не так и много, на самом деле.
И работает очень быстро.
Питон отдыхает, про руби и речи нет.
Груви - интегрирован в энтерпрайзное приложение, например.
Все внутренности доступны в скрипте прямо в процессе работы.
А процесс руби или питона - это именно что процесс руби или питона.
А JRuby, например, и быстрее нативного, и тоже, вроде бы, интегрируется в джава-приложение (и лучше, чем Jython). Но, это не то, это соединение чужеродных вещей. Так делали, пока груви не заматерел - года до 12-го, примерно.
>Джава (платформа) - это инструмент для создания больших программ
Насколько больших?
>с развитой экосистемой.
Что значит с развитой?
PS не троллю, просто не люблю абстракцию
>Насколько больших?
Очень больших. Огромных.
Информационные системы банков, крупных корпораций, госструктур.
Например - госуслуги, всякий роспотребнадзор, ветис, etc.
Чаще всего - это закрытые корпоративные системы, о которых широкая публика просто ничего не знает. Которые, часто, разрабатываются своими программистами. Их нет на гитхабе, о них не пишут хипстеры в блогах. Не говоря уже о том, что разработчики, как правило, связаны NDA. Это огромный параллельный мир.
>Что значит с развитой?
Это значит, что существует огромное количество самых разных инструментальных средств и библиотек.
Этого добра для джавы гораздо больше, чем для любой другой платформы.
И когда говорят о том, что джава устарела, ненужна и её скоро не будет - это, примерно, как разговоры о скором крахе доллара и мировой финансовой системы. И то и другое говорят люди, не страдающие от избытка интеллекта.
Много всего. Кроссплатформенность. Простой язык. Эффективная виртуальная машина. Куча библиотек. Звёзды так встали. И т.д.
>Очень больших. Огромных.
Шел 2019 год, а народ до сих пор грезил монолитами.
>о них не пишут хипстеры в блогах
Забавно было бы увидеть как пишут хипстеры о подобие EE, но судя по твоим словам, еще и самописным.
>Это значит, что существует огромное количество самых разных инструментальных средств и библиотек.
Как только выходишь из базовых баззвордов фреймворков, сразу шмякаешь в какое-то говнецо, это маня фантазия о богатом окружение. Так же как хвастаться обилием библиотек в js. Я думаю именно из-за этого все стараются держаться старых задеревенелых решений.
Да и вообще многие решения, сплошной монолит магии. Порой только в логере больше строк кода чем в твоем приложение. Я уверен на коболе тоже было много библиотек.
PS
Какой-нибудь js или go господин, легко может взять платформенный http и накатить туда простенький REST. У джавы 100500 говна и толком нет платформенных решений, ты или натыкаешься на детские йоба фреймворки вида get("/" () -> ...) либо на платформенные гиганты типа netty или undertow, в которых разбираться не меньше чем в спрингу или хиббернейте с херовой документацией, то есть надо лезть прям API читать.
И в реальности, вся твоя вера в обилие библиотек, лопается как хрустальная туфелька на жирной ноге.
PS2
Тоже кстати и с ORM, большая часть велосипедов тупо тормозит, или явно проблемная. И после сотни часов тестирования и проб, оказывается что один из годных - это магический гигант хибернейт
Если нужен тред, перекатывайте и бампайте сами.
Вот так, примерно, этот ваш Котлин и закончится в некотором будущем.
val popularityAnimeList: Array<Anime>? = null
get() = field ?: rawAnimeList?.sortedBy { it.popularity }?.take(100)?.toTypedArray()
И это работает, но есть одно но. У некоторых объектов популярность 0 те они мне нахуй не нужны вообще в этом случае, но они попадают в самое начало массива. Возможно поместить какое-нибудь if условие, например популярность != 0, в take?
Тупорылый виабушник не знает про предикаты, не удивительно.
Да на здоровье.
Советую поупрожняться в стрим апи на степике, там есть поток бесконечных задач от JetBrains
Не влазил в кишки мокито, но в самом общем случае через прокси.
Да, за счёт создания нового байткода и изменения существующего.
Внутри mockito использует библиотеку ASM.
Groovy тоже её использует, например.
Есть ещё BCEL.
Ну вот и получается продолжая тему что язык настолько не гибкий, что приходится байткод модифицировать, то есть и так ограниченный много, а Васяну еще и классы по-закрывали.
Не удивлюсь, что в котлин версии 2 нужно будет вообще хэшмапы по количеству будут ограничены. Типа 10 штук на приложение, остальное докупай.
А то видишь ли, я сейчас начерчу график, где покажу что количество говнокода увеличивается с количеством коллекций в коде.
Шутки конечно, но если серьезно, то хуже нет когда тебя пытаются лишить того же ООП, или запрещают с геттерами и сеттерами поиграться.
Открытые классы сами по себе зло не творят, а те кто захочет и так накодяд зло.
Запрет и определенность геттеров и сетеров тоже зла не несут, вообще
Return в лямбдах - это нормально.
Лучше бы вообще от ООП отошли, тогда гляди не стали бы такие кишки писать как корутины или ktor.
Лол, мокито и в джаве используется, алло. Тебя же не смущает что всякие гибернейты и спринги тоже под капотом байткод меняют?
>>60421
Ты дурачок? Это риторический вопрос.
Что значит "настолько не гибкий, что приходится байткод модифицировать"?
Наоборот, настолько гибкий, что можно не напрягаясь делать то, для чего в си или плюсах пришлось бы слона родить.
Или ты не понимаешь, что такое компилируемый язык со статической типизацией?
Это тоже был риторический вопрос.
Жабист гордиться своими безопасными программами.
@
В жаба мире критикуется даже юзанье unsafe
@
Жабист смеется что С++ раб роняет программу с сигфолтами.
@
Жабист подключает либу гибкую, гордится либой!
@
Программа на второй фазе луны, в облачную погоду, падает хер пойми как, даже не высрав в лог
@
Жабист - считает что модификация байткода это правильно и даже круто.
Тут есть один больной хер, он просто во всех тредах пытается со всеми спорить, не важно по каким принципам. Это не ты случайно?
Как связаны модификация байткода и безопасность?
Ты, вообще, понимаешь, как оно там всё устроено?
С тем же ASM'ом работал?
Это, мягко говоря, не то же самое, что менять память в сегменте кода в сишной программе.
>Как связаны модификация байткода и безопасность?
Лол, фонд золотых цитат.
>Это, мягко говоря, не то же самое, что менять память в сегменте кода в сишной программе
А что же))
Сынок, ты немножко утомил уже.
Судя по твоим вопросам - ты в принципе не понимаешь, о чём говоришь.
Понахватался всякой хуеты по верхам, и возомнил себя специалистом.
Иди, пиши сочинение как ты провёл лето, скоро в школу.
Ищи, как перехватить исключение.
Логгинг там как-то работает же?
Отправить сообщение - это не проблема, через API сервиса.
Х.з, что там в телеге, не пользуюсь, но SMS - легко, например.
Есть один момент. Язык может уже накопить какое-то количество ответов, поэтому количество вопросов может уменьшаться.
Так же играет роль документация, на молодом языке чаще опытные программисты, которые будут нырять в доку, чем спрашивать. Спрашивают обычно ленивые копипаст-кодеры.
Данная статистика больше показывает насколько язык становится попсовым.
Все немного проще. Компании, которые попробовали Kotlin, спешно переходят на него со Scala. Если ты пробовал писать на Scala что-нибудь сложнее Hello world'a, то наверное знаешь, что тулинг для данного языка полное говно, библиотеки не имеют нормальную документацию, постоянные проблемы с обратной совместимостью, токсичное коммьюнити, сам язык имеет дохера проблем, которые никто не собирается фиксить, а все чаты/форумы, которые модерируются сотрудниками из Lightbend банят неугодных, которые пытаются донести до общественности, что у экосистемы Scala есть актуальные проблемы, которые нужно решать как можно скорее.
Никому Scala сейчас не нужна. Revolut с нее не так давно убежал как ошпаренный. Теперь клепают сервисы на Kotlin.
Тинькофф только что вбросил вакансию в java jobs - ищут разработчика на Kotlin. Т.е. и Тинек съежает со Scala.
>Теперь клепают сервисы на Kotlin
>ищут разработчика на Kotlin
А надо было им сначала почитать двач, поняли бы, какое это хипстерское костыльное говно без души.
Разумеется. Для этого есть все предпосылки. Язык получит лучший тулинг в плане IDE, о котором в принципе можно мечтать, т.к. его пилит JetBrains. И над плагином работает не 5 человек, которые дрочат баги по 3-5 лет как в Scala плагине, а минимум 10-15 (можешь сам посмотреть по трекеру) и баги фиксят молниеносно - от репорта до фикса обычно проходит не больше нескольких дней.
Kotlin исправил архитектурные проблемы Java и при этом не превратился в Scala с его ебанутым наглухо синтаксисом, медленной компиляцией, херовейшим тулингом и просто ебнутыми библиотеками, которые напрочь забагованы, тормозят (привет функциональное программирование на JVM!) и поддерживаются буквально несколькими разработчиками, а иногда и в одиночку.
Для дискуссии.
>лучший тулинг в плане IDE
Да IDE действительно подсказывает и подсвечивает годно.
Но тормозит, злобно и ужасно. После какого-нибудь vs code, просто невыносимо. для условий что нужен по сути тупо автокомплит и рефакторинг. Для средне-ноутбука тоже не пригодно.
Ну и конечно же получается что ты сильно привязан к IDE, если не скулить что есть плагины на другие IDE и прочее мы же понимаем что это не то
Да и вообще vs code, вроде как, обогнал тулинг JB, будет ли у JB будущее вообще?
Насколько актуальная вообще jvm?
Сейчас эпоха асинхронных маленьких микросервисов. Не слишком либы джавы жирнющие и для огромных монолитов? Подымаешь crud под котлином - 150мб, подымаешь crud на том же го - 10мб. Причем под котлином надо еще и jit ждать, по началу старт интерпретированный, насколько я понимаю наверное что-то на уровне пхп
Асинхронность?
Джава/котлин по природе синхронные и эта возня с корутинами, не самая удобная, в сравнение с другими синхротронный языками с async/await. Встречаются странности, например как отлавливать исключения и как они там вообще работают у меня исключения протекали из корутин вне catch
Тут еще и дарт под ногами, судя по графику уже догоняет котлин. В отличие от котлина, у которого ничего нет у дарта есть флагман, который его и тащит.
У меня, в общем, странные надежды на будущее котлина и джавы. Конечно капитал кода огромный, как у пхп и cobol и никуда это не денется, но будет ли на этом фокус?
>vs code, вроде как, обогнал тулинг JB
Пиздец, с кем я на одной борде сижу. Беги собирать портфель, недоумок.
Иди просрись, малыш
https://insights.stackoverflow.com/survey/2018#technology-_-most-popular-development-environments
Nodepade++ популярнее чем твоя IDE
не совсем так, просто новые микросервисы ебошат на котлине, а еще некоторые джава рефакторят на котлин, так что не факт что замена скале
мимо работал в тиньке
Какой хочешь - любой, который есть на jvm.
Кроме очевидного jruby on rails, лол. Хотя, можно и его, наверное.
Котлин ещё и в джаваскрипт компилируется.
Я не пробовал, правда.
Пробовал пару лет назад https://www.scala-js.org - забавно.
Но, практического смысла ноль - нет отдельного рантайма.
И всё компилируется в один толстый js файл.
И даже хелловорлд, в итоге, весит полтора мега, или типа того.
Как с этим в Котлине на жс - х.з., вообще не смотрел.
Глянул сейчас - в Котлин жс есть отдельный рантайм и стандартная библиотека. В отличие от скалы.
Выглядит интересно, возможно, попробую.
>Какой хочешь - любой, который есть на jvm.
Офигенный совет, спасибо что в гугл еще не послали.
По конкретнее можно. Ты же пишешь на джаве, какой у тебя стек (на работе/дома)
Мой стек тебе вряд-ли подойдёт, лол.
Java EE + зоопарк на фронтенде
И я не пишу на Котлине, пока.
Если буду что-то делать в ближайшее время, то это, наверное, будет что-то на Swing. В конце концов, этот ваш Котлин для этого и придумали в JB. На скале это дело у меня, в своё время, не пошло дальше экспериментов, у Котлина шансов гораздо больше.
Если пойдёт, то потом будет бекэнд. Но, тут всё сложнее из-за специфической процедуры сборки и деплоймента, в моём случае. Надо будет что-то мутить. Т.е., дело не в самом языке.
Возможно, что >>61357 тебе расскажет что-то более интересное для тебя.
А так - Спринг, наверное.
Ну не пидорасы, а?
Причём, уже 4 или 5 лет висит реквест, и им похуй вообще.
Вот нахуй он вообще нужен такой?
Ещё про какие-то скрипты что-то пиздят. Про Gradle. Про замену Груви. Вообще охуеть.
Клоуны, блять.
Получается ситуация ещё интереснее чем с питоном и Гвидо, который лучше знает, какие фичи нужны, а какие - нет.
+1
Это все потому, что над Kotlin проектами работают целыми командами и это практически всегда инженеры JB.
А над проектами экосистемы Scala работают студенты Одерского, которые после получения PhD сваливают в коммерцию и довольно часто меняют стек, лол.
Олаф пилил Metals и его не так давно схантил Твиттер.
Феликс занимался компилятором Dotty и его схантил финтех стартап из Швеции и теперь он пишет на Haskell.
Петрашко пилил Dotty, но его схантил Страйп и теперь он пилит тайпчекер для руби, лол.
Конрад (он правда не являлся студентом EPFL) пилил Akka, но потом его все достало и его схантил эппл и теперь он пишет на Swift.
Бурмако занимался макросами в Scala, но его схантил гугл и теперь он пишет на Swift для Tensorflow.
Есть еще Шабанин, который зачем то ковыряет Scala Native, когда есть целая команда отборных инженеров Oracle, которая работает над GraalVM. Но вангую, что Scala Native - просто тезис для PhD и как только он выпуститься из EPFL, то проект просто заглохнет.
SBT - тул для сборки Scala проектов поддерживается одним разработчиком, а багов там выше крыши.
Scala.js разрабатывается каким-то мутным челом в одиночку, когда над Kotlin.js пашет целая команда из JB.
В общем ты понял к чему это все идет, не так ли?
>Немного ФП
>нихуя из оптимизаций из фп-языков
уноси своё говно
олсо
есть хайповая скакалка в которой фп нахуй не усрался и тебе платят тупо за умение писать на жабе с другим синтаксисом
есть жаба с функциями-объектами
котлин нинужен
Какая разница, что, мало успешных языков поддерживаемых 2.5 людьми? Какая разница что Котлин поддерживается стабильной командой, если весь их продукт это ява с нескучным синтаксисом?
>мало успешных языков поддерживаемых 2.5 людьми?
Верно. Таких языков в принципе нет. Даже Haskell над которым лолируют в треде активно разрабатывается инженерами Майрософта. Или какой-нибудь OCaml в который Jane Street вваливает бабло и пилит библиотеки и инфраструктурные штуки.
Это с каких инфоресурсов?
В окамле как раз полтора человека на поддержке.
Про стабильность команды хаскеля я вообще молчу, есть несколько человек, все остальные так же приходят и уходят. Впрочем, ничего плохого в этом нет.
Спринг в основном, а так много чего есть
Это круто когда ты хочешь дома поиграться или пофапать на язык. Но это совершенно смешно для серьезного бизнеса.
> Простая ситуация DSL, когда тебе надо записывать "конфигурировать", но не ненужно читать. Точнее не нужно чтобы поля фигурировали в правых выражениях get. Тут нам и требуется публичные set, приватный get.
Держи воркэраунд: объявляешь публичный get, кидаешь из него исключение, а чтобы никто его не вызвал, вешаешь на него @Deprecated(ERROR)
https://pl.kotl.in/1dQsdqvUC
Костылезация какая-то и пропадет он из автокоплита? Или автокоплита в другой IDE?
Я не хочу чтобы мои DSL падали в рантайме, мне же обещали супер DSL которые проверяются на уровне компиляции.
DSL который падает в рантайме, я и сам напишу. Причем это будет настоящий DSL.
Не могу найти тред джавистов, спрошу здесь.
Надо быстро разобраться с транзакциями в спринге. Нужно для работы с базами. Что почитать об этом? В Spring in Action 5 нет ничего про это.
А чо, на спринг.ио тебя уже забанили, шоле?
https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html
От того что у тебя команда 50 рыл на пожизненном контракте продукт сам по себе лучше не станет.
Да и по продуктивности, вон Одерский с, как ты выразился, студентами, норм клепает: dotty за несколько лет, Scala 3 на 90% готова, это все при регулярных минорных релизах и подготовке к плавному переходу на новую версию. Так там хоть понятно что делается, в языке куча фич, до которых джавам в говне плыть и плыть, есть что переосмыслить, переделать, систематизировать.
Всякие кложи и эликсиры показывают что для языка-обертки вполне хватает команды до 10 человек, так что хуй знает зачем котлину нужна мега-тима.
Хуёво, тогда хз, попробуй как вариант просто не ебашить по кнопке run, а поочередно таски вызывать.
А, ну или просто дефолтное значение поставэ на titleEnglish и будет тебе счастье.
И вообще, если решишь проблему, то отпиши плиз
> Можно же просто не делать get вообще?
Сейчас нельзя. Если get не написать, его сгенерируют автоматически.
> мне же обещали супер DSL которые проверяются на уровне компиляции.
все так, компилятор не даст скомпилить чтение из такого свойства.
> Костылезация какая-то и пропадет он из автокоплита?
Из автокомплита не пропадет, но будет там перечеркнутым.
> Или автокоплита в другой IDE?
Какой другой ИДЕ, даунич? Один язык - один компилятор - одна ИДЕ
Ебал я такой котлин.
Они же ебанутые, лол.
Лучше бы литералы нормальные сделали.
Вообще, есть ощущение, что у них это всё начало рассыпаться под собственной тяжестью. Чем-то напоминает говношарп. Нет изящества, безблагодатно как-то. Масштаб личности создателей немножко не тот, похоже.
Скажем так с литералами (для коллекций) было бы лучше, но и без них вполне можно жить. Если посмотреть, за что люди голосуют, то там литералов даже в топ-100 нет: https://youtrack.jetbrains.com/issues/KT?q=sort by: Votes
Многие со мной не согласятся. Но вот такие тезисы я вижу.
Люди тупо делали продукт и сделали как смогли. То есть никакого "для души", а просто натаскали что могли. Что самое классное IDE работает с котлином лучше, чем котлин выглядит сам. Все эти подсказки и прочее И по этой же причины котлин будет ограничен IDE всегда то есть останется обёрткой, а не языком с революционными фичами
Ну и ты будешь ограничен IDE, потому что гладиолус.
Сейчас очевидно что хотели слишком многое, даже на конференциях шутя говорили что хотят покорить мир и эти все потуги с js, native, скрипты... Что вообще не выглядит как бизнес-план, а скорее как мечты кучки студентов айтишников. Что меня в свое время оттолкнуло.
Самая жесть получилось в том, что половина жаба мира дрочит на всякие спринги и хибернейты, а котлин с этим не был так уж совместим при обещанном полном интеропе с джавой. Вроде до сих пор надо плагины подтягивать. Как можно было релизнуть прокси язык, который бы не дружил с флагмаными, я не знаю и это о многом говорит.
Так же оттолкнули похожие один в один презентации в первое время. Даже в мухосранске рассказывали по одним и тем же тезисам. Та первая книга, котлин в экшен, что-ли - была изложена ужасна. Зная синтаксис языка, я местами переставал его снова понимать в книге я конечно тупой, но это тоже талант
Я так же не понимаю этот ваш Ktor, вообще не понимаю как в 2019 году, в эпоху микросервисов можно было выпустить язык без встроенного http. Почему гофер в 5 строк подымает полноценный микросервис, а я неделю трахался с ktor?
Как оказалось, он еще и по тестам techempower не хило так просел.
PS самое мое любимое это
System.`in`
> половина жаба мира дрочит на всякие спринги и хибернейты, а котлин с этим не был так уж совместим
Не пизди про спринг, он еще с 2017 года с котлином дружит: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/languages.html#kotlin
Для хибернейта не помешает плагин kotlin-jpa, чтобы писать идиоматичненько, но и без него вполне можно писать то же дерьмо что и в джаве - open класс, дефолтный конструктор, публичные свойства.
Полный интероп с джавой это действительно маркетинговая приманка для менеджеров-лохов, но в остальном он гораздо выше и в обе стороны, по сравнению с другими языками-собратьями по JVM.
> И по этой же причины котлин будет ограничен IDE всегда (то есть останется обёрткой, а не языком с революционными фичами)
Непонятно как эти два утверждения следуют одно из другого. Можно например иметь революционной фичей отличную поддержку в IDE и прочем тулинге.
Кстати, не находишь свои хотелки противоречивыми? То тебе полный интероп подавай, то чтобы язык был не прокси и с революционными фичами.
> Я так же не понимаю этот ваш Ktor, вообще не понимаю как в 2019 году, в эпоху микросервисов можно было выпустить язык без встроенного http.
ktor и есть http из коробки. То что он подключается зависимостью просто тебе дает возможность не использовать его, если по каким-то религиозным причинам ты предпочитаешь другие фреймворки.
> самое мое любимое это System.`in`
val stdin get() = System.`in`
и заебок. Не благодари.
Факт в том что зарелизили несовместимым. То что потом плагины кабанчиком прибежали или спринг подсуетился сам, это не меняет утверждение о дальновидности
>Непонятно как эти два утверждения следуют одно из другого
Думать мы конечно не будем, будем маневрировать.
>То тебе полный интероп подавай
Я этого не хотел, мне это обещали.
То что котлин на самом деле очень похож на джаву, это его минус. Так как используя джава либы, ты особо разницу не чувствуешь, вообще.
>ktor и есть http из коробки.
И это ужасно.
>val stdin get() = System.`in`
Это еще прекраснее.
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1
https://github.com/golang/example/blob/46695d81d1fae905a270fb7db8a4d11a334562fe/stringutil/reverse.go#L23
Не засирая при этом область видимостью переменными из цикла?
То есть, заюзають классическую вариацию для for - никак?
а для кого
> реально сложные вещи
> for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1
> stringutil/reverse.go
val string = "hello"
val reversed = string.reversed()
println(reversed)
Не надо ебаться с циклами, когда за тебя это уже сделали в стандартной библиотеке.
вначале я подумал на обложке урина
потом что там флаг украины
потом прочел котлин и даже не знаю что и думать
это /news/ -_-
Дзенькую бардзо
Понятно, спасибо.
жуть какая
Если прям перемоделить в голове имеющую информацию, то все зависит как скоро будет годная версия native. Но судя по текущим темпам все печально.
Флаттер вроде как дает кросс-мобильную разработку, неизвестно (мне) на практике как это удобно и практично, но выглядит как серебряная пуля, которая снесет все.
Если они осилят некий "флаттер" под фронтенд, то это будет убер поинт.
можно подумать флаттер это первое или лучшее на сейчас решение которое обещает кроссплатформу
я имею ввиду вообще
и вообще при чем тут флаттер и котлин тогда, в флаттере надо писать на некоем "дарте"
Твой "некий дарт" уже в затылок котлину дышит, пока ты там в бункере своем сидишь.
>Дарт и котлин популярнее го о котором вещают из каждого утюга
Ну это вообще пушка. Данные из google trends выглядят по адекватнее.
> Если они осилят некий "флаттер" под фронтенд, то это будет убер поинт.
Так флаттер уже запускается в браузере. Просто пока на стадии альфы.
u know man, these guys who take metrics from words searching...
Если я заведу скрипт который раз в 5 секунд что-нибудь пишет про dart int type он будет расти? Может быть, такие имбецилы как ты увидят это и побегут туда.
Норм в плане дарта.
Ты не очень умен, раз не заметил что это SO рейтинг, в данном контексте он показывает относительный интерес к языку.
SO рейтинг, где написано Web Search?
В данном контексте он показывает погуглил - забыл.
Самые адекватные(subjectivity) оценки это redmonk. Да и мне вообще похуй на эти два языка.
Я хз про перспективы, но сейчас котлин в андроиде - стандарт, все на нем пишут или переходят. Дарт как язык говно, будет жаль, если в будущем он начнет захватывать рынок. Флаттер вроде неплохо, но это кроссплатформа со всеми вытекающими.
Котлин - это уже настоящее и будущее нативной разработки для андроида + удобная и многообещающая мультиплатформа с нативным UI. У нас в компании активно используется мультиплатформа от котлина для андроида и ios. Косяки свои пока есть, но это уже неплохо работает и можно использовать. Разработка значительно ускоряется, поскольку используется единая кодовая база. Перспективы очень интересные, с учетом того, что JB в этом направлении тоже заинтересованность проявляют.
Как будто нам выделили маркетолога.
Пробую - уже несколько проектов продали на мультиплатформе. Просто потому, что так быстрее и дешевле для заказчиков.
>дешевле для заказчиков.
Хвалиться тем что получили меньше денег? Да ты точно или фанбой или маркетолог.
Типа знаешь, слоган - "теперь наши продукты с котлином пишутся быстрее и дешевле для вас"
Давай вместе попробуем составить логическое следование, если компания начинает быстрее делать проекты и тратить на них меньше ресурсов, то, чисто гипотетически, можно взять еще один или несколько проектов. Или слишком сложно, тяжело осознать?
Ахахахахах
Я лучше буду на хуях сидеть и писать на флаттере. Котлин говноплатформа это что-то вроде на уровне микрософтовского хамарина.
Кстати, недавно вспомнил что здесь тернарного оператора нет. Улыбнулся и закрываю тред.
>Дешевле для заказчиков
Отсюда можно заверить, что ты никогда не работал на мультиплатформе, дауненок. Когда действительно делаешь мультиплатформу - ты заявляешься к заказчику и ставишь условия + ты берешь в 2 раза больше.
Дальше нет смысла пояснять на двощах что-либо еще.
дебил блядь тебе то больше от этого не платят
Да обосрался уже, зачем ты этим говном тут обмазываешься и отмазываешься.
> Когда действительно делаешь мультиплатформу - ты заявляешься к заказчику и ставишь условия + ты берешь в 2 раза больше.
Не обязательно при этом тратить в два раза больше. Меньше себестоимость разработки - больше себе в карман.
У джавы есть такой раздутый пузырь лжи, мол джава является каким-то супер надежным инструментом и вообще, если ты серьезный бизнес то должен выбирать именно джаву.
И вот у жирного бизнеса из уст в уста передается эта мантра. И это дает право пилить проекты медленно с большим обилием говнокода. И пофиг, что какой-то пхп-формошлёп делал это за один день вместо недели, это же была джава!
Так вот, в этом мире кровавого играет роль этот мнимый раздутый пузырь маркетинга и чем круче твоя пиар компания, тем больше у тебя будет клиентов.
Ни о какой живой конкуренции речи нет вообще, так как нет фриланса за еду. Все сделки проходят в скучных офисах и с обилием пафоса о джаве и об их продукте, который давное клепается в аутсорсе в индии.
Я конечно понимаю, что джуны с мобильной разработки думают, мол джава она такая как у них, но нет, джава это чистейшие выпуки маркетологов, причем настолько душистые, что юзеры сами порой разносят эти мантры как истины.
Джава ужасна, никакой груви или котлин не спасет её. Бегите! Это дно кровавого тырпрайза и на этом дне покоятся души миллионов разработчиков, которые верили в хороший код.
>Джава ужасна, никакой груви или котлин не спасет её. Бегите! Это дно кровавого тырпрайза и на этом дне покоятся души миллионов разработчиков, которые верили в хороший код.
Согласен с ним. Убежал полгода назад с нее.
>Я конечно понимаю, что джуны с мобильной разработки думают, мол джава она такая как у них, но нет,
А там какая джава?
Могильная.
Наверняка на питон или шарп?
На свифт.
1.7
Для бэкенда?
Если нужно хорошо утилизировать проц, без потерь переключения контекста потоков или чего хуже процессов то есть, максимум асинхронности под капотом - го.
Если нужно выжить максимум из микросервиса в ущерб простоты разработки - раст или с/с++
Если ты попал в такую жизненную позицию, когда понял что код ничто и важны только данные и конечный продукт, и ты можешь себе позволить просесть по производительности и где на долю кода минимум квази-абстракций - python.
Если добавить возможность уметь писать производительные модули на Си для питона - то ты будешь богоподобен.
Если ты попал в такую жизненную позицию, когда понял что все языки говно и кругом сплошное наебалово и не хочется уже учить зоопарк языков, а хочется максимум гибкости, которую ты сам можешь контролировать без надменных-ограничений и костылей языка - то это js.
люблю манек пишущих про производительность.
Инстаграм, ютуб нормально на питоне работают. Спотифай на рельсах живет.
Ох уж эта производительность..
То что там питон масштабируется по серверам это и ужу понятно, вопрос в том сколько этих серверов у тебя будет.
В общем, ты херню сказал.
Меня твои истории просто доебали уже, я уже не могу их слушать, блядь. Одна история охуительней другой, просто, блядь. Про говно, блядь. Про какую-то хуйню, малафью. Чё ты несешь-то вообще? Ты можешь заткнуться? Шишка, блядь, встанет — возбудимся, блядь. Чего, блядь? Про что несешь? Вообще охуеть.
Какая печалька. Я думал здесь адекватных найду, но все, хватит на такую клоунаду отвечать.
Печалька? В нынешнем рынке программист который будет писать стоит в разы дороже. А серверы поднять - это не такая уж и трата. Ох вей, ты же не работаешь и любишь посты здесь писать. Удачи.
ушел
Проиграл на всю квартиру. Ты тут сидишь, дрочишь свои копейки, когда один программист получает сотни тысяч долларов в год.
Ну и твои рассказы о том как здорово писать приложения на пыхе и питоне с руби, ведь они такие СКЕЙЭЛЭБЛ! просто жалки.
Ты хотя бы навел справки на какие языки переехал Твиттер, Инстаграм и что сделали в Фейсбуке и ВК, чтобы их приложения обрабатывали сотни тысяч запросов в секунду.
>>66751
>>66758
Теперь я понимаю насколько тут школие засело.
Им приводят пример на простых цифрах никто не мешает эти цифры по-множить на 100000 и получить ваш фейсбук или твиттер, а эти бараны рассказываю "кококо программисты дороже".
Интересно, если бы я сразу сказал про 800000$ то меня школьники зауважали больше? бестолковые бараны, с шаблонным мышлением
Набираю, а что?
Ты же понимаешь, что описанный неординарный опыт на железе не с пустого места взят?
Вместо подогрева пердака, и вечного "врёти", лучше бы поучился бы у батьки как и на чем делать успешные проекты.
>а хочется максимум гибкости, которую ты сам можешь контролировать без надменных-ограничений и костылей языка - то это js.
> без
>костылей
> js.
Ну ты понял
Наверное он имел ввиду, когда не хватает гибкости для очень частых задач и люди придумывают шаблоны программирования, не думая что это по сути идея-фикс
В августе Маннинг решил выпустить римейк Functional Programming In Scala на Котлине.
От тех же авторов, плюс добавился ещё один.
Пока там ещё нехуй читать - две вводных главы, но, сам факт.
Посмотрел бегло введение - это уже другая книга.
Разжёвывают более подробно даже простейшие вещи. Атмосфера другая.
Не знаю, хорошо это или плохо. Например, римейк FP In Java на Котлине (>>50902) получился не очень, на мой взгляд. Посмотрим, что выйдет из этого. Версия на Скала стала мега-хитом.
https://www.manning.com/books/functional-programming-in-kotlin
Пиратки, я думаю, пока нет, по очевидным причинам.
Слыш, абизьяна черножопая, ты чо женщинесс не уважаешь? Вон из ПРОГРЕССИВНОЙ ЧАСТИ ОБЩЕСТВА, на Котлине тебе писать запрещено!
Если флуттэр взлетит, то js-петушки подсуетятся и соберут какой-нибудь ts2dart "из спичек и желудей". Такая попытка была несколько лет назад, но заглохла из-за ненужности дарта.
т.е. такой синтаксис, жавист, тебе ни о чем не говорит?
"simple integer: %d%n"
тоже константа, заебись
и доллар перед аск/деск тебе тоже ни о чем не сказал?
ты лабу2 уже написал, или ждешь, когда старший брат придет с долбильни и поможет?
Судя по тенденции, то либо напишут свой флаттер под js/ts, который еще окажется круче флаттер, кстати и правда говно, либо флаттер перепишут под js.
Пока кучка статических макак объясняла всему миру как хорошо писать бестолковые длинные рекурсивные дженерики и как весело кастовать числа в строки, заворачивая в кодогенерацию или рекурсию то, что делает динамико-мастер в пару строк. Динамико-господа решили что мир будет писать на динамике и вывела в топ нужные языки.
булевое значение возвращает
3 сравнивают в диапазоне 1 по 10.
На самом деле, если не ошибаюсь, говно делает нечто такое
1 < 3 && 3 < 10
Естественно такое оподлививается
10 < 3 && 3 < 1
То есть, диапазоны диапазонами как бы и не является. Вообще, там в котлине полно таких WTF, как только выходишь за рамки кода презентации (смотрите паззлеры). Я хз как они синтаксис 6 лет пилили, там в некоторое говно за неделю вляпываешься.
Жс несмотря на говнокастинг дает сильную гибкость кода да, там можно сделать даже свои extension functions, котлин же ничего не дает, а местами некоторое ограничивает или запутывает.
В любом случае жс с эволюционирует и становится лучше в край можешь накатить ts, а котлин умудрился даже высрать свои "асинки" для корутин, которые еще IDE-лок
Котлин - это набор грязных хаков.
JB придумали его, чтобы облегчить написание своей иде на свинге.
Для андроида - это нормальный вариант, наверное.
Для всего остального, как язык общего назначения - ну его на хуй.
Весь этот хайп вокруг котлина (см. графики выше, новые книги и т.п.) - результат вливания гуглом нереального количества бабла в эту тему.
Скала, при всех её проблемах - полноценный язык.
А котлин - именно, что набор хаков, без какой-либо стержневой идеи (null-safety - этого как-то мало).
Думаю, через какое-то время он просто развалится под собственной тяжестью.
Нахеру гуглу вливать в чужой язык? Он им побоку, я думаю.
JB придумали его чтобы продвигать свои продукты, это вроде даже не секрет (какой-то там подкаст).
Если вникнуть в маркетинг поверхностно, то можно увидеть что качество синтаксиса не влияет на популярность языка. Они думали что грамотный маркетинг продвинет их продукт, но увы, они ошиблись, потому что это поверхностный маркетинг, а в глубине, очевидно, языки продвигают - либо серебряные пули (например как асинхронность под капотом у го или отсутствие вирт.машины) или флагманские проекты.
Null-безопасность, на серебряную пулю не тянет, как бы они не старались на презентации наверное потому как на деле выглядит больше как костыль поверх джавы, а не реальную фундаментальную фичу
Большинство программистов не любят сложности, они не любят писать код ради кода, средний программист ленив и любит решать задачу максимум просто. Но жаба она многословна и топорна, у котлин был шанс завернуть джаву в подобие питона, сделать многие вещи просто, дать людям простые решения. Но увы, мы получаем ту же джаву, с бестолковыми абстракциями и бойлерплейтом тупо с другим синтаксисом.
Пространные вещи маркетологов.
-По графику видно как машинное обучение двигает питон вверх, можно было сделать ставку котлин на это? Конечно можно.
-Можно было бы увидеть, что сейчас рулит микросервисы. Неужели сложно было сделать толстую сдк со встроенным дефолтным сервером, чтобы котлин из коробки мог собираться в асинхронный микросервис?
Конечно можно то что они всрали асинки это отдельная тема.
-Можно было сделать котлин сразу асинхронным?
-Можно было сделать отдельный простой пакетный менеджер? Почему люди пришедшие с ноды или питона просто плюются от gradle?
-Можно было сделать синтаксис для простых типов контейнеров [], {:}...
И т.д.
>JB придумали его чтобы продвигать свои продукты
Это изначально был внутренний продукт, для внутренних целей.
Наружу это вышло много времени спустя.
Бреславу захотелось славы, лол.
>Нахеру гуглу вливать в чужой язык?
Он больше не чужой. Он теперь свой. Они вливают в свой язык.
Поэтому графики резко поползли вверх.
>Но жаба она многословна и топорна, у котлин был шанс завернуть джаву в подобие питона
>джаву, с бестолковыми абстракциями
>го
>...
Ты, чувствуется, матёрый эксперт.
Это не ты в соседнем треде рассказываешь, как поднимаешь 5К на андроиде в 26 лет? Там ещё картинки не хватает, с котиком и лампочкой?
>Ты, чувствуется, матёрый эксперт.
Ни капли
>Это не ты в соседнем треде рассказываешь
Нет. Если он подымает 5К из такой перенасыщенной конкурентной среды в одиночку, то вопрос зачем он тогда пытается компенсировать свою потребность во внимании через двачи? Фантазер, ты меня называла...
>я ожидаю
Тебе подсунули вместо цикла-счетчика for(;;) какую-то херню, назвав это диапазоном и чтобы это вообще работало, навернули тонну костылей (в том числе downTo, until).
Проблема в том, если назвали диапазоном, и этот диапазон он равен 0..-1 - я хочу получить последовательность "0, -1", а не чтобы ты мимо индексов не промахнулся. То есть когда я вижу 3 in 10..1, мне нужно true.
При чем здесь for?
Можно с тем же успехом использовать такой диапазон внутри if:
if (index !in 0..size-1) throw IndexOutOfBoundsException()
Суть в том, что пустой диапазон индексов 0..size-1 — это на практике гораздо более частая ситуация, чем 3 in 10..1, и предсказуемое поведение в первом случае перевешивает недостаток, что во втором случае для новичков результат оказывается слегка неинтуитивным.
>котлин умудрился даже высрать свои "асинки" для корутин, которые еще IDE-лок
Это в чем, же там IDE-лок?
Нет await, чтобы понять где перед тобой асинхронная функция нужно IDE и скорее всего правильная IDE
Есть suspend, который дает понимание того, что код выполняется в корутине. Вызвать саспенд функцию вне корутины не даст компилятор. IDE для этого не нужна.
Ты уверен что видишь полную картину ИТ мира?
JS
+ Единый язык бэк и фронт
+ Доступный прокси-язык TS, с честным интеропом.
+ Возможность писать как динамикой JS так и статикой TS
+ Сразу асинхронная работа, в том числе честный асинк/авэй
+ Массивы/словари сразу объекты
+ Теперь и поточная масштабирование.
+ Хорошо оптимизированный JIT, местами если знать нюнасы можно просесть всего 2 раза чем С++
+ Теперь и машинное обучение.
+ Си подобный синтаксис, а не маня-фантазии как в питоне.
+ Идея мелких библиотек утилит, вместо монструозных фреймов как в жабе.
+ Сильнейшая гибкость кода, вплоть до создания полифилов.
+ Инструменты развивающиеся конкуренцией, а не маркетингом кровавого тырпрайза.
+ Кроссмобильная разработка.
+ Десктопная разработка
- Слабая типизация и проблема с автоматическими кастами (все это фиксится TS)
- Потребность использования babel
- Асинхронная природа это и плюс и одновременно минус, накладывающий требования на первоначальный навык.
если выбирать между жопаскриптом и жабой с нескучным синтаксисом то выбор очевиден
> + Идея мелких библиотек утилит, вместо монструозных фреймов как в жабе.
А это разве не в джс такие монстры как реакт, вуе и тд?
мимо не-джсник
А это разве монстры лол? Реакт сам по себе простая библиотека для ui. Его экосистема это все отдельные модули.
Единственный монстр это ангуляр, вот там да, довольно большой полноценный фреймворк.
>монстры
Vue - ультралайт вообще.
Единственное светлое пятно во мраке современного жс, если использовать его в ES5-режиме, без .vue-файлов.
Реакт, с учётом того, что без тучи всякой сопутствующей хуеты он не юзабелен - несколько ближе, но, тоже не монстр.
Ангуляр - да, это пиздец, бессмысленный и беспощадный.
Но, проблема там вообще в другом. Инструментарий монструозен.
Сам по себе Node + либы, чтобы писать на том же реакте, бабель, хуябель - весит больше, чем JDK + разумный комплект либ.
И всё это постоянно бурлит, меняются версии языка, фреймворков, библиотек, инструментальный софт, короче - кипит движение в помойной яме.
Набери, например, в гугле "insane js tooling" или "javascript fatigue".
На самом деле получается, что начинаешь с какого-нибудь express, все заебись, легковесно и просто, а через полгода ВНЕЗАПНО приходишь на работку а у тебя там ебанный франкенштейн из слепленных вместе десятков легковесных либ. И сидишь и думаешь, что лучше бы, блять, рельсы или джангу взял, где хотя бы все уже слепили за тебя и слеплено в любом проекте все более-менее одинаково.
мимо-перекатился-с-жирного-фреймворка-на-жс
Современный жс - это лютейшая деградация технологий.
Эти пидары просто перечеркнули последние 20-25 лет развития разработки софта, и начали с нуля.
>Возможность писать
Ещё жквери рамда и тд, кто как хочет так и пишет
>Си подобный синтаксис
Императивщина. Статические члены в жабу добавили для сишников и null тоже
>Инструменты развивающиеся конкуренцией, а не маркетингом кровавого тырпрайза.
TS, Angular из тырпрайза. Майки запороли ecma4, гуглы выкатили v8, дабы захватить мир хромом
Возможность писать
+ Кроссмобильная разработка.
+ Десктопная разработка
Жс неплох морды делать, адекватной альтернативы для фронта нет
У всего есть свои минусы. Да, в JS много сомнительных решений по дизайну языка и т.д., но альтернатив по факту нет и не предвидится. Слишком прост, удобен и функционален нынешний фронт, не смотря на кажущийся зоопарк маленьких "либо" и фреймворков - там все находится на своих местах и не просто так. 10 лет назад веб-разработка была ужасом на крыльях ночи, особенно фронт. Сейчас же тулзы позволяют с легкостью писать красивые UI. Ну и для бэка нода отличный вариант тоже - тот же язык, переиспользование кода, асинхронность, какая-никакая скорость и т.д.
Рельсы и джангу никто не отменял - не каждый сайту это SPA, в большинстве случаев проще будет выкатить MVP на рельсах, чем пердолиться с нодой отдельно и фронтом отдельно.
Уже вижу тонну кастов строк в числа, длиннющие дженирики ради дженериков и абстракции ради абстракций (паттернов, в том числе фабрик)
Кстати, единственный пригодный тырпрайз фреймворк
Как там, на Марсе? Что с погодой?
Есть маленький нюанс в том, что на фронте помимо чистого UI происходит обработка кучи логики, запросов и стейт менеджмент.
Поэтому, удобно иметь опциональную типизацию.
Например, идея поддерживает типы в комментариях, в том числе, ссылки на типы, определённые в файлах d.ts. При этом, ни node, ни typescript в проекте не нужны, что интересно.
Ты же понимаешь, что это заложенная на уровне дизайна семантика? Даже в Ruby, от сахарности которого может слипнуться жопа, через две точки можно конструировать только неубывающие диапазоны.
Нет, просто статико-контуженные не понимают, как это использовать мощный полиморфизм с возможностью оперировать данными, над типами.
Когда просишь объяснить архитектуру у тру-статико-господина, он начинает описывать тебе модель того как его типы там взаимодействуют.
Когда просишь объяснить архитектуру у тру-динамико-господина, он начинает тебе описывать предметную логику.
То есть, статико-мэн мыслит уровнем ниже и решает проблемы которые в предметной области то и нет.
Нет, ты.
Мне почему-то думается, если поднять какую-то статистику, то окажется что на джаве до сих пор пишет львиная доля программистов. Маркетологи хорошо на уши присели.
Ну и надо признать что сам котлин толком еще не обкатан, не все в нем там прям так гладко, как нам рассказывают.
Ну вот например статистика по андроеду: 40% из топ 500 аппов написаны с использованием котлина:
https://www.appbrain.com/stats/libraries/details/kotlin/kotlin
Ну вот собственно и 38%.
У меня, у стороннего человека, от хайпа уже сложилось впечатление, что андроид это только котлин.
Это копия, сохраненная 14 октября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.