{"id":3846,"url":"\/distributions\/3846\/click?bit=1&hash=7779ea7ce422a1336b052de64994cb9fb2a68f44b004db97985514d2e15a72ba","title":"\u0412\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a? \u0410 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0432 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435 \u043a\u043e\u0434\u0430?","buttonText":"\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c","imageUuid":"f5f0e11f-fefd-52f5-8712-82164a59b7ce","isPaidAndBannersEnabled":false}
Ретро
Black Caviar Games

Краткая история языков программирования

Когда-то мы писали, что попасть в геймдев можно без умения кодить. Это так, но программисты очень важны для игровой индустрии. Обойтись без этих специалистов геймдев не может. А чем они должны владеть? Языками программирования, конечно. Именно на них и пишется код. Давайте запустим машину времени, вернемся к истокам и узнаем, на чем писали задолго до C++ и Python.

Основы и немного истории

Определимся с терминами. Программа - это набор инструкций для конкретного исполнителя (механизма, устройства и т.д.), а язык программирования - знаковая система, предназначенная для записи программ.

Первые программисты появились задолго до компьютеров, с которыми они обычно ассоциируются. Автомат-гуманоид Аль-Джазари (1206 год), ткацкий станок Жаккара (1804), "Аналитическая машина" Бэббиджа (1843) были программируемыми устройствами. Автомату алгоритм действий задавался с помощью кулачков и зажимов, станку и "разностной машине" - с помощью перфокарт. Ада Августа Лавлейс, дочь самого Байрона, даже написала для устройства Бэбиджа (которое он так и не собрал) программу, решавшую уравнение Бернулли.

1940-50-е годы: от Ассемблера к Fortran и AGOL

Электронно-вычислительные машины работают с командами, состоящими из нулей и единиц (машинным кодом). Однако такой язык получается громоздким и неудобным. Поэтому специалисты решили автоматизировать набор машинного кода. В конце сороковых - начале пятидесятых стал применяться Ассемблер. В нем для обозначения объектов и команд использовались буквы или укороченные слова (например, add вместо 000010). Это был язык низкого уровня, то есть созданный для конкретного типа процессора. Он значительно упростил труд программистов.

Следом появились так называемые языки высокого уровня (или машинонезависимые). В отличие от предшественников, они не были привязаны к конкретным устройствам. Для них создавались компиляторы - "переводчики" программ, созданных на языках высокого уровня, на "низкоуровневые". Первым из них стал Shortcode (1949). В 1950 Уильям Шмитт адаптировал его для компьютера UNIVAC.

C 1954 по 1957 в IBM под руководством Джона Бэкуса (1924-2007) был разработан знаменитый Fortran (от formula translator). Он использовался для технических расчетов и научных задач. Fortran стал первым относительно массовым языком программирования - к 1963 году существовало уже 40 компиляторов для различных машин. Он попал и в Советский союз, благодаря общению советских физиков с коллегами, работавшими в CERN. В 1967 году был создан компилятор для ЭВМ "Минск-2", в 1968 - для БЭСМ-6. Язык используется до сих пор - в основном, для сложных вычислений.

Успех "Фортрана" заставил действовать конкурентов. Немецкое Общество прикладной математики и механики создало комитет и поставило перед ним задачу разработки нового универсального языка программирования. То же самое сделала американская Ассоциация вычислительной техники. К счастью, вместо противостояния получилось сотрудничество (если не считать спора из-за того, какой знак использовать для десятичных дробей - точку или запятую). Комитеты объединились и создали ALGOL (1958), "дедушку" Java, Pascal и C++. Как и Fortran, ALGOL распространился по миру, но в Европе и СССР был встречен гораздо теплее, чем в США. Язык отличался блочной структурой, что для того времени было прогрессивным решением, а затем стало стандартом.

Другие современники Fortran и ALGOL - это LISP (1958) и COBOL (1959). Первый построен на обработке списков (отсюда название - list processing) и до сих пор в ходу (например, в корпорации Boeing). Второй создавался для экономических процессов (кредитные карты, банкоматы), тоже по-прежнему "в строю" и применяется в банковских системах. Заменить его на современный можно, но дорого и энергозатратно - в этом уже убедились в Commonwealth Bank of Australia.

1960-70-е: от структурного программирования к объектно-ориентированному

Первая "звезда" шестидесятых - BASIC (он же Beginner's All-purpose Symbolic Instruction Code, универсальный код символических инструкций для начинающих), созданный Томасом Курцем и Джоном Кемени, профессорами Дартмутского колледжа в 1964 году. Разработчики хотели создать простой язык, с помощью которого непрофессионалы могли бы разрабатывать несложные программы для решения прикладных задач. BASIC был основан на Fortran II и Algol. Популярным язык стал уже в 1970-х с распространением микрокомпьютеров.

За BASIC стояла конкретная философия. Курц и Кемени считали, что компьютерная грамотность - обязательный навык будущего, что и было отражено в названии языка. Как минимум они хотели, чтобы BASIC без труда могли освоить преподаватели и студента Дартмута.

В конце 1960-х сформировалась парадигма структурного программирования, основанного на представлении о программе как системе блоков. "Отцом" методологии считают Эдсгера Дейкстру (1930-2002), автора письма "Оператор Goto считается вредным". Новая парадигма позволила оптимизировать код и сделать его более компактным благодаря внедрению функций и процедур. Кстати, Дейкстра критиковал BASIC, говоря что сделать хорошего программиста из того, кто начинал с этого языка, очень трудно. Это, конечно, было большим преувеличением.

Следующим большим достижением стало появление классов - структур, содержащих переменные и работающие с ними функции. В семидесятых - начале восьмидесятых "на сцену" вышло объектно-ориентированное программирование (ООП). Оно сочетало в себе наработки структурного программирования с нововведениями вроде полиморфизма подтипов.

Первые ООП-языки - это Simula (1967) и основанный на нем Smalltalk (1972). Последний привнес в программирование множество идей и концептов, актуальных по сей день: взаимодействие между элементами через сообщения, возможность редактировать код "на ходу" и динамическая типизация. Logitech и ряд других компаний и сейчас используют Smalltalk для отдельных операций.

В 1972 появились С и SQL (первоначально назывался SEQUEL). C (прародитель С#, Java, Python и других), был создан Деннисом Ричи, сотрудником Bell Telephone Laboratories для работы с Unix. SQL - детище специалистов IBM Бойса и Чемберлена, ориентирован на работу с информацией из баз данных. Оба до сих пор используются.

1980-1990-е: мультипарадигмальность, визуальные языки, Интернет

В начале 1980-х сотрудник Bell Labs Бьерн Страуструп решил улучшить язык С и добавил к нему ряд возможностей Simula (1967). Так появился C++, объединивший в себе черты объектно-ориентированных и системных языков. Страуструп внедрил в С возможность работать с объектами и классами, строгую проверку типов, аргументы по умолчанию и т.д. Первые версии языка (1980) назывались "Си с классами", а наименование С++ стало использоваться в 1985 году с выходом очередной версии. К этому моменту возможности языка еще больше расширились. С++ актуален до сих пор, активно используется (например, в игровых движках и Adobe Photoshop) и развивается.

Еще одной важной вехой стало появление объектно-ориентированного Ada (1980/81), названного в честь Ады Лавлейс. Его разработала команда Жана Ишбиа по заказу Министерства обороны США. В основу языка легли Pascal (1970) и Algol (1960), однако присущий им синтаксис был упорядочен. "Ада" создавался для военных и смежных задач - прежде всего для систем управления кораблями и самолетами. Сейчас используется для управления воздушным движением в некоторых странах, а также в космических проектах.

В эту эпоху началось активное применение модулей - крупных единиц организации кода. Они позволили упростить процессы тестирования и поиска ошибок. Помимо Ada модульными были Modula-2 (1978) и Oberon (1986) (оба разработаны создателем Pascal Никлаусом Виртом), сам Pascal (1970), Haskell (1990) и другие. Кстати, Вирт высказал мнение, что программы становятся медленнее "куда шустрее, чем компьютеры становятся быстрее". Иными словами, программное обеспечение не успевает за аппаратным. Этот тезис известен под разными названиями: "закон Вирта", "закон Гейтса" или "закон Пейджа".

Получили развитие языки, предназначенные для обработки текстовой информации - например, Perl (1987), Python (1991), и Ruby (1993). Perl, разработанный для редактирования текстов, в наши дни применяется в самых разных целях - от системного администрирования до работы с базами данных. Python, созданный голландцем Гвидо ван Россумом, был назван в честь знаменитой комедийной группы из Великобритании "Монти Пайтон". Сейчас это универсальный язык, широко известный и удобный. Ruby Юкихиро Мацумото тоже актуален по сей день и используется для веб-приложений.

Другой тренд конца восьмидесятых - начала девяностых - развитие визуальных языков. В них программа создается при помощи манипуляций с графическими объектами вместо написания кода. Первыми стали Visual Basic (1991), Delphi (1995) и C++ Builder (1997). Современный пример - ориентированный на детскую и подростковую аудиторию Scratch (2007).

В начале девяностых началось активное развитие Интернета. Понадобились инструменты для создания веб-сайтов. Сначала активно применяли уже упомянутый нами Perl и HTML. В 1995 был выпущен PHP - С-подобный язык для разработки интернет-страниц и веб-приложений (активно применяется и сейчас, в том числе WordPress и Wikipedia). В том же году вышла первая версия популярного JavaScript Брендана Эйха, также применяющегося для динамической веб-разработки, браузеров и виджетов.

Джеймс Гослинг выпустил один из самых популярных языков наших дней Java (1995), который не стоит путать с JavaScript.. Сейчас он часто используется для создания Android-приложений и веб-сервисов. И конкурирует с Kotlin (2011), о котором мы еще скажем.

В отличие от ранних языков, представлявших собой слабо распространенные инструменты с ограниченной функциональностью, наиболее популярные языки восьмидесятых и девяностых были гораздо более доступными и применялись для широкого спектра задач. Вокруг них формировались свои инфраструктуры - учебники и пособия, библиотеки и фреймворки. Программирование стало более массовым занятием.

От нулевых до наших дней

Первый "хит" нового тысячелетия - это C# (2001), разработанный в Microsoft Андерсом Хейлсбергом, создателем Delphi. Это С-подобный язык, синтаксически близкий к C++ и Java, взявший многое от Delphi, Modula и Smalltalk. C# активно используется самой Microsoft, применяется при разработке игр на Unity и веб-разработке.

В 2003 свет увидел Scala, созданный в Швейцарии под руководством Мартина Одерски. Его "фишкой" стала масштабируемость, а также объединение объектно-ориентированного и функционального программирования. Ближайшие "родственники" языка - это Java и C++. "Ровесник" Scala - язык Groovy, созданный для платформы Java. Синтаксически он близок Java, но имеет ряд отличий.

В нулевые и десятые набирала силу Google, не оставшаяся в стороне от большой игры - в ноябре 2009 компания представила язык Go (также известен как Golang - не путать с языком Go!). Продукт Google разрабатывался как относительно простая замена C и C++, которая сможет эффективно работать на многоядерных процессорах и распределенных системах. Go не стал "прорывом", но вошел в число популярных современных языков и, в основном, применяется для создания микросервисов и веб-приложений.

Российские программисты тоже внесли вклад в развитие языков нулевых-десятых. С 2010 по 2011 компанией JetBrains (под руководством Андрея Бреслава) был разработан Kotlin. Это объектно-ориентированный язык, функционирующий на базе Java Virtual Machine, создававшийся как более лаконичная и простая альтернатива Java и Scala. Как и Java, он часто используется Android-разработчиками.

Swift (2014) создавался Apple как более простая и эффективная замена C, C++ и Objective-C. Это универсальный язык, на котором прежде всего пишут продукты для macOS, iOS и других систем корпорации. Иногда может использоваться для поддержки сайтов и веб-приложений.

Вместо заключения:

Мир программирования огромен. Наш материал - лишь общее описание эволюции языков программирования. Для того, чтобы рассмотреть тему детально, необходимы сотни страниц, но мы надеемся, что вы узнали что-то интересное и новое.

Если вы только планируете ворваться в яркую и разнообразную вселенную программирования, то, скорее всего, размышляете о том, с какого языка начать. Это зависит от того, чем именно вы хотите заниматься - веб-разработкой, мобильными приложениями или, может быть, data science. Некоторые языки многофункциональны, другие - скорее относятся к "узким" и "заточены" на решение ограниченного спектра задач.

У языков программирования разные пороги вхождения. Если начать работать в Python относительно просто, то об R этого не скажешь. При выборе языка для изучения исходите из своих целей, знаний и уровня подготовки. Ищите и используйте возможности для образования и самообразования. Это не только курсы, книги и статьи, но и онлайн-тренажеры.

Хотите стать программистом в игровой студии? Имеет смысл начать изучать Python - на нем легко создавать прототипы игр. Вы наверняка будете работать в Unreal или Unity, так что осваивайте C++ и C#. JavaScript пригодится, если вы собираетесь разрабатывать мобильные проекты. Менее известные, но использующиеся в индустрии, языки - это Lua, Swift и CUDA-C.

Источники:

1. Germn. Краткая и на 146% точная история языков программирования - https://habr.com/ru/post/481822/

2. Владимир Языков. Языки программирования: для чего нужны, какие популярны, как выбрать и с чего начать изучение- https://netology.ru/blog/03-2022-programming-languages

4. Какой язык программирования учить прямо сейчас: 9 самых востребованных - https://trends.rbc.ru/trends/education/601c1a6b9a79472c4806230ahttps://trends.rbc.ru/trends/education/601c1a6b9a79472c4806230a

5. Harry McCracken. Fifty Years of BASIC, the Programming Language That Made Computers Personal - https://time.com/69316/basic/

Подписывайтесь на официальный аккаунт Black Caviar Games на DTF, чтобы не пропустить новые интересные статьи! ;)

Мы так же есть в YouTube, VK, Telegram, Яндекс.Дзен и TikTok.

0
30 комментариев
Написать комментарий...
Spid3r

Лайк, но очень уж сжато. Почитал бы более подробно про отдельные языки.

Кстати, а кто-нибудь уже запилил подсайт для погромистов?

Ответить
Развернуть ветку
Ащьф Лштшфум

Вроде мемы для айтишников только

Ответить
Развернуть ветку
не вывозишь метаиронию

кринжовые кстати

Ответить
Развернуть ветку
Ащьф Лштшфум

Ты просто не вывозишь метаиронию

Ответить
Развернуть ветку
не вывозишь метаиронию

странно
а в нике написано, что ты

Ответить
Развернуть ветку
Иван Чернов

Не вижу Forth'a, а ведь на нём написана мементичная Collapse OS

Ответить
Развернуть ветку
Металлургический чайник

Гениальный язык, без иронии. Безпарадигменный (на нём можно реализовать любую парадигму), с возможностью динамического переключения компиляции/интерпретации прямо в рантайме, быстрый, очень просто реализуем даже на самых тупых и слабых чипах (а то и прямо аппаратно), с низким базовым порогом входа. Очень жаль, что сейчас почти не поддерживается.

Ответить
Развернуть ветку
Иван Чернов

Потому что документация - говно.
А было бы приколько скрутить "Forth For All" - набор ассетов для Unity3D/UE и иже.

"Один язык, чтобы рулить ими всеми". Но, как всегда, есть нюансы.

Ответить
Развернуть ветку
Государственный утюг

Помню писал змейку на Delphi. Как же тупил canvas для отрисовки.

Ответить
Развернуть ветку
Askalot

Я в Delphi на канвасе запилил целую 2д-аркаду из 5-6 уровней и с мини-играми (пол года ушло). Кстати была довольно требовательна к железу, но не тупила. А потом я узнал про юнити...

Ответить
Развернуть ветку
Здешний микроскоп
Первые версии языка (1980) назывались "Си с классами", а наименование С++ стало использоваться в 1985 году с выходом очередной версии

Строго говоря первой версии. С с классами был скорее надстройкой над С. С++ же уже новый язык, который имел достаточно много отличий от Си с классами и принёс много нового.

Ответить
Развернуть ветку
Иван Чернов

Зато теперь медленно пожирает С-ху.

Ответить
Развернуть ветку
Здешний микроскоп

Да вряд ли пожрет. Си все ещё очень популярен и С++ не смог его полностью вытеснить. Впрочем также как С++ никто пока не заменил. И замены обоим языкам пока не предвидеться. Хотя попытки были.

Ответить
Развернуть ветку
Иван Чернов

С++ потихоньку замещает компилятор С, на это многие жалуются

Ну а касаемо "вытеснить С++" невозможно - это ярый миф, который держится лишь на том, что С++ - это религия.
Lisp и FreeBasic работают быстрее, Forth куда удобнее для высокоабстрактной разработки (там реально можно просто писать, но есть нюансы).

Но плюсы имеют охрененный компилятор, который полностью переписывает программу за программистом и внутри от исходной логики может не остаться ничего.

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

Плюс к этому, некоторые программисты С++ боятся (именно боятся) начинать думать на других языках - "тогда я забуду как это на С++".

Это религия, со всеми вытекающими.

Ответить
Развернуть ветку
show no mercy
С++ потихоньку замещает компилятор С, на это многие жалуются

Так и хочется вспомнить тут искрометную шутку из моей молодости о том, что компилятор С написан на С.

Ответить
Развернуть ветку
Здешний микроскоп
Ну а касаемо "вытеснить С++" невозможно - это ярый миф, который держится лишь на том, что С++ - это религия.

Да нет. Возможно, но не не сейчас. Слишком много кодовой базы. Вот если бы условный Rust или любой другой похожий на плюсы, но более безопасный язык имел обратную совместимость с С++ на манер Java и Kotlin или Objective-C и Swift, то переход был бы возможен.

Но плюсы имеют охрененный компилятор, который полностью переписывает программу за программистом и внутри от исходной логики может не остаться ничего.

С этим согласен. Современные компиляторы уж очень хорошо оптимизируют код

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

Да не очень то и странно, учитывая что ноги Плюсов растут из Си

Плюс к этому, некоторые программисты С++ боятся (именно боятся) начинать думать на других языках - "тогда я забуду как это на С++".

Это странно. Мне понимание С/С++ напротив даёт понимание того как работает, например, Python. Возможно люди сами по себе неохотно переходят с языка на язык, которые между собой сильно отличаются. Я не однократно слышал, что людям, которые исходно изучали Java или С# тяжело программировать на С++ как раз из-за того, что там все несколько иначе.

Мне нравится С++, но освоить Python это не помешало. Да и в будущем есть мысли изучить Rust и/или С#.

Ответить
Развернуть ветку
Металлургический чайник
Вот если бы условный Rust или любой другой похожий на плюсы, но более безопасный язык имел обратную совместимость с С++ на манер Java и Kotlin или Objective-C и Swift, то переход был бы возможен.

Я тут аж подвис. Что вы подразумеваете под "обратной совместимостью" в этом случае? Потому что в классическом понимании обратной совместимостью тут и не пахнет.

Ваши примеры это
- Kotlin можно компилировать в байткод, выполняемый java-машиной (справедливо для кучи других языков, но никто же не утверждает, что Python обратно совместим с Java)

- Objective-C и Swift разработаны Apple (но вы же не будете утверждать, что VisualBasic и C# обратно совместимы, если оба - детища Microsoft)

Ответить
Развернуть ветку
Здешний микроскоп

Я подразумеваю запуск кода или бинарника С++ из Rust. Насколько я понимаю, то сейчас этого нет. Поправьте, если ошибаюсь

Ответить
Развернуть ветку
Металлургический чайник

Вы подразумеваете компиляцию кода одного языка компилятором от другого языка. Это нонсенс и такого не существует.

Если же вначале пользоваться трансляцией одного языка в другой, перед компиляцией, то это нетривиальная задача и для некоторых комбинаций языков слишком трудозатратна. Например, крайне сложно сделать трансляцию функционального языка в объектно-ориентированный и наоборот.

Ответить
Развернуть ветку
Здешний микроскоп
Вы подразумеваете компиляцию кода одного языка компилятором от другого языка. Это нонсенс и такого не существует.

Не обязательно. Я же писал

Я подразумеваю запуск кода или БИНАРНИКА С++ из Rust.

Когда один язык может запускать заранее откомпилированный код другого языка это вполне реально и не редкость. Например, запуск функций Fortran в C, C++ и Python.

Ответить
Развернуть ветку
Металлургический чайник

Запустить БИНАРНИК, скомпилированный из другого языка, может любой язык с доступом к системным вызовам. Это подавляющее большинство современных языков программирования. Это не делает их совместимыми либо переносимыми.

Ответить
Развернуть ветку
Иван Чернов

Оно не то что "мешает". Это именно "страшно начать думать на другом языке".

Ну а касаемо "кодовой базы" - тут варианты как всегда:
- либо нужен переводчик с языка на язык
- либо "лоскутный" компилятор, который сможет дёргать разные языки в один проект
- либо использовать эту кодовую базу как "чёрный ящик", попутно переписывая.
- либо использовать Forth как язык высшего уровня, а ниже уже использовать стандартные обработчики локальной кодовой базы.

Так то у Питона некоторые библиотеки на Фортране написаны и ничего.

Ответить
Развернуть ветку
show no mercy

Зачем в принципе вытеснять C\C++ ? Просто ради того чтобы думать на другом языке?
С++ по прежнему хороший, быстрый язык. Огромное кол-во библиотек, большое количество людей, которые этот язык либо изучали (то есть хотя бы код прочтут), либо в какой-то степени им владеют.
Под специализированные задачи есть специализированные языки. Например, функциональные, которые действительно по производительности в определенных задачах заткнут С++ за пояс очень далеко.

Есть много примеров достаточно удачного софта, когда язык выбирался именно по принципу того, что автор им владел лучше всего.

Ну то есть поинт мой в том, что глобальной необходимости вытеснить С++ вроде как и нет. Скорее задачи должны определять выбор инструмента, и, вроде, в серьезных задачах это именно так и происходит.

Ответить
Развернуть ветку
Иван Чернов

1. С++ плохой, забагованный язык с фактически отсутствующей обратной совместимостью.
Работая с С++ программист обязан знать инструкции процессора и флаги компиляции.
Знать для того, чтобы его код работал +/- одинаково в разные годы сборки.
Про разницу компиляторов - просто молчу, это самоочевидно.
2. Оптимизации С++ меняют алгоритмы программиста и не заботятся о формальном соблюдении заложенного алгоритма. Что приводит к нарушению ожиданий:
2а. строгая типизация подобна микроюбке у ночной бабочки. Она вся такая "нет, я статическая", но обходишь сзади и она уже очень даже да - и динамическая, и без проверки типов.
И нет - это не программист плохой, если он ожидает от типа char() ошибки при попытке засунуть в него строку. С++ - не язык с динамической типизацией, оно обязано падать с ошибкой!
2б. Оптимизации приводят к тому что данные в памяти подтекают непредсказуемо и обращение к переменной не обязательно возвращает значение именно этой переменной
2в. То же самое с вызовами функций.
3. С++ устаревший и неактуальный язык, который предназначен не для х86 архитектуры, а для PDP-11.
4. С++ даже с оптимизациями медленнее LISP'a как минимум в некоторых задачах.
5. С++ заставляет писать грандиозные портянки бойлерплейта и фактически не отличается от осторожной работы на языке с динамической типизацией.
5а. каждый раз программист активно скармливает компилятору все типы переменных.
5б. доверять типам переменных нельзя.
5в. доверять вызовам функций нельзя.
5г. необходимо знать все UB чтобы не наткнуться на их баги случайно.

И самое ужасное в этом то, что С++ надо учить только последней версии. А все "исправления" сводятся к новым нагромождениям костылей, которые будут исправлять новыми костылями в следующем стандарте.

Я плюсы попробовал - сорян, это религия. Да, у него есть плюсы, но его пора забыть уже 20 лет как. А фанатики даже COBOL зарыть не дают.

Ответить
Развернуть ветку
show no mercy

Так, давай сразу тогда оговоримся. Мы с тобой про плюсы под какую платформу? Unix-like, Windows?
Компиляторы там несколько (сильно) разные могут быть. Я буду говорить с точки зрения Unix-like.

1. Ну, если про флаги компиляции я еще согласен, то про инструкции процессора я бы попросил пояснений. Не все задачи от тебя требуют низкий уровень программирования.
2а. Ну, вообще говоря, С++ не является в полной мере языком со строгой типизацией. Приведение типов же у тебя есть.
2б. То есть ты сейчас фактически сказал, что любая программа на С++ течет из-за оптимизаций компилятора. Это просто не правда.
Да, ты можешь залезть в переменную и найти там какой-то мусор там где по идее этого не ждешь. И хорошо еще, если это будет просто какое-то предыдущее значение. Однако это больше говорит не о недостатках компилятора, а о недостатках программиста, который написал данный код. Ну и утечкой это не является.
4. Ну так к этому я и писал, что под специализированные задачи стоит выбирать подходящий язык. На Lisp я никогда не писал, и вряд ли буду, поэтому проще спросить - какие именно задачи? Арифметические операции? Работа со строками? С памятью?
5а-в. Ну это к пункту выше о типизации.
5г. В других языках программирования, стало быть UB не существует? UB это, конечно, стремная тема. Но это проблема не только С++.

Тоже пробовал плюсы. Писал на них какое-то время, хоть и много лет назад. Не могу с тобой согласиться относительно религии. Плюсы достаточно требовательны как к скиллам программиста, так и к навыкам владения самим языком (те самые UB), делает ли это их неприменимыми в текущих реалиях? Я считаю, что нет. Почему так считаю? Я описал в предыдущем комментарии.

Еще раз. Посыл мой в том, что язык выбирается под задачу. Если для какой-то задачи, к примеру, Lisp подойдет сильно лучше и даст ощутимый буст производительности, то стоит выбрать именно его.

Стал ли плох nginx от того, что написан на С, а не на Lisp? Вопрос риторический.

Ответить
Развернуть ветку
Здешний микроскоп
Так то у Питона некоторые библиотеки на Фортране написаны и ничего.

Оно не удивительно, так как Питон написан на Си и «дружит» с теми же языками, что и Си. А в Си, ровно как и в С++, можно запустить код Фортрана. Пусть и с некоторыми нюансами.

Ответить
Развернуть ветку
Иван Чернов

Да я и не удивляюсь.

Просто за Forth обидно (но на самом деле поделом: если язык не популярен - значит под него нету нормальной документации)

Ответить
Развернуть ветку
Мана Банана

ООП, как я где-то читал, строит примерно такую же логику как и в работе живой клетки. Мне когда-то это показалось правдой.

Ответить
Развернуть ветку
Danil Tsyban

А как же знаменитый язык Ершова)

Ответить
Развернуть ветку
SLOW.DOWN

Очередной замечательный материал.

Ответить
Развернуть ветку
Читать все 30 комментариев
null