Здравствуйте, vfedosov, Вы писали:
V>Я уже в разработке 20 лет и мне не нужно "верить" — я знаю, что типизация нужна. Но для нетривиальных решений. Для описанного скрипта она нахрен не нужна. Она не везде нужна даже в больших проектах. Если у тебя 2 приватные функи объявлены рядом в коде и первая вызывает вторую и ты уверен, что вторая больше никогда не потребуется, то можно обойтись без типизации — ты ничего потеряешь. Проверено многократно. Типизация внутри функции мне также не дает ничего — в основном чисто мусор. Типы ясны из контекста — за редким исключением. Безусловно полезна типизация интерфейсов — особенно на уровне классов, которые доступны из других модулей. Тут вообще без нее никак — иначе проект скатывается в гавно влет. Короче, у любого инструмента есть границы полезности. Для одних проектов хороший инструмент — Шарп, для других Пайтон. Те кто утверждает, что Шарп везде лучше — фанатики. Так же как и те, кто утверждает подобное про Пайтон. Я бы сказал, что пока нет единого языка для всех целей — да он и не факт, что возможен.
Более интересен тот факт, что Питон является пожалуй единственным популярным языком, которому пока не нашли замену.
Если посмотреть на нашу индустрию лет 10 назад, то тогда было ровно 4 (ну я там два похожих за один считаю) важных языка, которые имело смысл изучать. Причём для профессиональной работы было достаточно знания одного из них:
1. C/C++ — для всего инфраструктурного или требовательного к ресурсам ПО.
2. Java/C# — для так называемого энтерпрайза (ключевое требование: чтобы и обезьяна могла написать безопасный код)
3. JavaScript — для веб-фронтенда (думаю не надо уточнять, по каким причинам это Г... заняло всю эту нишу)
4. Python — для автоматизации (всякие там админские и т.п. скрипты), веб-бэкенда, научных/инженерных/аналитических рассчётов.
Да, помимо этого настоящий профессионал должен знать ещё и всяческие не мейнстримовые языки (Лисп, Пролог, Хаскель и т.п.), для развития своего понимания разных подходов к проектированию. И так же в различных областях имеются десятки необходимых для изучения DSL'е (типа HTML, SQL и т.п.), которые тоже необходимо знать. Но это всё является лишь дополнением к хорошему знанию основного инструмента.
Всё выше сказанное — это естественно исключительно моё субъективное видение (хотя оно и хорошо коррелирует с такими источниками, как TIOBE и т.п.). Однако я думаю, что большинство даже на этом специфическом форуме согласится с этой картиной.
Так вот, если взглянуть на эту же область сейчас (в 2021-ом году), то мы увидим, что опять есть ровно 4 языка, занимающие точно такие же ниши (что впрочем не удивительно, т.к. ниши диктуются фундаментальными запросами человечества, а не модой в IT) как и 10 лет назад. Только вот сами языки эти стали совсем другими (речь естественно о выборе языка для нового проекта, т.к. гигабайты легаси написанного на языках из списка выше будут с нами ещё много десятилетий и количество вакансий по ним ещё долго будут опережать все современные языки). Трансформация языков в указанных нишах выглядит так:
Каждый из этих языков улучшает ключевую характеристику своего предшественника. Rust — может всё тоже, что и C++, но снижает завышенный уровень квалификации, требующийся для написания безопасного кода. Go — ещё намного проще чем Java и при это одновременно имеет меньше накладных расходов и проблем с развёртыванием. TypeScript пытается сделать из мира-помойки JS что-то похожее на нормальное программирование, хотя не уверен, что такое возможно в принципе.
Частично по этому (хотя были и другие причины) языки уже не столь разделены по нишам. Rust стал хорошо себя чувствовать в веб-фронтенде (когда-то эксклюзивной ниши JS), Go часто используют для написания системных утилит (т.к. в отличие от Java/C# для этого можно просто кинуть один бинарник, как когда-то делали с питон/перл скриптами), JS/TS стал хорошо себя чувствовать в бэкенде. Но это всё так сказать не основные направления использования этих базовых современных языков.
И только древнющему Питону так и не нашлась современная замена. Одно время были надежды на язык Julia. Но время показало, что это получился просто бесплатный и опенсорсный вариант Матлаба, который способен заменить Питон только в одной очень узкой области (и то этого скорее всего не произойдёт, т.к. будет сказываться "давление" остальной индустрии). Более того, за эти 10 лет, Питон только нарастил популярность (в основном за счёт бурного развития "его области" аналитических вычислений, которую сейчас принято называть Data Science). И на горизонте не видно вообще никаких потенциальных его заменителей.
Вот это действительно очень примечательный факт. Хотя и не скажу что позитивный — я бы предпочёл иметь на примете какого-то модного потенциального заменителя Питона, потому как улучшать в Питоне вообще то можно очень много чего.