Эта статья — о мертвых или почти мертвых языках, которые оставили важный след в истории программирования. Это не исчерпывающий список, но он помогает понять, как современные языки программирования связаны со своими прародителями.
Примечание: Это адаптированный перевод статьи 10 (MOSTLY DEAD) INFLUENTIAL PROGRAMMING LANGUAGES Гилеля Уэйна, инженера и консультанта. Повествование ведётся от лица автора оригинала.
Недавно я прочитал спорную статью «20 самых важных языков программирования в истории». Ее автор называл GO более значимым, чем ALGOL, Smalltalk или ML, но даже не упомянул Pascal, поскольку счел его «почти мертвым». Да, Pascal почти мертв, но такой подход явно противоречит понятию «наиболее значимый» с точки зрения истории.
На всякий случай предупреждаю — вероятно, в статье допущены миллиарды ошибок — но если вы делаете обзор 60-летней истории вычислительной техники, допустить ошибку не так уж сложно.
Содержание
Методология
Если мы знаем, что некий язык А первым ввел функцию В, это еще не означает, что А повлиял на В. Например, Absys, возможно, был первым логическим языком программирования, но основной логического программирования считается Prolog, разработанный независимо от него.
Есть только один достоверный способ узнать о связи между языками или их функциями — цитирование.
- Б цитирует А в своем справочном руководстве
- Б цитирует статью, в которой цитируется А
- Автор Б говорит, что «на нас повлиял А»
Иногда в руководстве по языку А упоминается статья о языке Б, в которой говорится, что Б заимствовал идеи из В. В этом случае мы понимаем, что В повлиял на А. Тут работает золотое правило научных исследований — чем больше источников, тем лучше. А чтобы понять, с чего начать, я использовал эвристику.
Один из эффективных методов эвристики — поиск по родственным языкам программирования. Крайне редко бывает так, что разные языки вне зависимости друг от друга создают одинаковый синтаксис. Например, не обязательно читать историю дизайнерских решений Юкихиро Мацумото, чтобы понять, что на Ruby повлиял Smalltalk — оба языка фильтруют список с помощью метода select. Это не исчерпывающее доказательство — существует вероятность, что Мацумото придумал этот синтаксический элемент самостоятельно. Но, возможно, и Ruby, и Smalltalk находились под влиянием общего предка. Это отправная точка, с нее можно начать поиск.
О методологии на этом все, пора переходить к сути.
Cobol
Разработчик: Codasyl, 1960.
Cobol возник благодаря тому, что научные и бизнес подразделения IBM использовали разные языки программирования. 70 лет назад высокоуровневые языки предназначались либо для инженерных вычислений, либо для управления данными. Если в научной среде стандартом был Fortran, среди бизнеса единства не было — компании использовали Comtran, Flow-Matic и другие.
В 1960 году Министерство обороны США организовало комитет по разработке единого универсального языка программирования для бизнес-задач — им стал Cobol.
Cobol был одним из четырех «материнских» языков, наряду с Algol, Fortran и LISP. Сегодня он почти забыт, но когда-то был самым популярным языком в мире и на нем по-прежнему работают многие устаревшие бизнес-системы.
Вклад: С точки зрения синтаксиса и семантики вклад Cobol в современные языки незначителен. Куда важнее его влияние на концепцию записи данных. В Fortran и Algol единственной структурой данных был статический массив. Cobol может читать структурированные файлы с иерархическими данными — он автоматически деструктурирует их в репрезентативные переменные. Это подход, который предшествовал современным способам записи данных.
Причина смерти: Здесь есть два фактора. Первый: Cobol не пересекается с другими PLT — и его синтаксис практически не пересекается с другими языками. Поэтому языки второго или третьего поколения, созданные на базе своих предков, почти не содержат в своем ДНК Cobol. Причина этого не столько во внутренних проблемах языка, сколько в пренебрежительном отношении к нему в академической среде. Codasyl создавала язык для решения конкретных бизнес-задач — поэтому научные круги почти не обращали на него внимание.
Второй фактор: Cobol был чрезвычайно сложным даже по меркам современных языков программирования. Это означает, что компиляторы Cobol требовали большей вычислительной мощности, чем могли предоставить ему микрокомпьютеры и миникомпьютеры.
Algol
Разработчик: Комитет Algol, 1960.
Примечание: Algol-58 выпущен двумя годами ранее, но от него быстро отказались. По этой причине я объединяю два этих языка. Разработчики Algol хотели создать хороший язык для исследования алгоритмов. Поэтому язык, по сути, был формализованным «псевдокодом».
Из четырех материнских языков Algol — самый «мертвый». LISP и Cobol до сих пор на слуху, поскольку на них работает множество устаревших систем, а Fortran иногда используется в научных целях. Но я встречал множество программистов, которые ни разу не слышали об Algol — при этом по степени влияния на современные языки с ним может сравнится разве что LISP.
Вклад: Вот несколько примеров: лексическая область видимости, структурное программирование, вложенные функции, языковые спецификации, семантика вызова по имени, грамматики БНФ, блочные комментарии. Следы Algol видны в каждом современном языке программирования.
Причина смерти: Algol разработан для изучения алгоритмов, а не для коммерческого применения. В спецификации не было определено никаких операций ввода-вывода, что делало невозможным его использование для решения практических задач. Конечно, вы могли бы написать расширение компилятора, но тогда стоило бы добавить и другие вещи. Именно это сделал группа из 70 разработчиков — в 1960 году они добавили в Algol возможности ввода-вывода и дополнительные структуры данных. Среди них, например, Jovial, Simula, CLU и CPL.
Именно эти расширения, а не оригинальный Algol, легли в основу более поздних языков программирования. Сейчас мы называем С «подобным Algol»-языком, но правильнее было бы говорить, что он похож на BCPL, который похож на CPL, а уже тот похож на Algol. Такими образом, язык похоронили собственные обновления.
Энтузиасты предпринимали попытки сделать Algol практичнее — в 1968 году группа разработчиков представила Algol-68, который радикально отличался от оригинала, но не имел того же влияния на IT. Стоит отметить, что принципы Algol получили продолжение в Pascal Никлауса Вирта.
APL
Разработчик: Кен Айверсон, 1962.
В оригинале APL — написанная от руки нотация для математических массивов, которую IBM взяла за основу для создания языка программирования. Язык использовался для обработки массивов — и позволял сравнительно короткими командами манипулировать большими блоками чисел.
Если вы раньше слышали об APL, то скорее всего знаете его как «этот странный язык символов». Один из самых известных фрагментов кода на нем — реализация игры «Жизнь»:
APL использует собственные символы, поэтому для него нужна специальная клавиатура. Выглядела она вот так:
Несмотря на это, язык стал популярным на мейнфреймах благодаря очень низким требованиям к памяти.
Вклад: Основная заслуга языка — инструменты для обработки массива. Раньше при добавлении двух списков разработчики использовали цикл или массив, APL позволил работать на весь массив сразу. Например, так:
В научных кругах появление языка стало большим событием. В прикладной математике большинство задач сводится к крупномасштабным операциям с большими матрицами. Когда появился инструмент для их быстрой обработки, математики смогли работать эффективнее.
APL лег в основу R, Numpy, Pandas, Matlab и других языков и библиотек для программирования. У него есть и прямые потомки — J, Dyalog, K, Q, — которые оказались менее успешными, хотя до сих пор используются в финансовом секторе.
Причина смерти: Очевидная проблема – клавиатура с символами, которые не используются больше нигде, кроме APL. Кеннет Айверсон исправил этот недостаток с помощью J, который использует диграфы вместо APL-символов: вместо ~: в нем можно писать ≠. Сделано это было только в 1990 году — слишком поздно для популяризации радикально другого стиля программирования.
Существует и более тонкая проблема — APL и J умеют работать только с однородными данными. Языки не позволяют хранить строки и числа в одной и той же структуре данных.
Дополнительная литература: Notation as a Tool of Thought.
Basic
Разработчик: Джон Кемени, 1964.
Basic — первый демократичный язык программирования. Он был создан как упрощенный аналог Fortran и предназначался для людей, которые не имели отношения к науке, но хотели научиться программировать.
Язык стал популярным в эпоху микрокомпьютеров — у первых устройств было слишком мало памяти для компиляции «настоящих» языков программирования. В то же время урезанному компилятору Basic требовалось всего 2 КБ. Basic стал лингва франка для начинающих программистов: если в 1970-х вы программировали дома, то, вероятно, писали именно на этом языке.
Вклад: Язык оказал сильное техническое влияние на интерпретацию вычислений — Basic был первым языком программирования с возможностью вычисления в реальном времени (Dartmouth Time Sharing System), опередив APL на год. Если APL был доступен только клиентам IBM, а Basic был доступен всем.
Кроме того, он имел большое социальное влияние: Basic сделал программирование доступным для неспециалистов — как для взрослых, так и для детей. Многие влиятельные программисты 80-х и 90-х годов учились программировать на Basic. Многие корпоративные программы были написаны на Basic — вероятно, его популярность ускорила упадок Cobol.
Также на Basic написаны инструменты, которые входят в пакет Office. Со временем Microsoft превратила Basic в Visual Basic — на нем же написаны OpenOffice и LibreOffice. Недавно он уступил место JavaScript и теперь его используют для создания макросов.
Причина смерти: Большинство людей, которые учились писать код на BASIC, считали его «второстепенным» языком. Его можно использовать, если вы учитесь в школе или вам нужно написать простую программу для малого бизнеса — но настоящие программисты использовали «настоящие» языки. Как только компьютеры с оперативной памятью более 16 КБ стали доступны на массовом рынке, Basic начал терять популярность, а Pascal и C – приобретать.
Какое-то время Basic продолжал существовать как популярный язык программирования для детей и подростков, но похоже, умер и в этой нише.
PL/I
Разработчики: IBM, 1966.
IBM работала с двумя языками программирования: для научных исследований в компании использовался Fortran, а для бизнес-приложений — Comtran. В ответ на конкуренцию со стороны Cobol, IBM попыталась создать собственный унифицированный язык, которым могли пользоваться и научные-, и бизнес-подразделения. В результате получилась некая смесь двух языков с большим количеством дополнительных функций.
Вклад: Авторы Algol-68 насмешливо назвали PL/I устаревшим языком. Но все возможности Algol-68 появились в PL/I раньше и работали лучше. В то время как Cobol первым научился читать структурированные данные, PL/I был первым языком, который реализовал их как тип.
В Cobol чтение имени пользователя даст вам две глобальные переменные — user и name. В PL/I вы получите одну переменную с полем user.name. PL/I был также первым высокоуровневым языком с указателями для прямого управления памятью, константами и перегрузкой функций.
Многие из идей, впервые использованные в этом языке, вошли в массовое программирование через С, который представлял собой смесь BCPL и PL/I. Например, С в точности копирует синтаксис комментариев PL/I.
Причина смерти: Все программисты, писавшие на Fortran, думали, что PL/I слишком похож на Cobol. Писавшие на Cobol считали, что он почти идентичен с Fortran. IBM пыталась заменить два устоявшихся языка гораздо более сложным. Другая проблема в том, что компания эксклюзивно выпускала компилятор для PL/I — и многим программистам не понравилось, что язык так сильно зависит от корпорации.
К тому времени, когда IBM смогла решить обе этих проблемы, мир уже перешел в эру микрокомпьютеров, где PL/I уступил BASIC.
Дополнительная литература: The Choice of PL/I
Simula 67
Разработчики: Оле Даль и Кристен Найгаард, 1967.
Simula 67 — расширенная версия Algol для математического моделирования. Первая версия языка (Simula I) имела специальный синтаксис моделирования — разработчикам показалось, что он получился слишком специализированным, а в симуляциях содержалось слишком много дублирований кода. Даль и Найгаард хотели создать более универсальный язык, возможности которого выходили бы за пределы моделирования.
Их идея заключалась в том, чтобы дать пользователям возможность определять новые типы объектов — классы — с разрешением полиморфного определения функций. После этого пользователи могли создать функции моделирования как частные случаи объектно-ориентированной системы.
Вклад: Хотя Simula 67 не был первым объектно-ориентированным языком программирования, он впервые использовал правильные объекты и заложил фундамент для языков-последователей этой методологии. Речь идет о разделении класса/объекта, создании подклассов, виртуальных методах и защищенных атрибутах.
Язык вдохновил подавляющее большинство академических исследований объектов в программировании, которые проводились после 1967 года. Создатели CLU и ML писали, что они вдохновлялись идеями Simula. Бьярн Страуструп защитил докторскую диссертацию по Simula и включил несколько идей из него в C ++.
Причина смерти: В своей докторской диссертации Страуструп утверждал, что Simula — слишком медленный язык для массового использования. «Желаю удачи в выполнении операции, если вы не на мейнфрейме», — комментировал он. Стоит отметить, что Smalltalk-80, который развивал те же идеи, и имел преимущество в 13 дополнительных лет закона Мура — и даже он считался слишком медленным. В Simula реализованы идеи, которые затем были интегрированы в быстрые и простые языки.
Дополнительная литература: Compiling SIMULA: a historical study of technological genesis
Pascal
Разработчик: Никлаус Вирт, 1970
Язык был создан на основе Algol-60, идеи которого, по мнению Вирта, не нашли отражения в Algol-68. Сначала Pascal стал популярен как «язык введения в Computer Science», но к 1980 году стал вторым по популярности в компьютерной сети Usenet. Вирт рассматривал все семейство языков — Pascal, Modula и Oberon — как единый языковой концепт.
Вклад: Pascal не привнес в программирование ни одной новой идеи — это был намеренно консервативный язык, целью которого было собрать лучшие идеи языков-предшественников в одном месте. Язык вывел синтаксис Algol настолько далеко за пределы академического круга, что символ :=, который изначально был характерен для Algol, стал считаться «стилем Pascal».
Хотя Pascal не был новаторским языком, Вирт впервые реализовал именно в нем принцип пошаговой детализации (stepwise refinement) в качестве средства для написания надежного программного обеспечения. Это привело к созданию Modulas, который популяризировал модули первого класса, а также Euclid — первого формального языка программирования для написания проверяемых программ.
Причина смерти: В отличие от других языков из этого списка, у Pascal не было серьезных структурных барьеров или сильных конкурентов. Он конкурировал с C, но долгое время оставался таким же популярным. Диалект Pascal, Delphi, до сих пор занимает довольно высокие позиции в индексах TIOBE и PYPA.
Дополнительная литература: Pascal and its Successors
CLU
Разработчик: Барбара Лисков, 1975
Лисков и ее группа хотели реализовать концепцию абстрактных типов данных — так появился CLU.
Вклад: CLU, вероятно, самый влиятельный язык, о котором почти никто не слышал. В CLU были итераторы, абстрактные типы данных, обобщенное программирование, проверяемые исключения и многое другое.
Сейчас терминология CLU почти не используется в других языках, поэтому не на 100% очевидно, что большинство из них происходят от него. Однако языковая спецификация каждого следующего десятилетия называлась core CLU — язык сделал многое для развития программирования.
Причина смерти: CLU создавался как демонстрационный язык: Лисков хотела, чтобы в сообществе оценили идеи, а не конкретный язык. Это и произошло: сегодня почти каждый язык чем-то обязан CLU.
После завершения работы над CLU Лисков с группой программистов создала его расширение — Argus, которое должно было продемонстрировать ее идеи по параллелизму. Он оказался менее влиятельным, но идеи Argus можно найти в некоторых современных языках.
Дополнительная литература: A History of CLU
ML
Разработчик: Робин Миллер, 1976.
Прежде чем создать ML, Милнер работал над LCF Prover — одним из первых помощников для доказательства теорем. LCF искал ошибки в доказательстве и проверял, правильно ли оно оформлено. Программист создал для него метаязык, основанный на надежных математических формализмах — строгих статических типах и функциях высшего порядка. Этот язык позже превратился в ML и был стандартизирован как SML.
Вклад: ML — один из самых старых «языков алгебраического программирования». Часто ему приписывают алгебраические типы данных, модули и типизированное функциональное программирование. Однако эти функций появилось не в ML — первая версия языка создавалась только для работы с LCF и не предназначалась для широкого использования. По мере развития ML программисты привносили в него идеи из других исследовательских языков.
В ML была реализована одна очень важная идея: вывод типов. Это первый язык со статической типизацией, в котором не нужно определять типы — компилятор делал это автоматически. Эта идея заложила основу для типизированного функционального программирования.
ML оказал большое влияние на современные средства доказательства теорем: «программные» языки для Isabelle, CVC3 и Coq основаны на ML. Кроме того, на языке было создано множество теорий типов, хотя позже Haskell приобрел большую популярность среди математиков.
Причина смерти: У ML было много интересных функций, но он был языком специального назначения для доказательства теорем. SML вышел в том же году, что и Haskell, который оказался более «чистым» примером языка типизированного функционального программирования.
Smalltalk
Разработчики: Алан Кей, 1972, 1976 и 1980 годы.
История Smalltalk выглядит как движение к цели: в Smalltalk-72 были заложены основы языка, в Smalltalk-76 реализовал концепцию объектно-ориентированного программирования, а Smalltalk-80 сделал ее популярной по всему миру.
В Smalltalk не было объектов в представлении того времени, но он был первым объектно-ориентированным языком. Разница в том, что в Simula были объекты в добавление к примитивам — числам и логическим значениям. В Smalltalk логические значения тоже были объектами.
Вклад: Многие думают, что Smalltalk — это настоящее объектно-ориентированное программирование, а Java и Python — нет. Но это не так: объектно-ориентированное программирование, как и любая другая парадигма, представляет собой огромную концепцию с множеством разных языков, которые в разной степени повлияли на нее. Однако именно Smalltalk был языком, который популяризировал эту концепцию.
Если открыть любую книгу по общей теории объектно-ориентированного программирования 80-х или начала 90-х годов, она будет построена на Smalltalk. В некоторых примеры будут описаны на C++ или других языках, но базой в этих книгах все равно остается Smalltalk.
Язык также популяризовал идею об объектах как об общих данных, заложив основу для высокоуровневого языка Cobra и модели акторов.
Причина смерти: Существует распространенное мнение, что Smalltalk проиграл, потому что его предпочли C++. Однако это неверно: у Smalltalk действительно были проблемы (сложность взаимодействия с другими инструментами и низкая производительность), но даже в 90-х годах многие программисты полагали, что он станет доминирующим языком программирования для решения бизнес-задач.
Но потом появилась Java.
Smalltalk был не единственной жертвой «Явапокалипсиса»: конкуренцию Java проиграли Eiffel, Ada95 и почти все остальные объектно-ориентированные языки. Действительно интересный вопрос не «почему умер Smalltalk», а «почему выжил C ++». Я думаю, что C ++ имел лучшее взаимодействие с C, и его было легче распространить на легаси-системы.
Заключение
Это лишь небольшая часть важных для программирования языков, которые уже мертвы. Alphard, Altran, Argus, Automath, BCPL, Comtran, CPL, Eiffel, Flow-Matic, Hope, Hypercard, ISWIM, Jovial, MacSyma, Mesa, Miranda, Multics Shell, Planner, SMP, Sketchpad внесли свой вклад в современный мир программирования.
Большинство влиятельных языков никогда не были популярными, но их ДНК проявляется спустя десятилетия после того, как они были забыты. Есть бесчисленное множество языков, идеи которых не были оценены, например, «Энциклопедия языков программирования» состоит из более чем 8 тыс. языков.
<!DOCTYPE html>
<html class="h-100" data-bs-theme="light" data-mantine-color-scheme="light" lang="ru" prefix="og: https://ogp.me/ns#">
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<link crossorigin="true" href="https://cdn.hexlet.io" rel="preconnect">
<link href="https://mc.yandex.ru" rel="preconnect">
<meta content="aa2vrdtq64dub8knuf83lwywit311w" name="facebook-domain-verification">
<link href="/favicon.ico" rel="icon" sizes="any">
<link href="/favicon.svg" rel="icon" type="image/svg+xml">
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
<link href="/manifest.webmanifest" rel="manifest">
<script>
//<![CDATA[
window.gon={};gon.ym_counter="25559621";gon.is_bot=true;gon.applications={};gon.current_user={"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26 20:21:16 UTC","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false};gon.token="2Pyf4uthR6Jmv-jWdjQR2ATlcdsK2-aJTB3qRMtmiWA3LVTVGR_qwtD8zE56O-GvxOxccQLsGCvx_XAQmWFuDg";gon.locale="ru";gon.language="ru";gon.theme="light";gon.rails_env="production";gon.mobile=false;gon.google={"analytics_key":"UA-1360700-51","optimize_key":"GTM-5QDVFPF"};gon.captcha={"google_v3_site_key":"6LenGbgZAAAAAM7HbrDbn5JlizCSzPcS767c9vaY","yandex_site_key":"ysc1_Vyob5ZPPUdPBsu0ykt8bVFdzsfpoVjQChLGl2b4g19647a89","verification_failed":null};gon.social_signin=false;gon.typoreporter_google_form_id="1FAIpQLSeibfGq-KvWQ2Fyru-zkFFRVTLBuzXAHAoEyN1p49FtDmNoNA";
//]]>
</script>
<meta charset="utf-8">
<title>10 самых влиятельных мертвых языков программирования</title>
<meta name="description" content="Эта статья — о мертвых или почти мертвых языках, которые оставили важный след в истории программирования. Это не исчерпывающий список, но он помогает понять, как современные языки программирования связаны со своими прародителями.">
<link rel="canonical" href="https://ru.hexlet.io/blog/posts/10-samyh-vliyatelnyh-mertvyh-yazykov-programmirovaniya">
<meta property="og:title" content="10 самых влиятельных мертвых языков программирования">
<meta property="og:description" content="Эта статья — о мертвых или почти мертвых языках, которые оставили важный след в истории программирования. Это не исчерпывающий список, но он помогает понять, как современные языки программирования связаны со своими прародителями. ">
<meta property="og:image" content="https://ru.hexlet.io/vite/assets/blog_post-7eTyeLLt.webp">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="zTENkcRGCCxg6rmC---rpUqpvUIIIuLtriBpXbS-FAAi4MamNjilTNapnRr34FvSiqCQ6AAVHE8TwPMJ5rnzbg" />
<script src="/vite/assets/inertia-DfXos102.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/preload-helper-BJ4cLWpC.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-BrRXra1y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ahoy-DrlRQ-1D.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/analytics-cb8xch9l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Surface-DL2bpZA-.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/extends-C-EagtpE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/inheritsLoose-BBd-DCVI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/objectWithoutPropertiesLoose-DRHXDhjp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/index.esm-DAqKOkZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Button-CGPUux8l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/CloseButton-D1euiPao.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Group-BX48WcuU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Loader-BQEY8g6v.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Modal-Cy3HByv7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/OptionalPortal-1Hza5P2w.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Stack-CtjJzfw4.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Textarea-Ck64llAy.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/DirectionProvider-Dc9zdUke.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/events-DJQOhap0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-reduced-motion-D2owz4wa.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-disclosure-zKtK5W1r.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-hotkeys-Cnc_Rwkb.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/random-id-DOQyszCZ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/exports-C_MrNx_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<link rel="stylesheet" href="/vite/assets/application-BqhCP46M.js" />
<script src="/vite/assets/application-Df9RExpe.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/autocomplete-VMNbxKGl.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/createPopper-C3aM9r1M.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/js.cookie-D1-O8zkX.js" as="script" crossorigin="anonymous"><link rel="stylesheet" href="/vite/assets/application-C8HjmMaq.css" media="screen" />
<script>
window.ym = function(){(ym.a=ym.a||[]).push(arguments)};
window.addEventListener('load', function() {
setTimeout(function() {
ym.l = 1*new Date();
ym(window.gon.ym_counter, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});
// Загружаем скрипт
var k = document.createElement('script');
k.async = 1;
k.src = 'https://mc.yandex.ru/metrika/tag.js';
document.head.appendChild(k);
ym(window.gon.ym_counter, 'getClientID', function(clientID) {
window.ymClientId = clientID;
});
}, 1500);
});
</script>
<!-- Google Tag Manager - deferred -->
<script>
// dataLayer stub сразу — пуши работают до загрузки скрипта
window.dataLayer = window.dataLayer || [];
// Сам скрипт — отложенно после load
window.addEventListener('load', function() {
setTimeout(function() {
dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var j = document.createElement('script');
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-WK88TH';
document.head.appendChild(j);
}, 1500);
});
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<noscript>
<div>
<img alt="" src="https://mc.yandex.ru/watch/25559621" style="position:absolute; left:-9999px;">
</div>
</noscript>
<header class="sticky-top bg-body">
<nav class="navbar navbar-expand-lg">
<div class="container-xxl">
<a class="navbar-brand" href="/"><img alt="Логотип Хекслета" height="24" src="https://ru.hexlet.io/vite/assets/logo_ru_light-BpiEA1LT.svg" width="96">
</a><button aria-controls="collapsable" aria-expanded="false" aria-label="Меню" class="navbar-toggler border-0 mb-0 mt-1" data-bs-target="#collapsable" data-bs-toggle="collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsable">
<ul class="navbar-nav mb-lg-0 mt-lg-1">
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
Все курсы
<span class="bi bi-chevron-down align-middle ms-1"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item d-flex py-2" href="/courses"><div class="fw-bold me-auto">Все что есть</div>
<div class="text-muted">117</div>
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные категории</b>
</li>
<li>
<a class="dropdown-item py-2" href="/courses_devops">Курсы по DevOps
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_data_analytics">Курсы по аналитике данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_programming">Курсы по программированию
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_testing">Курсы по тестированию
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные курсы</b>
</li>
<li>
<a class="dropdown-item py-2" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/go">Go-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/java">Java-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/python">Python-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/qa-auto-engineer-java">Автоматизатор тестирования на Java
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/data-analytics">Аналитик данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/frontend">Фронтенд-разработчик
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
О Хекслете
<span class="bi bi-chevron-down align-middle"></span>
</button>
<ul class="dropdown-menu bg-body">
<li>
<a class="dropdown-item py-2" href="/pages/about">О нас
</a></li>
<li>
<a class="dropdown-item py-2" href="/blog">Блог
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/hse-research" role="button">Результаты (Исследование)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://career.hexlet.io" role="button">Хекслет Карьера
</span></li>
<li>
<a class="dropdown-item py-2" href="/testimonials">Отзывы студентов
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://t.me/hexlet_help_bot" role="button">Поддержка (В ТГ)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/referal-program/?promo_creative=priglasite-druzei&promo_name=referal-program&promo_position=promo_position&promo_start=010724&promo_type=link" role="button">Реферальная программа
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/certificate" role="button">Подарочные сертификаты
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://hh.ru/employer/4307094" role="button">Вакансии
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://b2b.hexlet.io" data-target="_blank" role="button">Компаниям
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexly.ru/" data-target="_blank" role="button">Колледж
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexlyschool.ru/" data-target="_blank" role="button">Частная школа
</span></li>
</ul>
</li>
<li><a class="nav-link" href="/subscription/new">Подписка</a></li>
</ul>
<ul class="navbar-nav flex-lg-row align-items-lg-center gap-2 ms-auto">
<li>
<a class="nav-link" aria-label="Переключить тему" href="/theme/switch?new_theme=dark"><span aria-hidden="true" class="bi bi-moon"></span>
</a></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="/u/new" role="button"><span>Регистрация</span>
</span></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="https://ru.hexlet.io/session/new" role="button"><span>Вход</span>
</span></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="x-container-xxxl">
</div>
<main class="mb-6 min-vh-100 h-100">
<link rel="preload" as="image" href="/vite/assets/blog_post-7eTyeLLt.webp"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc2MCwicHVyIjoiYmxvYl9pZCJ9fQ==--9348098e4053d798b6f34bee4ef66947540261e4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Low%20code%20development-rafiki.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAxNiwicHVyIjoiYmxvYl9pZCJ9fQ==--eb66b9b5e26fafa32844ce0f4522c3ed84544040/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Hand%20coding-rafiki.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1NywicHVyIjoiYmxvYl9pZCJ9fQ==--bd2826bc88b4074fdf555368020c1fc0ac0705c1/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Low%20code%20development-rafiki.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1OCwicHVyIjoiYmxvYl9pZCJ9fQ==--023ea18f500b1c4c91617fa96bbc52df8395da39/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20engineer-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAyOCwicHVyIjoiYmxvYl9pZCJ9fQ==--ae9eed98663dd1201759d042a5ba7ca790866156/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programming-bro.png"/><link rel="preload" as="image" href="/vite/assets/development-BVihs_d5.png"/><div id="app" data-page="{"component":"web/blog/posts/show","props":{"errors":{},"locale":"ru","language":"ru","httpsHost":"https://ru.hexlet.io","host":"ru.hexlet.io","colorScheme":"light","auth":{"user":{"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26T20:21:16.816Z","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false}},"cloudflareTurnstileSiteKey":"0x4AAAAAAA15KmeFXzd2H0Xo","vkIdClientId":"51586979","yandexIdClientId":"88d071f1d3384eb4bd1deb37910235c7","formAuthToken":"mOsSyTEidA0sqpCsp_Z8b638Ed7HSiaAAwdhWC-lhsl3Otn-w1zZbZrptDSr-YwYbfU8dM992CK-5_sMfaJhpw","post":{"model_name":"BlogPost","category":{"id":4,"name":"Код","slug":"code","state":"published","created_at":"2016-08-23T13:33:44.258Z"},"creator":{"public_name":"Oleg Sabitov","id":356712,"is_tutor":false},"tags":[{"id":1119,"slug":"bez-steka","name":"Без стека"}],"id":1370,"title":"10 самых влиятельных мертвых языков программирования","slug":"10-samyh-vliyatelnyh-mertvyh-yazykov-programmirovaniya","state":"published","summary":"Эта статья — о мертвых или почти мертвых языках, которые оставили важный след в истории программирования. Это не исчерпывающий список, но он помогает понять, как современные языки программирования связаны со своими прародителями. \r\n\r\n","votes_count":10,"created_at":"2021-05-04T10:55:46.304Z","published_at":"2021-05-04T12:31:39.417Z","body":"**Эта статья — о мертвых или почти мертвых языках, которые оставили важный след в истории программирования. Это не исчерпывающий список, но он помогает понять, как современные языки программирования связаны со своими прародителями.**\n\n_Примечание: Это адаптированный перевод [статьи 10](https://hillelwayne.com/post/influential-dead-languages/) (MOSTLY DEAD) INFLUENTIAL PROGRAMMING LANGUAGES Гилеля Уэйна, инженера и консультанта. Повествование ведётся от лица автора оригинала._\n\nНедавно я прочитал спорную статью «20 самых важных языков программирования в истории». Ее автор называл GO более значимым, чем ALGOL, Smalltalk или ML, но даже не упомянул Pascal, поскольку счел его «почти мертвым». Да, Pascal почти мертв, но такой подход явно противоречит понятию «наиболее значимый» с точки зрения истории.\n\nНа всякий случай предупреждаю — вероятно, в статье допущены миллиарды ошибок — но если вы делаете обзор 60-летней истории вычислительной техники, допустить ошибку не так уж сложно.\n\n::programs\n\n## Содержание\n\n## Методология\n\nЕсли мы знаем, что некий язык А первым ввел функцию В, это еще не означает, что А повлиял на В. Например, [Absys](https://core.ac.uk/download/pdf/82537271.pdf), возможно, был первым логическим языком программирования, но основной логического программирования считается Prolog, разработанный независимо от него.\n\nЕсть только один достоверный способ узнать о связи между языками или их функциями — цитирование.\n\n- Б цитирует А в своем справочном руководстве\n- Б цитирует статью, в которой цитируется А \t\n- Автор Б говорит, что «на нас повлиял А»\n\nИногда в руководстве по языку А упоминается статья о языке Б, в которой говорится, что Б заимствовал идеи из В. В этом случае мы понимаем, что В повлиял на А. Тут работает золотое правило научных исследований — чем больше источников, тем лучше. А чтобы понять, с чего начать, я использовал эвристику.\n\nОдин из эффективных методов эвристики — поиск по родственным языкам программирования. Крайне редко бывает так, что разные языки вне зависимости друг от друга создают одинаковый синтаксис. Например, не обязательно читать историю дизайнерских решений [Юкихиро Мацумото](https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%86%D1%83%D0%BC%D0%BE%D1%82%D0%BE,_%D0%AE%D0%BA%D0%B8%D1%85%D0%B8%D1%80%D0%BE), чтобы понять, что на Ruby повлиял Smalltalk — оба языка фильтруют список с помощью метода select. Это не исчерпывающее доказательство — существует вероятность, что Мацумото придумал этот синтаксический элемент самостоятельно. Но, возможно, и Ruby, и Smalltalk находились под влиянием общего предка. Это отправная точка, с нее можно начать поиск. \n\nО методологии на этом все, пора переходить к сути.\n\n## Cobol\n\n**Разработчик:** Codasyl, 1960.\n\nCobol возник благодаря тому, что научные и бизнес подразделения IBM использовали разные языки программирования. 70 лет назад высокоуровневые языки предназначались либо для инженерных вычислений, либо для управления данными. Если в научной среде стандартом был Fortran, среди бизнеса единства не было — компании использовали Comtran, Flow-Matic и другие. \n\nВ 1960 году Министерство обороны США организовало комитет по разработке единого универсального языка программирования для бизнес-задач — им стал Cobol.\n\nCobol был одним из четырех «материнских» языков, наряду с Algol, Fortran и LISP. Сегодня он почти забыт, но когда-то был самым популярным языком в мире и на нем по-прежнему работают многие устаревшие бизнес-системы.\n\n**Вклад:** С точки зрения синтаксиса и семантики вклад Cobol в современные языки незначителен. Куда важнее его влияние на концепцию записи данных. В Fortran и Algol единственной структурой данных был статический массив. Cobol может читать структурированные файлы с иерархическими данными — он автоматически деструктурирует их в репрезентативные переменные. Это подход, который предшествовал современным способам записи данных.\n\n**Причина смерти:** Здесь есть два фактора. Первый: Cobol не пересекается с другими PLT — и его синтаксис практически не пересекается с другими языками. Поэтому языки второго или третьего поколения, созданные на базе своих предков, почти не содержат в своем ДНК Cobol. Причина этого не столько во внутренних проблемах языка, сколько в пренебрежительном отношении к нему в академической среде. Codasyl создавала язык для решения конкретных бизнес-задач — поэтому научные круги почти не обращали на него внимание.\n\nВторой фактор: Cobol был чрезвычайно сложным даже по меркам современных языков программирования. Это означает, что компиляторы Cobol требовали большей вычислительной мощности, чем могли предоставить ему микрокомпьютеры и миникомпьютеры.\n\n## Algol\n\n**Разработчик:** Комитет Algol, 1960.\n\nПримечание: Algol-58 выпущен двумя годами ранее, но от него быстро отказались. По этой причине я объединяю два этих языка. Разработчики Algol хотели создать хороший язык для исследования алгоритмов. Поэтому язык, по сути, был формализованным «псевдокодом».\n\nИз четырех материнских языков Algol — самый «мертвый». LISP и Cobol до сих пор на слуху, поскольку на них работает множество устаревших систем, а Fortran иногда используется в научных целях. Но я встречал множество программистов, которые ни разу не слышали об Algol — при этом по степени влияния на современные языки с ним может сравнится разве что LISP.\n\n**Вклад:** Вот несколько примеров: лексическая область видимости, структурное программирование, вложенные функции, языковые спецификации, семантика вызова по имени, [грамматики БНФ](https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D0%BC%D0%B0_%D0%91%D1%8D%D0%BA%D1%83%D1%81%D0%B0_%E2%80%94_%D0%9D%D0%B0%D1%83%D1%80%D0%B0), блочные комментарии. Следы Algol видны в каждом современном языке программирования.\n\n**Причина смерти:** Algol разработан для изучения алгоритмов, а не для коммерческого применения. В спецификации не было определено никаких операций ввода-вывода, что делало невозможным его использование для решения практических задач. Конечно, вы могли бы написать расширение компилятора, но тогда стоило бы добавить и другие вещи. Именно это сделал группа из 70 разработчиков — в 1960 году они добавили в Algol возможности ввода-вывода и дополнительные структуры данных. Среди них, например, Jovial, Simula, CLU и CPL.\n\nИменно эти расширения, а не оригинальный Algol, легли в основу более поздних языков программирования. Сейчас мы называем С «подобным Algol»-языком, но правильнее было бы говорить, что он похож на BCPL, который похож на CPL, а уже тот похож на Algol. Такими образом, язык похоронили собственные обновления.\n\nЭнтузиасты предпринимали попытки сделать Algol практичнее — в 1968 году группа разработчиков представила Algol-68, который радикально отличался от оригинала, но не имел того же влияния на IT. Стоит отметить, что принципы Algol получили продолжение в Pascal Никлауса Вирта.\n\n## APL\n\n**Разработчик:** Кен Айверсон, 1962.\n\nВ оригинале APL — написанная от руки нотация для математических массивов, которую IBM взяла за основу для создания языка программирования. Язык использовался для обработки массивов — и позволял сравнительно короткими командами манипулировать большими блоками чисел.\n\nЕсли вы раньше слышали об APL, то скорее всего знаете его как «этот странный язык символов». Один из самых известных фрагментов кода на нем — реализация [игры «Жизнь»](https://ru.wikipedia.org/wiki/%D0%98%D0%B3%D1%80%D0%B0_%C2%AB%D0%96%D0%B8%D0%B7%D0%BD%D1%8C%C2%BB):\n\n\n\nAPL использует собственные символы, поэтому для него нужна специальная клавиатура. Выглядела она вот так:\n\n\n\nНесмотря на это, язык стал популярным на мейнфреймах благодаря очень низким требованиям к памяти.\n\n**Вклад:** Основная заслуга языка — инструменты для обработки массива. Раньше при добавлении двух списков разработчики использовали цикл или массив, APL позволил работать на весь массив сразу. Например, так:\n\n \n\nВ научных кругах появление языка стало большим событием. В прикладной математике большинство задач сводится к крупномасштабным операциям с большими матрицами. Когда появился инструмент для их быстрой обработки, математики смогли работать эффективнее.\n\nAPL лег в основу R, Numpy, Pandas, Matlab и других языков и библиотек для программирования. У него есть и прямые потомки — J, Dyalog, K, Q, — которые оказались менее успешными, хотя до сих пор используются в финансовом секторе. \n\n**Причина смерти:** Очевидная проблема – клавиатура с символами, которые не используются больше нигде, кроме APL. [Кеннет Айверсон](https://ru.wikipedia.org/wiki/%D0%90%D0%B9%D0%B2%D0%B5%D1%80%D1%81%D0%BE%D0%BD,_%D0%9A%D0%B5%D0%BD%D0%BD%D0%B5%D1%82) исправил этот недостаток с помощью J, который использует диграфы вместо APL-символов: вместо ~: в нем можно писать ≠. Сделано это было только в 1990 году — слишком поздно для популяризации радикально другого стиля программирования.\n\nСуществует и более тонкая проблема — APL и J умеют работать только с однородными данными. Языки не позволяют хранить строки и числа в одной и той же структуре данных.\n\n**Дополнительная литература:** [Notation as a Tool of Thought](https://www.eecg.utoronto.ca/~jzhu/csc326/readings/iverson.pdf).\n\n## Basic\n\n**Разработчик:** Джон Кемени, 1964.\n\nBasic — первый демократичный язык программирования. Он был создан как упрощенный аналог Fortran и предназначался для людей, которые не имели отношения к науке, но хотели научиться программировать.\n\nЯзык стал популярным в эпоху микрокомпьютеров — у первых устройств было слишком мало памяти для компиляции «настоящих» языков программирования. В то же время урезанному компилятору Basic требовалось всего 2 КБ. Basic стал лингва франка для начинающих программистов: если в 1970-х вы программировали дома, то, вероятно, писали именно на этом языке.\n\n\n\n**Вклад:** Язык оказал сильное техническое влияние на интерпретацию вычислений — Basic был первым языком программирования с возможностью вычисления в реальном времени ([Dartmouth Time Sharing System](https://en.wikipedia.org/wiki/Dartmouth_Time_Sharing_System)), опередив APL на год. Если APL был доступен только клиентам IBM, а Basic был доступен всем.\n\nКроме того, он имел большое социальное влияние: Basic сделал программирование доступным для неспециалистов — как для взрослых, так и для детей. Многие влиятельные программисты 80-х и 90-х годов учились программировать на Basic. Многие корпоративные программы были написаны на Basic — вероятно, его популярность ускорила упадок Cobol.\n\nТакже на Basic написаны инструменты, которые входят в пакет Office. Со временем Microsoft превратила Basic в Visual Basic — на нем же написаны OpenOffice и LibreOffice. Недавно он уступил место JavaScript и теперь его используют для создания макросов.\n\n**Причина смерти:** Большинство людей, которые учились писать код на BASIC, считали его «второстепенным» языком. Его можно использовать, если вы учитесь в школе или вам нужно написать простую программу для малого бизнеса — но настоящие программисты использовали «настоящие» языки. Как только компьютеры с оперативной памятью более 16 КБ стали доступны на массовом рынке, Basic начал терять популярность, а Pascal и C – приобретать.\n\nКакое-то время Basic продолжал существовать как популярный язык программирования для детей и подростков, но похоже, умер и в этой нише.\n\n## PL/I\n\n**Разработчики:** IBM, 1966.\n\nIBM работала с двумя языками программирования: для научных исследований в компании использовался Fortran, а для бизнес-приложений — Comtran. В ответ на конкуренцию со стороны Cobol, IBM попыталась создать собственный унифицированный язык, которым могли пользоваться и научные-, и бизнес-подразделения. В результате получилась некая смесь двух языков с большим количеством дополнительных функций.\n\n**Вклад:** Авторы Algol-68 насмешливо назвали PL/I устаревшим языком. Но все возможности Algol-68 появились в PL/I раньше и работали лучше. В то время как Cobol первым научился читать структурированные данные, PL/I был первым языком, который реализовал их как тип. \n\nВ Cobol чтение имени пользователя даст вам две глобальные переменные — user и name. В PL/I вы получите одну переменную с полем user.name. PL/I был также первым высокоуровневым языком с указателями для прямого управления памятью, константами и перегрузкой функций.\n\nМногие из идей, впервые использованные в этом языке, вошли в массовое программирование через С, который представлял собой смесь BCPL и PL/I. Например, С в точности копирует синтаксис комментариев PL/I.\n\n**Причина смерти:** Все программисты, писавшие на Fortran, думали, что PL/I слишком похож на Cobol. Писавшие на Cobol считали, что он почти идентичен с Fortran. IBM пыталась заменить два устоявшихся языка гораздо более сложным. Другая проблема в том, что компания эксклюзивно выпускала компилятор для PL/I — и многим программистам не понравилось, что язык так сильно зависит от корпорации.\n\nК тому времени, когда IBM смогла решить обе этих проблемы, мир уже перешел в эру микрокомпьютеров, где PL/I уступил BASIC.\n\n**Дополнительная литература:** [The Choice of PL/I](https://multicians.org/pl1.html)\n\n## Simula 67\n\n**Разработчики:** Оле Даль и Кристен Найгаард, 1967.\n\nSimula 67 — расширенная версия Algol для математического моделирования. Первая версия языка (Simula I) имела специальный синтаксис моделирования — разработчикам показалось, что он получился слишком специализированным, а в симуляциях содержалось слишком много дублирований кода. Даль и Найгаард хотели создать более универсальный язык, возможности которого выходили бы за пределы моделирования. \n\nИх идея заключалась в том, чтобы дать пользователям возможность определять новые типы объектов — классы — с разрешением полиморфного определения функций. После этого пользователи могли создать функции моделирования как частные случаи объектно-ориентированной системы. \n\n**Вклад:** Хотя Simula 67 не был первым объектно-ориентированным языком программирования, он впервые использовал правильные объекты и заложил фундамент для языков-последователей этой методологии. Речь идет о разделении класса/объекта, создании подклассов, виртуальных методах и защищенных атрибутах. \n\nЯзык вдохновил подавляющее большинство академических исследований объектов в программировании, которые проводились после 1967 года. Создатели CLU и ML писали, что они вдохновлялись идеями Simula. Бьярн Страуструп защитил докторскую диссертацию по Simula и включил несколько идей из него в C ++.\n\n**Причина смерти:** В своей докторской диссертации Страуструп утверждал, что Simula — слишком медленный язык для массового использования. «Желаю удачи в выполнении операции, если вы не на мейнфрейме», — комментировал он. Стоит отметить, что Smalltalk-80, который развивал те же идеи, и имел преимущество в 13 дополнительных лет закона Мура — и даже он считался слишком медленным. В Simula реализованы идеи, которые затем были интегрированы в быстрые и простые языки.\n\n**Дополнительная литература:** [Compiling SIMULA: a historical study of technological genesis](https://www.idi.ntnu.no/grupper/su/publ/simula/holmevik-simula-ieeeannals94.pdf)\n\n## Pascal\n\n**Разработчик:** Никлаус Вирт, 1970\n\nЯзык был создан на основе Algol-60, идеи которого, по мнению Вирта, не нашли отражения в Algol-68. Сначала Pascal стал популярен как «язык введения в Computer Science», но к 1980 году стал вторым по популярности в компьютерной сети Usenet. Вирт рассматривал все семейство языков — Pascal, Modula и Oberon — как единый языковой концепт.\n\n**Вклад:** Pascal не привнес в программирование ни одной новой идеи — это был намеренно консервативный язык, целью которого было собрать лучшие идеи языков-предшественников в одном месте. Язык вывел синтаксис Algol настолько далеко за пределы академического круга, что символ :=, который изначально был характерен для Algol, стал считаться «стилем Pascal».\n\nХотя Pascal не был новаторским языком, Вирт впервые реализовал именно в нем принцип пошаговой детализации (stepwise refinement) в качестве средства для написания надежного программного обеспечения. Это привело к созданию Modulas, который популяризировал модули первого класса, а также Euclid — первого формального языка программирования для написания проверяемых программ.\n\n**Причина смерти:** В отличие от других языков из этого списка, у Pascal не было серьезных структурных барьеров или сильных конкурентов. Он конкурировал с C, но долгое время оставался таким же популярным. Диалект Pascal, Delphi, до сих пор занимает довольно высокие позиции в индексах TIOBE и PYPA. \n\n**Дополнительная литература:** [Pascal and its Successors](https://www.swissdelphicenter.ch/en/niklauswirth.php) \n\n## CLU\n\n**Разработчик:** Барбара Лисков, 1975\n\nЛисков и ее группа хотели реализовать концепцию абстрактных типов данных — так появился CLU.\n\n**Вклад:** CLU, вероятно, самый влиятельный язык, о котором почти никто не слышал. В CLU были итераторы, абстрактные типы данных, обобщенное программирование, проверяемые исключения и многое другое.\n\nСейчас терминология CLU почти не используется в других языках, поэтому не на 100% очевидно, что большинство из них происходят от него. Однако языковая спецификация каждого следующего десятилетия называлась core CLU — язык сделал многое для развития программирования.\n\n**Причина смерти:** CLU создавался как демонстрационный язык: Лисков хотела, чтобы в сообществе оценили идеи, а не конкретный язык. Это и произошло: сегодня почти каждый язык чем-то обязан CLU. \n\nПосле завершения работы над CLU Лисков с группой программистов создала его расширение — Argus, которое должно было продемонстрировать ее идеи по параллелизму. Он оказался менее влиятельным, но идеи Argus можно найти в некоторых современных языках.\n\n**Дополнительная литература:** [A History of CLU](https://web.archive.org/web/20030917041834/http://www.lcs.mit.edu/publications/pubs/pdf/MIT-LCS-TR-561.pdf)\n\n## ML\n\n**Разработчик:** Робин Миллер, 1976.\n\nПрежде чем создать ML, Милнер работал над LCF Prover — одним из первых помощников для доказательства теорем. LCF искал ошибки в доказательстве и проверял, правильно ли оно оформлено. Программист создал для него метаязык, основанный на надежных математических формализмах — строгих статических типах и функциях высшего порядка. Этот язык позже превратился в ML и был стандартизирован как SML.\n\n**Вклад:** ML — один из самых старых «языков алгебраического программирования». Часто ему приписывают алгебраические типы данных, модули и типизированное функциональное программирование. Однако эти функций появилось не в ML — первая версия языка создавалась только для работы с LCF и не предназначалась для широкого использования. По мере развития ML программисты привносили в него идеи из других исследовательских языков. \n\nВ ML была реализована одна очень важная идея: вывод типов. Это первый язык со статической типизацией, в котором не нужно определять типы — компилятор делал это автоматически. Эта идея заложила основу для типизированного функционального программирования. \n\nML оказал большое влияние на современные средства доказательства теорем: «программные» языки для Isabelle, CVC3 и Coq основаны на ML. Кроме того, на языке было создано множество [теорий типов](https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D1%82%D0%B8%D0%BF%D0%BE%D0%B2), хотя позже [Haskell](https://ru.hexlet.io/blog/posts/haskell-yazyk-pozvolyayuschiy-glubzhe-ponyat-programmirovanie-kak-on-ustroen-i-pochemu-ego-vybirayut-razrabotchiki?promo_name=blog&promo_position=article-body&promo_type=link) приобрел большую популярность среди математиков.\n\n**Причина смерти:** У ML было много интересных функций, но он был языком специального назначения для доказательства теорем. SML вышел в том же году, что и Haskell, который оказался более «чистым» примером языка типизированного функционального программирования.\n\n## Smalltalk\n\n**Разработчики:** Алан Кей, 1972, 1976 и 1980 годы. \n\nИстория Smalltalk выглядит как движение к цели: в Smalltalk-72 были заложены основы языка, в Smalltalk-76 реализовал концепцию объектно-ориентированного программирования, а Smalltalk-80 сделал ее популярной по всему миру.\n\nВ Smalltalk не было объектов в представлении того времени, но он был первым объектно-ориентированным языком. Разница в том, что в Simula были объекты в добавление к примитивам — числам и логическим значениям. В Smalltalk логические значения тоже были объектами. \n\n**Вклад:** Многие думают, что Smalltalk — это настоящее объектно-ориентированное программирование, а Java и Python — нет. Но это не так: объектно-ориентированное программирование, как и любая другая парадигма, представляет собой огромную концепцию с множеством разных языков, которые в разной степени повлияли на нее. Однако именно Smalltalk был языком, который популяризировал эту концепцию.\n\nЕсли открыть любую книгу по общей теории объектно-ориентированного программирования 80-х или начала 90-х годов, она будет построена на Smalltalk. В некоторых примеры будут описаны на C++ или других языках, но базой в этих книгах все равно остается Smalltalk.\n\nЯзык также популяризовал идею об объектах как об общих данных, заложив основу для высокоуровневого языка Cobra и [модели акторов](https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2#:~:text=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C%20%D0%B0%CC%81%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2%20%E2%80%94%20%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85,%D1%81%D1%87%D0%B8%D1%82%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F%20%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D0%BE%D0%BC%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F.).\n\n**Причина смерти:** Существует распространенное мнение, что Smalltalk проиграл, потому что его предпочли C++. Однако это неверно: у Smalltalk действительно были проблемы (сложность взаимодействия с другими инструментами и низкая производительность), но даже в 90-х годах многие программисты полагали, что он станет доминирующим языком программирования для решения бизнес-задач. \n\nНо потом появилась Java.\n\n \n\nSmalltalk был не единственной жертвой «Явапокалипсиса»: конкуренцию Java проиграли Eiffel, Ada95 и почти все остальные объектно-ориентированные языки. Действительно интересный вопрос не «почему умер Smalltalk», а «почему выжил C ++». Я думаю, что C ++ имел лучшее взаимодействие с C, и его было легче распространить на легаси-системы.\n\n::posts\n\n## Заключение\n\nЭто лишь небольшая часть важных для программирования языков, которые уже мертвы. Alphard, Altran, Argus, Automath, BCPL, Comtran, CPL, Eiffel, Flow-Matic, Hope, Hypercard, ISWIM, Jovial, MacSyma, Mesa, Miranda, Multics Shell, Planner, SMP, Sketchpad внесли свой вклад в современный мир программирования. \n\nБольшинство влиятельных языков никогда не были популярными, но их ДНК проявляется спустя десятилетия после того, как они были забыты. Есть бесчисленное множество языков, идеи которых не были оценены, например, «Энциклопедия языков программирования» состоит из более чем 8 тыс. языков.\n","reading_time":11,"url":"https://ru.hexlet.io/blog/posts/10-samyh-vliyatelnyh-mertvyh-yazykov-programmirovaniya","cover_thumb_variant":null,"cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp","cover_main_variant":"/vite/assets/blog_post-7eTyeLLt.webp","related_stacks_count":5},"relatedPosts":[{"model_name":"BlogPost","id":926,"title":"Библиотека React: особенности, перспективы, ситуация на рынке труда","slug":"biblioteka-react-review-article","summary":"В объявлениях о поиске программистов часто встречается требование уметь работать с React. Иногда работодатели ожидают знания React не только от фронтендеров, но и от бэкенд-разработчиков. Почему эта библиотека настолько популярная, стоит ли изучать её сегодня, каковы её перспективы по мнению опытных программистов? Ответы на эти и другие вопросы читайте в обзорной статье.","created_at":"2020-07-08T15:15:00.191Z","published_at":"2024-02-29T07:46:44.876Z","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTYyOCwicHVyIjoiYmxvYl9pZCJ9fQ==--6bac7610f325471938a0e33f58eaa4c52527d66f/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%87%D1%82%D0%BE%D1%82%D0%B0%D0%BA%D0%BE%D0%B5react-01.png"},{"model_name":"BlogPost","id":416,"title":"Язык программирования JavaScript: где его используют и почему он популярен","slug":"stoit-li-uchit-javascript-perspektivy-situatsiya-na-rynke-truda-mneniya-ekspertov","summary":"Рассказываем, что это за язык программирования — JavaScript, где его используют, насколько он популярен и с чего начать изучение JavaScript.","created_at":"2019-07-26T08:17:06.287Z","published_at":"2023-10-04T08:41:58.734Z","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMywicHVyIjoiYmxvYl9pZCJ9fQ==--aa69869c906a992728ba7c26886fa1b715024424/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%8F%D0%B7%D1%8B%D0%BA%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8Fjavascript-01.png"},{"model_name":"BlogPost","id":480,"title":"Все про Node.js: зачем писать бэкенд на JavaScript и сколько за это платят","slug":"zachem-izuchat-node-js-ili-o-perspektivah-bekenda-na-javascript","summary":"Рассказываем, как устроен бэкенд на JavaScript, стоит ли изучать Node.js, когда есть PHP и Python, какое будущее у этой технологии и сколько платят программистам на Node.js.","created_at":"2019-09-27T08:33:36.150Z","published_at":"2023-07-28T13:31:55.753Z","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTY4MywicHVyIjoiYmxvYl9pZCJ9fQ==--8e5dd13a34bb6d61f1c0db87a25e6e64d0e237fb/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/node%20_new-01.png"}],"category":{"id":4,"name":"Код","slug":"code","state":"published","created_at":"2016-08-23T13:33:44.258Z"},"mainStackCategory":{"id":12,"name":"Курсы по JavaScript","slug":"javascript","short_name":"JavaScript","order":71,"state":"published","category_slug":"courses_javascript"},"categories":[{"id":6,"name":"Мотивация","slug":"motivation","state":"published","created_at":"2016-10-06T18:31:38.903Z"},{"id":3,"name":"Истории успеха","slug":"success","state":"published","created_at":"2016-07-30T12:57:18.308Z"},{"id":14,"name":"Дневник студента","slug":"student-diary","state":"published","created_at":"2019-02-25T13:27:09.471Z"},{"id":4,"name":"Код","slug":"code","state":"published","created_at":"2016-08-23T13:33:44.258Z"},{"id":12,"name":"Карьера","slug":"career","state":"published","created_at":"2017-07-21T15:42:21.481Z"}],"relatedLandings":[{"stack":{"id":20,"slug":"js-sicp","title":"СИКП на JS","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4050,"duration_in_months":1},"id":28,"slug":"js-sicp","title":"СИКП на JS","subtitle":"Навык понимать программы на фундаментальном уровне, уверенно проходить собеседования и решать сложные задачи","subtitle_for_lists":"Навык фундаментального программирования","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"js-sicp","price_text":"от 3 900 ₽","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc2MCwicHVyIjoiYmxvYl9pZCJ9fQ==--9348098e4053d798b6f34bee4ef66947540261e4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Low%20code%20development-rafiki.png"},{"stack":{"id":36,"slug":"java-sicp","title":"СИКП на Java","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4100,"duration_in_months":1},"id":60,"slug":"java-sicp","title":"СИКП на Java","subtitle":"Навык понимать программы на фундаментальном уровне, уверенно проходить собеседования и решать сложные задачи","subtitle_for_lists":"Изучите фундаментальные принципы программирования на Java","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"java-sicp","price_text":"от 3 900 ₽","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAxNiwicHVyIjoiYmxvYl9pZCJ9fQ==--eb66b9b5e26fafa32844ce0f4522c3ed84544040/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Hand%20coding-rafiki.png"},{"stack":{"id":35,"slug":"ruby-sicp","title":"СИКП на Ruby","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":null,"duration_in_months":1},"id":58,"slug":"ruby-sicp","title":"СИКП на Ruby","subtitle":"Навык понимания программ на фундаментальном уровне, помогающий уверенно проходить собеседования и увеличивать доход","subtitle_for_lists":"Изучите фундаментальные принципы программирования на Ruby ","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"ruby-sicp","price_text":"от 3 900 ₽","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1NywicHVyIjoiYmxvYl9pZCJ9fQ==--bd2826bc88b4074fdf555368020c1fc0ac0705c1/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Low%20code%20development-rafiki.png"},{"stack":{"id":37,"slug":"python-sicp","title":"СИКП на Python","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4150,"duration_in_months":1},"id":62,"slug":"python-sicp","title":"СИКП на Python","subtitle":"Навык понимать код на фундаментальном уровне, уверенно проходить собеседования и решать сложные задачи","subtitle_for_lists":"Изучите Python на глубоком уровне для решения сложных задач","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"python-sicp","price_text":"от 3 900 ₽","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1OCwicHVyIjoiYmxvYl9pZCJ9fQ==--023ea18f500b1c4c91617fa96bbc52df8395da39/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20engineer-bro.png"},{"stack":{"id":34,"slug":"algorithms","title":"Алгоритмы и структуры данных","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4000,"duration_in_months":2},"id":56,"slug":"algorithms","title":"Алгоритмы и структуры данных","subtitle":"Навык, который увеличит ваши шансы пройти алгоритмическое интервью в международные компании на 80%","subtitle_for_lists":"Алгоритмы для собеседований","locale":"ru","current":true,"duration_in_months_text":"2 месяца","stack_slug":"algorithms","price_text":"от 3 900 ₽","duration_text":"2 месяца","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAyOCwicHVyIjoiYmxvYl9pZCJ9fQ==--ae9eed98663dd1201759d042a5ba7ca790866156/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programming-bro.png"}]},"url":"/blog/posts/10-samyh-vliyatelnyh-mertvyh-yazykov-programmirovaniya","version":"8f286f6358a90a7bef2263b3a6edf5a90a94fa42","encryptHistory":false,"clearHistory":false}"><style data-mantine-styles="true">:root, :host{--mantine-font-family: Arial, sans-serif;--mantine-font-family-headings: Arial, sans-serif;--mantine-heading-font-weight: normal;--mantine-radius-default: 0rem;--mantine-primary-color-filled: var(--mantine-color-indigo-filled);--mantine-primary-color-filled-hover: var(--mantine-color-indigo-filled-hover);--mantine-primary-color-light: var(--mantine-color-indigo-light);--mantine-primary-color-light-hover: var(--mantine-color-indigo-light-hover);--mantine-primary-color-light-color: var(--mantine-color-indigo-light-color);--mantine-spacing-xxl: calc(4rem * var(--mantine-scale));--mantine-font-size-xs: 12px;--mantine-font-size-sm: 14px;--mantine-font-size-md: 16px;--mantine-font-size-lg: clamp(16.0000px, calc(15.2727px + 0.2273vw), 18.0000px);--mantine-font-size-xl: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-display-3: clamp(32.0000px, calc(26.1818px + 1.8182vw), 48.0000px);--mantine-font-size-display-2: clamp(36.0000px, calc(25.8182px + 3.1818vw), 64.0000px);--mantine-font-size-display-1: clamp(40.0000px, calc(25.4545px + 4.5455vw), 80.0000px);--mantine-font-size-h1: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-font-size-h2: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-font-size-h3: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-font-size-h4: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-font-size-h5: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-h6: 1rem;--mantine-primary-color-0: var(--mantine-color-indigo-0);--mantine-primary-color-1: var(--mantine-color-indigo-1);--mantine-primary-color-2: var(--mantine-color-indigo-2);--mantine-primary-color-3: var(--mantine-color-indigo-3);--mantine-primary-color-4: var(--mantine-color-indigo-4);--mantine-primary-color-5: var(--mantine-color-indigo-5);--mantine-primary-color-6: var(--mantine-color-indigo-6);--mantine-primary-color-7: var(--mantine-color-indigo-7);--mantine-primary-color-8: var(--mantine-color-indigo-8);--mantine-primary-color-9: var(--mantine-color-indigo-9);--mantine-color-red-0: #ffeaea;--mantine-color-red-1: #fed4d4;--mantine-color-red-2: #f4a7a8;--mantine-color-red-3: #ec7878;--mantine-color-red-4: #e55050;--mantine-color-red-5: #e03131;--mantine-color-red-6: #e02829;--mantine-color-red-7: #c71a1c;--mantine-color-red-8: #b21218;--mantine-color-red-9: #9c0411;--mantine-color-violet-0: #fce9ff;--mantine-color-violet-1: #f1cfff;--mantine-color-violet-2: #e09bff;--mantine-color-violet-3: #d16fff;--mantine-color-violet-4: #be37fe;--mantine-color-violet-5: #b51afe;--mantine-color-violet-6: #b009ff;--mantine-color-violet-7: #9b00e4;--mantine-color-violet-8: #8a00cc;--mantine-color-violet-9: #7800b3;--mantine-color-indigo-0: #edecff;--mantine-color-indigo-1: #d6d5fe;--mantine-color-indigo-2: #aaa9f4;--mantine-color-indigo-3: #7b79eb;--mantine-color-indigo-4: #5451e4;--mantine-color-indigo-5: #3b37e0;--mantine-color-indigo-6: #2d2adf;--mantine-color-indigo-7: #1f1ec7;--mantine-color-indigo-8: #1819b2;--mantine-color-indigo-9: #0c149e;--mantine-color-cyan-0: #dffdff;--mantine-color-cyan-1: #caf5ff;--mantine-color-cyan-2: #99e8ff;--mantine-color-cyan-3: #64daff;--mantine-color-cyan-4: #3ccffe;--mantine-color-cyan-5: #24c8fe;--mantine-color-cyan-6: #00c2ff;--mantine-color-cyan-7: #00ade4;--mantine-color-cyan-8: #009acd;--mantine-color-cyan-9: #0085b5;--mantine-color-green-0: #e9fdec;--mantine-color-green-1: #d7f6dc;--mantine-color-green-2: #b0eab9;--mantine-color-green-3: #86df94;--mantine-color-green-4: #62d574;--mantine-color-green-5: #4ccf5f;--mantine-color-green-6: #3fcc54;--mantine-color-green-7: #2fb344;--mantine-color-green-8: #25a03b;--mantine-color-green-9: #138a2e;--mantine-color-yellow-0: #fff7e2;--mantine-color-yellow-1: #ffeecd;--mantine-color-yellow-2: #ffdc9c;--mantine-color-yellow-3: #ffc966;--mantine-color-yellow-4: #feb93a;--mantine-color-yellow-5: #feae1e;--mantine-color-yellow-6: #ffa90f;--mantine-color-yellow-8: #ca8200;--mantine-color-yellow-9: #af7000;--mantine-h1-font-size: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-h1-font-weight: normal;--mantine-h2-font-size: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-h2-font-weight: normal;--mantine-h3-font-size: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-h3-font-weight: normal;--mantine-h4-font-size: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-h4-font-weight: normal;--mantine-h5-font-size: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-h5-font-weight: normal;--mantine-h6-font-size: 1rem;--mantine-h6-font-weight: normal;}
:root[data-mantine-color-scheme="dark"], :host([data-mantine-color-scheme="dark"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-dark-filled: var(--mantine-color-dark-5);--mantine-color-dark-filled-hover: var(--mantine-color-dark-6);--mantine-color-dark-light: rgba(105, 105, 105, 0.15);--mantine-color-dark-light-hover: rgba(105, 105, 105, 0.2);--mantine-color-dark-light-color: var(--mantine-color-dark-0);--mantine-color-dark-outline: var(--mantine-color-dark-1);--mantine-color-dark-outline-hover: rgba(184, 184, 184, 0.05);--mantine-color-gray-filled: var(--mantine-color-gray-5);--mantine-color-gray-filled-hover: var(--mantine-color-gray-6);--mantine-color-gray-light: rgba(222, 226, 230, 0.15);--mantine-color-gray-light-hover: rgba(222, 226, 230, 0.2);--mantine-color-gray-light-color: var(--mantine-color-gray-0);--mantine-color-gray-outline: var(--mantine-color-gray-1);--mantine-color-gray-outline-hover: rgba(241, 243, 245, 0.05);--mantine-color-red-filled: var(--mantine-color-red-5);--mantine-color-red-filled-hover: var(--mantine-color-red-6);--mantine-color-red-light: rgba(236, 120, 120, 0.15);--mantine-color-red-light-hover: rgba(236, 120, 120, 0.2);--mantine-color-red-light-color: var(--mantine-color-red-0);--mantine-color-red-outline: var(--mantine-color-red-1);--mantine-color-red-outline-hover: rgba(254, 212, 212, 0.05);--mantine-color-pink-filled: var(--mantine-color-pink-5);--mantine-color-pink-filled-hover: var(--mantine-color-pink-6);--mantine-color-pink-light: rgba(250, 162, 193, 0.15);--mantine-color-pink-light-hover: rgba(250, 162, 193, 0.2);--mantine-color-pink-light-color: var(--mantine-color-pink-0);--mantine-color-pink-outline: var(--mantine-color-pink-1);--mantine-color-pink-outline-hover: rgba(255, 222, 235, 0.05);--mantine-color-grape-filled: var(--mantine-color-grape-5);--mantine-color-grape-filled-hover: var(--mantine-color-grape-6);--mantine-color-grape-light: rgba(229, 153, 247, 0.15);--mantine-color-grape-light-hover: rgba(229, 153, 247, 0.2);--mantine-color-grape-light-color: var(--mantine-color-grape-0);--mantine-color-grape-outline: var(--mantine-color-grape-1);--mantine-color-grape-outline-hover: rgba(243, 217, 250, 0.05);--mantine-color-violet-filled: var(--mantine-color-violet-5);--mantine-color-violet-filled-hover: var(--mantine-color-violet-6);--mantine-color-violet-light: rgba(209, 111, 255, 0.15);--mantine-color-violet-light-hover: rgba(209, 111, 255, 0.2);--mantine-color-violet-light-color: var(--mantine-color-violet-0);--mantine-color-violet-outline: var(--mantine-color-violet-1);--mantine-color-violet-outline-hover: rgba(241, 207, 255, 0.05);--mantine-color-indigo-filled: var(--mantine-color-indigo-5);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-6);--mantine-color-indigo-light: rgba(123, 121, 235, 0.15);--mantine-color-indigo-light-hover: rgba(123, 121, 235, 0.2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-0);--mantine-color-indigo-outline: var(--mantine-color-indigo-1);--mantine-color-indigo-outline-hover: rgba(214, 213, 254, 0.05);--mantine-color-blue-filled: var(--mantine-color-blue-5);--mantine-color-blue-filled-hover: var(--mantine-color-blue-6);--mantine-color-blue-light: rgba(116, 192, 252, 0.15);--mantine-color-blue-light-hover: rgba(116, 192, 252, 0.2);--mantine-color-blue-light-color: var(--mantine-color-blue-0);--mantine-color-blue-outline: var(--mantine-color-blue-1);--mantine-color-blue-outline-hover: rgba(208, 235, 255, 0.05);--mantine-color-cyan-filled: var(--mantine-color-cyan-5);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-6);--mantine-color-cyan-light: rgba(100, 218, 255, 0.15);--mantine-color-cyan-light-hover: rgba(100, 218, 255, 0.2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-0);--mantine-color-cyan-outline: var(--mantine-color-cyan-1);--mantine-color-cyan-outline-hover: rgba(202, 245, 255, 0.05);--mantine-color-teal-filled: var(--mantine-color-teal-5);--mantine-color-teal-filled-hover: var(--mantine-color-teal-6);--mantine-color-teal-light: rgba(99, 230, 190, 0.15);--mantine-color-teal-light-hover: rgba(99, 230, 190, 0.2);--mantine-color-teal-light-color: var(--mantine-color-teal-0);--mantine-color-teal-outline: var(--mantine-color-teal-1);--mantine-color-teal-outline-hover: rgba(195, 250, 232, 0.05);--mantine-color-green-filled: var(--mantine-color-green-5);--mantine-color-green-filled-hover: var(--mantine-color-green-6);--mantine-color-green-light: rgba(134, 223, 148, 0.15);--mantine-color-green-light-hover: rgba(134, 223, 148, 0.2);--mantine-color-green-light-color: var(--mantine-color-green-0);--mantine-color-green-outline: var(--mantine-color-green-1);--mantine-color-green-outline-hover: rgba(215, 246, 220, 0.05);--mantine-color-lime-filled: var(--mantine-color-lime-5);--mantine-color-lime-filled-hover: var(--mantine-color-lime-6);--mantine-color-lime-light: rgba(192, 235, 117, 0.15);--mantine-color-lime-light-hover: rgba(192, 235, 117, 0.2);--mantine-color-lime-light-color: var(--mantine-color-lime-0);--mantine-color-lime-outline: var(--mantine-color-lime-1);--mantine-color-lime-outline-hover: rgba(233, 250, 200, 0.05);--mantine-color-yellow-filled: var(--mantine-color-yellow-5);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-6);--mantine-color-yellow-light: rgba(255, 201, 102, 0.15);--mantine-color-yellow-light-hover: rgba(255, 201, 102, 0.2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-0);--mantine-color-yellow-outline: var(--mantine-color-yellow-1);--mantine-color-yellow-outline-hover: rgba(255, 238, 205, 0.05);--mantine-color-orange-filled: var(--mantine-color-orange-5);--mantine-color-orange-filled-hover: var(--mantine-color-orange-6);--mantine-color-orange-light: rgba(255, 192, 120, 0.15);--mantine-color-orange-light-hover: rgba(255, 192, 120, 0.2);--mantine-color-orange-light-color: var(--mantine-color-orange-0);--mantine-color-orange-outline: var(--mantine-color-orange-1);--mantine-color-orange-outline-hover: rgba(255, 232, 204, 0.05);--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-9) 0%, var(--mantine-color-cyan-7) 100%);--app-color-surface: #2e2e2e;}
:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-red-light: rgba(224, 40, 41, 0.1);--mantine-color-red-light-hover: rgba(224, 40, 41, 0.12);--mantine-color-red-outline-hover: rgba(224, 40, 41, 0.05);--mantine-color-violet-light: rgba(176, 9, 255, 0.1);--mantine-color-violet-light-hover: rgba(176, 9, 255, 0.12);--mantine-color-violet-outline-hover: rgba(176, 9, 255, 0.05);--mantine-color-indigo-light: rgba(45, 42, 223, 0.1);--mantine-color-indigo-light-hover: rgba(45, 42, 223, 0.12);--mantine-color-indigo-outline-hover: rgba(45, 42, 223, 0.05);--mantine-color-cyan-light: rgba(0, 194, 255, 0.1);--mantine-color-cyan-light-hover: rgba(0, 194, 255, 0.12);--mantine-color-cyan-outline-hover: rgba(0, 194, 255, 0.05);--mantine-color-green-light: rgba(63, 204, 84, 0.1);--mantine-color-green-light-hover: rgba(63, 204, 84, 0.12);--mantine-color-green-outline-hover: rgba(63, 204, 84, 0.05);--mantine-color-yellow-light: rgba(255, 169, 15, 0.1);--mantine-color-yellow-light-hover: rgba(255, 169, 15, 0.12);--mantine-color-yellow-outline-hover: rgba(255, 169, 15, 0.05);--app-color-surface: #f1f3f5;--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-5) 100%);}</style><style data-mantine-styles="classes">@media (max-width: 35.99375em) {.mantine-visible-from-xs {display: none !important;}}@media (min-width: 36em) {.mantine-hidden-from-xs {display: none !important;}}@media (max-width: 47.99375em) {.mantine-visible-from-sm {display: none !important;}}@media (min-width: 48em) {.mantine-hidden-from-sm {display: none !important;}}@media (max-width: 61.99375em) {.mantine-visible-from-md {display: none !important;}}@media (min-width: 62em) {.mantine-hidden-from-md {display: none !important;}}@media (max-width: 74.99375em) {.mantine-visible-from-lg {display: none !important;}}@media (min-width: 75em) {.mantine-hidden-from-lg {display: none !important;}}@media (max-width: 87.99375em) {.mantine-visible-from-xl {display: none !important;}}@media (min-width: 88em) {.mantine-hidden-from-xl {display: none !important;}}</style><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","author":"Oleg Sabitov","name":"10 самых влиятельных мертвых языков программирования","datePublished":"2021-05-04T12:31:39.417Z","headline":"Эта статья — о мертвых или почти мертвых языках, которые оставили важный след в истории программирования. Это не исчерпывающий список, но он помогает понять, как современные языки программирования связаны со своими прародителями. \r\n\r\n","image":"/vite/assets/blog_post-7eTyeLLt.webp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":10}]}</script><div style="--container-size:var(--container-size-lg);margin-top:var(--mantine-spacing-xl);height:100%" class="m_7485cace mantine-Container-root" data-size="lg" data-strategy="block"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"position":1,"@type":"ListItem","item":{"@id":"/blog","name":"Блог Хекслета"}},{"position":2,"@type":"ListItem","item":{"@id":"/blog/categories/code","name":"Код"}},{"position":3,"@type":"ListItem","item":{"@id":"/blog/posts/10-samyh-vliyatelnyh-mertvyh-yazykov-programmirovaniya","name":"10 самых влиятельных мертвых языков программирования"}}]}</script><div style="margin-bottom:var(--mantine-spacing-xs)" class="m_8b3717df mantine-Breadcrumbs-root"><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/"><div style="color:inherit" class="m_4451eb3a mantine-Center-root"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-home-link "><path d="M20.085 11.085l-8.085 -8.085l-9 9h2v7a2 2 0 0 0 2 2h4.5"></path><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 1.807 1.143"></path><path d="M20 21a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M20 16a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M15 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M21 16l-5 3l5 2"></path></svg></div></a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/blog">Блог Хекслета</a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/blog/categories/code">Код</a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><p style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:var(--mantine-color-dimmed)" class="mantine-focus-auto m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root" data-size="sm">10 самых влиятельных мертвых языков программирования</p></div><style data-mantine-styles="inline">.__m__-_R_eub_{margin-bottom:var(--mantine-spacing-xs);}@media(min-width: 36em){.__m__-_R_eub_{margin-bottom:var(--mantine-spacing-xs);}}</style><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root __m__-_R_eub_"><style data-mantine-styles="inline">.__m__-_R_deub_{width:100%;}@media(min-width: 36em){.__m__-_R_deub_{width:70%;}}@media(min-width: 75em){.__m__-_R_deub_{width:75%;}}</style><div class="__m__-_R_deub_"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><h1 style="--title-fw:var(--mantine-h1-font-weight);--title-lh:var(--mantine-h1-line-height);--title-fz:var(--mantine-h1-font-size)" class="m_8a5d1357 mantine-Title-root" data-order="1">10 самых влиятельных мертвых языков программирования</h1></div></div></div><div style="position:absolute;top:calc(18.75rem * var(--mantine-scale))" class=""></div><style data-mantine-styles="inline">.__m__-_R_2iub_{--grid-gutter:var(--mantine-spacing-xl);}</style><div class="m_410352e9 mantine-Grid-root __m__-_R_2iub_"><div class="m_dee7bd2f mantine-Grid-inner"><style data-mantine-styles="inline">.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:100%;--col-max-width:100%;}@media(min-width: 48em){.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:83.33333333333334%;--col-max-width:83.33333333333334%;}}@media(min-width: 62em){.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:66.66666666666667%;--col-max-width:66.66666666666667%;}}</style><div class="m_96bdd299 mantine-Grid-col __m__-_R_dmiub_"><div style="--stack-gap:var(--mantine-spacing-md);--stack-align:stretch;--stack-justify:flex-start;margin-bottom:var(--mantine-spacing-xl)" class="m_6d731127 mantine-Stack-root"><div class=""><div style="--group-gap:var(--mantine-spacing-xs);--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-xl)" class="m_4081bf90 mantine-Group-root"><button style="--badge-height:var(--badge-height-sm);--badge-padding-x:var(--badge-padding-x-sm);--badge-fz:var(--badge-fz-sm);--badge-bg:var(--mantine-color-default);--badge-color:var(--mantine-color-default-color);--badge-bd:calc(0.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);cursor:pointer;color:inherit" class="m_347db0ec mantine-Badge-root" data-variant="default" data-size="sm" type="button" aria-label="Без стека"><span class="m_5add502a mantine-Badge-label">Без стека</span></button></div><div style="--group-gap:calc(0.625rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-sm);color:var(--mantine-color-gray-text)" class="m_4081bf90 mantine-Group-root"><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-inline-end:var(--mantine-spacing-lg)" class="m_4081bf90 mantine-Group-root">4 мая 2021 г.</div><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-clock "><path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0"></path><path d="M12 7v5l3 3"></path></svg></div>11 минут</div><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-thumb-up "><path d="M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3"></path></svg></div>10</div></div><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img style="--image-radius:var(--mantine-radius-md);--image-object-fit:cover;width:100%;height:100%" class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" alt="10 самых влиятельных мертвых языков программирования"/></div></div><div role="link" tabindex="0" style="cursor:pointer"><button style="display:block;width:100%" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Присоединяйтесь к нашему Telegram-сообществу"><div style="background-color:light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6))" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:auto;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-telegram "><path d="M15 10l-4 4l6 6l4 -16l-18 7l4 2l2 6l3 -4"></path></svg></div>Присоединяйтесь к нашему Telegram-сообществу</div></div></button></div><div style="margin-bottom:var(--mantine-spacing-xl)" class="m_d08caa0 mantine-Typography-root"><p><strong>Эта статья — о мертвых или почти мертвых языках, которые оставили важный след в истории программирования. Это не исчерпывающий список, но он помогает понять, как современные языки программирования связаны со своими прародителями.</strong></p>
<p><em>Примечание: Это адаптированный перевод <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://hillelwayne.com/post/influential-dead-languages/" rel="noopener noreferrer" target="_blank">статьи 10</a> (MOSTLY DEAD) INFLUENTIAL PROGRAMMING LANGUAGES Гилеля Уэйна, инженера и консультанта. Повествование ведётся от лица автора оригинала.</em></p>
<p>Недавно я прочитал спорную статью «20 самых важных языков программирования в истории». Ее автор называл GO более значимым, чем ALGOL, Smalltalk или ML, но даже не упомянул Pascal, поскольку счел его «почти мертвым». Да, Pascal почти мертв, но такой подход явно противоречит понятию «наиболее значимый» с точки зрения истории.</p>
<p>На всякий случай предупреждаю — вероятно, в статье допущены миллиарды ошибок — но если вы делаете обзор 60-летней истории вычислительной техники, допустить ошибку не так уж сложно.</p>
<style data-mantine-styles="inline">.__m__-_R_9derddmiub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:70%;}@media(min-width: 36em){.__m__-_R_9derddmiub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_9derddmiub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/js-sicp?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">СИКП на JS</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Навык фундаментального программирования</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc2MCwicHVyIjoiYmxvYl9pZCJ9fQ==--9348098e4053d798b6f34bee4ef66947540261e4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Low%20code%20development-rafiki.png" alt="СИКП на JS" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/java-sicp?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">СИКП на Java</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите фундаментальные принципы программирования на Java</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAxNiwicHVyIjoiYmxvYl9pZCJ9fQ==--eb66b9b5e26fafa32844ce0f4522c3ed84544040/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Hand%20coding-rafiki.png" alt="СИКП на Java" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/ruby-sicp?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">СИКП на Ruby</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите фундаментальные принципы программирования на Ruby </p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1NywicHVyIjoiYmxvYl9pZCJ9fQ==--bd2826bc88b4074fdf555368020c1fc0ac0705c1/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Low%20code%20development-rafiki.png" alt="СИКП на Ruby" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/python-sicp?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">СИКП на Python</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите Python на глубоком уровне для решения сложных задач</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1OCwicHVyIjoiYmxvYl9pZCJ9fQ==--023ea18f500b1c4c91617fa96bbc52df8395da39/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20engineer-bro.png" alt="СИКП на Python" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/algorithms?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">2 месяца</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Алгоритмы и структуры данных</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Алгоритмы для собеседований</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAyOCwicHVyIjoiYmxvYl9pZCJ9fQ==--ae9eed98663dd1201759d042a5ba7ca790866156/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programming-bro.png" alt="Алгоритмы и структуры данных" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md);font-size:var(--mantine-font-size-h3)" class="m_8a5d1357 mantine-Title-root" data-order="2" data-responsive="true">Каталог</h2><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Полный список доступных курсов по разным направлениям</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="/vite/assets/development-BVihs_d5.png" alt="Orientation"/></div></div></div></a></div></div></div></div></div>
<h2 id="heading-2-1">Содержание</h2>
<ul>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-2">Методология</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-3">Cobol</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-4">Algol</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-5">APL</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-6">Basic</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-7">PL/I</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-8">Simula 67</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-9">Pascal</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-10">CLU</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-11">ML</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-12">Smalltalk</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-13">Заключение</a></li>
</ul>
<h2 id="heading-2-2">Методология</h2>
<p>Если мы знаем, что некий язык А первым ввел функцию В, это еще не означает, что А повлиял на В. Например, <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://core.ac.uk/download/pdf/82537271.pdf" rel="noopener noreferrer" target="_blank">Absys</a>, возможно, был первым логическим языком программирования, но основной логического программирования считается Prolog, разработанный независимо от него.</p>
<p>Есть только один достоверный способ узнать о связи между языками или их функциями — цитирование.</p>
<ul>
<li>Б цитирует А в своем справочном руководстве</li>
<li>Б цитирует статью, в которой цитируется А</li>
<li>Автор Б говорит, что «на нас повлиял А»</li>
</ul>
<p>Иногда в руководстве по языку А упоминается статья о языке Б, в которой говорится, что Б заимствовал идеи из В. В этом случае мы понимаем, что В повлиял на А. Тут работает золотое правило научных исследований — чем больше источников, тем лучше. А чтобы понять, с чего начать, я использовал эвристику.</p>
<p>Один из эффективных методов эвристики — поиск по родственным языкам программирования. Крайне редко бывает так, что разные языки вне зависимости друг от друга создают одинаковый синтаксис. Например, не обязательно читать историю дизайнерских решений <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%86%D1%83%D0%BC%D0%BE%D1%82%D0%BE,_%D0%AE%D0%BA%D0%B8%D1%85%D0%B8%D1%80%D0%BE" rel="noopener noreferrer" target="_blank">Юкихиро Мацумото</a>, чтобы понять, что на Ruby повлиял Smalltalk — оба языка фильтруют список с помощью метода select. Это не исчерпывающее доказательство — существует вероятность, что Мацумото придумал этот синтаксический элемент самостоятельно. Но, возможно, и Ruby, и Smalltalk находились под влиянием общего предка. Это отправная точка, с нее можно начать поиск.</p>
<p>О методологии на этом все, пора переходить к сути.</p>
<h2 id="heading-2-3">Cobol</h2>
<p><strong>Разработчик:</strong> Codasyl, 1960.</p>
<p>Cobol возник благодаря тому, что научные и бизнес подразделения IBM использовали разные языки программирования. 70 лет назад высокоуровневые языки предназначались либо для инженерных вычислений, либо для управления данными. Если в научной среде стандартом был Fortran, среди бизнеса единства не было — компании использовали Comtran, Flow-Matic и другие.</p>
<p>В 1960 году Министерство обороны США организовало комитет по разработке единого универсального языка программирования для бизнес-задач — им стал Cobol.</p>
<p>Cobol был одним из четырех «материнских» языков, наряду с Algol, Fortran и LISP. Сегодня он почти забыт, но когда-то был самым популярным языком в мире и на нем по-прежнему работают многие устаревшие бизнес-системы.</p>
<p><strong>Вклад:</strong> С точки зрения синтаксиса и семантики вклад Cobol в современные языки незначителен. Куда важнее его влияние на концепцию записи данных. В Fortran и Algol единственной структурой данных был статический массив. Cobol может читать структурированные файлы с иерархическими данными — он автоматически деструктурирует их в репрезентативные переменные. Это подход, который предшествовал современным способам записи данных.</p>
<p><strong>Причина смерти:</strong> Здесь есть два фактора. Первый: Cobol не пересекается с другими PLT — и его синтаксис практически не пересекается с другими языками. Поэтому языки второго или третьего поколения, созданные на базе своих предков, почти не содержат в своем ДНК Cobol. Причина этого не столько во внутренних проблемах языка, сколько в пренебрежительном отношении к нему в академической среде. Codasyl создавала язык для решения конкретных бизнес-задач — поэтому научные круги почти не обращали на него внимание.</p>
<p>Второй фактор: Cobol был чрезвычайно сложным даже по меркам современных языков программирования. Это означает, что компиляторы Cobol требовали большей вычислительной мощности, чем могли предоставить ему микрокомпьютеры и миникомпьютеры.</p>
<h2 id="heading-2-4">Algol</h2>
<p><strong>Разработчик:</strong> Комитет Algol, 1960.</p>
<p>Примечание: Algol-58 выпущен двумя годами ранее, но от него быстро отказались. По этой причине я объединяю два этих языка. Разработчики Algol хотели создать хороший язык для исследования алгоритмов. Поэтому язык, по сути, был формализованным «псевдокодом».</p>
<p>Из четырех материнских языков Algol — самый «мертвый». LISP и Cobol до сих пор на слуху, поскольку на них работает множество устаревших систем, а Fortran иногда используется в научных целях. Но я встречал множество программистов, которые ни разу не слышали об Algol — при этом по степени влияния на современные языки с ним может сравнится разве что LISP.</p>
<p><strong>Вклад:</strong> Вот несколько примеров: лексическая область видимости, структурное программирование, вложенные функции, языковые спецификации, семантика вызова по имени, <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D0%BC%D0%B0_%D0%91%D1%8D%D0%BA%D1%83%D1%81%D0%B0_%E2%80%94_%D0%9D%D0%B0%D1%83%D1%80%D0%B0" rel="noopener noreferrer" target="_blank">грамматики БНФ</a>, блочные комментарии. Следы Algol видны в каждом современном языке программирования.</p>
<p><strong>Причина смерти:</strong> Algol разработан для изучения алгоритмов, а не для коммерческого применения. В спецификации не было определено никаких операций ввода-вывода, что делало невозможным его использование для решения практических задач. Конечно, вы могли бы написать расширение компилятора, но тогда стоило бы добавить и другие вещи. Именно это сделал группа из 70 разработчиков — в 1960 году они добавили в Algol возможности ввода-вывода и дополнительные структуры данных. Среди них, например, Jovial, Simula, CLU и CPL.</p>
<p>Именно эти расширения, а не оригинальный Algol, легли в основу более поздних языков программирования. Сейчас мы называем С «подобным Algol»-языком, но правильнее было бы говорить, что он похож на BCPL, который похож на CPL, а уже тот похож на Algol. Такими образом, язык похоронили собственные обновления.</p>
<p>Энтузиасты предпринимали попытки сделать Algol практичнее — в 1968 году группа разработчиков представила Algol-68, который радикально отличался от оригинала, но не имел того же влияния на IT. Стоит отметить, что принципы Algol получили продолжение в Pascal Никлауса Вирта.</p>
<h2 id="heading-2-5">APL</h2>
<p><strong>Разработчик:</strong> Кен Айверсон, 1962.</p>
<p>В оригинале APL — написанная от руки нотация для математических массивов, которую IBM взяла за основу для создания языка программирования. Язык использовался для обработки массивов — и позволял сравнительно короткими командами манипулировать большими блоками чисел.</p>
<p>Если вы раньше слышали об APL, то скорее всего знаете его как «этот странный язык символов». Один из самых известных фрагментов кода на нем — реализация <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.wikipedia.org/wiki/%D0%98%D0%B3%D1%80%D0%B0_%C2%AB%D0%96%D0%B8%D0%B7%D0%BD%D1%8C%C2%BB" rel="noopener noreferrer" target="_blank">игры «Жизнь»</a>:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://imgur.com/HH3AWvz.png" alt="" loading="lazy"/></p>
<p>APL использует собственные символы, поэтому для него нужна специальная клавиатура. Выглядела она вот так:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://imgur.com/rATpHqH.png" alt="" loading="lazy"/></p>
<p>Несмотря на это, язык стал популярным на мейнфреймах благодаря очень низким требованиям к памяти.</p>
<p><strong>Вклад:</strong> Основная заслуга языка — инструменты для обработки массива. Раньше при добавлении двух списков разработчики использовали цикл или массив, APL позволил работать на весь массив сразу. Например, так:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://imgur.com/POwkt2A.png" alt="" loading="lazy"/></p>
<p>В научных кругах появление языка стало большим событием. В прикладной математике большинство задач сводится к крупномасштабным операциям с большими матрицами. Когда появился инструмент для их быстрой обработки, математики смогли работать эффективнее.</p>
<p>APL лег в основу R, Numpy, Pandas, Matlab и других языков и библиотек для программирования. У него есть и прямые потомки — J, Dyalog, K, Q, — которые оказались менее успешными, хотя до сих пор используются в финансовом секторе.</p>
<p><strong>Причина смерти:</strong> Очевидная проблема – клавиатура с символами, которые не используются больше нигде, кроме APL. <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.wikipedia.org/wiki/%D0%90%D0%B9%D0%B2%D0%B5%D1%80%D1%81%D0%BE%D0%BD,_%D0%9A%D0%B5%D0%BD%D0%BD%D0%B5%D1%82" rel="noopener noreferrer" target="_blank">Кеннет Айверсон</a> исправил этот недостаток с помощью J, который использует диграфы вместо APL-символов: вместо ~: в нем можно писать ≠. Сделано это было только в 1990 году — слишком поздно для популяризации радикально другого стиля программирования.</p>
<p>Существует и более тонкая проблема — APL и J умеют работать только с однородными данными. Языки не позволяют хранить строки и числа в одной и той же структуре данных.</p>
<p><strong>Дополнительная литература:</strong> <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.eecg.utoronto.ca/~jzhu/csc326/readings/iverson.pdf" rel="noopener noreferrer" target="_blank">Notation as a Tool of Thought</a>.</p>
<h2 id="heading-2-6">Basic</h2>
<p><strong>Разработчик:</strong> Джон Кемени, 1964.</p>
<p>Basic — первый демократичный язык программирования. Он был создан как упрощенный аналог Fortran и предназначался для людей, которые не имели отношения к науке, но хотели научиться программировать.</p>
<p>Язык стал популярным в эпоху микрокомпьютеров — у первых устройств было слишком мало памяти для компиляции «настоящих» языков программирования. В то же время урезанному компилятору Basic требовалось всего 2 КБ. Basic стал лингва франка для начинающих программистов: если в 1970-х вы программировали дома, то, вероятно, писали именно на этом языке.</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://imgur.com/g3VsMUu.png" alt="" loading="lazy"/></p>
<p><strong>Вклад:</strong> Язык оказал сильное техническое влияние на интерпретацию вычислений — Basic был первым языком программирования с возможностью вычисления в реальном времени (<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://en.wikipedia.org/wiki/Dartmouth_Time_Sharing_System" rel="noopener noreferrer" target="_blank">Dartmouth Time Sharing System</a>), опередив APL на год. Если APL был доступен только клиентам IBM, а Basic был доступен всем.</p>
<p>Кроме того, он имел большое социальное влияние: Basic сделал программирование доступным для неспециалистов — как для взрослых, так и для детей. Многие влиятельные программисты 80-х и 90-х годов учились программировать на Basic. Многие корпоративные программы были написаны на Basic — вероятно, его популярность ускорила упадок Cobol.</p>
<p>Также на Basic написаны инструменты, которые входят в пакет Office. Со временем Microsoft превратила Basic в Visual Basic — на нем же написаны OpenOffice и LibreOffice. Недавно он уступил место JavaScript и теперь его используют для создания макросов.</p>
<p><strong>Причина смерти:</strong> Большинство людей, которые учились писать код на BASIC, считали его «второстепенным» языком. Его можно использовать, если вы учитесь в школе или вам нужно написать простую программу для малого бизнеса — но настоящие программисты использовали «настоящие» языки. Как только компьютеры с оперативной памятью более 16 КБ стали доступны на массовом рынке, Basic начал терять популярность, а Pascal и C – приобретать.</p>
<p>Какое-то время Basic продолжал существовать как популярный язык программирования для детей и подростков, но похоже, умер и в этой нише.</p>
<h2 id="heading-2-7">PL/I</h2>
<p><strong>Разработчики:</strong> IBM, 1966.</p>
<p>IBM работала с двумя языками программирования: для научных исследований в компании использовался Fortran, а для бизнес-приложений — Comtran. В ответ на конкуренцию со стороны Cobol, IBM попыталась создать собственный унифицированный язык, которым могли пользоваться и научные-, и бизнес-подразделения. В результате получилась некая смесь двух языков с большим количеством дополнительных функций.</p>
<p><strong>Вклад:</strong> Авторы Algol-68 насмешливо назвали PL/I устаревшим языком. Но все возможности Algol-68 появились в PL/I раньше и работали лучше. В то время как Cobol первым научился читать структурированные данные, PL/I был первым языком, который реализовал их как тип.</p>
<p>В Cobol чтение имени пользователя даст вам две глобальные переменные — user и name. В PL/I вы получите одну переменную с полем user.name. PL/I был также первым высокоуровневым языком с указателями для прямого управления памятью, константами и перегрузкой функций.</p>
<p>Многие из идей, впервые использованные в этом языке, вошли в массовое программирование через С, который представлял собой смесь BCPL и PL/I. Например, С в точности копирует синтаксис комментариев PL/I.</p>
<p><strong>Причина смерти:</strong> Все программисты, писавшие на Fortran, думали, что PL/I слишком похож на Cobol. Писавшие на Cobol считали, что он почти идентичен с Fortran. IBM пыталась заменить два устоявшихся языка гораздо более сложным. Другая проблема в том, что компания эксклюзивно выпускала компилятор для PL/I — и многим программистам не понравилось, что язык так сильно зависит от корпорации.</p>
<p>К тому времени, когда IBM смогла решить обе этих проблемы, мир уже перешел в эру микрокомпьютеров, где PL/I уступил BASIC.</p>
<p><strong>Дополнительная литература:</strong> <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://multicians.org/pl1.html" rel="noopener noreferrer" target="_blank">The Choice of PL/I</a></p>
<h2 id="heading-2-8">Simula 67</h2>
<p><strong>Разработчики:</strong> Оле Даль и Кристен Найгаард, 1967.</p>
<p>Simula 67 — расширенная версия Algol для математического моделирования. Первая версия языка (Simula I) имела специальный синтаксис моделирования — разработчикам показалось, что он получился слишком специализированным, а в симуляциях содержалось слишком много дублирований кода. Даль и Найгаард хотели создать более универсальный язык, возможности которого выходили бы за пределы моделирования.</p>
<p>Их идея заключалась в том, чтобы дать пользователям возможность определять новые типы объектов — классы — с разрешением полиморфного определения функций. После этого пользователи могли создать функции моделирования как частные случаи объектно-ориентированной системы.</p>
<p><strong>Вклад:</strong> Хотя Simula 67 не был первым объектно-ориентированным языком программирования, он впервые использовал правильные объекты и заложил фундамент для языков-последователей этой методологии. Речь идет о разделении класса/объекта, создании подклассов, виртуальных методах и защищенных атрибутах.</p>
<p>Язык вдохновил подавляющее большинство академических исследований объектов в программировании, которые проводились после 1967 года. Создатели CLU и ML писали, что они вдохновлялись идеями Simula. Бьярн Страуструп защитил докторскую диссертацию по Simula и включил несколько идей из него в C ++.</p>
<p><strong>Причина смерти:</strong> В своей докторской диссертации Страуструп утверждал, что Simula — слишком медленный язык для массового использования. «Желаю удачи в выполнении операции, если вы не на мейнфрейме», — комментировал он. Стоит отметить, что Smalltalk-80, который развивал те же идеи, и имел преимущество в 13 дополнительных лет закона Мура — и даже он считался слишком медленным. В Simula реализованы идеи, которые затем были интегрированы в быстрые и простые языки.</p>
<p><strong>Дополнительная литература:</strong> <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.idi.ntnu.no/grupper/su/publ/simula/holmevik-simula-ieeeannals94.pdf" rel="noopener noreferrer" target="_blank">Compiling SIMULA: a historical study of technological genesis</a></p>
<h2 id="heading-2-9">Pascal</h2>
<p><strong>Разработчик:</strong> Никлаус Вирт, 1970</p>
<p>Язык был создан на основе Algol-60, идеи которого, по мнению Вирта, не нашли отражения в Algol-68. Сначала Pascal стал популярен как «язык введения в Computer Science», но к 1980 году стал вторым по популярности в компьютерной сети Usenet. Вирт рассматривал все семейство языков — Pascal, Modula и Oberon — как единый языковой концепт.</p>
<p><strong>Вклад:</strong> Pascal не привнес в программирование ни одной новой идеи — это был намеренно консервативный язык, целью которого было собрать лучшие идеи языков-предшественников в одном месте. Язык вывел синтаксис Algol настолько далеко за пределы академического круга, что символ :=, который изначально был характерен для Algol, стал считаться «стилем Pascal».</p>
<p>Хотя Pascal не был новаторским языком, Вирт впервые реализовал именно в нем принцип пошаговой детализации (stepwise refinement) в качестве средства для написания надежного программного обеспечения. Это привело к созданию Modulas, который популяризировал модули первого класса, а также Euclid — первого формального языка программирования для написания проверяемых программ.</p>
<p><strong>Причина смерти:</strong> В отличие от других языков из этого списка, у Pascal не было серьезных структурных барьеров или сильных конкурентов. Он конкурировал с C, но долгое время оставался таким же популярным. Диалект Pascal, Delphi, до сих пор занимает довольно высокие позиции в индексах TIOBE и PYPA.</p>
<p><strong>Дополнительная литература:</strong> <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.swissdelphicenter.ch/en/niklauswirth.php" rel="noopener noreferrer" target="_blank">Pascal and its Successors</a></p>
<h2 id="heading-2-10">CLU</h2>
<p><strong>Разработчик:</strong> Барбара Лисков, 1975</p>
<p>Лисков и ее группа хотели реализовать концепцию абстрактных типов данных — так появился CLU.</p>
<p><strong>Вклад:</strong> CLU, вероятно, самый влиятельный язык, о котором почти никто не слышал. В CLU были итераторы, абстрактные типы данных, обобщенное программирование, проверяемые исключения и многое другое.</p>
<p>Сейчас терминология CLU почти не используется в других языках, поэтому не на 100% очевидно, что большинство из них происходят от него. Однако языковая спецификация каждого следующего десятилетия называлась core CLU — язык сделал многое для развития программирования.</p>
<p><strong>Причина смерти:</strong> CLU создавался как демонстрационный язык: Лисков хотела, чтобы в сообществе оценили идеи, а не конкретный язык. Это и произошло: сегодня почти каждый язык чем-то обязан CLU.</p>
<p>После завершения работы над CLU Лисков с группой программистов создала его расширение — Argus, которое должно было продемонстрировать ее идеи по параллелизму. Он оказался менее влиятельным, но идеи Argus можно найти в некоторых современных языках.</p>
<p><strong>Дополнительная литература:</strong> <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://web.archive.org/web/20030917041834/http://www.lcs.mit.edu/publications/pubs/pdf/MIT-LCS-TR-561.pdf" rel="noopener noreferrer" target="_blank">A History of CLU</a></p>
<h2 id="heading-2-11">ML</h2>
<p><strong>Разработчик:</strong> Робин Миллер, 1976.</p>
<p>Прежде чем создать ML, Милнер работал над LCF Prover — одним из первых помощников для доказательства теорем. LCF искал ошибки в доказательстве и проверял, правильно ли оно оформлено. Программист создал для него метаязык, основанный на надежных математических формализмах — строгих статических типах и функциях высшего порядка. Этот язык позже превратился в ML и был стандартизирован как SML.</p>
<p><strong>Вклад:</strong> ML — один из самых старых «языков алгебраического программирования». Часто ему приписывают алгебраические типы данных, модули и типизированное функциональное программирование. Однако эти функций появилось не в ML — первая версия языка создавалась только для работы с LCF и не предназначалась для широкого использования. По мере развития ML программисты привносили в него идеи из других исследовательских языков.</p>
<p>В ML была реализована одна очень важная идея: вывод типов. Это первый язык со статической типизацией, в котором не нужно определять типы — компилятор делал это автоматически. Эта идея заложила основу для типизированного функционального программирования.</p>
<p>ML оказал большое влияние на современные средства доказательства теорем: «программные» языки для Isabelle, CVC3 и Coq основаны на ML. Кроме того, на языке было создано множество <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D1%82%D0%B8%D0%BF%D0%BE%D0%B2" rel="noopener noreferrer" target="_blank">теорий типов</a>, хотя позже <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.hexlet.io/blog/posts/haskell-yazyk-pozvolyayuschiy-glubzhe-ponyat-programmirovanie-kak-on-ustroen-i-pochemu-ego-vybirayut-razrabotchiki?promo_name=blog&promo_position=article-body&promo_type=link" rel="noopener noreferrer" target="_blank">Haskell</a> приобрел большую популярность среди математиков.</p>
<p><strong>Причина смерти:</strong> У ML было много интересных функций, но он был языком специального назначения для доказательства теорем. SML вышел в том же году, что и Haskell, который оказался более «чистым» примером языка типизированного функционального программирования.</p>
<h2 id="heading-2-12">Smalltalk</h2>
<p><strong>Разработчики:</strong> Алан Кей, 1972, 1976 и 1980 годы.</p>
<p>История Smalltalk выглядит как движение к цели: в Smalltalk-72 были заложены основы языка, в Smalltalk-76 реализовал концепцию объектно-ориентированного программирования, а Smalltalk-80 сделал ее популярной по всему миру.</p>
<p>В Smalltalk не было объектов в представлении того времени, но он был первым объектно-ориентированным языком. Разница в том, что в Simula были объекты в добавление к примитивам — числам и логическим значениям. В Smalltalk логические значения тоже были объектами.</p>
<p><strong>Вклад:</strong> Многие думают, что Smalltalk — это настоящее объектно-ориентированное программирование, а Java и Python — нет. Но это не так: объектно-ориентированное программирование, как и любая другая парадигма, представляет собой огромную концепцию с множеством разных языков, которые в разной степени повлияли на нее. Однако именно Smalltalk был языком, который популяризировал эту концепцию.</p>
<p>Если открыть любую книгу по общей теории объектно-ориентированного программирования 80-х или начала 90-х годов, она будет построена на Smalltalk. В некоторых примеры будут описаны на C++ или других языках, но базой в этих книгах все равно остается Smalltalk.</p>
<p>Язык также популяризовал идею об объектах как об общих данных, заложив основу для высокоуровневого языка Cobra и <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2#:~:text=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C%20%D0%B0%CC%81%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2%20%E2%80%94%20%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F%20%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85,%D1%81%D1%87%D0%B8%D1%82%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F%20%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D0%BE%D0%BC%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F." rel="noopener noreferrer" target="_blank">модели акторов</a>.</p>
<p><strong>Причина смерти:</strong> Существует распространенное мнение, что Smalltalk проиграл, потому что его предпочли C++. Однако это неверно: у Smalltalk действительно были проблемы (сложность взаимодействия с другими инструментами и низкая производительность), но даже в 90-х годах многие программисты полагали, что он станет доминирующим языком программирования для решения бизнес-задач.</p>
<p>Но потом появилась Java.</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://imgur.com/svrnZyi.png" alt="" loading="lazy"/></p>
<p>Smalltalk был не единственной жертвой «Явапокалипсиса»: конкуренцию Java проиграли Eiffel, Ada95 и почти все остальные объектно-ориентированные языки. Действительно интересный вопрос не «почему умер Smalltalk», а «почему выжил C ++». Я думаю, что C ++ имел лучшее взаимодействие с C, и его было легче распространить на легаси-системы.</p>
<style data-mantine-styles="inline">.__m__-_R_6jderddmiub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:80%;}@media(min-width: 36em){.__m__-_R_6jderddmiub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_6jderddmiub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/biblioteka-react-review-article"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTYyOCwicHVyIjoiYmxvYl9pZCJ9fQ==--6bac7610f325471938a0e33f58eaa4c52527d66f/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%87%D1%82%D0%BE%D1%82%D0%B0%D0%BA%D0%BE%D0%B5react-01.png" loading="lazy" alt="Библиотека React: особенности, перспективы, ситуация на рынке труда"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Библиотека React: особенности, перспективы, ситуация на рынке труда</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">В объявлениях о поиске программистов часто встречается требование уметь работать с React. Иногда ...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">29 февраля 2024 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/stoit-li-uchit-javascript-perspektivy-situatsiya-na-rynke-truda-mneniya-ekspertov"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTcwMywicHVyIjoiYmxvYl9pZCJ9fQ==--aa69869c906a992728ba7c26886fa1b715024424/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%8F%D0%B7%D1%8B%D0%BA%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8Fjavascript-01.png" loading="lazy" alt="Язык программирования JavaScript: где его используют и почему он популярен"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Язык программирования JavaScript: где его используют и почему он популярен</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Рассказываем, что это за язык программирования — JavaScript, где его используют, насколько он поп...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">4 октября 2023 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/zachem-izuchat-node-js-ili-o-perspektivah-bekenda-na-javascript"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTY4MywicHVyIjoiYmxvYl9pZCJ9fQ==--8e5dd13a34bb6d61f1c0db87a25e6e64d0e237fb/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/node%20_new-01.png" loading="lazy" alt="Все про Node.js: зачем писать бэкенд на JavaScript и сколько за это платят"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Все про Node.js: зачем писать бэкенд на JavaScript и сколько за это платят</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Рассказываем, как устроен бэкенд на JavaScript, стоит ли изучать Node.js, когда есть PHP и Python...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">28 июля 2023 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div></div></div></div>
<h2 id="heading-2-13">Заключение</h2>
<p>Это лишь небольшая часть важных для программирования языков, которые уже мертвы. Alphard, Altran, Argus, Automath, BCPL, Comtran, CPL, Eiffel, Flow-Matic, Hope, Hypercard, ISWIM, Jovial, MacSyma, Mesa, Miranda, Multics Shell, Planner, SMP, Sketchpad внесли свой вклад в современный мир программирования.</p>
<p>Большинство влиятельных языков никогда не были популярными, но их ДНК проявляется спустя десятилетия после того, как они были забыты. Есть бесчисленное множество языков, идеи которых не были оценены, например, «Энциклопедия языков программирования» состоит из более чем 8 тыс. языков.</p></div><div class=""><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-lg)" class="m_4081bf90 mantine-Group-root"><div class="m_4451eb3a mantine-Center-root" data-inline="true"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:var(--mantine-spacing-xs);color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-user "><path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0"></path><path d="M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"></path></svg></div><p style="margin-inline-end:var(--mantine-spacing-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Oleg Sabitov</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">5 лет назад</p></div><div style="align-items:center" class="m_8bffd616 mantine-Flex-root __m__-_R_5dirddmiub_"><a style="display:inline-flex" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/10-samyh-vliyatelnyh-mertvyh-yazykov-programmirovaniya/votes"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:var(--mantine-spacing-xs);color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-thumb-up "><path d="M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3"></path></svg></div></a><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">10</p></div></div></div><div style="background-color:var(--mantine-color-indigo-light);border:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding:var(--mantine-spacing-xl)" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Читайте также:</p><ul style="margin-inline-start:var(--mantine-spacing-lg)" class="m_abbac491 mantine-List-root"><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/biblioteka-react-review-article">Библиотека React: особенности, перспективы, ситуация на рынке труда</a></span></div></li><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/stoit-li-uchit-javascript-perspektivy-situatsiya-na-rynke-truda-mneniya-ekspertov">Язык программирования JavaScript: где его используют и почему он популярен</a></span></div></li><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/zachem-izuchat-node-js-ili-o-perspektivah-bekenda-na-javascript">Все про Node.js: зачем писать бэкенд на JavaScript и сколько за это платят</a></span></div></li></ul></div><div style="margin-block:var(--mantine-spacing-xl)" class="m_3eebeb36 mantine-Divider-root" data-orientation="horizontal" role="separator"></div></div><div></div></div><style data-mantine-styles="inline">.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:100%;--col-max-width:100%;}@media(min-width: 48em){.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:16.666666666666668%;--col-max-width:16.666666666666668%;}}@media(min-width: 62em){.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:33.333333333333336%;--col-max-width:33.333333333333336%;}}</style><div class="m_96bdd299 mantine-Grid-col __m__-_R_lmiub_ mantine-visible-from-md"><div style="background-color:var(--mantine-color-indigo-light);border:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-bottom:var(--mantine-spacing-xl);padding:var(--mantine-spacing-xl);width:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div style="margin-bottom:var(--mantine-spacing-md)" class="m_4451eb3a mantine-Center-root" data-inline="true"><p style="font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Категории</p></div><ul class="m_abbac491 mantine-List-root"><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Мотивация">Мотивация</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Истории успеха">Истории успеха</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Дневник студента">Дневник студента</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Код">Код</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Карьера">Карьера</button></span></div></li></ul></div><div style="justify-content:end;margin-top:0rem;position:sticky;top:calc(5rem * var(--mantine-scale))" class="m_8bffd616 mantine-Flex-root __m__-_R_5dlmiub_"><div tabindex="0" style="cursor:pointer"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses_javascript?promo_name=program_category&promo_position=blog_post&promo_creative=card&promo_type=card"><div style="background-color:var(--mantine-color-default);border:calc(0.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);padding-inline:var(--mantine-spacing-xl);padding-top:var(--mantine-spacing-xl);padding-bottom:var(--mantine-spacing-xs);width:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div class="m_4451eb3a mantine-Center-root" data-inline="true"><p style="font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Курсы по JavaScript</p></div><img class="m_9e117634 mantine-Image-root" src="/vite/assets/development-BVihs_d5.png"/><p style="margin-bottom:var(--mantine-spacing-xs);text-align:right" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></a></div></div></div></div></div></div></div>
</main>
<footer class="bg-dark fw-light text-light px-3 py-5">
<div class="row small">
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 mb-3">Хекслет</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/about">О нас</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/testimonials">Отзывы</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://b2b.hexlet.io" role="button">Корпоративное обучение</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/blog">Блог</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/qna">Вопросы и ответы</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/glossary">Глоссарий</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://help.hexlet.io" data-target="_blank" role="button">Справка</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" target="_blank" rel="noopener noreferrer" href="/map">Карта сайта</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 fw-normal mb-3">Направления</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_devops">DevOps
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_data_analytics">Аналитика
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_backend_development">Бэкенд
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_programming">Программирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_testing">Тестирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_front_end_dev">Фронтенд
</a></li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Профессии</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/go">Go-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/java">Java-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python">Python-разработчик </a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/data-analytics">Аналитик данных</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/qa-engineer">Инженер по ручному тестированию</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php">РНР-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/frontend">Фронтенд-разработчик</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Навыки</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python-django-developer">Django</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/docker">Docker</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php-laravel-developer">Laravel</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/postman">Postman</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-react-developer">React</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-rest-api">REST API в Node.js</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/spring-boot">Spring Boot</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/typescript">Typescript</a>
</li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-12 col-sm-4 col-md-2">
<div class="fs-4">
<ul class="list-unstyled d-flex">
<li class="me-3">
<a aria-label="Telegram" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://t.me/hexlet_ru"><span class="bi bi-telegram"></span>
</a></li>
<li>
<a aria-label="Youtube" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.youtube.com/user/HexletUniversity"><span class="bi bi-youtube"></span>
</a></li>
</ul>
</div>
<div class="mb-2 d-flex flex-column">
<a class="link-light text-decoration-none" rel="nofollow" href="mailto:support@hexlet.io">support@hexlet.io</a>
<a class="link-light text-decoration-none py-2" target="_blank" href="https://t.me/hexlet_help_bot">t.me/hexlet_help_bot</a>
</div>
<ul class="list-unstyled d-flex">
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://hexlet.io/locale/switch?new_locale=en" data-target="_self" role="button"><span class="my-auto">EN</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 opacity-100 external-link" rel="nofollow" data-href="https://ru.hexlet.io/locale/switch?new_locale=ru" data-target="_self" role="button"><span class="my-auto">RU</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://kz.hexlet.io/locale/switch?new_locale=kz" data-target="_self" role="button"><span class="my-auto">KZ</span>
</span></li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled fs-4">
<li class="mb-3">
<a class="link-light text-decoration-none" href="tel:8%20800%20100%2022%2047">8 800 100 22 47</a>
<span class="d-block opacity-50 small">бесплатно по РФ</span>
</li>
<li>
<a class="link-light text-decoration-none" href="tel:%2B7%20495%20085%2021%2062">+7 495 085 21 62</a>
<span class="d-block opacity-50 small">бесплатно по Москве</span>
</li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<div class="small mb-3">Образовательные услуги оказываются на основании Л035-01298-77/01989008 от 14.03.2025</div>
<ul class="list-unstyled small">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/legal">Правовая информация</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/offer">Оферта</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/license">Лицензия</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/contacts">Контакты</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-12 col-md-4 small">
<div class="mb-2">
<div>ООО «<a href="/" class="text-decoration-none link-light">Хекслет Рус</a>»</div>
<div>108813 г. Москва, вн.тер.г. поселение Московский,</div>
<div>г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3</div>
<div>ОГРН 1217300010476</div>
<div>ИНН 7325174845</div>
</div>
<hr>
<div>АНО ДПО «<a href="/" class="text-decoration-none link-light">Учебный центр «Хекслет</a>»</div>
<div>119331 г. Москва, вн. тер. г. муниципальный округ</div>
<div>Ломоносовский, пр-кт Вернадского, д. 29</div>
<div>ОГРН 1247700712390</div>
<div>ИНН 7736364948</div>
</div>
</div>
</footer>
<div id="root-assistant-offcanvas"></div>
<script src="/vite/assets/assistant-Bukl1lYy.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-BrRXra1y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/MarkdownBlock-DbyKWoR_.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/shiki-V011pkdv.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-XR8Qr8kR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dist-GCHh59xr.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useIsomorphicEffect-HJ6VK0D3.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-KSp6QbZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/classnames-l6ipYlLR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/debounce-jMQ_Cf4f.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v67327c56f0bb4ef8b305cae61679db8f1769101564043" integrity="sha512-rdcWY47ByXd76cbCFzznIcEaCN71jqkWBBqlwhF1SY7KubdLKZiEGeP7AyieKZlGP9hbY/MhGrwXzJC/HulNyg==" data-cf-beacon='{"version":"2024.11.0","token":"d11015b65d11429ea6b4a2ef37dd7e0b","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>