. Python или Java. Области применения, выбор.
Python или Java. Области применения, выбор.

Python или Java. Области применения, выбор.

Добрый день, всем читателям форума. Хотел бы узнать у вас — какая технология перспективней для молодого программиста. Я уже два года работаю с PHP — используя фреймворки, API, паттерны и т.д. То есть проекты более-менее сложные.

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

До обраного В обраному 0

593 коментарі

дабы не ограничивать круг специализации

чуть чуть противоречит

высоко-нагруженные проекты, кластеры.

Используйте Jython и не парьтесь. :)

Используйте Jython и не парьтесь. :)

Вы вообще знаете о чем говорите, или просто посрать в комментах пришли?

нет это он так изящно тролит

Попробую заступиться за Python.

1) Python приучает к «прагматичному программированию». Мы (программисты python) не рвем на себе рубашку, утверждая «Только java/python/c++» либо «Только ООП/Функциональное/Процедурное программирование» правильно. Мы знаем сильные и слабые стороны нашего языка и стараемся использовать лучшее из идеологий. Если важна скорость можно использовать pypy, nuitka либо крутить с/с++ расширения Cython, Weave, CFFI и т.д.. Понятно, что если Вы будете писать с нуля Hadoop/поисковый движок гугла, то Вы выберете компилируемый язык. Но никто не мешает написать прототип на Python и перенести критические части на компилируемый язык.

2) Документация. Её можно читать вместо учебника по программированию. Приводится теория, примеры кода, все четко разъяснено. Сравните с той же scaladoc (которую без Ph.D. степени врядли разберешь) .

3) Комьюнити. Почти в каждом населенном пункте проводится Хацапетовка.Py конференция. Каждый день появляются интересные проекты, идеи. Вот например www.julython.org (python на июль).

А вообще Python не ставит за цель получить мировое господство. Поэтому изучайте еще java/c/c++/erlang/haskell (ради добра) и остальные языки, кроме, наверное, (php, delphi, visual basic) и используйте их, если они больше подходят для решения данной задачи.

Сравните с той же scaladoc (которую без Ph.D. степени врядли разберешь) .

А пример можно, а то я без ПхД как-то разбирался.

3) Комьюнити. Почти в каждом населенном пункте проводится Хацапетовка.Py конференция.

От это очень большой плюс, особенно по сравнению с джава. (Эт НЕ сарказм, если че)

Мы (программисты python) не рвем

Мы знаем сильные и слабые стороны нашего языка

Но важно другое: Вы (программисты python) совсем не умеете держать контекст (и лично вы не единственный кто это демонстрирует):

Интересует больше всего высоко-нагруженные проекты, кластеры.

Понятно, что если Вы будете писать с нуля Hadoop/поисковый движок гугла, то Вы выберете компилируемый язык. Но никто не мешает написать прототип на Python и перенести критические части на компилируемый язык.

Высоконагруженность и тд — это как раз про движок гугла и критические части. И вся прелесть той же джава (как платформы) в том что она не требует «переписывания узких мест на чистом Ц», а позволяет работать в контексте одной платформы (и обычно, одного языка)

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

гораздо понятнее будет читать документацию Python.

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

Тут конечно же «на любителя». Но, я считаю, что «монография + справочник» лучше чем «учебник для средней школы» (вспомните игрушки: чистокровки круче полукровок :) )

— скаладок (джавадок) — это именно описание АПИ, то есть пункт 2. Минимум (тут как получитсо конечно же :) ) воды, сухой справочник.

А когда мне надо такое в питончеге, я смотрю help(шотаммненадо), не выходя из REPL (и там доки по API обычно в одну строку влезают, ибо больше и не надо). Питонодока как раз для того, чтобы почитать, завалясь на диван, да решить, какой вариант решения задачи выбрать в данном конкретном случае. Для глубокой же теории есть работы, не привязанные к одной конкретной технологии. Это будет адов сипец, если авторы туториалов по языку программирования и его стандартной библиотеке будут пересказывать Кнута, причем всего.

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

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

А когда мне надо такое в питончеге, я смотрю help(шотаммненадо), не выходя из REPL

В питон РЕПЛ это тайпание кучи текста, и даже в питоновской доке это чтение кучи текста, потому что они ниасилили в доке писать тип возвращаемый методом в сигнатуре.

Если тип возвращаемого напрямую зависит от передаваемых аргументов (например, возвращается объект того же типа, что и аргумент) — что я там должен в сигнатуру писать? И еще чтобы $IDE любителей статической типизации от увиденного не удавилась.

Или тип вообще нерелевантен — ну возвращается мне какой-то там спискообразный, файлообразный объект или просто итератор — мне параллельно, как там класс этого объекта зовется, мне надо, чтобы он вел себя, как автор пообещал. Ну будет внутренний враппер какой-то, как оно часто бывает. Мне от того, что я его название увижу, станет легче?

И об epydoc вы, конечно, не слышали (а там есть @return:). И об ipython/dreampie не слыхали наверняка, а там автодополнение есть (и все они являются REPL; кто будет много говорить «а ты со стандартным давай попробуй», пусть с джавой своей поработают без Eclipse/NetBeans месяцок, сравним очучения потом). А еще у меня в терминале copy/paste работает, знатная такая штука — с ней даже стандартный REPL отращивает суперсилу.

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

Я так и не увидел ответа на мою критику кроме каких то нерелевантных эмоций.

Ну не нужно тебе знать что возвращает метод, ну так а некоторым нужно. Тебе нравится тайпать в repl простыни кода что бы узнать что же там за обьект, а некоторым больше нравится делать два клика мышкой.

Тебя на работе заставляют писать код в консоли? Ну так не всем так не повезло в жизни.

Еще раз: про epydoc и о том, что его огромное количество библиотек использует — слыхали?

О том, что /usr/bin/python — не единственная REPL, слыхали?

Слухи о PyDev (pydev.org) вообще проходили мимо вас?

Нет? Тогда на чем вообще основываете свою критику?

Еще раз: про epydoc и о том, что его огромное количество библиотек использует — слыхали?

Слышал, но я смотрю в стандартную питоновскую доку и там никаких ретурнов нету.

Слышал, и че? В чем твой аргумент?

Не слышу ответа: на чем основываете критику? Вы с этими инструментами работали или вам Рабинович напел, что тайпать много?

Ipython я иногда поюзываю, но в нем что бы посмотреть что вернул метод re.match() все равно нужно вначале натайпать re.compile(. )?

Опаньки, а я re.compile() только тогда юзаю, когда надо много-много (больше двух) строк прогнать через одну регулярку.

Чисто на посмотреть хватит и re.match() со строкой в качестве выражения.

Опять все сводишь к «мне не нужно значит всем остальным тоже не нужно»?

Нет, просто даю неуклончивый ответ на вопрос:

что бы посмотреть что вернул метод re.match() все равно нужно вначале натайпать re.compile(. )?

Нет, не нужно, потому что можно вызвать re.match со строкой в качестве паттерна.

И перестаньте приписывать мне сентенции, которые я не говорил. Вообще, надо открыть курсы цивилизованной полемики на ДОУ, а то описание достоинств технологии X почему-то воспринимается приверженцами технологии У как оголтелая критика У. Окститесь, господа, зачем критиковать то, что нам не нужно?

Нет, не нужно, потому что можно вызвать re.match со строкой в качестве паттерна.

Да, только ты получись результат совсем другого метода match

И перестаньте приписывать мне сентенции, которые я не говорил. Вообще, надо открыть курсы цивилизованной полемики на ДОУ, а то описание достоинств технологии X почему-то воспринимается приверженцами технологии У как оголтелая критика У.

Та нет, некоторые перцы просто выдумывают несуществующие достоинства питона.

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

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

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

В PHP нормального REPL с интроспекцией вовсе нет, а еще я ненавижу уродскую документацию на php.net (она окончательно скатилась в то этосамое, как только началась работа над веткой 5.х, комментарии — вовсе авгиевы конюшни), но вынужден выкручиваться — в песочнице экспериментировать, на салфетках пару раз написать, чтобы запомнить. Вот где по-настоящему плохо.

пусть с джавой своей поработают без Eclipse/NetBeans месяцок

А с отключенным интернетом, и вообще на перфокартах?

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

И вот имя класса (а разве на Питоне нету классов? вроде не javascript) это не просто имя, оно говорит о том как этот объект себя ведет, и какие методы у него есть. И за счет этого количество обращений к документации уменьшается (если со временем запоминаешь классы).

В тоже время, и с Джавой, можно было бы признаться и честно сказать, что документация у стандартной библиотеки классов. не очень приятная. И это забавным образом передается по наследству всему что делает Джава комьюнити (к примеру на Андроид). Я понимаю, что есть методы которые можно понять по сигнатуре, и классы которые можно понять по имени и свойствам, но это не всегда так и не всегда всё так очевидно, и иногда хотелось бы иметь подробные примеры, и описание как метод/класс работает. Хотя конечно этим страдает не только Джава, да и это не проблемы самого языка, это проблемы комьюнити и саппорта со стороны разработчиков языка, хотя это тоже важный аргумент при оценке и сравнении языков, точно также как наличие IDE с хорошо работающими подсказками. У Питона хорошая дока, тогда плюсик ему в этой колонке.

Нету хороших IDE с подсказкой — тогда минус в другой, хотя если ты говоришь что есть — тогда ещё плюс (я честно не интересовался работай с Питоном в промышленных масштабах =)).

Интересно: это у всех java-программистов есть склонность судить другие технологии, толком о них не зная или попробовав разик-другой

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

📎📎📎📎📎📎📎📎📎📎