Этот вопрос мучает многих начинающих, это очень серьезный и нетривиальный вопрос. Я, в свое время, тоже много гуглил, искал ответы на форумах, спрашивал знакомых и т.д. и в итоге сильно ошибся. Я решил учить C++, но довольно быстро забросил это занятие, не смог свыкнуться со всеми сопутствующими сложностями как самого языка, так и его окружения. Очень большую отрицательную роль в моем неудачном опыте сыграл ВУЗ, в котором я тогда учился, и преподаватели. Почему? Да потому что они преподавали Delphi в качестве первого языка программирования, тем самым сильно искажая мое понимание и видение того, что же такое компьютерные программы, как они создаются и работают. Довольно глупо пользоваться каким-нибудь инструментом, не зная принципов, по которым он создавался и работает, не так ли?
Короче говоря, я, перепробовав множество языков и инструментов, осознал, что Python – почти идеальный язык программирования для начинающих, т.е. именно Python стоит учить первым. Далее я постараюсь аргументировать свою точку зрения.
Почему именно Python?
При подготовке этой статьи я нашел довольно интересное видео и, если Вам лень читать дальше, посмотрите его. Оно, конечно, носит рекламный характер, но точно передает смысл того, что я пытаюсь сказать.
Преимущества языка
Очень сложно кратко перечислить все преимущества этого языка, их действительно очень и очень много, я выделил лишь самые основные:
- простота изучения:
- поддержка различных парадигм программирования: структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное программирование
- динамическая типизация
- автоматическое управление памятью
- полная интроспекция, т.е. возможность определить тип и структуру объекта во время выполнения программы
- механизм обработки исключений
- поддержка многопоточных вычислений
- удобные высокоуровневые структуры данных, такие как списки и словари
- простой синтаксис языка:
- вместо скобок { } или блоков begin end используются отступы в виде 4 пробелов; это позволяет отлично структурировать код
- упрощенный синтаксис традиционных операторов, таких как операторы условия if else, цикл for и т.д.
- простота объявления классов, функций и процедур
- легко читаемый код
- множество как стандартных библиотек, так и библиотек сторонних разработчиков:
- стандартная библиотека содержит средства для работы со многими сетевыми протоколами и форматами интернета, например, модули для написания HTTP-серверов и клиентов, для разбора и создания почтовых сообщений, для работы с XML и т.п.,
набор модулей для работы с операционной системой позволяет писать кросс-платформенные приложения;
также существуют модули для работы с регулярными выражениями, текстовыми кодировками, мультимедийными форматами, криптографическими протоколами, архивами, сериализации данных, поддержка юнит-тестирования и др - реализованы библиотеки для доступа к различным СУБД: Oracle, MySQL, PostgreSQL, Sybase, Firebird (Interbase), Informix, Microsoft SQL Server и SQLite.
- NumPy для работы с многомерными массивами позволяет достичь производительности научных расчётов, сравнимой со специализированными пакетами.
SciPy использует NumPy и предоставляет доступ к обширному спектру математических алгоритмов (матричная алгебра — BLAS уровней 1—3, LAPACK, БПФ…).
Numarray специально разработан для операций с большими объёмами научных данных. - графические библиотеки:
tkinter на основе Tcl/Tk для создания кроссплатформенных программ с графическим интерфейсом;
wxPython для wxWidgets, PyGTK для Gtk, PyQt и PySide для Qt и другие - Pygame – набор модулей (библиотек), предназначенный для написания компьютерных игр и мультимедиа-приложений и т.д.
- стандартная библиотека содержит средства для работы со многими сетевыми протоколами и форматами интернета, например, модули для написания HTTP-серверов и клиентов, для разбора и создания почтовых сообщений, для работы с XML и т.п.,
- кроссплатформенность
- хорошая документация
- отличное сообщество
- скорость разработки
- множество учебной литературы, видеоуроков, учебных курсов
Добавлю еще, что Python – это очень перспективный язык, его используют практически везде, даже в программировании микроконтроллеров. На нем часто пишут прототипы программ для последующей их реализации на C++, потому что скорость и удобство разработки на этом языке очень высоки. Сейчас большую популярность получил веб-фреймворк Django и Python очень часто стал использоваться для разработки веб-сайтов и веб-приложений, я почти каждый день вижу вакансии для Python-разработчиков в этой области.
Недостатки языка
Самый главный недостаток – низкая скорость выполнения программного кода, ведь Python является интерпретируемым языком. Отчасти эту проблему можно решить, используя специальные реализации языка, например интерпретатор Stackless Python, оптимизируя код и перенося самые сложные и ресурсоемкие его части на компилируемые языки вроде C++ или С. Ну и не стоит забывать, что с каждым годом компьютеры становятся быстрее, и поэтому скорость разработки играет гораздо более важную роль, чем потери в производительности.
Python постоянно развивается и поэтому его разработчикам пришлось разделить его по сути на две ветки: Python 2.7.x и Python 3.x, которые не совместимы между собой по ряду причин. А это иногда смущает новичков, потому что большинство книг и учебных материалов писалось под Python 2.7. Хоть эти изменения и не так значимы, но я настоятельно рекомендую учить именно Python версии 3.x, потому что именно эта версия будет и дальше развиваться и поддерживаться и в конечном итоге странет основной.
В заключении
В заключении хочу отметить, что изучение языка программирования – это очень сложная задача. Тут главное сразу начать программировать и не останавливаться, не просто читать книги и смотреть видеоуроки, а попробовать самостоятельно писать программный код, самому придумывать для себя какие-то задачи и решать их с помощью Python, потому что Python объективно является наилучшим языком для новичков, с него лучше всего начинать учиться программированию. Поэтому-то и не нужно начинать с такого монстра как C++, нужно двигаться от просто к сложному. Ну а дальше Вам уже не составит труда понять и выучить тот же C++.
Как не странно, но нужно также учить английский. Потому что:
- на нем выходит основная масса литературы;
- Английский оригинал точнее (уже несколько раз натыкался на это — прочитал в оригинале — стало понятно).
- многие конструкции разных языков программирования становятся на порядок понятнее.
Желаю удачи
Ссылки: