There are 999 reasons to become levi niner. Find yours at levi9.com/jobs
×Закрыть

Почему весь энтерпрайз на Java и будет ли тенденция в сторону таких языков как Python, Ruby?

Собственно сабж, ну и что мешает этим языкам занять нишу j2ee.

LinkedIn

Лучшие комментарии пропустить

1. Динамическая типизация не даёт вести разработку программ размером больше хелоу ворлда.
2. Джава на рынке больше 20ти лет, обкатана и существуют сотни решений для энтерпрайзов.
3. Язык прост, предсказуем, и минималистичен. Даже если кто и быдлокодит, это будет относительно легко разгрести через средства рефакторинга в IDE.
4. Мощные IDE, в частности Idea вообще вершина эволюции средство разработки.
5. Кроссплатформеность
6. Существуют около 350 гигабайт библиотек доступных в репозитории мавена. Для всего всего всего. И они в большинстве своём открытые, да.
7. В следствии очень дешёвая разработка.
8. Очень много программистов. Джава самый популярный язык.
9. Открытая стандартизация JSR.
10. Компилируется в байт код а не требует полной интерпретации как РубиПайтон.
11. Полная обратная совместимость ещё с самых первых версий. Седьмая джава это всего лиш минорная версия, т.е. 1.7. У РубиПайтона с этим большие проблемы.
,,,

PROFIT

ну и тут ещё сотня причин но одна самая холиварная, но на правах имхо: Ява местами уродская, но Python и Ruby уродистей в разы, просто более выразительные и модные.

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Еще один аргумент только что пришел в мою голову... Для современных энтерпрайзнутых проектов их главным врагом является бажность, количество глюков. Даже срок разработки могут продлить но вот с наличием багов смириться тяжко. Энтерпрайз софт должен работать без багов в идеале. По ряду причин именно на платформе Джава можно значительно уменьшить бажность программ. То есть аналогичный софт на Перл или ПХП/Питон/Руби строк в 200 000 размером примерно написанный одинаковыми программистами по силе на ПХП в сравнении с джавой при одинаковых входных усилиях будет более глючным имхо. Хотя Питон/Руби/ПХП может будут себя хорошо проявлять сначала, писать будет легче и т.д. Но это только поначалу. Я сталкивался с Питоном в реальной жизни. Эта штука радует при первом знакомстве, симпатичный язык и все такое но после 20 000 — й строки кода ты понимаешь что погружаешься в ад и уже попахивает серой.
Простой пример из реальной жизни. Знакомые отрефакторили проект средствами 5 — ой джавы — дженерики и т.д., то есть чисто применили енумы, дженерики и т.д., без детального поиска багов. Проект стал на 25% примерно менее глючным и бажным. Языки с динамической типизацией порождают баги.

Сейчас Скала например за счет реализованного функционального подхода позволит еще больше ударить по багам, потому она будет жить и я надеюсь что приживется в ентерпрайзе. Главный враг ентерпрайз программиста — не время, не менеджер, а баг.

1) Потому что Джава проста как язык.
2) Потому что статически типизирована.
3) Потому что много спецификаций, библиотек, средств разработки — все даром.
4) Потому что поддерживается ораклом и более-менее сохраняется обратная совместимость.
5) Потому что реально кроссплатформенна.
6) Потому что много доки инфы и т.д.

7) Можно перейти на Груви, Скалу и т.д.

Руби мне нравится больше чем Питон, но у них обоих нету шансов никаких закрепиться в ентерпрайз мире.

4) Потому что поддерживается ораклом и более-менее сохраняется обратная совместимость.

5) Потому что реально кроссплатформенна.

6) Потому что много доки инфы и т.д.

1) Потому что Джава проста как язык.

3) Потому что много спецификаций, библиотек, средств разработки — все даром.

ПХП, Руби — все тоже самое. Почему вы это приводите в плюсы одного языка только.

У Питона с пунктом совместимости есть проблема. Но по сути ее решают на практике.

Ораклом поддерживается только Джава, потому я отношу это в плюс только джаве. Насчет кроссплатформенности — в Джава она именно практически реальная, например в том же Руби рельсы с кучей гемов не работают нормально под виндоуз, в питоне тоже самое. К половине как минимум питоновских библиотек идут какие — то нативные либы. на джава я нативных либ не видел в повседневной работе вообще, хотя видел довольно сложные проекты.
Доки для Питона много, да она неплохая, для руби тоже, но для джава все равно явно больше.
Джава как язык значительно проще Питона, Руби и т.д., я говорю именно про ядро языка.
Библиотек для джавы явно больше чем для Питона и Руби.
У Питона собственно не просто проблемы с обратной совместимостью — там два совершенно несовместимых языка, Питон 2.7 который является мейнстримом в коммерческой разработке и полностью с ним не совместимый Питон 3.0. Я уже говорил об этой проблеме в другом треде. Да, эту проблему как — то решают костылями, но все- таки мне было бы неуютно в такой ситуации. У Руби тоже есть проблемы с совместимостью версий 1.8 и 1.9 но не такие значительные.
Можно добавить еще производительность системы, тут уже джава явно вне конкуренции.

Почему ядро Linux написано на С, а не на Javascript? 0_0

Почему сайты пишут с использованием JavaScript, а не C?

Почему все пишут не в двоичных кодах?

Почему умные люди задают тупые вопросы?

И многие другие такие вопросы...

blog.newrelic.com/...-what-we-think

