NELIAC: Әскери-теңіз электронды зертханасының ALGOL құрастырғышы
NELIAC
NELIAC: 1958 ж. Әскери-теңіз электроникалық зертханасында жасалған ALGOL 58 тілінің алғашқы компиляторы. Өзіндік компиляциялау мүмкіндігімен ерекшеленеді.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Navy Electronics Laboratory International ALGOL Compiler (NELIAC) — 1958 жылы Navy Electronics Laboratory (NEL) ұйымында жасалған ALGOL 58 бағдарламалау тілінің бір түрі және компиляторы. Ол сандық және логикалық есептеулер үшін арналған және өзін-өзі жүктеуді (bootstrap) іске асыра білген алғашқы тіл болды.
The Navy Electronics Laboratory International ALGOL Compiler (NELIAC) is a dialect and compiler implementation of the programming language ALGOL 58, developed by the Navy Electronics Laboratory (NEL) in 1958. It was designed for numeric and logical computations and was the first language to provide a bootstrap implementation.
Шығу тегі
NELIAC – сол кездегі Есептеу машиналарын қауымдастығының (ACM) төрағасы және танымал компьютер ғалымы Гарри Хаскидің ойлап тапқан туындысы. Ол Морис Хэлстедтің, NEL есептеу орталығының басшысының қолдауына ие болды. Алғашқы нұсқасы зертханадағы AN/USQ 17 прототипі компьютерінде (графиня Ада Лавлейс атынан «графиня» деп аталды) іске асырылды. Бұл – әлемдегі алғашқы өздігінен компиляцияланатын компилятор, бұл қасиет «bootstrap» деп аталады. Бұл компилятор бастапқыда қарапайым түрінде «bootstrap» деп аталатын тілде кодталды, содан кейін осы «bootstrap» компиляторымен құрастырылып, өзімен қайта құрастырылды, осылайша «bootstrap» ескірді. Ол ALGOL 58 тіліне ұқсастығымен байланысты оның нұсқасы саналады, бірақ екі жыл ішінде ALGOL комитеті ALGOL-дің басқа нұсқаларын жасады, нәтижесінде NELIAC пен ALGOL арасында айырмашылықтар пайда болды.
NELIAC was the brainchild of Harry Huskey, then chairperson of the Association for Computing Machinery (ACM) and a well known computer scientist, and supported by Maurice Halstead, the head of the computing center at NEL. The earliest version was implemented on the prototype AN/USQ 17 computer (called the Countess, after Countess Ada Lovelace) at the laboratory. It was the world's first self compiling compiler, a trait called bootstrapping. This means that the compiler was first coded in simplified form in assembly language "the bootstrap", and then rewritten in its own language, compiled by this "bootstrap" compiler, and recompiled by itself, making the "bootstrap" obsolete. It is considered a variant of ALGOL 58 because of similarities to that language, but within two years, the ALGOL committee produced other versions of ALGOL, and NELIAC and ALGOL diverged.
Қолдану
Компилятор графиняда CDC 1604 нұсқасын жасау үшін қолданылды, кейіннен ол машинада өзіндік құрастырылды. UNIVAC 1107, 490 және 418, сондай-ақ IBM 704 және 709 сияқты коммерциялық компьютерлер үшін көптеген басқа нұсқалар дайындалды. NELIAC-тің өндірістік нұсқасы екінші буын жүйесі болды (AN/USQ 20 үшін, AN/USQ 20-ның жаңартылған және әскерилендірілген нұсқасы), ол бірінші нұсқадан құрастырылды, бірақ алгоритмдік өрнектерді толық түрде түсіндіруді және кейіннен басқа барлық нұсқаларда болмаған кіріс/шығыс (I/O) жүйесін қамтыды. Декомпилятор болса, жаңалық болды. Бірінші нұсқа графиняда жұмыс істеді, бірақ кейіннен CDC 1604 және басқа компьютерлерге көшірілді, сондай-ақ кейбір университеттерде назар аударды. Дегенмен, сол кезде декомпиляциялауға тұрарлық бағдарламалардың көп еместігі анықталды. NELIAC ешқашан коммерциялық өнім ретінде жоспарланбаған. Оның сол кездегі басқа компиляторлардан басты артықшылығы – басқа компьютерлерге оңай көшірілуі және бір реттік компиляция архитектурасы болды, бұл оның басқа жоғары деңгейдегі бағдарламалау тілдерінен 60-120 есе жылдам компиляция жасауына мүмкіндік берді, олар көп реттік компиляторларды қолданды. Мысалы, JOVIAL компиляторы 14 рет өтті. Тілдің қарапайымдылығы және оның жылдам компиляциялау уақыты басқа замандас компиляторларға қарағанда әлдеқайда жылдам даму циклдарын қамтамасыз етті. Бұл компьютерлік жүйелерді әзірлеу мәселесіне тиімдірек шешім табуға бағытталған NEL-дің ішкі жобасы болды. NELIAC 1967 жылдан 1971 жылға дейін Канада Корольдік Әскери-теңіз флотының Командалық-бақылау жүйесі 280 (DDH 280 эсминецтерінде қолданылған) үшін бағдарламалық жасақтаманы әзірлеу үшін пайдаланылды. Бағдарламалық жасақтаманы әзірлеу үшін Канаданың Онтарио штатындағы Оттава қаласында Канада Әскери-теңіз флоты Бағдарлама жасау орталығын құрды. Хост-компьютер 160 кБ жадысы бар Litton L304F болды. Жадының шектеулі болуына байланысты NELIAC қолданбалық бағдарламалық жасақтамасы кейіннен құрастырушы кодпен қайта жазылды. NELIAC эксперименталды кемелік су астына қарсы соғыс жүйесін іске асыру үшін қолданылды, сондай-ақ ұшақ тасымалдаушылар мен крейсерлерге орнатылған стратегиялық командалық және басқару жүйесін әзірлеген Ұлттық төтенше жағдай командалық бекеті (NECPA) жобасын дамытуға пайдаланылды. NELIAC-тің ең табысты қолданысы, әлдебір, 1968 жылы өндіріске енгізілген және 1990 жылдардың басына дейін қолданылған АҚШ Әскери-теңіз күштерінің автоматтандырылған жоғары жиілікті бағытты анықтау желісін (Classic Bullseye) басқару болды. Сонымен қатар, NEL магниттік ленталар, принтерлер және телекоммуникациялық жабдықтар үшін кіріс/шығыс қамтамасыз ететін, жұмыстарды ретті түрде компиляциялауды жүзеге асыратын және өте үлкен компьютерлік бағдарламаларды байланыстыруға және оларды тікелей орындауға мүмкіндік беретін NELOS, пакеттік операциялық жүйесін жасады, оның құрамында деректер базалары, IBM-нің GIS-тің алғашқы нұсқасы сияқты еркін пішіндегі сұраныстар және есеп беруге арналған бағдарламалар кіретін ақпараттық басқару бағдарламаларының жиынтығы болды. NECPA және NELOS 1966 жылы теңізге шықты.
The compiler was used on the Countess to produce a version for the CDC 1604, and later self compiled on that machine. Many other versions were produced for commercial computers such as the UNIVAC 1107, 490, and 418, and the IBM 704 and 709. The production version of NELIAC was a second generation system (for the AN/USQ 20, a modernized and militarized version of the AN/USQ 20), compiled by the first version, but including full decoding of algorithmic expressions and, later, an input/output (I/O) system missing on all other versions. The decompiler was a curiosity. The first version ran on the Countess, but was later ported to the CDC 1604, and to other computers, and received some notice at some universities. However, it turned out that, at that time, there were few programs worth decompiling. NELIAC was never intended to be a commercial product. Its primary advantage over other compilers of the day was its portability to other computers, and its one pass compiler architecture which made possible such fast compile times that it compiled 60 to 120 times faster than other high level programming languages which used multi pass compilers. The JOVIAL compiler made 14 passes, for example. The simplicity of the language and its rapid compile times permitted much faster development cycles than other contemporaneous compilers. It was an in house NEL effort to make possible a more cost effective solution to the problem of computer system development. NELIAC was used by the Royal Canadian Navy to develop software for the Command and Control System 280 (used on the DDH 280 destroyers) in the years 1967 to 1971. The Canadian Navy established a Program Generation Centre in Ottawa, Ontario, Canada for this software development. The host computer was the Litton L304F containing 160 kB of memory. Because of memory constraints the NELIAC application software was later rewritten in assembler code. NELIAC was used to implement an experimental shipboard anti submarine warfare system, and was also used for the development of the National Emergency Command Post Afloat (NECPA) project which developed a strategic command and control system installed on aircraft carriers and cruisers. Perhaps the most successful NELIAC application was control of the U. S. Navy automated High Frequency Direction Finding network (Classic Bullseye) which went into production in 1968 and lasted until the early 1990s. In addition, NEL developed NELOS, a batch operating system which provided input output for magnetic tapes, printers, and telecom equipment, provided sequenced compiling of jobs, and a symbol library permitting linking of very large computer applications and executing them on line. These included suites of information management programs, including databases, free form queries with a precursor of IBM's GIS, and reporting applications. NECPA and NELOS went to sea in 1966.
NELIAC-тің аяқталуы
Алайда, NELIAC бағдарламаларын тасымалдау қиын болды, себебі тіл сөз ұзындығына байланысты екілік символдарды өңдеуге рұқсат берді. Бұған қоса, NELIAC тілінде деректерді енгізу-шығару жүйелері болған жоқ. Сонымен қатар, оның циклдық операторы тым қатаң болды, себебі индекс айнымалысы соңғы мәнге міндетті түрде дәл жеткені керек еді, әйтпесе шексіз цикл пайда болар еді. Міне, NELIAC-тің әлсіз тұстары осы еді. Niklaus Wirth сияқты көптеген танымал компьютер мамандары да жобаға үлес қосты, бірақ ақырында NELIAC Әскери-теңіз департаменті коммерциялық қолдауға ие компиляторларды стандарттағаннан кейін қолданудан шығып қалды.
However, NELIAC programs were not easily portable because the language permitted manipulation of binary characters which were dependent on word lengths. Further, the NELIAC language had no input output schemes. Also, its looping statement was unusually strict in that the index variable had to hit the end value exactly, or else an infinite loop would occur. These were the Achilles' heels of NELIAC. Many other well known computer experts like Niklaus Wirth made contributions to the project, but ultimately NELIAC fell out of favor after the Navy Department standardized on compilers with commercial support.