LINUX.ORG.RU
ФорумTalks

[Java][Опрос] Откуда такая ненависть?

 ,


0

0

Очень большая часть ЛОРовцев не любит (ненавидит:)) Java. Вопрос: откуда такая ненависть? И ещё, очень интересно, многие ли из тех, кто говорит, что "Java не нужен", осилили его? И наоборот, многие ли его изучившие, его ненавидят ) Просто по-моему, для средних задач он вполне приемлем, а для крупных проектов, в которых не последнюю роль играет скорость разработки, Java едва ли не единственное адекватное решение.

Итак, опрос:

1) Java не нужен, не учил и не собираюсь

2) Java не нужен, выучил

3) Java иногда нужен, не учил и не собираюсь

4) Java иногда нужен, не учил, но собираюсь

5) Java иногда нужен, выучил

6) А что, есть другие языки? о_О

7) Что это?


Очень большая часть ЛОРовцев не любит (ненавидит) вообще все, в том числе и себя, тайно мечтая о встрече со стенкой...

mrxrrr
() автор топика

s/нужен/нужена/g | s/Java/жаба/g

fMad ★★
()

Писал на Java около двух лет, сейчас около года пауза, но собираюсь вернуться. Если, правда, не перееду на mono :)

Как и Си++ - нишевый язык. Местами пока - абсолютно незаменим (например, J2ME).

KRoN73 ★★★★★
()

Языки программирования вообще не нужны. От них одно зло. Человечество должно жить в деревнях с летающими коровами.

Deleted
()

3) Java иногда нужен, не учил и не собираюсь

GFORGX ★★★
()

> Вопрос: откуда такая ненависть?

От её безальтернативности. Она достаточно хороша, чтобы её пихали везде, и достаточно отвратительна и не поддается улучшениям, чтобы это бесило.

> Просто по-моему, для средних задач он вполне приемлем, а для крупных проектов, в которых не последнюю роль играет скорость разработки, Java едва ли не единственное адекватное решение.

А по моему, ты очень мало чего знаешь, чтобы делать подобные выводы.

Каждый, кто хорошо знает и Java, и несколько других языков, Java недолюбливает. Каждый, кто при этом ещё и вынужден иногда писать под J2ME, эту технологию тихо ненавидит.

anonymous
()
Ответ на: комментарий от anonymous

>Каждый, кто хорошо знает и Java, и несколько других языков, Java недолюбливает.

Отучаемся говорить за всех :) Кроме Java я отлично знаю Си/Си++, Forth, Perl, PHP, VB, несколько ассемблеров. С разной степенью качества знаю ещё с десяток языков от Фортрана до Питона. Но недолюбливания Java нет. Язык для своих задач подходит очень и очень хорошо, а инфраструктура под него вызывает очень тёплые чувства :)

...

Я, вообще, навскидку не смог сейчас вспомнить язык, который бы недолюбливал сегодня. Во времена юношеского максимализма не любил Паскаль, в каждую бочку затычкой пихал Си++... Но это было уже лет 15 тому назад :) Сейчас понимаю, что каждой птахе своя ветка есть...

KRoN73 ★★★★★
()

Java нужна, знаю на уровне Advanced Hello World.

JackYF ★★★★
()

Java учил, когда-то нравилась. Теперь не использую и не нравится.
История показывает, что в ЯП рулят тонкие инструменты, под конкретные задачи.

Да и тотже C# заруливает ее сейчас по простоте и скорости работы

(почему заруливает по скорости не понятно, вроде принципы у них одинаковые. Но тормазнутость java-приложений относительно cs-овских заметна на глаз.)

Еслиб за С# не стояла бы офф-топичная корпорация, с большим удовольствием использовал бы его, чем жабку.

anonymoos ★★★★★
()
Ответ на: комментарий от CtrlAltBs

>А какой язык ненишевое решение?

Такого я не знаю :)

>Постойте, дайте угадаю

Ты вечно не угадываешь. Пересобери libastral свой или убавь уровень идиосинкразии ко мне, она тебе мешает сосредоточиться.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Кроме Java я отлично знаю Си/Си++, Forth, Perl, PHP, VB, несколько ассемблеров

Сильно другой тут только Форт.