но, кстати, в статье доходчиво написано «почему» Пайтон можно смело втягивать в энтерпрайз среду, но не упоминается «зачем». Ответ на этот вопрос уже не раз упомянут ниже — поддержка гигантов индустрии (не МС и Гугл, а Оракл, САП, Айбием) и по-настоящему поддержка со стороны основного middleware. Опять же, вопрос «зачем» также подразумевает, что на Пайтоне не бросятся писать целые ERP. А в остальном — втащить Пайтон в энтерпрайз стек = писать некоторые средства на нем. Это всегда пожалуйста.

в статье доходчиво написано «почему» Пайтон можно смело втягивать в энтерпрайз среду

Спекуляции фанбоя.

Не будет. Без компиляции и стат типизации никак. Будут себе конкурировать с PHP.

А Java с .Net

Ответ, на самом деле, прост и получить его можно ответив на следующий вопрос — почему на java/.net не пишут простые сайты или маленькие/легкие веб-сервисы?

Отсюда — разные языки существуют для разных целей, а не потому что кому то так сильно захотелось создать свой яп

.net не пишут простые сайты или маленькие/легкие веб-сервисы?

А вот тут мы вас и поправим. Хостинг 4$ в месяц www.m6.net , а разработка в разы проще чем на php. На php сейчас выгодно разве что сайты визитки клепать.

Почему не пишут? Не нахожу супротив показателей. ©

Потому что жаба это один язык, а питон и руби — два разных. :)

Энтерпрайз всегда стремится к одному языку/платформе (правда, это ни у кого еще не получилось). Софта, на самом деле, в любой крупной конторе очень и очень много. Тянуть весь этот зоопарк непросто, поэтому энтерпрайз всегда будет дрейфовать в сторону наиболее используемого (в данной конкретной компании) языка/платформы, а не в сторону современных и, возможно, лучших решений.

.Net смог потеснить Java только потому, что монстры вроде MSSQL, BizTalk или SharePoint используют .Net вовсю. Пока Ruby или Python не будут использовать подобные монстры, им ничего не светит. Ну а для создания монстров нужны крупные компании, которые особо продвигать питоны и руби не пытаются.

Где-то так. :)

Я бы лучше спросил, зачем питону энтерпрайз?

И так все хорошо ... :)

Бабло и возможность спокойно выйти на пенсию, а не искать чудо стартап в 60 лет.

кстати, про стартапы в 60 лет — знакомый на работе, сказал что последний раз перед пенсией попробует стартап и свалил в Box.Net
не буду врать что ему ровно 60, но хорошо за 50 лет.

> что мешает этим языкам занять нишу j2ee

То что в в них не вложили столько денег как в Java.

Это примерно так же, как почему Маша из Мухосранска не так известна как Альона Винницкая, у нее ведь вокал круче и сиськи больше.

Ощущение новичка.
Не знаю как там в Java, но заметил разницу с .net примерно такую — когда спрашиваешь в чём профит от питонов руби то тебе пишут «Смотри как просто хелоуворд сделать», а когда спрашиваешь в чём профит от .net то тебе говорят смотри как легко реализован IoC контейнер и какие классные уборщики мусора. Java от .net мало отличается и видимо любовь корпораций именно этим и объясняется — язык заточен под архитектуру DDD, есть даже некоторые встроенные паттерны (правда говорят что их лучше пока не использовать) неимоверно мощные среды разработки, тестирования, и всяческих продакшенов.

Но чем больше языков тем лучше я считаю. Тот же .net я так понимаю надёргал из всех за последнее время очень много.

Кстати, в плане встроенных патернов руби просто вне конкуренции. Там, по мойму, даже есть встроенный синглтон.

В джава тоже:

public enum Singleton {instance;}

Насчет Python, Ruby не скажу, работал с Perl на большом проекте.

Субьективно, такая разработка легче, чем писать «тяжеловесные» конструкции на Java и приятнее. Java меня больше нагружает, или мне так кажется )
Но, если что-то менять в коде, рефакторить, а код не покрыт тестами(!!!),
то это просто неудобно да и может закончится багами после выдачи релиза.

Если команда из хорошо подкованных разработчиков, то, думаю, это не проблема,
только вот попробуй такую команду набери и удержи... это один из ключевых вопросов.
Еще очень важно как именно происходит разработка.

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

Я бы тоже выбирал Java, если речь идет о надежности + минимизации рисков + долгосрочной разработке.

А с какой целью Вы задаете этот вопрос, чтобы выбрать язык программирования ?
Думаю, что есть очень неплохие проекты на том же Python, Ruby, даже интереснее, по сравнению с нередким явлением у нас устарелых или запутанных/гиперсложных ) ентерпрайз проектов на Java.

Вы правы, собственно джаву и выбирают для проектов которые будут жить годы. Один из моих прошлых проектов вообще жил 3 года до меня, со мной лет 5 и будет жить еще лет 10 ибо приносит реальный профит. Здоровая система под 400 000 строк кода полностью на джава. Я на Перле себе такое не представляю просто.

Для особо тугих объясните что такое «ниша j2ee».

те ентерпрайзнутые проекты где лучше всего работают спецификации J2EE. Мне кажется сейчас таких уже нет, так как спринг работает везде лучше чем чисто J2EE.

Тут все правильно сказали про тормоза, стеки, среды, фреймворки. ИМХО все проще — никакой уважающий себя энтерпрайз не откроет свой тугой кошелек пока не увидят трех волшебных букв — SLA. А этих букв они не видят потому что никто из зарекомендовавших себя консалтеров типа IBM, Oracle и т.п. не видят как можно дать SLA на технологию без всего вышеперечисленного

