Плюсы и минусы python – Если изучаешь Python стоит ли для общего понимания изучать С++, или не грузить разум и конкретно изучить Python?

Содержание

R и Python — достойные соперники? / Издательский дом «Питер» corporate blog / Habr

Всем доброй пятницы, дорогие читатели!

В истории компьютерной редакции издательства «Питер» найдется немного столь успешных книг, как «Программируем на Python» Майкла Доусона и не больше таких противоречивых тем, как изумительный язык R, прочно закрепившийся в числе бестселлерных тем «Амазона». В настоящее время мы договариваемся с правообладателями о новой замечательной книге по Python, но в то же время хотели проверить общественное мнение о R — целесообразно ли издавать новые книги об этом элитарном языке для гуру большой статистики, либо Python легко его одолеет, не то что Аполлона?

Добро пожаловать под кат!

Языки Python и R спорят за звание «наилучшего» инструмента для работы с данными, и у обоих соперников есть свои достоинства и недостатки. Выбор того или иного языка зависит от конкретной ситуации, издержек на обучение, а также от того, какие еще распространенные инструменты требуются для решения задачи

Студенты часто интересуются, каким языком – R и/или Python лучше пользоваться при решении повседневных задач, связанных с анализом данных. Я обычно предлагаю интерактивные руководства по R, но уточняю, что в каждом конкретном случае выбор зависит от типа поставленной задачи, данные по которой требуется проанализировать.

Python и R — популярные языки программирования для работы со статистикой. В то время, как язык R разрабатывался с прицелом именно на потребности статистиков (вспомните только, какими мощными возможностями визуализации данных обладает R!), Python славен своим понятным синтаксисом.

В этой статье будут рассмотрены важнейшие отличия между языками R и Python, а также рассказано, какое место они оба занимают в мире изучения данных и статистики. Если вы предпочитаете инфографику, посмотрите разработку ”Data Science Wars: R vs Python”.

Знакомство с R

Росс Айхэка и Роберт Джентлмэн создали свободный язык R в 1995 году как свободную реализацию языка программирования S. Они стремились разработать язык, который обеспечивал бы более качественный и понятный подход к анализу данных, статистике и графическим моделям. На первых порах R использовался преимущественно в академической и научно-исследовательской среде, но сравнительно недавно стал проникать и в мир больших корпораций. Поэтому R — один из наиболее бурно развивающихся статистических языков, используемых в корпоративной практике.

Одно из основных достоинств R — огромное сообщество разработчиков, занимающихся поддержкой языка в почтовых рассылках, службе пользовательской документации и в очень активной группе на Stack Overflow. Также существует CRAN, гигантский репозиторий рекомендованных пакетов R, в разработке которых могут участвовать все желающие. Эти пакеты представляют собой коллекцию функций и данных R, они обеспечивают мгновенный доступ к новейшим приемам и функционалу, избавляя программиста от необходимости все изобретать самостоятельно.

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

Знакомство с Python

Язык Python был создан Гвидо ван Россумом в 1991 году. В этом языке делается акцент на производительности и удобочитаемости кода. Среди программистов, желающих погрузиться в анализ данных и пользоваться статистическими приемами, немало активных пользователей Python, применяющих этот язык именно в статистической сфере. Чем активнее вы углубляетесь в среду технарей, тем больше вам, по всей вероятности, будет нравиться Python. Этот гибкий язык отлично подходит для всего новаторского. Учитывая его простоту и удобочитаемость, кривая обучения для этого языка сравнительно пологая.

Как и в R, в Python есть пакеты. PyPi — это список пакетов Python, в нем содержатся библиотеки, дополнять которые может любой пользователь. Как и R, Python обладает большим сообществом разработчиков, но оно несколько неоднородное, поскольку Python — универсальный язык. Тем не менее, именно наука о данных стремительно занимает все более внушительные позиции во вселенной Python: ожидания растут, одно за другим появляются новые приложения по работе с данными.

R и Python: Общие показатели

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

Когда и как использовать R?

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

Приступая к работе с R, целесообразно для начала установить замечательную IDE RStudio. Затем рекомендую ознакомиться со следующими популярными пакетами:

  • dplyr, plyr и data.table, упрощающие манипуляции с пакетами,
  • stringr для работы со строками,
  • zoo для работы с регулярными и иррегулярными временными последовательностями,
  • ggvis, lattice и ggplot2 для визуализации данных и
  • caret для машинного обучения

Когда и как использовать Python?

