20 największych wynalazków w programowaniu komputerowym
W jednej z rozmów, które przeprowadziłem z naszym starszym redaktorem, zadano mi pytanie, “Jak programował pierwszy programista??” Doprowadziło to do dyskusji na temat Babbage'a i Ady Lovelace, na końcu której przydzielono mnie do badań w jaki sposób to wszystko się zaczęło - jest to wiele pierwszych w historii obliczeń.
Kopałem książki i strony internetowe i spotkałem się z wieloma rewelacjami: Babbage nie jest technicznie wynalazca komputera, FORTRAN zdecydowanie nie był pierwszym językiem programowania wysokiego poziomu i używaliśmy rysików do ekranów CRT (naprawdę).
Byłem również zaskoczony, gdy dowiedziałem się, jak ważne są wojny podsycające szybki rozwój komputerów, a także wkład wielu kobiet, które nasze podręczniki wybrały. Dlatego, aby wypełnić luki w historii komputerów i programów, stworzyłem 20 pierwszych w świecie komputerów, od kulek do kręgli po II wojnę światową i wszystko, co jest pomiędzy.
1. Pierwszy komputer: “Różnica silnika” (1821)
The “Różnica silnika” był proponowanym komputerem mechanicznym, który ma być używany do wyświetlania tabel matematycznych. Na zlecenie rządu brytyjskiego Charles Babbage (znany także jako ojciec komputera) rozpoczął pracę nad nim, ale ze względu na wysokie koszty produkcji finansowanie zostało wstrzymane i maszyna nigdy nie została ukończona.
2. Pierwszy komputer ogólnego przeznaczenia: “Silnik analityczny” (1834)
The “Silnik analityczny” był także proponowanym komputerem mechanicznym, którego wejście miało być kartami dziurkowanymi, z programami i danymi na nich dziurkowanymi. Inna idea Charlesa Babbage'a, ta maszyna również nie została ukończona.
3. Pierwszy program komputerowy: algorytm obliczania liczb Bernoulliego (1841–1842)
Ada Lovelace (pierwsza na świecie programistka komputerowa) zaczęła tłumaczyć zapisy włoskiego matematyka Luigiego Menabrei na silnik analityczny Babbage'a w 1841 roku. Podczas tłumaczenia zainteresowała się maszyną i zostawiła notatki z tłumaczeniem. Jedna z notatek - uwaga G, zawierał algorytm obliczania liczb Bernoulliego przez silnik analityczny, uważany za pierwszy program komputerowy.
4. Pierwszy działający programowalny komputer: Z3 (1941)
Konrad Zuse (Inventor of Computers) miał już działający komputer mechaniczny Z1, ale działał tylko przez kilka minut. Zastosowanie innej technologii - przekaźników, doprowadziło do Z2 i ostatecznie Z3. Z3 był komputerem elektromagnetycznym, dla którego program i dane były przechowywane na zewnętrznych taśmach dziurkowanych. Był to tajny projekt rządu niemieckiego, który został wykorzystany przez Niemiecki Instytut Badań Samolotów. Oryginalna maszyna została zniszczona podczas bombardowania Berlina w 1943 roku.
5. Pierwszy komputer elektroniczny: Atanasoff-Berry Computer (ABC) (1942)
Stworzony przez Johna Vincenta Atanasoffa i Clifforda Berry'ego, stąd nazwany Atanasoff-Berry Computer lub ABC został użyty do znalezienia rozwiązania dla równań liniowych jednocześnie. Był to pierwszy komputer, który wykorzystywał binarnie do reprezentowania danych i przełączników elektronicznych zamiast mechanicznych. Komputer nie był jednak programowalny.
6. Pierwszy programowalny komputer elektroniczny: Colossus (1943)
Colossus stworzony przez Tommy'ego Flowersa, był maszyną stworzoną po to, aby pomóc Brytyjczykom odszyfrować niemieckie wiadomości, które zostały zaszyfrowane przez szyfr Lorenza, w czasie II wojny światowej. Został zaprogramowany za pomocą elektronicznych przełączników i wtyczek. Colossus przyniósł czas na odszyfrowanie zaszyfrowanych wiadomości z tygodni do zaledwie kilku godzin.
7. Pierwszy programowalny komputer elektroniczny ogólnego przeznaczenia: ENIAC (1946)
Finansowane przez armię amerykańską, ENIAC lub Elektroniczny integrator numeryczny i komputer został opracowany w Moore School of Electrical Engineering na University of Pennsylvania przez Johna Mauchly i J. Presper Eckert. ENIAC miał szerokość 150 stóp i mógł być zaprogramowany do wykonywania złożonych operacji, takich jak pętle; programowanie zostało dokonane przez zmianę jego elektronicznych przełączników i kabli. Używał czytników kart do wprowadzania i dziurkowania kart na wyjściu. Pomogło to w obliczeniach wykonalności pierwszej na świecie bomby wodorowej.
8. Pierwszy Trackball: (1946/1952)
Dlaczego dwa lata na pierwszy trackball? Pozwól mi wyjaśnić.
Pierwszym rokiem był rok podany przez Ralpha Benjamina, który twierdził, że stworzył pierwszy na świecie trackball, kiedy pracował nad systemem monitorowania dla nisko latających samolotów w 1946 roku. Wynalazek, który opisał, wykorzystał piłkę do sterowania współrzędnymi XY kursora na ekranie. Projekt został opatentowany w 1947 roku, ale nigdy nie został wydany, ponieważ jest uważany za “tajemnica wojskowa”. Zamiast tego wojsko zdecydowało się na joystick.
Drugi pretendent do pierwszego na świecie trackballa, wykorzystany w kanadyjskim systemie DATAR w 1952 roku, został wymyślony przez Toma Cranstona i współpracownika. Ten projekt trackballa miał makietę, w której wykorzystano kanadyjską kulę do kręgli “łożyska powietrzne” (patrz zdjęcie poniżej).
9. Pierwszy komputer przechowywany w programie: SSEM (1948)
Aby przezwyciężyć wady pamięci linii opóźniającej, Frederic C. Williams i Tom Kilburn opracowali pierwsze cyfrowe urządzenie pamięci masowej o dostępie swobodnym oparte na standardowym CRT. The SSEM (Manchester Maszyna eksperymentalna na małą skalę) został użyty do wdrożenia tego urządzenia pamięci masowej do praktycznego użycia. Programy zostały wprowadzone w postaci binarnej przy użyciu 32 przełączników, a ich wyjście było CRT.
10. Pierwszy język programowania wysokiego poziomu: Plankalkül (1948)
Chociaż Konrad Zuse rozpoczął pracę nad Plankalkül od 1943 r., Dopiero w 1948 r. Opublikował artykuł na ten temat. Niestety nie przyciągnęło to wiele uwagi. Zaimplementowanie w tym celu kompilatora zajęłoby blisko trzy dekady, jeden stworzony przez Joachima Hohmanna w rozprawie.
11. Pierwszy asembler: “Zamówienia początkowe” dla EDSAC (1949)
Assembler to program, który przekształca mnemoniki (niskopoziomowe) w reprezentację numeryczną (kod maszynowy). Pierwsze zamówienia w EDSAC (Elektroniczny kalkulator opóźnionego przechowywania) był pierwszym takim systemem. Służy do gromadzenia programów z wejścia taśmy papierowej do pamięci i uruchamiania wejścia. Programy zawierały kody mnemoniczne zamiast kodów maszynowych “kod początkowy” pierwszy w historii asembler przetwarzający symboliczny kod programu niskiego poziomu na kod maszynowy.
12. Pierwszy komputer osobisty: “Szymon, Szymek” (1950)
“Szymon, Szymek” Edmund Berkeley był pierwszym niedrogim komputerem cyfrowym, który mógł wykonać cztery operacje: dodawanie, negacja, większa niż i wybór. Wkład był dziurkowany, a program działał na taśmie papierowej. Jedynym wyjściem było pięć świateł.
13. Pierwszy kompilator: A-0 dla UNIVAC 1 (1952)
Kompilator to program konwertujący język wysokiego poziomu na kod maszynowy. System A-0 był programem stworzonym przez legendarnego Grace Hoppera do konwersji programu określonego jako sekwencja podprogramów i argumentów na kod maszynowy. A-0 przekształcił się później w A-2 i został wydany klientom z jego kodem źródłowym, co czyni go prawdopodobnie tym samym pierwsze oprogramowanie open source.
14. Pierwszy autokod: Glennie's Autocode (1952)
Autokodowanie to język programowania wysokiego poziomu, który używa kompilatora. Pierwszy autokod i jego kompilator pojawił się na Uniwersytecie w Manchesterze, aby programowanie maszyny Mark 1 stało się bardziej zrozumiałe. Został stworzony przez Alicka Glennie, stąd nazwa Autokodu Glennie.
15. Pierwszy komputerowy wyświetlacz czasu rzeczywistego: AN / FSQ-7 firmy IBM (1951)
AN / FSQ-7 był oparty na jednym z pierwszych komputerów, które pokazywały wyjście w czasie rzeczywistym, Whirlwind. Stał się linią ratunkową dla amerykańskiego systemu obrony powietrznej znanego jako półautomatyczne środowisko gruntowe (SAGE). Komputery pokazywały ślady celów i automatycznie pokazywały, które obrony są w zasięgu. AN / FSQ-7 miał 100 konsol systemowych; tutaj jest jeden (obrazek poniżej), wyświetlacz sytuacji OA-1008 (SD), z lekkim pistoletem używanym do wybierania celów na ekranie w celu uzyskania dalszych informacji.
16. Pierwszy szeroko stosowany język programowania wysokiego poziomu: FORTRAN (1957)
Jeśli sprawdzisz podręczniki, znajdziesz FORTRAN jako pierwszy język programowania wysokiego poziomu. Pomyślane przez Johna W. Backusa, który nie lubił pisać programów i zdecydowało się stworzyć system programowania, który ułatwi proces, użycie FORTRAN znacznie zmniejszyło liczbę instrukcji programistycznych wymaganych do uruchomienia komputera. Do 1963 r. Dostępnych było już ponad 40 kompilatorów FORTRAN.
17. Pierwsza mysz (1964)
Podczas sesji konferencyjnej na temat grafiki komputerowej pomysł myszy dotarł do Douglasa Engelbarta w 1964 roku. Wymyślił urządzenie z parą małych kółek (jeden obraca się poziomo w pionie), które można wykorzystać do poruszania kursor na ekranie. Prototyp (patrz poniżej) został stworzony przez jego głównego inżyniera, Billa Englisha, ale zarówno angielski, jak i Engelbart nigdy nie otrzymali tantiem za projekt, ponieważ technicznie należał on do SRI, pracodawcy Engelberta.
18. Pierwszy komercyjny komputer stacjonarny: Programma 101 (1965)
Znany również jako Perottina, Programma 101 był pierwszym komercyjnym komputerem na świecie. Może wykonywać dodawanie, odejmowanie, mnożenie, dzielenie, pierwiastek kwadratowy, wartość bezwzględną i ułamek. Mimo wszystko, co mógł zrobić, wyceniono go na 3200 USD (był to zupełnie inny czas) i udało się sprzedać 44 000 sztuk. Perottina została wynaleziona przez Pier Giorgio Perotto i wyprodukowana przez Olivetti, włoskiego producenta.
19. Pierwszy ekran dotykowy (1965)
Nie wygląda to na wiele, ale był to pierwszy ekran dotykowy, jaki świat kiedykolwiek znał. Jest to pojemnościowy panel dotykowy, bez wrażliwości na nacisk (istnieje kontakt lub brak kontaktu) i rejestruje tylko jeden punkt kontaktu (w przeciwieństwie do multitouch). Koncepcja została przyjęta do użytku przez kontrolerów ruchu lotniczego w Wielkiej Brytanii do lat 90-tych.
20. Pierwszy język programowania obiektowego: Simula (1967)
Na podstawie koncepcji konstrukcji klasowych A. A. R. Hoare'a Ole-Johan Dahl i Kristen Nygaard zaktualizowali swoje “SIMULA I” język programowania z obiektami, klasami i podklasami. Zaowocowało to stworzeniem SIMULA 67, który stał się pierwszym językiem programowania obiektowego.
Końcowe przemyślenia
Choć ten post dotyczył tego, co możemy dowiedzieć się o wielu pierwszych rzeczach w historii obliczeń, trudno jest zanurzyć się w samej historii. W rezultacie, przynajmniej dla mnie, my docenić pracę wykonaną przez pokolenia przed naszą, i możemy lepiej zrozumieć, co napędza wiele zmian, które kształtują świat, w którym żyjemy dzisiaj.
Mam nadzieję, że ten post zainspiruje was tak bardzo, jak mnie zainspirował. Podziel się swoimi przemyśleniami na temat tych pierwszych, a jeśli przeoczyłem jakieś, które z pewnością zrobiłem, dodaj je w komentarzach.