Какой язык программирования учить первым и почему?

Этот вопрос мучает многих начинающих, это очень серьезный и нетривиальный вопрос. Я, в свое время, тоже много гуглил, искал ответы на форумах, спрашивал знакомых и т.д. и в итоге сильно ошибся. Я решил учить C++, но довольно быстро забросил это занятие, не смог свыкнуться со всеми сопутствующими сложностями как самого языка, так и его окружения. Очень большую отрицательную роль в моем неудачном опыте сыграл ВУЗ, в котором я тогда учился, и преподаватели. Почему? Да потому что они преподавали Delphi в качестве первого языка программирования, тем самым сильно искажая мое понимание и видение того, что же такое компьютерные программы, как они создаются и работают. Довольно глупо пользоваться каким-нибудь инструментом, не зная принципов, по которым он создавался и работает, не так ли?

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

Почему именно Python?

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

Преимущества языка

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

  1. простота изучения:
    • поддержка различных парадигм программирования: структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное программирование
    • динамическая типизация
    • автоматическое управление памятью
    • полная интроспекция, т.е. возможность определить тип и структуру объекта во время выполнения программы
    • механизм обработки исключений
    • поддержка многопоточных вычислений
    • удобные высокоуровневые структуры данных, такие как списки и словари
  2. простой синтаксис языка:
    • вместо скобок { } или блоков begin end используются отступы в виде 4 пробелов; это позволяет отлично структурировать код
    • упрощенный синтаксис традиционных операторов, таких как операторы условия if else, цикл for и т.д.
    • простота объявления классов, функций и процедур
  3. легко читаемый код
  4. множество как стандартных библиотек, так и библиотек сторонних разработчиков:
    • стандартная библиотека содержит средства для работы со многими сетевыми протоколами и форматами интернета, например, модули для написания 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 – набор модулей (библиотек), предназначенный для написания компьютерных игр и мультимедиа-приложений и т.д.
  5. кроссплатформенность
  6. хорошая документация
  7. отличное сообщество
  8. скорость разработки
  9. множество учебной литературы, видеоуроков, учебных курсов

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

Недостатки языка

Самый главный недостаток – низкая скорость выполнения программного кода, ведь Python является интерпретируемым языком. Отчасти эту проблему можно решить, используя специальные реализации языка, например интерпретатор Stackless Python, оптимизируя код и перенося самые сложные и ресурсоемкие его части на компилируемые языки вроде C++ или С. Ну и не стоит забывать, что с каждым годом компьютеры становятся быстрее, и поэтому скорость разработки играет гораздо более важную роль, чем потери в производительности.

Python постоянно развивается и поэтому его разработчикам пришлось разделить  его по сути на две ветки: Python 2.7.x и Python 3.x, которые не совместимы между собой по ряду причин. А это иногда смущает новичков, потому что большинство книг и учебных материалов писалось под Python 2.7. Хоть эти изменения и не так значимы, но я настоятельно рекомендую учить именно Python версии 3.x, потому что именно эта версия будет и дальше развиваться и поддерживаться и в конечном итоге странет основной.

keep-calm-and-learn-python-8

В заключении

В заключении хочу отметить, что изучение языка программирования – это очень сложная задача. Тут главное сразу начать программировать и не останавливаться, не просто читать книги и смотреть видеоуроки, а попробовать самостоятельно писать программный код, самому придумывать для себя какие-то задачи и решать их с помощью Python, потому что Python объективно является наилучшим языком для новичков, с него лучше всего начинать учиться программированию. Поэтому-то и не нужно начинать с такого монстра как C++, нужно двигаться от просто к сложному. Ну а дальше Вам уже не составит труда понять и выучить тот же C++.

Как не странно, но нужно также учить английский. Потому что:

  • на нем выходит основная масса литературы;
  • Английский оригинал точнее (уже несколько раз натыкался на это — прочитал в оригинале — стало понятно).
  • многие конструкции разных языков программирования становятся на порядок понятнее.

Желаю удачи

Ссылки:

Программирование для начинающих - лучшие книги
ITandLife.ru