Python пригодится в случаях, когда задачи, связанные с анализом данных, вплетаются в работу веб-приложений, или если статистический код требуется инкорпорировать в рабочую базу данных. Python, будучи полнофункциональным языком программирования, отлично подходит для реализации алгоритмов с их последующим практическим использованием. Еще недавно пакеты для анализа данных на Python находились в зачаточном состоянии, что представляло определенную проблему, но в последние годы ситуация значительно улучшилась. Обязательно установите NumPy /SciPy (научные вычисления) и pandas (манипуляции с данными), чтобы приспособить Python для анализа данных. Кроме того, обратите внимание на библиотеку matplotlib для создания графики и scikit-learn для машинного обучения.

В отличие от R, для Python не существует ярко выраженной “выигрышной” IDE. Желательно ознакомиться со Spyder, IPython Notebook и Rodeo и выбрать ту, которая лучше всего вам подходит.

R и Python: доли в сегменте науки о данных

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

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

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

R: Плюсы и минусы

Плюс: Картинка бывает информативнее тысячи слов
Если данные визуализировать, то они зачастую становятся выразительнее и понятнее, чем голые числа. Язык R просто создан для визуализаций. Обязательно ознакомьтесь с пакетами для визуализации ggplot2, ggvis, googleVis и rCharts.

Плюс: экосистема R
R обладает богатой экосистемой ультрасовременных пакетов и располагает активным сообществом. Пакеты доступны в репозиториях CRAN, BioConductor и Github. Все пакеты R можно просмотреть по адресу Rdocumentation.

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

Плюс/минус: R — медленный язык
R создавался, чтобы облегчить работу статистикам, а не вашему компьютеру. R может казаться медленным из-за некачественно написанного кода, однако существует множество пакетов, повышающих производительность R: pqR, renjin и FastR, Riposte и многие другие.

Минус: R сложен в изучении

Кривая обучения языку R нетривиальна, особенно если вы беретесь за статистический анализ, опираясь на графический интерфейс. Даже поиск пакетов может занять много времени, если вам это в новинку.

Python: плюсы и минусы

Плюс: IPython Notebook
Инструмент IPython Notebook облегчает работу с Python и данными. Не составит труда использовать такой блокнот вместе с коллегами, причем им даже не придется ничего устанавливать. В таком случае резко снижаются издержки, связанные с организацией кода, файлами вывода и заметок. Вы сможете уделить больше времени полезной работе.

Плюс: универсальный язык
Python – универсальный язык, простой и интуитивно-понятный. Кривая обучения у него сравнительно пологая, на этом языке вы сможете быстрее писать программы. Короче говоря, на код тратится мало времени, а на разные интересности – много!

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

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

Плюс/Минус: Визуализации
Возможность визуализации – важный критерий при подборе софта для анализа данных. Хотя в Python и есть приятные библиотеки для визуализации, например, Seaborn, Bokeh и Pygal, выбор может быть излишне велик. Более того, по сравнению с R, визуализация на Python устроена гораздо сложнее, а ее результаты порой не слишком наглядны.

Минус: Python играет на чужом поле
Python — конкурент R. Но в нем нет альтернатив для сотен важнейших пакетов R. Пусть Python и успешно догоняет, неясно, будут ли люди ради него отказываться от R?

А победителя…

Определяете вы! Как специалист по данным, вы должны сами подобрать себе язык для работы. Постарайтесь ответить на следующие вопросы:

  1. Какие проблемы вам требуется решать?
  2. Во что вам обойдется изучение нового языка?
  3. Какие инструменты активно используются в вашей профессиональной сфере?
  4. Какие альтернативы существуют для этих инструментов?

Удачи!

Язык Python: стоит ли изучать, плюсы и минусы

Язык Python: стоит ли изучать, плюсы и минусы

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

Python — что это такое?

Python (по-русски произносится как Питон) является одним из самых популярных и востребованных языков программирования. Первая версия была выпущена в 1991 году и с тех пор периодически обновляется каждые 2-3 года.

Питон пригоден для различных сфер программирования:

  1. Системное программирование: поиск электронных каталогов, запуск других программ.
  2. Графическое программирование: разработка приложений с веб-интерфейсом.
  3. Веб-сценарии: поиск, приём, передача, извлечение информации, загрузка веб-страниц, передача и обработка файлов и т.д.
  4. Создание прототипов.
  5. Создание программ для вычислений.
  6. Разработка робот-программ, игр и прочего.

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

Язык Python

Плюсы

