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 куда я пытаюсь собирать ссылки на другие полезные статьи для вас и анонсы курсов и интернатуры в компаниях.

Один комментарий

  1. Anastasiia Smirnova

    груви джуниорам лучше в руки не давать. вообще, плохим программистам лучше груви не давать. понатыкают везде дефов, напишут все в одну строчку. а когда на рантайме падают дикие иксепшены, глаза круглые, попа горит: «почему не работает??»
    кстати, не забывайте, что: либо груви, либо лямбды, но не вместе :/

  2. Александр

    И спустя продолжительное время, что можно сказать про groovy сейчас в 2020.
    Кого не спрашиваю мало кто онем слышал. Действительно ли не получил серьезного распространения ?

    • stokito

      Массовым он не стал но и свою нишу не потерял: на моём текущем проекте на Груви всякие бизнес рулы написаны. Греилс стал менее популярен из-за Саринг Бут, но и новые проекты на нём тоже делают

      • Аноним

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

      • stokito

        Поддержка самого Груви хорошая, только что писать на нём придётся всё равно выучить Джаву. Все либы по сути бери из Джавы , тот же Спринг Бут.
        Но если сегодня выбирать стек для большого проекта то нужно писать микросервисы, брать нужно Джаву для бекенда и отдельно делать более простые бекенд серверы на Ноде. Т.е. фронтендеры делают себе на своих технологиях но критическая бизнес логика на Джаве.
        Если проект небольшой или даже средний то Нода может справится если только всё делать на микросервисах.
        Всё это прятать за Nginx и не выставлять наружу в голом виде.
        Пхп, Руби и Питон в топку. Динамические языки больше не нужны потому что уже всё в докер контейнерах и нету такого как раньше по ФТП заливали на хостинг ПХП файлы. Критические по скорости вещи можно уже пробовать писать на Расте, это безопасный Си++.
        Саму Джаву тоже уже можно компилировать в нативный код с помощью Graal и это даёт местами хороший буст скорости.
        В целом все технологии кроме разве что Раста уже устаканились, обросли всем чем надо, потырили идеи друг у друга. Последний ПХП вообще уже язык мощнее Си шарпа.

  3. Александр

    А в плане использования не для WEB, а как язык в приложениях, ITSM систем работающих согласно ITIL (tivoli — IBM, servicemanager — HP, Наумен,…) ?

    • stokito

      Я не эксперт в этих системах но могу точно сказать что просто используйте тот язык программирования который упоминается в примерах документации. В целом там очень вероятно что есть места с Груви

      • Александр

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

      • stokito

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

Оставьте комментарий