Первое, что я написал на Дзене – это статья "Почему не надо учить Python". Она получила много откликов, но не все её правильно поняли. Поэтому я решил дополнить её и пояснить некоторые моменты.
Действительно ли я против того, чтобы учить Питон? Конечно, нет. Является ли написанное в заголовке ложью? Тоже нет. Попробуйте прочитать его, ставя ударение на разных словах: "Почему НЕ НАДО учить Питон" или "Почему не надо УЧИТЬ Питон". Смысл получится разный.
В молодости я легко выучил язык BASIC и затем так же легко освоил Pascal, C, два языка ассемблера для двух разных процессоров, а потом еще PHP и Java. Мне казалось, что чем больше языков знаешь, тем круче ты как программист. Особенно когда пишешь на ассемблере программу размером 9 байт, как крутой хакер, а не мамкин дельфист, у которого "Hello world" весит 100 килобайт .
Надо ли говорить, что это было большим заблуждением?
Я мог знать хоть 10 языков, но это никак не делало меня лучше. Как программист, я знал только один метод сортировки (пузырьком). Вернее, два, но второй ещё хуже. Как программист, я не понимал, что такое хэш-функция. Когда я учил языки, эти языки не учили меня таким вещам. Они все учили одному и тому же: как записать цикл, как записать условие, как задать значение в массиве. Ну вот я выучил язык, и умею писать циклы и условия – а дальше-то что? На вот, напиши балансировщик нагрузки на сервер. Не получилось? Как же так, ведь ты выучил язык? Может, попробуем шифрование RSA? Опять не получилось? Странно. Не помогают что-то все эти языки.
Кто мне объяснит алгоритм quicksort? Кто расскажет про бинарные деревья и кольцевые списки? А про коллизии хэшей?
Что я должен был в действительности учить?
10 разных языков, чтобы повесить себе очередную медальку, или вычислительную сложность алгоритмов, математические методы, ну в общем хоть что-нибудь, что меня действительно развивало бы как программиста?
В итоге я потерял как минимум несколько лет, думая, что развиваюсь (о, смотрите, я уже делаю веб-сайты на PHP), а на самом деле оставаясь на начальном уровне.
В общем-то, именно от этого я и хотел предостеречь тех, кто учит Питон (или любой другой язык). В прошлые времена я мог бы зарубиться на тему того, какой язык круче. Сейчас я ко всем языкам отношусь ровно. На каком придётся писать – на том и буду. Гораздо важнее знать, какими методами решается поставленная задача.
Какой-то конкретный язык может помочь только одним – если в нём уже есть готовые средства для решения задачи. Условно говоря, если нужно написать нейронную сеть, то в каком-то языке может быть готовая функция: "сделать нейронную сеть". И тогда нужно просто вызвать эту функцию. Означает ли это, что вы выучили язык? Нет, вы просто воспользовались функцией языка. Означает ли это, что вы научились программировать нейронные сети? Нет, вы просто воспользовались функцией языка. Волнует ли это вас? Нет, потому что у вас была задача и вы её решили. Просто вы не программист, а специалист в какой-то другой области, которому нужен был подходящий инструмент, и вы успешно использовали этот инструмент.
А в Питоне сейчас ужин библиотеки...
В этом плане Питон подходит для некоторого круга специалистов, потому что у него есть математические библиотеки для обработки данных и для черчения графиков. Часто можно услышать именно такой аргумент: учите Питон, потому что у него есть библиотеки... Но подумайте сами – если вы не специалист по обработке данных и не планируете этим заниматься, нафига вам учить Питон только из-за того, что в нём есть библиотеки, которые вам никогда не понадобятся?
Синтаксис для новичков?
Ещё один аргумент, который выдвигают в пользу Питона – якобы лёгкий синтаксис. Тут я согласен, но лишь частично. Синтаксис Питона в целом не отличается радикально от других языков типа C или JavaScript, разве что используется поменьше скобок и знаков препинания.
Но... новичок не может выучить другой язык, потому что там надо написать пару лишних скобок? Это вы серьёзно? Правда? Реально? Ну полная фигня же.
Я могу назвать и минус этого подхода. Выучив язык с C-подобным синтаксисом, вы можете легко читать (и после небольшого обучения, буквально через полчаса, писать) программы на всех других языках с похожим синтаксисом (C, C++, JavaScript, Java, PHP и др.), в том числе и на Питоне, потому что он будет только немножко непривычен.
Начав же с Питона, вы получите может быть (может быть, потому что это субъективно) более лёгкий синтаксис, но зато все прочие языки вам будет читать сложнее.
Так почему надо учить Питон?
Потому что, чтобы писать реальные программы, нужно выучить хоть какой-то язык. Пусть это будет Питон. В конце концов, он лучше, чем Бейсик. И, я ничего не имею против Паскаля как академического языка, но писать на нём нудновато. Так что Питон вполне неплохой выбор.
Как поступить – решать вам. Не забывайте, что программирование – это не язык программирования, а гораздо больше.
Всем добра, и надеюсь, что мы еще встретимся на этом канале!