Autocode
Autocode to nazwa rodziny tzw. „uproszczonych systemów kodowania”, później nazywanych językami wysokiego poziomu, opracowanych w latach pięćdziesiątych i sześćdziesiątych dla serii komputerów cyfrowych używanych na uniwersytetach w Manchester, Cambridge i Londynie.
Autocode Glennie’ego
Pierwszy Autocode i jego kompilator zostały opracowane przez Alicka Glenniego w 1952 roku dla maszyny Manchester Mark I i jest uważany za pierwszy kompilowalny język programowania. Jego głównym zadaniem było ułatwienie programowania maszyny Mark I, znanej z zawiłego kodu maszynowego. O ile wynikowy język był „czystszy” niż kod maszynowy, to wciąż był bardzo zależny od maszyny[1].
Poniżej jest przykład Autocode’u obliczającego funkcję Ten przykład pomija instrukcje skalujące potrzebne do użycia liczb całkowitych jako stałych i zakłada, że wynik mnożenia mieści się w niższym akumulatorze.
c@VA t@IC x@½C y@RC z@NC
INTEGERS +5 →c # Zapisz 5 do c
→t # Wczytaj argument funkcji z niższego akumulatora do t
+t TESTA Z # Zapisz |t| w niższym akumulatorze
-t
ENTRY
SUBROUTINE 6 →z # Wywołaj podprogram pierwiastkowania na niższym
# akumulatorze i zapisz wynik do z
+tt →y →x # Oblicz t^3 i zapisz do x
+tx →y →x
+z+cx CLOSE WRITE 1 # Zapisz z + (c * x) do niższego akumulator i wyjdź
Podręcznik użytkownika kompilatora wskazuje, że „utrata efektywności jest nie większa niż 10% [tłum. ang.]”[2].
Wpływ Autocode’u na innych użytkowników był niewielki. Kompilator nie został nawet wymieniony w artykule Brookera z 1958 pod tytułem „The Autocode Programs developed for the Manchester University Computers”. Było to prawdopodobnie spowodowane tym, że język nie rozwiązywał najważniejszych problemów dotykających wtedy programistów: analizy numerycznej, skalowania i dwu-poziomowej pamięci. Udoskonalenia w notacji były uważane za niewystarczające[3].
Mark 1 Autocode
Drugi Autocode’em na Mark 1 był zaplanowany w 1954 i opracowany przez Tony’ego Brookera w 1955 roku i był nazywany „Autocode’em Mark 1". Ten język był prawie niezależny od maszyny i posiadał arytmetykę zmiennoprzecinkową, w przeciwieństwie do pierwszego. Z drugiej strony pozwalał na tylko jedną operacją na linię, posiadał małą przestrzeń nazw i nie posiadał mechanizmu do definicji nowych funkcji[4].
Przykładowy kod, który wczytuje 11-elementową tablicę liczb zmiennoprzecinkowych wyglądałby następująco:
1 n1 = 1
vn1 = I wczytaj wejście do v[n[1]]
n1 = n1 + 1
j1,11 ≥ n1 skocz do etykiety 1 jeśli n[1] ≤ 11h
Autocode Brookera usuwał dwie główne trudności w programowaniu Mark 1: skalowanie i zarządzanie dwu-poziomową pamięcią. W przeciwieństwie do swego poprzednika był często używany[5].
Późniejsze Autocode’y
Brooker również stworzył Autocode dla Ferranti Mercury w latach pięćdziesiątych we współpracy z Uniwersytetem w Manchester. „Mercury Autocode” miał ograniczony repertuar zmiennych, od a do z i od a′ do z′, i w pewnych aspektach przypominał wczesne wersje języka Dartmouth BASIC. Nie posiadał stosu wywołań, a zatem i rekursji lub dynamicznie alokowanej pamięci. Aby przezwyciężyć bardzo małą przestrzeń pamięci dostępną na Mercurym, duże programy musiały być napisane w oddzielnych „rozdziałach”, z których każdy stanowił osobną nakładkę. Potrzebna też była ekspertyza w celu minimalizacji czasochłonnych transferów kontroli pomiędzy rozdziałami. Ten koncept nakładek z bębna pod kontrolą użytkownika był powszechny, dopóki pamięć wirtualna nie stała się dostępna w późniejszych maszynach.
Przypisy
Bibliografia
- Campbell-Kelly imię=Martin, Programming the Mark 1: Early Programming Activity at the University of Manchester, „Annals of the History of Computing”, 2(2), IEEE, 1980, s. 130–167, DOI: 10.1109/MAHC.1980.10018.
- Ernesto Garcia Camarero: AUTOCODE un sistema simplificado de codificacion para la computadora MERCURY. Universidad de Buenos Aires, 1961, s. 70. (hiszp.).
- Keith London: Introduction to Computers. 1968, s. 261.
- Knuth, Donald E.; Pardo, Luis Trabb (1976). „Early development of programming languages”. Stanford University, Computer Science Department.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.