Екатерина логвиновна ющенко

Содержание

Ющенко Екатерина Логвиновна

Екатерина Ющенко родилась 8 декабря 1919 года в бывшей столице запорожских казаков городе Чигирине. Ее отцом был учитель истории и географии Логвин Федорович Рвачев. В 1937 году его посчитали украинским националистом и арестовали. В это время Екатерина Логвиновна училась на первом курсе физико-математического факультета Киевского университета. Как дочь «врага народа» 17-летнюю Екатерину исключили из университета. Мать Екатерины пыталась доказать невиновность отца и принесла чекистам документы о его участии в революционном движении. Обратно она не вернулась. Ее, как и отца, осудили на 10 лет тюремного заключения. Принесенные матерью документы сожгли на ее глазах. Только в 1954 году после смерти Сталина родители Екатерины Ющенко были реабилитированы посмертно в связи с отсутствием состава преступления.

А тогда, летом 1938 года Екатерина решила поступить в Узбекский государственный университет в Самарканд. Когда во время войны Узбекский университет объединили со Среднеазиатским государственным университетом в Ташкенте, молодая студентка была перенаправлена туда. Одновременно Екатерина устроилась на работу на военном предприятии, выпускающем прицелы для танковых пушек.

После окончания войны Екатерина Ющенко вернулась в Украину. В это время во Львове открылся филиал Института математики АН Украины. Будущий академик АН Украины Борис Владимирович Гнеденко предложил Ющенко работу в его отделе теории вероятностей.

В 1950 году Екатерина Логвиновна успешно защитила кандидатскую диссертацию. В том же году Гнеденко избрали действительным членом АН Украины, а его отдел перевели в Киевский институт математики АН Украины. Он тут же предложил Е.Л. Ющенко переехать в Киев.

Институт математики был в эти годы на взлете. Его директор академик Александр Юрьевич Ишлинский занимался теорией гироскопов — очень актуальной проблемой во времена, когда строительство спутников находилось в самой зачаточной стадии. В рамках своих исследований Ишлинскому нужно было производить сложные расчеты. Для этой цели был закуплен комплект счетно-аналитических машин, которые установили в подвале здания президиума АН Украины. Екатерину Логвиновну назначили руководителем этой вычислительной лаборатории.

В 1954 г. по инициативе академика Б.В. Гнеденко лаборатория Лебедева, где был создан первый в континентальной Европе компьютер МЭСМ, была переведена в Институт математики. К эксплуатации МЭСМ подключилась группа ученых, среди которых оказалась и Екатерина Ющенко.

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

В процессе работы выяснилось, что более сложные задачи затруднительно решать путем написания просто машинных программ. Так возникла необходимость в разработке языка программирования «высокого уровня» и возникла проблема создания соответствующего транслятора для лучшего общения человека с компьютером. Существенное влияние на понимание этой проблемы оказал профессор Киевского университета Л.И.Калужнин, читавший в 50-70-е годы курс математической логики и предложивший формальный аппарат граф-схем программ.

Под влиянием работ члена корреспондент АН СССР А.А.Ляпунова, предложившего операторный метод программирования, в Киеве стало развиваться теоретическое программирование. В результате в 1955 году B.C.Королюк и Е.Л.Ющенко разработали адресный язык, который на языковой основе воплотил два общих принципа работы компьютера – адресность и программное управление. Создавая удобную систему понятий для описания архитектуры компьютера и его системы команд, авторы ввели в «Адресный язык» средства манипулирования адресами второго ранга.

Именно создание «Адресного языка» стало первым фундаментальным достижением научной школы теоретического программирования. Опередив создание первых языков программирования Фортран (1958), Кобол (1959) и Алгол (1960), адресный язык предвосхитил появление не только языков программирования с аппаратом косвенной адресации, но и ассемблеров, а его конструкции вошли в состав современных языков.

Екатерина Логвиновна совместно с Б. В. Гнеденко и В. С. Королюком написала первый в СССР учебник по программированию «Элементы программирования». Книга была издана в 1961 году и переиздана в 1964 году. Увидели свет и ее переводы: в 1964 году в ГДР и Венгрии, а 1969 году во Франции.

В последующие года она подготовила 45 кандидатов и 11 докторов наук. Киевская школа теоретического программирования стала известной далеко за пределами Советского Союза. Е.Л. Ющенко были присуждены две Государственные премии Украины (Государственные премии УССР) и премия Совета Министров СССР, а за теоретические разработки в области компьютерной алгебры — академическая премия имени Глушкова. Также Е. Ющенко была награждена Орденом княгини Ольги.

Талантливый программист, Екатерина Логвиновна получила 5 авторских свидетельств. Она является автором более 200 научных работ, в том числе 23 монографий и учебных пособий, часть которых была переведена и издана в Германии, Чехии, Венгрии, Франции и Дании.

Экскурс в историю разработок языков программирования и компиляторов в СССР

Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Новости и прочее

Оригинальные разработки

К великому сожалению, отечественный след в истории кибернетики значительно скромнее, чем бы он мог быть. Особенно это касается языков программирования. Единственный отечественный язык программирования, получивший общемировую известность, это язык Рефал. Однако распространённость этого языка весьма и весьма мала. Итак,

Программирующая Программа

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

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

Первая версия РЕФАЛа была создана в 1966 году Валентином Турчиным в качестве метаязыка для описания семантики других языков. Впоследствии, в результате появления достаточно эффективных реализаций на ЭВМ, он стал находить практическое использование в качестве языка программирования. В настоящее время основными диалектами языка являются РЕФАЛ-2 (1970-е), РЕФАЛ-5 (1985) и РЕФАЛ+ (1990), отличающиеся друг от друга деталями синтаксиса и набором дополнительных средств, расширяющих первоначальный вариант. Ссылки:

  • официальный сайт языка РЕФАЛ,
  • Википедия о языке РЕФАЛ.

Язык программирования Алмо

Язык системного программирования (машинно-ориентированный язык), задумывался как язык-посредник при трансляции с различных языков. Идея состояла в том, что для каждой аппаратной платформы достаточно было написать транслятор Алмо — и ты уже можешь работать с множеством языков программирования, которые имели трансляцию в Алмо. Были созданы реализации языка для основных отечественных машин того времени (М-20, БЭСМ-6, Минск 2, Урал 11) и трансляторы с Алгола-60 и ФОРТРАНа в Алмо, причем все трансляторы также были написаны на Алмо и “раскручены” на всех этих машинах.

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

Г. Г. Степанов:

…название языка — Сигма — неожиданно очень удачно стало соответствовать сути разработанного языка, которую можно описать как «Символьный Генератор и Макроассемблер».
Всего в истории языка Сигма было три его реализации: на М-20, на БЭСМ-б и на самом языке Сигма. Первая, конечно самая памятная, т.к. это была мол первая работа в области системного программирования (да и вообще первая работа). Вторая была выполнена на лучшей, по моему мнению, отечественной машине БЭСМ-6. Третья опиралась на вторую, была раскручена сама через себя и могла генерировать программы как для БЭСМ-6, так и для СМ-4 и ЕС ЭВМ.

Универсальный машинно-ориентированный язык программирования Эпсилон

А. Ф. Рар:

Заявленной целью разработчиков языка было предоставить удобный рабочий инструмент системным программистам…
Мы стремились достичь разумного компромисса между такими требованиями, как простота и удобство языковых средств, простота трансляции и возможность получения эффективной программы…
Отладка эта состояла в классической раскрутке ( bootstrapping ): Эпсилон-текст транслятора я пропускал через написанный вручную Эпсилон-транслятор, а получившийся новый транслятор проверял на нормальных Эпсилон-программах. Раскрутка эта дала заодно ответ на … вопрос: » программы, полученные путем Эпсилон-трансляции, проигрывают по сравнению с программами, написанными вручную?» Оказалось … всего в 1,35 раза.

Система программирования Бета

Центральным звеном проекта БЕТА был Внутренний язык, который должен был стать единым языком-посредником в БЕТА-системе «наибольшим общим делителем» входных языков и «наименьшим общим кратным» выходных машин. Кроме этой своей роли промежуточного языка, позволяющего уменьшить число путей в схеме m -языковой n -машинной трансляции с m * n до m + n , внутренний язык должен был также явиться средой оптимизирующих преобразований, т.е. он ещё должен был быть достаточно богат, чтобы на нем было возможно представить результаты оптимизации; например, экономию совпадающих подвыражений в операторе a := b + c .

В итоге система БЕТА была реализована для языков Симула-67, Паскаль, Модула-2, Ада (подмножество) и выходных машин БЭСМ6 и СМ-4. Был реализован скромный набор оптимизаций — несмотря на обширные замыслы, более скромный, чем в системе Альфа. В общем, сравнительно с Альфа-системой, проект БЕТА следует признать неудачным.

Язык программирования Аналитик

Язык программирования разработанный в 1968г. в Институте кибернетики АН УССР под руководством академика В.М. Глушкова. Отличительной чертой языка являются абстрактные типы данных, вычисления в произвольных алгебрах, аналитические преобразования. Был реализован на машинах МИР-2. Позднее была разработана версия Аналитик-74, реализованная на машинах МИР-3.
В настоящее время на родине этого языка предпринимается попытка его возродить: появилась версия языка Аналитик-2007.

Автокод МВК «Эльбрус» Эль-76

Этот язык, первоначально названный «автокод Эльбрус», затем был переименован в «Эль-76». Несмотря на то, что Эль-76 является языком достаточно высокого уровня, есть основание называть его «автокодом». Дело в том, что «Эльбрус» просто не имел языка более низкого уровня, т.е. «ассемблера». Т.е. язык минимального уровня «Эльбрус» — это Эль-76, остальные языки уже строились над ним. Это — замечательная иллюстрация высокого научного и инженерного уровня отечественных ИТ в то время. У этого языка почва из-под ног ушла позже остальных разработок, т.к. «Эльбрус» ещё некоторое время применялся в «оборонке».

ЯРМО (Язык Реализации, Машинно-Ориентированный)

Машинно-ориентированный язык программирования, построенный для ЭВМ БЭСМ-6 и отражающий все тогдашние веяния в информатике. Язык программирования ЯРМО разработан в 1973 году в Новосибирском филиале ИТМиВТ. Впоследствии было разработано несколько версий языка. На нём в 1977 году была создана операционная система «Феликс» для СВС — первая в стране ОС на языке высокого уровня.

Другие разработки

Конечно, история создания языков программирования в нашей стране не исчерпывается перечисленным. Если полистать подшивки журнала «Программирование», то можно найти много интересных разработок. Все эти языки на сегодняшний день можно считать «мёртвыми». Эти языки уходили вместе с техникой, в которой они «жили». Сперва умерла линия отечественной вычислительной техники, уступая место ЕС ЭВМ — клонам IBM/360/370. Затем настала очередь самих ЕС ЭВМ. С наступлением эры PC практически все оригинальные отечественные разработки закончили свою жизнь. В то время как «старые» зарубежные Fortran, Lisp, Cobol, C, Forth, Pascal до сих пор в ходу. Исключением из этого правила являются язык Рефал, который ещё можно найти в первой сотне рейтинга языков программирования, да Аналитик (есть компилятор для этого языка под Wintel; но это, скорее, теоретическая возможность пользоваться этим языком, а не практическая ценность).

Разработка компиляторов языков, разработанных за рубежом

Отечественные учёные и инженеры принимали участие в работе международных комитетов по языкам, например Algol-68. Но большинство языков было разработано и без их участия, начиная от Fortran и кончая Ada.
Производимые в СССР ЕС ЭВМ уже имели в комплекте компиляторы PL/I, Fortran, Cobol от IBM — либо «цельнотянутые», либо минимально доработанные. Ту же участь постигло ПО, которое шло с СМ ЭВМ, клоном компьютеров DEC.
Однако разработка трансляторов для отечественной вычислительной техники всё же велась. Во-первых, не вся техника была «содрана»: это и упомянутые «Эльбрусы», вычислительная техника для военного применения (например, ЭВМ серии «5Э»), «Мир-2» и другие. Для них нужны были трансляторы языков высокого уровня. Ведь это для ЕС ЭВМ трансляторы шли «в комплекте», прямиком из IBM, а для перечисленной техники их не существовало. Во-вторых, IBM не делала трансляторов языков типа Algol-68 и Ada для IBM/360/370, следовательно, их не существовало и для ЕС ЭВМ. Наверно, самая значительная отечественная разработка в этой области — Algol-68 Ленинградского университета. Вот перечень трансляторов «сделано в СССР» (наверняка неполный):

  • Ada
  • Algol-60
  • Algol-68
  • C
  • CLU
  • Forth
  • Fortran (для Эльбрусов сделали 2 компилятора)
  • Lisp
  • Modula-2
  • Pascal
  • PL/I
  • SETL
  • Simula-67
  • Snobol-4

Что ещё почитать на эту тему

  • Языки и системы программирования
  • Русский Пролог
  • История Эпсилон
  • История Эпсилон (часть вторая)
  • История Сигмы
  • История Сигмы (часть вторая)
  • Внутренний язык в Бета
  • У нас была бы лучшая в мире персональная ЭВМ
  • От программирующих программ к системам программирования (российский опыт)
  • Язык программирования Алмир-Аналитик
  • Язык программирования Эль-76
  • Язык программирования РАПИРА
  • Язык программирования РАЯ (Русский алгоритмический язык)
  • Язык программирования Робик

Опубликовано: 2012.09.25, последняя правка: 2019.01.28 20:35

Оцените Оценки посетителей
Нравится █████████████████████████████ 17 (68%)
Неплохо █████ 3 (12%)
Так себе █████████ 5 (20%)
Не нравится ▌ 0

Отзывы

Разработка языков программирования и компиляторов в СССР

