Створила одну з перших у світі високорівневих мов програмування. Історія української науковиці Катерини Ющенко

Катерина Ющенко (1919–2001) — українська науковиця, програмістка, яка у 1950-х роках першою працювала на комп’ютері МЕОМ (рос. МЭСМ) — першій в СРСР і континентальній Європі електронній цифровій обчислювальній машині. Була одним з керівників розробки унікального комп’ютера «Київ» і відповідала за його архітектуру та програмне забезпечення.

Авторка однієї з перших у світі мов програмування високого рівня — Адресної мови, завдяки якій можна було працювати зі списками та складними ієрархічними структурами. Під її керівництвом створено держстандарт мови Кобол, розроблено стандарти мов Фортран-2, АЛГАМС, Алгол-68, АДА, Фортран-77, Паскаль, ПЛ/1, Сі.

Катерина Ющенко стала першим у СРСР доктором наук, який захистив роботу на тему програмування. Сьогодні її портрети висять у престижних музеях світу, а в Україні хочуть знімати серіал, де однією з ключових фігур буде відома винахідниця.

Ми поспілкувалися з сином Катерини Логвинівни Юрієм, доцентом факультету інформатики у Києво-Могилянській академії. Він розповів про повне випробувань життя своєї матері, її досягнення, значення Адресної мови та винайдення вказівників. Також в інтерв’ю Юрій поділився, чим насправді мріяла займатися Катерина Ющенко.

Зліва Юрій Ющенко, справа — Катерина Логвинівна Ющенко

Пам’ять про українську винахідницю: «Від журналістки дізнався, що портрет матері висить у Музеї комп’ютеризації в Блетчлі-Парк»

— Про Катерину Ющенко знають більше за кордоном, ніж в Україні?

Ні, вони знають не більше. Про що зазвичай пишуть і в нас, і за кордоном? Про те, що вона була членом-кореспондентом НАН України, одним з перших програмістів, першим доктором наук у галузі програмування в Радянському Союзі, одним з авторів першого підручника з програмування в СРСР («Элементы программирования» — ред.), який переклали угорською, словацькою, німецькою мовами, а через 14 років після написання його видали у Франції разом з додатками, серед яких була архітектура унікального комп’ютера «Київ».

Ще пишуть про те, що вона запропонувала одну з перших мов програмування — Адресну мову, створила школу теоретичного програмування в Союзі. Згадують, що вона мала понад 200 наукових праць. І зауважують про те, що мала такі-то нагороди та державні премії, що була ініціаторкою першої масштабної конференції 1968 року у Союзі, де зібралися приблизно 1500 програмістів.

Ще дуже рідко зазначають, що Адресна мова була реалізована на багатьох радянських комп’ютерах: «М-20», «Урал», «Дніпро», «Мінськ». Але про те, скільки років ця мова програмування використовувалася, що її застосовували за кордоном, — пишуть мало.

А ось про те, що мати була вимушена проти своєї волі сісти за арифмометр, взяти в руки логарифмічну лінійку, рахівниці, таблиці значень елементарних функцій і займатися не тим, чим мріяла, — взагалі майже ніхто не говорить.

— Зараз ви багато пишете про Катерину Ющенко, комп’ютери МЕОМ і «Київ». Коли зрозуміли масштаби досягнень своєї матері?

Феофанія, 1958 р. Катерина з сином ЮріємФеофанія, 1958 р. Катерина з сином Юрієм
Звісно, я знав про її досягнення. Коли я закінчував навчання в школі, мати дуже багато мені розповідала про свою роботу: про відомого науковця Сергія Лебедєва й інших інженерів, про те, як складала програми та які вишукані методи програмування винаходила. Дуже багато говорили про унікальність створеної під керівництвом Лебедєва МЕОМ (мала електронна обчислювальна машина) і її важливість для виникнення адресного програмування та створення комп’ютера «Київ», який перевершив за архітектурою навіть комп’ютери Лебедєва «БЭСМ» (большая или быстродействующая электронная счётная машина) та «БЭСМ-2». А в «М-20» відомий академік взяв те, що придумала мати з інженеркою Катериною Шкабарою. Розповідала, що, коли мені був приблизно рік, я бачив МЕОМ.


Коли мені було років вісім, до нас завітав сам Сергій Лебедєв. Після того, як він пішов, мати мені сказала: «Запам’ятай цю людину, це велика людина! Ти маєш пам’ятати його все своє життя. І пишатися, що бачив його». Протягом життя мати мені нагадувала, що я бачив самого Лебедєва. В одній організації вони не працювали, але зустрічалися та між ними все життя були теплі та дружні стосунки. Катерина Логвинівна використовувала результати Лебедєва: МЕОМ та документацію до цього комп’ютера, працювала з його учнями, соратниками та друзями. А він взяв на озброєння винаходи матері та інженерки Катерини Шкабари для «Києва», вивчив і знав Адресну мову та її можливості.

Коли я вчився на першому-другому курсі на факультеті кібернетики Київського державного університету, мати, можна сказати, наполегливо вмовила мене вивчити Адресну мову програмування. У 1977–78 роках, коли я вже був на третьому-четвертому курсі, вийшла книжка Дональда Кнута «Искусство программирования» в трьох томах. Ми її розглядали на гуртку «Алгоритми на графах» в університеті. І коли я ознайомився з алгоритмами Кнута, то згадав, що знаю їх з програм, які були написані Адресною мовою програмування набагато раніше.

Я звернув увагу своєї мами на це. На той час вона знала про цю книжку, переглядала її, але після моїх слів ми вирішили скласти програми з книжок Кнута Адресною мовою. Сіли писати програми обробки абстрактних типів даних, а саме — дерев. Точніше, напевно, писала вона, а я підказував і з інтересом спостерігав за процесом програмування. Призначення деревоподібних форматів Адресної мови збігається з призначенням абстрактних типів даних, але має окремі концептуальні відмінності.

Тоді мені здавалося це трошки застарілим: в Адресній мові не було гарної сучасної термінології, бо вона створювалась у 1950-х, коли ще не існувало змістовних термінів: однозв’язні та двозв’язні списки, дерева тощо. Термін «опосередкована адресація» адресного програмування перетворився на загальновизнаний програмістами всього світу термін «вказівник»... Але потужність засобів самої мови я зрозумів, ще коли був студентом перших курсів.

— А коли ви вирішили більш серйозно вивчати діяльність Катерини Логвинівни?

Після університету я закінчив аспірантуру, потім працював програмістом, тож у мене не було часу на це. Взагалі тривалий період мені здавалося, що всі знають про мамину роботу. Я зустрічався з Борисом Малиновським (український винахідник, кібернетик, конструктор першої в СРСР напівпровідникової ЕОМ «Дніпро» — ред.), він багато писав, зокрема про маму. Коли вона померла у 2001 році, мене стало турбувати, що про неї мало інформації в інтернеті. Але ще бракувало часу взятися за це серйозно.

А у 2018 році я випадково натрапив на статтю програміста, блогера Альваро Відела, який зазначає, що вказівники винайшла Катерина Ющенко у 1955 році. Я став дивитися, що пишуть про це українські, радянські програмісти. Передивився усе — ніхто не написав жодного слова! Мене це зачепило.

Буквально за кілька місяців після того зі мною сконтактувала знімальна група зі Сполучених Штатів Америки, яка приїхала спеціально до Києва робити документальний фільм про Катерину. Ми поспілкувалися один раз телефоном, та, на жаль, зустрітися нам не вдалося, бо я був не в місті. Але готувався для того, щоб надати їм більш правдиву й точну інформацію, і почав більше ознайомлюватися з історичними джерелами. Про долю фільму мені нічого невідомо, бо більше зі мною не зв’язувалися.

Фото з Музею комп'ютеризації у Блечтлі-ПаркФото з Музею комп’ютеризації у Блечтлі-Парк
Ще за місяць на мене вийшла українська журналістка, яка писала статтю про мою мати. Від неї я дізнався, що портрет Катерини висить при вході у павільйон історії програмування дуже престижного й відомого Музею комп’ютеризації поблизу Лондона в Блетчлі-Парк, де Алан Тюрінг розшифровував секретні німецькі повідомлення. А всередині є стенд з фотографією Катерини Логвинівни і з невеличкими надписами про те, хто вона.


До речі, та стаття Альваро Відела стала сенсаційною за кордоном, було дуже багато дописів у соцмережах, де люди дивувалися з того, що прочитали. Були й такі, що зазначали, що це фейк і цього просто не могло бути. Але мати сама мені казала років за 10 до смерті, що саме вона винайшла вказівники, а у світі помилково вважають, що це зробив Гарольд Лоусон 1964 року. Ось так я дійшов до того, що мене стурбувало та зацікавило, і став робити дописи у Facebook і Twitter.

Про початок кар’єри: «Деякий час у Києві мати була вимушена мешкати на вокзалі з валізою»

— Ви сказали, що Катерина Лонгвинівна була вимушена займатися не тим, чим мріяла. А чим вона хотіла займатися? Чому так вийшло?

Вона мріяла займатися теоретичною математикою, у неї були вагомі результати в галузі теорії імовірностей, яких вона досягла ще у Львові. Там матір мала державну квартиру від Інституту математики, майже у центрі міста. Це були післявоєнні роки. У 1950 році вона пристала на пропозицію академіка Бориса Гнєденка перевестись до Київського інституту математики АН УРСР (тепер НАН України). Вона здала державне житло та поїхала. І деякий час була вимушена мешкати на вокзалі з валізою.

У Києві Катерина Логвинівна, коли їй було 30 років, захистила кандидатську дисертацію та мріяла й далі досліджувати свою тему. Але дуже скрутне матеріальне становище змусило її погодитись на пропозицію директора Інституту математики Олександра Ішлінського очолити Лабораторію методів обчислень і розрахунків, бо той пообіцяв надати житло.

У 1951 році вона познайомилася зі своїм майбутнім чоловіком, моїм батьком, який закінчив мехмат Київського університету. Після вишу його прирядили до лабораторії, де працювала мати; він теж писав програми на МЕОМ. Коштів у них було мало, тож довелося винаймати темну та сиру кімнату в підвальному приміщенні. У 1952-му батьки отримали від Ішлінського кімнату в будинку Інституту математики, тобто робоче приміщення. Зручності — в кінці коридору, в кімнаті — дві валізи, дві розкладачки, спіральна електроплитка, стіл з шухлядами для паперів, один стілець — більше не треба було, адже працювали в сусідньому кабінеті. Саме там народився мій старший брат. Наприкінці 1953 року батьки переїхали у Феофанію. Тут у них уже була половина будинку: кімната, коридор, веранда, піч; зручності — на вулиці.

— Чим займалася ваша мати ці роки?