О чем я уже тоже написал — нет поддержки интерпрайз вендоров- нет мультиков...
+ выход новой версии Java например обычно доставляет минимум новых проблем.

Ау питонисты- как там 3.0 не кашляет? Уже все перешли?

Пока нет необходимости переходить

ага еще пару таких апдейтов и будете как перловщики сидеть в своем гетто т.к. остальным такой геморой нафик не упал.

Ты наверное имел в виду не необходимости, а возможности.

К сожалению в ентерпрайз мире есть свойство программ пересаживаться на новую версию среды/компилятора/языка автоматически с выходом оной. Потому увы Питон при всей его симпатичности и Руби при всей его красоте и могуществе тут не катят. Руби я просто для себя учу для удовольствия:)

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

мне кажется это пока один адекватный комментарий

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

а зачем? Если все уже есть.

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

По пунктам
1 тормозят. Сильно. Очень сильно.
2 глючат. не менее отчаяно
3 нет интерпрайз стека
4 нет библиотек.

5 нет поддержки монтстров типа Oracle и IBM

Вышеперечисленные строго говоря конренты PHP и Perl а не Java. У Java один конкурент в лице .net

1 тормозят. Сильно. Очень сильно.
2 глючат. не менее отчаяно
Наверное Java идеал скорости...

shootout.alioth.debian.org/...yarv&lang2=java
ух ты лучший результат для руби — отстование всего в два раза. Типичный- в десятки раз, пиковый всего в 237 раз. Что вы там говорили про скорость? :)
Java конкурент скорее с++ а не питонам с пхп.

В разработке на Java есть проблемы но они точно не в скорости платформы. Скорее в переусложненности отдельных технологий\фреймвоков.

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

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

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

«Java is a language that was created to prevent mediocre programmers from making too many mistakes» © Paul Graham, за точность цитаты не ручаюсь;

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

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

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

Стартапы переходят на яву только когда разрастаются до размеров, при которых для саппорта нужно много людей, а на яве их проще найти.

Стартапы переходят на Джава, когда оказываетсо что рупи/питон/ерланг/другой_тру_крутой_язык (точнее его инфраструктура) не способен держать нагрузку больше университетского кампуса.

Стартапы переходят на Джава, когда оказываетсо что рупи/питон/ерланг/другой_тру_крутой_язык (точнее его инфраструктура) не способен держать нагрузку больше университетского кампуса.

наблюдал/участвовал в переносе нестартап проекта с perl на java. но не по причине нагрузок. просто со временем накопилась такое количество гуано кода, что поддерживать его оказалось дороже, чем написать новый проект с нуля.

таки отсутствие жесткой типизации дает себя прочуствовать. причем не сразу, а годиков через 3-5...

Стартапы переходят на Джава, когда оказываетсо что рупи/питон/ерланг/другой_тру_крутой_язык (точнее его инфраструктура) не способен держать нагрузку больше университетского кампуса.

Какая нагрузка была у youtube когда его купил гугл? Эрланг, между прочим, как раз и расчитан на высокие нагрузки, только на нем специалистов днем с огнем не сыщешь :)

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

Статическая типизация и т.д., но прежде всего слабая выразительность языка (в плане доступных абстракций). Статистику — а вы посмотрите, сколько успешных стартапов начинало с джава (ведь не секрет, что в стартапе очень важна скорость разработки)

Статистику — а вы посмотрите, сколько успешных стартапов начинало с джава (ведь не секрет, что в стартапе очень важна скорость разработки)

вам не надоело писать о вещах о которых тут уже много раз говорилось? Всем известно что написать с нуля что-то простенькое — это явно на Джава, равно как и систему резолвинга трейдов никто не будет писать на питонах и ПХП. Каждому свое. Но говорить, что при любых раскладах питощик, перловщик и т.д. сделает в разы больше джава программиста — это чушь

И с какого перепугу стартап это энтерпрайз?

Стартапы — пример области, где важна скорость разработки, и где джава не получила широкого распространения (по крайней мере, среди успешных стартапов).

вам не надоело писать о вещах о которых тут уже много раз говорилось?

Человек спрашивает, я ему отвечаю. Вы, между прочим, снова повторили «то, о чем тут уже много раз говорилось» в своем посте :)

смотрим что написал топикастер:

Собственно сабж, ну и что мешает этим языкам занять нишу j2ee.

Стартапы — пример области, где важна скорость разработки, и где джава не получила широкого распространения (по крайней мере, среди успешных стартапов).

еще раз вопрос каким макаром стартуп это ниша JEE ? :)

Я где-то писал, что «стартуп это ниша JEE»? Просто эта ветка немного в оффтопе.

еще раз вопрос каким макаром стартуп это ниша JEE ? :)

Тем не менее в силиконовке куча стартапов кодярят на спринге и хибернейте.

Какая нагрузка была у youtube когда его купил гугл?

И какая? Я не знаю.

Эрланг, между прочим, как раз и расчитан на высокие нагрузки, только на нем специалистов днем с огнем не сыщешь :)

Да, эрланг просто к слову пришелся. Про его производительность я ничего не знаю, по причинам которые вы указали :)

Статическая типизация

А динамическая — вызывает много ошибок :) ... Кстати, как это всязано со скоростью разработки я так и не понял.