К плюсам Python относятся:

  • Простота. Его часто советуют в качестве первого “базового” языка, так как он очень прост в изучении и исполнении. В процессе написания программы не требуется использование фигурных скобок, как в других языках, что позволяет не отвлекаться на переключение между клавишами уделять больше внимания разработке программы.
  • Обширность применения. Питон используется практически повсеместно: для создания сайтов, игр, разработки программных обеспечений, 3D-моделирования и даже для обработки фото. Для этого существуют разные инструменты и программы языка. Многие крупные компании (Google, Instagram, Facebook) используют Питон.
  • Лицензия и бесплатность. Основным достоинством данного языка является наличие лицензии, его доступность и бесплатность. Это позволяет пользоваться Питоном без ограничений даже в школах. Также обучиться владению данным языком можно абсолютно бесплатно с помощью различных курсов и видео-уроков.
  • Поддержка. Python поддерживается разработчиками и сообществом программистов (простыми пользователями), поэтому при возникновении какой-либо проблемы всегда можно узнать способы её решения напрямую.
  • Обширные библиотеки. Python имеет стандартные библиотеки, в которых можно работать с электронными ресурсами, базами данных, протоколами Интернета и прочими инструментами.
  • Подходит для большинства типов современных операционных систем. Скрипты, написанные на Питоне, подходят для iOS, Android, Windows и других типов ОС. Это позволяет применять язык программирования в самых разных областях.
  • Перспективность. Это один из главных факторов для изучения Питона — язык будет востребованным ещё несколько лет, благодаря своим достоинствам. Поэтому при желании изучать программирование не стоит думать, что Питон совсем для этого не подходит, так как уже “устарел2 — это не так.

Программирование на Python

Минусы

Данный язык программирования также имеет минусы:

  • Непривычный синтаксис. Если изучать Python в качестве не первого языка, то к нему будет сложно привыкнуть из-за отсутствия скобок и некоторых знаков. Но если язык изучается в качестве базового, то данная проблема решается.
  • Низкая скорость выполнения программ. Программы, написанные на Python, работают медленнее, чем аналогичные программы, разработанные на других языках. Но данную проблему можно решить с помощью специальных виртуальных машин.
  • Некорректное копирование кода. Если копировать программный код с другого ресурса, то он будет вставляться в текст без отступов и будет неработающим. Придётся потратить время на добавление пробелов.
  • Конвертация программы в exe. Программы, написанные на Питоне, имеют расширение “py”, и, чтобы использовать на Windows, их необходимо конвертировать в exe. После этого объём памяти, занимаемый программой, увеличивается в несколько раз. Проблему увеличения памяти можно решить путём удаления ненужных библиотек, но после этого действия программа можно работать хуже.
  • Невозможность написания драйверов. Некоторые программисты указывали, что Python не предназначен для написания программных драйверов, так как не имеет для этого инструментов.
  • Несовместимость разных версий языка. Python 2.x и Python 3.x на данный момент и в течение последующих нескольких выпусков будут существовать параллельно, при этом вторая версия будет использоваться для совместимости версий. Однако третья версия обратно не совместима со второй и при написании кодов версии Python 2.x на Python 3.x будет выдавать ошибка.

Стоит ли изучать и насколько это перспективно?

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

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

Обучиться программированию на Питоне можно самостоятельно с помощью Интернет-ресурсов. Но для начала лучше всего пройти специальные курсы (не в формате онлайн), чтобы лучше понять основы и более глубоко изучить язык программирования. При невозможности посещения “живых” курсов можно пройти индивидуальное удалённое обучение с возможностью общения с преподавателем.

Похожие записи

Язык программирования Python

Краткая справка

Python — язык программирования, созданный нидерландским программистом Гвидо Ван Россумом, использовавшим для него некоторые идеи из языка ABC, в создании которого он также принимал непосредственное участие. Первая версия была опубликована в начале 1991 года и с тех пор активно развивается при поддержке open source сообщества, а также самого Гвидо, которого в шутку называют “Великодушным пожизненным диктатором”.

Python (произносится как “пайтон”, но в русскоязычной среде чаще всего говорят просто “питон”) изначально был назван в честь известного тогда комедийного шоу “Летающий цирк Монти Пайтона” и не имел отношения к змеям. Однако, судя по эмблеме на сайте python.org и иконкам в IDE, змеи смотрятся гораздо более органично, чем телевизионное шоу.

В декабре 2008 года вышла версия Python 3 и это при том, что одновременно с этим существовала версия Python 2. Их синтаксис отличался и программы разных версий, чаще всего, оказывались несовместимыми. Однако, так как на тот момент уже было написано достаточно много серьезных проектов на второй версии, то создатель языка решил, что обе ветви будут существовать параллельно несколько лет. Постепенно этот срок был продлен до 2020 года.

