Invention of a computer "Kyiv" architecture using a concept of Addressed Programming Language

The article is devoted to the history of the origin of high-level programming in Ukraine. The transition from calculations by arithmometers and logarithmic rulers to solving problems on the computer "Kyiv" using pointers and tree-like formats (abstract data types are analogous) is describe...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2022
1. Verfasser: Yuschenko, Yu.O.
Format: Artikel
Sprache:Ukrainian
Veröffentlicht: Інститут програмних систем НАН України 2022
Schlagworte:
Online Zugang:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/479
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Problems in programming

Institution

Problems in programming
id pp_isofts_kiev_ua-article-479
record_format ojs
resource_txt_mv ppisoftskievua/d0/b2bcd7e2e1b921ae1383edec64530dd0.pdf
spelling pp_isofts_kiev_ua-article-4792022-02-20T15:40:02Z Invention of a computer "Kyiv" architecture using a concept of Addressed Programming Language Розробка архітектури комп′ютера "Київ" за концепцією адресного методу програмування Yuschenko, Yu.O. history; stroke-operation; indirect addressing; pointers; programming; tree-like formats; arrays; lists; structures; abstract data types UDC 94::004:004.[235+43+655.3] історія; штрих-операція; опосередкована адресація; вказівники; програмування; деревоподібні формати; масиви; списки; структури; абстрактні типи даних УДК 94::004:004.[235+43+655.3] The article is devoted to the history of the origin of high-level programming in Ukraine. The transition from calculations by arithmometers and logarithmic rulers to solving problems on the computer "Kyiv" using pointers and tree-like formats (abstract data types are analogous) is described. The factors that contributed to this transition include: the experience of providing instructions for calculations by arithmometers, and the experience of programming on MESM. As a result a computer "Kyiv" has been developed with a hardware-implemented possibility of high-level programming, invention of the Addressed Programming Language with indirect addressing (pointers), tree formats and declarative capabilities.Hardware-realized demining of pointers in the computer "Kyiv" is one of the outstanding inventions of Ukrainian engineers and mathematicians at the initial stage of the information technologies development. At that time it was significantly ahead of the world technologies. Programming in computer "Kyiv", unlike Plankalkül, could identify and process complex structures. The paper describes the individual applications of the Address Programming Language, which was implemented on many Soviet-made computers and has been used by programmers for more than 20 years. Due to the so-called "Iron Curtain", scientists in the field of programming outside the post-socialist world still do not know about the invention of pointers by Kiev scientists. A textbook describing the Addressed Programming Language was translated into many languages. A monograph with a description of the computer architecture "Kyiv" and of the Addressed Programming Language was translated into English and published in the United States in 1966.Prombles in programming 2021; 4: 103-118 Описано поступовий перехід від розрахунків логарифмічними лінійками та арифмометрами до використання мови високого рівня з вказівниками та складними ієрархічними структурами. В статті розглянуто фактори, які сприяли цьому важливому технологічному переходу. Робота відновлює загублену ланку історії виникнення в Україні опосередкованої адресації (вказівників) вищих рангів та складних ієрархічних структур. Надаються підтвердження винайдення вказівників та складних структур даних київськими вченими, описано апаратну реалізацію в комп’ютері "Київ" "штрих-операції" (розіменування вказівників) та операцій задання циклів. У роботі обґрунтовується високорівневість програмування у командах комп’ютера "Київ" шляхом порівняння з мовою програмування високого рівня – Plankalkül.Prombles in programming 2021; 4: 103-118 Інститут програмних систем НАН України 2022-02-07 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/479 10.15407/pp2021.04.103 PROBLEMS IN PROGRAMMING; No 4 (2021); 103-118 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 4 (2021); 103-118 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 4 (2021); 103-118 1727-4907 10.15407/pp2021.04 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/479/483 Copyright (c) 2022 PROBLEMS IN PROGRAMMING
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2022-02-20T15:40:02Z
collection OJS
language Ukrainian
topic history
stroke-operation
indirect addressing
pointers
programming
tree-like formats
arrays
lists
structures
abstract data types
UDC 94::004:004.[235+43+655.3]
spellingShingle history
stroke-operation
indirect addressing
pointers
programming
tree-like formats
arrays
lists
structures
abstract data types
UDC 94::004:004.[235+43+655.3]
Yuschenko, Yu.O.
Invention of a computer "Kyiv" architecture using a concept of Addressed Programming Language
topic_facet history
stroke-operation
indirect addressing
pointers
programming
tree-like formats
arrays
lists
structures
abstract data types
UDC 94::004:004.[235+43+655.3]
історія
штрих-операція
опосередкована адресація
вказівники
програмування
деревоподібні формати
масиви
списки
структури
абстрактні типи даних
УДК 94::004:004.[235+43+655.3]
format Article
author Yuschenko, Yu.O.
author_facet Yuschenko, Yu.O.
author_sort Yuschenko, Yu.O.
title Invention of a computer "Kyiv" architecture using a concept of Addressed Programming Language
title_short Invention of a computer "Kyiv" architecture using a concept of Addressed Programming Language
title_full Invention of a computer "Kyiv" architecture using a concept of Addressed Programming Language
title_fullStr Invention of a computer "Kyiv" architecture using a concept of Addressed Programming Language
title_full_unstemmed Invention of a computer "Kyiv" architecture using a concept of Addressed Programming Language
title_sort invention of a computer "kyiv" architecture using a concept of addressed programming language
title_alt Розробка архітектури комп′ютера "Київ" за концепцією адресного методу програмування
description The article is devoted to the history of the origin of high-level programming in Ukraine. The transition from calculations by arithmometers and logarithmic rulers to solving problems on the computer "Kyiv" using pointers and tree-like formats (abstract data types are analogous) is described. The factors that contributed to this transition include: the experience of providing instructions for calculations by arithmometers, and the experience of programming on MESM. As a result a computer "Kyiv" has been developed with a hardware-implemented possibility of high-level programming, invention of the Addressed Programming Language with indirect addressing (pointers), tree formats and declarative capabilities.Hardware-realized demining of pointers in the computer "Kyiv" is one of the outstanding inventions of Ukrainian engineers and mathematicians at the initial stage of the information technologies development. At that time it was significantly ahead of the world technologies. Programming in computer "Kyiv", unlike Plankalkül, could identify and process complex structures. The paper describes the individual applications of the Address Programming Language, which was implemented on many Soviet-made computers and has been used by programmers for more than 20 years. Due to the so-called "Iron Curtain", scientists in the field of programming outside the post-socialist world still do not know about the invention of pointers by Kiev scientists. A textbook describing the Addressed Programming Language was translated into many languages. A monograph with a description of the computer architecture "Kyiv" and of the Addressed Programming Language was translated into English and published in the United States in 1966.Prombles in programming 2021; 4: 103-118
publisher Інститут програмних систем НАН України
publishDate 2022
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/479
work_keys_str_mv AT yuschenkoyuo inventionofacomputerkyivarchitectureusingaconceptofaddressedprogramminglanguage
AT yuschenkoyuo rozrobkaarhítekturikompûterakiívzakoncepcíêûadresnogometoduprogramuvannâ
first_indexed 2025-07-17T09:56:42Z
last_indexed 2025-07-17T09:56:42Z
_version_ 1838410296500158464
fulltext 103 Історія програмування Вступ Наразі спостерігається підвищення цікавості людей до історії інформаційних технологій (ІТ), що обумовлено лавинопо- дібним зростанням значущості ІТ у всіх сферах науки, виробництва, економіки, по- літики та взагалі у всіх видах діяльності та дозвілля людей. У світі особлива увага приділяється зародженню інформаційних технологій. Зародженню перших комп’ютерів та виникнення програмування присвячено багато публікацій. Однак, на думку автора, втрачена важлива ланка в історії ІТ, що б мала пояснити перехід від низькорівневого програмування до високорівневого. Стат- тя, на основі наукових публікацій [2-5, 7, 11, 10, 14, 20, 21, 26, 29, 39-42], спогадів очевидців [12, 13, 15, 18, 19, 22, 23, 30, 31, 38, 46], історичних публікацій [9, 24, 32- 34] та спогадів К.Л. Ющенко, відновлює цю загублену ланку. Мета статті відновити загублену в історії ланку зародження в Україні програ- мування високого рівня з потужними засо- бами, які використовуються в усіх сучас- них технологіях програмування. Метою статті є визначення факторів, які сприяли винайденню високорівневого Адресного програмування з потужними можливостя- ми адресації. На зародження в Україні високорів- невого програмування вплинуло викорис- тання інструкцій для розрахунків ариф- мометрами та досвід програмування на комп’ютері МЕСМ1 [11 (стор. 36: Т. 2), 18, 43] з обмеженими ресурсами. Під час роз- робки асинхронного комп’ютера «Київ» важливу роль відіграли висококваліфікова- ні інженери, які розроблювали МЕСМ [15]. Виникненню програмування висо- кого рівня сприяв операторний метод про- грамування [11], до якого О.А. Ляпунов прийшов під час досліджень програмуван- ня на МЕСМ у Феофанії влітку 1952р. [44]. 1953 року в наукових статтях, семінарах та лекціях О.А. Ляпунов оприлюднює опера- торний метод програмування [9, 11, 18, 21, 22, 29, 43]. Можливість динамічної модерніза- ції програм МЕСМ наштовхнула на ідею створення однією програмою інших про- грам, тобто програмуючих програм, які згодом було названо компіляторами та трансляторами. 1. Діяльність Б.В. Гнєденка Б.В. Гнєденко 1949 року, на семінарі із розробки МЕСМ, порадив С.О. Лебедєву збільшити розрядність комірок пам’яті з 12 до 17 [13, 18, 23, 24, 30]. Без цього збіль- УДК 94::004:004.[235+43+655.3] https://doi.org/10.15407/pp2021.04.103 Ю.О. Ющенко РОЗРОБКА АРХІТЕКТУРИ КОМП′ЮТЕРА «КИЇВ» ЗА КОНЦЕПЦІЄЮ АДРЕСНОГО МЕТОДУ ПРОГАМУВАННЯ Описано поступовий перехід від розрахунків логарифмічними лінійками та арифмометрами до ви- користання мови високого рівня з вказівниками та складними ієрархічними структурами. В статті розглянуто фактори, які сприяли цьому важливому технологічному переходу. Робота відновлює за- гублену ланку історії виникнення в Україні опосередкованої адресації (вказівників) вищих рангів та складних ієрархічних структур. Надаються підтвердження винайдення вказівників та складних структур даних київськими вченими, описано апаратну реалізацію в комп’ютері «Київ» «штрих- операції» (розіменування вказівників) та операцій задання циклів. У роботі обґрунтовується високо- рівневість програмування у командах комп’ютера «Київ» шляхом порівняння з мовою програмування високого рівня – Plankalkül. Ключові слова: історія, штрих-операція, опосередкована адресація, вказівники, програмування, де- ревоподібні формати, масиви, списки, структури, абстрактні типи даних. © Ю.О. Ющенко, 2021 ISSN 1727-4907. Проблеми програмування. 2021. № 4 1 Російською “МЭСМ” (малая электронная счетная машина). 104 Історія програмування шення комп’ютер не був би придатний для розрахунків. Б.В. Гнєденко запропонував долу- читися до програмування В.С. Королю- ку, який під час навчання в аспірантурі у А.М. Колмогорова, відвідував московські наукові семінари із програмування та слу- хав лекції О.А. Ляпунова [13, 18]. Після повернення з НДР Б.В. Гнє- денко очолює лабораторію обчислюваль- ної техніки, яка утворюється шляхом об’єднання обчислювальної лабораторії ІМ УН УРСР (керівник К.Л. Ющенко) [31] з лабораторією моделювання та обчислю- вальної техніки Інституту електродинамі- ки (керівник С.О Лебедєв). В.С. Королюк разом із К.Л. Ющен- ко з 1955/56р. навчального року починають читати лекції у КДУ та КПІ по операторно- му та адресному методах програмування, організованих Б.В. Гнєденком [13, 23, 46]. 1957 року К.Л. Ющенко та В.С. Королюк опублікували у КДУ обмеженим накладом перший у СРСР підручник із програму- вання з описом операторного та адресно- го методів програмування [46 (стор. 36)]. Цей підручник побачив світ 1961р. та пере- кладався й видавався у європейських краї- нах: Угорщині [5], Чехословаччині, східній Німеччині [4], Югославії та Данії. 1963р. додатки до цього підручника з описом ар- хітектури п’яти радянських комп’ютерів, включаючи комп’ютер «Київ», переклада- ються англійською мовою та публікуються у США 1963р. [7]. А 1969р., після 12 ро- ків від часу написання, видають французь- кою у Франції [3]. У підручнику описуєть- ся концепція опосередкованої адресації (Pointers) вищих рангів, відношення слі- дування, а у додатку з описом архітектури комп’ютера «Київ» детально описано опе- рації модифікації адрес із можливістю ви- конання «штрих-операції» (розіменування Pointers) та операцій задання циклів. Очолюючи лабораторію обчислю- вальної техніки, Б.В. Гнєденко організовує наукові семінари із проєктування архітек- тури великого універсального асинхрон- ного керуючого комп’ютера «Київ» та ав- томатизації програмування. Як науковий керівник розробки комп’ютера заглиблю- вався в деталі архітектури та тонкощі про- грамування [13, 23, 24, 46]. 2. Актуальність У світі приділяється велика увага іс- торії зародження програмування, створено багато музеїв історії інформаційних техно- логій, існує багато публікацій, знято низку документальних та художніх фільмів. На підставі детального досліджен- ня та аналізу доступних джерел автор дійшов висновку, що важлива ланка пере- ходу від програмування низького рівня до програмування високого рівня [9, 11, 12, 18, 21, 22, 30, 38] не вповні описана в іс- торії ІТ. Лише частково цей перехід запо- внює операторний метод програмування, який по праву вважається передумовою зародження програмування високого рів- ня у СРСР. В Україні перехід від програмуван- ня низького рівня до високорівневого про- грамування відбувався одночасно з вклю- ченням в нього опосередкованої адресації (Pointers) вищих рангів та універсальних засобів групування даних і підпрограм у складні ієрархічні структури (деревоподіб- ні формати2). Основний науковий резуль- тат цієї статті полягає у визначенні переду- мов та причинно-наслідкових зв’язків, які сприяли та привели до винаходу киянами потужних засобів програмування, без яких не обходиться жодна сучасна технологія програмування. Однак історики інформа- ційних технологій ніколи не зазначають про цей значний внесок українців у заро- дження та розвиток програмування. Історія та передумови виникнення найпотужніших засобів у програмуванні дуже цікава програмістам, але досі зали- шалася не розкритою. Важливість статті полягає у деталь- ному аналізі передумов поступового заро- дження в Україні програмування високого рівня з вказівниками та універсальними можливостями групування та з’єднання даних і підпрограм у деревоподібні фор- мати (складні ієрархічні структури), яким подібні абстрактні типи даних. 2 В оригінальних працях [40] використовується термін «деревообразные форматы» (рос.). 105 Історія програмування Чомусь, ані державні структури, ані відомі ІТ-компанії не виявляють заці- кавлення у визнанні світовою спільнотою важливих досягнень українців в ІТ. Укра- їнські ЗМІ, музеї та інші державні та не- державні установи мають приділяти гідну увагу внеску українських вчених у розви- ток світових ІТ. Україна має донести, як до своїх співвітчизників, так і до міжнародної спільноти, інформацію про всесвітньо зна- чущі досягнення українців. Світова спільнота докладає багато зусиль для збереження історії зародження та розвитку ІТ. Визнання всім світом сут- тєвого внеску українців у зародження по- тужних засобів програмування має велике значення для збереження всесвітньої іс- торії ІТ та дуже важливе для національно патріотичного виховання молоді. 3. Публікації по Адресному програмуванню Існує багато підтверджень того, що саме в Феофанії у 50-х роках мину- лого сторіччя були винайдені фундамен- тальні засоби універсального групування, з’єднання даних та підпрограм у складні ієрархічні структури. Зазначені підтвер- дження наявні у публікаціях із Адрес- ної мови програмування, із архітектури комп’ютера «Київ» та в інших джерелах, зокрема, в [11, 20]. Підручник із програ- мування, який публікувався багатьма мо- вами, містить опис опосередкованої адре- сації (вказівників) вищих рангів. У до- датках до підручника містяться підтвер- дження апаратної реалізації в комп’ютері «Київ» операцій маніпуляцій з адресами 2-ого рангу (вказівниками) та задавання циклів. Окрім підручника з додатками вичерпні та беззаперечні підтвердження винаходу українцями вказівників опублі- ковані 1966р. у США [2] в перекладеній англійською мовою монографії, присвяче- ній комп’ютеру «Київ» з описом Адресної мови програмування [10]. Однак, у закордонних джерелах з іс- торії програмування не згадуються випе- редження українцями світових досягнень на багато років. Українським програмістам також мало відомо про Адресну мову, а про те, що в ній були вказівники, складні ієрар- хічні структури та декларативні можливос- ті [1-5, 11, 10, 20, 39-42, 45] вони не вірять. Головні підтвердження винахо- ду українськими вченими вказівників та складних ієрархічних структур наявні в архітектурі асинхронного комп’ютера «Київ». Так, його Ф-операція може вико- нувати «штрих-операції» (розіменування Pointers), а групові операції дозволяють задавати цикли [9 (Т. 1 стор. 489)]. При цьому мови програмування ФОРТРАН, КОБОЛ та АЛГОЛ-60, які помилково вва- жаються першими мовами програмування високого рівня, з’являються декількома роками пізніше за Адресну мову. Опублікований у США 1963р. опис архітектури комп’ютера «Київ» [7] свідчить, що американським ученим у 1964р., на час винаходу ними вказівників (Pointers), вже було відомо про винахід кия- нами опосередкованої адресації (Pointers). За таких обставин можна припустити, що американські вчені досі не звернули увагу на доступні їм та наявні у США матеріали [2, 7] з Адресної мови програмування та комп’ютеру «Київ». 4. Причини невідомості Розглянемо причини, які пояснюють, чому випередження українців невідомі за кордоном та маловідомі в самій Україні. Перша причина полягає у тому, що до 1956р. розв’язувалися задачі для обо- ронної космічної галузі, включаючи роз- рахунки для проєктування водневої бом- би, наслідків її вибуху, розрахунки тра- єкторій польотів дальніх балістичних та космічних ракет [15, 18, 30, 31]. Ці роботи були під грифом суворої державної таєм- ниці, що було перепоною в оприлюдненні будь-яких матеріалів. Друга причина криється у заван- таженості МЕСМ. Загальновідомо, що у 1952/53 роках МЕСМ був фактично єди- ним у СРСР комп’ютером, який регулярно використовувався для розв’язку задач [15 (стор. 53)]. Перелік цих задач опубліковано у джерелах [18, 30, 31, 43]. Третя причин а полягає у недооці- ненні значущості програмування у часи зародження інформаційних технологій. За- конів щодо захисту прав на інтелектуальну 106 Історія програмування власність у Радянському союзі не існувало. Вироби інженерів є матеріалізованими, їх можна побачити та доторкнутися до них, а програму ні побачити, ні відчути на дотик нема як. Оплата праці програмістів була значно меншою від зарплатні інженерів. Четверта причина криється у тому, що за тоталітарного режиму не надто ві- рили, що у «провінційному» Києві, без фінансування з центру, Москви, можливі якісь суттєві досягнення. В СРСР увагу та розголос набували лише ті досягнення, які керівникам від науки вдавалося заявляти за свої [13, 24, 32]. П’ята причина полягає у тому, що то- талітарним комуністичним режимом було прийнято рішення переходу на мови ФОР- ТРАН, КОБОЛ та АЛГОЛ-60 та забороні подальшої роботи над Адресною мовою, яка була значно потужнішою за ці мови та мала очевидні переваги над ними. Було та- кож заборонено публікувати та виступати на семінарах чи конференціях. Розпочаті роботи із реалізації компілятора з Адрес- ної мови програмування для БЕСМ-6 було припинено [32, 44]. В останній публікації з Адресної мови [26] автори намагаються відстояти Адресну мову та демонструють її переваги над мовами ФОРТРАН, КОБОЛ та АЛГОЛ-60, але «вирок» було винесено. Однак, саме тоді перекладається та вида- ється підручник з Адресної мови [14] у багатьох країнах східної Європи [4, 5] та у Франції [3], а 1966р. монографія [10] з описом архітектури комп’ютера «Київ» та Адресної мови публікується англійською у США [2]. Рано чи пізно людству стануть ві- домі видатні винаходи українців. Визна- ння значного внеску українців у технології програмування стримується певними об- ставинами. Багато українських програміс- тів не вірять або не розуміють, що вказів- ники є повним аналогом опосередкованої адресації 2-ого рангу. Обмаль публікацій з деревоподібних форматів та їх застосуван- ня. Закордонні програмісти повідомлення про винаходи в Україні вказівників 1955р. відносять до «фейкових» та вважають, що Україна мала достатньо часу для визнання своєї першості у таких важливих для люд- ства винаходах. 5. Передумови зародження Адресного програмування Вельми часто у джерелах зустріча- ється твердження, що перші комп’ютери розроблювались інженерами без участі математиків. Однак це не відповідає дій- сності, бо 1948 року С.О. Лебедєв до се- мінарів по проєктуванню комп’ютера МЕСМ, зокрема, для визначення операцій, залучав видатних математиків: А.О. До- родніцина, К.А. Семендяєва, М.О. Лаврен- тьєва, Б.В. Гнєденка, О.Ю. Ішлінського, О.О. Харкевича та ін. [13, 18, 24]. Також у розробці комп’ютера «Київ», як і інших київських комп’ютерів, безпосередньо брали участь математики. Керівником роз- робки комп’ютера «Київ» був математик Б.В. Гнєденко. Інженер Л.Н. Дашевський керував розробкою інженерної складової. Розробкою архітектури та математичного (програмного) забезпечення опікувалася К.Л. Ющенко. Розробка математичних вимог до комп’ютера «Київ» відбувалася паралель- но з роботою над створенням та розвитком Адресної мови [10 (стор. 53)]. Отже, розвиток технічної бази та програмного забезпечення в Україні відбу- вався нерозривно один від одного. З одного боку архітектура та можливості реалізації операцій впливали на можливості та ме- тоди програмування, а з іншого – на вибір операцій вплинули особливості Адресної мови програмування. Система операцій розроблювалось з урахуванням потреб зручності програмуванні та спрямовува- лась на легкість складання та сприйняття програм. До системи команд включались «скорочення» (мнемонічні коди), які засто- совувались програмістами на МЕСМ [43]. Автоматизація програмування у Ки- єві відбувалась незалежно та вельми ві- дірвано від світового розвитку ІТ [20]. Є можливість чітко визначити особливості поступового переходу київськими мате- матиками від розрахунків за інструкціями логарифмічними лінійками та арифмоме- трами до автоматичних розрахунків про- грам мовою програмування високого рівня з опосередкованою адресацією (вказівни- ками) та деревоподібними форматами. Ви- рішальну роль у зазначеному переході віді- 107 Історія програмування грає унікальна архітектура МЕСМ, яка на- явністю динамічної зміни програм підказа- ла можливість створення програмою іншої програми (компіляторів та трансляторів) [11]. Без наявності у Феофанії МЕСМ ні- чого б не могло бути винайдено. Чи могло програмування високого рівня зародитися ще до появи комп’ютера? Саме так відбувалося в Києві. Неможливо визначити дату ви- никнення програмування високого рівня, оскільки зародження його відбувалось по- ступово та почалося ще до використання комп’ютера в інструкціях для розрахунків логарифмічними лінійками та арифмоме- трами. 6. Інструкції розрахунків арифмометрами Розповсюджена думка, що на змі- ну програмуванню у двійкових машинних командах одразу прийшло програмування високого рівня, є хибною. Досвід складан- ня інструкцій для проведення розрахунків з використанням арифмометрів, логариф- мічних лінійок та рахівниць можна вважа- ти першим кроком до зародження програ- мування високого рівня. У 1950 році для розв’язку навігацій- них задач за допомогою математичної тео- рії гіроскопічних систем О.Ю. Ішлінського, ним, директором математичного інституту АН УРСР, була створена лабораторія3 ме- тодів обчислень та розрахунків. Керівником лабораторії було призначено К.Л. Рвачову (після одруження - Ющенко) [31]. Математичний інститут задля по- легшення проведення розрахунків при- дбав електронні лічильні арифмометри RheinMetal, які розмістили у підвально- му приміщені президії АН УРСР [30, 31]. Окрім електронних арифмометрів, вико- ристовувались і механічні арифмометри, логарифмічні лінійки, а для фіксації про- міжних результатів і звичайні рахівниці. Також, під рукою, були таблиці значень елементарних функцій. Математики обчислювальної лабо- раторії умовно розділялись на дві групи. Представники однієї групи «методів об- числень» за завданням видатних матема- тиків, згідно описаних ними загальних принципів розв’язку задач, формулювали завдання математикам-обчислювачам з ін- шої групи у вигляді інструкцій з деталь- ним описом дій. Ці інструкції писались природною мовою з використанням фор- мальних математичних позначок. Зокрема, інструкції містили формули, розгалуження з перевіркою умов, елементарні функції та математичні позначки: ∀, ∃, ∑, ∏ та інші. Вочевидь, що при виборі операцій МЕСМ, було враховано існуючі на той час методи проведення обчислень із цими позначками. У наступному розділі буде детально роз- глянуто, як такі позначки перетворювались у двійкові команди МЕСМ. Окремі пункти інструкцій являли собою перевірку умов із визначенням пе- реходу на попередній пункт (циклування). Обчислювальна лабораторія розросталася відповідно до потреб проведення розра- хунків для різних задач народного госпо- дарства. До лабораторії відряджалися ма- тематики з різних підрозділів математич- ного інституту. На той час у Феофанії, передміс- ті Києва, тривала розробка комп’ютера МЕСМ, який планувався та призначався для використання математиками ІМ АН УРСР. Співробітники обчислювальної ла- бораторії отримували доступ до державної таємниці. 7. Програми на МЕСМ Із 12.01.1952р. частину співробітни- ків обчислювальної лабораторії, включаю- чи К.Л. Ющенко (Рвачову) та її чоловіка, Ющенка О.А., було відряджено до Феофа- нії для експлуатації МЕСМ, а частина про- довжувала рахувати арифмометрами. Усе, що стосувалося комп’ютера МЕСМ, знаходилося під грифом суворої державної таємниці. Експлуатація МЕСМ внесла корек- тиви у розподіл праці між існуючими гру- пами математиків лабораторії. Відтепер з’явилась можливість перекласти частину розрахунків на комп’ютер. Для викорис- тання комп’ютера частина математиків 3 Іноді у джерелах лабораторію називають обчислювальною лабораторією. Згодом цю лабораторію перейменували у лабораторію методів обчислень та програмування. 108 Історія програмування опанувала складання програм. Обчислю- вачам, які «обертали» ручку арифмоме- тра доручили вводити програми та дані до пам’яті МЕСМ. Процес введення команд у пам’ять комп’ютера був не з простих: команди вводились по «0» та «1» шляхом вставки в отвори штекерів, опускання і піднімання тумблерів [11, 18]. Обчислювачі записували олівцем у зошити результати роботи комп’ютера з оперативної пам’яті: кожен біт опера- тивної пам’яті МЕСМ відображався на фанерних шафах у вигляді сяючої або згаслої лампочки. Для виконання цих робіт штат обчислювачів поповнюється студентками та дівчатами з середньою освітою [31]. Для введення програм застосовува- лись перфострічки. Був магнітний барабан для збереження програм та даних, а 1953р. підключають і друкарський пристрій. Для зручності складання програм для МЕСМ математики замінюють коди операції позначками, а операнди команд мнемонічними літерами. Згодом ці мнемо- нічні коди були вдосконалені внесенням в них простих арифметичних виразів та шаблонів циклів [43]. Обчислювачі, вико- нуючи введення та виведення даних, до- помагали програмістам та звільняли їх від рутинних дій [43]. Так поступово відбувалось набли- ження до високорівневого програмуван- ня. В документації по МЕСМ містяться приклади програм із циклами. Можли- вості команди складання команд МЕСМ дозволяють модифікувати команди в тілі циклів для отримання доступу до значень у сусідніх, послідовно розта- шованих комірках оперативної пам’яті комп’ютера, які у операторному методі програмування отримали назву «еле- менти масивів». Обмеженість ресурсів МЕСМ віді- грала позитивну роль, оскільки змусила програмістів знаходити вишукані прийоми програмування [11, 18]. Математичні позначки суми ∑ та добутку ∏ у формулах за своїм ма- тематичним значенням представляють визначення дій, що повторюються ци- клічно. Під позначками ∑ та могли міс- титись елементи векторів або матриць: i, або не міститись: . Позначки ∑ та ∏ без індексів про- сто записувались у двійкових командах МЕСМ. Із документацією по МЕСМ були надані приклади, як із використан- ням машинних команд записувати послі- довне звернення до значень елементів векторів та матриць в циклічно повто- рюваних діях. Необхідність провести однакові роз- рахунки для кожного значення з певної множини даних позначались квантором за- гальності ∀. Це визначало потребу у повто- ренні дій для кожного елементу з множини значень, тобто повторювати дії на кшталт циклування. Саме ці потреби привели до використання опосередкованої адресації 2-ого рангу (вказівників), що дозволило економити час та зменшити ймовірність помилок під час введення даних. А адресація 2-ого рангу до адрес під- програм дозволила підвищити універсаль- ність програм та підпрограм [43]. Вишука- ні прийоми використання опосередкованої адресації 2-ого рангу, які винайшли кияни, не описано в документації по МЕСМ та відсутні в операторному програмуванні. Подальше узагальнення опосередкованої адресації на адресацію вищих рангів дозво- лило з використанням «штрих-операції» (розіменування вказівників) формалізува- ти відношення слідування комірок пам’яті, які розташовані в пам’яті комп’ютера за довільними адресами. Автоматизації програмування спря- мовувались на полегшення роботи про- грамістів. Мнемонічні коди намагалися наблизити до інструкцій, які складали для розрахунків арифмометрами, що викли- кало набуття мнемонічними кодами ознак високорівневого програмування. У програмуванні на МЕСМ також використовувався відомий бібліотечний метод програмування [11, 21, 22]. Для МЕСМ була розроблена бібліотека стан- дартних підпрограм з підпрограми елемен- тарних функцій. 109 Історія програмування Інженери, які розробили МЕСМ, не збиралися на цьому зупинятися, до їх- ніх планів входила розробка великого ки- ївського комп’ютера, архітектуру якого розробили у 1952-1954р. Офіційно почали збирати комп’ютер у 1954р, який згодом у 1956р. отримав назву «Київ». Досвід використання МЕСМ та роботи з автома- тизації програмування підказали матема- тикам та інженерам важливі та унікальні архітектурні рішення для асинхронного комп’ютера «Київ» широкого призначення. 8. Високорівневі машинні програми комп’ютера «Київ» «Київ» та Адресна мова. Ученій Катерині Ющенко доручили розробку ма- тематичного забезпечення комп’ютера «Київ», включаючи розробку системи ко- манд, системи кодування даних у пам’яті, бібліотечних підпрограм та інші питання, пов’язані з програмуванням. Процес написання програм у ма- шинних кодах для МЕСМ був трудоміст- ким та незручним, оскільки команди для виконання процесором записувались у двійковому коді, незручному для сприй- няття людиною. Під час розробки комп’ютера «Київ» враховувалися потреби полегшення ро- боти не лише програмістам, а й обчислю- вачам. К.О. Шкабара та К.Л. Ющенко ще задовго до початку робіт з проєктування комп’ютера «Київ», обговорювали потре- бу та можливість апаратної реалізації вдо- сконалених мнемонічних кодів програм, можливості модифікації адрес для циклів. Проводилися дослідження заміни введен- ня даних по окремим бітам на введення символів4. Досвід розробки дослідницького компілятора виразів для МЕСМ та мова програмування, яка розроблювалась, вплинули на систему команд комп’ютера «Київ» [9 (Т. 1 стор. 30, 43)]. Система ко- манд комп’ютера широкого призначення мала враховувати потреби розробки про- грамуючої програми (компілятора), мож- ливості обробки текстів та бути зручною для розв’язку логічних та інших задач. На відміну від асинхронного комп’ютера «Київ» широкого призначення, комп’ютери, розроблені до 1955р., призна- чалися виключно для математичних розра- хунків [11, 26] шляхом виконання програм у двійкових машинних кодах або дуже до них наближених. Наприклад, до пам’яті комп’ютера ЕДСАК програми на асемблері вводились спеціальним пристроєм без за- діяння процесора. У комп’ютері «Київ» уперше в світі була апаратно реалізована адресація 2-ого рангу та можливість задання циклів [11 (стор. 489)]. Відтак комп’ютер широкого при- значення «Київ» був першим у світі комп’ютером, у системі операцій якого було закладено потужні засоби програму- вання, які дозволяли визначати та обробля- ти спискові структури. Оскільки операції комп’ютера «Київ» були ближче до мнемонічних ко- дів, ніж команди МЕСМ, то ті ж програми у мнемонічних кодах легше вводились до пам’яті комп’ютера «Київ» ніж до МЕСМ. Згодом, як зазначається в анотації до [40], Адресна мова набуває призначення для перенесення програм між комп’ютерами з різною архітектурою. Автоматизацію програмування зго- дом називають адресним методом програ- мування, а сам термін «мова програмуван- ня» кияни починають застосовувати лише з 1958р. Деякий час вчені вважали, що Адресна мова створена у момент початку використання терміну «мова програмуван- ня» для адресного методу програмування. У ті роки ОЦ АН УРСР набував обертів та для більшої вагомості його досягнень було оголошено, що Адресну мову запропоно- вано в його стінах. Згодом було визначено, що Адресна мова створена 1955р., саме тоді, коли було запропоновано адресний метод програмування та запущено про- цесор комп’ютера «Київ» з апаратно реа- лізованою головною, базовою складовою Адресної мови програмування [11 (Т. 1 стор. 61)]. Згідно зі спогадами інженерів та очевидців С.Б. Погребинського і Б.М. Ма- 4 В комп’ютері «Київ» символи кодуються трьома вісімковими знаками. 110 Історія програмування линовського комп’ютер «Київ» був розро- блений 1956р [18]. Під час завершальної стадії розробки до комп’ютера «Київ» приєднувались унікальні зовнішні при- строї введення та виведення даних. Після перевезення Комп’ютера «Київ» з Феофа- нії на вул. Лисогірську 14.03.1958р. від- бувся його повторний запуск. Порівняно з МЕСМ «Київ» мав не лише значно про- стіше програмування, а й мав продуктив- ність у сотні разів більшу ніж МЕСМ. Програми, які виконувались на МЕСМ декілька годин «Київ» виконував за ліче- ні хвилини. 1956р. було прийнято рішен- ня передати МЕСМ до КПІ [15, 18] для навчання студентів. Восени 1959р. було завершено перевезення МЕСМ з Феофа- нії до КПІ. Команда складання команд. Ши- рокі можливості команди складання ко- манд МЕСМ та, водночас, незручність її використання, визначили напрями її вдо- сконалення та узагальнення. Також стало зрозуміло, що для прискорення динамічної модифікації адрес, необхідно мати спеці- алізовані комірки у складі самого проце- сора, тобто регістри. Регістри модифікації адрес виконують більше функцій, аніж загальновідомі адресні регістри. Регістри модифікації адрес призначались, окрім прискорення доступу за індексами до еле- ментів масивів, ще й для опосередкованої адресації 2-ого рангу – «штрих-операції» (розіменування вказівників) [2, 11 (Т. 1 стор. 489), 10]. Розробка системи команд комп’ютера «Київ» вдосконалила можли- вості динамічної зміни програм МЕСМ для забезпечення можливості та зручності розробки програмуючих програм (компі- ляторів). Це було революційним рішенням та видатним винаходом у галузі ІТ. Дина- мічну зміну програм комп’ютера «Київ» забезпечують групові операцій з викорис- танням регістру модифікації адрес. До групових операцій належать три операції, включаючи Ф-операцію, яка заповнювала значенням регістр модифікації адрес [2-5, 7, 11, 10] та ще дві групові операції. В окремому розділі глави ІІІ в мо- нографії [2, 10] детально описано групо- ві операції комп’ютера «Київ» та зокрема Ф-операція. З цього розділу видно, що, окрім розіменування вказівників, система операцій комп’ютера «Київ» передбачає задання даних, організованих у списко- ві ланцюжки, ідентичні найпростішо- му типу абстрактних типів даних. Також легко побачити, що Ф-операція дозволяє визначати та обробляти дані, які групу- ються у спискові ланцюжки, ідентичні абстрактним типам даних – однозв’язним лінійним спискам та іншим складним іє- рархічним структурам. На відміну від аб- страктних типів даних, елементами цих структур можуть бути окрім даних і під- програми, аналогічно ООП. Групові операції визначають поча- ток та кінець циклування та фактично яв- ляють собою заголовки циклів імператив- них мов програмування або, як визначено у Т. 1 на стор. 489 в [11], – «операції для задавання циклів». Задання циклів опера- ціями в комп’ютері «Київ» має унікальну можливість – задавати цикли за елемен- тами «списків». Слід зазначити, що Ф-операція уможливлює визначення одного з двох ти- пів відношень слідування: 1) послідовне слідування комірок оперативної пам’яті (для послідовного звернення до елементів списків та простих структур); 2) слідування, яке визначаєть- ся послідовними значеннями вказівни- ків («штрих-операцією»), які визначають «список» (для послідовного звернення до елементів «списків»). Композиція цих двох відношень слі- дування в Адресній мові використовується для визначення довільних складних ієрар- хічних структур. Елементами, які належать послідовним слідуванням комірок, мо- жуть бути адреси, які «породжують» нові «адресні» ланцюжки, що утворюються за- стосуванням «штрих-операції». Ідентично в Асоціативному програмуванні будуються складні спискові структури: «у структуру спискового члену можуть входити описи списків» [20 (стор. 110)]. У комп’ютері «Київ» є команда з назвою «команда складання команд», яка ідентична однойменній команді МЕСМ. Вона може бути використана для вико- 111 Історія програмування нання «штрих-операції» (розіменування Pointers). Окреме, принципове значення має можливість використання Ф-операції з операцією завершення групових операцій для виконання багатократного виконання «штрих-операції», тобто для багатократ- ного розіменування вказівників (Multiple indirection of Pointers). Таким чином операції групові опе- рації дозволяють задавати цикли зі змін- ною циклу та/або по елементам масивів (у загальному випадку по елементам багатовимірних масивів), а Ф-операція з ЗГО – цикли по елементам «списків». Групові операції являють собою апарат- ну реалізацію обробки складних ієрар- хічних структур (деревоподібних фор- матів) та призначені для прискорення їх обробки [15, 18]. В тілі циклу можуть використовува- тися команди умовного чи безумовного пе- реходу для «дострокового» виходу з циклу. Високорівневість операцій. Від- так, у системі команд комп’ютера «Київ» наявні можливості організації циклічних процесів з послідовної обробки змінних числових значень, елементів масивів і еле- ментів «списків». До унікальних можливостей комп’ютера «Київ» належить умовна пере- дача управління за опосередкованою адре- сою вищих рангів та відносна передача управління, яка дозволила завантажувати програми без будь-яких її змін у довільну ділянку оперативної пам’яті так, щоб робо- та програми не залежала від її місця розта- шування в оперативній пам’яті комп’ютера [2, 11 (Т. 1 стор. 61) 12, 10]. Система команд комп’ютера «Київ» містить, окрім групових операції моди- фікації адрес (засоби організації циклів), умовні та безумовні переходи, розгалужен- ня можливості організувати цикли з пере- віркою умов завершення виконання ци- клів. Команди вхідної мови програмування комп’ютера «Київ» мають оператори заси- лання (присвоєння) та можливість отриму- вати значення безпосередньо за адресою та за опосередкованою адресою 2-ого (адреса адреси або вказівник) та більш високого рангу. Вхідна мова комп’ютера «Київ» має засоби звернення до елементу масиву за його порядковим номером (індексом). Відтак, вхідна мнемонічна мова комп’ютера «Київ» з можливістю за- давати цикли та з використанням опо- середкованої адресації визначати та об- роблювати складні спискові структури (деревоподібні формати) [11 (Т. 1 стор. 489)] являє собою мову програмуван- ня високого рівня, оскільки має більше можливостей ніж мова «Планкалкюль» Конрада Цузе, яка визнана першою мовою програмування високого рівня. Українські вчені мають усі підста- ви для визнання міжнародною спільнотою першості України у винаході як самих вказівників, так і у винаході списків та складних структур – деревоподібних фор- матів [20, 26, 40]. Абстрактні типи даних являють собою частковий випадок дере- воподібних форматів, оскільки в дерево- подібних форматах допускаються цикліч- ні посилання на довільні комірки опера- тивної пам’яті, а як їхні елементи можуть використовуватися, подібно до методів ООП, підпрограми. У комп’ютері «Київ» було впер- ше застосовано технологію використання змінно спаяних модулів з бібліотеками під- програм, що дозволило суттєво економити оперативну пам’ять комп’ютера при вико- ристанні підпрограм. Обробка чисел із плаваючою точкою була реалізована програмно. Прийняття такого рішення дозволило спростити ін- женерну компоненту комп’ютера «Київ», зменшити вартість та прискорити його роз- робку. Ці фактори переважили швидкість розрахунків з плаваючою точністю, оскіль- ки було зрозуміло, що «Київ» проводитиме обчислення значно швидше за МЕСМ. 9. Унікальність концепції Адресного програмування У цьому розділі на прикладах по- казано, що циклування в Адресній мові є більш загальним та, на відміну від імпе- ративних мов програмування, припускає визначення в заголовках циклу перегляд елементів «списків». Також у цьому розді- лі визначено окремі унікальні можливості Адресного програмування щодо обробки 112 Історія програмування даних, які містяться в складних ланцюжко- вих ієрархічних структурах – деревоподіб- них форматах. Необхідно нагадати, що концеп- ція деревоподібних форматів базується на двох типах відношення слідування комірок пам’яті. Перший тип відношення слідуван- ня визначається лінійним порядком сліду- вання адрес в оперативній пам’яті. Другий тип адресного відношення слідування за- дається «штрих-операцією» та визначає спискові ланцюжки. Як композиція двох типів слідування дозволяє визначати до- вільні ієрархічні структури визначалось у попередньому розділі. Зауважимо, що еле- ментами деревоподібних форматів можуть бути, окрім самих даних, і адреси підпро- грам (подібно ООП). Нагадаємо, що операції комп’ютера «Київ» дозволяють задавати цикли поза обома відношеннями слідування. Адресна мова програмування перед- бачає задання циклів не лише зі змінними циклу арифметичного типу, а й за адреса- ми (тип Pointer). Можна визначати перший елемент, із яким має виконуватись перший раз тіло циклу, наприклад «головою спис- ку». Як крок (STEP) у циклах типу «FOR i FROM 1 STEP 1 TO N» можна вказати адресне слідування – «штрих-операцію» (розіменування вказівників). В імператив- них мовах з вказівниками необхідно вико- ристати Until або While. В табл. 1 наведено приклад фрагментів мовою С++ та Адрес- ною мовою, в яких циклічно виконуються дії F із кожним елементом масиву та спис- ку. Адресний тип відношення слідування (з використанням «штрих-операції») надає Адресній мові програмування можливість оперувати поняттям «множина». Літери Ц та П – це позначки фор- мули циклювання та формули входження (виклику) підпрограм. Літера π є аналогом змінної циклу i та змінної Current, значен- ня яких зберігається у регістрах. Запису Ц{ List, (‘’∅) ⇒ π } відповідають групові операції комп’ютера «Київ». Групові опе- рації та використання регістру, а не комі- рок оперативної пам’яті, забезпечують прискорену обробки складних структур [2, 11, 10, 40, 41]. В Адресній мові програмістам на- дається можливість оперувати поняттям «множина» у визначенні повторювальних дій з кожним елементом множини або для тих елементів множини, які задовольня- ють визначену програмістом умову. Ци- клування в Адресній мові дозволяє задава- ти цикли по множинам, які є об’єднанням інших множин. Крім сказаного, велике значення для зручності програмістів має можливість визначати однією формулою циклування («заголовком циклу») одразу і вкладені цикли. Для задання циклу про- грамісту достатньо визначити множину та один із типів відношення слідування на ній. У формулі циклування можна ви- користовувати конструкції фільтрування, аналогічні умовам Where мови SQL. Функція «map», яка наразі широко використовується у мовах програмування, природно визначається формулою циклу- вання в Адресній мові. Широкі можливості визначення від- ношення адресного слідування у форму- лах циклування дозволяють реалізовувати різноманітні схеми огляду областей до- ступності та деревоподібних форматів, що відповідає сучасному терміну «спосіб об- Таблиця 1 Приклади фрагментів програм із циклом за елементами масиву та елементами списку С++ Адресна мова Пояснення на мові, подібній до С++ Цикл за елементами масиву for i nt i (0; n, ++i) { F(M[i]); } Ц{ 0, (∅⊕1, n) ⇒ π } П F{π } – Цикл за елементами списку List *Current =Head; while (Current -> Next != Null) { F(Current->info); Current = Current -> Next; } Ц{ List, (‘’∅) ⇒ π } П F{π ⊕1} // подібного в сучасних мовах немає: for *Pi (List; Null, *List) { F(Pi); } 113 Історія програмування ходу дерев» в ширину, глибину, праворуч чи ліворуч. При визначенні циклування програ- місту надається можливість користуватися поняттями «множина» та «підмножина». В сучасних імперативних мовах ана- логу «мінус штрих-операції», яка є оберне- ною до «штрих-операції» (розіменуванню Pointers) не існує. Ця операція має суто декларативний характер та дозволяє «про- бігати» елементи однозв’язних лінійних списків у зворотному порядку [39, 40, 45]. Окрім того, «мінус штрих-операція» дозволяє визначати дерева шляхом визна- чення лише батька для вузлів дерева. В імперативних мовах із використанням кон- цепції абстрактних типів даних для вузлів необхідно визначити список синів, напри- клад: «лівий син», «правий син», «серед- ній син» [45]. В Адресному програмуванні визна- чено поняття багатовимірного адресного сортування, яке дозволяє мати одночасно декілька різних варіантів сортування еле- ментів множини. При адресному сортуван- ні відсутня необхідність змінювати місцез- находження елементів множини під час їх сортування [25, 45]. 10. Використання та значення Адресної мови програмування Адресна мова програмування вплинула на вибір операцій не лише для комп’ютера «Київ», а й для інших київ- ських комп’ютерів «Дніпро», «Промінь», «Дніпро-2», «Мір» [9 (Т. 1 стор. 30), 35 (стор. 10), 31]. Ідеї киян щодо модифікації адрес, були враховані в архітектурі інших радянських комп’ютерів, зокрема в «М-20» і архітектурно сумісними з нею: БЕСМ-3, БЕСМ-3М та БЕСМ-4 [8], в комп’ютерах серій «Мінськ», «Урал» та інших. У відео [6 з 1:31:52] доцент факульте- ту прикладних наук Українського Католиць- кого Університету Олег Фаренюк, фахівець у галузі архітектури комп’ютерів, висунув та обґрунтував тезу: «можна вважати, що «Київ» реалізував ідею RISC за кілька деся- тиліть до появи цього терміну.» Адресна мова використовувалась у розробці унікальних систем, зокрема, для реалізації інформаційної системи «Авто- директор» – табличної бази даних реляцій- ного типу [18]. В монографії по комп’ютеру «Київ» [2, 10 (стор. 97-110)] наведено перелік ре- алізованих програм та систем. Це система автоматизованого проєктування електрич- них плат, декілька компіляторів, емулятор архітектури комп’ютера «Дніпро», інші розв’язки методами навчання задач розпіз- навання образів, серед них, простих гео- метричних фігур, друкованих рукописних букв і чисел. І це не повний перелік реалі- зованих комп «Київ» задач. Слід зазначити, що Адресна мова пе- редбачає паралельне виконання операторів [2-5, 10, 40-42]. Можливість паралельного виконання програм Адресною мовою була використана для реалізації паралельних асинхронних процесів комп’ютера «Київ». У період з 1956р. до кінця 1959р. в Адресній мові були конкретизовані та уточнені поняття слідування адрес, області доступності, введено поняття деревоподіб- них форматів [26, 40, 45]. Досліджувались методи та розроблювались схеми огляду даних, областей доступності або деревопо- дібних форматів. Надзвичайно важливого подальшого розвитку набули теоретичні дослідження деревоподібних форматів, які мали практичне значення для застосування універсальних засобів групування даних та процедур їх обробки [40]. До одного з найцікавіших та най- потужніших засобів розвитку Адресної мови програмування належить винахід «мінус штрих-операції», яка є оберненою до «штрих-операції» (розіменування вка- зівників) [11, 39, 40, 45]. Ця операція була реалізована В.П. Сьомиком у компілято- рах Адресної мови [39]. «Мінус штрих- операція» носить виключно декларативний характер та тому не має аналогів у сучас- них імперативних мовах програмування. В [45] описано порівняння можливостей «мінус штрих-операції» з можливостями сучасних декларативних засобів програму- вання та зроблено висновок, що Адресна мова програмування має вичерпні деклара- тивні можливості. Для комп’ютера «Київ» були розро- блені унікальні пристрої введення та ви- ведення даних. До цих пристроїв належать 114 Історія програмування пристрої введення графічних зображень з паперових носіїв інформації, фотоплівок і фотопластин [18] та пристрої друку зобра- жень на папері [18]. Інформація в пам’яті комп’ютера про зображення зберігалась одним з двох способів: шляхом представлення по точкам або аналітичними функціями. На Адрес- ною мовою були розроблені бібліотеки програм для обробки зображень, зокрема, розв’язувались задачі перетворення точ- кового представлення зображення у ана- літичну форму. Проблеми перетворення точкового представлення зображень у ана- літичне спонукали видатного математика В.Л. Рвачова до винайдення R-функцій, які згодом «були успішно використані в зада- чах розпізнавання образів» [34 (стор. 50)]. Це були значні національні досягнення, що перевершували тогочасні закордонні ви- находи. Наявність пристроїв введення зо- бражень в пам’ять комп’ютера та потужні можливості опосередкованої адресації ви- щих рангів дозволили українським вченим розробити систему розпізнавання простих геометричних фігур, друкованих літер та цифр [2, 7, 10, 18, 34]. Для комп’ютера «Київ» був розро- блений пристрій отримання та передачі даних через телеграфні лінії зв’язку. Цю можливість було використано для відда- леного керування технологічними проце- сами на сталеплавильному заводі в місті Кам’янське (колишній Дніпродзержинськ), який знаходився від комп’ютера «Київ» на відстані 500 км. [18]. Другий примірник комп’ютера «Київ» було зібрано у 1959р. на замовлен- ня Об’єднаного інституту ядерних дослі- джень (м. Дубна), де він понад десять років успішно використовувався для розв’язку задач [18, 30]. На комп’ютері «Київ» було ство- рено емулятор комп’ютера «Дніпро». На цьому емуляторі розроблено компілятор Адресної мови для комп’ютера «Дніпро» [2, 10]. Це мало велике значення, оскільки дозволило ще до моменту запуску цієї ма- шини, мати готовий компілятор Адресної мови та низку інших програм [2, 11, 10]. Це унікальний випадок в історії зароджен- ня інформаційних технологій, коли напи- сання та налагодження програм здійсню- валось для ще неіснуючого комп’ютера «Дніпро». На комп’ютері «Київ» проводилися роботи із автоматизованого проєктування електричних схем вузлів для комп’ютерів, що знаходилися на стадії розробки. Це давало можливість віртуально тестувати електричні схеми без їх фактичного ви- готовлення. З використанням комп’ютера «Київ» та Адресної мови програмування розроблено комп’ютери «Дніпро», Про- мінь, комп’ютери серії «МІР» та комп’ютер «Дніпро-2» [11, 31]. Адресною мовою програмування було написано низку синтаксичних ана- лізаторів та розроблено цілий ряд компі- ляторів з інших мов програмування [11, 12, 33]. Наведемо цитату [11 (Т. 1 стор. 63)]: «Завдяки можливості описувати адреси як функції якихось параметрів Адресної мови можна описувати й до- вільні схеми огляду інформації та склад- ні інформаційно-логічні й економічні ал- горитми і складні процеси перегляду й пошуку інформації, організованої в лан- цюгові списки і спискові структури; ал- горитм, процеси такого роду не можна описувати за допомогою алгоритм, мов типу АЛГОЛ, не залучаючи допоміжних засобів. У цьому відношенні Адресна мова випередила алгоритмічні мови, створені за кордоном для спискової обробки сим- волічних виразів (напр., ЛІСП тощо).». Адресна мова належить до мов функційного програмування («мов списко- вих»)5 [11 (Т. 2 стор. 86, 87), 20 (стор. 107)]. Вона запропонована на декілька років ра- ніше за мову LISP, яку помилково вважа- ють першою мовою функційного програ- мування. Адресна мова програмування реалі- зована на багатьох радянських комп’ютерах 1-ого та 2-ого поколінь, зокрема, на комп’ютерах «Київ», М-20 та сумісних з ним БЕСМ-3, БЕСМ-3М та БЕСМ-4, комп’ютерах серій «Урал» та «Мінськ» та 5 У 50-х та 60-х роках замість «функціональні мови» використовувався термін «мови спискові». 115 Історія програмування використовувалася програмістами пост- соціалістичного простору понад 20 років [18, 33]. Концепції рангу адрес та дерево- подібних форматів увійшли до багатьох ра- дянських мов програмування, зокрема, до: АЛГЕМ, А-КОБОЛ [11 (Т. 1 стор. 63)] та А-АЛГАМС [28]. Машинно-орієнтовані мови про- грамування АВТОКОД, зокрема для комп’ютера «Дніпро-2» [27, 28], включа- ють засоби опосередкованої адресації ви- щих рангів Адресної мови програмування, що дозволяє визначати та оброблювати складні ієрархічні структури даних. Видатний учений А.І. Кітов, відо- мий теорією Асоціативного програмуван- ня (1963р.) та мовою АЛГЕМ, в [20 (стор. 113)] зазначив, що принцип рангу адреси та адресних функцій Адресної мови про- грамування використано в Асоціативному програмуванні та мові АЛГЕМ, де склад- ні ієрархічні структури утворюються ви- користанням двох типів членів списків: вузлових та гніздових. Ці типи ідентичні двом типам відношень слідування Адрес- ного програмування. У термінології Асо- ціативного програмування [20] збережено поняття «адреса» Адресної концепції про- грамування, а поняття «адресне співвідно- шення» ідентичне формулі засилання та відповідає адресному відображенню. Система програмування Альфа- мовою (1963р.) для комп’ютера М-20 (та сумісних з ним: БЕСМ-3, БЕСМ-3М та БЕСМ-4), яка розроблена у середині 60-х років, містить засоби, які термінологіч- но, семантично та частково синтаксично ідентичні засобам Адресної мови програ- мування. Це засоби визначення циклів та спискових структур розміщення інформа- ції. Система АЛГІБР є модифікацією Аль- фа-мови для БЕСМ-6 [11 (Т. 1 стор. 102- 104), 16, 17]. Висновки У статті розглянуто поступове за- родження Адресної мови програмування з опосередкованою адресацією вищих ран- гів та складними ієрархічними структура- ми: деревоподібними форматами. Визначе- но вплив унікальної архітектури МЕСМ на винахід Адресної мови. Стаття відновлює забуту та втрачену сторінку виникнення програмування висо- кого рівня в Україні. Світова спільнота ще не визнала першість винаходу вказівників за Украї- ною та продовжує помилково вважати, що перші вказівники винайдені Гарольдом Ло- усоном 1964р. В статті наведено та детально роз- глянуто наявні публікації щодо підтвер- джень винаходу українськими вченими по- тужних засобів програмування: опосеред- кованої адресації (вказівників) вищих ран- гів та деревоподібних форматів, до яких подібні абстрактні типи даних. До переліку підтверджень належить низка публікацій з Адресної мови програмування та архітек- тури комп’ютера «Київ», перекладених ба- гатьма мовами та виданих за кордоном. Результати статті стануть в пригоді для визнання світовою спільнотою першо- сті за Україною винаходу вказівників та складних ієрархічних структур у програ- муванні високого рівня. Стаття має за мету популяризацію досягнень українських науковців у часи зародження інформаційних технологій та має важливе значення для національно- патріотичного виховання молоді, оскільки спонукає молодь до наукових досліджень. Стаття має значення для збереження всесвітньої історії зародження та розвитку інформаційних технологій, зокрема історії зародження програмування високого рівня з вказівниками та універсальними потуж- ними засобами групування і зв’язування даних та процедур у складні спискові іє- рархічні структури. Література 1. Alvaro Videla, M 2018, ‘Kateryna L. Yush- chenko — Inventor of Pointers’ A Computer of One’s Own – Pioneers of the Computing Age, blog post, 8 December, viewed 24 Octo- ber 2021, <https://medium.com/a-computer-of- ones-own/kateryna-l-yushchenko-inventor-of- pointers-6f2796fa1798?fbclid=IwAR3fcqmC0 COfy5EqyIHBrlQhCpno5MUFZjCUQ-SM-v- xhD0g3xbj_P2SRCM>. 2. Glushkov V.M., & Yushchenko E.L., D 1966, The Kiev Computer; a Mathematical De- scription, USA, Ohio, Translation Division, 116 Історія програмування Foreign Technology Div., Wright-Pattenon AFB, 234p., ASIN: ‎B0007G3QGC. 3. Gnedenko B.V., Koroliouk V. S. & Iouchtch- enko E.L., D 1969, Eléments de program- mation sur ordinateurs, Paris, Dunod, 362p., ASIN: ‎ B0014UQTU0, viewed 24 Octo- ber 2021, <https://fi les.infoua.net/yushchen- ko/Elements-de-programmation-sur-ordina- teurs_BGnedenko-VKoroliouk-EIouchtchen- ko_1969_France_OCR.pdf>. 4. Gnedenko B.V., Koroljuk V.S. & Justschen- ko E.L., D 1964, Elemente der Program- mierung, DDR, Leipzig, Verlag: B. G. Teu- bner, 327 oldal. 5. Gnedenko B.V., Korolyuk V.S. & Juscsen- ko E.L. D 1964, Bevezetѐs a progamozásba, – I, II. – Magyarország, Budapest, Uj technica. 6. Sensei Yuri. Унікальність комп’ютера «Київ», 2021. YouTube. URL: https://youtu. be/3ohE3njX8P0?t=5512 (дата звернення: 17.11.2021). 7. Ware Willis H. & Holland Wade B., D 1963, Wil- lis H. Ware. Soviet Cybernetics Technology: III, Programming Elements of the BESM, STRELA, Ural, M-3, and Kiev Computers, Translated by A.S. Kozak, RAND Corporation, 91p., Series: Research Memoranda, USA, viewed 24 October 2021, 70p., viewed 24 October 2021, <https:// fi les.infoua.net/yushchenko/Soviet-Cybernetics- Technology-III_1963.pdf>. 8. Вакуленко С. Вычислительная машина «Киев», математическое описание. Dreamwidth.org. URL: https://vak.dreamwidth.org/771441. html (дата звернення: 31.10.2021). 9. Васильев Ю. Его оружие — математика К 60-летию Алексея Андреевича Ляпуно- ва. / в кн.: Алексей Андреевич Ляпунов / Редакторы-составители Н.А. Ляпунова, Я.И. Фет. – Новосибирск : Филиал «Гео» Изд. СО РАН, Издательство ИВМиМГ СО РАН, 2001. – 502 с., – URL: www.ict.nsc.ru/ jspui/bitstream/ICT/1260/1/Lyap_2001.pdf (дата звернення: 11.10.2021). 10. Глушков В.М., Вычислительная маши- на «Киев». Математическое описание / В.М. Глушков, Е.Л. Ющенко. // К. : – Гостехиздат УССР, 1962. – 183 c. : ил., – URL: Vychislitelnaya-mashyna-Kiev_ VHlushkov_EYushchenko_1962.pdf (infoua. net) (дата звернення: 21.10.2021). 11. Глушков В.М. (відпов. ред.), Енциклопедія кібернетики. К. : Головна ред. укр. рад. ен- циклопедії, 1973. Т. 1 : А-Л. 584 с., Т. 2 : М - Я. 574 с. URL: https://fi les.infoua.net/ yushchenko/Encyklopediya-kibernetyky_ T1-2_VHlushkov-ta-in_1973_UKR_DJVU. zip (дата звернення: 24.10.2021). 12. Глушков В.М. и др., Основные направле- ния развития цифровой вычислительной техники : обзор / В.М. Глушков, Б.Н. Ма- линовский, З.Л. Рабинович, Е.Л. Ющен- ко. – М. : – ЦНИИТЭИ приборостроения, 1967. – 96 с. 13. Гнеденко Б.В. Воспоминания. Моя жизнь в математике и математика в моей жизни. / Б.В. Гнеденко. // под ред. Д.Б. Гнеденко / (Наука в СССР. Через тернии к звездам), – М. : Ленанд, 2015. – 624 с., ISBN 978-5- 9710-1416-4. 14. Гнєденко Б.В., Элементы программирова- ния / Гнєденко Б.В., Королюк В.С., Ющен- ко Е.Л.; // М. : – ГИФМЛ, 1961. – 348 с., – URL: Elementy-programmirovaniya_ BGnedenko-VKoroljuk-EYushchenko_1961. pdf (infoua.net) (дата звернення: 23.10.2021). 15. Дашевский Л.Н., Шкабара Е.А., Как это начиналось. // Новое в жизни, науке, тех- нике. Сер. Математика, кибернетика; № 1 / М. : Знание, 1981. – 64 с., – URL: kak_eto_nachinalos.pdf (computer-museum. ru) (дата звернення: 23.10.2021). 16. Ершов А. П., Руководство к пользованию системой Альфа. / Ершов А. П., Кожу- хин Г.И., Поттосин И.В. // Новосибирск : Наука, 1968. – 180 с. 17. Ершов А.П., Входной язык системы ав- томатического программирования. // Ер- шов А.П., Кожухин Г.И., Волошин Ю.М. / М. : 1961. – С.173-174. 18. Європейський віртуальний музей історії інформаційних технологій в Україні., – URL: http://www.icfcst.kiev.ua/MUSEUM/ (дата звернення: 07.10.2021). 19. Іваненко Л.М. МЭСМ та її люди на відстані літ С.29-35 // В кн.: Видатні конструктори України. За матеріалами наукових читань з циклу ”Видатні конструктори України”, проведених у 2001–2018 роках. Т. 8. / кер. гр. уклад. М.Ю. Ільченко; за редакцією Б.Є. Патона, М.З. Згуровського. – К. : ВПК “Політехніка”, 2018. – 256 c., – URL: http:// biography.nbuv.gov.ua/rating/r2018/txt/ g3/1007.pdf (дата звернення: 23.10.2021). 117 Історія програмування 20. Китов А.И. Программирование информа- ционно-логических задач. М. : Советское радио, 1967. 124 с., – URL: http://library.dnu. dp.ua/0318.rtf (дата звернення: 26.10.2021). 21. Китов А.И., Криницкий Н. А., Комо- лов П.Н., Элементы программирования (для электронных цифровых машин). / Отв. ред. Китов А.И. М. : изд-во Артил- лерийской академии им. Дзержинского. // М. : – 1956. – 288 с. 22. Китов В.А., Прохоров С.А. Становление про- граммирования в СССР с 1950-го по 1960 год. Виртуальный компьютерный музей, Материалы международной конференции SORUCOM 2011. – URL: https://www.computer- museum.ru/histsoft/1950_1960_sorucom_2011. htm (дата звернення: 29.09.2021). 23. Коваленко І. М. Граничні задачі життя. До 90-річчя академіка НАНУ В.С. Королю- ка / І.М. Коваленко, О.А. Летичевський, І.В. Сергієнко // ISSN 1027-3239. Вісн. НАНУ, № 8, 2015. С.95-99, – URL: http://www.visnyk-nanu.org.ua/sites/default/ files/files/Visn.2015/8/15.Kovalenko.pdf (дата звернення: 26.10.2021). 24. Кратко М. «З історії розвитку інформатики в Україні: [історія створення електронних обчислювальних машин]», Світогляд. № 6, 2009. – С.56-62, – URL: https:// www.mao.kiev.ua/biblio/jscans/svitogliad/ svit-2009-20-6/svit-2009-20-6-56-kratko. pdf?fbclid=IwAR2mHMXkg_cvLKzi4xPywb2e-dGLXxE- k9IdW0pX6q1Yy7uyDkGB35eMAGY (дата звернення 21.10.2021). 25. Крещенко Т.О. Метод кластеризації з вико- ристанням багатовимірного адресного сор- тування. / Крещенко Т.О., Ющенко Ю.О. // Наукові записки НаУКМА. – Т. 3 : Комп’ютерні науки. – К. : – 2020. – С.83– 87, – URL: https://doi.org/10.18523/2617- 3808.2020.3.83-87 (дата звернення 12.10.2021). 26. Кулинкович А.Е., Ющенко Е.Л., О базовом алгоритмическом языке. / Кулинкович А.Е., Ющенко Е.Л., в журн.: «Кибернетика», К. : № 2, 1965. C.3-9, – URL: https:// files.infoua.net/yushchenko/O-bazovom- algoritmicheskov-yazyke_AKulinkovich_ EYushchenko_1965.pdf (дата звернення 12.10.2021). 27. Лаврищева Е.М. АКД – Автокод машины «ДНЕПР-2». / Лаврищева Е.М., Ники- тин А.И., Усенко Л.Г., Ющенко Е.Л. // К. : Ин-т кибернетики АН УССР, 1969. – 97 с. 28. Лаврищева Е.М., Л.Г.Борисенко, Усенко Л.Г., Ющенко Е.Л. Транслятор Д-АЛГАМС для УВК Днепр-2. / Лаврищева Е.М., Бо- рисенко Л.Г., Усенко Л.Г., Ющенко Е.Л. // К. : ИК АН УССР, 1971. – 246 с. 29. Лебедев С.А., Дашевский Л.Н., Шкаба- ра Е.Л., Малая электронная счетная маши- на. // М. : – Из-во АН СССР, 1952. – 162 с. 30. Маліновський Б.М., Історія обчислю- вальної техніки в обличчях. // К. : Фірма «КІТ», ПТОО «А.С.К.» 1995. 245 с., – URL: http://icfcst.kiev.ua/MUSEUM/TXT/ Malinovsky_history_ukr.pdf (дата звернен- ня 21.10.2021). 31. Міщенко Н., Інститут кібернетики НАНУ: все починалося у Феофанії… (1956–1958) : спогади. Ч. 1 / Надія Міщенко // Кібер- нетика, інформатика і довкола… : науко- ві праці, повідомлення, спогади., – URL: https://cyberua.info/novyny/ik-nanu-vse- pochynalosja-u-feofaniji-spohady-ch1-nadija- mishchenko/ – (дата звернення: 26.10.2021). 32. Олешко А.Л., Коваленко (Юфит) Нонна На- умовна (воспоминания) / Газета «Південна зоря». – Бердянська суспільно-політична газета. – № 1306, архів: С.295-344 – URL: http://pivdenka.berdyansk.net/assets/fi les/ book/Odnokursniki/odnokursniki-chast08. p d f ? f b c l i d = I w A R 3 X k F H g P h L h m m - ScbTbS9cjs3LHthBENTp-JsFQmfZ3eSM-j- 4UsmeS9Ik (дата звернення: 26.10.2021). 33. Перевозчикова О.Л., Школа теории про- граммирования Е.Л. Ющенко. К : – Наука та наукознавство. – 2007. – № 4. – С.114- 146, – URL: http://dspace.nbuv.gov.ua/hand le/123456789/49192?show=full (дата звер- нення: 05.10.2021). 34. Подгаєцький О. Еволюція розробок у га- лузі штучного інтелекту в Україні та світі (Evolution of research in the fi eld of artifi cial intelligence in Ukraine and the World) / Oleksandr Podgayetsky // Дослідження з істо- рії техніки. – № 16, Харків : – 2012. – URL: https://ela.kpi.ua/bitstream/123456789/7703/1/ RHT-issue-16-title-05-Podgayetsky.pdf (дата звернення: 07.10.2021). 35. Семик В.П. Транслятор с адресного языка для ЭВМ «Минск-1» / Семик В.П., Згур- ский А.Д., Шкляров Л.И., Глушко А.Г. // Сб. «Приборы и устройства средств авто- 118 Історія програмування матики и телемеханики». Вып.1. Изд. ХГУ. – г.Харьков : 1965. С.96-98. 36. Семик В.П., Ющенко Е.Л. Адресный язык и принцип адресности в алгоритми- ческих языках. // Сб. «Информационные системы». Изд. ВИНИТИ АН СССР. – М. : 1964. С.9-14. 37. Семик В.П., Ющенко Е.Л. Возможнос- ти адресного языка для описания инфор- мационно-логических алгоритмов. // Сб. «Информационные системы». Изд. ВИНИ- ТИ АН СССР. – М. : 1964. С.5-8. 38. Сергієнко І.В., Інформатика в Україні: становлення, розвиток, проблеми / відп. ред.: Ю.В. Капітонова, Т.Т. Лебедєва; рец.: Н.З. Шор, О.В. Палагін, К.Л. Ющенко; НАНУ, Ін-т кібернетики // – К. : Наукова думка, 1999. 354 с., – ISBN 966-00-0540-7. 39. Сьомик В.П., Про розширення поняття рангу адреси. // Сб. «Обчислювальна ма- тематика і техніка. Вид. АН УРСР. – К. : 1963. С.61-65. 40. Ющенко Е.Л., Адресное программирова- ние // К. : – Гос. издательство технической литературы, УРСР, 1963. – 287 с., – URL: https://fi les.infoua.net/yushchenko/Adresnoe- programmirovanie_EYushchenko_1963.pdf (дата звернення: 03.10.2021). 41. Ющенко Е.Л., Адресное программиро- вание и особенности решения задач на машине «УРАЛ» / под ред. Бушко-Жук. // К. : Киев. высш. инженерное радиотех- ническое училище войск противовоздуш. обороны страны.: 1960. – 192 с. 42. Ющенко Е.Л., Адресный язык (Тема 5) // Кибернетика на транспорте: Заочный се- минар. / Киевский дом Научно-техничес- кой пропаганды / – К. : – 1962. – 32 с., – URL: Kibernetika-na-transporte_Adresnyy- yazyk_KYushchenko_1962.pdf (infoua.net) (дата звернення: 12.10.2021). 43. Ющенко Ю.О., Pointers в програмах на «МЕСМ» / Для Європейського віртуаль- ного комп’ютерного музею історії ін- формаційних технологій в Україні: //К. : 2021, 9 с., – URL: http://www.icfcst.kiev. ua/MUSEUM/TXT/YuriYushchenko_u.pdf (дата звернення: 29.09.2021). 44. Ющенко Ю.О., Катерина Логвинівна Ющенко – винахідниця Pointers та авторка однієї з перших в світі мов програмуван- ня високого рівня // Газета «Світ», № 5-6, 10.02.2021 р., Видав-во НАНУ та МОНУ. К. : – 2021. – С.2-3, – URL: https://www. nas.gov.ua/UA/Messages/Pages/View.aspx ?MessageID=7487&fbclid=IwAR1BqiFU u7OGwN1knFbAUQt4sPeDKYZLkLeRIA BFxoX-RlgaxL_gtISJz-g (дата звернення: 23.10.2021). 45. Ющенко Ю.О., Окремі аспекти деклара- тивності «мінус штрих-операції» // Науко- ві записки НаУКМА. – Т. 3 : Комп’ютерні науки. – К. : – 2020. – С.19–26, – URL: http://nrpcomp.ukma.edu.ua/article/view/22 0657?fbclid=IwAR0N65fNM1liyasK84z0O sEmzenb10FAy8IksOv0pzV6JSX54TJpBf0- V7o (дата звернення: 03.10.2021). 46. Ядренко М.Й. Борис Володимирович Гнє- денко – фундатор кафедри теорії імовір- ностей в Київському університеті. // Теорія імовірностей та математична статистика. Вип. 56, К : – 1997. – С.32-39, – URL: https:// probability.knu.ua/tims/issues-new/56/PDF/6. pdf (дата звернення: 07.09.2021) Одержано: 23.10.2021 Про автора: Ющенко Юрій Олексійович, к.ф.-м.н., доцент факультету інформатики Національного університету Києво-Могилянська Академія. Кількість публікацій в українських журналах – 16, Індекс Хірша - 3. ORCID: 0000-0003-4602-1774. Місце роботи автора: Національний університету Києво-Могилянська Академія Вул. Григорія Сковороди, 2, Київ, Україна, 04655. Електронна пошта: yury.yuschenko@ukma.edu.ua. Тел.: +38(093)3784051.