Її завдання були пов’язані з навігацією, бо Ішлінський займався теорією гіроскопічних систем для пароплавів, океанських і повітряних суден, а згодом балістичних та космічних ракет. Тому вже тоді мати мала доступ найвищого рівня до державної таємниці.

Наприкінці 1951-го ввели в експлуатацію комп’ютер МЕОМ. Ще до того мати знала від відомих математиків, що цю машину планують передати для обчислень їхній лабораторії. На самому початку 1952 року вона стала працювати на МЕОМ. Невдовзі завагітніла першим сином, а працювати було дуже складно (на жаль, про це чомусь ніхто не пише).

Як програмували на цьому комп’ютері? Роботу над однією задачею розбивали на багато етапів. Однією програмою не можна було зробити весь підрахунок, частину доручали комп’ютеру, а частину виконували математики з арифмометрами. Для комп’ютера складали тільки ті програми, які треба було виконувати багато разів: нема сенсу писати програму у двійкових кодах, вводити, заводити, запам’ятовувати це все тільки на один раз. Також брали програми, які мали велику трудомісткість розрахунків.

Тобто одна програма не могла розраховувати все від початку до кінця та видати відповідь. МЕОМ працювала ненадійно, рахувала з помилками, були збої. Комп’ютеру не можна було довіряти на 100 %, тому всі програми виконувалися двічі, тричі. А ще математики вручну рахували, приблизно перевіряючи, чи комп’ютер дає правильну відповідь. На МЕОМ виконували розрахунки для оборонної, космічної галузей, народного господарства.

Однак архітектура цього комп’ютера, зокрема маленький обсяг пам’яті, обмеженість його ресурсів, спонукала вдосконалити технології програмування, адже потрібно було скласти програму, маючи всього 126 комірок для програми й 62 комірки для даних. При цьому МЕОМ могла опрацьовувати тільки дані з фіксованою точкою. Тож серед іншого розробили вишукані методи моделювання обробки чисел з плаваючою точкою.

Складали програми багато математиків. Але Катерина Логвинівна у всьому брала участь, принаймні як консультантка, як найбільш досвідчена фахівчиня у програмуванні. Вона була в курсі складнощів програмування усіх задач, враховуючи їхню різноманітність. Це стало поштовхом до вдосконалення програмування, тобто до його автоматизації. Мати неодноразово наголошувала на тому, що саме обмеженість пам’яті МЕОМ змушувала замислюватись над «хитрими» прийомами виходу зі скрутних ситуацій. Необхідність економити пам’ять спонукала писати програми, ефективні за часом, розміром потрібної пам’яті. Це сприяло перегляду операторного методу програмування та вдосконаленню засобів маніпуляції адресами.

Інструкції, які давали математики для обчислювання, почали наближувати до того, що можна ввести в комп’ютер. А з іншого боку, ті програми, що потім писали для «Києва», вводили в пам’ять комп’ютера обчислювачі, які мали розуміти програму в мнемонічних кодах і потім їх перетворювати на двійковий код. Відбувалося зближення того, що подається у комп’ютер, з тим, що видають математики. І коли воно стало ідентичним, з’явився адресний метод програмування, щоб прискорити та полегшити використання комп’ютера.

МЕОМ. 1953/54 р.

Адресна мова програмування: «Вперше у світі були реалізовані задачі розпізнавання образів методом машинного навчання»

— Який рік вважають роком створення адресного програмування?

Це дуже складне питання. Зі слів мами можна зробити висновок, що шлях до програмування високого рівня почався ще до того, як стали використовувати комп’ютер МЕОМ. Оці інструкції, які видавали математики тим математикам, які обертали ручку арифмометра, теж програмували, але виконавцем був не комп’ютер, а людина. Це вже була майже мова програмування. Комп’ютер ще не міг її зрозуміти, але вона вже містила в собі формалізми, які увійшли у мови програмування високого рівня, зокрема в Адресну. Це відбувалося настільки поступово, що неможливо вказати точну дату.

— А коли вона була завершена?

Є декілька версій. Але у джерелах, зокрема в «Енциклопедії кібернетики», зазначено 1955–56, бо саме тоді вперше запрацював процесор комп’ютера «Київ». У його системі команд містилися засоби програмування високого рівня, або базису адресної мови програмування.

Як це сталося? Передісторія така: до 1951 року Сергій Лебедєв працював у Києві, керував розробкою МЕОМ у Феофанії. Ще на початку 1948-го він запросив на науковий семінар математиків, у тому числі Ішлінського, Гнєденка тощо, які висловлювали свої пропозиції щодо системи команд, які мають бути у комп’ютері, щоб виконувати розрахунки було зручно. До системи команд додали звичайні прості можливості: розгалуження, перевірка умов, переходи, циклування для того, щоб підраховувати формули зі значками сума від 1 до n або до нескінченності чи добуток від одиниці до n. Гнєденко запропонував Лебедєву збільшити заплановану ним розрядність комірок для чисел у МЕОМ з 12 до 17. Якби такого збільшення не відбулось, то точність розрахунків з трьома десятковими цифрами зробила б комп’ютер непридатним для розв’язку реальних задач.

Паралельно з МЕОМ Лебедєв працював над створенням «БЭСМ», але доробляв її вже у Москві, бо там йому виділили на це приміщення та кошти. Але до кінця 1951 року академік ще приїжджав у Київ для того, щоб стежити, як завершують роботи над МЕОМ.

Коли Сергій Лебедєв поїхав, наші науковці засумували та мріяли продовжити робити київську «БЭСМ». До речі, тут залишилися навіть якісь шафи, приміщення, які готував Лебедєв, щоб зібрати «БЭСМ» у Феофанії. Отже, інженери обговорювали, що це має бути за комп’ютер, що він має робити, яка в ньому має бути система команд, але нічого реально у ящиках не паяли, не збирали.

Тож коли у 1954 році з’являється Борис Гнєденко (він якраз повернувся з Німеччини, де читав лекції), об’єднуються колишня лабораторія Лебедєва з частковим складом лабораторії, яку очолювала моя мати. Створюється нова лабораторія при Інституті математики, де офіційно проголошують про початок розробки комп’ютера «Київ» — уже з розумінням головних архітектурних особливостей.

Вже 1955 року його процесор запрацював. Найважливіше в ньому були команди, які задавали цикли. Однак там були не просто цикли, а й можливість з’єднувати дані у ланцюжки, складні ієрархічні структури — і це все перелічене було в системі команд комп’ютера «Київ».

Львів, 1946 р. На світлині Б. Гнєденко та брат Катерини Володимир (крайній поруч з Катериною)

Під час своїх досліджень я ознайомився з мовою програмування німецького інженера Конрада Цузе — Планкалкюль, яка є першою мовою високого рівня. У 1940-х вона не була реалізована, але у 2000-му створили її компілятор — просто заради демонстрації її працездатності, як історичну реліквію, бо для практичного використання вона непридатна. Мене здивувало, як Конрад Цузе подивився у майбутнє, застосував головні можливості програмування високого рівня. Він міг на Планкалкюлі представляти навіть позицію шахової дошки. У мові були структури, але елементарні: з’єднувати дані можна було тільки в комірках, жодних списків, вказівників або чогось схожого не було.

— У чому полягає важливість створення Адресної мови?

На комп’ютері «Київ» за допомогою Адресної мови зробили першу у світі табличну базу даних реляційного типу, щоб можна було з’єднувати довільним потрібним чином дані між собою. Завдяки тому, що в Адресній мові є вичерпні засоби декларативного програмування, нею можна зафіксувати розв’язки задач, які записуються основними конструкціями мови SQL — JOIN. У реляційних базах є ключі: FOREIGN KEY, PRIMARY KEY, а в Адресній мові програмування їхню роль виконують адреси, які зв’язують згруповані дані.

Адресною мовою програмування вперше у світі були реалізовані задачі розпізнавання образів методом машинного навчання. Це кінець 1950-х — початок 1960-х! Комп’ютер «Київ» навчили розпізнавати друковані та рукописні літери та цифри.

Нею розробили першу у світі розумну річ. Це була розумна домна у місті Дніпродзержинськ (тепер — Кам’янське). Тобто комп’ютер був у Києві й він керував технологічним процесом виплавлення сталі за 500 кілометрів звідси. Сигнали з датчиків доменної печі передавалися телеграфними лініями у столицю на комп’ютер «Київ», а керівні сигнали, коли треба щось вимикати, підливати, підмішувати, з «Києва» передавалися тими самими лініями до цеху. Тут трошки відчувається технологія Internet of Things.

Дуже важливе питання, пов’язане з Адресною мовою програмування — це емуляція (відтворення програмними або апаратними засобами роботи інших програм — ред.). На машині «Київ» розробили програму, яка повністю емулювала комп’ютер «Дніпро». Навіщо? «Дніпро» декілька років перебував у розробці, і необхідно було підготувати програмне забезпечення для того комп’ютера, який ще не зібрали. Тож на цьому емуляторі створили компілятор Адресної мови програмування для комп’ютера «Дніпро». Це було дуже важливо, оскільки щойно комп’ютер був зібраний, він одразу почав працювати і з нього могли робити серію.

Адресною мовою програмування написали систему автоматизованого проєктування електричних плат. Ці плати були потрібні для створення військових приладів і техніки, побутової техніки, а також самих комп’ютерів. Комп’ютери «Дніпро», «Промінь», МІР-1 робили за допомогою цієї системи. Адресна мова вплинула на комп’ютери «М-20» («БЭСМ-3», «БЭСМ-3М», «БЭСМ-4), «Урал», «Мінськ»...

Несподівана заборона: «Адресна мова програмування нібито була дуже складна для розуміння, але я не сприймаю цього»

— У Вікіпедії написано, що конструкції Адресної мови «увійшли до складу сучасних мов» — про що саме йдеться?

Вважають, що Lisp — перша мова обробки списків. Вибачте, але у 1955 році була вже Адресна мова, яка мала всі ці можливості обробки спискових ланцюгів. При цьому 1958 року Lisp була тільки запропонована на папері (коли її реалізували, мені точно невідомо). Адресну ж мову програмування одразу використовували. Ще у «вдосконаленій» мнемонічній мові для МЕОМ з’являються конструкції та засоби майбутньої Адресної мови. Це одна з причин, чому не можемо вказати точної дати її винайдення.

Базова частина Адресної мови — це система команд комп’ютера «Київ». Але для зручного використання програмістами мали бути «збільшені» конструкції системи команд, і вони мали наблизитись до математичних позначок. Спочатку на «Урал-1» інженери писали Адресною мовою, а потім програми Адресною мовою «переводились» у машинні програми. В першій монографії Катерини Ющенко «Адресное программирование и особенности решения задач на машине УРАЛ» детально описані інструкції для такого перетворення.

Тепер про те, як конструкції Адресної мови увійшли до інших мов. Почну з України. Мова програмування високого рівня, яку розробили для машин «Промінь», мова програмування для МІР-1, автокоди для «Дніпро-2» — спадкоємці Адресної мови. А компілятор «Т4» для «Дніпро-2» — реалізація засобів Адресної мови, але без використання цієї назви та посилання на неї. Річ у тім, що у 1965 році за рішенням вченої ради Адресну мову заборонили.

Є така серія мов програмування, які називають автокодами. Їх вважають машинозалежними мовами програмування або порівнюють, ототожнюють з Асемблером. Частково це так. Але у них є засоби високого рівня програмування. І автокод для радянських комп’ютерів «Дніпро-2», «Мінськ», «Мінськ-22» — це машинозалежні мови, подібні асемблерам, але з можливостями високорівневого програмування, які містили потужні засоби адресації адресного програмування: опосередковану адресацію, списки та складні ієрархічні структури.

Скажу кілька слів про те, як Адресна мова вплинула на програмування у СРСР. У 1963 році тут ще не було абстрактних типів даних, вказівників. Відомий у всьому світі програміст Андрій Єршов створив мову Альфа для комп’ютерів Лебедєва «М-20» («БЭСМ-3», «БЭСМ-3М», «БЭСМ-4»). Для «БЭСМ-6» було реалізовано систему Альфа-6. Опис мови Альфа використовує термінологію Адресної мови, а у можливостях визначати та оброблювати структури даних відчутний вплив адресного методу програмування.

У Києві розробили мову А-Кобол — вперше у світі до Коболу додали вказівники та можливість обробки складних ієрархічних структур (тих можливостей, до яких звикли київські програмісти під час програмування Адресною мовою). За кордоном до мови Кобол вказівники були додані пізніше, ніж у нас.

Щодо можливостей обробки списків. Був такий видатний вчений Анатолій Кітов — начальник обчислювального центру Міністерства оборони Радянського Союзу, який відносив Адресну мову програмування до мов обробки списків — Lisp тощо. У 1963 році він вперше опублікував концепцію «асоціативного програмування» і виступив з нею на конференції. Мати мені казала: «Ознайомся з цим програмуванням — і ти побачиш Адресну мову». У своїй книжці «Программирование информационно-логических задач», опублікованій 1967 року, Кітов визнає, що використав метод адресного програмування, і навіть вказує, що саме — адресацію вищих рангів та адресних функцій.

У 1963 році у Сполучених Штатах видають додатки до першого підручника «Элементы программирования». А там серед них є опис архітектури комп’ютера «Київ». Якби досвідчений програміст проаналізував ці додатки, то побачив би вказівники та складні ієрархічні структури. У 1964 році винаходять вказівники у США.

— Ви уже згадували про заборону Адресної мови програмування у 1965 році. У чому полягала причина? Чи припинився взагалі розвиток цього напряму?

Тому що була комуністична влада. Якщо є тоталітарний режим, то рішення ухвалюється одноосібно зверху. Адресна мова була заборонена частково. Наприклад, не можна було більше публікувати статті, монографії з неї, виступати з цією темою на семінарах, конференціях. Припинили реалізовувати мову на нових комп’ютерах. Наприклад, уже на стадії завершення зупинили розробку компілятора Адресної мови для комп’ютера «БЭСМ-6». Лебедєв приїжджав до Києва, щоб переконати українську владу, що розробку компілятора для «БЭСМ-6» потрібно завершити. Але йому не вдалося нічого змінити.

Адресна мова працювала на комп’ютерах, які виготовляли в Радянському Союзі до середини 1970-х років. Комп’ютер «Дніпро» був у виробництві до 1971 року, комп’ютери серії «Урал» — до 1975-го.

— Які є версії, чому її заборонили?

Було проголошено перехід на мови Фортран, Кобол та Алгол-60, які почали використовувати за кордоном. І була потреба швидко навчити багато програмістів. На думку Катерини Ющенко, хибно вважали, що Адресна мова складна для розуміння. Адже запис програм цими мовами не складніший за їх запис Адресною мовою.

— Чому ви вважаєте, що ця позиція була неправильною?

Так, Фортран і Алгол красиві, їхній синтаксис не дуже відрізняється. В обох мовах є цикли, оператор, присвоєння. Адресна мова містила інший синтаксис. Вона не мала красивих слів BEGINNING, END, FOR, IF, TO, але всі ці прості засоби та можливості в ній були. Адресна мова суттєво потужніша за Фортран, Кобол та Алгол-60, бо вона мала можливість визначати спискові структури, складні ієрархічні структури. Так, з першого погляду може здатися, що Адресну мову програмування складніше зрозуміти, ніж інші, але вона писалась для математиків і містила багато математичних термінів. Якщо мова чимось і складніша, то через широкі можливості. Просто небо і земля, якщо її порівнювати з Алголом і Фортраном.

— Як би могла розвиватися історія українського програмування, якби не було обмежень з боку уряду та заборони на Адресну мову програмування?

Якби не було цієї «залізної завіси», Холодної війни, то всі досягнення, зроблені в Києві, були б доступні за кордоном. Це б пришвидшило розвиток тих самих абстрактних типів даних, технологій програмування. Всі найважливіші винаходи та досягнення в тоталітарній державі зрештою приречені на провал.

Зустріч із Норбертом Вінером: «Він був здивований, що ламповий комп’ютер „Київ“ настільки зручний для програмістів»

— У статті про Катерину Логвинівну на сайті «Дзеркало тижня» є такі слова: «Коли батька кібернетики Норберта Вінера 1964 року попросили оцінити стан обчислювальної техніки в СРСР, порівняно зі США, він сказав, що в Союзі вона трохи відстає, хоч і не набагато. Але СРСР випереджає нас у розробці теорії автоматизації. Відділ автоматизації програмування Інституту кібернетики очолювала К. Ющенко!» В чому саме ми випереджали США?

Так, Норберт Вінер потрапив сюди випадково. Він був на конференції в Москві й просто вирішив приїхати в Київ, бо, здається, у нього є українське коріння. Він чув про наші досягнення в галузі програмування, тож звернувся до Академії наук, і йому одразу знайшли аспіранта, який знав англійську мову. Звичайно, його привели й на Лисогірську в обчислювальний центр при Академії наук. Він зустрічався з вченим Віктором Глушковим, Катериною Шкабарою та, звісно, з Катериною Ющенко. Вінер був здивований, що ламповий комп’ютер «Київ» (у них уже були напівпровідникові) настільки гарний, зручний для програмістів, що на ньому розв’язуються задачі розпізнавання простих геометричних фігур, рукописних та друкованих літер і цифр. Сам процес автоматизації програмування його вразив. Тож він зазначав, що у Сполучених Штатах елементна база комп’ютерів краща, але у програмуванні вони відстають від нас.

Це відставання можна представити у цифрах. Вказівники за кордоном винайшли на дев’ять років пізніше. Абстрактні типи даних (у нас це деревоподібні формати в Адресній мові) — приблизно на 10 років пізніше. Перші бази даних (наскільки це зараз важливо!) створили в Києві на рубежі 1950–1960-х років. При цьому вони не дуже відрізнялися від реляційної бази даних, яку запропонував британський вчений, співробітник IBM Едгар Кодд у 1970-х.

Ще є така сучасна архітектура комп’ютера — RISC. Я в процесорах не фахівець, але спеціалісти стверджують: у комп’ютері «Київ» була застосована технологія RISC-процесора, а це на декілька десятиліть раніше, ніж взагалі цей термін з’явився у світі.

— Чи ще спілкувалася Катерина Ющенко з іноземними науковцями?

За кордон вона не їздила: не можна було, адже в неї був найвищий рівень доступу до державної таємниці. Але вона таки була в Угорщині й ще, здається, у Східній Німеччині або Чехії, тобто у соціалістичних країнах.

— А про що вони тоді спілкувалися з Вінером, якщо багато чого не можна було згадувати?

Вона розповідала про програмування, що вони роблять, які задачі розв’язують, але то були задачі, не пов’язані з оборонною промисловістю, і ті, що не були під грифом державної таємниці.

Норберт Вінер в обчислювальному центрі АН УРСР. 1960 р.

Діяльність після 1965 року: «Як такого кар’єрного зростання у матері не було»

— Після 1965 року чим найбільше займалася ваша мати?

Найбільше вона програмувала у 1950-ті. Потім мати перестала кодити, вона керувала розробкою програмних систем. І все розуміла до найдрібніших операторів. Писала підручники з програмування та складала державні стандарти мов, консультувала щодо наукових робіт з ІТ, долучалася до найважливіших розробок. Вона все життя присвятила програмуванню.

— А як щодо кар’єрного зростання?

У 1950 році вона очолила Лабораторію методів обчислення і розрахунків і фактично нею керувала все подальше життя (лабораторію кілька разів переорганізовували та 1962 року перетворили на відділ № 145 з автоматизації програмування Інституту кібернетики). Захистила 1965 року докторську дисертацію. Ще її обрали в члени-кореспонденти за видатні успіхи в розвитку науки, почесні академіки міжнародних організацій з інформатики...

Як такого кар’єрного зростання у матері не було. Керівну роль їй запропонували один раз та всупереч її мріям і вподобанням. Життєві обставини змусили її погодитись очолювати лабораторію з арифмометрами та «забути» про теорію імовірностей — галузь, у якій мати досягла суттєвих результатів, які знайшли застосування у квантовій механіці. Мати не була кар’єристкою та засуджувала кар’єристів. Її цікавила наукова діяльність, а не керівні посади.

Здобуття ступеня доктора наук є фіксацією її наукових досягнень. Після цього їй серед іншого підвищили зарплату. Мати жила скромно, не прагнула розкішного життя. Утримувала трьох дітей, свою маму та свекруху. Батько отримував не дуже високу зарплатню доцента.

Бути справжнім керівником наукового проєкту — не кар’єра, а велика відповідальність. Це не висока посада, а тяжка праця. Бути формальним керівником, отримувати усі лаври легко. Катерина такою ніколи не була. Саме тому всі її поважали. Вона ділилася своїми ідеями, всім йшла назустріч, намагалася допомогти. Ось таким є її «кар’єрне зростання».

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

Не було вченої ради із захисту наукових досягнень в галузі інформаційних технологій та програмування, що спричиняло складнощі. Тому мати пройшла за математичною спеціальністю. Це була перша дисертація в Союзі, яку захищали з програмування.

Колаж з обкладинок книжок з описом Адресної мови

— Напевно, ваша мати відкрила шлях для наступників, які теж хотіли захиститися з цієї теми?

