Python — это не просто инструмент для написания кода, а полноценная экосистема, объединяющая философию доступности и мощный функционал. Этот язык позволяет воплощать самые смелые идеи, что делает его выбором сотен тысяч программистов и крупнейших мировых компаний.
В 2024 году Python продолжает удерживать лидерские позиции среди языков программирования. Его популярность обусловлена универсальностью, простотой и широтой применения. Давайте разберем, почему Python остается таким востребованным, взглянем на статистику и сделаем прогнозы на будущее.
Содержание:
Почему Python так популярен?
Статистика Python в 2024 году
Где используется Python?
Прогнозы на будущее
Начните свой путь в программировании с Python
Почему Python так популярен?
Универсальность применения
Освоив Python, вы открываете двери в самые разные сферы IT:
Веб-разработка — создание современных сайтов и веб-приложений.
Анализ данных — работа с большими массивами информации.
Искусственный интеллект — разработка сложных моделей машинного обучения.
Игровая индустрия — создание логики и автоматизации для игр.
Робототехника — управление роботами и сложными системами.
Python поддерживает сразу несколько подходов к программированию:
Объектно-ориентированное — для создания масштабируемых и структурированных приложений.
Функциональное — для работы с данными и чистыми функциями.
Процедурное — для решения линейных задач.
Этот язык позволяет адаптировать стиль разработки под любые задачи, что делает его незаменимым инструментом для разработчиков.
Богатая экосистема библиотек
Python предлагает огромный выбор готовых библиотек для решения практически любой задачи:
NumPy — научные вычисления.
Pandas — анализ и обработка данных.
Matplotlib — создание графиков и визуализация.
Django — мощный фреймворк для веб-разработки.
Эти инструменты значительно ускоряют разработку и делают ее проще даже для новичков.
Дружелюбное сообщество
Python объединяет одно из крупнейших международных сообществ разработчиков. Это значит, что вы всегда сможете найти поддержку, полезные ресурсы и ответы на вопросы. Такой подход делает обучение и работу с языком комфортной даже для начинающих.
Статистика Python в 2024 году
Рейтинг TIOBE: Python занимает первое место как самый популярный язык программирования, с долей более 20% среди профессиональных разработчиков. (TIOBE Index)
GitHub Trends: Python входит в тройку самых часто используемых языков на платформе, с миллионами активных проектов.
По данным Stack Overflow, 40% новичков начинают изучение программирования именно с Python.
По данным Indeed на рынке труда Python остается одним из самых востребованных языков. Более 25% IT-вакансий требуют знаний Python, особенно в сферах анализа данных и AI.
Где используется Python?
Наука и исследования
Python активно применяется в научных разработках:
CERN использует язык для обработки данных физических экспериментов.
NASA внедряет Python в космических исследованиях.
Генетика анализирует ДНК с помощью специализированных библиотек.
Крупнейшие компании
Python стал ключевым инструментом для многих лидеров рынка:
Google: основа многих внутренних систем.
Instagram: написан на Python.
Dropbox: серверные компоненты.
Spotify: рекомендательные алгоритмы.
Netflix: анализ данных и машинное обучение.
Прогнозы на будущее
Python не только удерживает позиции, но и продолжает развиваться. Эксперты прогнозируют рост его популярности в следующих направлениях:
Машинное обучение и AI: С увеличением спроса на автоматизацию и анализ больших данных Python сохранит свои лидирующие позиции.
Образование: Python будет оставаться главным языком для обучения программированию благодаря его простоте.
Облачные технологии и DevOps: С ростом числа облачных сервисов Python станет еще более востребованным для автоматизации процессов и работы с API.
Мобильные приложения: Хотя Python редко используют для мобильной разработки, такие проекты, как Kivy и BeeWare, открывают новые горизонты.
Начните свой путь в программировании с Python
Python остается самым востребованным языком в 2024 году благодаря своей универсальности, широкой экосистеме и поддержке со стороны крупнейших IT-компаний. Простота изучения и возможности применения делают его идеальным выбором как для новичков, так и для профессионалов.
Если вы хотите стать частью мира технологий и освоить востребованную профессию, Python — это отличный старт. А с учетом прогнозов на будущее, его изучение станет вашей инвестицией в успешную карьеру.
Python — это идеальный выбор для входа в IT. Он делает программирование простым и доступным для каждого. Если вы хотите превратить знания в перспективную профессию, записывайтесь на курс «Python-разработчик» в онлайн-школе YCLA Coding.
Первое занятие — бесплатно. Вы освоите основы языка, научитесь писать чистый и эффективный код, а также создавать функциональные программы. Начните свой путь уже сегодня и откройте новые возможности в мире технологий!
Комментарии (65)
mikleh
24.12.2024 15:48У какого-нибудь Вижуального Васика порог вхождения не выше, но таким популярным он все-таки не был в свое время.
Я думаю, помимо простоты, прелесть Питона еще в том, что это инструмент, созданный для практического использования. И Гвидо со товарищи думали об удобстве программистов и чихать хотели как на академическую строгость так и на оптимизацию и привязку к железу. Также было и с пэхапэ. И именно такой подход порождает успешные инструменты.
voidinvader
24.12.2024 15:48Да щас. То что его преподавали в школе не значит, что он такой же простой для изучения, как Питон.
rockstar_made
24.12.2024 15:48в школе и Дельфи был в мои времена; сомневаюсь, что Питон на его уровне или проще него..
YaKrabik
24.12.2024 15:48По моему мнению, не может человек, думающий об удобстве для программистов, заставлять их считать пробелы.
RH215
24.12.2024 15:48Для программистов это как раз не проблема - они форматировать код и так приучены.
А вот для не-программистов это важно. Непрограммистский код на python получается гораздо большее понятным по сравнению с JS или Perl.
k4ir05
24.12.2024 15:48И Гвидо со товарищи думали об удобстве программистов
На сколько удобно в нём определяется область видимости функций/атрибутов/констант?
vkni
24.12.2024 15:48Ну добавим ещё, что нормальная статическая типизация с выводом типов значительно удобнее, чем написание по тесту на каждое ветвление или явная типизация. Ну и квази-простая семантика Питона в области изменямых данных.
IvanZaycev0717
24.12.2024 15:48Жалко, что статья рекламная. Но давайте отбросим прогрев, и немного порассуждаем.
Лично для меня самым огромным премуществом является читабельный лаконечный синтаксис и библиотеки на все случаи жизни (большинство их - стандартные).
Например, дают задание - получить случайное целое число в диапазоне целых чисел, причём минимальная граница - включительно, а максимальная - нет. Возьмём второй по популярности язык по версии GitHub Trends - JavaScript
function getRandomInt(min, max) { const minCeiled = Math.ceil(min); const maxFloored = Math.floor(max); return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); }
Круто, не правда ли? А теперь решим ту же задачу на Python
import random def get_random_int(min: int, max: int) -> int: """Возвращает случайное целое число в диапазоне [min, max).""" return random.randint(min, max - 1)
Никаких костылей, всё из коробки. Вот именно за это я и люблю Python
thescarletarrow
24.12.2024 15:48Ну да, а что, нельзя что ли сделать вот так в JS? И краткость (особенно однострочность) в языках программирования - больше минус, чем плюс.
function randomIntFromInterval(min, max) { // min and max included return Math.floor(Math.random() * (max - min + 1) + min); }
IvanZaycev0717
24.12.2024 15:48В вашем решении это когда включены оба числа диапазона, т.е. [min, max] и min и max включительно. А задача была поставлена [min, max) - т.е. min включительно, max - НЕ включительно
И краткость (особенно однострочность) в языках программирования - больше минус, чем плюс.
Я не знаю, откуда вы это взяли. У Питера есть отличная книжка на эту тему
voidinvader
24.12.2024 15:48Ну таким макаром можно для любого ЯП и его стандартных библиотек придумать задачу, с которой он просто так не справится.
SerafimArts
24.12.2024 15:48Конечно можно. Взять хотя бы тот же PHP, он ещё проще справится:
vs Короткий вариант
/** Возвращает случайное целое число в диапазоне [min, max). */ fn(int $min, int $max): int => random_int($min, $max - 1);
vs Длинный вариант, используя ОС-зависимый CSPRNG
fn(int $min, int $max): int => new Random\Randomizer( new Random\CryptoSafeEngine() )->getInt($min, $max - 1);
vs Длинный вариант, используя seed-aware 256-битный xor-shift
fn(int $min, int $max): int => new Random\Randomizer( new Random\Engine\Xoshiro256StarStar( seed: hash('sha256', 'my example seed', binary: true), ) )->getInt($min, $max - 1);
Есть подозрение, что существуют языки, где подобное ещё гибче и лаконичнее можно запилить.
k4ir05
24.12.2024 15:48Вот из коробки, а у вас всё же import.
def get_random_int(min, max) = rand(min...max)
evgenyk
24.12.2024 15:48Я был свидетелем роста популярности питона. Попробую высказать свое мнение, не претендую на истину в последней инстанции.
Мне кажется, авторы статей типа "Причины популярности Питон" стреляют не в ту сторону.
Во первых они сравнивают синтаксис и удобство польования с другими языками, типа скажем PHP. А питон почти никогда не соревновался с PHP.
Питон появился в 1994 году, как язык сценариев. Распространился он в первую очередь на UNIX подобных системах. Конкурировал в этой области он в первую очередь с Perl и в какой-то степени с BASH. Ну и с Tcl/Tk. Вот тут он победил, ИМХО за счет лучшего синтаксиса, заложенных идей и идейной целостности. Затем он нарастил "батарейки", библиотеки к нужным задачам и интерфейсы к сишным библиотекам. Скоро оказалось, что что-то простое и даже не очень простое проще всего на Питоне.
Потом, с набором массы разрабочиков знающих его он стал распространятся в другие области. Где-то он побеждал за счет удобного тулчейна и REPL, где-то за счет большой массы знакомых с ним разработчиков, где-то за счет "батареек". Ну вот это продолжается до сих пор.Где-то так.
deadlock1979
24.12.2024 15:48Ерунда. питон появился как универсальный язык с поддержкой ооп и занял пустеющую нишу glue-языка
avshkol
24.12.2024 15:48Просто множество людей, далёких от программирования, понимания алгоритмов, написания игр, понимания в железе, понимания устройства операционных систем и ещё тысячи пониманий, хотели простой инструмент (но помощнее эксела) для обработки своих рабочих данных. И нашли, да ещё и написали кучу библиотек под него.
rockstar_made
24.12.2024 15:48... например сотню-другую фреймворков под фулстак-разработку
никогда Штирлиц не был так близок к провалу
kalemas
24.12.2024 15:48А насчет отладки не увидел замечания: в python лучшие возможности для отладки. Могу сравнить с go, js, cpp, но гораздо меньше (кроме cpp) в них разрабатывал.
Мне доступно все состояние программы, я могу вызывать любые функции, импортировать новые модули, могу менять код на лету, модифицируя модули и классы. Могу пакет через pip установить во время отладки. Это все удобно чтобы быстро разобраться, как работают неизвестные модули, быстро их интегрировать.
Под отладчиком в python получается разрабатывать гораздо больше кода: сначала пишется "рыба", на функции пустышки ставятся точки останова, и далее в этих точках под отладчиком, наблюдая всё многообразие входящих параметров, пишется и отлаживается код.
У любой гибкости есть обратная сторона, но все же гибкость это преимущество.
Asguard01
24.12.2024 15:48Любой язык — это инструмент, и у каждого инструмента своё назначение. Бурные споры указывают на то, что люди не согласовали область применения языка.
voidinvader
Питон стал популярным по той же причине, что и php в своё время - низкий порог вхождения.
Moog_Prodigy
Вот не знаю даже, как этот порог сейчас оценивать. Мне как питон понадобился (ML), то базовые и примитивные вещи как и в других языках (я начинал с Асма 86 когда-то) - сразу получались. Могу циклом вывести Hello world миллион раз) А вот что-то более менее сложное - зарыто в огромном пласте библиотек, встроенных и нет. Ну как сложное - те же сортировки, операции с текстами, мне как новичку именно в питоне было очень непривычно после С-программ под мелкоконтроллеры. Но ведь для этого ж я занялся питона душить)
А тут отступы, всякие приколы с неявной типизацией, я не знаю что еще вылезет, только изучаю же. Купил книжек...Не, я все понимаю, но как по мне помнить всё то, что скрыто в каждой библиотеке, это даже покруче базовых команд ассемблера. На базовых командах в принципе можно любой свой велосипед построить, но тут заявляется "простота" языка. И вот надо взять, import os (откуда вы взяли этот ос?) а там еще из этого "оса" добыть функцию datetime или как она там называется. А в этой "ос" еще стотыщ функций, работающих с системой, но там может не оказаться функции, отдающей загрузку памяти GPU. Это надо искать уже в другой библиотеке. Но в какой? Считать ли сложностью это или нет? Зная эти функции, можно за пять минут написать нужную утилиту. И потратить месяц на поиск этих функций. Не, конечно велосипед можно и написать, только я совсем не представляю, как чисто без библиотек добыть дату и время систему, хотя кто-то скажет - делов то, используй %непонятная штука%.
SquareRootOfZero
В смысле, как везде - из едкого дыма скуренных доков. #include <iostream>, что ли, откуда-то из более понятного места берётся?
Moog_Prodigy
Если iostream или io можно было скурить и понять, то тут тянет на целую ГРЭС, ежесуточно сжигающую по 10 миллионов тонн макулатуры)) И как это курить, никаких мозгов не хватит.
SquareRootOfZero
Вам что-то более-менее объективное по теме есть сказать? Там, к примеру, с вашей точки зрения в Питоне избыточных функций больше, или документация хуже чем где-то, или что? Или одни рассуждения в духе "английский язык хуже русского - на русском я могу сказать что угодно, а на английском только "хуиз он дьюти тудэй"?
vkni
Ещё вылезет очень неочевидная семантика в плане работы с изменяемыми данными. Вот все эти
Оно абсолютно чётко выводится из правил, но всё время ошарашивает.
evgenyk
Не совсем понял, а как могло бы быть по другому?
vkni
C++ — либо явная передача по указателю (ссылке), либо копирование значения по-умолчанию.
OCaml — неизменность объекта по-умолчанию.
evgenyk
Возможно пример не очень удачный?
На мой взгляд если словами, что делает эта функция:
При вызове:
Если вызвана с аргументом передает ссылку на объект в локальную переменную x
Если вызвана без аргумента создает массив и передает ссылку на него в локальную переменную x
В теле функции:
Создает новый объект массива и присваивает локальной переменной значение ссылки на него.
ИМХО логика максимально близка к C++
vkni
Ой, действительно неудачно.
SquareRootOfZero
С этой хренотой там странное то, что оно где-то зачем-то неявно кэшируется между вызовами. Например:
Вывод:
По незнанию вполне можно здорово попасть на отладку, пытаясь запилить какой-нибудь рекурсивный обход списка списков.
evgenyk
Это не где-то что-то неявно кэшируется это функция явно ведет себя именно так, как Вы написали, но это нужно понимать, конечно. Ваша функция ведет себя по разному, в зависимости от того, вызываете ли вы ее с аргументом или без. Если Вы вызываете ее с аргументом список, она прибавляет элемент 1 к этому списку.
Если Вы вызываете ее без аргумента, то она при первом вызове создает пустой список и прибавляет к нему элемент 1, при следующих вызовах прибавляет к этому же списку элемент 1.
Это вроде как раз то, что Вы написали ей делать. А чего Вы ожидаете?
SquareRootOfZero
Я бы ожидал, что она, при вызове без агрумента, будет каждый раз создавать новый пустой список, ведь написано же: "x = [ ]", а когда в коде написано "x = [ ]", мне кажется, логично ожидать, что каждый раз и будет происходить "x = [ ]", а не "первый раз x = [ ], далее другое что-то".
evgenyk
Тогда нужно писать просто:
Или что-то такое.
Да, конечно, нужно помнить, что этот код присовения дефольтных значений аргументов исполняется один раз во время создания объекта функции при чтении определения.
На мой взгляд достаточно логично.
k4ir05
Почему же это логично? В других языках разве так же? Я лично таких не знаю.
Тут ведь получается не совсем привычное время жизни аргумента. И разное поведение функции в зависимости от предыдущих её вызовах.
Разве не логичней присваивать дефолтные значения при вызове функции вместе с инициализацией аргументов?
evgenyk
Сегодня я уже посмотрел кино с коньячком, отвечу завтра.
oratorslova
Да, есть такое. Но если вы работаете с узким кругом задач, например парсинг или машинное зрение, то довольно скоро вы будет знать все библиотеки, которые вам нужны для работы. Хаос и страх это непремкнный атрибут процесса познания. Когда пазл складывается. наступает облегчение и успокоение, потому что вы наконец то попадаете в тёплую ванну.
Moog_Prodigy
Согласен с вами, тут даже все относительно просто - если принять, что вода - неньютоновская жидкость :)
un1t
Это не объяснение, языков с низким порогом вхождения полно, тот же руби. Питон более универсальный чем пхп и лучше подходит для математики. За счет строгой типизации там не возникает тупых ошибок типа сложения строки и нуля.
IUIUIUIUIUIUIUI
Только это выявляется лишь в рантайме, потому что типизация там динамическая (что, вообще говоря, оксюморон, потому что типизация по определению статическая).
rsashka
Вы не поверите, но типизации бывают разные. Не только статическая или динамическая, но еще сильная или слабая, явная и неявная и даже бестиповая типизация. :-)
IUIUIUIUIUIUIUI
Мой комментарий никак этому не противоречит (и, более того, прямо это подтверждает, потому что предыдущий комментатор говорил о выявлении семантических ошибок, что связано с силой типизации, тогда как я говорил о том, когда они выявляются, что связано со временем проверки).
И вот выявляющиеся на этапе выполнения ошибки семантики (сложение строки и нуля) — это то, что называют динамической строгой типизацией. И то, что ошибки выявляются лишь в рантайме — это минус (но, конечно, всё равно лучше, чем менее строгая
типизациярантайм-проверка меток того же JS, где строку с нулём сложить можно).Если читать не популярные статьи, а нормальные учебники по теории типов, то можно наткнуться на вещи вроде
Бессмысленное утверждение, потому что это спектр. Типизация C++ сильнее таковой в C, но они обе существенно слабее таковых в хаскеле, которая, в свою очередь, неизмеримо слабее таковой в агде.
Иррелевантно в данном случае.
Это — то, что называют слабой динамической типизацией. По ссылке лисп называют бестиповым языком, но это не отличается принципиально от JS.
evgenyk
Вот тут не соглашусь, это не минус, это фича. Это просто логически вытекает из динамической типизации. А это одна из основных и самых мощных фишек Питона.
IUIUIUIUIUIUIUI
Возможность сложить строку и ноль — это тоже вполне себе осознанная фича JS, но это не значит, что это что-то хорошее.
Чем больше ошибок можно выявить статически, до запуска программы, тем проще разрабатывать программу, тем меньше тестов надо писать, тем она надёжнее, и так далее (при некоторых других вводных, естественных и вполне реализуемых).
Нетипизированность питона — основная причина, по которой я не могу писать на питоне.
evgenyk
Я вижу тут следующую дилемму:
Или мы испольуем статическую типизацию, так как это делает C++, тогда, когда нам нужно загнать в список или в хэшмап разные объекты нужно статическую типизацию объезжать делая список ссылок на объекты и явно проверять тип объекта при обработке элементов. Здесь растет сложность программы. И нам, О Боже! нужно тестировать все ветки, так как статическую типизацию мы объехали на кривой козе.
Или мы испольуем утиную типизацию и нам не нужно изгаляться при обработке разных типов. Дергаем метод объекта и все, нет метода, просто пропускаем объект или пишем в лог и едем дальше. И да, нужно тестировать ветки.
Не хочу абсолютизировать свой опыт, но на мой взгляд статическая типизация дает больше гемора, чем приносит выгоды.
IUIUIUIUIUIUIUI
В чём объезд? Вы пишете
std::variant<Foo, Bar, Baz>
, и компилятор за вас проверяет, что вы явно обработали все нужные объекты.Почему? Компилятор протестирует, что вы все случаи обработали, и что вы не запихнёте в мапу того, что в ней не ожидается.
map<Key, Foo>
нужно столько же тестов, сколькоmap<Key, variant<Foo, Bar, Baz>>
.В данном случае тоже не надо. Если у всех из них есть метод
bark()
, например, то вы можете написатьДа, чутка многословнее (это C++, в конце концов), но это O(1) усилий от количества типов, и этот код не нужно менять при добавлении новых типов (покуда они умеют гавкать).
Я думаю, вам бы зашёл visual basic и
On Error Resume Next
.Это, кстати, так себе образец, ну да ладно.
evgenyk
1) Пардон, это не язык, это библиотека. То, что сложность спрятана от Вас внутри библиотечной функции ничего не значит.
2) Вы должны заранее предусмотреть все варианты типов. Тем более вы не можете добавлять менять типы динамически.
IUIUIUIUIUIUIUI
Библиотека — это часть языка даже с точки зрения ISO-стандарта C++. Какая мне как программисту разница, в конце концов? Я просто сажусь и пользуюсь. Если бы
variant
был магическим типом, реализованным автором компилятора в кишках компилятора, то для меня бы принципиально ничего бы не изменилось.Поэтому да, не значит ничего для меня как для программиста. Для меня это часть языка.
Во-первых, это благо (по крайней мере, в моей практике). Компилятор сразу мне говорит, что где обновить, и рефакторить-расширять код — одно удовольствие.
Во-вторых, не совсем. Только позвольте я с плюсов на хаскель перейду, там это удобнее выражается.
Если у меня есть какое-то множество типов, удовлетворяющих данному набору интерфейсов (aka тайпклассов) скажем,
Show
,Read
иNum
то я просто пишу что-то в духеи потом вполне себе могу для
Map MyKey SomeType
пользоваться методами этих тайпклассов на ключах, и запихивать в эту мапу хоть целые числа, хоть комплексные, хоть матрицы (если они вдруг у вас удовлетворяютNum
).В каком-нибудь идрисе или агде бы даже отдельный экзистенциал бы явно писать не пришлось, достаточно
Map MyKey (a : Type ** (Show a, Read a, Num a, a))
.evgenyk
Так как в библиотеку можно засунуть все, что угодно, какой смысл это сравнивать. С такой точки зрения любой язык может все. Достаточно только засунуть в библиотеку соответствующую функцию.
IUIUIUIUIUIUIUI
Тогда выходит, что «с типами много геморроя, даже разные типы в мапу [кстати, тоже библиотечный тип] не засунешь» — не аргумент, раз это делается через библиотеки с нулём телодвижений с вашей стороны?
В чём тогда вообще смысл это обсуждать?
Ну засуньте в библиотеку на C++ (или даже хаскеля) что-нибудь, чтобы там были зависимые типы. И в том же хаскеле для линейных типов пришлось доделывать ядро языка, а не библиотеками обмазываться.
evgenyk
Мапа это был просто пример. С утиной типизацией очень много чего можно сделать очень быстро и просто. Например тот же манки патчинг.
IUIUIUIUIUIUIUI
Я бы не хотел работать (да и мне ни разу не приходилось в моих задачах) с кодовой базой, где всерьёз испольузется манкипатчинг.
evgenyk
Манкипатчинг как правило используется при тестировании, дебаггинге или отладке. Иногда бывает очень удобно.
IUIUIUIUIUIUIUI
А, понятно! Отсутствие типизации полезно для тестирования, которое необходимо при отсутствии типизации.
Тяжело спорить с такой логикой (ведь проверка фундированности — это тоже забота тайпчекеров).
evgenyk
Не надо говорить об отсутствии типизации в питоне. То, что там не та типизация к которой Вы привыкли не приговор.
И не знаю как Вы, лично я даже когда давным давно писал на C++ испольовал тестирование.
IUIUIUIUIUIUIUI
Я выше писал (и выделил жёлтеньким), что я понимаю под типизацией, и почему понятие «динамическая типизация» при этом определении не имеет смысла.
C++, опять же, не образец выразительной и продвинутой системы типов.
На хаскеле я тоже пишу тесты, но они интеграционные — упрощая, что вся система целиком соответствует спеке. Юнит-тесты я не пишу, они не дают пользы.
evgenyk
Я в основном тоже стараюсь писать интеграционные. И вот в них-то пару раз манки патчинг очень здорово помогал.
И вообще, если не нравится то, как устроены типы в Питоне, зачем им польоваться? Я пользуюсь питоном потому, что он позволяет очень быстро сделать то, что нужно. Что касается отлавливания компилятором ошибок за счет статической типизации, я когда писал на Си с плюсами не замечал, чтобы это здорово меня выручало в смысле приоста в скорости написания программ.
IUIUIUIUIUIUIUI
Может, я чего не понимаю, но мне он не помогал ни разу. Что вам там было полезно манки-патчить?
Ну тут я могу только заняться самоцитированием:
В общем, я им и не пользуюсь и, скажем, избегаю работ, где много питона и где он используется для чего-то большего, чем шелл-скриптинг на стероидах.
И тут снова:
C++ сочетает худшие черты: очень много церемоний с явной типизацией при очень малой выразительной силе и вообще слабости этой типизации.
evgenyk
Я считаю, что у каждого инструмента своя ниша. И Питон хорош в своей и именно за счет своей динамической типизации. То, что Вы не можете писать на нем из-за этого, он переживет. :)
Гораздо хуже то, что в него сейчас сбоку пытаются прикрутить подобие статической типизации. Оно и не делает его языком со статической типизацией и его сильные черты портит.
IUIUIUIUIUIUIUI
Только мы, очевидно, расходимся во мнении, что именно это за ниша.
Я и пытаюсь понять, почему он в ней (очевидно, более широкой с вашей точки зрения) по-вашему хорош.
Со складыванием в мапу аргумент, похоже, снялся, с утиной типизацией «обработать всё, что реализует такой-то интерфейс» — тоже. Остался манки-патчинг (и, прошу прощенья, я отредактировал прошлый комментарий, по-видимому, после того, как вы его увидели) — мне всё ещё интересно, зачем он вам пригождался в интеграционных тестах.
Ну это вообще странный разговор получается.
— Если вам так не нравится питон, не пишите на питоне.
— Я и не пишу.
— Ну ничего, он это переживёт :)
Хз, у меня нет однозначного мнения на тему «запиливания изначально непредназначенных фич» vs «перехода на другой язык». В идеальном мире лучше второе, но первое более прагматично.
sbw
У Питона настолько низкий порог вхождения, что я писал на нём программу даже не зная языка – основные конструкции весьма понятны, и только гугл и stackoverflow в помощь. Опыт на других языках у меня был (с, asm, pascal, Delphi, basic, VBA, pl/SQL, java), поэтому ничего сверхъестественного. Потом изучил Питон на stepik – и это добавило +100500 к навыкам написания/чтения программ.
Ещё один жирный плюс - это наличие библиотек практически на все случаи жизни.