1. Общие сведения
1.1. Рапира является диалоговым языком высокого уровня, предназначенным для обучения программированию и решения на ЭВМ небольших прикладных задач. Язык ориентирован в первую очередь на школьников среднего и старшего возраста (11-17 лет), но может использоваться и другими категориями пользователей.
1.2. Рапира, наряду с Робиком, является входным языком системы программирования «Школьница». Как и для языка Робик, операции надпрограммного уровня в Рапире выполняются системными средствами, не относящимися к языку.
1.3. Первая версия Рапиры была разработана в 1978-1979 годах и использовалась в учебной работе со школьниками и студентами. В ходе разработки системы «Школьница» язык был полностью переработан.
1.4. Рапира представляет собой концентрическое семейство языков с последовательно расширяемым набором возможностей. Каждый концентр можно рассматривать как замкнутый язык-оболочку.
В этом документе приводится краткое описание основных особенностей внешнего концентра канонической (школьной) версии Рапиры.
1.5. В качестве базового этнического языка для Рапиры выбран русский язык. В процессе реализации языка на инструментальной ЭВМ была разработана также английская версия. Ведутся работы над эстонской и грузинской версиями. Возможно создание версий на основе других языков.
2. Лексика и общая структура программы
2.1. Лексическая структура Рапиры почти не отличается от лексики Робика, описанной в документе 3533847.00058-01¤35¤02. В Рапире различаются те же лексические единицы: целые и дробные числа, тексты, слова, специальные символы. Форма этих лексем традиционна. Основные отличия Рапиры от Робика заключаются в следующем:
1. Допускается запись дробных чисел в экспоненциальной форме, например, 156.65E12 означает 156,65×1012.
2. Унарные + и — рассматриваются не как составные части лексемы, а как операции.
3. В Рапире используется в несколько раз больше специальных символов, в том числе — составных, чем в Робике
2.2. Общая структура программы и порядок исполнения отдельных предписаний на Робике и Рапире имеют много общего. Программа на Рапире — это последовательность директив, процедурных блоков и описаний имен. Порядок работы с директивами и процедурными блоками такой же, как и в Робике.
2.3. В отличие от Робика, допускается произвольное расположение предписаний по строкам (можно записывать несколько предписаний на одной строке и распределять одно предписание на несколько строк). Пробелы и переводы строк могут использоваться в любых местах программы, но не внутри лексем (внутри текстов можно использовать синтаксически значимые пробелы). Между двумя лексемами, не различающимися контекстно, обязателен по крайней мере один пробел или перевод строки.
Комментарий в Рапире заключается в специальные скобки. Комментарий синтаксически эквивалентен пробелу и может быть вставлен между любыми двумя лексемами.
3. Имена и выражения
3.1. Рапира является частично-типизированным языком. Каждое имя, используемое в программе или в процедурном блоке, может быть описано с указанием типа. Тип имени определяет виды значений, которые могут быть присвоены этому имени. Если имя не описано или описано без указания типа, оно по умолчанию относится к универсальному типу. Такому имени можно присваивать значения любых видов.
В диалоговой версии Рапиры описание имен используются в качестве отладочного средства. Предполагается, что в пакетной версии описания должны быть обязательными.
Область действия описаний охватывает главную программу, тот процедурный блок, в котором имя описано, и все вызываемые из него процедуры и функции, в которых не описаны совпадающие с ним по написанию локальные имена и формальные параметры. Таким образом, описания одновременно определяют локализацию имен.
Описания имен и указания типов в Рапире не обязательны, поэтому для оперативного решения небольших задач ее можно использовать в качестве бестипового языка.
3.2. В Рапире различаются следующие виды значений имен:

  1. целые числа
  2. дробные числа
  3. тексты
  4. множества
  5. кортежи
  6. процедуры
  7. функции
  8. файлы
  9. модули
  10. рисунки
  11. кадры
  12. таблицы
  13. пустое значение

