Języki programowania
W jednym z poprzednich artykułów wspomniano, że programowanie jest zapisywaniem instrukcji dla komputera, w jaki sposób ma rozwiązać dany problem, czy zapytanie. Jednak gdy poszukamy informacji o programowaniu, bardzo szybko dowiemy się, że możemy to robić w setkach różnych języków, spośród których część cieszy się większą, bądź mniejszą popularnością. Jeśli jednak służą one do tego samego celu, to czym tak naprawdę się od siebie różnią? Postaram się odpowiedzieć na to pytanie, opierając się na kilku przykładowych językach.
Spośród 10 najpopularniejszych języków programowania, którymi są: C, JAVA, Python, C++, C#, Visual Basic, JavaScript, PHP, R oraz SQL przyjrzymy się bliżej niektórym z nich. Dlaczego na tej liście nie znalazł się HTML? Odpowiedź jest prostsza niż mogłoby się to wydawać: HTML nie jest językiem programowania (mimo, że bardzo często tak się o nim mówi) – jest to język znaczników, który w uproszczeniu jest formatem dokumentu, który poza tekstem zawiera też dodatkowe informacje, których zadaniem jest określenie jak dany tekst ma wyglądać.
Skryptowy czy kompilowany
Podstawową różnica między językami programowania jest to czy jest to język skryptowy czy kompilowany. Te pierwsze wymagają do uruchomienia kodu zapisanego np.: w notatniku dodatkowego oprogramowania, które „czyta i interpretuje” kod dla programu. Dzięki takiemu podejściu zmiany są widoczne od zaraz, jednak wyszukiwanie błędów w kodzie jest utrudnione, ponieważ będzie on widoczny dopiero w momencie uruchomienia tego fragmentu kodu, w którym błąd się znajduje. Głównie są przeznaczone do pisania prostszych, mniej wymagających aplikacji i należą do nich, z wymienionych powyżej: PHP, Python, Ruby oraz JavaScript.
Języki kompilowane natomiast musimy, jak sama nazwa wskazuje, skompilować („tłumaczenie” na język zrozumiały dla komputera) przed uruchomieniem oprogramowania. W praktyce każdą wprowadzoną zmianę musimy skompilować (najczęściej z całym oprogramowaniem) i uruchomić program ponownie. Mimo, że brzmi to bardziej skomplikowanie — nie do końca takie jest. Pisanie w tych językach wymaga innego podejścia. W tym przypadku błędy są wyszukiwanie jeszcze przed uruchomieniem oprogramowania i dzięki znajomości tych języków możemy napisać bardziej skomplikowane programy. Do tej grupy języków należą, np.: Java, C#.
W każdym języku możemy napisać te same działania matematyczne, algorytmu czy funkcje logiczne. Jednak ten sam program będzie inaczej zapisany w zależności od języka, to tak jakby dane zdanie przetłumaczyć na różne języki świata. Wyłania nam się tutaj kolejna różnica między danymi językami, czyli składnia. Przykładowo bardzo istotne w językach kompilowanych są klamry {} średniki; oraz typy, natomiast w językach skryptowych bardziej istotne są wcięcia (Python), zaś określanie typu zmiennej jest dokonywane zazwyczaj dynamicznie.
Proceduralne, strukturalne, czy obiektowe
Kolejną istotną różnicą, jaką możemy wyróżnić, jest to czy język należy do grupy języków proceduralnych, strukturalnych, czy obiektowych.
Wraz z rozwojem techniki zaczęły powstawać coraz bardziej skomplikowane programy i z prostych instrukcji dla procesora zaczęto tworzyć ciągi instrukcji i tak powstało programowanie proceduralne, które było zapisem kolejnych funkcji następujących po sobie. Przykładami są pierwsze wersje języka C.
Dalszy rozwój wymusił tworzenie bardziej skomplikowanych programów, które operowały na różnych zbiorach danych oraz wykonywały rozmaite niezwiązane ze sobą funkcje, stąd pojawiła się konieczność używania struktur i modułów. Podejście strukturalne do programowania zakłada, że całą funkcjonalność oprogramowania dzieli się na mniejsze części, tzw. moduły lub podprogramy, które komunikują się między sobą. W tego typu programowaniu wyrażenia są wykonywane w określonej kolejności oraz używa się w nim instrukcji warunkowych (tj.: if, if else) oraz pętli (for, while). Dodatkowo można dane grupować w odróżnieniu od podejścia proceduralnego. Przykładami języków należących do tej grupy: Ansi C, Java Script
Wraz ze wkroczeniem informatyki do świata biznesu pojawiła się potrzeba odwzorowywania modeli biznesowych przy pomocy oprogramowania, co z kolei stworzyło potrzebę formułowania abstrakcji w kodzie i różnych bytów, które reprezentowałyby „świat realny”. W programowaniu obiektowym problem, jaki mamy rozwiązać, przedstawiamy w postaci obiektów, do których dopisujemy działania (problem-> działanie) oraz dodatkowo umieszczamy opis danego obiektu. W języku trudniej o pomyłkę, gdyż dane funkcje są przypisane konkretnym obiektom. Przykładami języków należących do tej grupy są: Java, C #.
Zastosowanie
Języki programowania możemy również różnicować według ich zastosowania. Np.: języka Java Script bardzo często używa się do pisania interfejsu użytkownika, czyli wyglądu stron internetowych. W tworzeniu tego, co użytkownik widzi, nie używa się skomplikowanych procesów, dlatego też język ten jest wystarczający, by szybko stworzyć animacje graficzne, obrazki, układ kolumn, czy suwaki na stronie.
Do modelowania skomplikowanych procesów biznesowych używa się bardziej złożonych, obiektowych języków takich jak Java albo C#, ponieważ ze względu na swoje restrykcje związane z pisaniem kodu, pozwalają na szybsze wykrycie błędu.
Różnic znaleźć można oczywiście jeszcze więcej, jednak są one mniej widoczne dla przeciętnego użytkownika. Dla osób, które chcą zgłębić języki programowania i wybrać dla siebie ten najodpowiedniejszy, polecam strony oraz publikacje, w których temat ten został drobiazgowo przedstawiony.
Opisy danych języków programowania
- Popularne języki programowania
- Języki programowania
- Który język programowania wybrać?
- Najprostszy język programowania
- Jak wybrać język programowania?
- Java, a Java Script, czym się różnią?
- Klasyfikacja języków programowania
Opracowania
Przegląd języków i parydygmatów programowania – Jarosław Bylina, Beata Bylina
PROGRAMMING CONCEPTS: A BRIEF TUTORIAL FOR NEW PROGRAMMERS – Richard Holowczak
Języki programowania – artykuł na Wikipedii
Języki programowania – Encyklopedia PWN – Jarosław Deminet