Ретро кодинг: Привет из прошлого века

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

На дворе 2023 год. Информационные технологии шагнули далеко. Даже 10 лет назад кажется для нас устаревшей эпохой.

Искуственный интеллект заполняет интернет контентом, графика в играх кажется уже реальной, а айти теперь - самая популярная область. Скорость интернет соединения растет как на дрожжах. Множество IDE, функционал которых невероятно огромен, множество языков программирования.

Но давайте вернемся назад - на 20, 30 и даже больше лет назад. У современных программистов есть мощнейшее программное обеспечение, десятки языков программирования. А всего лет 20-30 назад программисты писали код на каких нибудь калькуляторах при помощи чистого ассемблера!

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

История программирования в СССР

Отечественной вычислительной технике почти 40 лет. Можно выделить несколько этапов в развитии программного обеспечения ЭВМ в СССР.

Первый этап (конец 40-х — середина 60-х годов) был связан со становлением программирования как научной и практической дисциплины. Результаты этого этапа — операторный метод программирования А. А. Ляпунова, адресное программирование Е. Л. Юшенко, крупноблочное программирование Л. В. Канторовича, теория схем программ, первые отечественные трансляторы, получившие название «программирующих программ» и реализованные известными советскими учеными Э. 3. Любимским, С. С. Камыниным, М. Р. Щура-Бурой, А. П. Ершовым, Л. Н. Королевым, В. М. Курочкиным, С. С. Лавровым. Эти и многие другие результаты первого этапа оказали существенное влияние на развитие программного обеспечения не только в СССР, но и во всем мире.

Второй этап (середина 60-х — конец 70-х годов) развития программирования в СССР был связан с формированием современного облика программного обеспечения ЭВМ и неотделим от мировых тенденций развития программирования. Он характеризуется большим распространением трансляторов АЛГОЛ-60, появлением широкого спектра новых языков программирования, развитием методов и средств автоматизации программирования и автоматического синтеза программ. Появляются и широко распространяются пакеты прикладных программ, банки данных и системы управления базами данных, развиваются основы технологии программирования.

Отличительная особенность этого этапа — интенсивное развитие программного обеспечения, появление большого числа профессиональных программистов, возможность доступа к ЭВМ пользователей-непрограммистов. В то же время увеличивается потребность в программном обеспечении, которое становится все более сложным, а соответствующие затраты на его разработку соизмеряются с затратами на вычислительную технику.

Рост потребностей и затрат на программное обеспечение ЭВМ объективно привел в начале 80-х годов к новому этапу развития программирования в СССР — переводу программного обеспечения на индустриальную основу. Основы этого перехода формировались уже с середины второго этапа, когда в 70-е годы начал создаваться Государственный фонд алгоритмов и программ (ГосФАП).

В середине 80-х государство прилагало немало усилий для популяризации информационных технологий. Публиковались научные статьи, в журналах появлялись целые разделы, посвящённые ИТ-тематике. Для профессионалов (которые в то время были в основном учёными) Академия наук СССР выпускала журнал «Программирование». Не забыли и про любителей. Например, в журнале «Техника — молодёжи» появилась рубрика «Человек и компьютер», которая была посвящена разъяснению новых терминов и обзорам новых устройств. Там же публиковались советы по борьбе с вирусами, использованию носителей и т.п.

Стремясь увеличить скорость интеграции компьютерных технологий в повседневную жизнь государства, власти не делали особых различий между женщинами и мужчинами. Так, журнал «Работница» (тираж ~15 млн) призывал женщин осваивать компьютер наравне с мужчинами, а ещё — учить этой науке дочерей.

Дедовские языки программирования

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

Если мы знаем, что некий язык А первым ввел функцию В, это еще не означает, что А повлиял на В. Например, 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 был первым языком, который реализовал их как тип.

Читайте также:Старикам тут не место: как стать программистом в 50 лет

В 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, и его было легче распространить на легаси-системы.

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

Программирующая Программа — первый компилятор

Основоположником информатики в СССР, в частности раздела автоматизации программирования, является Алексей Андреевич Ляпунов, первым предложивший рассматривать программу как последовательность чередующихся этапов, на которых выполняется некая обработка данных. Этап Ляпунов предложил назвать оператором, а схемой счета — совокупность операторов и логических условий. Схема и совокупность спецификаций каждого оператора — это программа. Взгляд на программу в таком ключе стал революционным и сразу лег в основу первых трансляторов (компиляторов) или программирующих программ, как их тогда называли.

Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 году. Транслятор ПП-2 (1955 год, 4 в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур.

Первыми программами, принадлежащими системному программному обеспечению, были трансляторы — ассемблеры и автокоды на Западе, программирующие программы (ПП) у нас.

Сотрудники отдела программирования исследовали реализуемость операторных схем и определили основные типы операторов, соответствующие решаемым задачам: Ai — арифметические операторы, Pi — логические операторы, управляющие счетом, Fi — операторы переадресации, позволяющие переходить к следующему значению индекса.

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

Типы операторов соответствовали подавляющему большинству решаемых тогда задач, а именно — вычислительным задачам. Выделялись арифметические операторы Аi, ведущие вычисление по формулам, логические операторы Рi, осуществляющие управление счетом, операторы переадресации Fi, позволяющие переходить к следующему значению индекса (и обратные им операторы восстановления), все же неарифметические вычисления объединялись в так называемые нестандартные операторы Hi, для которых спецификацией был их машинный код. Специального подъязыка описания данных, зачатки которого появились в более поздних ФОРТРАНе и Алголе, не существовало.

Программирующая программа ПП-1 являлась одним из первых в мировой практике трансляторов и, по-видимому, имела самый высокий уровень входного языка.

Программирующая программа ПП-2, была создана под руководством М. Р.Шура-Буры в 1955 году для машины Стрела-1, основывалась на ПП-1 как прототипе. В ПП-2 были усовершенствованы алгоритмы трансляции и было уделено заметное внимание оптимизации программ — экономии выражений, оптимальному сочетанию переадресации и восстановления (иначе говоря, наилучшей реализации вычисления индексных выражений), оптимальному отведению памяти для так называемых рабочих ячеек. Это был, по-видимому, первый оптимизирующий транслятор.

Язык программирования Рефал

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

Общим для всех этих применений является то, что мы заставляем машину совершать сложные преобразования над объектами, определенными в некоторых формализованных языках (алгоритмические языки, язык алгебры, язык исчисления предикатов и т.д.).

Рефал — язык бестиповый. В его основе лежит понятие объектного выражения как универсального типа данных. Все аргументы и результаты всех функций являются объектными выражениями.

Объектное выражение определяется таким образом, что операция конкатенации делается неявной, скрытой. Точнее сказать, что конкатенация на уровне значений выражается конкатенацией на уровне имен. Это свойство вытекает из основной цели Рефала как метаязыка для описания различных языковых объектов. Оно придает особую выразительную силу и остальным средствам языка, таким как образцы и результатные выражения.

Образцы — мощное изобразительное средство. Они в сжатой и наглядной форме обеспечивают как запись условий на вид аргумента, так и разбиение аргумента на составные части. Язык образцов Рефала лишен каких-либо «упрощающих» ограничений, свойственных другим языкам, что делает его очень простым для освоения и использования.

Язык определения функций Рефала, основанный на понятиях образца и результатного выражения чрезвычайно прост и компактен. Его минимальная версия получила название Базисный Рефал. Диалект Базисного рефала под названием Рефал-2 был реализован на многих типах отечественных ЭВМ и долгое время играл роль де-факто стандарта языка Рефал.

Язык Рефал-5 содержит Базисный Рефал в качестве подмножества. Расширения языка Рефал-5 качественно меняют стиль программирования.

В настоящее время существует две реализации языка Рефал-5: одна выполнена Д. Турчиным, другая — Н. Кондратьевым и Арк. Климовым. Обе имеют практически один и тот же входной язык, но отличаются рядом особенностей реализации. Вторая известна также под названием Рефал-6, однако следует помнить, что это название не языка, а его реализации.

Был также разработан язык Рефал Плюс, в отличии от Рефал-5 доведенный до концептуальной полноты (расширение рефала средствами обработки неуспехов).

1997 год. Рефал прочно занимает свою нишу, не опасаясь никаких конкурентов. Например, он успешно используется физиками Обнинска, многими математическими центрами в России. Одно из основных применений Рефал – разработка трансляторов с языков программирования, когда сам Рефал используется как метаязык. В ИПМ на нем был очень быстро написан высокоэффективный транслятор Cern Fortran.

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

Еще чуть-чуть (на самом деле больше) о программировани в СССР

В 1986 году, вскоре после введения уроков информатики в школах, на телевидении был показан фильм «Игры с компьютером в СССР». В начале диктор торжественно заявляет «Мы стоим на пороге новой эры! Эры компьютерной грамотности!». А после кратко и по делу разные мудрые и удивительно дальновидные люди объясняют, что это значит для народа.

Заместитель министра просвещения отзывается о компьютеризации школы «Мы готовим нового рабочего, способного освоить информационную технологию» и обещает оснастить компьютерами большую часть школ к конце двенадцатой пятилетки (к 1990 году).

Ученый на семинаре высказывается о текущей ситуации: «Мы взялись за своего рода эксперимент над собой и своими детьми, но отступать нам нельзя», сравнивая текущее время с 1941-ом годом.

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

В фильме показан один из первых отечественных гаджетоманов. Композитор Андрей Родионов признается, смущенно опустив глаза: «Люблю эту, свою железку…».

На 16:18 слово берет мудрая пожилая женщина, которая как в воду глядела: «Мой внук теперь будет все время с машиной сидеть? … Он будет нажимать на кнопки, задавать вопросы, значит где-то уже не будет общаться со мной? А как же его старший брат, с которым он делился своими мыслями? Как же теперь будет?». А ведь не о каких хикикомори тогда еще слышно не было, а она уже все понимала.

Газеты

В том же фильме переодически мелькают заголовки статей, посвященных внедрению компьютеров в жизнь советского человека:

  • «Возьмем на льдину ЭВМ»;

  • «Зачем компьютер ферме»;

  • «Заказ принимает ЭВМ»;

  • «Партнер зодчего — компьютер»;

  • «Нужен врачу компьютер»;

  • «Жду встречи с компьютером»;

  • «На «ты» с ЭВМ»;

  • «Робот нужен и училищу»;

  • «Музыка электронного века»;

  • «ЭВМ приходит в класс».

Подобные заметки регулярно публиковались в главных изданиях с многомиллионными тиражами. Их содержание не представляет особого интереса, так как их основной целью было просто рассказать людям о том, что существуют компьютеры и как это замечательно. Для примера приведем очерк из «Учительской газеты»:

help_evm

А эта небольшая заметка 1987 года в газете «Труд» о том, как начальник АСУ цементного завода в Приморском вынес деталей с завода для сборки компьютеров на 6 тысяч рублей (стоимость небольшой квартиры), а ему дали за это всего два года исправительных работ:

trud_87

Предполагаю, что многие предприимчивые работники советских заводов, прочитав эту заметку, подумали: «Епт! Че мы то сидим???» и число подпольных сборщиков компьютеров резко возросло по всей стране. Кстати, в этом же году газета «Труд» вошла в книгу рекордов Гиннеса, так как на тот момент имела самый большой в мире тираж среди ежедневных газет — 15,4 миллиона экземпляров.

Сразу возникает вопрос: откуда инженеры тех времен узнавали о том, как собирать компьютеры из деталей, купленных в магазине/заимствованных на работе?

«Радио»

radio_jume_1986

В крупном советском техническом журнале, который издавался тиражом 1 миллион 200 тысяч экземпляров и доставлялся по подписке в библиотеку каждого вуза/ПТУ/школы/завода, публиковались описания схем для самостоятельного сбора персональных компьютеров из подручных инструментов. Выше приведен фрагмент одной такой статьи, опубликованной в июне 1986 года.

Но чтобы человек взялся за сборку компьютера по схеме из журнала (а это довольно долгий и трудоемкий процесс), его надо убедить в том, что ПЭВМ ему реально нужен, чем занимались другие издания.

«Техника Молодежи»

tehnika_molodeji

В июле 1986 года в этом журнале была опубликована статья «Эти профессиональные персональные компьютеры», в которой подробно разъяснялось как устроены современные компьютеры и для чего они могут пригодиться читателю в будущем: чтобы изучать английский язык, играть в нарды, создавать вязальные схемы и работать с документами.

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

«Наука и жизнь»

school_of_young_coder

Это культовое для технической интеллигенции издание с трех миллионным тиражом тоже не обошло стороной новый вид техники. В нем был целый раздел, посвященный IT-тематике — «Человек и компьютер», в котором публиковались разъяснения новых терминов, обзоры новых устройств (к примеру аппаратов Xerox), советы по борьбе с вирусами («полное перемагничивание дискет») и т.п.

В 1985-ом году в журнале был опубликован цикл из семи статей «Школа начинающего программиста», в котором читателя обучали основам создания программ для микрокалькуляторов. Обратите внимание на то, что автор называет программирование искусством. Книга Кнута, первый том который был издан в 1968 году, уже тогда была известна по всему миру.

После этого цикла тема любительского домашнего программирования многократно поднималась на страницах журнала. А для профессионалов (которые на тот момент преимущественно были учеными) с 1975 года Академия Наук издавала журнал «Программирование».

«Юный техник»

young_technik

А вот иллюстрация к статье «Компьютерная оптика», опубликованная в журнале «Юный техник» в январе 1986 года. И снова девушка, сидящая за персональным компьютером советского производства. Это издание уже предназначалось для ребят, выросших из «Мурзилки» и рассказывало о довольно сложных технических аспектах информационных технологий.

Как видите, в советских изданиях для самых разных категорий граждан были статьи о компьютерах. Хотя бы один из этих журналов регулярно выписывался/покупался почти в каждой семьей и общие знания об информационных технологиях быстро распространилось среди населения. Возьмите наугад любой номер вышеперечисленных журналов, изданный в 1985-1990 и в нем обязательно найдется хотя бы пару слов о компьютерах.

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

Иногда, когда общаешься с людьми старше 45 (прежде всего это касается женщин), то возникает четкое ощущение, что их представление об IT-технологиях осталось на уровне 80-х годов и говоря о компьютерах они употребляют слова, как будто из советских журналов. Они пользуются новыми смартфонами, свежими версиями Windows и MS Office, но основная база знаний не обновлялась у них уже лет 25. Безусловно, есть много сведующих в этой теме людей в годах, но такая тенденция заметна.

UPD. СССР прошел, но Россия не потеряла возможностей улучшать свои технологии и стремится к лучшему. Спасибо Andchir за поправки и остановку моего пыла


Пока это все, с вами был Доктор Аргентум, все удачи, всем до новых встреч!

Источник: https://habr.com/ru/articles/776184/


Интересные статьи

Интересные статьи

Жизненный цикл человека закладывают с момента рождения: учеба, работа, пенсия и на погост.Возможен ли выход из этого жизненного процесса бега в колеснице?Применим практику анализа бизнес - процесса к ...
Систематика животных почти так же стара, как и само человечество. Представители самых примитивных племён превосходно знают природу и имеют особые названия для местной флоры и фауны. В языке одного из ...
Наша команда разрабатывает большое количество обучающих проектов и собственных продуктов. Мы постоянно анализируем и улучшаем процессы разработки, обмениваемся обратной связью друг с друг...
Недавно Грете Тунберг предложили осла в качестве самого экологичного транспорта… и тут возникает вопрос! А что если бы действительно шведская активистка выбрала бы гужевой транспорт? Какие вари...
В девяностые на компьютерном рынке было очень много производителей, очень много форматов и очень много попыток сделать новый стандарт чего-нибудь. Обычно получалось как на той карикатуре. С го...