Философия Python

Ознакомиться с философией Python Вы можете набрав в интерпретаторе команду “import this”. Вы увидите небольшой текст, называемый “Дзен Питона”, автором которого считают Тима Петтерса. Если вкратце, то он гласит о том, что красивое лучше чему уродливое, а простое лучше чем сложное и так далее. Этим, возможно, и объясняется то, что в питоне нет фигурных скобок, которые так часто можно увидеть в других языках. Вместо них используются отступы (пробелы или табуляция). Это позволяет программисту не отвлекаться на переключение между клавишами и уделять больше внимания разработке программы.

Python перенял многие полезные вещи из других языков, например, Java, С, Lisp, C++ и.т.д. Python разрабатывался Гвидо с поддержкой ООП, однако позволяет использовать также и другие парадигмы, например функциональную.

Где применяется Python

Чтобы ответить на это, проще спросить, где этот язык не используется. Ответ — практически нигде. Для веб-программирования можно использовать фреймворки Django, Flask и Tornado, на которых сделано множество сайтов. Python применяется при автоматизированном тестировании сайтов с помощью Selenium. Для программирования игр есть Pygame и Kivy, который позволяет программировать игры для Android и iOS. Для работы с 3D моделированием можно задействовать PyOpenGL. Для разработки кроссплатформенных десктопных приложений с графическим интерфейсом существует фреймворк PyQt. Для обработки изображений разработан Python OpenCV. Несколько лет назад даже появилась версия для программирования микроконтроллеров — Micro Python. А ещё Python используют при написания плагинов к таким известным программам как Blender , Autodesk Maya, и.т.д.

Из-за своего удобства и простоты Python очень полюбился ученым и исследователям из разных областей науки. Библиотеки NumPy, SciPy, MatPlotLib даю возможность проводить инженерные и другие расчеты с выводом графиков в удобной форме. Также стоит отметить инструменты для биоинформатики, помогающие обрабатывать данные по геному человека и других живых организмов, например Biopython.

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

Сложность обучения Python

Python достаточно легок для изучения, его чаще всего советуют в качестве первого языка программирования, а где-то его уже даже начали преподавать в школах вместо устаревшего Pascal или Visual Basic.

По Python есть много бесплатных руководств и самоучителей, а также ресурсов, на которых Вы можете проверить свои знания. Единственное, что здесь стоит упомянуть, так это какую версию нужно изучать — Python 2 или Python 3? Несколько лет назад ответом было 2, так как третья версия была ещё нестабильной и плохо работала с другими библиотеками. Например, фреймворк Django работал только со второй версией. Теперь же ситуация изменилась к лучшему и Вы спокойно можете приступать к изучению Python 3.

Плюсы/минусы Python

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

Из минусов языка стоит отметить следующие моменты:

  1. Низкая скорость выполнения программ, по сравнению с другими языками.
    Поначалу, программы на python выполнялись гораздо медленнее, чем аналогичные, написанные на Java или C++, однако эта проблема была решена созданием инструментов, которые переводят код с питона в байт-код (или код на C) и использованием виртуальных машин.
  2. Копирование кода.
    При копировании кода с другого ресурса, в некоторых случаях, он может скопироваться без сохранения отступов. Поэтому код будет невалидным, а Вам придется долго добавлять табуляцию в каждую строчку. Для решения этой проблемы нужно либо использовать специальные IDE, либо добавлять в Ваш редактор плагины для python.
  3. Конвертация программы на python в exe.
    Программы на python имеют расширение *py. Для использования без интерпретатора, например, на Windows, его нужно конвертировать в файл с расширением *exe (для этого можно использовать приложение py2exe). Допустим, у Вас была программа, которое вычисляет три числа и выводит график при помощи MatPlotLib. Это программа должна занимать около 30-40 Кб, однако после конвертации она может весить до 50 Мб. После удаления ненужных библиотек можно уменьшить эту цифру до 10-20 Мб, но результат будет хуже, чем у аналогичного проекта, сделанного, например на С++.
  4. Unicode и русские символы.
    Другие программисты когда-то шутили про питонщиков, что единственная их проблема — это Unicode. Действительно, была такая проблема — её решили в Python 2, а в Python 3 её почему-то вернули обратно. Поэтому, если Ваша программа должна работать с русскими буквами (например, выводить текст “Привет, мир!”), то лучше сначала почитайте об этом на ресурсах, посвященных этому замечательному языку, чтобы не видеть нечитаемых символов в выводе программы.

Сопутствующие технологии