но прежде всего слабая выразительность языка (в плане доступных абстракций).

Не совсем понимаю о чем вы. Расскажите подробнее, или пример какой-то. (это не троллинг)

а вы посмотрите, сколько успешных стартапов начинало с джава

А заканчивают? Или вы под скоростью разработки подразумеваете наговнять версию 1.0 и перейти работать в новый «успешный стартап»?

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

И какая? Я не знаю.

en.wikipedia.org/...Company_history
The site grew rapidly, and in July 2006 the company announced that more than 65,000 new videos were being uploaded every day, and that the site was receiving 100 million video views per day.

Потом осенью их купили, с тех пор нагрузка только выросла, а в начинке вроде ничего не поменялось (Python + C)?

Не совсем понимаю о чем вы. Расскажите подробнее, или пример какой-то.

Замыкания, лямбда-выражения, метапрограммирование, lazy evaluation... Что из этого есть в джаве?
Простой пример: разбить строку на слова и отсортировать список слов.

Решение на питоне в одну строку:

sorted_words = sorted([part.strip(',;:\'"') for part in s.split()])

Сколько это займет на джаве и сколько ерунды надо будет написать? А тут «как говорим, так и пишем». Хотя я понимаю, конечно, что все субъективно, некоторым циклы подавай и все )

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

Ну мы немного о разном говорим. Я говорил о скорости разработки продукта и добавления новых фич. Абсолютно левого — это не знакомого с кодом проекта? Так в любом случае в codebase вникать надо.
Почитайте Paul Graham «Beating the averages», там про скорость разработки

paulgraham.com/avg.html

ооо да выиграем 50% размера кода и потеряем в десятки раз в производительности в лучшем случае. Ага то что надо интерпрайзу. Все же будут рады купить пару сотен лишних серверов для кластера.

По-моему, там обсуждалась скорость разработки, о производительности речи не шло

скорость разработки большого ентерпрайз проекта на питоне будет однозначно выше первые пару недель. Потом Джава сделает свое дело :)
при тестировании и саппорте Питон скорее всего проиграет.

При раширении и добавлении новых фич тоже

Если честно — ваша пена у рта чести вам не делает.

Простой пример: разбить строку на слова и отсортировать список слов.

Более реальный пример: распарсить CSV-файл (тепрь фантастика: без сторонних либ :) ).
Код получится куда сложнее (не сложный, но сложнее), или нет.
Второй момент, раз уж сортируем, то хотелось бы чтобы цыфры были первые (последние), с/без учета регистра и тд.

Фишка в том что когда приходит «заказчик» (человек который поставил задачу), он обычно может внести изменения. И тут правильно спроектированный код (с классами и 100500 паттернами) расширять куда проще, а код в одну строку прийдется выкинуть и написать заново. Отсюда кстати, накладные расходы на тестирование.

sorted_words = sorted([part.strip(’,;:\’"’) for part in s.split()])

part.strip(’,;:\’«’) — это зачем?
split — она по пробелам или по пробельным символам разбивает строка «aaaa[space][space]ss[space]ddd[space]» — Это сколько слов 4, 5, 3? А когда правила поменяются?
Как мне узнать как работает split не залазя в доку?
Что произойдет если вызовется не split (я так понял стандартный), а странно-подмешанный (утиная типизация и все такое) мой_сплит?

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

Почитайте Paul Graham «Beating the averages», там про скорость разработки

Почитаю, спасибо.

part.strip(’,;:\’«’) — это зачем?
split — она по пробелам или по пробельным символам разбивает строка «aaaa[space][space]ss[space]ddd[space]» — Это сколько слов 4, 5, 3? А когда правила поменяются?

Как мне узнать как работает split не залазя в доку?

Я вижу аргументы в пользу кастомной реализации split :) Ну если таковая и будет, то в коде ничего особо не изменится.

strip — убирает указанные символы с начала и с конца строки (типа trim)

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

Просто некоторые люди мыслят исключительно категориями ООП и джавы (сишарпа, фортрана, паскаля), поэтому на любом языке пишут программы на джаве (сишарпе, фортране, паскале). Например, мне нужно отсортировать строки выше каким-то хитрым образом. В питоне я просто передам в метод сортировки comparison function, а джаве мне надо будет реализовать класс, который будет реализовывать какой-то Comparer интерфейс (поправьте, если что не так), потом передать экземпляр этого класса. Excessive verbosity, вот как это называется :)

Ладно, не вижу смысла продолжать спор, мы немного по-разному мыслим здесь. Тем более, слегка оффтоп.

Я вижу аргументы в пользу кастомной реализации split :) Ну если таковая и будет, то в коде ничего особо не изменится.

strip — убирает указанные символы с начала и с конца строки (типа trim). Просто некоторые люди мыслят исключительно категориями ООП и джавы (сишарпа, фортрана, паскаля), поэтому на любом языке пишут программы на джаве (сишарпе, фортране, паскале).

посмотрите выше на мой пример. Где там ООП Фортран Паскаль и т.д. там четко написанно что вы погорячились.

Может вам немного поостыть?

Извините, сразу не заметил Ваш пост. Я не горячусь )

теперь вопрос
1) находите ли вы этот код достаточно элегантным и понятным даже без знания Джава?
2) согласны что

Сколько это займет на джаве и сколько ерунды надо будет написать? А тут «как говорим, так и пишем». Хотя я понимаю, конечно, что все субъективно, некоторым циклы подавай и все )

пустой понт?

