Język programowania- zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje.
Język programowania może być zdefiniowany ze względu na kilka cech:
- Funkcja: Język programowania służy do tworzenia programów
komputerowych, których zadaniem jest przetwarzanie danych, wykonywanie
obliczeń i algorytmów oraz kontrolowanie/obsługa zewnętrznych urządzeń, np. drukarek, robotów itd.
- Przeznaczenie: Języki naturalne służą do komunikacji między
ludźmi, natomiast języki programowania umożliwiają wydawanie poleceń
maszynom. Niektóre z języków są wykorzystywane również do kontrolowania
jednego urządzenia przez inne. Przykładowo, program wykonywany na
komputerze może wygenerować kod PostScript do sterowania pracą drukarki bądź wyświetlacza.
- Konstrukcje składniowe: Język programowania może zawierać konstrukcje składniowe do manipulowania strukturami danych oraz zarządzania przepływem sterowania.
- Moc: Teoria obliczeń klasyfikuje języki według rodzajów obliczeń, które można za ich pomocą zrealizować (hierarchia Chomsky'ego). We wszystkich językach zupełnych w sensie Turinga da się zaimplementować ten sam zbiór algorytmów. Przykładem często stosowanego języka niezupełnego jest SQL służący do komunikacji z bazą danych.
Realizowane jest to w inny sposób niż w procesie
kompilacji, podczas którego nie wykonuje się wejściowego programu (kodu źródłowego), lecz tłumaczy go do wykonywalnego
kodu maszynowego lub
kodu pośredniego, który jest następnie zapisywany do
pliku w celu późniejszego wykonania.
Wykonanie programu za pomocą interpretera jest wolniejsze, a do tego
zajmuje więcej zasobów systemowych niż wykonanie kodu skompilowanego,
lecz może zająć relatywnie mniej czasu niż kompilacja i uruchomienie.
Jest to zwłaszcza ważne przy tworzeniu i testowaniu kodu, kiedy cykl
edycja-interpretacja-
debugowanie może często być znacznie krótszy niż cykl edycja-kompilacja-uruchomienie-debugowanie.
Interpretacja kodu jest wolniejsza niż uruchamianie skompilowanego
kodu, ponieważ interpreter musi analizować każde wyrażenie i następnie
wykonać akcję, a kod skompilowany jedynie wykonuje akcję. W
implementacjach
będących w pełni interpreterami wykonanie wielokrotne tego samego
fragmentu kodu wymaga wielokrotnej interpretacji tekstu. Ta analiza
nazywana jest "kosztem interpretacji". Dostęp do
zmiennych jest także wolniejszy w interpreterze, gdyż odwzorowanie identyfikatorów na miejsca w
pamięci operacyjnej
musi zostać dokonane podczas uruchomienia lub działania, a nie podczas
kompilacji. Dlatego niektóre interpretery tworzą dodatkowe dane (np.
adresy zmiennych) przyspieszające wykonanie programu.
Kompilator- program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym). Proces ten nazywany jest kompilacją.
W informatyce kompilatorem nazywa się najczęściej program do tłumaczenia
kodu źródłowego w
języku programowania na
język maszynowy. Niektóre z nich tłumaczą najpierw do języka
asemblera, a ten na język maszynowy jest tłumaczony przez asembler..
Stosowanie kompilatorów ułatwia programowanie (
programista nie musi znać języka maszynowego) i pozwala na większą przenośność kodu pomiędzy platformami.
Występuje pewna względność ocen:
język C może być oceniany jako język wysokiego poziomu przez programujących w
asemblerze, lecz jako język niskiego poziomu przez używających
Javy.
Pewnym obiektywnym miernikiem wysokości poziomu języka może być to, jak
bardzo jest on niezależny od tego, jak działa komputer. W
asemblerze operujemy bezpośrednio na rejestrach komputera, w
C piszemy programy za pomocą pewnych instrukcji, natomiast
Java
i inne języki obiektowe pozwalają nam posługiwać się zdarzeniami
występującymi między obiektami. W języku tym praktycznie nie widzimy w
żaden sposób budowy
komputera.
Najbardziej typowym przykładem języka niskiego poziomu jest
asembler.
Asembler jest językiem niskiego
poziomu i nie jest już powszechnie wykorzystywany przez
programistów tworzących popularne aplikacje.
Programista Asemblera nie musi już co prawda używać wyłącznie
zer i jedynek, jednak programowanie w Asemblerze nadal jest trudne i
wymaga dużej wiedzy i cierpliwości.
Język wysokiego poziomu(autokod) – typ języka programowania,
którego składnia i słowa kluczowe mają maksymalnie ułatwić rozumienie
kodu programu dla człowieka, tym samym zwiększając poziom abstrakcji
i dystansując się od sprzętowych niuansów.
Kod napisany w języku
wysokiego poziomu nie jest bezpośrednio „zrozumiały” dla komputera –
większość kodu stanowią tak naprawdę normalne słowa, np. w języku
angielskim. Aby umożliwić wykonanie programu napisanego w tym języku
należy dokonać procesu
kompilacji.
Podział ze względu na zastosowanie
Języki
programowania dzielimy na:
- wewnętrzne
- maszynowe(Java,NET)
- algorytmiczne (Pascal, częściowo C),
- języki
czwartej generacji (w tym niektóre języki do tworzenia aplikacji na bazie
danych np. SQL)
Grupy
języków programowania
- Bazodanowe:
dBase, Clipper, FoxPro, Access, Delphi, SQL-owe (np.
Oracle).
Ukierunkowanie na tworzenie aplikacji baz danych (zbiór
informacji jednorodnych, łatwiej dopisywać informacje, dostosowanie do
pracy w sieci, sortowanie)
- Obliczeniowe
(naukowo techniczne, statystyka), np.
Fortran
(są biblioteki do grafiki),
Pascal,
C/C++
(ojciec Pascal, matka assembler), podobny do UNIXa, wykonuje instrukcje
nie dyskutuje.
Jest jakby językiem uniwersalnym, właściwości
sieciowe.C++ cechuje obiektowość. Gorzej z zastosowaniami
bazodanowymi, biblioteka funkcji matematycznych mniejsza niż w
Fortranie.
- Specjalizowane:
sztuczna inteligencja, systemy ekspertowe, przetwarzanie list, do
symulacji procesów
- Języki typu "Visual"
(np. Visual C++,
C#, Visual
Basic, Delphi)