3.3. Пустое значение имеют все имена отличные от стандартных, которым в данной программе не было присвоено значений. В системе предусмотрено защищенное стандартное имя ПУСТО, которое всегда имеет пустое значение.
3.4. Над любыми парами имен в Рапире определена операция сравнения ТИПА, результат которой — ИСТИНА, если объявленные типы имен совпадают и ЛОЖЬ в противном случае.
Над любыми парами значений (выражений) определена операция сравнения ВИДА, результат которой — ИСТИНА, если виды значений этих выражений совпадают.
3.5. Над числами в Рапире определены следующие операции:
унарные арифметические: + и -;
бинарные арифметические: +, -, *, /, // (деление нацело), ** (возведение в степень);
операции сравнения: =, /=, <=, >=, <, >
Все операции имеют обычный математический смысл; допускается сравнение целых и дробных чисел на равенство: условие 35 = 35.0 считается истинным.
3.6. Над текстами определены следующие операции:
+ — конкатенация (слияние текстов), например,
«вело» + «сипед» = «велосипед»;
ИЗ — проверка принадлежности символа тексту, например, условие
«м» ИЗ «микроскоп» истинно;
— выборка (взятие символа из текста по индексу), например,
«велосипед» = «с»;
— вырезка (выделение участка текста по начальному и конечному индексам), например,
«крокодил» = «рок»;
# — мощность (унарная операция, определяющая число символов в тексте), например,
#»самолет» = 7.
=, /= — сравнение текстов.
В операциях вырезки и выборки в качестве индексов могут использоваться любые выражения, значениями которых являются натуральные числа, не превосходящие мощности соответствующего текста. Левый индекс в вырезке не должен превосходить правого.
Эти две операции могут встречаться как слева, так и справа от знака присваивания, позволяя в последнем случае редактировать тексты. Длина текста при редактировании не может изменяться: подставляемый текст должен иметь такую же длину, как заменяемый участок. Например, после присваиваний:
«крокодил» -> Зверь; «ош» -> Зверь;
имя Зверь получит значение «кошкодил». Присваивания
«кош» -> Зверь; «а» -> Зверь;
являются недопустимыми из-за несовпадения длин заменяющего и заменяемого участков текста.
3.7. Составные структуры данных в диалоговой версии Рапиры представлены множествами, записями и кортежами. Каждая из этих структур может содержать произвольное число элементов. Элементом структуры может быть любой объект языка, независимо от вида.
В пакетной версии допускаются типизированные варианты этих конструкций: все элементы множеств и кортежей должны иметь один и тот же тип, а в записях каждый элемент должен иметь определенный тип.
Множество рассматривается как неупорядоченная совокупность попарно различных элементов. Доступ к отдельному элементу множества невозможен. Разрешены только проверка принадлежности элемента множеству, операции над всем множеством и последовательный перебор его элементов при помощи специальной формы цикла.
Запись рассматривается как неупорядоченная совокупность именованных полей. Доступ к элементу записи возможен только через название поля.
Кортеж рассматривается как упорядоченная совокупность произвольных элементов. Доступ к элементу кортежа возможен по индексу.
Эта операция позволяет построить новую структуру из произвольного количества элементов, представленных значениями выражений. Для формирования нужной структуры необходимо перечислить через запятую все выражения, значения которых должны стать элементами структуры, и заключить их в специальные скобки, форма которых определяется видом структуры. Простые угловые скобки < > определяют формирование кортежа, фигурные скобки { } или (* *) — формирование множества, специальные скобки <$ $> — формирование записи. Кроме того, при формировании записи перед каждый элементом должно быть указано название поля, отделяемое от элементов двоеточием.
Например, выражение < 2, «поиск», 5.3, A > определяет формирование кортежа из четырех элементов: числа 2, текста «поиск», числа 5.3 и значения имени A. Выражение { 2, «слово», 2, 2 } определяет формирование множества из двух элементов: числа 2 и текста «слово». Выражение <$ Имя:»Сергей», Фамилия:»Иванов», Год_рождения:1950 $> определяет формирование записи из трех полей: Имя, Фамилия и Год_рождения.
3.9. Для всех структур определены следующие операции:
ИЗ — проверка принадлежности;
# — определение мощности (числа элементов);
= и /= — сравнение на равенство и неравенство.
Необходимо отметить, что две записи с различной структурой полей считаются принадлежащими к различным видам.
Два множества считаются равными, если они состоят из одних и тех же элементов, независимо от порядка их записи, например,
(* 1, 5, 5, <1, 2>, 1, *) = (* 5, <1, 2>, 1, *)
Два кортежа считаются равными, если они состоят из одних и тех же элементов, расположенных в том же порядке, например:
<1, 5, <1, 2″ = <1, 2+3, <1, 1+1″
<1,2,3> /= <3,2,1>
Две записи с одинаковой структурой полей считаются равными, если одноименные поля имеют одинаковые значения, например:
<$ Имя:»Сергей», Фамилия:»Иванов» $> =
<$ Фамилия:»Иванов», Имя:»Сергей» $>
<$ Номер:5, Скорость:10 $> /= <$ Тип:5, Высота:10 $>
3.10. Кроме операций, перечисленных в п.п.3.4, 3.6 и 3.9, над множествами определены операции объединения (+), пересечения (*) и разности (-), имеющие обычный математический смысл.
Аналогично, над кортежами определены такие же операции, как и над текстами, при этом для вложенных кортежей допускается многократная индексация; выражения А и А являются семантически эквивалентными и определяют третий элемент кортежа, являющегося вторым элементом кортежа А.
Над записями, кроме общих операций, определена только выборка элемента по названию поля. Например, выражение Х.Адрес определяет значения поля Адрес в записи, являющейся значением имени Х.
Как и для кортежей, выборка может использоваться с обеих сторон от знака присваивания. Для вложенных записей определена многократная выборка, например: Х.Адрес.Квартира.
3.11. Над процедурами и функциями как над значениями имен кроме общих операций, перечисленных в п.5.3.4, определена операция вызова, синтаксис которой описывается диаграммой 5.
3.12. Для других видов значений операции в Рапире не определены. Действия над такими значениями осуществляются при помощи специальных предписаний или процедур.
Сведения о работе с файлами и модулями в Рапире приведены в разделе 7. Работа с рисунками и кадрами осуществляется средствами графической системы «Шпага», входящей в состав системы «Школьница». Таблицы как вид значений предусмотрены только для экстравертивной версии Рапиры и здесь рассматриваться не будут. Семантика пустого значения такая же, как в языке Робик.
3.13. В Рапире, как и в Робике, предусмотрена защита имен. Частичная или полная защита может быть установлена и снята пользователем при помощи соответствующих разновидностей предписаний ВКЛЮЧИТЬ и ВЫКЛЮЧИТЬ, синтаксис которых описан диаграммой 6. Некоторые имена, например, имена процедур и функций во время их исполнения и имя переменной цикла внутри тела этого цикла, имеют абсолютную защиту, которая не может быть снята средствами, доступными пользователю.
3.14. Синтаксис выражения в Рапире описывается диаграммой 7. Как следует из диаграммы, выражение — это последовательность соединенных знаками бинарных операций констант, формирователей, простых имен и выражений в скобках, перед каждым из которых может стоять один или несколько знаков унарных операций, а после — произвольная последовательность операций выборки, вырезки и вызова.
Таким образом, структура выражения в целом традиционна для языков высокого уровня.
3.15. В Рапире приняты следующие приоритеты операций:
1. Выражения в скобках и составляющие выражения в формирователях;
2. Формирование структур;
3. Вычисление фактических параметров функций и индексных выражений;
4. Выборки, вырезки, вызовы функций;
5. Унарные операции;
6. Возведение в степень;
7. Операции *, /, // (умножение, пересечение, деление, деление нацело);
8. Бинарные + и — (сложение, конкатенация, объединение, разность множеств).
Описанный порядок в целом соответствует принятому в математике, за тем исключением, что пересечение множеств (*) получило в Рапире более высокий приоритет чем объединение (+).
3.16. Синтаксис условия в Рапире описывается диаграммой 8. Термин «условие» соответствует термину «логическое выражение», используемому в других языках. В Рапире логические значения не могут присваиваться именам, поэтому логические выражения допускаются только в определенных контекстах, например, в цикле ПОКА и в предписаниях ветвления.
Такое выделение логических выражений введено в язык из методических соображений, чтобы подчеркнуть их семантические отличия от выражений других типов.
Операции сравнения и логические связки, используемые в условиях, имеют традиционную семантику.
Приоритеты операций в условиях:
1. Условия в скобках и выражения, входящие в состав условий;
2. Операции сравнения и проверки принадлежности;
3. НЕ;
4. И;
5. ИЛИ.
4. Присваивание, ввод и вывод
4.1. Синтаксис предписаний присваивания, ввода и вывода в языке Рапира описывается диаграммами 9-11. Семантика этих предписаний почти не отличается от семантики аналогичных предписаний в языке Робик. Поэтому здесь перечисляются только основные различия между указанными предписаниями в этих языках.
4.2. При сравнении синтаксиса предписаний необходимо учитывать, что несмотря на внешнее сходство структура выражений в Рапире гораздо богаче, чем в Робике, поэтому предписания присваивания и вывода в Рапире позволяют выполнять разнообразные операции над данными различных видов, что в Робике может быть сделано только с применением специализированных исполнителей.
4.3. Предписание вывода в Рапире позволяет выводить не только простые (числа, тексты), но и составные значения (множества, кортежи, записи). Форма вывода совпадает с видом соответствующих формирователей в языке. Аналогично, в режиме ввода данных могут быть введены составные значения.
При выводе текстов и при их вводе в режиме ВВОД ТЕКСТА окаймляющие кавычки не указываются. Тексты, вводимые в составе структуры и вводимые в режиме ВВОД ДАННЫХ, окаймляются кавычками.
Если режим ввода не указан, по умолчанию предполагается ВВОД ТЕКСТА.
4.4. Вывод любых значений может производиться с указанием формата: после выводимого выражения через двоеточие указывается число отведенных позиций. Для дробных чисел возможно задание двойного формата: указывается еще и число знаков в дробной части числа. Если значение не умещается в отведенном числе позиций, то оно выводится в свободном формате.
4.5. В соответствии с концентрической структурой Рапиры переключение ввода и вывода на другие устройства может быть выполнено различными способами. Наряду с разовым переключением, осуществляемым так же, как в Робике, при помощи указания нужного режима в заголовке предписания (например: ВЫВОД НА БУМАГУ: А, В;), в Рапире возможно переключение всей выводимой или вводимой информации на одно или несколько устройств или файлов. Для этого применяется соответствующая форма предписаний ВКЛЮЧИТЬ и ВЫКЛЮЧИТЬ.
Например: ВКЛЮЧИТЬ ВЫВОД НА БУМАГУ;
5. Управляющие конструкции Рапиры
5.1. К числу управляющих конструкций Рапиры относятся три разновидности ветвления: ЕСЛИ, ВЫБОР-ИЗ, четыре разновидности цикла: ПОКА, ПОВТОР, ДЛЯ-ИЗ и ДЛЯ-ОТ, средства описания и вызова функций и процедур и предписание ВЫХОД для выхода из процедур.
В этом параграфе рассматриваются предписания ветвления и цикла, работа с процедурами и функциями обсуждается в следующем параграфе.
Синтаксис перечисленных конструкций описывается диаграммами 5, 12-15. Как видно на диаграммах, все эти предписания имеют рамочную структуру, что позволяет указывать в теле цикла и в альтернативах ветвления произвольное число предписаний без применения искусственных средств для их объединения.
5.2. Семантика простого ветвления (условного предписания) ЕСЛИ-ТО-ИНАЧЕ вполне традиционна.
Пример:
ЕСЛИ А > В ТО
5 -> А; ВЫВОД: В;
ИНАЧЕ
5 -> В; ВЫВОД: А;
ВСЕ;
5.3. Как видно на диаграмме 12, предписание множественного ветвления (ВЫБОР-ИЗ) состоит из произвольного числа альтернатив, каждая из которых представлена условием, за которым следует одно или несколько предписаний, разделенных точкой с запятой. Условие отделяется от предписаний двоеточием, альтернативы разделяются знаком |. В конце может стоять конструкция ИНАЧЕ.
Предписание исполняется так. Последовательно, в порядке записи альтернатив, проверяются указанные в них условия. Если одно из них оказалось истинным, выполняются предписания от соответствующего двоеточия до ближайшего разделителя альтернатив (|), слова ИНАЧЕ или ВСЕ. После этого исполнение предписания заканчивается. Если ни одно условие не было истинным, выполняются предписания между ИНАЧЕ и ВСЕ (если слово ИНАЧЕ использовано). Таким образом, в любом случае выполняется не более одной из предусмотренных альтернатив.
Пример:
ВЫБОР ИЗ
Ветер <= 3: ВЫВОД: «слабо» |
Ветер <= 7: ВЫВОД: «умеренно» |
Ветер <= 70: ВЫВОД: «Тревога !»
ИНАЧЕ ВЫВОД: «Неверно задана скорость»
ВСЕ;
5.4. Вторая разновидность предписания ВЫБОР исполняется в таком же порядке, но проверяемое условие имеет вид: b0 = ba, где
b0 — значение переключательного выражения, записанного между словами ВЫБОР и ИЗ,
ba — выражение, записанное в альтернативе (перед двоеточием). Таких выражений может быть несколько (через запятую).
Значение переключательного выражения вычисляется один раз в начале исполнения предписания. В остальном семантика этого предписания соответствует п.5.3.
Пример:
ВЫБОР Оценка ИЗ
5: ВЫВОД: «отлично» |
4: ВЫВОД: «хорошо» |
3: ВЫВОД: «средне» |
1,2: ВЫВОД: «плохо» |
ИНАЧЕ ВЫВОД: «ошибка»
ВСЕ;
5.5. Цикл ПОКА (диаграмма 13) имеет традиционную семантику: вначале проверяется условие, указанное в заголовке цикла. Если оно истинно, выполняются все предписания от знака :: (читается «повторять») до слова ВСЕ (тело цикла). Затем вновь проверяется условие и т.д. Если при очередной проверке условие оказалось ложным, исполнение предписания завершается. Если оно было ложным при первой же проверке, то тело цикла не исполняется ни разу.
Пример:
1 -> X;
ПОКА X<10 :: ВЫВОД: 2**X; X+1->X ВСЕ;
5.6. Цикл ПОВТОР позволяет выполнить некоторый набор предписаний заданное число раз. Он выполняется следующим образом. Вначале вычисляется значение выражения, указанного в заголовке цикла. Оно должно быть неотрицательным целым числом, иначе выдается сообщение об ошибке. Затем тело цикла исполняется указанное число раз.
Пример:
1 -> X;
ПОВТОР 10 РАЗ :: ВЫВОД: 2**X; X+1->X ВСЕ;
5.7. Цикл ДЛЯ-ОТ соответствует традиционному для большинства языков циклу типа прогрессии. Имя, указанное после слова ДЛЯ, является переменной цикла, выражение после слова ОТ определяет начальное значение, выражение после слова ДО — конечное значение, после слова ШАГ указывается шаг приращения. Если шаг не указан, он принимается равным единице. Значения всех трех выражений должны быть числами (целыми или дробными). Семантика цикла традиционна. Переменная цикла в теле цикла имеет абсолютную защиту. После окончания цикла она имеет пустое значение.
Пример:
ДЛЯ X ОТ 1 ДО 10 :: ВЫВОД: 2**X ВСЕ;
5.8. Цикл ДЛЯ-ИЗ предназначен для обработки текстов и составных структур, а также файлов соответствующих видов. При исполнении этого предписания переменная цикла поочередно принимает значения каждого элемента соответствующей структуры или файла (или каждого символа текста), после чего исполняется тело цикла. Как и в цикле ДЛЯ-ОТ переменная цикла в теле этого цикла имеет абсолютную защиту, а после его завершения получает пустое значение. Выражение, указанное в заголовке цикла после слова ИЗ, вычисляется один раз перед началом работы цикла.
Пример — подсчет количества букв «А» в тексте с именем Книга:
0 -> Сч;
ДЛЯ Буква ИЗ Книга :: ЕСЛИ Буква=»А» ТО Сч+1->Сч ВСЕ ВСЕ;
ВЫВОД: «В тексте Книга «, Сч, » букв <А>»;
6. Процедуры и функции
6.1. Синтаксическая структура, а также порядок описания и вызова функций и процедур в Рапире и Робике очень близки. Поэтому в этом параграфе перечисляются только отличия процедурного аппарата Рапиры от аналогичного аппарата Робика.
6.2. Как и в Робике, процедурный блок в Рапире является основной единицей локализации имен и хранения программного текста. В дополнение к этому он приобретает свойства основной единицы области действия описаний. Как видно на диаграммах 14-15, при описании формальных параметров и локальных имен в Рапире, в отличие от Робика можно указывать тип.
6.3. В заголовках процедур можно указывать способ передачи каждого из параметров. В Рапире используется три разновидности параметров, различающиеся по способу передачи: входные, выходные и возвратные. Эти способы обозначаются символами =>, <= и <=> соответственно. Если формальный параметр описан как входной, то соответствующий фактический параметр может быть любым выражением. Фактические параметры, соответствующие двум другим разновидностям формальных, могут быть только именами.
Входные параметры передаются по значению: в момент вызова процедуры значение фактического параметра вычисляется и присваивается соответствующему формальному, на который после этого устанавливается полная защита. Для функций в Рапире, а также для всех видов процедурных блоков в Робике этот способ является единственно возможным.
Выходные параметры обрабатываются следующим образом. При вызове процедуры такой формальный параметр получает значение ПУСТО. После завершения работы процедуры значение формального параметра присваивается соответствующему фактическому.
Возвратный параметр сочетает свойства входного и выходного: при вызове значение фактического параметра присваивается формальному, а после завершения работы процедуры — наоборот.
6.4. Исполнение функции или процедуры в языке Рапира может быть приостановлено при помощи предписания СТОП (с выходом в специальный режим диалога) или прервано при помощи предписания ВЫХОД.
В режиме приостановки процедуры пользователь может выполнить любое предписание Рапиры, причем все имена сохраняют смысл и значение, которое они имели в момент приостановки. После этого выполнение процедуры может быть продолжено при помощи директивы ПУСК или прекращено при помощи предписания ВЫХОД, использованного в качестве директивы.
6.5. Вызов функции и процедуры в Рапире рассматривается как операция над процедурным значением. Поэтому вызываемая процедура может быть вычислена как значение некоторого выражения непосредственно перед вызовом. Например, предписание
<A, B, C>(2, 3);
позволяет вызвать одну из трех процедур A, B и C, в зависимости от значения имени X, которое должно быть целым числом от 1 до 3. Каждая из процедур должна быть описана с двумя входными параметрами.
6.6. Как в Робике, так и в Рапире, допускаются рекурсивные вызовы функций и процедур. В обоих языках описание и редактирование процедур осуществляется при помощи одних и тех же системных средств.
7. Файлы и модули
7.1. Работа системы «Школьница» протекает в операционной среде, основную часть которой составляет система файлов, хранящихся в долговременном запоминающем устройстве с произвольным доступом.
С точки зрения пользователя, файл — это объект языка, значение которого хранится в ДЗУ и сохраняется при выключении или перевызове системы. Каждому виду значений, используемому в Рапире, соответствует своя разновидность файлов с таким же названием. Кроме того, в Рапире предусмотрены виды файлов, не имеющие прямых аналогов среди «внутренних» объектов языка: двоичные файлы и специальные файлы других входных языков системы «Школьница», к которым возможен доступ из Рапиры.
7.2. В соответствии с концентрической структурой языка Рапира, работа с файлами может осуществляться несколькими различными способами, последовательно вводимыми на различных концентрических уровнях языка.
1. Всякий объект языка, включая процедуры, может быть целиком скопирован из оперативной памяти во внешнюю или наоборот с помощью предписаний ВЫВОД В ДВУ и ВВОД ИЗ ДВУ (диаграммы 10-11).
2. Символьный или графический ввод и вывод может быть переключен на определенный файл при помощи предписаний ВКЛЮЧИТЬ ВЫВОД В ФАЙЛ и ВКЛЮЧИТЬ ВВОД ИЗ ФАЙЛА (диаграмма 6). Однократный обмен с файлом может быть организован с помощью предписаний ВВОД ИЗ ФАЙЛА и ВЫВОД В ФАЙЛ (диаграммы 10-11).
3. Последовательная поэлементная обработка файлов, соответствующих структурным видам значений Рапиры, может быть организована с помощью предписаний ДЛЯ-ИЗ ФАЙЛА (диаграмма 13). В этом случае с точки зрения пользователя файл загружается в ОЗУ и обрабатывается поэлементно.
4. Организация традиционных операций с текстовыми файлами (открытие и закрытие, настройка на позицию, возврат к началу и т.д.) осуществляется при помощи специальных предписаний и псевдо-процедур.
5. Управление файловой системой может осуществляться в процессе диалога с текстовым редактором системы «Школьница», используемым, в частности, для описания и редактирования процедур и функций Рапира. При помощи этого же редактора могут создаваться и редактироваться текстовые файлы.
6. Просмотр каталога файлов может быть выполнен и вне редактора, при помощи соответствующей системной директивы.
7.3. Файлы системы «Школьница» объединены в модули. Модуль — это совокупность файлов различных видов, в том числе — описаний функций и процедур, которые имеют общий набор глобальных переменных.
Создание модуля осуществляется системными средствами, не определяемыми описанием языка Рапира. При этом среди глобальных переменных пакета могут быть описаны закрытые переменные, недоступные пользователю, что позволяет использовать модули для организации расслоенной структуры больших программ.
8. Некоторые отладочные средства языка Рапира
8.1. Характерной чертой современных интровертивных языков является наличие большого количества отладочных средств, предназначенных для диалогового использования. Умение пользоваться такими средствами необходимо формировать на этапе обучения программированию, поэтому в Рапире предусмотрена широкая гамма отладочных возможностей и конструкций. В этом параграфе перечисляются важнейшие из них.
8.2. В процессе диалоговой работы может быть включена трассировка вызовов процедур и трассировка присваиваний (прокрутка). Включение и выключение этих механизмов осуществляется при помощи соответствующей разновидности предписаний ВКЛЮЧИТЬ и ВЫКЛЮЧИТЬ (диаграмма 6).
8.3. В языке предусмотрена возможность организовать проверку утверждений о программе, записанных в виде условий на языке Рапира. Такая проверка осуществляется с помощью предписания КОНТРОЛЬ, синтаксис которого описывается диаграммой 15. Если при исполнении этого предписания условие оказывается ложным, формируется выход по ошибке.
8.4. Наряду с контрольными точками в Рапире можно описать набор условий — инвариантов, проверка которых будет выполняться при каждом присваивании. Включение нового инварианта осуществляется по предписанию ВКЛЮЧИТЬ КОНТРОЛЬ, а выключение — по предписанию ВЫКЛЮЧИТЬ КОНТРОЛЬ. Если при некотором присваивании хотя бы один инвариант оказался ложным, формируется выход по ошибке.
8.5. Обработка ошибок и прерываний в Рапире является программируемой. При возникновении ошибки или прерывания система формирует обращение к стандартной функции, которая осуществляет обработку исключительной ситуации. Эта функция доступна пользователю, что позволяет ему описать на Рапире свою функцию для обработки исключительных ситуаций.
8.6. В число отладочных средств входят и некоторые конструкции и механизмы Рапиры, описанные в предыдущих разделах, в частности:
1. Режим приостановки процедур;
2. Контроль типов имен (для диалоговой версии);
3. Защита имен по записи.
8.7. Отладочные средства, перечисленные в пунктах 8.2-8.4, а также проверка типов имен функционируют только в отладочном режиме, включаемом при помощи предписания ВКЛЮЧИТЬ ОТЛАДКУ