Код хороший, понятный, ок. Но см. мой ответ на тот пост

В питоне я просто передам в метод сортировки comparison function, а джаве мне надо будет реализовать класс, который будет реализовывать какой-то Comparer интерфейс (поправьте, если что не так), потом передать экземпляр этого класса.

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

Excessive verbosity, вот как это называется :)

Одна строчка и вы в ауте? Да ну.
Повторюсь, как только задача начинает отличатся от лабы на первом курсе. Особых различий нет. И это вызвано не людьми которые «мыслят на джаве», а людьми которые ставят задачи, и тем что эти задачи часто меняются.

И самое важное что эти задачи потом прийдется проверять и внедрять — эти этапы для энтерпрайза куда важнее «написания реализации задачи».

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

Это особенности динамической типизации, тут тестировать надо или еще как-то.

Мне самому больше статическая нравится; например, в С# у меня будет comparison function со строго заданными типами и опять же никаких дополнительных классов и т.д. Я тут писал кусок кода, но ДОУ его изуродовал

и опять же никаких дополнительных классов и т.д.

А это что такое:

(el1, el2) => el1.ToString()[0] > el2.ToString()[1]

?
Скорее всего тут создается класс, то же решается при помощи анонимных классов в джаве.
Так шо вы сэкономили одну строку, поздравляю.

Кстати, вы привили хороший пример. Разве IComparator (его метод) возвращает булиан, а не инт?

Не класс, а делегат (читай — указатель на функцию) из анонимного метода. То есть опять же, мне не надо плодить сущности, даже не надо отдельный метод в классе создавать (все это справедливо для C# 3.0+).

Да, да, поймали меня, нужно инт возвращать :)

Да, да, поймали меня, нужно инт возвращать :)

Я очень надеюсь что в дотНете булеан не кастуетсо автоматом к инту, а то можно попасть на веселый дебаг :)

Простой пример: разбить строку на слова и отсортировать список слов.

Решение на питоне в одну строку:

sorted_words = sorted([part.strip(’,;:\’«’) for part in s.split()])
Сколько это займет на джаве и сколько ерунды надо будет написать? А тут «как говорим, так и пишем». Хотя я понимаю, конечно, что все субъективно, некоторым циклы подавай и все )

извините что в 2 строчки :-)

String[] sorted = s.split(" "); Arrays.sort(sorted);

кстати в сплите может быть любое регулярное выражение

Да, регулярные выражения в джавовском сплите я заценил, полезная вещь на самом деле :)

А теперь можно еще очистить каждое слово от знаков препинаний и кавычек по концам, как у меня в примере?

регулярное выражение не прокатит?

кстати а как ваша функция отреагирует на такой тест(просто интересно)?

