Programmierung Quereinsteiger?
Появилось желание сменить образ деятельности в сторону программирования. Открыв вакансии по данной теме, я наткнулся на множество направлений. С чего мне начать и имеет ли смысл начинать?
О себе:
окончил магистратуру прикладная физика (механика) TU Berlin. Работал в инженерных бюро, занимавшимся машиностроением. Программировал только для себя различные костыли на С++, не создавая GUI, с запуском из консоли.
и имеет ли смысл начинать?
без волшебного шарика и бабы Ванги сказать затруднительно.
Нужно знать минимум две вещи: как именно разрабатываются программы и конкретный язык программирования
С чего мне начать и имеет ли смысл начинать?
-----
Начать с выбора "направления".
А - смысл - кто же его знает...
не создавая GUI
-----
Это не самая проблемная, хотя и весьма затратная часть. Обучат... от пары месяцев дo...
Почему не хотите больше машиностроить?
В силу своей работы пользуюсь вспомогательными программами для расчётов и прочих дел, которые как бы облегчают мой труд, а по сути заменяют меня, обесценивая мой труд. Уже наблюдаю, что при смене работодателя зп не растёт. Хочу обеспечить себя подушкой знаний, чтобы через пару лет ещё быть востребованным на рынке.
Хочу обеспечить себя подушкой знаний, чтобы через пару лет ещё быть востребованным на рынке.
-----
Не получится.
В ИТ, в отличии от машиностроения, придется учится столько сколько будешь работать - "подушка", которую создаешь за пятилетку, становится невостребованной за 2-3 года до того как ее создаш'.
Есть очень много видео в Ютуб, где рассказывают с чего начать. Часто это просто реклама своих школ. Легко ли найти работу после обучения? Наверное после обучения начинается обучение, только на фирме, которая тебя подстраивает под свои требования и ожидания.
Легко ли найти работу после обучения?
Это типа лотереи. Можно и сразу найти, а можно искать долго и нудно.
От возраста тоже зависит.
Но чисто мое мнение, если кто то считает что его нужно научить программированию, то делать в программировании им нечего.
С одной стороны учитель может как то помочь выбрать правильную дорогу, но в основном учеба - это самостоятельное изучение материала.
При этом учить нужно не столько язык программирования, а скорее как именно нужно программировать.
Учить я думаю фирма все же должна, если ты работаешь там. Другое дело хотят ли учить, особенно джуниора. Самостоятельно может даже лучше учить, но работать означает применять знания , а если ты их постоянно должен ещё и обновлять, да ещё и самостоятельно, то это втройне нагрузка.
Появилось желание сменить образ деятельности в сторону программирования.
окончил магистратуру прикладная физика (механика)
Ada, Python, LISP.
А вы сможете придумать такой алгоритм на Python, чтобы игрушечный самолёт сам взлетел и приземлился? Когда я только приехал в Германию, то подумывал о таком амбициозном проекте. Просто тогда ничего кроме Windows CE/Embedded не было, а сейчас всякие одноплатники есть, осталось только алгоритм написать. У меня есть один одноплатник, он знает угол наклона, там встроен акселерометр и температуру, есть умный одноплатник, который может распозновать объекты. Первое что нужно сделать, это чтобы можно было от самолёта через радиосвязь получить информатцию о всех датчиках самолёта (авионика), придумать алгоритм автопилота, а так-же алгоритм взлёта или посадки, и если чтобы когда будет штормить, чтобы самолёт смог удержаться.
Для радиосвязи нужно использовать модем, я нашёл опесоурсный проект эмуляции AT модема - https://sourceforge.net/projects/com0com/, не скорей это - https://sourceforge.net/projects/t38modem/, его нужно только адаптировать под радиосвязь, просто в обычных модемах чтобы соедениться нужно дать команду ATDT и сразу номер телефона, ну в Алматы на старых аналоговых АТС я всегда давал команду ATDP. Короче нужно чтобы по какой-то команде соеденялись между собой два радиоприёмника/радиопередатчика.
Вот небольшой пример алгоритма для дрона на Python:
Каким именно образом?
Указывать на ошибки, показывать как лучше сделать, отвечать на вопросы, вплоть до отсылать на курсы и семинары. Но вы правы по программированию очень много литературы и курсов в интернете.
отсылать на курсы и семинары
За счёт отпуска на курсы пойдете? 50% доплатите?
Обычно на человека/команду в год есть определенный бюджет на обучение. Можно купить книги и/или на конференцию съездить.
Толковому студенту можно и ментора приставить. Но обычно предполагается, что программист самообучаемая система. Ни у кого нет времени еще кого то специально обучать. Помочь, время от времени, да можно и нужно.
а вот глядя в своё время на бестолковые движения роботизированного пылесоса и роботизированных косилок,
я реально испытывал искушение поиграть с подобными устройствами - пожалуй, это всё ещё довольно непаханное поле
Неужели у них нет режима самообучения или построения карты участка, по которому они ползают и стригут траву, например? Тоже смотрел, как робот-газонокосильщик минут 5-10 ползал туда-сюда по одной линии, пока не нашёл наконец выход. Просто с одного конца тупичок был, и с другого, и он между ними ползал. Или задать ему один раз границы участка, чтобы не тупил. Скажем, провести после покупки по границам, а потом он сам внутри них будет себе маршрут оптимальный определять. Они сейчас настроены тупо на случайные повороты при столкновениях. Такого "робота" можно было сделать ещё до транзисторной эры.
ну вообще-то алгоритмы не придумывают - придумывают сказки ;)
Тогда почему 1 алгоритм можно решить N-разными способами? Когда я что-то хочу сделать, я придумываю алгоритм.
а вот глядя в своё время на бестолковые движения роботизированного пылесоса и роботизированных косилок, я реально испытывал искушение поиграть с подобными устройствами - пожалуй, это всё ещё довольно непаханное поле
Скукотище, это никак не связано с физикой. А вот самолёт там аэродинамика.
а вот глядя в своё время на бестолковые движения роботизированного пылесоса
Вот, я чуть его не купил..., программировать можно только на смарфтонах/таблетах, а вот такое визуальное программирование выбешивает:
Разработчики в National Instruments (LabVIEW) тоже думали, что инженеры - они же тупые. И сделали им язык программирования визуальный. Последнее время, правда, добавляют поддержку обычных текстовых.
они же тупые
Я не говорил такого, я искал робот, который можно программировать на Python, хотел робота то что на видео себе взять, почитал на то время не было поддержки Python, всё что не на Python-е программируется мне такие роботы не нужны, за Python-ом будущее, и на видео у женщины заметил что алгоритм не оптимизирован, я бы сделал бы так:https://i.ibb.co/qCjnBrM/4-43-3-min.jpg
Неужели у них нет режима самообучения или построения карты участка, по которому они ползают и стригут траву, например?
А вдруг что-то новое поставят, что тогда если он будет сам обучаться то есть запоминать препятствия. Если задать ему границы то он скорее всего будет их искажать и оставлять траву .
Я не программист, скорее любитель. Но чем лучше Пайтон? Просто все пишут что их любимый язык, то есть читай тот язык который они изучили, самый лучший. Будущее за конкретным языком? Почему?
Но чем лучше Пайтон?
См. https://www.tiobe.com/tiobe-index/python/
1. ЯП высокого уровня
2. Код хорошо читаемый
3. Очень много готовых библиотек, в том числе для веб - DJango, телеграмм боты, AI (PyTorch, TensorFlow), AIML см. - https://www.devdungeon.com/content/ai-chat-bot-python-aiml, Data Science, итд. Допустим есть Betelbot для вычисление блеска звезды - см. https://github.com/hippke/betelbot
4. Во многих программах - Corel Paint Shop Pro, Blender 3D, PyMOL используется Python.
5. Во многих симуляторах - CoppeliaSim - https://github.com/CoppeliaRobotics/zmqRemoteApi. CARLA Simulator.
6. Во многих роботах/Embedded - Aldebaran Robotics см. - https://github.com/aldebaran, Spot от Boston Dynamics см. https://github.com/boston-dynamics/spot-sdk, в одноплатниках Nvidia Jetson, в одноплатниках Micro:Bit, и AdaFruit - µPython.
Говорят, это язык, которому обучают в ВУЗах. Ничего больше не знают, потому и любимый.
НП. Для ТС я бы посоветовал бы - типа Pymunk - http://www.pymunk.org/en/latest/, или Blender см.
Начал осваивать питон, идет гораздо легче чем с++ когда-то. Спасибо всем отписавшимся.
идет гораздо легче чем с++
ну это как бы само собой разумеется. О типах и памяти можно не думать.
Но это как раз и развращает.
Сравнивать питона с С++ - это как сравнивать трактор "Беларусь" с прогулочной яхтой. Они из разных миров и для разных задач.
Питон - это в основном для НЕ-програмистов. Он для сяких там ресечеров с аналитиками инжинерами студентами и прочими. Он для минимизации издержек на программизм при сложной обработке и визуализации данных.
Он для минимизации издержек на программизм при сложной обработке и визуализации данных.
А можно подробнее? Больше чем задачки для не студентов не сталкивался, но что то меня сомнения берут.
Питон - это для тех кому "просто посчитать". Мне важен результат обсчета - я за него получаю зарплату а не за генерацию кода на том или ином языке.
На питоне можно делать любой обсчет данных - и код будет в большинстве случаев удобочитаемый и легко понимаемый спустя какое-то время. Большинство сложных алгоритмов уже реализованы в виде библиотечных функций. Сделать "на коленке" чтобы "було красиво" - самое то. Питон - хороший компромис между скоростью исполнения и объемом кода при реализации. Я больше люблю R - там код еще более компактный хотя считает обычно гораздо медленнее. Но у меня нет задач где расчет длился бы больше 10 минут - большинство задач вообще некритичны по времени. Точнее есть - но они делаються с помощью спецсофта писаного на фортране и C. Там полюбому нужна адская числомолотилка (мат.моделирование физ.процессов) со временем расчета порядка 2-3х суток.
Питон - это в основном для НЕ-програмистов.
А вы в курсе что ютуб написан на ЯП Python? Одна из причин изучения ЯП Python я хотел сделать что-то наподобие ютуба см. https://www.insight-it.ru/highload/2012/arkhitektura-youtube-2012/.
Python:
...
wiseguy - FastCGI-прослойка между Apache и Python
pycurl - лучшая доступная реализация HTTP-клиента, но в итоге все равно заменили на самописное низкоуровневое решение, выиграв 8% в потреблении вычислительных ресурсов.
spitfire - высокопроизводительный шаблонизатор на основе абстрактного синтаксического дерева с регулируемым уровнем оптимизации (как в gcc)
bson в качестве формата сериализации
Vitess...
Готовые клиентские библиотеки пока только для Python и Go, что не удивительно, но есть и универсальные интерфейсы на основе HTTP и просто TCP-сокетов.
Подводим итоги...
Python - вполне пригодный инструмент для реализации бизнес-логики интернет-проектов, свет клином на PHP не сошелся. Python предлагает широкий ассортимент инструментов для решения любых типичных для интернет-проектов задач, хотя субъективно выбор некоторых из них разработчиками YouTube мне кажется странным.
Я написал - "в основном".
Не исключаю что питон может быть вполне уместен для других задач типа бизнес-логики. Это как раз близко к тому что делают НЕ-программеры.
ЗЫ. Vitess реальзован на Go.
Сравнивать питона с С++ - это как сравнивать трактор "Беларусь" с прогулочной яхтой. Они из разных миров и для разных задач.
Питон - это в основном для НЕ-програмистов. Он для сяких там ресечеров с аналитиками инжинерами студентами и прочими. Он для минимизации издержек на программизм при сложной обработке и визуализации данных.
Вы подобное джаваскриптизёрам скажите про их джаваскриптиз. Но они таких как вы всё равно не слушают и лезут везде и всюду, куда ещё лет 10 назад и не думали. И питонисты, пыхпыхалки и прочие - тоже. Каждый стремится занять места как можно больше и вытеснить других. Независимо от того, можно ли на его поделке вообще писать нормальный код. Сначала займём своими поделками и костылями, а потом будем думать, как это всё дерьмо на нормальное что-то заменить.
А вы в курсе что ютуб написан на ЯП Python?
Я бы не стал доверять данным с 2012 года.
Ни один по-настоящему большой проект не написан на чём-то одном. Там всякого дерьма намешано. Под словами "ютуб написан на питоне" что понимается? Что алгоритм выдачи, например, рекомендованных видео там написан на питоне? Так это не бог весть какая задача - анализируется статистика пользователя. Такой скриптик можно на чём угодно написать. Судя по работе этого алгоритма, код там дерьмо и в основном:
1) показывает видео с каналов, которые смотрел недавно, а зачастую прямо те же самые видео (будто я их по второму и более разу хочу всегда посмотреть);
2) показывает общие тренды;
3) тупо херачит рекламу и видосы, продвинутые за деньги.
Большинство сложных алгоритмов уже реализованы в виде библиотечных функций
Ну вот и первое отличие в размышлениях. Когда говорят "Он для" - я подразумеваю исключительно голый язык питон. Вы же нечто большее.
Я не рассматриваю "голого Васю" - язык без библиотек. Это для меня "сферический конь в вакууме". Популярность питона - это в первую очередь прекрасные и общедоступные библиотеки. ИМХО конечно. Не знаю насколько подходящ питон для создания готовых приложений "на продажу" или какой-нибудь бизнес-логики но для таких не-программеров как я он просто шикарен. Ну и то что он де-факто стандарт для обучения азам программирования всяких не-информатиков в универах (например биологов - у них биоинформатика насколько мне известно очень "питонизирована") тоже фактор весьма значимый.
Я не рассматриваю "голого Васю" - язык без библиотек
Ну так никаких проблем - это нужно просто знать, что имеется в виду.
Просто когда говорят изучить язык программирования - имеется в виду прежде всего язык. Библиотеки каждый выбирает сам для себя.
То что нужно вам, возможно никогда не понадобится другому.
Думаю что в случае питона изучивший "просто язык" никому особо не нужен. То что видел я лично: цениться опыт работы с библиотеками (или их набором), И этот опыт чаще всего непрограммерский (например в биоинформатике). Но случаи наверное бывают разные. Если гдето с "питонистами" подругому - спорить не буду.
То что видел я лично: цениться опыт работы с библиотеками
У нас совершенно разные задачи:
-программисту нужно хорошо знать основы программирования, сам язык и всё что крутится вокруг. Использование конкретной библиотеки зависит от задачи. Да и тут дело не только в конкретной библиотеке.
чел. как-то знающий язык и конкретную библиотеку и больше ничего - нам в принципе не нужен.
-прикладнику наоборот - нужно решить конкретную задачу и в основном одному.
НП. А вот имхо и весь язык, мне кажется проще бейсика:
var1=5 if var1 == 5: print("var1 == 5") elif var1 == 4: print("var1 == 4") else: print("var1 == " + str(var1)) items = ["orange", "strawberry"] for item in items: print(item, end=" ") for i in range(0, 11): print(i) print("") for i in range(10, 0, -1): print(i) print("Hello " * 5) test = "Hello"; print(test[::-1]) print(test[0:2]) print(test[2:0:-1]) def myprocedure(p): print("Hello " + p) def myfunc(p): return "Hello " + p myprocedure("uscheswoi_82") print(myfunc("uscheswoi_82")) class Test: def __init__(self, name): self.name = name def tostring(self): return self.name t = Test("uscheswoi_82") print(t.tostring()) x = lambda a : a + 10 print(x(5))
А это результат:
var1 == 5 orange strawberry 0 1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1 Hello Hello Hello Hello Hello olleH He le Hello uscheswoi_82 Hello uscheswoi_82 uscheswoi_82 15
Что то я не припомню чтобы в бейсике такая фигня была - print(test[::-1])
А почему она там должна быть?
Это как раз приятная фича питона. В R довольно близко:
> test <- 10:1
> print(test)
[1] 10 9 8 7 6 5 4 3 2 1
> print(test[test])
[1] 1 2 3 4 5 6 7 8 9 10
Резко сокращает обьем кода при обработке массивов/матриц - не нужны явные циклы, можно использовать векторизацию.
На питоне/R код для вычислительных задач компактнее си-шного раз эдак в 3-5. Понятно что по скорости может быть обратная картина. Но для очень широкого спектра применения разница по скорости пренебрежима.
pragma solidity ^0.5.0;
contract SolidityTest {
uint16 public a = 20;
uint16 public b = 10;
uint public sum = a + b;
uint public diff = a - b;
uint public mul = a * b;
uint public div = a / b;
uint public mod = a % b;
uint public dec = --b;
uint public inc = ++a;
}
Output :