Выдающиеся программисты СССР: Екатерина Логвиновна Ющенко

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

Екатерина Логвиновна Ющенко (1919-2001 г.г.)

Из биографии

Родилась Екатерина Логвиновна Ющенко (в девичестве Рвачева) 8 декабря 1919 г. в историческом городе Чигирине (центральная Украина). Отец Логвин Федорович Рвачев преподавал историю и географию, мать была домохозяйкой. В 1937 г. по доносу отца арестовали, как «врага советской власти». В последствии его осудили на 10 лет тюрьмы. Та же участь постигла и мать Екатерины, отправившуюся за мужем, дабы доказать его невиновность. Принесенные ею документы, свидетельствующие о том, что Логвин Федорович участвовал в революционном движении, были уничтожены. И лишь в 1954 г. после смерти Сталина родители Ющенко были реабилитированы посмертно в связи с отсутствием состава преступления.
Когда разворачивалась эта семейная трагедия, Екатерине было 17 лет. Девушка училась на первом курсе физико-математического факультета Киевского университета. Но после известия об аресте родителей, ее исключили из учебного заведения, как дочь «врага народа». Ющенко не смирилась со своей участью и в 1938 г. подала документы в Московский университет. И ее приняли. Но поскольку общежитие не предоставлялось, она была вынуждена отказаться от предложения. Тогда девушка обратилась в воронежский университет, где, по рассказам знакомых, всех студентов обеспечивали жильем. Ющенко согласились взять на учебу, только без назначения стипендии (опять таки, из-за арестованных родителей). Скитания девушки завершились благодаря случаю. Екатерина увидела объявление о том, что Узбекский государственный университет (г. Самарканд) объявляет набор студентов, обеспечивает их жильем и стипендией, а также оплачивает дорогу. Ющенко ухватилась за представившуюся возможность и поехала в Самарканд. Она успешно поступила в университет и всецело занялась учебой.

