История советского программирования
Цифровой профсоюз!
Программирующая Программа - 1
В начале 1950-х годов Алексей Андреевич Ляпунов прочитал в Московском университете первый в стране лекционный курс по программированию. Он предложил концепцию языка программирования, ставшей предшественником языков высокого уровня.

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

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

ПП-2 послужила идейной основой двух проектов — ПП для Стрелы 4 и ПП для Стрелы 7. Первая из них стал прототипом настоящей системы программирования: помимо собственно транслятора она содержала систему сборки модулей и некоторые средства отладки. Транслятор получал такие фрагменты объектной программы, которые потом назовут модулями, а система сборки создавала программу из оттранслированных модулей и библиотечных программ.

В ПП для Стрелы 3 был реализован ряд новаторских идей -табличный подход к синтаксическому анализу, оптимальное (по числу рабочих переменных) программирование арифметических выражений. Был изобретен метод хеширования, который применялся к экономии арифметических выражений.
С трансляции начиналось не только системное, но и теоретическое программирование. Именно работы по входным языкам и трансляторам послужили толчком к созданию первой математической модели программ - схемам Янова.
Новаторы
В конце пятидесятых прошлого столетия развивался и подход к автоматизации программирования с помощью библиотек стандартных программ. Например, была разработана стандартная составляющая программа или ССП. Она осуществляла статическую загрузку и связывание стандартных программ из достаточно обширной библиотеки.
Была создана интерпретирующая система - ИС, ИС-2 уже реализовывала некоторые функции будущих операционных систем, осуществляя динамическое связывание, подкачку и смену используемых подпрограмм, причем все это делалось с небольшими накладными расходами и весьма скромными запросами на память. Высокая эффективность ИС-2 и хорошо продуманный интерфейс с основной программой сделали ее неотъемлемой частью комплекта поставки ЭВМ.

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