(Nie)krótka historia informatyki: od Ady Lovelace do ery LLM

Informatyka jako dziedzina naukowa i techniczna wyłoniła się dzięki całej serii przełomowych idei i wynalazków w dziedzinach takich jak matematyka, fizyka czy elektronika. Naukowcy pracujący między innymi nad tymi dziedzinami łącząc je stworzyli dziedzinę, dzięki której można dziś bez problemów niskim kosztem porozmawiać z osobą z drugiego końca świata w czasie rzeczywistym, co jeszcze w czasach mojego dzieciństwa było elementem filmów z gatunku fikcji naukowej.

Poniżej przedstawiam subiektywną listę kamieni milowych, które kształtowały rozwój informatyki od jej początków do współczesności.

Ada Lovelace - pierwszy algorytm (1843) #

Wielu może zaskoczyć, że za pierwszego informatyka uchodzi Ada Lovelace, a właściwie Augusta Ada King, hrabina Lovelace, angielska poetka i matematyk w jednym. Współpracując z Charlesem Babbage’em nad jego pracą pt. “Analytical Engine”, opracowała w swoich notatkach (w tzw. notatce G) algorytm obliczania liczb Bernouliego. Dzięki tej pracy jest uznawana za pierwszego programistę, ponieważ pokazała, że maszyny mogą wykonywać nie tylko obliczenia arytmetyczne, ale także operacje symboliczne.

Maszyna Turinga (1936) #

Alan Turing - geniusz, wizjoner, matematyk. Opisał on abstrakcyjną maszynę zdolną symulować logikę dowolnego algorytmu tzw. maszynę Turinga. Jego praca położyła teoretyczne fundamenty informatyki, definiując co jest obliczalne i wprowadzając koncepcję uniwersalnej maszyny obliczeniowej. W jego pracach znaleźć też można tzw. test Turinga - który określał ramy tego, kiedy mówi się o algorytmie, a kiedy o myślącej maszynie. Po więcej o Alanie Turingu odsyłam chociażby do Wikipedii.

Pierwsze programowalne komputery (Z3, 1941; ENIAC, 1945) #

W tym miejscu chciałbym zaznaczyć, że minęło blisko 100 lat od przełomowej pracy Ady Lovelace - 100 lat informatyki i prac wtedy w jeszcze nienazwanej dziedzinie bez komputerów, a kojarzonej głównie z komputerami. Konrad Zuse, niemiecki inżynier i konstruktor, który zastosował słynną niemiecką precyzję do zbudowania Z3 - pierwszego całkowicie automatycznego, cyfrowego komputera programowanego taśmą perforowaną. Maszyny tego typu można oglądać dziś w muzeach, ale na wielu uczelniach pracuje wciąż wielu naukowców, którzy tworzyli pierwsze programy, właśnie z użyciem taśm perforowanych. Dzięki Z3 już 4 lata później John Mauchly oraz John Eckert zbudowali na Uniwersytecie w Pensylwanii ENIAC (Electronic Numerical Integrator and Computer) - pierwszy elektroniczny komputer ogólnego przeznaczenia, wykorzystujący lampy próżniowe do szybkich obliczeń balistycznych. Komputery te, choć ogromne, na swoje czasy były cudami techniki - zastanawia kogoś też, czy były próby uruchomienia Dooma na tych urządzeniach ;)?

Tranzystor i pierwszy język programowania (1947) #

W 1947 roku doszło do istnego przełomu. W Bell Labs John Bardeen, Walter Brattain i William Shockley wynaleźli tranzystor - półprzewodnikowy element zastępujący lampy próżniowe. Dzięki niemu komputery stały się mniejsze, bardziej niezawodne i energooszczędne, co zapoczątkowało erę miniaturyzacji. Bez tego osiągnięcia dziś nikt nie mógłby mieć prywatnego komputera w kieszeni.

Drugim przełomowym odkryciem wiąże się z powstaniem pierwszego niskopoziomowego języka jakim jest Asembler. Kathleen Booth opracowuje zapis symboliczny dla ARC2 i rozwija go wraz ze swoim mężem Andrew. Od tego miejsca można mówić o pełnoprawnych językach programowania, choć zaznaczam, że Asembler nawet dla większości informatyków wygląda jak losowy zestaw liter i symboli. Wynika to z faktu, że jest to niskopoziomowy język programowania - niskopoziomowy czyli bardziej zrozumiały dla maszyn niż dla ludzi. Do przełomu w programowaniu doszło dopiero po ponad stu latach od opisania podstaw przez Adę Lovelace - śmiało można napisać, że była wizjonerem!

Scalony układ (1958) #

Jack Kilby (Texas Instruments) i Robert Noyce (Fairchild) niezależnie opracowali pierwszy scalony układ (IC), umieszczając wiele tranzystorów na jednej krzemowej płytce. To umożliwiło tworzenie coraz bardziej złożonych układów logicznych i doprowadziło do prawa Moore’a. Innymi słowy Bell Labs dało podstawy współczesnej elektroniki, które nie przeszły bez echa.

Pierwsze języki wysokiego poziomu (Fortran, 1957; LISP, 1958; COBOL, 1959) #

Minęło 10 lat od powstania pierwszego języka programowania jednak samo programowanie wciąż było trudne i zrozumiałe dla garstki zapaleńców. Postanowiono jednak to zmienić i tak powstawały kolejno Fortran (IBM), który umożliwił wyrażanie wzorów matematycznych w formie czytelnej dla ludzi, LISP (John McCarthy), który wprowadził rekursję i przetwarzanie symboli, oraz COBOL, który został zaprojektowany do aplikacji biznesowych. Języki wysokiego poziomu znacznie podniosły produktywność programistów - a to dlatego, że były to pierwsze języki, które były bardziej zrozumiałe dla człowieka niż dla komputera i dlatego nazywamy je wysokopoziomowymi.

Margaret Hamilton i inżynieria oprogramowania (1961-1972) #

Wyścig zbrojeń, program Apollo i pierwszy lot w kosmos musiały wiązać się z rozwojem informatyki. W tym czasie Margaret Hamilton kierowała zespołem tworzącym pokładowe oprogramowanie dla programu Apollo w MIT Instrumentation Laboratory. Jej praca była kluczowa dla działania komputerów nawigacyjnych misji, w tym lądowania Apollo 11 na Księżycu w 1969 roku. Hamilton jest powszechnie uznawana za osobę, która ukuła lub co najmniej spopularyzowała określenie “software engineering”. W latach 60. programowanie często traktowano jako mniej formalną “obsługę komputerów”, a nie dziedzinę inżynierską porównywalną z budową sprzętu. Hamilton używała tego terminu, by podkreślić, że tworzenie niezawodnego oprogramowania dla krytycznych systemów wymaga rygoru, procesów, testów i odpowiedzialności inżynierskiej. Cała jej praca dała podwaliny pod jedną z najważniejszych dziś dziedzin informatyki jaką jest inżynieria oprogramowania!

System UNIX i język C (1969‑1972) #

Przez pewien czas równolegle do pracy Hamilton trwały inne niezwykle ważne prace. Ken Thompson i Dennis Ritchie w Bell Labs stworzyli UNIX - przenośny, wielozadaniowy system operacyjny, oraz język C, który połączył niskopoziomową kontrolę z wysokopoziomową abstrakcją. W tym miejscu zaznaczam, że język C jest językiem wysokiego poziomu (wbrew bzdurom, które powielają internetowi “spece”) i jest to wciąż jeden z 3 najważniejszych i najpopularniejszych języków programowania. UNIX stał się podstawą wielu późniejszych systemów (Linux, BSD, macOS), a język C jest najważniejszym językiem do tworzenia systemów operacyjnych - zarówno tych z pod szyldu pingwina jak i tych od Microsoftu czy Apple.

