Języki programowania

Komputer stworzony został na podobieństwo ludzkiego mózgu – a raczej jego analitycznej, przetwarzającej dane części. Z maszyną porozumiewamy się w specjalnie dla niej opracowanym (na bazie, a jakże!, ludzkiego języka) kodzie, zwanym językiem programowania. Czy różni się od naturalnej mowy w takim stopniu, jak istota z krwi i kości od komputera?

Języki programowania można liczyć w setkach, wciąż powstają nowe. Niektóre rozbudowane i popularne na całym świecie, jak te, zajmujące pierwsze miejsca na liście TIOBE: C, C++, Java*, PHP oraz C#, inne stworzone na potrzeby indywidualne, o niedużej składni. Większość podobnych do siebie – dzielą te same komendy, reguły bądź logikę komponowania poleceń. Wszystko po to, by programiści nie rozmieniali się na drobne, chcąc opanować jak najwięcej z nich. Z definicji język programowania to: zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje. Na jej podstawie określić możemy różnicę pierwszą:

  1. Języki programowania przybierają formę jedynie pisaną

Komendy wklepujemy przez klawiaturę, rzadko istnieje alternatywa**. Języki programowania opracowane są jako języki pisane. Niewielu na świecie posługuje się myśleniem na takim poziomie, by w umyśle ułożyć kompletny kod. Poza tym, gdy ciąg znaków nie jest zapisany, nie można go zdebugować i wychwycić usterek – a błędem może być w tym wypadku ominięcie średnika po linijce deklaracji bądź komendy. Większość linijek w Javie wygląda następująco:

import java.util.Scanner;

Scanner in = new Scanner(System.in);

System.out.println(”Sunday”);

Dzięki kończącym je znakom przestankowym, komputer może prawidłowo rozpoznać, że oto polecenie się skończyło. Gdy brakuje choćby jednego z nich, program się nie uruchomi.

  1. Pozwalają dogadać się z przedmiotem „inteligentnym”

Języki naturalne służą do komunikacji międzyludzkiej, programowania do porozumiewania się z maszyną – wiadomo. Te pierwsze różnicują się w zależności od miejsca zamieszkania: kraju, regionu i jeszcze „mniejszej ojczyzny”. Spośród drugich wybieramy odpowiedni, by zwracać się do konkretnego urządzenia lub, bardziej współcześnie, taki, który najbardziej nam odpowiada. Nowoczesne języki programowania tworzone są bowiem w taki sposób, by rozwiązywać problemy na wyższym poziomie abstrakcji, w oderwaniu od wymagań sprzętu. Czy na pewno kod służy jedynie do porozumiewania się z urządzeniami różnego przeznaczenia? W środowiskach biurowych krążą żarty o programistach, sugerujące, że ci, pochłonięci językiem „sztucznym”, reagują już tylko na jasne komendy.
  1. Konkretne, jak tylko możliwe

Czy to C++, czy Java, w języku programowania nie uświadczymy ozdobników. Zresztą, komputerowi na nic się zdadzą kwieciste epitety i metafory, gdy potrafi jedynie zrozumieć to, co ustalone zostało w „słowniku”. Z maszyną porozumiewamy się za pomocą deklaracji i komend – deklarujemy dane, które wprowadzamy, a komendami przywołujemy je oraz przetwarzamy.

Int wiek = 25; //deklaracja

wiek = wiek + 1;  //komenda, polecenie

Symbolem „//” oznaczamy nasz komentarz. W tym miejscu teoretycznie możemy się literacko „wyżyć”, bo maszyna znaków po ukośników nie odczyta. Zaleca się jednak stosowanie dopisków jak najbardziej rzeczowych, pozwalających odnaleźć się w programie współpracownikowi lub zaawansowanemu użytkownikowi.

  1. Logiczne, nie pozostawiające miejsca na domysły

Komputer dysponuje powiązaniami, które przekazał mu człowiek – raz nadane, nie zagubią się w jego pamięci, nie zostaną też utracone przy rozwoju choroby Alzheimera. Z drugiej strony, istota ludzka ma w sobie potężne narzędzie: podświadomość. Pomysły mogą mu się przyśnić, jednak wspomnienia zaniknąć. W przypływie weny twórczej kształtuje sytuacje, obrazy, uczucia. Komputer pozostaje pod wpływem ciągów symboli, które człowiek musi umiejscowić w odpowiednich zależnościach. Języki programowania oparte są na żelaznej logice:

  • by użyć danej zmiennej (elementu, np. liczby, tekstu, obrazu), musimy ją wcześniej w kodzie zdeklarować, przywołać;
  • pragnąc skorzystać z opracowanych dla danego języka dodatkowych funkcji, należy je na początku kodu zaimportować przy pomocy polecenia „import” – w ten sposób do programu można dołączyć „maszynę losującą” lub funkcję wysyłania sms-ów na podany numer telefonu;
  • kod stosujemy ściśle według składni. W języku programowania na nic tworzenie nowych zastosowań dla zmiennych, zmiany kolejności elementów czy pomysłowe komendy, które nie zgadzają się z opracowanymi wcześniej regułami.
  1. Klasyfikują się według mocy

Języki naturalne układamy w rankingach wedle stopnia trudności (choć i ten można kwestionować), zawartości anglicyzmów, liczby osób posługujących się nimi czy ilości krajów występowania. Języki programowania podzielić można według jasnego kryterium – mocy obliczeniowej. Teoria obliczeń porządkuje języki wedle rodzajów obliczeń, jakie udaje się za ich pomocą wykonać (więcej: hierarchia Chomsky’ego). Języki programowania mogą być mniej lub bardziej wydajne.

Między mową ludzką a „mową komputerów” muszą być jakieś podobieństwa – inaczej te drugie nie tytułowałyby się językami. Obydwa systemy posiadają składnię, semantykę, system zapisu, funkcję, odróżniają duże i małe litery oraz wymagają stosowania odpowiednich znaków przestankowych. Języki programowania to jednak języki uniwersalne, można powiedzieć, lingua franca, programistów Pythona czy Ruby on Rails, podczas gdy jedynie kilka języków naturalnych przełamuje barierę geograficzną na szeroką skalę.

*    Przykłady kodu w tym artykule podane są w języku Java (czyt. dżawa).
**  Chyba że użyjemy systemu głosowego, który zapisze podyktowane komendy – to jednak z konieczności.