Это копия, сохраненная 2 января 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Мы не будем брать мертвого динозавра - Java EE, иначе победа была очевидна.
Правила просты: вкидываем в пост как плюсы одного так и минусы другого (что хейтерить сами решайте).
Поехали:
Java - богатый академический язык, но жрущий память, да и сама jvm не маленький.
Go - специфичный и простой язык делающий местами тоже самое без чтение неделю мануалов и с честной компиляцией в бинарник.
-----
Java - удобнейшая экосистема. 100500 решений и фреймворков. Почти все работает отменно, вкидываешь только в maven зависимость (даже гит не надо ставить, достаточно только джавы)
Go - местами мелкие детские-баги (или от недопонимания или просто так...), много писать самому. Все на уровне простоты, против гибкости. Нет де-факто пакетного менеджера (куча их).
-----
Java - нереальное сопровождать чужой код, особенно библиотек - тонны абстракций и каких-то паттернов. Чтобы вникнуть в простую вещь нужно потратить немало времени время.
Go - код больше ориентируется на алгоритмы, за 2 минут можно добраться до бизнес-логики, конечно придется включить мозги, но чаще весь алгоритм как на ладони и все ясно. Честный опенсорс, а не 100500 слоев классов, на простую задачу (ООП-головного мозга).
-----
Java - у джавы есть - kotlin, засахаренная джава с экосистемой джавы.
Go - у го беда как с сахаром как и с дизайном.
-----
Java - асинхронность через либы
Go - асинхронность под капотом (как минус есть шедулер)
Go - есть ли он там??
>Java - де-факто в андройде
Уже не актуально, все барухи уже пишут на груви, а адекваты на котлине.
Плюс на следующем GoogleIO будет интересный сюрприз от Google.
>java
>академический язык
Чота ору.
>местами тоже самое без чтение
Вот именно что местами. Тот же гуй на говне будет пострашнее такового даже не жявы выглядеть.
>тонны абстракций и каких-то паттернов
Вот именно что все паттерны уже зажёваны за тебя, всё по шаблону. Макакену можно дать какой нибудь гоф, книжку по жяве и через 2 недельки смело сажать за код.
>код больше ориентируется на алгоритмы, за 2 минут можно добраться до бизнес-логики,
Ага, только вот большого проекта на го ещё никто не написал, чтобы сравнивать с 2000 классов в жяве. А за счёт его "модели ООП" это пиздец на уровне сишки будет (где буквально сотни хидеров включаются в один, потом включаются в каждый .c, это всё вымазывается макросами а го уже обрастает комментариями для компилятора из-за их отсутствия и любая иде просто начинает лагать и перестаёт навигировать по этому говну).
Так же нельзя не упоминуть, что по этой же причине го не годится для коллобративной разработки от слова совсем, если у тебя не 4 человека в одной комнате.
>kotlin
Ну у говна тоже есть Odin (хачкель на говне) и Have (котлин на говне - то же говно, но с женериками и сокращённое), в которых сахара хватает.
>как минус есть шедулер
)
Я чото прям заорал. Всё же не зря гоферов гнобят вчерашними пхпшниками.
Хочешь работу, и больше денег в будующем - джява без вариантов.
Хочешь аутировать в соло над своим маняговном, наслаждаться как микросервис быстро бегает на твоём хуёвеньком локалхосте и просто получать в лучшем случае на уровне питониста-пхпшника-1cника - го это твой выбор.
- где замыкания?
- где свойства?
- где шаблоны? Разработчики Sun вынуждены только облизываться. Даже генерики, введённые в 5-й версии Java — не более, чем syntactic sugar. Дотнетовские генерики это реально поддерживаемые платформой типы, которые расширяются на лету при загрузке, котрые оптимизируются JIT-компилятором. Для Java генерики существуют только в коде и ни JIT, ни загрузчик классов их никогда не видит. Поэтому проблемы боксинга, преобразования типов в runtime просто скрыты от программиста.
- где делегаты/евенты?
- где partial-классы?
- где детерминированное освобождение ресурсов (ключевое слово using + интерфейс IDisposable)?
- где оптимизация JVM для расширений процессоров?
- где аналог linq и в частности удобные мапперы?
- где расширения методов класса?
- где скрытая имплементация интерфейсов?
- где перегрузка параметров функций?
- где нормальное потребление памяти приложением?
- где быстрая работа приложения?
- где нормальные иде, с полноценными дизайнерами?
- где пользовательские value types?
- где методы у инстансов value types?
- где var и анонимные типы
- где перегрузка операторов?
- где оптимизиции хвостовых вызовов? (в свете фунционального хайпа это должно вызывать некоторый батхёрт)
- Где чёткое разделение домены и сборки? Это не учитывая, целый ворох технологий недоступный понимаю жабоиндусов, такие всякие сильверлайты/вин-веб/формочки, впф, XNA, список можно продолжать бесконечно, как впрочем и список ущербности жабы...
Всего, чего нет в жабе, автоматически объявляется хуитой, как только это появляется в жабе, это автоматически становится нехуитой. При этом, требуется сделать вид, что хуитой это называл кто-то другой.
>какой же язык более сейчас подходит для веба
Гостевуховеб - пхп
Мелковеб и средневеб - руби, нода, эликсир
Крупновеб - джава, скала, c# (прости господи)
>Java
>академический
Ты серьезно? Ты видел лица срежнестатистических жавамакак? Да они ничего сложнее этикетки на освежителе не читали. Если повезет - какой-нибудь "спринг за два часа".
когда он будет
Два кофе адеквату
C# ~= Java > говно > моча > гной > PHP > JS >Go > python > C++ > C > erlang > lisp > haskell > rust > ruby
Ты опять выходишь на связь, пиздоглазое мудило?
На эту пасту тебе прошлый раз расписали положняк, и почему место шарпа у SOHO параши.
>Java vs Go. Пришло время выбрать!
Моча vs Goвно. Спасибо, ни того, ни другого не надо.
Победил Го и неожиданно были слиты шарпейшики.
Го-фанбой вместо вордпресса теперь будет писать микросервисы на Го, всем остальным похуй.
>backward compatibility.
Чтобы его поддерживать достаточно просто иметь возможность компилировать старый код, что простым наращиванием фич никак не ломается.
>>875697
>875693
>А хуле тогда жаба на столько консервативная?
Потому что:
1) четверть этих фич вроде пропертей, замыканий, оптимизаций хвостовой рекурсии и пр так или иначе в виде костылей есть причём с древнейших времён;
2) треть перечисленных тем аноном пунктов — чистый жирный высер;
4) ещё треть разработчики жавы считают нинужным (вывод типов, перегрузка, linq, расширения методов класса и тд);
4) и оставшаяся часть вроде нормальных женериков, value types хорошей работы именно на десктопе и тд
не реализуема вообще — из-за старых решений времён кофеварок вроде "стэк нинужин"/"типы в рантайме нинужны"/"похуй что каждый раз будет житится заново" и тд, чтобы реализовать что-то такое нужно перехуярить жвм почти полностью.
>вроде нормальных женериков
>не реализуема вообще
Ну почему же, вот Брайан Гетц на каждом Java One показывает концепт value типов.
Глядишь на 10 и появятся году к 2025
Концепт и реализация — разные вещи, но учитывая с какой болью в жяву впиливали стек — и правда не раньше 2025.
>не реализуема вообще — из-за старых решений времён кофеварок вроде "стэк нинужин"/"типы в рантайме нинужны"/"похуй что каждый раз будет житится заново" и тд, чтобы реализовать что-то такое нужно перехуярить жвм почти полностью.
Ну а что делать? Скала же перехуяривает себя почти полностью. А такое-то большое комьюнити не может себе позволить улучшить себе язык? Или просто профит, полученный с этого и затраты на реализацию этих фич несопоставимы?
Я по крайней мере только один раз за 3 месяца столкнулся с проблемой, что жаба не видит в рантайме реальные типы, а только те, что написаны в коде. Но эт лёгко обходится виситер патерном.или кастами
Скала вообще нихуя не переделывает в жвм — там всё работает на говне, рефлексии и палках.
>Или просто профит, полученный с этого
Не будет профита. Это язык чтобы посадить макаку после двухнедельных курсов и книжки с паттернами писать легкоподдерживаемый и производительный код без пары лет выдрачивания. Иначе все бы уже слезли на скалу.
Ну я имел ввиду, что скала перехуяривает свои внутренности из релиза в релиз. Да, несовместимость есть, но у них нет таких ресурсов, которые есть у жабы.
Но всё-таки, по статистике, как минимум 60% программистов - макаки. Поэтому им (нам) как раз у нужен язык, который не так сильно наказывает за ошибки и в тоже самое время иметь достаточное количество фич, а не как какой-нибудь пхп.
А чтобы начать хорошо писать на скале, надо, как минимум, знать ООП и ФП, а то в коде будет творится тотальный пиздец. А это уже дохуя опыта требуется и таких людей, которые готовы добровольно дрочить в своё свободное время программирование, никак не связанное с твоей текущей специализацией, ой как мало.
Инженерам, которые пилят сейчас стандарт, это нахуй не нужно.
> который не так сильно наказывает за ошибки и в тоже самое время иметь достаточное количество фич
python/ruby для такого есть уже давно.
>много писать самому. Все на уровне простоты, против гибкости.
Все давно написано за тебя в 100 вариантах, поиск по гитхабу юзать надо. С java все то-же самое.
>нет де-факто пакетного менеджера (куча их)
go get/install github.com/vasyapupkin/tool
>Честный опенсорс, а не 100500 слоев классов
язык тут не при чем, есть разные задачи, разные имплементации. Возможно у go изначально kiss в приоритете, но никто не мешает в java то-же самое юзать.
>Java - у джавы есть - kotlin
почему тред называется не "java/kotlin/scala vs go/crystal"?
или вообще давай про jQuery упомянишь? там j - тоже java значит
>(как минус есть шедулер)
для меня это плюс
В общем если выбирать между golang и java, то я выбрал бы dlang (перехожу на него, пока за некоторыми исключениями все устраивает). Месяц назад пришлось сесть обратно за java, так у меня руки сломались.
Дрочить на синтаксис удел школьников-студентов или диванов, которые ничего и не пишут.
Причина тут проста, синтаксис занимает от силы 1-2% всех требуемых знаний при написание приложения, все остальное это знания стека-технологий (как библиотек, фреймворков, так и знания каких-то предметных областей).
Именно на это сделан упор в джаве, в который даже есть внутренний стандарт всего этого.
Так что гоните санными тряпками тех, кто демонстрирует превосходство того или иного языка не богатой экосистемой, а наличием какого-то сахарка в виде проперти или прочего говна.
>Есть ведь куча JVM языков с java интеропом
Груви - тормозящая динкмикодрисня.
Скала - омг оверинжинирд параша для любителей писать ванлайнеры.
Котлин - ВНЕЗАПНО вин, но после восьмой явы количество его киллерфич значительно поуменьшилось.
И всё это своими костылями дружит с той самой ЭКОСИСТЕМОЙ явы. Так себе куча.
Ну и да, явы хватает для задач явы. Зашел в тред, чтобы вообще узнать: "Да где они яву с го сравнивают-то?!". Ответ: нигде. Ехал диван через диван.
Глупый и неопытный ребенок, услышал что всякие скалы и груви на JVM и теперь верит что там нормальная безболезненная совместимость с java?
В любом случае это только в плюс, но прекращай дрочить на сахар, пора осваивать что-то серьезнее чем пустой синтаксис языков
>Котлин - ВНЕЗАПНО вин, но после восьмой явы количество его киллерфич значительно поуменьшилось.
Язык-сахар, который пилили 6 лет (один лишь сахар)?
Я бы побоялся, но если без троллинга, по ощущениям пишешь как на джаве, кроме некоторых вскриков WTF. Тупо язык-обертка с сомнительной судьбой
Так да. Много сахара, который был кстати в java6 (в которую он и компилируется). Но эти ваши стрим апи и лямбды сильно убиваили полезности его сахарка сведя его к nullable типам и другим всяким имплиситам. Чего мало.
>пишешь как на джаве
Ты и на Scala будешь писать как на яве, если не поймешь концепции идиоматичного кода.
Хотя если ты "пишешь бизнес логику внутри корпорат. фреймворка", может тебе и не надо.
>>876434
> java6 (в которую он и компилируется)
Он компилируется не в java, а в byte code для java6 или java8
> эти ваши стрим апи и лямбды сильно убиваили полезности его сахарка
Его основное преймущество - легкость выноса абстракий,
любой повторяющийся код можно вынести в библиотеку и переиспользовать.
Достигается это блягодоря extension methods и dsl, а inline functions выступаю некой заменой макросам.
После kotlin даже c# уже не вставляет хотя может когда завезут primary constructors все и наладится.
Где реальные применения для всей этой хуйни? Сила нормального языка программирования, что там собраны все используемые постоянно при разработке фичи, а не свистелки и перделки на любой вкус. Причем набор собранных фич определяет культуру кода, и расширение его ненужной хуйней эту культуру рушит, потому что вместо нормальных стандартизированных решений начинают городить велосипеды.
> Это не учитывая, целый ворох технологий недоступный понимаю жабоиндусов, такие всякие сильверлайты/вин-веб/формочки, впф, XNA,
Ха-ха-ха, это паста из 2010? Очень забавно выглядят в списке технологии от МС (тм), которые уже сдохли и протухли.
Стоит добавить, что простой и гибкий синтаксис никак не коррелирует с силой абстракций предоставляемых языком. В Го она где-то на уровне Си, но если в ней это оправдано, то в первом смотрится просто убого, порождает кучу бойлерплейта и общий низкий уровень кода и макак.
вот после дохуя переполненных всякой поеботой скал, котлина, джавы, шарпа и плюсов люди и переходят на golang, который как сишка, только современный (без современных фич, хахаха), как питон, только статика
Этого удваиваю, как половину мозга добровольно отдать-за то всё легко просто и понятно, только о еде и туалете надо думать.
>Скала же перехуяривает себя почти полностью
Поэтому бизнес на нее и не переползает, при всех ее плюсах. Потому что бизнесу нахуй не упало переписывать свое приложение заново при переползании с версии языка 2.11 на 2.12.
Мне лично консервативность джавы скорее нравится. Сейчас в нее еще насыпали всякого давно желанного функционального сахара, и насыплют еще в следующем релизе, и вообще заебись все будет.
Сложно ли в жабу после php перекатиться?
Есть ли фреймворк на подобии zend?
Имеет ли смысл делать сайт на джаве?
Что ещё следует знать?
>и насыплют еще в следующем релизе, и вообще заебись все будет.
В 9 то уже известно что ничего полезного не завезут в язык (только библиотеки расширят).
Если послушать Брайана, то ясно что они подзабили хуй на Java и во всю качают саму JVM (модули,panama,graal,valhalla,fast jni).
Те хорошо будет всем JVM языками, а Java так и останется коболом 201X.
Берешь Spring Boot с обвязкой на веб (MVC) и все.
>переписывать свое приложение заново при переползании с версии языка 2.11 на 2.12.
Но ведь они совместимы на уровне исходников.
Почти команду JDK Oracle бросила на Cloud Services. Так что раньше августа девятки не-бу-дет. Хотя клянутся к июлю выкатить...
Но мне пофиг. Распределенный проект на JDK7 бьется за 3-годовой аптайм, работая везде, от blade-серваков, до старого десктопного говна с.. МСВС 3.0 на борту. Проблем с переносимостью 0..01 %
Java - мой бог после всего этого.
Что-то о них не слышно. Разве что ГО, но он как-то особо не блещет и вечные срачи вокруг него. Вот только сегодня посетил их тред, кстати, там похлеще чем в жс-треде.
Скала? Ну уж слишком сложно для среднего кодера.
Так какой язык заменит Джаву?
Ну так "хороший язык" != "популярный язык". Взять тот же пхп - кривейшая говнина с миллионом проблем в дизайне и тысячами опаснейших камней - а популярней некуда.
> Так какой язык заменит Джаву?
ЖС же. Еще пару лет и его вполне доведут до уровня, когда не будет ощущаться боль от асинхронности
Хуйлон. Ради интереса зашёл на сайт - никаких новостей, никакой движухи - вот этот план релиза порадовал https://ceylon-lang.org/documentation/1.3/roadmap/
Единственная польза этого хуйлона, что отвлёк мудака, написавшего хибернейт от причинения ущерба java среде очередным подобным высером.
КОТЛИН
Ну джава не пхп. Джава нормальный и очень популярный язык. А зачем менять нормальный язык, на котором пилят уже 20+ лет, вокруг которого построена значительная экосистема и который знают дохуища кодеров на новый язык, который не сильно лучше джавы?
>>882787
Как ЖС сожет это сделать? Насколько я знаю бекэнд на ЖС особо не жалуют.
> Ну пхп не джава. Пых нормальный и очень популярный язык. А зачем менять нормальный язык, на котором пилят уже 20+ лет, вокруг которого построена значительная экосистема и который знают дохуища кодеров на новый язык, который не сильно лучше пхп?
Хотел Котлин написать, но это было бы не так лузлово
мимо_котлинофаг
опасно тут стало, Илюш, не надо...
возможно бамп
Из доводов ОП-поста становится очевидно, что жаба больше для крупных и стабильных сервисов, а го - для хуяк-хуяк и в продакшн.
У жабы четкая высокоуровневая структура, куча абстракций, высокая стабильность структуры кода, дешевая долговременная поддержка.
У го - возможность быстро накатать велосипед и поехать.
Но в бизнесе важно и то и то: нужно накатать велосипед быстрее конкурента, и в то же время долго этот велосипед не продержится, и со временем придется выстраивать серьезную инфраструктуру и все переписывать "как надо".
Так стартовали почти все сервисы вокруг, с уровня школоподелок до мегакорпораций с пугающе огромной инфраструктуры под капотом.
Просто осмотрите на эволюцию поисковиков, соцсетей, и т.п.
>А зачем менять нормальный язык, на котором пилят уже 20+ лет, вокруг которого построена значительная экосистема и который знают дохуища кодеров на новый язык, который не сильно лучше джавы?
Лично я так считаю:
Менять нужно, обязательно. Но потом.
Дело в том, что такие языки, как ява, поддерживают высокую обратную совместимость.
Это делает их надежными и популярными, незаменимыми для бизнеса.
Но именно это же и ограничивает их развитие: на каждую правку нужно с нуля анализировать всю структуру языка, и убедится что правка ничего не ломает, иначе изобретать костыли, как сесть на два стула: и правку внедрить, и совместимость не поломать. В общем правки дорогие.
Новые языки пилятся по новым концепциям, имеют новую архитектуру, с учетом всего опыта человечества на момент разработки. И т.к. пилятся они намного позднее явы - они свободны от костылей и совместимости, и могут изначально запилить намного более эффективную архитектуру языка.
Без 20-ти летнего груза совместимости их разработка идет очень быстро, быстро внедряются удобные и правильные вещи, в общем вкуснота, на которую другие языки облизываются, но не могут себе позволить.
Но в этот момент переползать на новый язык глупо - он еще толком не сформировался, еще не нарастил жирок совместимости, не сформировал экосистему.
Со временем все это нарастет, как и у явы. Или язык остановится в развитии и станет никому не интересен.
И вот когда язык достигнет уровня явы, тогда на него и нужно переползать: под рукой все те же инструменты, что и на яве, плюс множество новых, плюс доказанная стабильность, огромное сообщество, экосистема, библиотеки, все как у людей.
Но такой язык будет более молодым, чем ява, более красивым и логичным, более удобным. Т.к. он основан на более свежем опыте человечества, т.е. является следующим поколением языков.
Со временем и этот чудесный язык устареет под грузом совместимости, и на смену придет что-нибудь еще более красивое и удобное. Эволюция продолжится.
тут проблема в том, что го уродлив изначально, и вероятнее всего менять ничего не захотят (так как напилиненно много кода внутри одной известной компании и которая одним поведением (алиасами) показала, что клала на мнение всех)
Ну так на го свет клином не сошелся. Рано или поздно кто-то обгонит жабу - вот на него и нужно прыгать.
Сейчас в мире по сути два языка: кресты и жаба.
У PHP и JS свой отдельный манямирок.
Остальные где-то на подсосе.
В общем, если бы ты не написал пост, ничего бы и не изменилось.
что выбрал ОП?
java
Бамп или джава победила?
Почти все правильно, тодько вместо "нода, руби и элекир" будет "пхп, пхп и пхп". Инерция, к сожалению, беспощадна.
Это копия, сохраненная 2 января 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.