Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7
Aby rozwiązać dany problem informatyczny należy przejść przez wiele kroków działań, które określamy terminem algorytmizacja problemu. W uproszczony sposób możemy to przedstawić za pomocą diagramu. Algorytmizacja problemu Problem Określenie zadania Wybór metody rozwiązania Podział na czynności elementarne Specyfikacja rozwiązania Kodowanie Końcowym efektem jest program informatyczny napisany w odpowiednim języku programowania. Program składa się z wielu plików, z których najistotniejszy jest kod źródłowy, który można modyfikować i rozszerzać o kolejne dodatki powstające w miarę ewoluowania programu i dostosowania go do konkretnych potrzeb. Programiści, czyli osoby piszące programy, posługują się w swojej pracy wybranym językiem programowania, który jest najodpowiedniejszy dla danego zagadnienia i platformy sprzętowej. 2/7
Zgodnie z definicją język programowania to zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje 1 W programie komputerowym możemy wyróżnić dwie składowe: PROGRAM = ALGORYTM + DANE Definicja języka ALFABET litery, cyfry, znaki specjalne. SKŁADNIA zbiór reguł definiujących sposób konstruowania łańcucha symboli. SEMANTYKA określenie jak te łańcuchy symboli należy rozumieć (wykonywać). Wyżej przedstawione elementy języka zostaną opisane w dalszej części kursu. Podobnie jak języki naturalne, język programowania składa się ze zbiorów reguł syntaktycznych oraz semantyka, które opisują, jak należy budować poprawne wyrażenia oraz jak komputer ma je rozumieć. Języki programowania posiadają pisemną specyfikację swojej składni oraz semantyki. Języki programowania w precyzyjny sposób pozwalają zapisać i przetworzyć algorytm na jednoznaczne dla komputera polecenia. Najlepiej gdyby to były polecenia wyboru typu prawda lub fałsz. Języki programowania mogą być zdefiniowane ze względu na swoje cechy takie jak: funkcja, przeznaczenie, konstrukcja i moc. Istnieje grupa języków, w których nie da się realizować obliczeń np. języki znaczników, jak HTML czy XML i dlatego nie powinno się uznawać je za języki programowania. 1 Mordechai Ben-Ari: Understanding Programming Languages. Chichester: John Wiley & Sons, 1996. 3/7
W procesie ewolucji wynalezione zostały nowe techniki tworzenia oprogramowania poprawiające uniwersalność kodów. Opracowano algorytmy pozwalające automatycznie realizować zadania, którymi dotąd musiał zajmować się programista. Skraca to czas tworzenia aplikacji i zmniejsza ilość okazji do popełnienia błędu, lecz w niektórych sytuacjach odbija się to negatywnie na wydajności, czego przykładem jest język Java. Na język programowania składa się kilka elementów: Składnia Aby dany ciąg znaków mógł być rozpoznany jako program napisany w danym języku, musi spełniać reguły składni. Składnia opisuje: Rodzaje dostępnych symboli. Zasady, według których symbole mogą być łączone w większe struktury. Semantyka Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Część błędów semantycznych można wychwycić już w momencie wstępnego przetwarzania kodu programu, np. próbę odwołania się do nieistniejącej funkcji, lecz inne mogą ujawnić się dopiero w trakcie wykonywania. Typy danych Każdy język operuje jakimś zestawem danych, dlatego niezbędne jest podzielenie danych na odpowiednie typy, zdefiniowane ich właściwości oraz operacji, jakie można na nich realizować. Większość języków posiada typy danych do reprezentowania: Liczb całkowitych w różnych zakresach. Liczb zmiennoprzecinkowych (reprezentacje liczb rzeczywistych o różnym stopniu dokładności) Ciągów tekstowych. 4/7
Od strony sprzętowej wszystkie te informacje wyrażane są za pomocą sekwencji zer i jedynek. Język programowania nakłada jedynie odpowiednie ograniczenia i zasady ich przetwarzania. Zjawisko konwersji wartości jednego typu na inną nazywa się rzutowaniem. Biblioteki standardowe Dla większości języków zdefiniowana jest także biblioteka standardowa zawierająca podstawowy zestaw funkcji pozwalających realizować wszystkie najważniejsze operacje, np.: Obsługę wejścia-wyjścia. Obsługę plików. Obsługę wielowątkowości. Zarządzanie pamięcią. Podstawowe typy danych oraz funkcje do zarządzania nimi. Operacje na ciągach tekstowych. Wykonywanie kodu Aby program napisany w danym języku mógł być wykonany, niezbędne jest odpowiednie przetworzenie jego kodu źródłowego: Kompilacja kod źródłowy jest tłumaczony do postaci języka maszynowego, czyli sekwencji elementarnych operacji gotowych do bezpośredniego przetworzenia przez procesor komputera. Jeżeli dany język programowania podlega kompilacji, określany jest mianem kompilowanego języka programowania. Interpretacja kod źródłowy jest na bieżąco tłumaczony i wykonywany przez dodatkowy program zwany interpreterem. Jeżeli język podlega interpretacji, nazywany jest interpretowanym językiem programowania. Kompilacja do kodu maszynowego zapewnia najwyższą wydajność programom, lecz wygenerowany kod jest ściśle powiązany z platformą sprzętową. Ponadto kompilowane 5/7
języki są bardziej zbliżone do sposobu funkcjonowania sprzętu, przez co programowanie w nich jest trudniejsze. Języki interpretowane zapewniają większą przenośność programów, które często są niezależne od platformy i systemu operacyjnego. Aby programy wyrażone w języku interpretowanym można było uruchomić na innej platformie, wystarczy napisać dla niej interpreter. Jednak taki sposób wykonywania odbija się negatywnie na wydajności. Alternatywnym rozwiązaniem jest kompilacja programów do postaci pośredniej, tzw. kodu bajtowego. Jest ona wykonywana przez wirtualne maszyny tłumaczące elementarne rozkazy kodu bajtowego na rozkazy procesora. Klasyfikacja języków programowania Języki programowania mogą być podzielone ze względu na: Paradygmat programowania Generację języka programowania Sposób kontroli typów. Sposób wykonywania (kompilacja, interpretacja). Poziom (języki niskopoziomowe są bardziej zbliżone pod względem budowy do działania sprzętu). Przeznaczenie. Najpopularniejsze języki programowania Lista dwudziestu najpopularniejszych języków programowania według TIOBE (stan na czerwiec 2011 r.) Java C C++ C# PHP 6/7
Visual Basic Objective-C Python Perl Lua JavaScript Ruby Delphi Lisp Pascal Asembler Transact-SQL RPG (OS/400) Ada Scheme Na ćwiczeniach będziemy korzystali z języków: JavaScript, PHP, Pascal oraz Delphi. 7/7