Pip — если Вы программируете на Windows, а не на Linux, то Вам может понадобиться этот пакетный менеджер. Он может идти в комплекте с интерпретатором или IDE, но, возможно, Вам придется скачать и установить его самому. Он упрощает установку библиотек Python для пользователя Wndows.

Django — фреймворк для создание веб-приложений. Изначально разрабатывался для новостных сайтов, однако теперь сфера его применения гораздо шире. Используется даже в таких крупных проектах, как YouTube, Instagram и.т.д.

IronPython, Jython — реализации Python для работы с .NET и Java. Позволяют использовать их типы или классы.

Почему не нужно учить python первым языком / Habr

Если вы будете искать ответ на вопрос: «Какой язык программирования выбрать первым», то где-то в 90% всех случаев вам будет предложен Python — как наиболее простой в изучении язык. И очевидно, что определенное число людей, которые до этого не учили программирование, выберут Python из-за этих рекомендаций. И вот тут у нас начинается проблема, о которой пойдет речь ниже. Конечно, с описанием того, как я дошел до такой жизни.

О себе

Еще в студенческие годы я понял, что моя специальность не такая уж радужная, как мне казалось в 18 лет. Поэтому я стал думать о том, как заработать адекватные деньги. И наслушавшись историй о том, как мой двоюродный брат получал безумные на то время деньги в 1С, я также решил связать свою жизнь с IT.

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

У меня появился очевидный вопрос: какой язык выбрать – php/python/ruby. Насмотревшись статей на Хабре, почитал хейт в сторону php, посмотрев пару мотивационных роликов от Yandex. Я выбрал Python. Преимущества языка, я надеюсь, вы знаете, поэтому не буду про это говорить.

Первичное обучение языку

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

1) Изучил книги:

  • Марк Лутц — Изучаем Python
  • Марк Лутц — Программирование на Python
  • Чед Фаулер – Программист Фанатик
  • Билл Любанович – Простой Python

2) Изучил множество роликов от Украинских/Буржуйских авторов по Django
3) Прошел курс от codeacademy
4) Освоил PyCharm
Свой первый проект

Далее у меня появилась идея небольшого сервиса на весьма специфичную тематику, который я решил сделать, чтобы закрепить знания Python + Django.

В создания сайта я

1) Изучил книги:

  • Джон Дакетт — HTML и CSS. Разработка и дизайн веб-сайтов
  • Дэвид Флэнаган — JavaScript. Подробное руководство
  • Бен Форта — Освой самостоятельно SQL.

2) Изучил документацию Django под свои задачи
3) Изучил деплой проектов на Django Gunicorn + nginx + centOS
Свой первый нормальный проект

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

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

После прочтения книги «Percival H. — Test-Driven Development with Python», решил написать тесты сначала на основе компонентов Django, потом поднял документацию селениума, и уже сделал внешние тесты.

Я хочу быть крутым

Открыв вакансии по Python-Django разработчикам, я посмотрел что еще обычно требуется в таких вакансиях:
  • Django Rest Framework
  • Celery
  • Tornado/Twisted/ asyncio (На выбор что-то одно)
  • Class-based view Django
  • Angular/React (На выбор что-то одно)

Потратил 3 месяца на знакомство/пробование с этими штуками. Также поднял стандартную библиотеку Python + внешняя библиотека для парсинга beautifulSoup.
Ты не тру без C/C++

Бытует мнение, что без знания C/C++ программист не может называть себя программистом. Поэтому когда у меня было свободное время, я познакомился с книгами:
  • Брайн Керниган – Язык программирования С
  • Стенли Б ЛиппМан – Язык программирования С++. Базовый курс

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

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

И вот тут начались проблемы с Python, на которых люди чаще всего не заостряют внимание. А именно на востребованности бизнеса в Python-разработчиков junior/pre-middle уровня.

С этим вопросом я вышел на рынок

Хотя на первый взгляд кажется, что вакансий на Python достаточно много, но когда начинается конкретика, все резко меняется.

1. Сразу идет большой отсев вакансий, где Python является исключительно вспомогательным языком. Чаще всего это позиции Java-разработчиков, Системных Администраторов, QA-Автоматизация. Также сейчас идет большой отсев по Data Learning, где требуется мат-образование + язык R. Т.е. с одним Python вы эту вакансию не сможете подобрать.

2. Оказалось, что в моем городе вакансий под Python нет, от слова вообще нет. Расширив поиск по всей области, я также получил неудовлетворительный результат. Пару вакансий на PHP, где Python шел «будет плюсом». Открыв фильтр за последние 3 года, я также обнаружил, что вакансий на Python не было вовсе. Т.е. бизнес в провинции чаще всего выбирает более простые и популярные технологии, нежели Python.