Ющенко с сокурсницами, (40-е г.)
Во время войны Узбекский университет объединили со Среднеазиатским государственным университетом в Ташкенте и студентка была перенаправлена туда. Она продолжала учебу и параллельно устроилась на работу на военное предприятие, занимающееся производством прицелов для танковых пушек.
По окончанию университета перед Ющенко встал главный вопрос — что делать дальше? Будущее было туманно и неопределенно. Война свирепствовала и будто не думала прекращаться, назначения на работу никто не выдавал. Тогда девушка решилась ответить на призыв прийти на помощь шахтерам Ангренского угольного комбината для увеличения добычи угля (поскольку Донбасс был оккупирован фашистами). Вместе с другими девушками-комсомолками, Ющенко отправилась в город Ангрен-Сталин (150 км от Ташкента). Екатерину поставили на должность запальщика-взрывника. Работа была невероятно сложной, особенно для неопытной и юной девушки. Она тосковала за домом и за наукой, пыталась находить утешение в сочинении стихов. Вот один из них:
Мой город
Я бросила город, шум улиц, театр
За уголь я в горы пошла воевать.
Сама, добровольно, на новом пути
Мой город любимый, пойми и прости…
Ты помнишь, бывало в студенчества дни
С тобой расставаться лишь летом могли:
Дом, отдых, экскурсия, воздух, вода
Жизнь — полная чаша, златые года.
Но все ж я скучала за шумом твоим
Твой говор казался таким дорогим
И вот я в другие прибыла края
Прости меня, город, грустить здесь нельзя…
Сон утром тревожит нам гучный гудок
Зовет он: «Девчата, к труду будь готов!»
И хоть мне не нужен ни Планк, ни Бернштейн
Что вас изучала, не зная ночей
Я вас не забуду, вернусь еще к вам
Как только сломаем хребет злым врагам.
Ты понял, надеюсь, мой город родной
Когда возвращусь, как я встречусь с тобой…
В 1943 г. на комбинат пришел приказ вернуть в школы всех имеющих оконченное педагогическое образование. Ющенко направили учителем в ташкентскую среднюю школу, где она почти 2 года преподавала математику и физику.
Лишь после окончания войны Ющенко вернулась на родную Украину и смогла полноценно заняться наукой. Во Львове как раз открылся филиал Института математики АН Украины. Будущий академик АН Украины Борис Владимирович Гнеденко разглядел потенциал в Екатерине и предложил работу в его отделе теории вероятностей. Женщина занималась специальными вопросами теории вероятностей и получила оригинальные результаты по многомерным устойчивым законам распределения, важным для развития квантовой механики.

