Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Почему программисты пишут программы на C++ и подобных сложных языках, если на Python синтаксис проще и можно написать программу быстрее?

ТехнологииПрограммирование
Евгений Григоренко
  ·   · 518,9 K
Веб-разработчик, геймер, специалист по этике  · 2 авг 2021

"Синтаксис проще" и "написать программу быстрее" - это не те преимущества, которые ценятся в профессиональной разработке ПО на высоком уровне. Код пишется для его читателя, а не для его писателя.

Питон и его среда выполнения был разработан специально как язык для написания одноразовых сценариев и прототипирования, для экспериментов, на основе которых уже будет написано нормальное, надёжное ПО.

Конкретно C++ по сравнению с Python предоставляет две из важнейших фич любой среды разработки: статическую типизацию и статический анализ кода, на этапе компиляции.

Когда ваш исходный код занимает пять тысяч файлов по триста строчек в каждом, статическая типизация сэкономит вам очень много времени в понимании потока данных в программе.

А статический анализ кода, который выполняет компилятор C++ на -Wall, просто заставит вас писать код, избавленный по крайней мере от грубых и часто встречающихся ошибок.

1 эксперт согласен
Выбор языка зависит от конкретной задачи. Нет "универсального" инструмента для всего, если это не ассамблер :))... Читать дальше
Потому что эти языки применяют для разных задач. На С++ чаще используют, например для программирования микроконтроллеров или ресурсоемких движках комп. игр. Это обусловлено тем, что в С++ проще работать с памятью и ресурсами ПК. Так же С++ является одним из самых быстрых компилируемых ЯП.
Питон же довольно медленный компилируемый язык (ситуацию может спасти Numba, но не всегда). Поэтому его чаще всего применяют, где не нужно сильно заморачиваться с контролем ресурсов ПК. Чаще всего, его используют для написания микросервисной архитектуры (коннекторов, ботов и т.д.) в вебе, для автоматизации разного рода задач, например на серверах или создания нейросетей. Главное преимущество питона - это его огромная библиотека плагинов, которые ставится одной командой в терминале. В PyPi есть библиотеки для решения, любых задач. Например, есть готовые решения для нейросетей или для работы с любым api.
Именно поэтому часть задач хорошо решается на С++, а часть задач на Питоне. Причем не говорю, что на питоне нельзя писать игры, а С++ не эффективен в нейросетях. Конечно можно написать что угодно, на любом существующем ЯП, однако вопрос в удобстве и время затратах на выполнение задач.
Откуда утверждение, что python создавался как язык для одноразовых скриптов, и что код на нём плохо читается? Такое ощущение, что вы пишите про bash.
Python согласно Википедии: язык программирования общего назначения ... ориентированный на повышение производительности разработчика, читаемости кода и его качества. Как раз python делает акцент на том, чтобы код был понятен. И по-моему, это как раз причина популярности python: он создавался с акцентом на программисте. Читаемый код, предсказуемое поведение, хорошая документация.
Про то, что динамическая типизация не позволяет отлавливать ошибки на этапе компиляции -- справедливо. Но, во-первых, такая проверка защищает лишь от небольшой доли ошибок. Во-вторых, если вы хотите проверки на типы данных, то она добавлена в python (как опция с отдельной утилитой по проверке соответствия типов)
@Леонид, я могу относиться презрительно к этому языку, вы можете быть его амбассадором. Ни моё, ни ваше личное отношение к Python никак не будет при этом влиять на реальность.
Откуда утверждение, что python создавался как язык для одноразовых скриптов
Вот прямая цитата из FAQ на Python.org:
I was working in the Amoeba distributed operating system group at CWI. We needed a better way to do system administration than by writing either C programs or Bourne shell scripts, since Amoeba had its own system call interface which wasn’t easily accessible from the Bourne shell.
https://docs.python.org/3/faq/general.html#why-was-python-created-in-the-first-place
и что код на нём плохо читается
Этого я не говорил. Я говорил, что статическая типизация помогает понять поток данных в программе. Это не одно и то же.
Python согласно Википедии
Википедия не авторитетный источник, никакие цитаты оттуда не являются аргументом. https://en.wikipedia.org/wiki/Wikipedia:Citing_Wikipedia Русскоязычная википедия настолько убогая, что в ней даже нет этой страницы.
такая [статическая] проверка [на этапе компиляции] защищает лишь от небольшой доли ошибок.
Вы настолько сильно заблуждаетесь, что мне не хватит нескольких экранов текста, чтобы объяснить, в чём. Есть целый приём рефакторинга (lean on the compiler), основанный на использовании компилятора.
Сам факт того, что в питон были добавлены опциональные типы, говорит о том, насколько полезна статическая типизация.
Сам факт того, что вы не соглашаетесь с пользой статической типизации, говорит о том, что вы просто не работали с существующими базами кода действительно серьёзных размеров. Вот функция из сырцов Tensorflow: https://github.com/tensorflow/tensorflow/blob/b31b222b1d3e7ecda96a61cde545ac2d5e1a0079/tensorflow/python/framework/func_graph.py#L967 Вы сможете вызвать эту функцию, не глядя в документацию? Ваша IDE покажет вам, данные какого типа вам нужно передать в качестве второго, третьего, пятого аргумента вызова? Если у вас будет код, где эта функция вызывается, вы сможете определить типы передаваемых данных без поиска в документации по Tensorflow или исходниках этой функции? Вы уверены, что прямо сейчас в вашем рабочем коде на питоне утиная типизация, которой вы, несомненно, пользуетесь, не лжёт вам?
В Python действительно больше синтаксического сахара, чем в C++, поэтому разрабатывать на нём проще. Однако, если не брать в расчёт синтаксис, C++ выигрывает у Python по следующим причинам: 1) С++ является языком со статичной... Читать далее
7 экспертов согласны

