Сообществу программистов понадобилось несколько десятилетий, чтобы оценить Python. Но с начала 2010-х он стремительно развивался и в конце концов стал популярнее C, C#, Java и JavaScript.
Так считает доктор наук по физике элементарных частиц Эри Джури. Также она разрабатывает алгоритмы искусственного интеллекта, чтобы лучше исследовать эти частицы.
Передаем ей слово.
Но сколько это еще будет продолжаться? Когда Python наконец-то заменят другие языки и почему это произойдет?
Я не буду указывать точную дату, потому что этого никто не может предугадать. Но можно оценить преимущества этого языка и его недостатки, которые, как мне кажется, приведут к упадку.
Тренды Stack Overflow, считающие количество тегов в публикациях на платформе, свидетельствуют о популярности языка Python.
Почти 14% всех вопросов Stack Overflow имеют тег «python», и эта тенденция растет. Вот почему.
Python существует с девяностых годов. А это значит не только многие годы развития. За это время сформировалось большое сообщество пользователей.
Поэтому, если вы столкнулись с какой-либо проблемой при кодинге на Python, есть высокая вероятность того, что ее можно решить простым поиском в Google. Скорее всего, кто-то уже описал эту проблему до вас.
Во-первых, существуют отличные пособия, которые помогут в изучении этого языка. Во-вторых, синтаксис Python очень удобен для чтения.
Здесь не нужно указывать тип данных. Вы просто объявляете переменную; Python поймет из контекста, целое ли это число, число с плавающей точкой, булевое значение или что-то другое. Это огромное преимущество для новичков.
Если вам когда-либо приходилось программировать на C++, вы знаете, как это расстраивает, когда ваше приложение не работает, потому что вы заменили число с плавающей точкой на целое.
И если вам когда-нибудь приходилось параллельно читать код Python и C++, вы оцените, насколько понятен Python. Несмотря на то, что C++ разработан с учетом английского языка, читать его достаточно сложно.
Поскольку Python существует достаточно давно, разработчики создали пакеты почти для любых целей.
Хотите обрабатывать числа, векторы и матрицы? Используйте NumPy.
Хотите производить технические и инженерные расчеты? Вот вам SciPy.
Хотите добиться успеха в обработке и анализе данных? Держите Pandas.
Хотите работать с искусственным интеллектом? К вашим услугам Scikit-Learn.
Python предлагает возможности для современных разработок, в том числе для машинного обучения.
Кажется, Python имеет все шансы успешно оставаться одним из самых популярных языков. Но не забывайте, что у него есть и недостатки. Ниже я расскажу о каждом из них.
Python медленный. Очень медленный.
По сравнению с другими языками, задачу на Python вы будете выполнять вдвое (или даже в 10 раз) дольше.
На это есть разные причины. Одна из них — этот язык динамически типизированный. Помните, вам не нужно указывать типы данных, как в других языках? А это значит, что нужно много памяти, потому что программа должна зарезервировать достаточно места для каждой переменной, чтобы она в любом случае работала. И это увеличивает время, необходимое для вычисления.
Также Python может выполнять только одну задачу за один раз. Так происходит, потому что Python должен убедиться, что каждая переменная имеет только один тип данных, а параллельные процессы могут этому мешать.
Для сравнения, обычный веб-браузер может запускать десяток разных потоков одновременно.
Но, в конце концов, проблема со скоростью не так уж страшна. Компьютеры и серверы настолько подешевели, что мы говорим о долях секунд. И конечному пользователю безразлично, загружается его программа за 0,001 или за 0,01 секунды.
Изначально у Python была динамическая область видения. Проблема с динамическим определением области состоит в том, что каждое выражение следует проверять в любом возможном контексте. Вот почему большинство современных языков программирования используют статическое определение области видения.
Python пытался перейти к статическому определению области видения, но не очень удачно. Обычно внутренние области (например, функции в функциях) могут видеть и изменять внешние области. В Python внутренние области могут видеть только внешние области, но не изменять их. Это приводит к путанице.
Несмотря на всю гибкость Python, использование Lambda достаточно ограничено. Lambdas могут быть только выражениями в Python, но не операторами.
С другой стороны, переменные декларации и операторы постоянно являются операторами. Это означает, что Lambdas не может для них использоваться.
Эта разница между выражениями и операторами достаточно условна и не встречается в других языках.
В Python вы используете пробелы и отступы для обозначения разных уровней кода. Это делает его зрительно привлекательным и интуитивно понятным.
Другие языки, например C++, больше полагаются на скобки и точки с запятой. Хотя это не так зрительно привлекательно и удобно для начинающих, но так гораздо легче обслуживать код, особенно в больших проектах.
Более новые языки, такие как Haskell, решают эту проблему: они используют пробелы, но предлагают альтернативный синтаксис для тех, кто предпочел бы обходиться без них.
Сейчас происходит переход от компьютеров к смартфонам. И, конечно, нам нужны языки, которыми удобно создавать мобильное программное обеспечение.
Но на Python разрабатывается не так много мобильных приложений. Это не значит, что это невозможно: существует пакет Python под названием Kivy.
Но Python создавался не для мобильных устройств. Поэтому даже если он подходит для базовых задач, лучше использовать язык, созданный именно для разработки мобильных приложений. Вот некоторые широко используемые фреймворки программирования для мобильных устройств: React Native, Flutter, Iconic и Cordova.
Конечно, ноутбуки и настольные компьютеры никуда не исчезнут. Но поскольку мобильный трафик уже давно превосходит их трафик, можно с уверенностью сказать, что одного Python недостаточно, чтобы стать успешным универсальным разработчиком.
Сценарий Python не компилируется, а затем выполняется: он компилируется всякий раз, когда вы его выполняете. Поэтому любая ошибка кодинга проявляется при выполнении. Это приводит к низкой производительности, значительным затратам времени и необходимости проводить много тестов.
Это отлично для начинающих, поскольку тестирование многому их учит. Но для опытных разработчиков, работающих со сложными программами, это очень неудобно.
На рынке языков программирования появилось несколько новых конкурентов:
Хотя на рынке есть другие языки, Rust, Go и Julia помогают избегать недостатков Python.
Их доля рынка все еще невелика (что отражается в количестве тегов Stack Overflow), но тенденция к росту очевидна.
Учитывая всеобщую популярность Python, несомненно, может пройти несколько лет, или даже больше, до момента, когда какой-нибудь из новых языков заменит его. Будет ли это Rust, Go, Julia или какой-то совершенно новый язык, пока трудно предсказать. Но я уверена, что падение Python уже не за горами.
Автор: Эри Джури
Текст адаптировала Евгения Козловская
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…