А почему она там должна быть?
Раз питон "проще" бейсика, то все конструкции должны быть также проще, а именно эта вызывает у меня море вопросов.
Для начала нужно найти что это вообще такое
https://stackoverflow.com/questions/509211/understanding-s...
А после, долго и нудно разбираться с каждым вариантом. Что то подобное помню в Руби - смотришь на короткий код и нифига не понимаешь, что он может делать
Так что пусть уж лучше будет длинный код, но понятный без дополнительных поисков.
Конструкции в питоне проще. И нагляднее. Такие конструкции встречаются в скриптовых языках часто - например R, Labtalk в пакете Origin, Matlab. Они привычны для не-программистов пришедших в питонизм из всевозможных интерактивных пакетов научной графики и обработки данных. Для меня они интуитивно понятны.
Бейсик в варианте VB я воспринимаю с содроганием. Он мне категорически ненравиться. Хотя я знаю виртуозов этого языка использующих ево очень и очень эффективно для технических расчетов.
Длинный код нафиг не нужен для тех кто считает а не программит коммерческие приложения. Чужой питоновский или R код я читаю слёта не испытывая никаких трудностей. И такие конструкции только облегчают понимание. Но разрабу клепавшему интерфейсы они врядли понравяться.
Что то я не припомню чтобы в бейсике такая фигня была - print(test[::-1])
В бейсике было бы так:
DIM test test$ = "Hello" FOR i% = LEN(test$) TO 1 STEP -1 PRINT MID$(test$, i%, 1) NEXT
В других ЯП есть тоже mid, или substr. В C# было бы так https://docs.microsoft.com/ru-ru/dotnet/api/system.string.substring?view=net-6.0 и так https://stackoverflow.com/questions/228038/best-way-to-rev...
Для начала нужно найти что это вообще такое
https://stackoverflow.com/questions/509211/understanding-s...
А после, долго и нудно разбираться с каждым вариантом. Что то подобное помню в Руби - смотришь на короткий код и нифига не понимаешь, что он может делать
Так что пусть уж лучше будет длинный код, но понятный без дополнительных поисков.
a[start:stop] # items start through stop-1 a[start:] # items start through the rest of the array a[:stop] # items from the beginning through stop-1 a[:] # a copy of the whole array
Теперь что-то подобное в Шарпе - стоп означает не стоп, а стоп минус 1. И эту хрень надо постоянно держать в голове. А ведь до появления этой уродской нотации у меня в голове было на несколько байт больше свободного места.
Длинный код нафиг не нужен для тех кто считает а не программит коммерческие приложения.
Тогда наверное лучше Матлаб какой-нибудь? Там тупо алгебра, в том числе векторная. Поназывал всё однобуквенно и фигачишь функции и тензоры.
Вы вообще в курсе сколько стоит одна лицензия Матлаба для индустриального клиента? Я работал с Матлабом во времена научные - академический сектор мог себе позволить излишества. А сейчас фирма сказала что не видит необходимости в покупке этого продукта. И если честно - я тоже. Зачем чтото покупать если питон плюс scipy/numpy/... забесплатно обеспечивают вполне сравнимый функционал? Кроме линейной алгебры и верчения матриц - а мне их вертеть приходилось, решал обратные некорректные задачи в своей области - существует огромное количество других задач. И все их можно решать в питоне с библиотеками. Или в R. По большому счету я не вижу принципиальной разницы между программированием на языке Матлаба и на питоне. Объемы кода сравнимые.
Вообще легко запомнить:
В Си/Си++/Java/javascript/PHP/C#
for(i=start; i<end; i=step) { ... }
В Бейсике:
FOR i%=start TO end STEP step ... NEXT
В Pascal:
for i:=start to end do begin ... end или for i:=start downto end do begin ... end
А в Python:
array[start:end:step]
Это легко запомнить. Нелегко - какие значения присваивать этим переменным. Что в первом варианте end = length - 1. А в C# в разных местах ещё и с разной нотацией. В операторах цикла и индексах массивов писать length - 1, а в операторах срезов массивов просто length, потому что -1 там уже подразумевается, и если напишешь length - 1, то последний элемент не захватится.
Интересно, в других вышеперечисленных языках тоже полно таких "маленьких нюансов"?
Вы вообще в курсе сколько стоит одна лицензия Матлаба для индустриального клиента?
да, Матлаб своей ненормальной ценой всех уже достал, правда можно вместо него октав использовать, там все совместимо, хотя как раз из-за этой ненормальной цены питон-то и прижился. Я за собой заметил, что вычислительную математику в терминах библиотек лапака и бласов я на С++ пишу даже быстрее, чем на питоне, хотя строк это немного больше занимает, зато можно для себя быть уверенным что массивы в памяти лягут там, где я хочу.
Интересно, в других вышеперечисленных языках тоже полно таких "маленьких нюансов"?
Думаю да.
Тут преподаватель сравнивает Python и Си++ см. https://youtu.be/KdZ4HF1SrFs?t=1359. Как понимаю когда пишишь так x = "Hello World", в языке Python выделяется место в памяти под слово Hello World, а переменная x содержит не само знасение Hello World, а ссылку, если написать x = 5, удаляется из памяти Hello World, и переменная x содержит уже новую ссылку на число 5. А в Си++ так :
#include <iostream> #include <string> using namespace std; int main(int argc, char** argv) { string s = "Hello, World!"; string s2 = s; cout << s2 << endl; s = ""; cout << s2 << endl; }
Результат :
Hello, World! Hello, World! -------------------------------- Process exited after 0.02354 seconds with return value 0 Drücken Sie eine beliebige Taste . . .
НП.
Кому не нравится Python, можете попробывать Lisp:
Октав я все еще пользую время от времени но все реже и реже . Многие плюются - октав не вполне совместим, не все тулбуксы работают. А сейчас нет смысла и в октаве - многое в R и питоне мне нравится больше матлабовского.
Ну и смотря какой вычмат писать. По строкам сишный код у меня занимает в разы больше места - иногда приходится вычмат в виде DLL для софта управления оборудованием оформлять. Вообще сравнивать сложно. Все будет определяться степенью "библиотечности" функций.
Мне надо быстро давать осмысленные "вводные" начальству - обычно все требуется "еще вчера". Решающее значение имеют скорость вникания в проблему и имплементации метода обработки данных. Сама обработка редко требует больших выч.ресурсов. Чаще требуются упражнения в изощренной статистике чем обработка очень больших данных.
Кому не нравится питон может использовать R или Julia в зависимости от типа задач.
А в Си++ так
У них (у переменных s и s2) даже адреса разные:
#include <iostream> #include <string> using namespace std; int main(int argc, char** argv) { string s = "Hello, World!"; string s2 = s; cout << "Pointer of variable \"s\"=" << &s << "\n" << "Pointer of variable \"s2\"=" << &s2 << endl; cout << s2 << endl; s = ""; cout << s2 << endl; }
Результат:
Pointer of variable "s"=0x23fe30 Pointer of variable "s2"=0x23fe20 Hello, World! Hello, World! -------------------------------- Process exited after 0.02382 seconds with return value 0 Drücken Sie eine beliebige Taste . . .
Кому не нравится питон может использовать R или Julia в зависимости от типа задач.
ИМХО, если знать библиотеку (например gsl, lapack, blas) и язык, например, С и питон, то скорость написания хоть на питоне, хоть на С/С++, если алгоритм постоянно дергает эту библиотеку, будет одинаков. И время исполнения, если на одном процесссоре, практически тоже. Другое дело, народ стал ленивый и не только не разбирается как память аллоцируется, кешится и треды на процессоры ложатся, поэтому питон и побеждает. А потом представьте, на С/С++ можно столько вольностей нагородить, и потом год начальству отчитываться об успешном поиске багов, а на питоне сложно написать криво. Просто работает, не всегда хорошо, на многопроцессорной системе еще надо сильно потрахаться, чтобы все было именно так, как
надо, на многоуровневых кешах - вообще полное отсутсвие понимания как это в питоне или R сделать, но, ведь работает. А кого сейчас перформанс волнует, у людей-то серьезных задач просто нет.
Другое дело, народ стал ленивый и не только не разбирается как память аллоцируется, кешится и треды на процессоры ложатся, поэтому питон и побеждает.
А зачем это НЕ-программерам надо? Им надо "ехать" а не "шашечки". Мне надо БЫСТРО решить задачу а не написать алгоритмический шедевр. Хотя я и заморачиваюсь оптимизацией по старинке.
А кого сейчас перформанс волнует, у людей-то серьезных задач просто нет.
У нас есть. Моделирование термофизических процессов в наших дивайсах. Но никто на фирме не будет оплачивать разработку своего софта для этой задачи - это много-много человеко-лет выскоквалифицированного труда. Поэтому покупаем лицензию на готовый узкоспециализированный продукт.
Мои задачи все больше скатываются в область ML и создания экспертных систем. И для них не требуется знать тонкости работы с памятью и т.п. в C++.
А зачем это НЕ-программерам надо?
А вы спросите местных форумских программеров, они это умеют? У меня сплошь и рядом возникают такие задачи, и часто питона не хватает. Причем я не заморачиваюсь по поводу алгоритмического шедевра - ибо времени обычно на него нет, но ехать надо. Грубо говоря, без параллелизма и кеш оптимизации и с ними время работы часто отличается в сотни и тысячи раз, и, если не везет, то надо ждать результатов месяцы, но при правильном распараллеливании и кешовой оптимизации - все сводится к минутам расчетов.
Но у всех разные задачи, и, как я говорил, в большинстве задач, что тут люди решают, время расчетов несопоставимо мало со временем имплементации.