3. Открыв вакансии на Python в общем поисковике, я обнаружил следующие тенденции:

  • 90% + вакансий находятся в Москве или Санкт-Петербурге
  • 90% + вакансий требуют уровень middle+ / seniour
  • ~100% вакансий junior позиций в Москве или Санкт-Петербурге (чаще всего от гигантов)

Другими словами получилась ситуация, что если ты не живешь в Москве, Санкт-Петербурге и не собираешься ехать их «покорять», то тебе практически негде получить свою первую работу.

Конечно, есть пару очагов, где Python еще используется, например, в Казани. Но чаще всего это какая-то одна фирма, где с Вакансиями тоже весьма middle+ / seniour.

4. Вариант поиска удаленки на текущий уровень также показал, что работодатели не готовы идти на такой риск. Мало опыта + удаленка = это какая-то фантастика.
Тем не менее, я все же смог найти пару вариантов, но уже в ходе первичного собеседования стало понятно, что это ерунда по типу: «Ты у нас три месяца поработай, и если клиент заплатит за твою работу, мы тебе тоже заплатим». Не самый лучший вариант.

5. Поговорил с парой HR из крупных компаний, они высказали такую тенденцию. «Мы обычно берем людей с опытом на Python от года, плюс опытом на другого языке (3+ года). Чаще всего php/Java». Другими словами, они вообще не рассматривали варианты, чтобы взять человека с одним лишь Python.

6. Поговорив с ребятами с профильных форумов, стало понятно, что это достаточно типичная ситуация. Из их рассказов стало понятно, что люди после тщетных поисков либо шли работать на php/1c, либо как-то пролазили через upwork/собственный проект/автоматизацию тестирования.
Но опять же от случая к случаю.

В общем, оказалось, что Python – это отличный язык, который позволяет делать мощные проекты. И так уж сложилось, что их концентрация находится в столицах. И раз это сложные проекты, то и сотрудники туда требуются уже уровня middle+. Готов ли человек, который только что изучил Python получить такую вакансию? Трудно!

Но есть другой путь!

В настоящий момент только в моем городе находится 24 вакансии на php различного уровня (начиная от небольших компаний, которым нужно поддерживать текущий сайт, заканчивая гигантами e-commerce, которые предлагают последовательное расширение функционала). И примерно столько же вакансии на 1С. И где-то на половине из этих вакансий готовы взять человека, который хотя бы что-то знает в программировании. Скорее всего, это не самые лучшие места, но это уже первая работа, после который вы официально для HR станете программистом с опытом.
Так что в итоге

Получается ситуация, что можно изучить клевый язык программирования Python и остаться на улице. А можно выучить «ненавистный» php/1c и получить работу. Качество этой работы, конечно же, оставляет много вопросов – но это уже опыт.

Что касается меня, то в моих условиях (не ехать в Москву/СПб) я фактически потратил время на изучение языка, который сейчас востребован исключительно в моих собственных проектах. Найти работу на месте или удаленке у меня не получилось. Сейчас иду в сторону php, так как на нем банально есть работа.

Поэтому если вы не живете в Москве, СПб, не являетесь студентом тех-вуза, то я бы не советовал вам учить Python первым языком. Обратите внимание на PHP – под него всегда есть места, есть работа, есть опыт. А дальнейший путь развития уже за вами.

P.S. Как подсказал мне мой знакомый, на Ruby почти такая же ситуация. Но тут я уже говорить с уверенностью не могу.

Стоит ли изучать Python и насколько это перспективно

Стоит ли изучать Python и насколько это перспективно

Python — один из самых распространенных языков программирования (ЯП). Он был создан в 1989 году, но остался популярным до сих пор. Относится к высокоуровневым языкам. Хоть в настоящее время в индустрии есть множество современных аналогов, Python остается актуальным для многих программистов. Его начинают изучать в некоторых специализированных общеобразовательных школах.

Характеристика и особенности

Язык основан на идее, что программирование должно быть:

  1. Объектно-ориентированным.
  2. Функциональным.
  3. Императивным.

У Python особый синтаксис. Все блоки программы, в большинстве языков, отделены скобками, а в данной среде — отступами (пробел или табуляция). Вход во все блоки прописывается двоеточием. Комментарий в 1 строку начинается со знака «#», в несколько строчек — начинается и заканчивается 3 двойными кавычками.