> Язык для своих задач подходит очень и очень хорошо, а инфраструктура под него вызывает очень тёплые чувства :)

Подходит то он очень хорошо, но когда надо немного за рамки этих задач выйти - то тут и начинается облом. Главная беда Java в том, что если используешь Java, то обречён использовать только Java. Ни с чем другим она не дружит и жить вместе не хочет.

Ну и особую ненависть своей ограниченностью она вызывает там, где ей нет альтернатив - конкретно - J2ME.

> Я, вообще, навскидку не смог сейчас вспомнить язык, который бы недолюбливал сегодня.

Конечно же, не язык виноват, а люди, которые намеренно сделали его (а точнее - JVM) слишком ограниченным, и после агрессивно его продвигали везде. Теперь, если надо вклиниться в развитую J2EE-инфраструктуру, то придется писать на Java, даже если это откровенно неподходящий язык для решения такой задачи. Вот за это жабу и не любят, собственно.

anonymous
()

Джаву знаю, получаю за неё деньги. Не люблю из за примитивности.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

> Главная беда Java в том, что если используешь Java, то обречён использовать только Java.

Для JVM есть пара десятков языков, включая Scala, Groovy, Scheme.

Legioner ★★★★★
()
Ответ на: комментарий от anonymoos

> Еслиб за С# не стояла бы офф-топичная корпорация, с большим удовольствием использовал бы его, чем жабку.

За C# не стоит офф-топичная организация. Это ISO-стандарт имеющий свободные реализации (mono).

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

> Для JVM есть пара десятков языков, включая Scala, Groovy, Scheme.

И все они бешенно неэффективны, что весьма заметно сужает область их применимости. JVM умышленно не приспособлен для реализации языков, отличающихся от Java.

anonymous
()
Ответ на: комментарий от anonymous

> И все они бешенно неэффективны, что весьма заметно сужает область их применимости.

Почему это? Частей, требующих эффективности от языка реализации, в программах, как правило мало, и они компактны. Поэтому их легко переписать на Java (или даже на C), благо, интероперабельность отличная.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

>Главная беда Java в том, что если используешь Java, то обречён использовать только Java. Ни с чем другим она не дружит и жить вместе не хочет.

Когда мне не стало хватать Java и меня поломало исследовать недостатки множества языков на JVM, я тупо написал себе JBForth :) - http://trac.balancer.ru/jbforth/

...

Вот про J2ME ничего с точки зрения программиста не скажу, не писал. А вот с точки зрения юзера - альтернативы пока всё равно нет :) Если нужна переносимость между многими десятками разнокалиберных мобильных платформ - то только J2ME.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Когда мне не стало хватать Java и меня поломало исследовать недостатки множества языков на JVM, я тупо написал себе JBForth :) - http://trac.balancer.ru/jbforth/

И тормозит он неизбежно по сравнению с тем же SPForth просто неприемлимым образом. А если ты попробуешь эффективно реализовать Пролог, или, хуже того, ML - вот тогда точно будешь плакать.

> Если нужна переносимость между многими десятками разнокалиберных мобильных платформ - то только J2ME.

Одна из наиболее задалбывающих фичей J2ME - это как раз таки фактическое отсутствие какой бы то ни было переносимости.

anonymous
()
Ответ на: комментарий от Legioner

> Частей, требующих эффективности от языка реализации, в программах, как правило мало, и они компактны.

Это когда речь идёт о разнице в 2-3 раза в скорости. Но тут разница в десятки и сотни раз - и это становится уже неприемлимым не только в узких местах, но и вообще для всего кода.

> благо, интероперабельность отличная.

Какая такая интероперабельность на J2ME? Какая интероперабельность на J2EE-хостинге?!?

Там, где есть возможность этой интероперабельностью воспользоваться, там обычно можно и нужно обходиться и без Java вовсе.

anonymous
()
Ответ на: комментарий от KRoN73

> Главная беда Java в том, что если используешь Java, то обречён использовать только Java. Ни с чем другим она не дружит и жить вместе не хочет.

man JNI

Или я неправильно понял фразу?

UnDeFiNeD
()
Ответ на: комментарий от UnDeFiNeD

> man JNI

Там, где можно использовать JNI, там можно не использовать Java.

> Или я неправильно понял фразу?

