The History of Programming Languages - in Polish (film, 10 minutes)
Programowalny delves into the fascinating topic of the textile industry and its impact on the development of computer technology. It all began in 1804 when Joseph Marie Jacquard invented the loom, which introduced punch cards into fabric production. This innovation made the production process more automatic and efficient. The Jacquard loom significantly influenced the creation of more complex patterns and introduced the concept of programmability to the textile industry, ultimately paving the way for later advances in computing.
In 1822, Charles Babbage, an English mathematician, designed the difference engine, and later the analytical engine, which is regarded as the first programmable computer. Babbage's ideas introduced the use of punch cards for programming, harking back to Jacquard's invention. Ada Lovelace, considered the first programmer, developed an algorithm for calculating Bernoulli numbers, marking a pivotal moment in the programming landscape, and her name lives on in the Ada programming language, created many years later.
The 1940s saw the birth of the first high-level programming language, Plank and Cool, which, although not immediately implemented, allowed for the subsequent development of languages such as Fortran. Fortran, created by John Bacchus in 1954, quickly became a standard in programming, especially for scientific and engineering calculations. Programming in Fortran influenced the development of compiler theory, increasing efficiency and accessibility for future generations of programmers.
The year 1956 brought new languages such as LISP, ALGOL, and COBOL, introducing further innovations. While LISP was more complex, it laid the groundwork for many modern programming concepts, such as dynamic typing. ALGOL became the standard for documenting algorithms, while COBOL gained traction in business due to its understandable syntax. The 60s and 70s saw the emergence of languages like BASIC and PASCAL, which gained popularity on microcomputer platforms, making programming more accessible.
As of the time of writing this article, the video on the Programowalny channel has garnered 10,280 views and 267 likes. These figures reflect considerable interest in this pivotal topic and the history of programming's development. Viewers are encouraged to explore the channel's content further and appreciate its educational value, which can inspire future generations of programmers. In the upcoming part, the creators promise to shed light on more contemporary programming languages and current trends in this field.
Toggle timeline summary
-
Introduction to programmable devices in textile manufacturing.
-
Joseph Marie Jacquard's loom, developed in 1804, is considered the first programmable device.
-
The textile industry influenced the development of computers and programming languages.
-
Jacquard's machine simplified the production of complex patterned fabrics.
-
The device used perforated cards for automatic selection of threads.
-
The invention enabled automated and precise pattern creation.
-
In 1822, Charles Babbage created the first mechanical calculator model.
-
Babbage's device, known as the difference engine, was designed for polynomial function calculations.
-
The project was abandoned but inspired the analytical engine, seen as the first general-purpose programmable computer.
-
Babbage's analytical engine was to be steam-powered and used perforated cards for input.
-
Results were to be printed, drawn, or punched on cards.
-
The design included a memory storage unit for a thousand 40-digit numbers.
-
It also included a computing unit capable of performing basic arithmetic operations.
-
The programming language for the analytical engine resembled modern assembly languages.
-
Ada Lovelace created the first algorithm for the analytical engine.
-
She published her work while translating an article on the analytical engine.
-
Lovelace is recognized as a pioneer in programming.
-
The early 1940s saw the design of Plank and Cool, the first high-level programming language.
-
Plank and Cool supported tables and known conditional expressions.
-
AutoCode, created in the 1950s, was the first compiled programming language.
-
Fortran, developed in 1954, became the first widely used high-level programming language.
-
Fortran remains known and used in high-performance computing today.
-
Common Business-Oriented Language (COBOL) emphasized readability and self-documentation.
-
The 1960s introduced object-oriented language concepts, leading to Simula 67.
-
Microsoft popularized BASIC in the late 70s, making it a standard on home computers.
-
Pascal, designed for structured code, was widely used in academia.
-
C, developed for UNIX system programming, became highly popular.
-
Smalltalk became the first fully object-oriented programming language.
-
SQL emerged for managing relational databases in the late 1970s.
Transcription
DŻBIK 1. PRZEMYSŁ WŁÓKIENNICZY Za pierwsze urządzenie programowalne uważa się krosno stworzone przez Josepha Marie Chacarda w 1804 roku. Choć może wydawać się to zaskakujące, to właśnie przemysł włókienniczy mógł wpłynąć na rozwój komputerów i języków programowania jakie dzisiaj znamy. Maszyna Chacarda uprościła proces wytwarzania tkanin posiadających skomplikowane wzory. Urządzenie wykorzystywało karty perforowane posiadające kilka rzędów otworów, które umożliwiały automatyczny dobór nici na wrzecionie. Dzięki wynalazkowi tworzenie wzorów stało się automatyczne, powtarzalne i dokładne jak nigdy przedtem. W 1822 roku Charles Babbage, angielski matematyk, stworzył model pierwszego kalkulatora mechanicznego. Urządzenie nazwano maszyną różnicową i służyło do obliczania funkcji wielomianowych wykorzystując metodę różnic skończonych. Ze względu na niewystarczające środki potrzebne do zbudowania maszyny, projekt został porzucony, ale stał się inspiracją do stworzenia maszyny analitycznej, uznawanej za pierwszy programowalny komputer ogólnego zastosowania. Maszyna analityczna miała być urządzeniem napędzanym silnikiem parowym, gdzie dane wejściowe miały być wprowadzane za pomocą kart perforowanych, tak samo jak u Josepha Jacquarda w jego konstrukcji Crosna, natomiast wyniki działania programu miały być drukowane, rysowane lub dziurkowane na kartach. Projekt zakładał, że maszyna analityczna będzie zawierała magazyn pamięci zdolny do pomieszczenia tysiąca liczb pod 40 cyfr, co oznaczało, że potrzebowała kilkanaście kilobajtów pamięci. Urządzenie miało zawierać jednostkę obliczeniową, tak zwany młyn, który byłby zdolny do wykonywania obliczeń dodawania, podejmowania, mnożenia i dzielenia, a także obliczania pierwiastków kwadratowych. Język programowania używany w maszynie analitycznej był podobny do współczesnych języków Assemblera i zakładał używanie pętli czy instrukcji warunkowych. Maszyna analityczna Charlesa Babbage'a stała pierwszym urządzeniem, do którego napisano program komputerowy i choć dominującą większością matematyków w tamtych czasach stanowili mężczyźni, to właśnie kobieta opracowała algorytm do obliczania liczb Bernoulli'ego, przy okazji tłumaczenia artykułu o maszynie analitycznej. Pracę tą opublikowała Ada Lovelace, brytyjska matematyczka i poetka. I choć wielu historyków informatyki uważa, że autorem pierwszych programów na swoje urządzenie był Charles Babbage, a Ada korzystając ze znajomości z Charlesem tylko użyła jego pomysłów, to Brytyjka już na zawsze stała się ikoną słowa programowanie, a blisko 130 lat po jej śmierci, jeden z języków wysokiego poziomu został nazwany Ada. Na początku lat 40 XX wieku został zaprojektowany język Plank and Cool, był to pierwszy język wysokiego poziomu. Choć syntaks języka nie przypomina współczesnych zapisów, to wspierał on tablice czy tuple oraz wykorzystywał znane nam wyrażenia warunkowe i pętle. Plank and Cool jednak nie został od razu zaimplementowany, co pozwoliło zaistnieć językowi shortcode, który jako pierwszy język wysokiego poziomu został użyty na urządzeniu elektronicznym. Kolejnym przełomem z lat 50 było stworzenie języka AutoCode, uważanego za pierwszy język kompilowany, czyli taki którego kod jest zamieniany do postaci binarnej. Razem ze swoim kompilatorem język został zaprojektowany na komputery Mark I. W 1954 roku w siedzibie firmy IBM, John Bacchus stworzył Fortrana, pierwszy szeroko używany język wysokiego poziomu. Choć został wymyślony on ponad pół wieku temu, to niemal każdy programista kojarzy jego nazwę i nadal używany jest przez wysokowydajne komputery. Autor języka w jednym ze swoich wywiadów powiedział, że powstał on z lenistwa. Nie chciał mu się pisać instrukcji ręcznie, więc opracował język, który ułatwił mu pracę. W latach 60. język się mocno rozwinął, a jego popularność sprawiła, że producenci komputerów zaczęli dostarczać kompilatory języka, co wpłynęło na jego wydajność i globalny rozwój teorii kompilatorów. Ciekawostką języka było wyrażenie warunkowe IF. Instrukcja przekazywała kontrolę do pierwszej, drugiej lub trzeciej etykiety, jeśli wartość wyrażenia arytmetycznego jest odpowiednia mniejsza od 0, równa 0 lub większa od 0. Przed opracowaniem dysków, edytorów tekstowych czy nawet terminali, programy były tworzone przy pomocy klawiatury numerycznej na 80-kolumnowej karcie perforowanej. Jedna linia na kartę. Powstała talia kart była wprowadzona do czytnika w celu skombinowania. Odzwierciedlając praktykę wprowadzania kart perforowanych, programy w języku Fortran zostały pierwotnie napisane w formacie o stałej długości kolumny. Uprogramowanie dla sąd NASA Voyager 1 i Voyager 2 zostały napisane właśnie w Fortranie. W końcówce lat 50-tych powstały takie języki jak LISP, ALGOL czy COBOL, które są nadal w użyciu w wielu systemach, także tych mocno komercyjnych. LISP powstał w oparciu o rachunek Lambda stworzony przez Alonso Charcha. Podstawową strukturą danych w LISP są listy, stąd powstała jego nazwa – od słów LISPROCESSING. LISP miał duży wpływ na późniejsze języki programowania. Zapoczątkował takie konstrukcje jak IF-THEN-ELSE, dynamiczne typowanie czy zbieranie nieużytków. Od początku był mocno związany ze społecznością zajmującą się sztuczną inteligencją i nie osiągnął tak dużej popularności jak Fortran czy Sea ze względu na swoje wymagania sprzętowe. Powstało również wiele jego dialektów. Dziś do najpopularniejszych należą Common LISP, Scheme i Clojure. ALGOL to skrót od Algorithmic Language. Przez 20 lat od swojego powstania był standardem opisu algorytmów w publikacjach naukowych i podręcznikach. Jego początkowa wersja zaprojektowana w 1958 roku oparta była na Fortranie i dopiero wersja stworzona dwa lata później zyskała uznanie i wprowadziła brakujące konstrukcje. ALGOL wprowadził bloki kodu z wyrażeniami BEGIN i END na ich granicach, rekurencje czy tablice dynamiczne. COBOL, czyli Common Business Oriented Language, opiera swoją składnię na języku angielskim, tak aby jego zapis był bardzo czytelny, a kod samodokumentujący się. Język ten wykorzystuje 300 zarezerwowanych wyrazów właśnie przez częste wykorzystanie słów kluczowych zamiast wyrażeń matematycznych. Kolejne dwie dekady przyniosły wysyp nowych języków programowania, których implementacje stanowią podstawę paradigmatów współczesnego kodowania. W latach 60. zrodził się pomysł pierwszego obiektowego języka, czyli Simuli 67. Język został zapoczątkowany jako Simula 1, wykorzystując syntaks Angola, jednak po pięciu latach zostały wprowadzone także pojęcia obiektów, klas, podklas czy dziedziczenia. W Simuli nie była uwzględniana jednak koncepcja hermatyzacji. W roku 1964 powstał BASIC, język wysokiego poziomu oparty na Fortranie Angolu. Gwałtowny rozwój BASIC-a związany był z wprowadzeniem pierwszych mikrokomputerów. Pierwsza wersja dialektu BASIC-a została napisana na komputery Altair, przez Bea Gatesa i Paula Allena dla ich nowo powstałej firmy Microsoft. Na przemowie lat 70. i 80. MS BASIC był już standardem i praktycznie każdy domowy komputer zawierał go w pamięci ROM. Wersje języka BASIC były zaimplementowane na komputerach Commodore, Apple II, a później także na IBM PC, co sprawiło, że język BASIC stał się często pierwszym poznawanym językiem programowania przez deweloperów spoza kadry naukowej. W 1970 roku prekursor inżynierii programowania i ikona świata komputerów Nicholas Wirth zaprezentował swój język PASCAL. Język wzorował się na Angolu i przeznaczony był do tworzenia strukturalnego kodu. PASCAL pozwalał na budowanie złożonych typów danych oraz dynamiczne budowanie list, drzew czy grafów. Był bardzo rozpowszechniony w środowiskach akademickich. Służył najczęściej jako język do nauki programowania. Był szeroko używany także przez polskie uniwersytety. Język był prosty, łatwo było wytłumaczyć podstawowe pojęcia programistyczne, a do tego kompilatory języka były łatwo dostępne w swoich pirackich wersjach. Jego obiektowa wersja Object PASCAL powstała w 1975 roku, ale język został wyparty przez C, a później C++. Dwa lata później swoją premierę miał język C, który powstał w celu przepisania jądra systemu UNIX na język wysokiego poziomu. C został stworzony jako język z niskopoziomowym dostępem do pamięci komputera i z efektywnym mapowaniem na instrukcje maszynowe. Do dziś jest jednym z najpopularniejszych języków na świecie. W tym samym roku został zaprezentowany język Smalltalk. Był to pierwszy w pełni obiektowy język programowania inspirowany językiem Simula. Smalltalk działał na maszynie wirtualnej, przez co był niezależny od platformy. W języku wszystko było obiektem, a komunikowały się one tylko poprzez przesyłanie wiadomości. Smalltalk był reflektywnym językiem. Refleksje wykorzystywał do rozszerzania kodu nowe klasy i metody w trakcie działania programu, a także do sprawdzania obiektu nadającego komunikat czy obsługi wyjątków. Był też pionierem implementacji wzorca MVC czy rozwinięcia koncepcji kompilatora Just-In-Time. Trzeba przyznać, że Smalltalk dostarczył całkiem sporo elementów współczesnych języków nieproporcjonalnie do swojej popularności. Lata 70. to także wiele innych ciekawych języków jak Prolog, pierwszy i najpopularniejszy język programowania logicznego, czyli taki, w którym na podstawie zależności obliczane były pewne stwierdzenia, szeroko stosowane w sztucznej inteligencji czy lingwistyce komputerowej. Kolejny był ML, statycznie typowany język funkcyjny, wprowadzający np. polimorfiz parametryczny. Pod koniec lat 70. ukazał się SQL, czy też sequel jak niektórzy wymawiają jego nazwę, język służący do projektowania i zarządzania relacyjnymi bazami danych. W kolejnej części zobaczymy jak powstawały nieco bardziej współczesne języki i zastanowimy się jaka będzie ich przyszłość.