Чтобы присвоить переменной значение, используется одиночный знак равенства, чтобы выполнить сравнение — двойной. Для увеличения (уменьшения) нужно прописать знак сложения (вычитания) с равенством, без пробела. Это стандартные операции, их можно комбинировать, а более профессиональные выражения образованы от элементарных операторов. Каждой переменной можно присвоить функцию.

У языка есть 3 основные структуры:

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

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

Перспективность Python, как современного языка программирования

  • Легкость изучения. Язык осваивается с первого дня изучения. При постоянной отработке написания программ, освоение будет быстрым и интересным. Для изучения необходимо искать эффективные способы решения задачи. У многих программистов этот навык приходит с опытом.
  • Связь с другими средами. По сравнению с другими ЯП, Python быстро выполняется программы. Это обусловлено тем, что стандартные библиотеки языка созданы на C++. Собственные модули из Python можно писать на языках класса C.
  • Библиотеки. У Python есть множество библиотек, в которых хранятся стандартные элементы и функции. Помимо написания программ, пользователю доступна работа в протоколах Интернета, электронной почте, базах данных, FTP, HTTP и др.
  • Информация. Данный язык программирования имеет большую историю. Специалисты постоянно развивают Python для современной профессиональной работы. Его изучают и используют многие программисты. Из-за большой истории развития, для освоения Python есть множество ресурсов, книг и сайтов, которые помогут в изучении ЯП. Современные модели не обрели такой популярности и распространенности, они находятся на стадии изучения, поэтому по ним нет такого объема информации.
  • Краткость. Python позволяет написать сложную программу с небольшим кодом. Используется малое количество конструкций. Программирование направлено не на объяснение кода, а на его выполнение. В структуре есть хорошая поддержка математических вычислений.
  • Доступность среды программирования. Профессиональные ЯП необходимо покупать у официальных разработчиков. Найти качественную платформу проблематично. У Python существует большое количество доступных бесплатных сервисов. Найти качественный продукт легко. Скачивание проходит без финансовых затрат. На домашнем компьютере можно создать целый профессиональный проект.
  • Востребованность. Многие программисты считают Python устаревшим языком. Другие же работают только на нем, не признавая современные мощные аналоги. На рынке всегда есть вакансии программистов, знающих данный ЯП. С помощью него создавались масштабные проекты: Youtube, Quora, Reddit, DropBox.

Обучение Python

Недостатки ЯП

  • Скорость. Любое выполнение кода происходит быстро, особенно для элементарных задач. Однако по сравнению с другими средами программирования, Python является медленным. Одинаковые программы выполняются за разное время. Существует множество более быстрых аналогов.
  • Совместимость. Это самый незначительный минус Python. У среды есть множество версий. Когда пользователь пишет код на одном компьютере, а потом переносит его на другое устройство (с иной версией), возможно, не получится прочитать программу. Однако данная проблема легко и быстро решается, но у других ЯП этого нюанса нет.
  • Динамическая типизация. В данном приеме прописывание типа переменной происходит при присваивании значения, а не при ее объявлении. При динамической типизации появляется множество ошибок, которые сложно обнаружить. Придется подробно изучать код, чтобы найти недочет. Проблема особенно распространена в крупных проектах, где небольшая ошибка выводит из строя всю программу.
  • Тестирование. Для нахождения ошибки необходимо проводить модульное тестирование. Весь код разделяется на блоки, каждый из которых нужно проверить. На это уходит много времени, что неэффективно при создании программ.
  • Производительность. Иногда для масштабных проектов не хватает производительности среды программирования. Однако это относится только к профессиональной работе. Данная проблема решается написанием нативных модулей.
  • Многопоточность. Это свойство характерно для многих ЯП, в том числе, и для Python. Необходимо разобраться, как работает параллельное выполнение кода. Это смогут только профессиональные программисты. Однако это умение приходит с опытом.
  • Минимализм. В начале изучения возникают сложности, так как в коде содержится минимум выражений. Это упрощает написание, но у пользователей, которые привыкли к другим ЯП, часто возникают трудности. Также есть значительные отличия в синтаксисе.

Стоит ли изучать Python?

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

Похожие записи

Плюсы и минусы Django / Habr

Прим. перев.: Эта статья рассчитана в основном на тех кто только выбирает фреймворк для веб-разработки. Опытные разработчики на Django вряд ли узнают что-то новое.


Django описывают как «веб-фреймворк для перфекционистов с дедлайнами». Его создали, чтобы переходить от прототипов к готовым сервисам как можно быстрее.

Фреймворк поможет разработать CRUD приложение под ключ. С Django не придется изобретать велосипед. Он работает из коробки и позволит сосредоточиться на бизнес-логике и продуктах для обычных людей.