Академик АН Украины Б. В. Гнеденко
В 1950 г. Ющенко успешно защитила кандидатскую диссертацию. В том же году Гнеденко избрали действительным членом АН Украины, а его отдел перевели в Киевский институт математики АН Украины. Он предложил Ющенко тоже переехать в Киев.

Работа с компьютером МЭСМ

Институт математики активно развивался и был в эти годы на взлете. Его директор академик Александр Юльевич Ишлинский занимался теорией гироскопов — проблемой, достаточно актуальной для времени, когда строительство спутников находилось в самой зачаточной стадии. Исследования требовали постоянного проведения сложных расчетов. По этой причине был закуплен комплект вычислительно-аналитических машин. В подвале здания президиума АН Украины оборудовали целую вычислительную лабораторию, руководителем которой назначили Екатерину Логвиновну.
В 1954 г. по инициативе академика Гнеденко в Институт математики была переведена лаборатория Сергея Алексеевича Лебедева, вместе с первым в Европе компьютером МЭСМ. Разработка этой Малой электронной счётной машины велась около двух лет (1949 по 1951 г.г.). Она создавалась, как макет или модель Большой электронной счётной машины (БЭСМ). Но после первых успехов в вычислениях было принято решение довести макет до полноценного компьютера, который сможет выполнять реальные задачи. К эксплуатации МЭСМ подключилась группа ученых, среди которых оказалась и Ющенко.

Компьютер МЭСМ эксплуатировали до 1957 г., после чего он перешел в КПИ для учебных целей
У МЭСМ была ограничена внутренняя память, невысокое быстродействие и неустойчивость работы, вызванная большим количеством электронных ламп. Это все вынуждало составителей программ изощряться и находить разнообразные способы использования внутреннего языка компьютера. Составление каждой программы рассматривалось как решение индивидуальной задачи. Программисты искали экономные решения, пользуясь разными особенностями системы команд компьютера.

Команда программистов и вычислителей (1956 г.)
Со слов коллеги-программиста Надежды Михайловны Мищенко:
Это фотография программистов и вычислителей, которыми руководила Екатерина Логвиновна (на фотографии она третья слева). Снимок был сделан в качестве подарка женщинам перед праздником 8 Марта (1956 г.). Слева от Ющенко — программисты Ядренко Энгелина Константиновна и Заика Лидия Дмитриевна. Справа — Святоха Александра Петровна (руководитель группы вычислителей, которые на снимке находятся по правую руку от нее). Женщины работали на настольных электрических вычислительных машинках ReinMetal. В их обязанности входило выполнение заданий программистов на вычисления по формулам, в частности, с целью получения так называемых контрольных точек (то есть данных, необходимых для отладки программ на МЭСМ). Вычислители занимались также вводом данных и программ в машину МЭСМ.
В процессе работы стало ясно, что решать сложные задачи путем написания просто машинных программ — дело весьма затруднительное. В результате чего возникла потребность в разработке языка программирования «высокого уровня». И одновременно с этим появилась необходимость в создании соответствующего транслятора для коммуникации между человеком и машиной.

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

Проделанная работа члена корреспондент АН СССР Алексея Андреевича Ляпунова, предложившего операторный метод программирования, стала источником вдохновения для развития теоретического программирования. В 1955 г. Ющенко с помощью советского математика Владимира Семеновича Королюка разработала адресный язык программирования. Он воплотил два общих принципа работы компьютера – адресность и программное управление. Создавая удобную систему понятий для описания архитектуры компьютера и его системы команд, авторы добавили средства манипулирования адресами второго ранга.

Доктор физико-математических наук В. С. Королюк
Адресный язык программирования — алгоритмический язык, который ориентирован на приложения в качестве основы для создания языков программирования. В его основе находится отношение адреса и содержимого, формализация этого отношения позволяет в простой форме описывать операции, реализуемые на Цифровой Вычислительной Машине (ЦВМ).
Описание вычислительного процесса на адресном языке называется адресным алгоритмом. Вместе с множеством элементов информации (исходные данные, промежуточные и окончательные результаты) рассматривается множество адресов. В частном случае такими адресами являются номера ячеек запоминающего устройства ЦВМ, в которых находятся исходные данные. Каждый элемент информации однозначно соответствует определенному адресу. Точно также и некоторые адреса могут однозначно соответствовать другим адресам. Если b — элемент информации или адрес, однозначно соответствующий адресу а, то в адресном языке такая комбинация будет формулой ‘a = b. Выражение, которое образовалось из математических символов и знака (‘), называется адресной функцией. Вычисление новых значений и засылка их по определённым адресам задаётся адресной формулой, то есть двумя адресными функциями, соединёнными символом засылки (=>). В данном случае запись b=>a означает, что элемент информации или адрес b записывается по адресу а.

