Język programowania definiuje się jako usystematyzowany sposób przekazywania przez człowieka maszynom poleceń do wykonania. Początkowo komputery były sterowane za pomocą systemu przełączników lub zapisanych w formie liczb rozkazów maszynowych, co znacznie utrudniało ich programowanie oraz wyszukiwanie błędów w programie. Assemblery były tylko częściowym rozwiązaniem problemu: kodom liczbowym przypisano krótkie nazwy, np. ADD reprezentowało kod operacji dodawania, lecz nadal składanie programu z elementarnych cegiełek było mozolną pracą.
Pierwszy język programowania z prawdziwego zdarzenia: Plankalkül, powstał pod koniec II wojny światowej w Niemczech, a jego twórcą był genialny konstruktor Konrad Zuse. Pierwsza publikacja na jego temat datowana jest na 1948 rok, lecz pomysł nie zyskał rozgłosu. Dopiero w latach 50-tych w USA zaczęto rozwijać FORTRAN-a, LISP-a i COBOL-a. Istotną cechą tych języków był sposób zapisu wyrażeń matematycznych, które zaczęły przypominać ludzką notację, np. a = b * (c - 7). Wymagało to stworzenia programów tłumaczących je na listę elementarnych rozkazów dla komputera, czyli krócej - kompilatorów.
Można więc powiedzieć, że języki programowania powstały, aby uprościć człowiekowi sposób zapisu algorytmów (i utrudnić komputerowi jego odczytanie :)). Jednocześnie wzrost mocy komputerów sprawiał, że można było wprowadzać nowe paradygmaty programowania, np. obiektówkę. Niektóre języki powstały z myślą o konkretnym zastosowaniu, np. FORTRAN uznawany był za znakomity język do obliczeń numerycznych, a COBOL - dla aplikacji biznesowych. Inne natomiast miały implementować nowe rozwiązania technologiczne: C++ to znacząco rozbudowany C lub poprawiały niedociągnięcia poprzedników (D usuwający nielogiczności składni z C++).
Pojawienie się języków interpretowanych również nie było jedynie zamachem na wydajność. Maszyny wirtualne pozwalają uruchomić ten sam skrypt na różnych systemach oraz platformach bez zmiany linijki kodu, upraszcza się również proces tworzenia oprogramowania. Powiedzmy sobie szczerze: ilu ludzi programuje strony internetowe w C++? Ułamki procentów - cała reszta weźmie sobie Ruby'ego, PHP czy inny ulubiony/adekwatny do potrzeb język i będzie wolna od zarządzania pamięcią, ręcznej obsługi FastCGI oraz protokołu HTTP. Jest to więc kolejny poziom abstrakcji pozwalający szybko i czytelnie wyrażać czynności, które chcemy, aby komputer wykonał. Jednak z tego powodu języki te mają ograniczenia w użyciu. Nikt przy zdrowych zmysłach nie będzie próbował napisać w PHP systemu operacyjnego. Ponadto dla pewnych zastosowań możliwe jest podniesienie poziomu abstrakcji jeszcze wyżej.
Języki programowania są najpotężniejszym narzędziem do informowania komputera o tym, co chcemy, aby dla nas wykonał. Zdecydowana większość z nich jest zupełna w sensie Turinga, co oznacza, że za ich pomocą można wyrazić każdy algorytm, jaki współczesne komputery są w stanie wykonać. Jednak podobnie, jak w przypadku ludzkiej mowy, biegłe posługiwanie się takowym wymaga czasu i ćwiczeń. Pierwsza rzecz to opanowanie składni; druga - poznanie możliwości oraz najlepszych sposobów realizowania danych zadań. Wiele aplikacji wyposażonych jest w graficzny interfejs użytkownika, który pozwala obsługiwać je za pomocą systemu okienek, przycisków oraz pól tekstowych. Należy jednak mieć na uwadze, że takie systemy mają swoje ograniczenia. Jeśli chcesz w Photoshopie zmniejszyć rozmiar 500 zdjęć, czeka Cię mnóstwo klikania, podczas gdy prosty skrypt potrafi zrealizować to zadanie w paręnaście sekund. Lecz jeśli obrabiasz jeden plik graficzny, na pewno łatwiej będzie zrobić to w pełni wizualnie, z okienkami, aniżeli próbować oprogramować listę czynności. Granica między zadaniami, gdzie język programowania się przydaje, a gdzie nie, jest bardzo płynna. Jednak ogólny wniosek jest jasny: aby zapewnić swobodę działania, jakaś forma programowania jest niezbędna i w którymś miejscu się ono zawsze pojawi, gdy takie założenie przyjęliśmy. Natomiast to, które z tych miejsc akceptujemy jako dozwolone, to już nasza indywidualna preferencja. Wracając do wspomnianego na samym początku wątku: osobiście preferuję "szablonowy język programowania" (bez żadnego pseudo-) z takiego samego powodu, dla którego do programowania logiki stron WWW wybrałem język interpretowany, a nie C++.






Napisał Albi w niedzielę, 30 września 2007 o 12:17
W zupełności się zgadzam... Język (z może raczej składnia szablonów?) zastosowany w OPT jest tak podobny do PHP, że jego nauczenie się to nie problem. Natomiast skraca nieco pracę i jest znacznie czytelniejszy (przynajmniej dla mnie).