
Сразу стоит оговориться, автор данной статьи не является ненавистником языка Python. Данная статья не преследует цели унизить язык Python, автор всего лишь выражает свое субъективное мнение по поводу того, почему изучение языка Python для новичка в программировании - плохо.
Типизация
Как по мне, наличие явной статической типизации в первом языке программировании очень важно. Python является динамически типизированным языком программирования. У новоиспеченного разработчика может сложиться такое впечатление, что никаких типов данных нет. Любая переменная может присвоить значение любого типа, что на начальных порах может сопровождаться недопониманием при написании программы.
Высокий уровень абстракции, готовые решения
Как по мне, абстракции в программировании, готовые решения, порождают слабых программистов, неспособных к самостоятельному решению сложной задачи, непонимающих то, как устроен компьютер, что приводит к большому непониманию многих вещей.
Python является высокоуровневым языком программирования, что создано для повышения производительности разработчика и читаемости кода. Все моменты, где приходится работать с памятью - упускаются. Новичок даже не задумывается о том, "что происходит внутри". У него не складывается понимание работы памяти, процессора.
Весь синтаксический сахар в Python, создает у новичка ложное ощущение, что программирование это легко. Нет, программирование на всех порах было занятием требующим мастерства, смекалки и терпения.
А что уж говорить о огромном комьюнити, создающим готовые решения для многих задач. Несомненно, иметь готовые решения это хорошо, но часто, новички злоупотребляют ими. Тогда при необходимости выполнения какой-либо задачи, под которой нет готового решения - они теряются. Самостоятельное решение задачи является для них сущим адом.
Еще одна частая проблема новичком в Python - переход на другой язык программирования. Если человеку, который до этого писал только на Python, потребуется перейти на более низкоуровневые языки программирования (например Java, или не дай бог C/C++), то это будет для него равносильно пыткам. Отсутсвие синтаксического сахара, статическая типизация, более низкий уровень работы с многими вещами - все это, для привыкшего к абстракциям программисту, будет чуждым, и он, захочет поскорее закончить все это.
Можно перейти с C++ на Python, но смилуйся о господь над душой любого, кто попытается перейти с Python на C++.
Не заставляет переходить на ООП
Еще одной довольно распространенной проблемой Python является то, что он не заставляет переходить на объектно-ориентированное программирование.
Если в том же Java или C++ в конечном итоге ты приходишь к пониманию того, что функциональное и процедурное программирование это прошлый век, по сравнению с объектно-ориентированным программированием, то Python благодаря наличию простого синтаксиса и наличию тонны библиотек, в которых всё за тебя сделано, абсолютно не заставляет выстраивать какие-то структуры из классов, пользоваться наследованием, он ведет себя так будто ООП не существует. Он как-будто говорит тебе - "Друг мой, классы это фигня полная, пищи так, в одном файле".
В итоге, человек, видя такую возможность, даже не задумывается о том, что можно как-то лучше и правильнее. Он тратит много времени на отработку уже существующих, бесполезных подходов к программированию, от которых, в будущем, все равно придется отказаться.
Итог
Так ли Python плох? Определенно нет. Python - это прекрасный язык программирования для уже опытных программистов, которые знают в каких случаях лучше использовать тот или иной подход. Но увы, для новичка данный язык разрушителен.
Лучшим вариантом для новичка в программировании, будет начать изучение более низкоуровневого, статически типизированного языка программирования.