Język programowania to język stworzony do opisu kolejnych kroków, które mają być podjęte przez komputer. Innymi słowy, to konkretna instrukcja dawana komputerowi przez człowieka.
Z drugiej stronny, termin "język" określa sposoby porozumienia się współdzielone przez grupę ludzi (np. angielski lub francuski).
Języki, których komputery używają między sobą nie mają nic wspólnego z językami programowania, odnoszą się one do protokołów komunikacyjnych. Są to dwa bardzo odmienne pojęcia. Języki programowania są bardzo precyzyjne:
KAŻDE polecenie odnosi się do JEDNEJ akcji procesora.
Język używany przez procesor to kod maszynowy. Ten kod dostarcza
procesorowi serię 0 i 1 (znanych, jako dane binarne).
Kod maszynowy jest dla człowieka trudny do pojęcia. Dlatego stworzono wiele pośrednich języków, zwanych językami programowania. Kod pisany w języku programowania jest przetwarzany na kod maszynowy tak, by mógł zostać przetworzony przez procesor.
Pierwszym używanym językiem programowania był Asembler. Jest on bardzo zbliżony do kodu maszynowego, ale jest zrozumiały dla deweloperów. Niemniej jednak, język używany do wydawania poleceń procesorowi, ściśle zależy od jego typu (każdy procesor może mieć inny kod).
Kod wymyślony dla jednej maszyny, nie zawsze może być przeniesiony na inną.
Termin przenoszenie opisuje możliwość użycia danego program na maszynie innego rodzaju. Program komputerowy napisany w języku Asembler, może wymagać napisania od nowa, by móc pracować na innego typu komputerze.
Języki programowania mają wiele zalet:
Języki programowania, generalnie, dzielą się na dwie podstawowe grupy, w zależności od sposobu, w jaki przetwarzają polecenia:
Imperatywne języki programowania korzystają z serii poleceń, pogrupowanych w bloki składających się z instrukcji warunkowych i pozwalających programowi na powrót do bloku poleceń, jeśli warunek został spełniony. Języki imperatywne były pierwszymi językami programowania, ale nawet dziś wiele współczesnych języków opiera się na tej regule.
Strukturyzowane języki imperatywne cierpią jednak na brak elastyczności, jaką powoduje konieczność kolejnego wykonywania instrukcji.
Funkcyjny język programowania (często nazywany językiem proceduralnym) to język, który tworzy nowe programy przy użyciu funkcji, wracając do stanu
wyjściowego i odbierając na wejściu wynik innych funkcji. Jeśli funkcja wywołuje się sama, określamy to zjawisko mianem rekursji.
Języki programowania można z grubsza podzielić na dwie kategorie:
Język programowania jest z definicji inny niż kod maszynowy. Dlatego musi być tłumaczony tak, by zrozumiał go procesor. Każdy program wymaga dodatkowego programu (tłumacza), który będzie interpretował komendy, gdy zajdzie taka potrzeba.
Program napisany w języku kompilowanym jest tłumaczony przez dodatkowy program nazywany kompilatorem który tworzy nowy, niezależny program, potrafiący samodzielnie wykonywać polecenia. Ponadto, jeśli tłumaczenie musi być wykonane natychmiast,
z kompilatorem dzieje się to znacznie szybciej. Jednak program napisany w języku kompilowanym, nie jest tak elastyczny, jak ten, napisany w języki interpretowanym, ponieważ każda zmiana pliku źródłowego oznacza, że program musi być na nowo skompilowany, by wprowadzone zmiany zaczęły być widoczne.
Z drugiej jednak strony, program kompilowany ma przewagę, w postaci większego bezpieczeństwa kodu źródłowego. Oznacza to, że język interpretowany jest bardziej czytelny dla każdego, kto zechce poznać jego sekrety i skopiować, a nawet zmodyfikować program. Niesie to ze
sobą ryzyko naruszenia praw autorskich. Powszechnie stosuje się też zabezpieczenia w postaci kodu bezpieczeństwa, aby uniknąć niepożądanego kopiowania danych (np. transakcje bankowe).
Niektóre języki (np. LISP, Java, Python) należą do obu kategorii. A programy w nich napisane mogą w niektórych przypadkach przechodzić pośredni etap kompilacji, do pliku napisanego w języku innym niż plik źródłowy. Aplikacje Java, małe programy, często otwierane w internecie strony internetowe mogą być używane jedynie z poziomu przeglądarki internetowej.
Oto niepełny wykaz aktualnych języków programowania:
Język |
Obszar zastosowania |
Kompilowany/interpretowany |
---|---|---|
ADA |
Czas rzeczywisty |
Kompilowany |
BASIC |
Programowanie w celach edukacyjnych |
Interpretowany |
C |
Programowanie systemowe |
Kompilowany |
C++ |
Programowanie obiektowe |
Kompilowany |
Cobol |
Zarządzanie |
Kompilowany |
Fortran |
Obliczenia |
Kompilowany |
Java |
Aplikacje internetowe |
Pośredni |
MATLAB |
Obliczenia matematyczne |
Interpretowany |
Mathematica |
Obliczenia matematyczne |
Interpretowany |
LISP |
Sztuczna inteligencja |
Pośredni |
Pascal |
Edukacja |
Kompilowany |
PHP |
Dynamiczne strony internetowe |
Interpretowany |
Prolog |
Sztuczna inteligencja |
Interpretowany |
Perl |
Przetwarzanie ciągów znaków |
Interpretowany |
Zdjęcie: © Signs and Symbols - Shutterstock.com