'''" ""abc"" ';'b
Неправильно отреагирует :) Будет пустая строка, потом abc и b.
Ну раз можно регулярным выражением, то пример не оч хороший ) Честно говоря, я ожидал увидеть цикл )

Короче тезис в том, что декларативная запись легче и быстрее читается _и_ пишется чем месиво из циклов и вспомогательных переменных.

предлагаю все делать на Ассемблере

idiot, компилятор не просто транслирует в машинный код, он еще довольно нехило оптимизирует его.

О-о-о, пошли сферические тесты в вакууме от злых явистов))

Ну давай не сферические, где там суперраспределенные базы на питоне перелопачивающие петабайты данных?

нет библиотек.

На Руби и Питоне нет библиотек?!

1. Динамическая типизация не даёт вести разработку программ размером больше хелоу ворлда.
2. Джава на рынке больше 20ти лет, обкатана и существуют сотни решений для энтерпрайзов.
3. Язык прост, предсказуем, и минималистичен. Даже если кто и быдлокодит, это будет относительно легко разгрести через средства рефакторинга в IDE.
4. Мощные IDE, в частности Idea вообще вершина эволюции средство разработки.
5. Кроссплатформеность
6. Существуют около 350 гигабайт библиотек доступных в репозитории мавена. Для всего всего всего. И они в большинстве своём открытые, да.
7. В следствии очень дешёвая разработка.
8. Очень много программистов. Джава самый популярный язык.
9. Открытая стандартизация JSR.
10. Компилируется в байт код а не требует полной интерпретации как РубиПайтон.
11. Полная обратная совместимость ещё с самых первых версий. Седьмая джава это всего лиш минорная версия, т.е. 1.7. У РубиПайтона с этим большие проблемы.
,,,

PROFIT

ну и тут ещё сотня причин но одна самая холиварная, но на правах имхо: Ява местами уродская, но Python и Ruby уродистей в разы, просто более выразительные и модные.

1. Динамическая типизация не даёт вести разработку программ размером больше хелоу ворлда.

2. Джава на рынке больше 20ти лет

Фига себе.

Полная обратная совместимость ещё с самых первых версий. Седьмая джава это всего лиш минорная версия, т.е. 1.7. У РубиПайтона с этим большие проблемы.

У джавы начиная с семерки уже тоже траблы, кое какой код отказывается работать на 1.7, но без проблем работает на 1.6

Вот с последнего что вспомнилось click

Замечание: эти ошибки также могут проявляться в Java 6, если включён один из флагов оптимизации: -XX:+OptimizeStringConcat или -XX:+AggressiveOpts у JVM.

Мега удар по стабильности: не работает с ключами оптимизаций.

Дык суть в том что в семерке они по умолчанию включены.

из тех что паблик: playframework, prefuse активно падают с Error’ом под 1.7, под 1.6 никаких проблем

А подробнее можно.

Я понимаю что в любой программе есть баги, но насколько они критичны.

таки да. Похерел оракл совместимость :-(

>Полная обратная совместимость ещё с самых первых версий. Седьмая джава это всего лиш минорная версия, т.е. 1.7. У РубиПайтона с этим большие проблемы.

это какие у пайтона проблемы с обратной совместимостью?

У Пайтона три майорнаые версии. У думаю лучшим местом почитать про подромности с обратной совместимостью лучше почитать changelog.
Но в целом у Пайтона хорошо с обратной совместимостью насколько я знаю, но я не эксперт в нём. Поэтому смогу ответить только нагугленым: blog-ru.python.org/...ython-27-3.html

>У Пайтона три майорнаые версии

у пайтона *две* мажорные версии, при этом я еще не видел живых людей, использующих 3.x.

2.x — 2.7 — 3 — 3.x (по слухам)

при этом я еще не видел живых людей, использующих 3.x.

А они есть. Самое прикольное, шо чувак говорил, что они как раз для энтерпайза и пишут.

релизы в ветке 2.x обратно совместимы.

После обновления с 2.6 на 2.7 у меня перестали работать пару плагинов к МВИМу.

4. Мощные IDE, в частности Idea вообще вершина эволюции средство разработки.

Ты не поверишь в JetBrains есть мощные IDE для руби (RubyMine) и питона (PyCharm)

Сейчас вас затопчут, нельзя же так подставляться.

5. Кроссплатформеность

я может не в тему, но наболело — как достал этот майнкрафт — на вин XP не работает сервер, под линуксом куча глюков с рендерингом.

и это называется «кроссплатформенность» ?

как достал этот майнкрафт
То что он написан на джаве, не значит что он кросплатформенный.
Кстати, много энтерпрайз приложений используют ОпенГЛ?

ну а как мы хотели, если всё через прослоечку JVM? Это ж, наверное, как любовью заниматься в костюме химзащиты. Еще и в лыжи обутым. Безопасно, конечно...

оно конечно анальный любовь без химзащиты круче :)

Не утверждал, что Джава это язык для гомосеков. Я как бы за презумцию невиновности в отношении джавистов, хотя и не понимаю, почему если любовь организмами и вы голые, то сделать это нужно обязательно через ж0пу.

своим постом я вам пытался напомнить о полезности средст защиты не более

аа, значит, я недопонял...

вообще говоря, если прижало и надо ехать, то нет и вопроса «вам шашечки или ехать».

У меня работало и там и там бес проблем. Кстати единственная гама на джаве что без дополнительных танцев с бубном сразу запустилась.
1) С версией джавы 7 — неработает.
2) В последней версии майнкрафта таки шото похерели с рендерингом ибо раньше работало.

Юзается LWJGL — это OpenGL биндинг для джавы со своими dll-ками для популярных операционок, короче говоря сторонняя опенсорс библиотека, лучшее что сейчас есть кстати. Вещь хорошая но не без глюков (по опыту скажу дохрена их там :)), к jdk, oracle и ibm отношение имеет опосредованное и независимое.

Воздержусь от комментов, ибо я за джаву:)

Сразу видно что человек кроме Java ни с чем серьёзно не работал. :)

Думаю что могу сказать что вполне серьёзно (т.е. за деньги и на больших проектах) кроме Java работал с Delphi, PHP и JavaScript а сейчас на Groovy. Этого достаточно чтобы делать выводы?

Динамическая типизация не даёт вести разработку программ размером больше хелоу ворлда.

Народ из Твиттера, Scribd.com и basecamp не в курсе видимо.

Конечно все можно, но то все что будет отловлено на этапе компиляции — вам ручками прийдется самим прибивать. Просто экономия времени, которая заметна для больших проектов, с кучей разработчиков.

Народ из Твиттера, Scribd.com и basecamp не в курсе видимо.
Ну в твиттере уже год как в курсе :)

Ну, твиттер года три на руби был — все это время код там был сложности хэллоуворлда?

Плюс переписали только серверную часть. На Скала, а не на Джаве. Тестирование и фронт-энд там на руби.

Тестирование и фронт-энд там на руби.

Last week, we launched a replacement for our Ruby-on-Rails front-end: a Java server we call Blender

engineering.twitter.com/...aster_1656.html

Кроме джавы и скалы они еще clojure юзают: github.com/...athanmarz/storm

Ну, твиттер года три на руби был — все это время код там был сложности хэллоуворлда?

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

3. Язык прост, предсказуем, и минималистичен.
Вы серьезно?

Джава

class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }

Руби

puts "Hello world"

Питон

print "Hello, World!"
Давайте более сложную задачу:

«Чтение контента файла, декодирование контента из UTF-8, и вывод в консоль?»

Перчатку поймали .. сударь?

>"Чтение контента файла, декодирование контента из UTF-8, и вывод в консоль?"

а может не надо? это же в коммент не влезет, или опять страница сломается или я вот прямо тут умру от передозировки стримридеров, файлхендлеров и прочих радостей дикого ооп.

FileUtils из apache commons-io читает из файла в любой кодироке в строчные коллекции однострочным оператором.

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

String s= FileUtils.readFileToString(new File("file.txt“) , “UTF-8”);

Подождите пока уточнят задание, я думаю Rostislav Dzinko имел ввиду шота более сложное.

а String s не лопнет, например?

Трололо, не больше чем питоновская.

Ну ваш на питоне занимает 0 строк, превзойти будет сложно :)

FileUtils из apache commons-io

Ну-ну-ну... Давайте все-таки придерживаться стандартной библиотеки языка, а не мерятся длиной гигабайтов библиотек) Это не этично ;) Не о библиотеках сейчас же спорим...

И ответ Богдану (и Andrey Dobrov также относится к этому, кстати, Андрей, опустили импорт, — нехорошо ;) ) снизу — я не имел в виду ничего сложнее, чем поставленная задача.

1) уточните плз о чем вы спорите :)

2) кодом я привел пример товарищу который интересовался

Хотелось бы придумать хороший пример, который помог бы сравнить объективно 2 языка (не хелло ворлд или «сферический однострочник в вакууме»)

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

Спорить смысла нет просто. У каждого языка свои цели.

снизу — я не имел в виду ничего сложнее, чем поставленная задача.

То есть вариант с ФайлУтилами (или что-то подобное)? Если да, то там и без коммонсов получаетсо строк 10-15 (с импортами). Но данная задача, как я сказад далеко не показатель стандартной, особенно для энтерпрайза, задачи.

Давайте все-таки придерживаться стандартной библиотеки языка, а не мерятся длиной гигабайтов библиотек

Понятие «стандартная библиотека языка» довольно расплывчато. То что камонсы постявляет другой вендор еще не значит что они не стандарт де-факто. Подобное было с бустом который был стандартом еще до того как его официально приняли (кстати не помню приняли ли).

опустили импорт

та не вопрос всеравно в одну строчку :) :)

String s = org.apache.commons.io.FileUtils.readFileToString(new File("file.txt“) , “UTF-8”);

«Чтение контента файла, декодирование контента из UTF-8, и вывод в консоль?»

Типичная энтерпрайз задача :)

С ИО давно не работал, но давайте попробуем. Что подразумевается под декодирование? Какие критерии оценки?

Более важный момент: Как это поможет оценить простоту языка?

Имелось ввиду не количество символов на программу, а количество символов в книжке, после которой можно легко и недвусмысленно «понимать» любые программы.

>количество символов в книжке, после которой можно легко и недвусмысленно «понимать» любые программы

да-да, покажите мне фотографию стопки этой книжки!

на той фотографии была стопка книг о жее, хибернейте и прочих фреймворках. А о самой джаве только одна книга.

из-за же точно print-ов, генерящих меседжи из глубоких недр всем, кто слышит stdout и накрылся один перловый прект. покрыть его юнит-тестами оказалось невозможным

1) Пруф? Имеете опыт? Откуда такие умозаключения?
2) Это на каком-таком рынке Java 20 лет? Если я не ошибаюсь 2011 — 1995 != 20 ( К слову Питону как раз 20 лет, руби чуть младше, но все равно старше Java =) )
3) Java прост, предсказуем, и минималистичен ... разве что только в сравнении с С++
4) PyCharm, Aptana, Python Tools for Visual Studio, попробуйте на досуге ...
5) ы .... пыщь-пыщь ... не читал но осуждаю .. тыц .. тыц
6) Ну так гигабайтами код измерять это круто))) Особенно сравнивая 2 разные языки
7) В следствии чего? Того, что Яве 20 лет, или кросс-платформенности, или 350 Гб открытых библиотек?
8) + Согласен, но к предмету обсуждения не имеет никакого отношения.
9) PEP вам в помощь (у Руби не помню как эта байда называется)
10) pyc, pyo

11) Ниже отвечал уже злостный зеленый троль

Python и Ruby уродистей в разы, просто более выразительные и модные.

Да, мы любим уродские языки, не умеем измерять код гигабайтами и терпим от знания арифметики ...

P.S.

Короче, разводите, срачи рулят, и Питон рулед ...

Мне кажется, многие не так понимают «прост и минималистичен». Какой-нибудь Луговский или Пол Грэм сказал бы «невыразительный» или даже «скудный», «убогий». Но для больших проектов это очень даже плюс :)

2. Джава на рынке больше 20ти лет, обкатана и существуют сотни решений для энтерпрайзов

да-да вышла на рынок задолго до своего рождения ;)

Я був був приємно вражений цього року на PyCon. Було згадано багато успішних великих проектів. Головна особливість, що швидкість виходу проекту в плавання сильно переважає над Java проектами.

Я вважаю, що тенденція розвитку ентрепрайзного python таки існує. Існує вже немало фреймворків з великим ком’юніті. Ще одним аргументом можна назвати те, що Python зараз активно розвивається і застосовується в Google.

Ще одним аргументом можна назвати те, що Python зараз активно розвивається і застосовується в Google.

аргументом к чему? То есть все что гугл то есть истина? И еще вопрос насколько гугл это близко к джава энтерприйз

Аргумент до того, що Python непогано застосовується для маштабних задач.

ну так а при чем тут то что мы называем JEE?

ну дык масштабные задачи ведь! шо ж тут непонятного-то.

Глядя на гугло опенсорс складывается впечатление что джава там используется значительно шире, и гугл+ они почему то решили на джаве писать, а питон в гугле — это наверное легаси код в купленном ютубе, так что питон тут в пролете.

а питон в гугле — это наверное легаси код в купленном ютубе

И куча скриптов, которые запускают консольные утилиты, написанные на Джава :)

Ну питон как скриптинг язык хорош, и даже используется в разных вебсферах, тут я спорить не буду, но речь идет ведь о замещении jee а не скриптовании?

тенденція буде тоді, коли кити ентерпрайзу так захочуть. не просто кити софтваре індастрі, а саме КИТИ ЕНТЕРПРАЙЗУ, які цей ентерпрайз придумали, придумують далі, і заробляють на цьому бабло.

Я вважаю, що тенденція розвитку ентрепрайзного python таки існує.

На вебсвере запускается? Официальные конекторы к Ораклу и ДБ2 есть?

Знаю тока одного человека который говорит что пишет на питоне для энтерпрайза — как я понял из его рассказов это в основном внутренние портальчики и веб-морды (весь бэк-энд джавы, дотНеты и тд)

Знаю пару людей которые пишут (мо писали, давно не общался) на Руби для энтерпрайза — сплошные “сайтики для маркетологов” ©

назовите хоть один публичный сервис гугла написаный на python для начала

google sketchup написан на близком к python — ruby

1) не питон

2) А еще вспомним дикий пиар Twitter ом RoRа как куска говна...

1) я считаю питон во много аналогом руби, поэтому общие оценки можно отнести и к руби
2) странно оценивать компанию стоимостью 10 млрд.$ как кусок говна

3) динамические языки можно сравнить с семейными минивенами — не быстры, не мощны, но гораздо удобнее крутых тачил.

RoR был в спешке выпилен из твитера и заменен Scala т.к. был постоянным трабл мейкером. Погуглите что ли. JVM технологии теперь там сплошные.

Я в курсе что твиттер ушел с рельс, на тот момент руби не был таким качественным как сечас, но рельсы позволили быстро создать приложение и когда сервис получил популярность — перешли на производительную платформу. Поэтому лучше знать достоинства и недостатки технологий, понимать когда лучше применять её в зависимости от ситуации, а не обсырать все подряд.

Сравнивайте лучше мух отдельно от котлет — ruby с PHP на пример.
В нише где живет Java Ruby проектов примерно как в электроцитов в моче. Есть в количествах достаточных что бы сказать ’ыыыыы ну кто то наверно что то делает и на ruby’.

Смысла сравнивать нет -мало пересекающиеся миры...

но не на питоне. Это притом что со специалистами по питону у них все ок :)

Гугл купил этот стартап

Опять про руби. www.acunote.com — на RoR, здесь на сайте было интервью с основателем, вполне ентерпрайз применение.

А основатель (поправка — читать «разработчик» вместо «основатель») недавно делал доклад по своему проекту в на сходке николаевских программистов. Очень много нелестного наслушались мы о Руби. Я задал вопрос — если он такой плохой почему на нем пишете? Ответ был в стиле — если бы сейчас начали разработку то точно не на Руби. Оттаке.

про скалу тоже что-то подобное проскакивало недавно. в дайджесте засветилось.
а она все-таки jvm-based...

кому верить?

А вы как думали: Запускаем любую программу на ДжВМ и она становитсо кросплатформенной и мега стабильной?

ДжВМ — это не серебряная пуля. Кстати, почитайте наезды на скалу и поймете в чем проблема.

Интересно. Можешь ссылку дать?

itclub.mk.ua/...meeting/87.html
itclub.mk.ua/...meeting/90.html

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

не нашел там про руби, жаль, хотелось бы услышать критику

Виноват, не основатель а архитектор и ведущий разработчик

ну раз речь зашла о проектах, могу сразу назвать пару, но не гугловских это bitbucket.org и disqus.com

Битбакет — гуано в смысле проекта, бесплатные приватные репозитарии круто, но это его единственный плюс.

У меня валится с ошибкой в ФФ, хроме, сафари (иногда таки запускаетсо). Может у них и мега крутой бэк-энд (ведь все на тру питоне), но результат так же важен.

а в IE(7,8,9) не валится?

Дома нет ИЕ

На работе ИЕ используетсо только для фикса багов «В ИЕх не работает ...»

A few services including code.google.com and google groups. Most other front ends are in C++ (google.com) and Java (gmail). All web services are built on top of a highly optimizing http server wrapped with SWIG.

1. оракл
2. оракл

3. оракл

тоже сначала думал так ответить, но Оракл не так давно стал помехой. Да и не Ораклом единым. SAP вон, например. Так вот взяли и переделали всю платформу Netweaver на Пайтон да Руби, lol. Так, быренько, чисто по-приколу. Ну а че, 176+ тыщ клиентов — плевать на них всех. А IBM? Сворачиваем нафик все проекты по Websphere, по JDK, всех клиентов нафик и тд — на Руби переходим...

Да и главный вопрос: а Руби с Пайтоном оно вообще надо?

>Да и главный вопрос: а Руби с Пайтоном оно вообще надо?

иметь с заказчика по 2 килобакса за каждое добавление колонки в отчетик? да не, шо вы — конечно не надо!

1. потому что гладиолус.
2. нет не будет.

3. уже 5 лет как неверно писать/говорить «J2EE». но lurkmore.to/Всем_похуй

а как надо говорить?


Formerly, the platform was known as Java 2 Platform, Enterprise Edition (J2EE), and specific versions had “dot numbers” such as J2EE 1.4. To strengthen the association with the Java platform, the short name is now Java EE, and to simplify the version number, the leading “1.” is dropped. So the latest version of the Java platform for the enterprise is Java Platform, Enterprise Edition 6 (Java EE 6).
www.oracle.com/...view/index.html

Подписаться на комментарии