Francja “tworzy” Informatykę (1967) #

Zimna wojna zimną wojną, ale naukę trzeba było uporządkować. W 1967 roku we Francji podjęta zostaje decyzja o wyodrębnieniu informatyki (fran. informatique) jako osobnej dziedziny nauki (rok wcześniej, czyli w 1966 ZSRR próbował zrobić coś podobnego). Rok później Romuald Marczyński w Zakopanem idzie śladem Francuzów i proponuje nazwać nową dziedzinę informatyką od “INFORmacja i autoMATYKA”.

W tym miejscu zacytować muszę wybitnego naukowca Edgara Dijkstrę: Informatyka nie jest nauką o komputerach, tak jak astronomia nie jest nauką o teleskopach.

Mikroprocesor Intel 4004 (1971) #

Jak widać sprawy nabierają tempa i końcówka lat 60 jak i początek lat 70 to istna eksplozja wielkich osiągnięć. Firma Intel opracowuje pierwszy komercyjny mikroprocesor, 4‑bitowy CPU zaprojektowany dla kalkulatora, udowodniając, że cała jednostka centralna procesora może znajdować się na jednym krzemowym układzie. To doprowadziło do powstania mikrokomputerów i późniejszych komputerów osobistych.

Komputery osobiste (Altair 8800, 1975; Apple II, 1977; IBM PC, 1981) #

Druga połowa lat 70 to na zachodzie pierwszy bum na komputery osobiste. Powstaje Altair 8800, pierwszy komercyjnie udany zestaw do samodzielnego złożenia - głównie przez hobbystów. Apple II przyniósł kolorową grafikę i otwartą architekturę, a IBM PC ustanowił standard de facto oparty na procesorach Intel x86 i systemie MS‑DOS/PC‑DOS.

Fizyk rewolucjonista - John Hopfield (1982) #

Dziś sztuczna inteligencja (czyli SI, bo Polacy nie gęsi swój skrót od lat mają!) zaczyna otaczać nas z każdej strony, ale to w 1982 roku John Hopfield opublikował pracę, która rozpoczęła pracę nad Sztucznymi Sieciami Neuronowymi. Praca ta dała mu nagrodę Nobla w dziedzinie fizyki w 2024 roku - i nic dziwnego. SI pomogła też zrobić research do tego wpisu, chociaż z jakiegoś powodu nie wskazała publikacji tej pracy jako istotne wydarzenie.

Sieci i Internet (ARPANET → TCP/IP, 1983) #

W tym miejscu zaczynamy mówić o początkach internetu. W 1983 przełączono ARPANET z protokołu NCP na TCP/IP, co pozwoliło na tworzenie sieci komputerowych. Standaryzacja ta umożliwiła globalną wymianę danych i rozwój usług takich jak poczta elektroniczna, transfer plików i późniejsze WWW.

C++ - język hegemon #

Duński naukowiec i inżynier Bjarne Stroustrup próbując rozwiązać problemy w dziedzinie telekomunikacji zauważa, że żaden język programowania nie pozwala zrobić mu tego w sposób, który byłby optymalny (słowo to jest synonimem słowa najlepszy - a więc nie ma bardziej optymalny bo to oznacza bardziej najlepszy). Opracowuje on na bazie języka C nowy język, który nazywa C++. Oba te języki są powszechnie używane do dziś i stanowią fundamenty prawie każdego oprogramowania na świecie.

World Wide Web (1989) #

Tim Berners-Lee w CERN zaproponował system hipertekstowy oparty na URL, HTTP i HTML, wraz z pierwszą przeglądarką (i edytorem jednocześnie) WorldWideWeb. Od tego momentu można mówić o stronach internetowych i tzw. WEB 1.0. WWW przekształcił Internet z sieci akademickiej w globalną platformę informacyjną i handlową (bo kto z nas nie kupuje dziś na Allegro), co już na zawsze zmieniło świat.