Плюсы Джанго


Принцип «Всё включено» («Batteries included»)

Фраза «всё включено» означает, что большинство инструментов для создания приложения — часть фреймворка, а не поставляются в виде отдельных библиотек.

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


  • ORM
  • Миграции базы данных
  • Аутентификация пользователя
  • Панель администратора
  • Формы

Стандартизированная структура

Django как фреймворк задаёт структуру проекта. Она помогает разработчикам понимать, где и как добавлять новую функциональность.

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


Приложения Django

Приложения в Django позволяют разделить проект на несколько частей. Приложения устанавливаются путём добавления в settings.INSTALLED_APPS. Этот подход позволяет легко интегрировать готовые решения.

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


Безопасный по умолчанию

Django безопасен из коробки и включает механизмы предотвращения распространенных атак вроде SQL-инъекций (XSS) и подделки межсайтовых запросов (CSRF). Подробнее об этом можно почитать в официальном руководстве по безопасности.


REST Framework для создания API

Django REST Framework, который часто сокращают до «DRF», является библиотекой для построения API. Он имеет модульную и настраиваемую архитектуру, которая хорошо работает для создания как простых, так и сложных API.

В DRF политики аутентификации и разрешений доступны из коробки. Он поставляется с базовыми классами для CRUD операций и встроенной утилитой для тестирования разрабатываемого API.


GraphQL фреймворк для создания API

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

Graphene-Django позволит легко добавить соответствующую функциональность в ваш проект. Модели, формы, аутентификация, политики разрешений и другие функциональные возможности Django можно использовать для создания GraphQL API. Библиотека так же поставляется с утилитой для тестирования результата.


Недостатки Джанго


Django ORM

Django ORM сегодня значительно уступает последней SQLAlchemy.

Django ORM основан на шаблоне Active Record, который хуже, чем шаблон Unit of Work, используемый в SQLAlchemy. На практике это выражается в том, что в Django модели могут «сохранять» себя по желанию, а транзакции отключены по умолчанию. Подробнее об этом можно почитать в статье «Вещи, которые мне не нравятся в Django».


Django развивается медленно

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


В итоге: должен ли я выбрать Django?

Хотя Django ORM не так гибок, как SQLAlchemy, а большая экосистема многократно используемых модулей и приложений замедляет развитие инфраструктуры, очевидно, Django должен быть первым кандидатом на роль фреймворка для питониста.

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

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

В чём плюсы и минусы PYTHON? (язык программирования)

— простой доступ к интерпретатору (спасибо лицензии) — поддержка многих IDE — поддержка обществом, разработчиками и простыми пользователями. Много разнообразных хелпов — можно перефразировать старую фразу, относящуюся к Фортрану «любой физик может писать на пайтон» Недостатки вытекают из Пайтона, как интерпретатора — быстродействие — отсутствие standalone модулей — сложности с закрытием исходных модулей от изменения

Плюсы — кроссплатформенный язык с низким порогом вхождения. Минусы — интерпретируемый язык с низким порогом вхождения.

Недостатки: — низкая производительность, худшая среди популярных языков. — отсутствие статической типизации (для интерпретируемых языков это не редкость) — непригоден для системного программирования (это про многие языки можно сказать) — несовместимость Python 2.* и Python 3.* (частичная совместимость есть, но много отличий) Достоинства + удобный мощный язык. Простой (если не углубляться). + кроссплатформенность (это я заимствовал из предыдущего ответа) Питон популярен для ИИ и машинного обучения, однако вместо Питона мог бы использоваться любой другой язык. Просто для Питон много библиотек машинного обучения. Но основной функционал этих библиотек написана не на Питоне.

На ITVDN в курсе по Питону и начинают с перечисления плюсов и минусов. Не предназначен по их словам для написания драйверов

Python очень сильно набирает популярность, и на мой взгляд для этого есть как минимум 2 причины: 1. Скорость разработки, достигается за счет стремления к простоте и решения любой задачи с минимальными усилияеми (Время разработчиков — это деньги и деньги не малые, поэтому скорость разработки это реально очень существенный критерий) 2. На нем реально интересно разрабатывать (огромное кол-во инструментов и возможностей для «творения») А так да, все, что можно написать на Python, можно написать и на С, только этой часто займет гораздо больше времени, а соответственно и выйдет дороже. На Python можно написать, но это не значит, что он для всего подходит, основные сферы я бы выделил следующие: Web разработка, Deep Learning (Анализ данных, нейросети и т. д. и т. п.), сферы обучения прогруммированию

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *