Кіріспе

1960 жылдардағы компьютерлік бағдарламалау тілі

Atlas Autocode (AA) – 1963 жыл шамасында Манчестер университетінде жасалған бағдарламалау тілі. ALGOL тілінің бір түрі ретінде, ол Тони Брукер мен Деррик Моррис Atlas компьютері үшін әзірленді. Алғашқы AA және AB компиляторларын Джефф Ролл мен Тони Брукер Brooker Morris Compiler компиляторын пайдаланып жазды, ал кейін Джефф Ролл CC қолданбаған (ABC) нұсқасын жасады. Autocode сөзі, негізінен, бағдарламалау тілі үшін қолданылған алғашқы термин еді. Әртүрлі автокодтар бір-бірінен айқын түрде ерекшеленуі мүмкін.

Ерекшеліктері

АА – бұл блок құрылымды тіл, онда нақты типтелген айнымалылар, кіші программалар және функциялар болған. Ол ALGOL-дың кейбір мүмкіндіктерін, мысалы, ALGOL 60-та параметрлерді атау арқылы жіберуді қалдырды, бұл параметр әр еске алынған сайын қайта есептеу үшін қысқа кіші программаның (thunk) жад мекенжайын жіберуді білдіреді. АА компиляторы массивтерге қол жеткенде ауқымдық тексеруді жүзеге асыра алатын, сондай-ақ массивтің өлшемдері орындалу кезінде анықталуына мүмкіндік беретін. Яғни, массивді бүтін сандық массив ретінде жариялауға болады. АА жоғары деңгейлі кіші программалары машиналық кодты қамтуы мүмкін, ішкі циклды тиімді ету үшін немесе басқа жағдайда орындау қиын операцияларды жүзеге асыру үшін. АА күрделі сандарды бейнелеу үшін күрделі дерек типін қосты, ішінара электр инженерлік факультетінің талабы бойынша, себебі күрделі сандар айнымалы ток мінез-құлқын бейнелеу үшін қолданылады. 1-дің түбірлік дәрежесін білдіретін жолғаны i арқылы бейнеленген, ол тұрақты күрделі шама ретінде қарастырылды = i. Күрделі дерек типі кейіннен Атлас Автокоды IMP тіліне дамығанда алынып тасталды. IMP – АА-ның кеңейтілген нұсқасы және Эдинбург көп қол жеткімелі жүйесінің (EMAS) операциялық жүйесін жазу үшін қолданылды. АА-ның екінші маңызды жетістігі (IMP және EMAS-тың бастапқы тілі болғаннан кейін) – оның түпнұсқалық компилятордың көптеген мүмкіндіктеріне ие болғаны. АА компиляторының бір түрі жоғарыдан төменге рекурсивті түсу парсеріне орындалу уақыты қолдауын қамтыды. Компиляторда қолданылған парсер стилі 60-шы жылдардан бастап 2000-шы жылға дейін Эдинбургте үздіксіз қолданылып келді. Басқа Автокодтар Titan компьютері, Кембридждегі Atlas 2 прототипі және Ferranti Mercury үшін әзірленді.

Синтаксисі

Atlas Autocode синтаксисі ALGOL-ге ұқсас болды, бірақ оған автордың Friden Flexowriter деп аталатын шығыс құрылғысының әсері тиді. Осылайша, ол 1⁄2 сияқты символдарды 0,5 ретінде және 2-нің дәрежесін 2 деп жазуға мүмкіндік берді. Мысалы, таңбалар жиынтығында ↑ символы болмағандықтан, экспоненциалдау | және * символдарын біріктіріп жазу арқылы жүзеге асырылды. Жоғарыда аталған кілт сөздердің астын сызуды да үстіне сызу арқылы жасауға болады. Бұл тіл Atlas Autocode Reference Manual нұсқаулығында егжей-тегжейлі сипатталған. АА-да қолданылған басқа Flexowriter таңбалары: α – қалқыма нүктелі сандарда, мысалы, қазіргі 3.56e 7 үшін 3.56α 7; β – 48 биттік Atlas жад сөзінің екінші жартысын білдіреді; π – математикалық тұрақты пи үшін. АА ағылшын Electric KDF9 компьютеріне көшірілгенде, таңбалар жиыны Халықаралық стандарттау ұйымының (ISO) стандартына ауыстырылды. Бұл компиляторды Эдинбург компьютерлік тарихы жобасы ескі қағаз таспадан қалпына келтірді және ол онлайн режимінде қолжетімді, сондай-ақ Atlas Autocode нұсқаулығының Эдинбург нұсқасының жоғары сапалы сканерленген нұсқасы бар. АА-дағы кілт сөздер басқа мәтіннен үстіне сызық жүргізу арқылы ерекшеленетін, бұл Flexowriter-дегі қалың әріппен (ALGOL-дегідей) салыстырылады. Сонымен қатар, екі түрлі «атап көрсету» режимі болды. Біріншіден, «үлкен әріптерді шектеу» режимінде жолдардың ішіндегі барлық үлкен әріптер астын сызылған кішкентай әріптер ретінде қарастырылды. Екіншіден, кейбір нұсқаларда (бірақ түпнұсқалық Atlas нұсқасында емес) кілт сөздердің алдына "%" белгісін қою арқылы оларды «атап көрсетуге» болады, мысалы, «бағдарламаның соңы» кілт сөзін %end %of %programme немесе %endofprogramme деп жазуға болады. Бұл жазуды едәуір жеңілдетті, өйткені кілт сөздің барлығын үстіне сызудың орнына тек бір таңбаны қажет етті. ALGOL-дегідей, тілде де сақталған сөздер болған жоқ, өйткені кілт сөздер сақталған таңбалар тізбесін тану арқылы емес, астын сызу (немесе «атап көрсету») арқылы анықталды. If token=if then result = token деген жазбада if деген кілт сөз де, if деп аталатын айнымалы да бар. ALGOL-дегідей, AA-да айнымалы атауларында бос орындарға рұқсат етілді, мысалы, previous value integer. Бос орындар маңызды емес еді және «жолдарды қайта құру» деп аталатын қарапайым лексикалық алдын ала талдау кезеңінде талдаудан бұрын алынып тасталды. Компилятор жоғарыдағы мысалда «iftoken=ifthenresult=token» деп көрер еді. Бос орындардың болуына себеп, кілт сөздер басқа тәсілдермен ажыратылатындығы және деректер көзі лексикалық фазасыз, сканнерсіз талдау арқылы өңделгендігі болды, бұл лексикалық синтаксистің контекстке сезімтал болуына мүмкіндік берді. Өрнектер үшін синтаксис көбейту операторын жіберуге мүмкіндік берді, мысалы, 3a 3*a ретінде қарастырылды, ал a(i+j) a*(i+j) ретінде қарастырылды, егер a массив болмаса. Екіұшты жағдайларда мүмкіндігінше ең ұзын атау қолданылды (максималды сәйкестік), мысалы, ab a*b ретінде қарастырылмады, a және b мәлімделген немесе мәлімделмеген.