Tagged: python

Python или Java? Хм… а может Groovy?

На DOU новый холивар Что выбрать бывшему учёному — Python или Java?

Хочу оставить позицию младшего научного сотрудника и переквалифицироваться в разработчика. Всё высшее образование было профильным — информатика. Коммерческого опыта в программировании нет, только эксперименты и учебные проекты. В последнее время предпочитаю писать их на Python, для него есть хорошие научные библиотеки.
Цель — найти позицию разработчика, которая могла бы мне дать начальный опыт. В перспективе — вывести на более наукоёмкие позиции (анализ данных, машинное обучение, обработка естественных языков).
Город большого значения не имеет, особых требований по начальной зарплате нет — лишь бы хватало на съёмную квартиру и проживание.
Работу начну искать где-то с весны, поэтому остаётся время на подготовку. Осталось решить, в каком направлении мне развиваться.
Некоторые соображения (рынок я знаю плохо, поэтому можете смело поправлять):
1) По Java вакансий намного больше, чем по Python. Кроме того, можно официально подтвердить знания Java, сдав какой-нибудь начальный экзамен Oracle — это может привлечь внимание HR.
2) С другой стороны, в Java есть множество неизвестных мне корпоративных технологий и фреймворков, в которых можно надолго утонуть. В Python с этим проще — если я освою базовый Django (может, Flask, Bottle) и сделаю на них несколько личных проектов, то это должно покрыть начальные требования.
3) Java — это в основном аутсорс, Python — это в основном продуктовые компании (или у меня сложилось такое впечатление).
Что будет лучшим стартом, если мне хочется дорасти до профессиональной работы с анализом данных, прогнозированием, построением рекомендательных систем и т.п.?

Как и следовало ожидать разгорелся сильный холивар, но почему-то не упомянули Groovy — язык который как раз ииногда и называют помесью Питона и Джавы.
Я решил ответить:

Пока единственный известный мне настоящий специалист по Data Science поработавший в Германии на суперкомпьютере, работал таки на Java, и я вообще сомневаюсь как что-то действительно большее Hello world можно написать на Python.
Хотя, конечно, хорошие программисты могут писать на чём угодно.

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

И всё таки лучше не забывать что Питон обманчиво кажется простым: он довольно своебразен и уводит в свою вселеную.

Мне кажется, что пока лучше выбирать JVM, как платформу. Если не будет хватать возможностей Java то можно попробовать другие JVM языки: тот же JPython, Scala или Groovy.

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

В случае, если захочется большей выразительности, DSL или динамики то есть Groovy — великолепный язык программирования, обратно совместимый с Java и обладающий наверное всеми теми качествами за которые тут так сильно хвалят Питон.

На Groovy кстати есть даже всякий научный софт, например GroovyLab:

GroovyLab is a MATLAB-like scientific programming environment based on Groovy with extensive plotting support, default access to the best Java scientific libraries, user-friendly interface, easy installation of toolboxes, Computer Algebra support and many other features.

Вообщем, могу сказать точно что выбрав джаву не прогадаешь
joseph-ducreux-meme-disregard-python-acquire-java-080b2b


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

[Перевод] Пол Грэм: Парадокс Питона (The Python Paradox)

Автор: Пол Грэм, August 2004
Python + Java
В недавней беседе я сказал то, что расстроило большое количество людей: «Вы можете найти более сообразительных программистов для работы над проектом на Python’е, чем для работы над Java проектом».

Я не имел в виду, что программисты на Java тупые. Я имел в виду, что программисты на Python’е сообразительнее. Ведь это огромная работа выучить новый язык программирования. Люди учат Python не потому, что он даст им возможность получить работу. Эти люди учат новый язык, потому что они искренне любят программировать и не удовлетворены теми языками, которые уже знают.

Это делает их как раз теми, кого компании по разработке ПО следует хотеть нанять. Именно поэтому, из-за отсутствия лучшего названия, я назову это «парадоксом Python’а»: если компания хочет написать своё ПО на относительно эзотерическом языке, то она наймет лучших программистов, потому что она привлечёт только тех, кто позаботился выучить его. Для программистов парадокс можно перефразировать так: язык, который нужно выучить, чтобы получить хорошую работу, это тот язык, который люди учат не только чтобы получить работу.

Не много компаний достаточно мудры, чтобы осознать это. Но и здесь происходить выбор: это как раз те компании, в которых программисты захотят работать. Например, Google. Когда они нанимают java программистов, они также хотят увидеть опыт программирования на Python.

Мой друг, который знает большинство распространенных языков, использует Python для большинства своих проектов. Он говорит, что основная причина, это то как выглядит исходный код. Это может показаться несерьезной причиной выбора языка. Но это намного вачнее, чем кажется: когда ты пишешь программу, ты тратишь больше времени на чтение, чем на написание кода. Ты добавляешь куски исходного кода также, как скульптор добавляет куски глины. Язык, который делает исходный код уродливым, сводит с ума придирчивого программиста, как глина с комьями скульптора.

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

До сих пор, не смотря ни на что, оба языка являются «движущимися мишенями». Тем не менее их объединяет с Ruby (и Icon, и J, и Lisp, и Smalltalk) тот факт, что они создавались и использовались людьми, которые действительно интересуются программированием. И тот велик, кто делает это хорошо.

Оригинал (англ.) The Python Paradox
Статья хоть старая но до сих пор актуальная. Перевод не мой, я просто делаю репост чтобы не потерялся текст.
И кстати да, не дайте себе запудрить мозги, Ява лучше 😉
joseph-ducreux-meme-disregard-python-acquire-java-080b2b