Język Java (1995) i erę urządzeń mobilnych #

Nie byłbym rzetelny gdybym temu potworkowi nie poświęcił akapitu. Firma Sun opracowuje język Java, który charakteryzuje się zasadą „write once, run anywhere” (wiemy jak wyszło prawda;)), i który miał umożliwić tworzenie przenośnych aplikacji. Narzucenie mnóstwa ograniczeń w języku jednak miało szereg zalet i przyciągnęło rzeszę ludzi do programowania, ponieważ usunięto sporo barier, które do tej pory były niezbędne w programowaniu m. in. znajomość działania systemu operacyjnego czy mechanizmów zarządzania pamięcią.

Oblicza chmurowe (AWS, 2006) #

Choć w Polsce niewiele się wtedy mówiło o chmurach obliczeniowych to firma Amazon przedstawiła Amazon Web Services - elastyczną, płatną według użycia infrastrukturę obliczeniową (moc obliczeniową, przestrzenie dyskowe, bazy danych i wiele innych) poprzez Internet, co umożliwiło skalowanie aplikacji bez konieczności utrzymywania własnych centrów danych.

Pierwszy iPhone (2007) #

Przełomowe wystąpienie Steva Jobsa pokazujące rewolucyjne urządzenie. Dziś mnóstwo ludzi nie pamięta już jak to było, kiedy nie mieliśmy w kieszeni dotykalskiego urządzenia, z dostępem do internetu, jednak w 2007 roku był to ogromny przełom.

Przełom w uczeniu głębokim (AlexNet, 2012) #

W tym miejscu ktoś pewnie już w internecie pisał, że SkyNet jest wśród nas i próbuje zlikwidować Sarę Connor. Sztuczna sieć neuronowa AlexNet wygrała konkurs ImageNet, demonstrując siłę głębokiego uczenia się na GPU i zapoczątkowując obecną eksplozję zainteresowania sztuczną inteligencją. Innymi słowy AlexNet w konkursie ImageNet najlepiej rozpoznawała obrazy, w tym m. in. kotki <3!

Architektura Transformer (2017) #

Praca „Attention Is All You Need” wprowadziła model Transformer oparty wyłącznie na mechanizmie uwagi. Transformer stał się podstawą niemal wszystkich współczesnych modeli językowych (BERT, GPT, T5). Jakby ktoś się zastanawiał to literka T w Chat GPT oznacza właśnie Transformer.

Modele językowe GPT‑3/4 i ChatGPT (2020‑2023) #

Seria modeli GPT firmy OpenAI wykazała, że skalowanie architektur Transformer do setek miliardów parametrów umożliwia wykonywanie szerokiego zakresu zadań językowych - krótko mówiąc komputery nauczyły się mówić i wygląda, że myśleć też! Opublikowany w 2022 ChatGPT spopularyzował interakcję z AI w języku naturalnym, a GPT‑4 (2023) dodał zdolność przetwarzania obrazów i bardziej zaawansowane rozumowanie.

Podsumowanie #

Od pierwszego algorytmu Lovelace, przez maszyny Turinga, tranzystory, mikroukłady, języki programowania, sieci komputerowe, aż po modele językowe o zdolnościach zbliżonych do ludzkich - każdy kamień milowy rozszerzał zakres tego, co możemy obliczać, automatyzować i rozumieć. Informatyka pozostaje dynamiczną dziedziną, w której teoria i praktyka przenikają się nawzajem, otwierając kolejne możliwości dla nauki, przemysłu i społeczeństwa. Co prawda od 2023 roku do dziś tj. 2026 jeszcze wiele się zmieniło, ale sam rok 2026 obfituje w przełomy z tygodnia na tydzień, a ten wpis i tak jest już za długi.

Źródła #

  1. IEEE Computer Society - „First Software Engineer”: https://computer.org/publications/tech-news/events/what-to-know-about-the-scientist-who-invented-the-term-software-engineering
  2. I Programmer - „Margaret Hamilton - Apollo and Beyond”: https://i-programmer.info/history/people/10030-margaret-hamilton-apollo-and-beyond.html?start=1
  3. Wikipedia - „Margaret Hamilton (software engineer)”: https://en.wikipedia.org/wiki/Margaret_Hamilton_(software_engineer)
  4. Archived Computer.org - „Meet Margaret Hamilton, the scientist who gave us ‘software engineering’”: https://web.archive.org/web/20181124103748/https:/publications.computer.org/software-magazine/2018/06/08/margaret-hamilton-software-engineering-pioneer-apollo-11
  5. Interview with Margaret H. Hamilton: https://catskull.net/interview-with-margaret-h-hamilton.html
  6. ETHW - Milestones: Invention of the First Transistor at Bell Telephone Laboratories, Inc., 1947: https://ethw.org/Milestones:Invention_of_the_First_Transistor_at_Bell_Telephone_Laboratories,_Inc.,_1947
  7. Wikipedia - Integrated circuit: https://en.wikipedia.org/wiki/Integrated_circuit
  8. Wikipedia - Fortran: https://en.wikipedia.org/wiki/Fortran
  9. Wikipedia - LISP (programming language): https://en.wikipedia.org/wiki/Lisp_%28programming_language%29
  10. American History Smithsonian - COBOL: https://americanhistory.si.edu/collections/object/nmah_1389377
  11. History IT Libra - C language 1972: https://history.itlibra.com/en/events/c-language-1972
  12. Intel - The Intel 4004: https://www.intel.com/content/www/us/en/history/virtual-vault/articles/the-intel-4004.html
  13. Wikipedia - Altair 8800: https://en.wikipedia.org/wiki/Altair_8800
  14. Wikipedia - Apple II: https://en.wikipedia.org/wiki/Apple_II
  15. Wikipedia - IBM Personal Computer: https://en.wikipedia.org/wiki/IBM_Personal_Computer
  16. Internet Society - Final Report on TCP/IP Migration in 1983: https://www.internetsociety.org/blog/2016/09/final-report-on-tcpip-migration-in-1983/
  17. Wikipedia - Tim Berners-Lee: https://en.wikipedia.org/wiki/Tim_Berners-Lee
  18. Wikipedia - Java (programming language): https://en.wikipedia.org/wiki/Java_%28programming_language%29
  19. Wikipedia - IPhone (1st generation): https://en.wikipedia.org/wiki/IPhone_(1st_generation)
  20. Amazon - About AWS: Our Origins: https://aws.amazon.com/about-aws/our-origins/
  21. Wikipedia - AlexNet: https://en.wikipedia.org/wiki/AlexNet
  22. arXiv - Attention Is All You Need (Transformer): https://arxiv.org/abs/1706.03762
  23. OpenAI - Language models are few-shot learners: https://openai.com/index/language-models-are-few-shot-learners/
  24. OpenAI - ChatGPT: https://openai.com/blog/chatgpt/
  25. OpenAI - GPT-4: https://openai.com/index/gpt-4/
  26. Historia Informatyki - Adrian Zapała: http://www.lab.algobit.pl/resources/hist_inf.pdf
  27. Wikipedia - C++: https://en.wikipedia.org/wiki/C%2B%2B
  28. Wikipedia - Generative pre-trained transformer: https://en.wikipedia.org/wiki/Generative_pre-trained_transformer
  29. Wikipedia - John Hopfield: https://pl.wikipedia.org/wiki/John_Hopfield
  30. Wikipedia - Margaret Hamilton: https://en.wikipedia.org/wiki/Margaret_Hamilton_(software_engineer)

← Wróć do listy wpisów