Так, вона відкрила шлях іншим. За три роки, у 1968-му, другу в СРСР докторську дисертацію з програмування захистив уже згаданий Андрій Єршов. Мати була опонентом понад 40 докторських робіт з програмування та підготувала майже 60 кандидатів наук (у джерелах пишуть 47) і 11 докторів наук. Багато з її учнів стали відомими вченими, академіками та членами-кореспондентами.

— Ще читала, що ваша мати була професором в Університеті ім. Шевченка...

Так, вона читала лекції там після того, як 1957-го чи 1958 року це перестав робити Володимир Королюк. Мати викладала в університеті до 1980-х. Працювала за сумісництвом спочатку на факультеті мехмату, потім на факультеті кібернетики (брала участь у його створенні).

— Цікаво, що ще до Другої світової саме з цього вишу Катерину Логвинівну виключили...

Так, у 1936-му вона вступила на механіко-математичний факультет університету Шевченка, склала зимову сесію на відмінно, але її відрахували як «доньку ворога народу». У той час її батька заарештували та звинуватили в «буржуазному націоналізмі», а відтак ув’язнили. Коли Катерина про це дізналася, то сама розповіла на університетських зборах. Наступного дня її виключили з вишу.

— Ваша мати ніколи не проводила паралелей, що колись її виключили з університету Шевченка, а потім вона там викладала?

Ні, вона розуміла, що це були такі, на жаль, жахливі часи. Зрештою вона вивчала математику в Узбецькому державному університеті в Самарканді, який під час війни об’єднали зі Середньоазійським державним університетом у Ташкенті. І закінчила цей виш у 1942-му.

— Чим займалася Катерина Логвинівна останні роки у часи незалежності? До якого віку працювала?

До дня смерті. Вона очолювала відділ автоматизації програмування в Інституті кібернетики приблизно 34 роки. Але вже в останні роки передала керівництво своїй учениці Ользі Перевозчиковій. А мати перевели на посаду радниці дирекції: вона працювала з документами вдома, до неї приходили співробітники... Їй складно було їздити громадським транспортом, тому, коли збирали вчені ради, ради із захисту кандидатських і докторських дисертацій, за нею приїжджала автівка та відвозила її на роботу, а потім назад додому. До речі, свого часу мати керувала найбільшим підрозділом в обчислювальному центрі АН УРСР, який налічував 40 співробітників, що становило приблизно половину штату усього центру.

Про особисте: «Тримає в руках дисертацію, гортає сторінки та смажить млинці»

— Якою людиною була ваша мати? Як встигала займатися і родиною, будинком, коли в неї було троє дітей?

По-перше, вона лягала спати останньою, а просиналася першою. Завжди була зайнята якоюсь працею, не мала спочинку. Яскравий приклад: ми приїжджаємо на дачу, і, поки розвантажуємо з багажника речі, мати вже сапою поле грядки.

Наш колишній декан Микола Глибовець, з яким я разом навчався, згадував: «Приходжу я до Катерини за відгуком, бо вона була моїм опонентом на захисті кандидатської. Вона зустрічає мене на кухні, тримає в руках дисертацію, читає, гортає сторінки та смажить млинці».

Ще один спогад: відпочиваємо в Алушті, живемо у кімнаті сімферопольського спортивного табору з п’ятьма ліжками. Режим дня: мати прокидається о 5-й ранку, з 5:30 до 6:30 йде на пляж, стоїть на сонечку, купається і приходить ще до сніданку.

Поснідали. Тоді ми, діти, з батьком йдемо на пляж до обіду, а мати кидає матрац з ліжка на підлогу, бо там не так спекотно, обкладається книжками та паперами, щось читає, пише, пише... Вона завжди брала з собою у відпустку повну валізу книжок і документів. Після обіду ми знову йдемо на море, повертаємося ввечері, а мати продовжує читати. Іноді ближче до вечора вона ходила на пляж, підставляла обличчя сонечку та купалася. Бувало, приєднувалася до нас удень, але на пляжі під тентом вона знов розкладала навколо себе папери та придавлювати їх камінцями. Пам’ятаю, одного разу, коли вона так працювала, подув вітер — і папери розлетілися по всьому пляжу, тож ми, діти, бігали і їх збирали. Отакий «відпочинок».

Мама писала поеми, вірші, дуже гарно малювала. Саме вона прищепила мені любов до образотворчого мистецтва, зацікавила канонами композиції, розповіла про золотий перетин. Коли вона була дитиною, то брала участь у шкільних постановках, писала сценарій для вистави. У неї було багато друзів. Так, з однієї подругою з Чигирина вона переписувалася до останніх днів: ці листи, написані рукою матері, зберігаються зараз у місцевому музеї.

Катерина з синами Андрієм (старший) та Юрієм (молодший)

— Читала, що ваш батько дуже підтримував Катерину Логвинівну, щоб вона могла поєднувати сім’ю та роботу?

Так, ще бабусі допомагали. Також у нас була няня Паша. Батьки взяли її з села з родини, де було понад 10 маленьких дітей, які недоїдали. Їй було 14–15 років. Вона допомагала доглядати нас, водила на прогулянки до лісу. Ця дівчина стала нам рідною.

Батько дбав, щоб удома були продукти, а також робив дрібний ремонт у квартирі: все міг власноруч полагодити. Крім того, водив нас у поліклініку — цим мати займалася дуже рідко. Якось вона прийшла зі мною чи сестрою до лікаря. Медсестри, дізнавшись, що вона є нашою мамою, переглянулися між собою, сказали: «А ми думали, що діти — напівсироти, що у них є тільки батько».

— Читала спогади онучки Анни, вона казала, що бабуся в неї асоціювалася зі святом. Також дивилася єдине відео з Катериною Логвинівною, де якраз зняте родинне свято. А з чим у вас асоціюється мати?

Так, це спогади моєї племінниці. Пригадую, коли ми були дітьми, на Новий рік мати ходила до сусідів, переодягалася в Діда Мороза: надягала білу бороду, червоного капелюха, одягала світлий халат. І ми вдавали, ніби віримо, що це справжній Дід Мороз. Нас дуже веселило, що батьки думали, ніби ми не впізнали мати :)

Про життєві випробування: «Праця на бавовняних полях в Самарканді та небезпечна робота запальником у шахті»

— У вашій родині багато було математиків або програмістів?

Чому взагалі мама так зацікавилася математикою? Тут «провина» бабусі — Ксенії Рвачової. Бабуся виховувалася без матері, а її батько був лісничий. Звісно, школи у лісі не було. Якось до них приїхав знайомий і подарував їй книжку — задачник з математики, показав, як читати літери. Через деякий час приїжджає, питає: «Ну що, навчилася читати? Тепер навчу тебе розв’язувати задачі». — «Я вже всі задачі розв’язала». — «Як це? У тебе ж нема ні аркуша, ні олівця, ні ручки! Ти не могла цього зробити!» — «А я паличкою біля річки на пісочку писала».

Потім через скрутне матеріальне становище бабуся пішла працювати до заможних людей домробітницею, а там були діти, які мали проблеми з математикою. Вона почала їх підтягувати. І так вдало, що її стали рекомендувати, тож вона заробляла репетиторством. Ці люди дозволяли їй користуватися бібліотекою, бабуся розповідала, що траплялися дуже цікаві математичні книжки, зокрема східних авторів про головоломки, логічні задачі. Вона все це опанувала та закінчила гімназію екстерном. Тут теж була цікава історія: вона збирала кошти, щоб скласти іспити, але за тиждень до екзаменів у неї вкрали гроші з матраца, де вона їх ховала. Дівчата з гуртожитку швиденько зібрали потрібну суму та подарували їй, бо бабуся завжди всім з радістю по дружбі допомагала.

Потім вона познайомилася в Чернігівській області з майбутнім чоловіком, і вони переїхали у Чигирин, де бабуся працювала в школі. Усі її діти стали математиками або фізиками, це взагалі відома родина в Україні. У Чигирині є вулиця сім’ї Рвачових. Брат матері Володимир Рвачов — академік, був ректором Харківського інституту радіоелектроніки, вигадав відому у всьому світу R-функцію. Інший брат Олексій був видатним фізиком, усе життя очолював кафедру в Харківському авіаційному університеті...

— У вас є відео на YouTube про біографію Катерини Логвинівни, в описі якого зазначаєте, що це ролик «про скрутне життя винахідниці вказівників». Що ваша мати вважала найбільшою перепоною, випробовуванням для себе?

Репресія батьків і відрахування з університету Шевченка. Ще працю під пекучим сонцем на бавовняних полях неподалік Самарканду. Також коли вона була студенткою, то виконувала дуже небезпечну роботу запальником у шахті.

— Це під час війни?

Так, під час війни, коли завершила навчання в університеті. Потім вона ще працювала на заводі з налагодження прицілів для танків, причому вони мали справу з дуже шкідливими для здоров’я речовинами: якщо потрапляло на шкіру — виїдало повністю, щось значно сильніше, ніж сірчана кислота.

Потім випробуванням стало те, що вона, приїхавши до Києва та не маючи даху над головою, не могла повернутися у Львів. Тож у неї було два варіанти: або знову викладати математику в школі у Стрию, де вона працювала до Львова, або погодитися працювати у Києві й обертати ручку арифмометра. Для неї це було страшне рішення, бо руйнувало її мрії продовжувати дослідження з теорії ймовірності, вона все життя про це шкодувала.

Якщо ще говорити про перепони, то мати часто казала, що чоловіки — негідники, кар’єристи, зрадники. Мати мала на увазі, що чоловіки не дають жити та просуватися жінкам. Але при цьому і виправдовувала їх, бо «чоловік має годувати сім’ю, заробляти гроші, щоб забезпечити дружину та дітей».

У нашій сім’ї мати була головою в усьому. І не тому, що заробляла більше, ніж батько, а тому, що була авторитетом, мудрою, завжди ухвалювала більш виважені рішення. Батько водночас при вирішенні сімейних питань не вважав себе другорядним, бо мати завжди знаходила лагідні та переконливі аргументи та підтримувала його авторитет перед дітьми. Він почувався на одному рівні з мамою.




— Ви сказали, що Катерина Логвинівна все життя шкодувала про те, що їй не вдалося реалізувати мрії щодо продовження досліджень у теорії ймовірностей. Це при тому, що вона досягла таких висот у галузі програмування?

Так, жалкувала, що не пішла тим шляхом, про який мріяла з дитинства. Казала, що її доля склалася б інакше, якби вона продовжувала дослідження з теорії ймовірностей. Я двічі гостював у Бориса Гнєденка в Москві. І він про мою мати казав так: «Це невтомна, талановита та неймовірно скромна людина. Їй не годен у слід ступити жоден з моїх учнів».

Гнєденко пояснив, що за декілька місяців мати розв’язала дуже складну задачу, яку він перед нею поставив. І це вона змогла зробити завдяки підготовці високого рівня в галузі комбінаторного аналізу в Середньоазійському університеті. І моя мати, і бабуся розповідали, що в Середній Азії заклади, де здобувають математичну освіту, можуть дати фору європейським вишам.

І Гнєденко, який під час Другої світової сам захистив кандидатську дисертацію у Ташкенті, мені сказав: «Я знаю, як готують у середньоазійських університетах, тож щойно я побачив, що у твоєї матері диплом з відзнакою, зрозумів, що переді мною талановитий математик».

— А яка ваша особиста мрія, пов’язана зі вшануванням пам’яті матері? Чого б ви хотіли та навіщо?

Щоб встановили пам’ятник на її честь, як це зроблено за кордоном для усіх першопрохідців у ІТ: Ади Лавлейс, Чарлза Беббіджа, Конрада Цузе тощо. Назвали іменем матері одну з вулиць чи проспектів у Києві. Щоб у підручники інформатики додали інформацію про Катерину Ющенко. А ще заснувати державну премію її імені...

Наразі в усіх закордонних джерелах та майже в усіх вітчизняних першими мовами програмування називають Фортран, Кобол та Алгол-60. При цьому Адресна мова, створена на кілька років раніше, за своїми можливостями перевершує їх. Тож Україна має донести світовій спільноті про винайдення і першої мови програмування, яка мала велике практичне значення, і вказівників, списків, складних ієрархічних структур та декларативних засобів програмування. І пишатися досягненнями наших науковців у сфері ІТ.

Маєте важливу новину про українське ІТ? Розкажіть спільноті. Це анонімно.І підписуйтеся на Telegram-канал редакції DOU

👍ПодобаєтьсяСподобалось56
До обраногоВ обраному13
Підписатись на автора
LinkedIn



45 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Емулятор унікального комп’ютера «Київ». Історично-науковий семінар.
© Організатори:
1. Інститут фізики конденсованих систем НАН України.
2. Український католицький університет УКУ.
3. Львівський Музей Комп’ютерних Технологій.
В комп’ютері «Київ» вперше в світі було апаратно реалізовано адресну арифметику.
Зокрема: floating addressing та багатократне розіменування вказівників (Multiply Indirection of Pointers).
Українські вчені випередили США на десяток років винайшовши потужні та найважливіші засоби сучасного програмування:
1) вказівники та їх розіменування;
2) 0-вказівник;
3) адресну арифметику;
4) складні ієрархічні структури.
Закордонним та українським вченим мало відомо про комп’ютер «Київ» у якому були апаратно реалізовано зазначені вище винаходи.
Підтвердження та докази того, що це було винайдено в Україні наявне в низці публікацій по Адресній мові програмування та по комп’ютеру «Київ».
youtu.be/J7aTZPlZlMY

Статья крутяк. И Катерина естессно тоже крутяк.

Є інша версія — Норберт Вінер приїхав до Києва на запрошення п. Калужніна Л.А.

Норберт Вінер

перебував у Москві на міжнародній конференції. У нього є українські корені: хтось з пращурів з України. У Москві він почув про досягнення киян у ІТ. Це дві причини того, що він після конференції вирішив відвідати Київ. Мені достовірно відомо, що у Києві він з дружиною прийшов у президіум АН УРСР, де йому швидко знайшли супроводжувача аспіранта та повідомили ОЦ АН УРСР про його бажання ознайомитись з досягненнями. Деякий час КГБ тримало «дозвіл». Цілком можливо, що Калужнін Л.А. теж приймав участь у зацікавлені Вінера, але мені про це досі не було відомо.
100% приїзд до Києва ВІнера був неочікуваний для ОЦ АН УРСР.

Цілком імовірно, що саме від Калужніна, під час конференції, він дізнався про досягнення киян та отримав від нього пропозицію/запрошення відвідати Київ.

Перша високорівнева мова була розроблена в Берліні Конрадом Цюзе 1944-48
www.youtube.com/watch?v=s4iMT4c_-zo
Звісно особистість знакова шкода шо ці розробки не мали вплаву на світову спільноту.
Цюзе також був частково забутий хоча мав змогу випускати комерційні машини
Я так й не зрозумів як виникли й шо таке держ цтандард коболу в ссср — тобто це завірили то шо вже існувало як факт ?

Поскольку технические аспекты в интервью поданы очень поверхностно, я прочитал Элементы программирования / Б.В.Гнеденко, В.С.Королюк, Е.Л.Ющенко — М.: ГИФМЛ, 1961. — 348 с. so that you would not have to.

Дальше пересказ прочитанного в современной терминологии.

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

Мысленно перенесемся по время, когда компьютеры были большие, а памяти у них было 2 килобайта. Если бы у нас была волшебная палочка — как бы мог выглядеть компьютер нашей мечты? Стр. 240-243 говорит нам: пусть память компьютера будет иметь вид ассоциативного массива (dictionary) с произвольными ключами.

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

for key in some_keys:  
    process memory[key]

Или

for key=first_key to last_key:
    process memory[key]

В книжке для доступа к значению по ключу memory[key] используется запись 'key, а для memory[key]=val пишут val => key (стр. 243)

Значениями в нашем ассоциативном массиве можут быть другие ассоциативные массивы, то есть, мы может делать memory[key1][key2][key3].....

Практическая реализация

Но в реальности компьютеров с такой организацией памяти у нас нет, и не предвидится.

А есть у нас, например, машина Киев (далее ссылки на Вычислительная машина «Киев»: Математическое описание / В.М.Глушков, Е.Л.Ющенко // К.: Государственное издательство технической литературы, 1962. — 183 с.

(Далее ссылки на страницы в этом файле)

В которой большинство команд — трехадресные (два адреса-источника, и адрес-приемник). Операнды любых команд (например арифметических или логических) задаются только адресами — то есть, чтобы прибавить 1 к значению в памяти, нужно использовать «ADD value_addr, address_of_one, value_addr». В памяти машины есть зона с часто используемыми константами типа 0, 1, 10, pi, e, sqrt(2), ...

Кроме того, любой из трех адресов может трактоваться как буквально, так и со смещением, задаваемым специальным регистром А — для этого у каждого адреса есть бит «со смещением». Таким образом, «ADD addr1, addr2, addr3» — это аналог mov eax, [addr1]; add eax, [addr2];  move [addr3], eax, а если все три адреса помечены как «со смещением», то это будет mov eax, [addr1+A]; add eax, [addr2+A];  move [addr3+A], eax

Видно, как с помощью регистра А и смещений можно реализовывать тело цикла, которое последовательно обрабатывает какие-то последовательности лежащих в памяти машинных слов.

У машины есть сменные ПЗУ, в которых могут быть программы для, например, умножения матрицы на вектор. Которым нам надо передать адрес матрицы, адрес вектора и их размерности, но стека и передачи аргументов через стек у нас нет, регистров общего назначения тоже нет — то есть передавать аргументы через регистры тоже нельзя. В результате аргументы передаются через магические адреса. Например, по адресу 1000 размещается адрес вектора, по адресу 1001 — адрес начала матрицы, и т.п.

Код в ПЗУ, таким образом, должен делать что-то вроде mov ebx, [1000]; move eax, [ebx+i] для доступа к i-му элементу вектора через двойное разыменования адреса.

При такой передаче параметров двойной indirection к памяти будет частой операцией, поэтому в системе команд есть команда Ф (стр. 60): Ф addr1, addr2 сделает  A=value at address addr1; (value at address (addr2+A))= value at address (value at address addr1), то есть, фактически, выполняет то самое двойное разыменование адреса addr1.

Как же тут реализовать Адресный Язык?

Адресный Язык в полном объеме тут реализовать не получится (помним, что памяти — 2 кб), но можно использовать его упрощенный вариант, в котором «адреса» — это физические адреса компьютера (а не произвольные понятия), мы не разыменовываем адрес больше двух раз и т.п. (стр. 53). Такой упрощенный адресный язык можно даже транслировать в машинные коды простеньким ассемблером — сам ассемблер, пример строки на упрощенном адресном языке и ее трансляция в машинные коды даны на страницах 78-81

А программу на полноценном Адресном Языке можно попытаться переписать на упрощенный вручную используя описываемые в книге правила переписывания.

Цитируя стр. 47 (выделение мое):"Таким образом, работу, которую обычно выполняет квалифицированный программист, удается разделить на две существенно различные части. Труд по уточнению и составлению алгоритма,требующий высокой математической культуры, выполняется инженером-программистом. Результат этого труда — адресная программа. Работа по переводу последней в машинный код осуществляется программирующими программами. Кодирование адресных программ (а иногда и перевод в необходимый стиль), каки работа на машинах, выполняется операторами со средней квалификацией. Перспективы внедрения читающих автоматов обещают свести этот труд до минимума"

Синьойр сидит в башне из слоновой кости, джуниор пишет код :)

Где же pointer-ы?

Как я понимаю, именно операция двойного разыменования адреса Ф претендует на «вот он, первый в мире поинтер».

Мне кажется, что к этому моменту уже существовали компьютеры с косвенной адресацией через регистры (whirlwind?), в которых можно было делать аналог «mov eax, [ebx]», соответственно, надобности во втором уровне косвенности не было (а нужна она только тогда, когда все аргументы задаются только и исключительно через адреса).

Математические конструкции Адресного Языка безусловно интересны, но практической реализации его в полном объеме, как я понимаю, так и не было, а то, что было (урезанный вариант с только машинными адресами) было, по сути, на уровне ассемблера с командами косвенной адресации по адресу (что не было чем-то новым).

Соответственно, оспаривать пальму первенства у PL/I с его POINTER (который был вполне себе живым в 1964 году) будет тяжело.

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

Спасибо, Дима! Цель этой статьи было вытянуть тебя снова на ДОУ. ;)

I walked right into it

Обнимемся! :)

До PL/1 не было компьютеров с помощью которых можно было реализовать. P.S. Пересмотрел кучу публикаций и похоже что изобретатлем указателей сейчас действительно считается Катерина Ющенко в 1955 году. Хотя практической реализации до PL/1 действительно не было.

Цитата з опису архітектури комп’ютера «Київ» (1955р.): «Заметим, что операция Ф может быть использована одновременно для пересылки кода, заданного адресом его адреса (адресом второго ранга), в любую ячейку ОЗУ.».
Джерело:
Глушков В.М., Вычислительная машина «Киев». Математическое описание / В.М. Глушков, Е.Л. Ющенко. // К. : — Гостехиздат УССР, 1962. — 183 c. : ил., — URL: Vychislitelnaya-mashyna-Kiev_VHlushkov_EYushchenko_1962.pdf (infoua.net). files.infoua.net/...​hkov_EYushchenko_1962.pdf

