Кіріспе

1940-1950 жылдардағы британдық компьютер

Электрондық кешіктірулі сақтау автоматты есептегіші (EDSAC) – алғашқы британдық компьютерлердің бірі. Джон фон Нейманның EDVAC есебінің алғашқы нұсқасынан шабыттанған бұл машинаны Морис Уилкс және оның командасы Англиядағы Кембридж университетінің математикалық зертханасында құрастырды. EDSAC – тұрақты түрде қолданысқа енгізілген екінші электрондық цифрлық бағдарламаланатын компьютер. Кейін жобаға J. Lyons & Co. Ltd компаниясы қолдау көрсетті, коммерциялық мақсатта қолданылатын компьютерді жасауды және EDSAC дизайны негізінде LEO I-ді жасауды көздеді. EDSAC жұмысы 1947 жылы басталды және 1949 жылдың 6 мамырында алғашқы бағдарламаларын іске қосты, олар квадрат сандар кестесі мен жай сандар тізімін есептеді. EDSAC 1958 жылдың 11 шілдесінде тоқтатылды, оның орнына EDSAC 2 келді, ол 1965 жылға дейін қолданыста болды.

Физикалық компоненттер

EDSAC іске қосылғаннан кейін университеттің ғылыми-зерттеу қажеттіліктерін қамтамасыз ете бастады. Ол жад үшін сынаптық кешіктіру желілерін, логикалық схемалар үшін төмендетілген қуатты вакуумдық түтікшелерді пайдаланды. Электр энергиясын тұтыну 11 кВт құрады. Барлық стандартты командалар үшін цикл уақыты 1,5 мс, көбейту үшін 6 мс болды. Деректерді енгізу бес тесікті перфокарта арқылы, нәтижелерді шығару телепринтер арқылы жүзеге асырылды. Бастапқыда регистрлер тек аккумулятор және көбейткіш регистрімен шектелді. 1953 жылы Дэвид Уилер Иллинойс университетінен оралғаннан кейін, бастапқы EDSAC аппараттық құралына қосымша индекстік регистрді жобалады. 1952 жылы магниттік лента құрылғысы қосылды, бірақ ол ешқашан толыққанды жұмыс істемей, пайдалы болған жоқ. 1952 жылға дейін қолжетімді негізгі жад (командалар мен деректер) тек 512 18 биттік сөзден тұратын, ал резервтік жад болмады. Кешіктіру желілері (немесе "бактар") әрқайсысы 512 сөзден тұратын екі батареяға орналастырылды. Екінші батарея 1952 жылы пайдалануға берілді, сол кезде бағдарламалардың көлемі шамамен 800 сөзбен шектелді. Джон Линдли (1958–1959 жылдары дипломдық студент) "50-ші жылдардың соңында қол жетімді қарапайым және сенімсіз үй жасаған перфорациялау, басып шығару және тексеру құралдарымен бір ғана дұрыс перфокарта жасаудың қаншалықты қиын болғанын" айтты.

Жүйелік бағдарламалық қамтамасыз ету

Бастапқы тапсырыстар бірлік селекторлы коммутаторларға тікелей қосылды және жүйе іске қосылғанда жадтың төменгі жад ұяларына жүктелді. 1949 жылдың мамыр айына қарай, бастапқы тапсырыстар жоғарыда сипатталған еске түсіретін дизайнды пайдалана отырып, 31 сөзден тұратын қарапайым өздігінен жылғалынатын құрастырушыны қамтамасыз етті. Бұл әлемдегі алғашқы құрастырушы және, сәйкесінше, жаһандық бағдарламалық қамтамасыз ету индустриясының бастауы болды. EDSAC-тің симуляциясы, сондай-ақ бастапқы тапсырыстар мен алғашқы бағдарламалардың толық сипаттамасы қолжетімді. EDSAC-та орындалған алғашқы есептеу 1949 жылдың 6 мамырында квадрат санды есептейтін бағдарлама болды. Бағдарламаны машинаны зерттеу үшін Канададан келген Беатрис Ворсли жазған. Бұл туралы Фред Хойл өзінің "Қара бұлт" романында қысқаша айтады.

Бағдарламалау техникасы