Да, все так и с моей точки зрения

Программист (включая Web) с опытом работы с 1983...  · 9 авг 2020  · selek.ru
Язык С/С++ является прообразом практически всех современных языков программирования, включая и Python. Зная С++ можно быстро освоить любой новомодный язык. Только вот мода проходит, а С++ остаётся. Это лирика, теперь к физике... Читать далее
"Самое большое отклонение от нормы - посредственность." В.ГоловачёвПерейти на selek.ru
6 экспертов согласныи1 эксперт не согласен
Язык C/C++ не является прообразом. Он сам тоже откуда-то произошёл (из языка B), а последний вышел из проекта... Читать дальше
https://pubmed.ncbi.nlm.nih.gov/35987379/  · 19 июл 2021  · linkedin.com/in/maxim-masiutin
Питон медленнее чем С++, и на некторых задачах может быть медленнее в 100 раз и более. Поэтому библиотеки для Питона пишут на С, а не наоборот. Питон интерпретируется, а С++ компилируется. У С++ строгие типы, а у Питона -... Читать далее
https://doi.org/10.1016/j.urology.2022.07.051Перейти на pubmed.ncbi.nlm.nih.gov/35987379
4 эксперта согласныи2 эксперта не согласны
Две строки кода, запускаемые в интерпретаторе отработают быстрее, чем 150 кода на C++. Библиотеки решают. Хотя... Читать дальше
software & security engineer  · 29 окт 2021  · kalaver.in
Это разные языки, разного назначения. Разные инструменты. Для каждой задачи — свой инструмент, забивать гвозди микроскопом можно, но зачем?
2 эксперта согласны
Студент. Хочу развиваться в IT сфере.  · 18 сент 2021
Начну пожалуй с того, что у всех языков есть плюсы и минусы, сферы, в которых из-за их особенностей, целесообразнее было бы их применять. Python имеет простой синтаксис, множество библиотек, которые упрощают реализацию... Читать далее
4 эксперта согласныи2 эксперта не согласны
Уточню: алгоритмы, используемые для решения задач ИИ (а если говорить более правильно — машинного обучения)... Читать дальше
Специалист в области разработки систем...  · 13 мар 2016
Если вы рассуждаете как прикладной программист, пишущий программу для решения своих собственных задач, то ваше замечание справедливо. Для разработки же программного обеспечения, как вида промышленного производства продукции... Читать далее
1 эксперт согласен
Python по скорости выполнения кода проигрывает + ест чуть больше ОЗУ... Если руки растут от куда нужно, то и код... Читать дальше
Мы, Российская компания интегратор и разработчик п...  · 19 окт 2020  · dta.agency

Язык программирования (ЯП) нужно выбирать исходя из задач. Не стоит использовать один ЯП - как универсальное решение всех проблем. В каждой предметной области есть свои тонкости.

Разработка программного обеспечения. Автоматизация бизнес процессов. Дизайн.Перейти на dta.agency
1 эксперт согласен
IT Java, python, golang  · 30 июн 2021
У этих языков разные ниши. Python прекрасен если нужно собрать что-то быстрое на коленке (для стартапа или автоматизации какой-нибудь задачи) Но, если вы создаете большой корпаративный софт, то тут нужен язык с статической... Читать далее
1 эксперт согласен
BackEnd, PHP, SQL, Redis, RabbitMQ   · 3 июл 2021
Python - это интерпретируемый язык программирования. C - компилируемый. Для большинства серьезных проектов ( прим. банковская система) интерпретируемые языки не подходят по соображениям безопасности. Ну и скорость соответственно... Читать далее
1 эксперт согласен