Адреса 2-ого рангу = вказівник.

Опис архітектури комп’ютера «Київ», включаючи Ф-операцію та інші групові операції модифікації адрес (з Адресного методу програмування) перекладено та видано у США в 1963р. Цей опис містить опис апаратну реалізацію «штрих-операції» (розіменування Pointers).

З практичним реалізаціями Адресної мови можна ознайомитись у публікаціях по цій мові.
Адресна мова реалізована на «Київ», М-20 (БЕСМ-3, БЕСМ-3М та БЕСМ-4), комп’ютерах серій «Урал», «Мінськ», «Дніпро-1 та 2», ЯВУ на Промінь та МІР-1 тощо. АВТОКОДи (машинозалежні мови з високорівневими засобами, включаючи потужну адресацію Адресного програмування) для багатьох інших моделей комп’ютерів. Існують публікації у яких описується реалізація ПП, компіляторів та трансляторів з Адресної мови. Комп’ютери з реалізованою Адресною мовою були у серійному виробництві до середини 70-х років.

Рекомендую ознайомитись з програмами, які розв’язувались на комп’ютері «Київ» Адресною мовою програмування, перелік яких надано у вищезгаданій монографії «Вычислительная машина „Киев“. Математическое описание» на сторінках 82-124.
Найбільш яскраві з цього переліку (сучасною термінологією):
1. Розпізнавання простих геометричних фігур, друкованих та рукописних літер та цифр методом МАШИННОГО НАВЧАННЯ. Ковалевський, Рибак (досі живий).
2. Низка програм аналізу речень на природній мові.
3. Емулятор комп’ютера «Дніпро» на якому реалізовано компілятор Адресної мови для цього комп’ютера. Згодом подібне було зроблено для «Промінь» та «МІР-1».
4. Автоматизована система проектування електричних схем для розробки оборонних та побутових приладів та самих комп’ютерів. Використано при проектуванні «Дніпро», «Промінь» та серії «МІР» (окрім проектування різноманітних приладів).

Окремими цитатами:
1. «Решение транспортной задачи методом Лурье-Олейника»
2. «Проектирование профиля автомобильных и железных дорог»
3. «Программа для вывода буквенно-цифровой информации на экран электронно-лучевой трубки.».
4. «Программирующая программа для управляющей машины широкого назначения (УМШН)» — розроблена на емуляторі комп’ютера «Київ» (УМШН).
5. Гидравлический расчет водопроводных и газовых сетей.
6. «Реализация алгоритма определения времени повалки бессемеровского конвертера» для віддаленого керування процесом виплавлення сталі на сталелітійному заводі, який розташовано за 500км від комп’ютера «Київ».
7. «Определение оптимального режима процесса в карбонизационной колонне содового комбината». — для содового комбінату м.Слов’янськ.
8. «Тяговые расчеты для тепловоза». — ще довгі роки подібні задачі розв’язувались київськими програмістами.
9. «Расчет диаметров и давлений газовых и водопроводных сетей.» — розв’язок цих задач «народив» галузь у прикладній математиці: оптимізаційні задачі нелінійного та динамічного програмування, які розвивали київські математики.
10. «Алгоритм морфологического анализа русского языка»
11. «Алгоритм синтаксического анализа русского языка, предложенный».
12. «Алгоритм обучения распознавания смысла простых предложений».
13. «Моделирование процессов биологической эволюции».
14. «Алгоритм обучения распознаванию простейших геометрических фигур».
15. «Корреляционный метод распознавания изображений».
У монографії не описано інформаційну систему «Автодиректор», яка є таблично базою даних реляційного типу. Ці систему розроблено Адресною мовою на комп’ютері «Київ». Досвід цієї розробки використано у низці систем управляння підприємством, зокрема для заводу Азовкабель (м.Бердянськ — 1965р. — визнано «Москвою» самою передовою системою у СРСР), відомої системи «Львів» тощо.

Бабенко Людмила Петрівна (ще жива), яка займалася реалізацією Адресної мови, розповіла, як з 1958р. Адресну мову використовували Ковалевський та його компанія для задач розпізнавання образів.

Це все підтверджує про наявність практичної реалізація до ПЛ/1 та просто її наявність, а з величезним практичним значенням, чи не так?

Дуже шкода, що про це невідомо, і в усьому світі, і українським програмістам.

Дякую за підтвердження того, що до ПЛ/1 не було комп’ютерів на яких можна було реалізувати.
Це ще раз доводить унікальність комп’ютера «Київ», про яку світовій спільноті ІТ-фахівців нічого не відомо. Це також доводить факт суттєвого випередження українських технологій програмування над передовими технологіями США.

«Заметим, что операция Ф может быть использована одновременно для пересылки кода, заданного адресом его адреса (адресом второго ранга), в любую ячейку ОЗУ. ... Адреса 2-ого рангу = вказівник.

Ну, у Киева не было регистров общего назначения, и все операции требовали указания адреса аргумента в памяти, так? Соответственно для циклического прохода по ряду значений были нужные такие ухищрения.

Авторы пишут об это прямо (цитирую по приведеному вами источнику, страницы 62-63): можно создать цикл командами НГО ... ОГО, при этом НГО дается адрес, содержащий макс. число циклов и начальное значения регистра смещения (А), ОГО потом этот регистр А увеличивает, пока не будет выполнено нужное кол-во циклов.

Но так как регистр циклов Ц один, то со вложенными циклами возникаю сложности. Поэтому (страница 63-64) можно использовать команду Ф, которая позволяет менять содержимое А, не меняя/не трогая регистр циклов Ц. Ф дается адрес, она извлекает из него значение, содержащее адрес значения, попадающего одновременно в регистр сдвига А и в любой другой адрес в памяти (чтобы дальше можно было его сравнивать, увеличивать и т.п.). Теперь мы можем делать вложенные циклы, не упираясь в то, что специальный регистр для циклов Ц всего один, и вызывать подпрограммы, передавая им адреса обрабатываемых значений через ячейки с магическим адресом вида 0002.

Страница 14 (буквально рядом с приводимой вами цитатой) так и говорит: «Операция Ф позволяет кодировать в постоянной памяти циклические процессы произвольной глубины.»

Если я не ошибаюсь, кроме как для программирования циклов и передачи адресам аргумента операция Ф больше ни для чего в этом источнике не применяется. Никаких деревьев, иерархических структур, лиспа, баз данных там тоже не наблюдается.

Теперь открываем руководство по программированию WhirlWind (1953 год): www.bitsavers.org/...​e_System_Manual_Dec55.pdf

И читаем описание его высокоуровневого транслируемого языка программирования.
На страницах 29-32 описано программирование циклов, в том числе вложенных, с возможностью использования произвольного количества ячеек памяти для хранения текущего значения счетчика вложенных циклов — уровень вложенности ограничен объемом свободной памяти. На странице 30 объясняется, как значение счетчика может быть использовано, чтобы адресовать ячейки памяти адресами вида «база + счетчик». На странице 35-37 объясняются floating addresses — возможность использования произвольных символьных адресов, которые будут транслироваться в физические транслятором (прямая аналогия с множеством адресов в Адресном Языке, и их автоматическая трансляция во множество 0.....). Если читать дальше, то можно найти стек адресов + call/return, локальный storage в подпрограммах, локальные relative addresses, и множество других вещей, знакомых любому, кто видел современный ассемблер. Со страницы 171 описана трехпроходная компиляция языка и трансляция символьных меток в абсолютные адреса....
Я вижу тут все, что есть в книжке про Киев — и больше — в 1953 году. Первый whirlwind вышел в 1951-ом, но как я понимаю, макроассемблера в нем еще не было.

Опис архітектури комп’ютера «Київ», включаючи Ф-операцію та інші групові операції модифікації адрес (з Адресного методу програмування) перекладено та видано у США в 1963р. Цей опис містить опис апаратну реалізацію «штрих-операції» (розіменування Pointers).

Если вы почитаете эту публикацию (а она есть у вас на сайте — files.infoua.net/...​s-Technology-III_1963.pdf), то вы увидите, что там приведен дословные перевод статьи, сравнивающей системы команд разных советских компьютеров того времени. Там нет абсолютно никакого описания Адресного Языка, описание архитектуры состоит из описания раскладки машинного слова на компоненты, а описание операции Ф, из которой, по вашему мнению, можно было «слизать» всю идею, выглядит вот так (страница 61):

23. ’kg = 30. Command change. By this command:
a) ’k — ’e0’Ts => K;
b) ’C + 1 => C;
c) ’K + 2^C => K.
Thus, the «next» command enters the command register,
modified by the quantity of the contents of address ’k — ’e0’Ts.

Нигде в текcте не объясняются значения верхних индексов, штрихов, e0, Ts и так далее.
Мне кажется слегка сомнительным, что именно этот текст и именно это описание операции Ф (которая не называется тут Ф, имеет код операции, отличной от указаного в Мат Описании Киева) позволило западу взять идею указателей и начать использовать ее у себя.

Це все підтверджує про наявність практичної реалізація до ПЛ/1 та просто її наявність, а з величезним практичним значенням, чи не так?

Было бы просто замечательно посмотреть, например, на листинг программы, которая:
— использует операцию Ф не для организации циклов а именно как указатель в сложных (иерархических?) структурах данных
— написана на Адресном Языке
— причем на том его подмножестве, которое можно было ввести в транслятор (ПП-АК, или как он назывался), реализованный на Киеве — и реально исполнить.

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

Можно почитать отчеты о WhirlWind, со списками решаемых задач — они не менее впечатляющие и датируются от 1951 года. Но мне кажется напрямую к теме обсуждения этого никакого отношения не имеет.

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

Щиро дякую за інтерес до «Київ» та Адресної мови та за детальний аналіз публікацій.
Щиро дякую за зауваження.
1. Роль регистрів виконували комірки пам’яті, що на функціональність не впливає.
2. Ф-операція використовується не лише у групових операціях, а й сама по собі.
3. На сторінці 45 (Машина Киев) зазначено: «В формуле циклирования может быть предусмотрен одновременный перебор нескольких множеств, например ...», що є унікальною можливістю визначення вкладений циклів у формулі циклування. Ця можливість відсутня у «заголовках циклів» імперативних мов програмування. Aормула циклування може бути використана для: а) отримання декартового добутку: перебору усіх tлементів однієї множини з усіма іншими елементами іншої множини (може бути n множин); б) об’єднання множин; в) фільтрації (тета обмеження алгебри Кодда); г) перетину; д) тета-з’єднання е) теоретико-множинного віднімання тощо.
4. Про деревоподібні формати (складні ієрархічні структури) описано у інших монографіях, зокрема в «Адресное программирование». Наявні приклади використання цих форматів. Зокрема деревоподібні формати, на відміну від абстрактних типів даних, допускають використання у якості складових елементів адреси підпрограм, що дозволяє «побачити» щось подібне на екземпляри класів ООП (з даними пов’язуються підпрограми їх обробки).
5. У 1963г. в США переведено та видано додатки до книжки, в якій є повний опис Адресної мови (монографію, яку надруковано у 1962р. була у США та, напевно, були і інші публікації по Адресному програмуванню).
6. Наявність лише одного А-регістру не виключає можливість емуляції більшої їх кількості, що і було зроблено в реалізації Адресної мови. Див.6 п.3 цього коментаря.