Поюзай JNI в жирном J2EE-проекте, и расскажи (если сможешь), что и в какой последовательности тебе за такие выходки оторвут.

anonymous
()
Ответ на: комментарий от anonymous

> Это когда речь идёт о разнице в 2-3 раза в скорости.

Когда речь идёт о разнице в 2-3 раза, чаще всего можно вообще не заморачиваться.

Кстати, в случае со Scala-ой речь примерно о такой разнице и идёт, ЕМНИП.

> Но тут разница в десятки и сотни раз - и это становится уже неприемлимым не только в узких местах, но и вообще для всего кода.

На JS пишут веб-приложения достаточной сложности. Там выбора вообще нет, до тормозов JS всем далеко, но пишут ведь, и работает, и не тормозит почти. А если говорить про ынтырпрайз, то там 99% времени обычно уходит на ожидание сокета соединения с БД, будет 90% уходить, абсолютно пофиг.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

J2EE уже давно умерло, не надо заниматься некромантией. JEE ещё шевелится, да и то потому что вовремя слизали всё с опен-сурса.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

>И все они бешенно неэффективны, что весьма заметно сужает область их применимости. JVM умышленно не приспособлен для реализации языков, отличающихся от Java.

Если заглянуть внутрь JVM, то становится видно, что злого умысла там нет. Просто Java - язык со статической типизацией. И поэтому статические языки ничуть не уступают Java. Да и как они могут уступать, если продукт их компиляции ничем не будет отличаться от такой же компиляции из Java. Тот же байткод. Поэтому же мой JBForth2, когда/если до него дойдут руки, будет работать с полной для JVM скоростью.

А вот всё ранее перечисленное - это языки с динамической типизацией. На каждый чих приходится использовать reflection, а это на два порядка тормознее прямых вызовов. Отсюда и тормоза.

Правда, насколько я в курсе, коммьюнити, таки, пробило введение в JVM методов invokevirtual. Как только они появятся в JVM, скорость динамических языков вырастет, как минимум, на порядок :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

> Там, где можно использовать JNI, там можно не использовать Java.

Java можно нигде не использовать. Просто она во многих случаях удобна. И если в большом проекте на Java какой-нибудь кусок гораздо легче реализовать на другом языке, то почему бы это не сделать?

> что и в какой последовательности тебе за такие выходки оторвут.

Ничего не оторвут, если сможешь показать целесообразность таких действий.

UnDeFiNeD
()
Ответ на: комментарий от Legioner

> Кстати, в случае со Scala-ой речь примерно о такой разнице и идёт, ЕМНИП.

Ага, если писать в сильно Java-подобном стиле. А если функционально писать - то опачки.

> А если говорить про ынтырпрайз, то там 99% времени обычно уходит на ожидание сокета соединения с БД, будет 90% уходить, абсолютно пофиг.

Ынтырпрайз разный бывает. Например, тот же сложный логический движок, который в реальном времени должен на основании анализа потоковых данных решение принимать, на Java реализовывать заколебёшься, а на нормальном языке под JVM тормоза в требования реального времени не вписываются. При этом вся остальная инфраструктура - жаба, интегрировать что-то внешнее практически нереально. Финансовая математика, фигли. И как в такой ситуации не возненавидеть разработчиков JVM за все эти нелепые и необоснованные ограничения?

anonymous
()
Ответ на: комментарий от Legioner

> J2EE уже давно умерло, не надо заниматься некромантией.

Скажи ещё что нибудь смешное.

Кроме того, как минимум JSP и сервлеты падлы живы и не сдохнут долго.

anonymous
()
Ответ на: комментарий от KRoN73

> Просто Java - язык со статической типизацией.

Там этой типизации - с гулькин хер. Даже нормальных value types не предусмотренно, в отличии от .NET.

> И поэтому статические языки ничуть не уступают Java.

Ха ха ха пять раз. Попробуй, скомпилируй Haskell или ML эффективно под JVM. А ведь статичнее некуда, жаба рядом с ними - как Tcl рядом с Pascal.

> А вот всё ранее перечисленное - это языки с динамической типизацией.

Это у Prolog динамическая типизация? У ML? Проспись, и не употребляй таких веществ больше!

anonymous
()
Ответ на: комментарий от UnDeFiNeD

> Java можно нигде не использовать.