Алғашқы бағдарламалаушылар қазіргі кезде ұнамсыз саналатын әдістерді қолдануға мәжбүр болды, әсіресе өзін-өзі өзгертетін кодты пайдалану. Индекстік регистрлер көп уақыттан кейін ғана енгізілгендіктен, массивқа қол жеткізудің жалғыз жолы – белгілі бір нұсқаудың қай жад ұясын сілтемелегенін өзгерту болатын. Бұл жобада жұмыс істеп, әлемдегі алғашқы компьютер ғылымы докторы атанған Дэвид Уилерге субпрограмма тұжырымын ойлап табу есімі тіркелді. Пайдаланушылар аккумулятордағы қайтару мекенжайымен (яғни, секіру орнының өзінен кейінгі мекенжай) субпрограмманың басына секіріп, бағдарламаны шақыратын бағдарламалар жазды (Wheeler Jump). Конвенция бойынша, субпрограмма осыны күтетін және алғашқы әрекеті – аяқтау секіру нұсқауын сол қайтару мекенжайына өзгерту болатын. Пайдаланушы әрқайсысының ұзындығын білгенде бірнеше және ұяланған субпрограммаларды шақыруға болады, осылайша секіруге қажетті орналасуды есептеуге болады; рекурсивті шақыруларға рұқсат берілмейді. Содан кейін пайдаланушы субпрограмма кодын бастық таспадан өзінің таспасына, өзінің бағдарламасы аяқталғаннан кейін көшіретін. (Дегенмен, Алан Тьюринг 1945 жылғы NPL ACE жобалау ұсыныстары туралы мақаласында субпрограммаларды талқылады, тіпті рекурсияға мүмкіндік беретін қайтару мекенжайы стегі тұжырымын ойлап тапты.) Индекстік регистрдің болмауы субпрограмма жазушысына да қиындық тудырды, себебі олар субпрограмманың жадыда қайда жүктелетінін алдын ала біле алмайтындықтан, деректерді сақтау үшін пайдаланылатын кодтың кез келген бөлігіне қалай сілтеме жасау керектігін білмейді ("псевдо-нұсқаулар"). Бұл мәселе бастапқы кіріс режімін пайдалану арқылы шешілді, ол перфокартадан жадқа субпрограммаларды жүктеуге жауапты болды. Субпрограмманы жүктегенде, ол бастапқы орналасуын тіркеп, қажет болған жағдайда жад сілтемелерін өзгертті. Осылайша, Уилкс жазғандай, "машинаның сыртындағы бұйрықтарды бейнелеуге қолданылатын код, машинаның басқару схемаларының және бағдарламашының әртүрлі талаптарына байланысты, ішіндегі кодтан өзгеше". EDSAC бағдарламалаушылары шектеулі жадты тиімді пайдалану үшін арнайы әдістерді қолданды. Мысалы, субпрограмманы перфокартадан жадқа жүктеу кезінде белгілі бір тұрақтыны есептеу қажет болуы мүмкін, оны кейіннен қайта есептеудің қажеті болмайды. Мұндай жағдайда тұрақты "аралық" есептеледі. Тұрақтыны есептеуге қажетті код толық субпрограммамен бірге беріледі. Бастапқы кіріс режімі есептеу кодын жүктегеннен кейін, басқаруды осы кодқа ауыстырады. Тұрақты есептеліп, жадқа жазылғаннан кейін, басқару бастапқы кіріс режіміне қайта оралады, ол субпрограмманың қалған бөлігін жадқа жазуды жалғастырады, бірақ алдымен тұрақтыны есептеген кодты жазып тастау үшін бастапқы нүктесін реттейді. Бұл жалпы мақсаттағы субпрограммаға күрделі түзетулер енгізуге мүмкіндік берді, бірақ оның жадтағы соңғы көлемі нақты жағдайға бейімделгеннен гөрі үлкен болмады.

EDSAC-тің қолдануы