Роль регистрів виконували комірки пам’яті, що на функціональність не впливає.

Зато влияет на то, как эта функциональность достигается. Есть регистры общего назначения и команды, их использующие — пишем «mov eax,[ebx]», нету — приходится использовать «адрес хранится по этому адресу»

2. Ф-операція використовується не лише у групових операціях, а й сама по собі.

Судя по примерам из книги — только для того, чтобы положить адрес аргумента в ячейку перед вызовом подпрограммы из ППЗУ (о чем я упомянул). Или есть примеры, в которых это не так? На какую страницу смотреть?

3. На сторінці 45 (Машина Киев) зазначено: «В формуле циклирования может быть предусмотрен одновременный перебор нескольких множеств, например ...», що є унікальною можливістю визначення вкладений циклів у формулі циклування. Ця можливість відсутня у «заголовках циклів» імперативних мов програмування. Aормула циклування може бути використана для: а) отримання декартового добутку: перебору усіх tлементів однієї множини з усіма іншими елементами іншої множини (може бути n множин); б) об’єднання множин; в) фільтрації (тета обмеження алгебри Кодда); г) перетину; д) тета-з’єднання е) теоретико-множинного віднімання тощо.

Только «формулы циклирования по нескольким множествам» нельзя было использовать при практическом программировании, т.к. ПП-АК допускало только (стр. 130) операции циклирования, соответсвующие привычным всем нам циклам «for i =n to m». Если я не прав, то на какой странице можно увидеть листинг для ПП-АК или ПП-2 с такой формулой циклирования?

4. Про деревоподібні формати (складні ієрархічні структури) описано у інших монографіях, зокрема в «Адресное программирование». Наявні приклади використання цих форматів. Зокрема деревоподібні формати, на відміну від абстрактних типів даних, допускають використання у якості складових елементів адреси підпрограм, що дозволяє «побачити» щось подібне на екземпляри класів ООП (з даними пов’язуються підпрограми їх обробки).

У вас есть выходные данные и номер страницы?

5. У 1963г. в США переведено та видано додатки до книжки, в якій є повний опис Адресної мови (монографію, яку надруковано у 1962р. була у США та, напевно, були і інші публікації по Адресному програмуванню).

Аналогичный вопрос — у вас есть выходные данные?

соответсвующие привычным всем нам циклам «for i =n to m».

Цитата про «не звичні нам усім цикли „for i =n to m“» зі стор.18 джерела:
Королюк В.С., Шкабара К.О. Ющенко К.Л. Групові операції мишини «Київ». Збiрник праць з обчислювальноï математики i технiки / Акад. наук Украïнськой РСР. Обчисловальний центр. Т.2. 1961, С. 16-20.

«Крім того, при виконанні операції Ф в адресу а надходить код,що міститься в чарунці а + ір, номер якої знаходиться в другій адресі чарунки фі. Оскільки тепер величина групової константи переадресації явно не входить у програму, вигляд останньої залишатиметься незмінним. Зміна константи переадресації зводиться тепер до зміни вмісту деякої чарунки фі. Друга адреса команди Ф залишається вільною. Команда Ф передає керування наступній за номером команді.
Таким чином, зовнішні цикли в складних циклічних процесах можна кодувати як за допомогою операції ПГО з наступною переадресацією останньої, так і в постійній пам’яті за допомогою операції Ф. У зв’язку з тим, що код фі в першій адресі команди Ф можна розглядати як адресу, що фіксує величину зсуву по послідовності деяких адрес, операцію Ф прийнято називати операцією звернення за адресою другого рангу (про поняття рангу адреси див. [1]).
Операція Ф реалізується таким чином: адреса другого рангу фі передається на оперативну пам’ять, з оперативної пам’яті адреса першого рангу а+ ір передається знову на регістр команд пристрою керування, далі з регістра команд вона знову надходить до’оперативного запам’ятовуючого пристрою (ОЗП) і одночасно на регістр адреси пристрою керування. Інформація з чарунки а + ір виходить з ОЗП і затримується там на регістрі числа. Код з третьої адреси команди Ф надходить на ОЗП і за цією адресою відбувається запис вмісту чарунки а + ір.
».

Наскільки розумію, у WhirlWind іде мова лише про адресацію першого рангу типу «а+ ір», а адресація другого рангу про яку ідеться мова у цьому фрагменті у WhirlWind, чи не так?

Невже регістри whirlwind передбачали, окрім адресації першого рангу «а+ ір» ще і опосередковану адресацію другого та більш високих рангів?

Дуже цікава та важлива Ваша думка на привід наявності у «floating addresses» не лише плаваючої адреси типу «база + зсув», а і описаних в наданій цитаті «витягування» значення за адресою: адреси другого рангу, що дозволяє визначати цикли по «ланцюжковим спискам» (по слідуванню, яке визначається «штрих-операцією» = Ф-операції), яким подібні лінійні однозв’язні у сучасному їх розумінні.

Все вищесказане викликає сумніви щодо твердження:

Я вижу тут все, что есть в книжке про Киев — и больше — в 1953 году.

С whirlwind (1951) немного знаком — круто для тех времён, но средств высокого уровня там не увидел.
Киевские учёные были в отрыве от всего мира и результаты шпионажа не имели возможность использовать.

Дякую за статтю, дуже цікаво і дуже сумно.
Скільки мільйонів людей постраждали від совкового режиму влади :-/
Просто не пощастило народитись у вільній країні.

Згадується злий жарт:
— Як ви думаєте якби Ілон Маск народився в росії йому б вдалося заснувати SpaceX?
— Він би ще за PayPal не відсидів

Думаєте, що жінка 1919 року народження з бідної селянської родини в Штатах змогла б стати доктором наук?

та легко, вон Билл Гейц вообще в гараже майкрософт сделал

а гугление «папа Била Гейтса» вот вообще, говорят, ничего не находит ;)
Та нет, я это из зависти

намекаете шо капитализм перерос в империализм, то есть, фактически в то, чем нас пугали при СССР?

Так може в умовах Штатів її родина фермерів не була би бідною?

«Русский Илон Маск» умер из-за пыток и изнасилований в СИЗО

Ні, це не жарт, це заголовок з їхніх новин

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

Ей нужно было сразу искать возможность уехать.

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

В статье много художественного пре-украшения. То что идея адресной арифметики и указателей зародилась в оружении. Лебедева и разные ученые и аспиранты из этого окружения ее сумели реализовать независимо — допустим. То что премию Тьюринга дали только Хоару т.к. он уехал домой из под железного занавеса — тоже допустим. Королеву тоже не дали Нобелевскую премию потому что он вплоть до своей смерти был засекречен. Но про SQL это уже откровенное пре украшательство и художественный вымысел. Тоесть теперь и Джеффри Ульман не засуженно получил премию Тюринга. Кто там дальше из лауреатов у советских ученых проворовался? Ричи с Томсоном на магнитной ленте вывезли коды UNIX и С ? Никлаус Вирт и Барбара Лисков — все стырили и теорию трансляции и теорию типов. А Альфред Ахо и компания — чисто мошейники, книга дракона это чисто перевод с русского. Ну и естесвенно Тим Бернерс-Ли подсмотрел как по телеграфу компьютер домной управляет, и заделал интернет — чисто мошенник.

Ще у школі, на уроках фізики, помітив — часто, коли назрівала ситуація, двоє вчених з різних кінців світу ледве не одночасно приходили до одного й того самого рішення чи відкриття. І так з половиною винаходів людства. Не думаю, що КС має бути унікальним.

Так, ідея адресної арифметики зародилася у оточенні Лебєдева коли він досліджував програмування на МЕСМ у Феофанії. Це було влітку 1952р. у Феофанії. Там у Феофанії, працюючи пліч опліч з Катериною Ющенко Ляпунов запропонував операторний метод програмування. Катерина Ющенко ділилася з ним вишуканими методами програмування, а співробітниці її лабораторії допомагали Ляпунову вводити дані та програми до МЕСМ та зчитували результати роботи цих програм.

Саме унікальні особливості архітектури МЕСМ (команда складання команд) надали можливість ще на МЕСМ київським математикам/програмістам модулювати опосередковану адресацію 2-ого рангу (Pointers), хоча ще не «побачили» цього та потужність опосередкованої адресації.
Ляпуновим було надано математичний формалізм для масивів, а не для адресації до довільних комірок пам’яті, які можуть бути згруповані між собою опосередкованою адресацією.
Це було винайдено Катериною Ющенко при розробці Адресного методу програмування та проектування нею системи команд комп’ютера «Київ». Про це вона написала у монографії «Вычислительная машина „Киев“. Математическое описание.» Цитата про зародження/виникнення Pointers зі сторінки 53 «Разработка математических требований к машине „Киев“ шла параллельно с работой по созданию и развитию адресного языка. Идея построения сменно-спаянной памяти (выдвинутая Е. Л. Ющенко), в которой в виде спаянных блоков могли бы храниться стандартные программы для реализации тех или иных алгоритм мов, была первоначально осуществлена с помощью групповых операций НГО и ОГО. Эта же идея послужила толчком к выработке понятия адреса высшего (второго) ранга и вместе с ним первоначального понятия адресного алгоритма ...». Насправді, після переусвідомлення, Катерина Ющенко повідомила, що адресація 2-ого рангу модулювалась на МЕСМ (вказівники на підпрограми та на дані), хоча ще 2-ого рангу тоді ще не «відчували», та про те, що підказка винаходу вказівників була у МЕСМ: у команді складання команд та центральному та місцевому управлінні (однолітки МЕСМ цього не мали).