Мечтать не вредно.

> Просто она во многих случаях удобна.

Ага. Но зачем падлы закрывают доступ к этим удобствам своими идиотскими ограничениями в реализации JVM?

> Ничего не оторвут, если сможешь показать целесообразность таких действий.

Оторвут, для порядка. Потому что часто это просто невозможно сделать физически.

anonymous
()

4

Бывают задачи под джабу.

Deleted
()
Ответ на: комментарий от anonymous

>Проспись, и не употребляй таких веществ больше!

Кроме языков есть ещё реализации.

Прямо скажи - ты байткод Java хорошо изучал?

Я, вот, не вижу там принципиальных недоработок для статических языков.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Кроме языков есть ещё реализации.

И? Что сказать то хотел? ML от твоей заявы динамическим не станет.

> Прямо скажи - ты байткод Java хорошо изучал?

Достаточно хорошо. Компиляторы разных языков под JVM писал.

> Я, вот, не вижу там принципиальных недоработок для статических языков.

Ну, меня это не удивляет. Если у тебя уже ML за статически типизированный не считается...

Вот подумай, как в JVM эффективно реализовать ML-ные tagged unions? В .NET это довольно легко, поверх Си - вообще тривиально. А теперь попробуй реализовать эффективно модель памяти Хаскелля, да ещё и с возможностью удаления ненужных конструкторов/деконструкторов (обычно для этой цели в промежуточных виртуальных машинах используется иснтрукция return-constructor, которую вполне можно эмулировать поверх value types в .NET или при прямом доступе к железу - просто сдвигая стек).

Отсутствие value types реально напрягает. Ну а про такие гадости, как отсутствие возможности дешевой реализации хвостовых вызовов, ограничения на размер тела метода и т.д. и вовсе промолчу, это и так все знают.

Потом - зачем такие сложные операции со стеком, при невозможности делить стек между методами? В .NET все эти swap-ы и прочие извращения просто выкинули, тем самым существенно всё упростив.

anonymous
()
Ответ на: комментарий от eugine_kosenko

> У Пролога в большинстве диалектов -- да.

Внутри - ни фига. Ему никакого RTTI даром не нужно. Посмотри, как WAM работает.

anonymous
()
Ответ на: комментарий от anonymous

>Если у тебя уже ML за статически типизированный не считается...

Ткни пальцем, где я такое утверждал. А пока буду считать, что ты даже то, что пишут не читаешь.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Ткни пальцем, где я такое утверждал.

Где про "всё ранее перечисленное". А ранее как раз и ML упоминался, и Scala, и Haskell.

По остальным пунктам возражений нет? Или просто не понял?

anonymous
()
Ответ на: комментарий от KRoN73

> Во времена юношеского максимализма не любил Паскаль, в каждую бочку затычкой пихал Си++...

Гм. Мне, видимо, стоит задуматься )

По сабжу - слегка ознакомился с Java (серьёзным изучением не занимался), подумал, зачем нужен кастрированный C++, для которого плодятся кучи лишних сущностей (это я про всякие энтерпрайз штучки), забросил.

Вообще отношусь к Java лучше, чем к C#, потому что она хотя бы действительно кроссплатформенная и уже открытая.

hexenlord
()
Ответ на: комментарий от anonymous

>Где про "всё ранее перечисленное".

Ответ был на строку «Для JVM есть пара десятков языков, включая Scala, Groovy, Scheme.»

И подразумевался ответ про Groovy. Так как Scala, например, итак имеет скорость, равную C# на mono. А про реализацию Scheme на JVM я не в курсе, но полагаю, что она динамическая.

>По остальным пунктам возражений нет? Или просто не понял?

Я не знаком с ML. А комментирую только то, по поводу чего есть что сказать.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

> Внутри - ни фига.

Гнилая отмазка.

> Ему никакого RTTI даром не нужно.

Пральна. Зачем TI языку без типизации?

eugine_kosenko ★★★
()
Ответ на: комментарий от hexenlord

>Вообще отношусь к Java лучше, чем к C#, потому что она хотя бы действительно кроссплатформенная и уже открытая.

dotnet тоже открытая платформа. См. mono :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>Компиляторы разных языков под JVM писал.

Кстати, ссылки можно? Интересно посмотреть реализации.

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.