Ющенко Е. Л. Адресное программирование (1963 г.)
Именно создание адресного языка стало первым фундаментальным достижением научной школы теоретического программирования. Адресный язык стал основой возникновения первых языков программирования, таких как Фортран (1958 г.), Кобол (1959 г.) и Алгол (1960 г.). Также он опередил не только появление языков программирования с аппаратом косвенной адресации, но и возникновение ассемблеров (трансляторов исходного текста программы). А его конструкции вошли в состав современных языков.
C этого адресного языка уже в начальный период развития кибернетики в АН УССР были созданы трансляторы, облегчившие процесс программирования для имевшихся в то время в СССР ЭВМ первого и второго поколений («Киев», «Урал-1» и М-20). Впоследствии подобными трансляторами снабдили и другие отечественные ЭВМ.

Екатерина Ющенко и советский математик, кибернетик, академик АН СССР Виктор Михайлович Глушков (60-е г.)

Екатерина Логвиновна — выдающийся человек

Ющенко внесла неоценимый вклад в развитие теоретического программирования и оставила после себя немало значимых научных трудов. Совместно с Б. В. Гнеденко и В. С. Королюком она написала первый в СССР учебник по программированию «Элементы программирования». Книга была издана в 1961 г. Переиздана в 1964 г. и в том же году вышли переводы издания в ГДР и Венгрии, а в 1969 г. во Франции.

За последующие годы жизни Ющенко подготовила 45 кандидатов и 11 докторов наук. Киевская школа теоретического программирования стала известной далеко за пределами Советского Союза. Екатерине Логвиновне присудили две Государственные премии УССР и премию Совета Министров СССР, а за теоретические разработки в области компьютерной алгебры — академическую премию имени Глушкова. Также она была награждена Орденом княгини Ольги.
Эта талантливая женщина-программист получила 5 авторских свидетельств. Она является автором более 200 научных работ, в том числе 23 монографий и учебных пособий, часть которых переведена и издана в Германии, Чехии, Венгрии, Франции, Дании.

Ющенко, Екатерина Логвиновна

В Википедии есть статьи о других людях с фамилиями Ющенко, Ющенко, Екатерина и Рвачёв.

Екатерина Логвиновна Ющенко

укр. Катерина Логвинівна Ющенко

Дата рождения

8 декабря 1919

Место рождения

  • Чигирин, Киевская губерния, Украинская Советская Социалистическая Республика

Дата смерти

15 августа 2001 (81 год)

Страна

  • Украина
  • СССР

Научная сфера

кибернетика

Место работы

  • Институт кибернетики имени В. М. Глушкова
  • Институт математики НАН Украины

Альма-матер

  • САГУ (1942)

Учёная степень

доктор физико-математических наук

Научный руководитель

Виктор Михайлович Глушков

Награды и премии

Екатерина Логвиновна Ющенко на Викискладе

Екатерина Логвиновна Ющенко (укр. Катерина Логвинівна Ющенко; в девичестве Рвачева; 8 декабря 1919, Чигирин — 15 августа 2001) — советский и украинский кибернетик и программист, автор одного из первых в мире языков программирования высокого уровня («Адресного языка программирования»). Член-корреспондент Национальной академии наук Украины (1979), почётный член Академии наук Молдавии (2001), дважды лауреат Государственной премии Украины, лауреат премии Совета Министров СССР, лауреат премии имени В. М. Глушкова.

Научная деятельность

Первые научные исследования в области теории вероятностей и математической статистики Екатерина Ющенко проводила в Львовском отделе Института математики под руководством академика Б. В. Гнеденко.

С 1954 года работает в области вычислительной математики, разрабатывает алгоритмы для МЭСМ, в том числе алгоритмы решения задач внешней баллистики для ракетно-космических комплексов, разработки планов производства и т. п.

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

Екатерина Логвиновна была в числе авторов (с Б. В. Гнеденко и В. С. Королюком) первого учебника по программированию в СССР — книги «Элементы программирования», изданной в 1961 году, переизданной в 1964 году, а также в переводе: в 1964 году в ГДР и Венгрии, а 1969 году во Франции.

Под её руководством и с непосредственным участием была создана серия инструментально-технологических комплексов. За работы в этой отрасли ей были присуждены две Государственные премии Украины (Государственные премии УССР) и премия Совета Министров СССР, а за теоретические разработки в области компьютерной алгебры — академическая премия имени Глушкова. Также Е. Ющенко награждена Орденом княгини Ольги.

Е. Л. Ющенко получила 5 авторских свидетельств, ею разработано 8 Государственных стандартов Украины. Она является автором более 200 научных работ, в том числе 23 монографий и учебных пособий, часть которых была переведена и издана в Германии, Чехии, Венгрии, Франции и Дании.

Е. Ющенко подготовила 45 кандидатов и 11 докторов наук.

Была членом редколлегий журналов «Кибернетика и системный анализ» и «Проблемы программирования», членом Научного совета по проблеме «Кибернетика» НАН Украины, членом квалификационного совета по присуждению учёных степеней.

РАПИРА

У этого термина существуют и другие значения, см. Рапира (значения).

РАПИРА — Расширенный Адаптированный Поплан-Интерпретатор, Редактор, Архив — процедурный язык программирования. Разработан в начале 1980-х годов в СССР в качестве средства перехода от более простых языков (в частности, учебного языка Робик) к языкам высокого уровня. Синтаксис построен на основе русской лексики. Язык использовался в школах для изучения информатики. Преподавание на Рапире велось в «Заочной школе программирования» в журнале «Квант» с начала 1980 года.

Как видно из расшифровки названия языка, язык РАПИРА изначально был реализован как набор макрорасширений на базе языка ПОПЛАН — интерпретатора языка POP-2 (англ.)русск. для БЭСМ-6. Некоторые синтаксические конструкции были перенесены из языка Сетл.

Язык Рапира был реализован для БЭСМ-6, а затем для первой советской ПЭВМ «Агат» в начале 1980-х годов силами нескольких студентов и выпускников Новосибирского государственного университета под началом Г. А. Звенигородского, при участии школьников, в том числе на Всесоюзных летних школах юных программистов (ВЛШЮП, 1982 г.). По своим возможностям язык не уступал другим известным на то время учебным языкам.

Существовали также реализации языка Рапира для КУВТ УКНЦ и Ямаха КУВТ, а также для ЕС ЭВМ (1982 г., руководитель разработки на алголе-68 — проф. А. Н. Терехов).

Взгляд на язык

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

Ключевые (зарезервированные) слова:

ВОЗВРАТ ИНАЧЕ ПРОЦ ВСЕ КНЦ ФУН ДО ОТ ШАГ ЕСЛИ ПОВТОР

Пример программы «Здравствуй, мир!»:

ПРОЦ СТАРТ(); ВЫВОД: «ЗДРАВСТВУЙ, МИР!»; КНЦ;

В первоначальной версии языка оператор присваивания обозначался сочетанием символов ->, и порядок операндов в нём был противоположен привычному для большинства языков: слева записывалось вычисляемое выражение, а справа — имя переменной, которой результат вычисления присваивался. Такая форма оператора присваивания была сочтена более логичной, поскольку она лучше соответствует семантике операции: сначала вычисляется выражение, и лишь затем результат записывается в переменную. Однако впоследствии присваивание заменили на «классическое» :=, заимствованное из Алгола и принятое во многих ЯВУ, в том числе и в РАЯ, и вычисляемое справа налево — сначала вычисляется выражение, записанное справа от знака присваивания, а затем оно присваивается переменной, имя которой записано слева от этого знака.

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

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