Адресна мова надавала програмістам використовувати поняття МНОЖИНА та робити теретико-множинні операції над множинами. Визначення умов у формулах циклуванні являє собою щось подібне тета-з’єднанню алгебри Кодда та JOIN.
Адресна мова має вичерпні декларативні засоби, зокрема «мінус штрих-операція» (обернена до «штрих-операції» — обернена до розіменування Pointers) являє собою чисто декларативний характер. По значенню (адресі чи даним) дозволяє отримати адреси за якими це значення зберігається. Якщо деревоподібні формати організовано у таблиці між якими відношення «один до багатьох», то по значенню первинного ключа можна визначити кортежі (їх адреси) другої таблиці. За своєю суттю зовнішні ключі є адресами.
Адресній мові бракує термінології, у ті роки цієї термінологія ще не було, термінологія ще не стигла сформуватися, але потужність опосередкованої адресації вищих рангів є універсальним засобом для визначення довільних зв’язків між згрупованими даними. Усі необхідні програмісту зв’язки між даними можна визначити за допомогою двох відношень слідування: природного та такого, яке визначається «штрих-операцією» (розіменуванням Pointers). Цитую про слідування, яке визначається значеннями вказівників («штрих-операцією»): «Операция следования для элементов исходной информации может устанавливаться с помощью штрих-операции по операции следования в множестве адресов.» (стор. 43. «Вычислительная машина „Киев“. Математическое описание.»). Саме два відношення слідування дозволяють визначати довільні складні ієрархічні структури (деревоподібні формати), яким подібні Абстрактні типи даних.
Тут варто згадати Асоціативне програмування (початок у 1963р. — до «винайдення» вказівників у США) Кітова та його мову АЛГЕК, де для яких використано поняття «узлових» та «гніздових» узлів, які насправді повними аналогами двох відношень слідування Адресного методу. Кітов визнав використання рангу адреси (опосередкована адресація чи Pointers) Адресного програмування.

Адресна мова надавала програмістам використовувати поняття МНОЖИНА та робити теретико-множинні операції над множинами. Визначення умов у формулах циклуванні являє собою щось подібне тета-з’єднанню алгебри Кодда та JOIN.
Адресна мова має вичерпні декларативні засоби, зокрема «мінус штрих-операція» (обернена до «штрих-операції» — обернена до розіменування Pointers) являє собою чисто декларативний характер. По значенню (адресі чи даним) дозволяє отримати адреси за якими це значення зберігається. Якщо деревоподібні формати організовано у таблиці між якими відношення «один до багатьох», то по значенню первинного ключа можна визначити кортежі (їх адреси) другої таблиці. За своєю суттю зовнішні ключі є адресами.

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

А было вот что (стр. 46-47 из вашего источника, выделение мое, мои примечания в фигурных скобках):

«Необходимо отметить три основных уровня адресного языка
{15, 18]:
1. Общеалгоритмический уровень, на котором принимается
наиболее естественное для данной конкретной задачи множество
адресов и операции следования, описываются общематематическими
средствами, например с помощью индексов. На этом уровне адресный
язык наиболее близок к Алголу [13]. {Это все те замечательные высокоуровневы возможности, которые дают нам ассоциативная память и произвольные символьные «адреса». Но увы — выполнять программу на этом уровне можно вручную на бумаге, т.к. транслятора для этого языка нет, а есть только мат. абстракции}

2. Уровень условных (или символических) адресов, требующий
упорядочения адресов элементов, составляющих массивы, обрабатываемые алгоритмом. На этом уровне учитывается линейность
и ограниченность множества адресов, согласующихся с техническими возможностями машин; обычно, если это не оговаривается, речь
идет о языке уровня условных адресов. {и даже это все еще слишком сложно, и такого транслятора тоже нет}

3. Уровень конкретных адресов, предполагающий полностью
упорядоченное множество адресов в связи с конкретной машиной
с учетом множества истинных адресов ячеек и их глубины.{вот он, ассемблер без макро- части (трансляции символьных адресов в машинные)}

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

Благодаря этому уже сейчас практически возможно осуществить
автоматизацию программирования на некоторых его участках. Так,
внедрение ПП с входным адресным языком {то есть — третий уровень по классификации выше} на машине "Киев«—
ПП-АК (см. далее), как и ПП с тем же входным языком на других
машинах («Урал», УМШН— управляющей машины широкого назначения и др.), повысило производительность программистов
в несколько раз."

Если же мы начинаем играть на уровне «программирование в теории», то надо начинать с Конрада Цузе и его достижений, я думаю.

А то получается как сейчас с квантовыми компьютерами — на бумаге у нас алгоритм Шора всех порвал и превратил NP в P :), а на практике у нас 17 qubits и до general-purpose programming еще как до луны.

Молодец! И памятник конечно нужен!

Однако почему-то эта статья напомнила вот это: www.youtube.com/watch?v=96VpplqGe6M

Напомнила чем? Тем, что она жила в те времена?

Тем, что «при Советском Союзе О-О-О» :)))

Тобто пані Катерина могла винайти адресну аріфментику на декілька років раніше за Тоні Хоара? Хоча британець чудово знав россійску, а також вчився в аспірантурі в МГУ тобто ідеї Лебедева йому точно були знайомі. Сподіваюсь, що nil poiner — це як раз такий костиль від самого Тоні, як загально відомо.

Загальновідомо, що існують хибні загальновідомі факти.

Щодо Нульового вказівника. Загальновідомо, що це належить Тоні Гоару.

Терміну «0-вказівник», як і самого терміна «Вказівник» у 1955р. ще не було.
Має бути очевидним, що термін Адресної мови «адресація 2-ого рангу» є нічим іншим, ніж Pointer. В Адресному програмуванні також використовувався термін за адресою зберігається значення адреси, що теж, безсумнівно є Pointer. Також наявні «ланцюжки» за адресою адреса, за якою адреса, за якою знов адреса. Це є відношення слідування, яке визначається «штрих-операцією», на яке схожі послідовності значеннями вказівників у лінійних списках.

Слідування адрес, яке визначено «штрих-операцією» у формулах циклування адресної мови обривається/завершується вказівником якій має значення адреси в оперативній пам’яті — «0».
В комп’ютерах МЕСМ, «Київ», М-20 (БЕСМ-3, БЕСМ-4), серії «Мінськ», «Дніпро» хоч і існувала (може не у всіх фізично існувала) комірка з адресою «0», але вона була недоступна програмістам та використовувалась для завершення «спискового ланцюжка», заданого «штрих-операцією».

Чим відрізняється «Адреса має значення 0» (1955р.) від терміну «Нульовий Pointer, який введено Тоні Гоаром у 1965р.?
PS: 10 років це не «декілька років».

Слідування адрес, яке визначено «штрих-операцією» у формулах циклування адресної мови обривається/завершується вказівником якій має значення адреси в оперативній пам’яті — «0».
В комп’ютерах МЕСМ, «Київ», М-20 (БЕСМ-3, БЕСМ-4), серії «Мінськ», «Дніпро» хоч і існувала (може не у всіх фізично існувала) комірка з адресою «0», але вона була недоступна програмістам та використовувалась для завершення «спискового ланцюжка», заданого «штрих-операцією».

У вас найдется источник, который описывает исходники с подобными «списковыми цепочками», и использования адреса 0 в качестве «конца списка»? Например номер страницы из пресловутого «Вычислительная машина Киев — математическое описание» или «Элементы программирования / Б.В.Гнеденко, В.С.Королюк, Е.Л.Ющенко — М.: ГИФМЛ, 1961. »?

«Элементы программирования» 1963г. Деревообразные форматы, области доступности, схемы обозревания. Примеры программ с использованием сложных иерархических структур (деревообразных форматов).

В какой раздел/на какую страницу смотреть?

О следовании адресов, определённых «штрих-операцией» в книжке «Вычислительная машина Киев ...» упоминается несколько раз. Из описания формулы циклирования следует, что «обрыв/завершение» такого цикла должен "обрываться"/завершаться. Чем, как не 0-указателем?

О следовании адресов, определённых «штрих-операцией» в книжке «Вычислительная машина Киев ...» упоминается несколько раз.

Вас не затруднит привести ссылку на страницу?

Из описания формулы циклирования следует, что «обрыв/завершение» такого цикла должен "обрываться"/завершаться. Чем, как не 0-указателем?

Описание формулы циклирования в самом общем ее виде (стр. 44-45) говорит о том, что она перебирает элементы какого-то множества. Ничего про 0-указатель там нет. Я смотрю не на ту страницу?

В описі Адресної мови зустрічав використання словосполучень з сенсом:
а) природне слідування (послідовно розташовані комірки пам’яті) — А+1, А+2, ... А+n;
б) слідування, яке визначається «штрих-операцією» `А1=A2, `A2=A3, ... `AN=0 (перший з кінця, тобто: останній).
Стор. 28 (Адресное программирование): «Естественно, что в общем случае операция следования в множестве элементов исходной информации не может быть непосредственно алгоритмически описана, поскольку информация определяется исходными данными конкретной задачи. Операция следования для элементов исходной информации может устанавливаться с помощью штрих-операции по операции следования в множестве адресов. В задачу программирования входит построение схем обозревания совокупностей элементов с помощью операции следования в множествах их адресов.».

В «Адресное программирование» у прикладі «ЗАДАЧА О СКЛЕИВАНИИ КВАДРАТА1» (починається зі стор. 264) на стор.268 та інших можна пізнати «узловые» та «гнездовые» члени списку Асоціативного програмування, які використовуються у ньому для визначення та обробки спискових та ієрархічних структур даних.
У цьому прикладі використовується термін «условие конца поиска» (стор. 272), яке є перевіркою на значення «0» адреси («0-Pointer).
Бабенко Людмила Петрівна (програмувала на МЕСМ та на «Київ») нещодавно повідомила про те, що можливість визначати ієрархічні структури в Адресній мові та на комп’ютері «Київ» використовувались Ковалевським та Рибаком у їх програмах по розпізнаванню образів та нею самою для «парсерів» (побудови дерева синтаксичного розбору, як підзадачі при розробці компіляторів (програмуючих програм).

Джерело:
Цитую використання «початкового з кінця (тобто: останнього у сенсі лінійного списку)» значення «0», яке зберігається у якості значення за адресою (значення Pointer): «... обозревание которых будем осуществлять с помощью адреса сдвига s (вначале = 0).».

Фрагмент абзацу № 2 зі стор. 268 з монографії:
Ющенко Е.Л., Адресное программирование // К. : — Гос. издательство технической литературы, УРСР, 1963. — 287 с.

Це використання «0»-значення адреси (вказівника) не є першим. Але воно на 2 роки раніше «костиля»-1965р. від самого Тоні Гоара.

Лише у комп’ютерах серії «Урал» комірка з адресою «0» була доступна програмістам та для вказівки початку (кінця) ланцюжкового лінійного списку використовувалось інше, не «0»-значення вказівника.

Адреса «0» (поняття «nil poiner» є аналогом) використовувалась для першого з кінця (тобто останнього) елементу «лінійного списку» в комп’ютері «Київ» (1954-1956). З 1955 розпочато складання та налагодження програм для постійно-спаяної та змінно-спаяної пам’яті.

Щиро дякую за статтю! Дуже цінна інформація.

Поразительно! Спасибо за статью.

Підписатись на коментарі