EDSAC математикалық зертхананың есептеулерді қолдау қызметінің бір бөлігі ретінде әзірленді. Компьютерді пайдаланып есептеулер жасалған және жарияланған алғашқы ғылыми мақала Рональд Фишердің еңбегі болды. Уилкс және Уилер EDSAC-ті оның гендік жиіліктеріне қатысты дифференциалдық теңдеуді шешу үшін пайдаланды. 1951 жылы Миллер мен Уилер бұл машинаны 79 таңбалы жай санды табу үшін қолданды – сол кездегі ең үлкені. Үш Нобель сыйлығының иегерлері – Джон Кендрю мен Макс Перутц (химия, 1962), Эндрю Хаксли (медицина, 1963) және Мартин Райл (физика, 1974) EDSAC-тің революциялық есептеу қуатынан пайдаланды. Сыйлықты қабылдау кезіндегі сөздерінде олардың әрқайсысы EDSAC-тің өз зерттеулерінде атқарған рөлін мойындады. 1960 жылдардың басында Питер Суиннертон Дайер EDSAC компьютерін эллиптік қисықтардағы белгілі реті бар p саны үшін p модулі бойынша нүктелер санын (Np деп белгіленеді) есептеу үшін пайдаланды. Осы сандық нәтижелерге сүйене отырып, E қисығы үшін r дәрежесіндегі Np асимптотикалық заңдылыққа бағынады деп болжанды, бұл 2022 жылға дейін математикадағы шешілмеген маңызды мәселелердің бірі саналатын Берч пен Суиннертон Дайердің болжамы. "Ми" [компьютер] бір күні біздің деңгейімізге [қарапайым халыққа] түсіп, табыс салығын және бухгалтерлік есептеулерді жасауға көмектесе алады. Бірақ бұл әзірге тек болжам ғана, оның белгісі көрінбейді. 1949 жылғы маусым айында британдық "The Star" газеті EDSAC компьютері туралы мақала жариялады, бұл жеке компьютерлер дәуірінен көп бұрын болған.

Ойындар

1952 жылы Сэнди Дуглас EDSAC үшін «крестики-нолики» (тактикалық аяқ) ойынының OXO нұсқасын, VCR97 6 дюймдік катодты сәулелі түтігіне графикалық шығарылыммен жасады. Бұл әлемдегі алғашқы бейне ойын болуы мүмкін. Стэнли Гилл тағы бір бейне ойын жасады, онда нүкте (қой деп аталды) екі қақпаның біреуін аша алатын сызыққа жақындады.

Қосымша өзгерістер

EDSAC-тің мұрагері EDSAC 2 1958 жылы қолданысқа енгізілді. 1961 жылы Дэвид Хартли ғалымдар мен инженерлерге арналған, ALGOL-ға ұқсас жоғары деңгейдегі бағдарламалау тілі Autocode-тің EDSAC 2 нұсқасын жасады. 1960 жылдардың ортасында EDSAC 2-нің жаңа нұсқасы жоспарланған, бірақ оның орнына Манчестер университетінің, Ferranti және Plessey компаниялары жасаған Atlas компьютерінен дамытылған Atlas 2 прототипі – Titan жүйесіне көшті.

EDSAC репликасы жобасы

2011 жылдың 13 қаңтарында Компьютерлік сақтау қоғамы Блетчли паркіндегі Ұлттық есептеу музейінде (TNMoC) ЭДСАК машинасының жұмыс істейтін көшірмесін салуды жоспарлап отырғанын хабарлады. Бұл жұмысқа Морис Уилкспен оқыған Эндрю Герберт жетекшілік етті. Көшірменің алғашқы бөліктері 2014 жылдың қараша айында іске қосылды. ЭДСАК машинасының логикалық тізбектері симуляторды жасау және жаңадан табылған бастапқы схемаларды қайта қарау арқылы ұқыпты түрде қайта құрылды. Бұл құжаттама Creative Commons лицензиясымен жарияланды. Ағымдағы жоба мұражайға келушілерге ашық. 2016 жылы екі түпкілікті ЭДСАК операторы – Маргарет Маррс және Джойс Уилер жобаға көмектесу үшін мұражайға келді. 2016 жылдың қараша айында толыққанды аяқталған және жұмыс істейтін көшірмені іске қосу 2017 жылдың күзіне жоспарланған болатын. Дегенмен, жобада болған күтпеген кешігулерге байланысты толыққанды жұмыс істейтін машинаның аяқталу мерзімі әзірге белгісіз.