Większość nowoczesnych programów komputerowych jest napisanych przy użyciu języków wysokiego poziomu. Warto zauważyć, że wiele z nich zostało opracowanych w latach 60. i 70., ale nadal są istotne. Jakie inne fakty na temat języków wysokiego poziomu możemy wskazać? Jakie są najpopularniejsze odmiany powiązanych rozwiązań?
Język programowania wysokiego poziomu jest narzędziem związanym z maszyną. Co to znaczy? Faktem jest, że języki programowania są podzielone na kilka kategorii.
Istnieje kod maszynowy: zestaw algorytmów zaprojektowanych do bezpośredniej kontroli użytkownika elementów sprzętowych komputera. Ich istota będzie całkowicie zależna od maszyny: tylko niektóre algorytmy są odpowiednie dla określonych typów komputerów.
Istnieją języki asemblerowe. W rzeczywistości są one nadstrukturą nad przeznaczoną do niskiego poziomu kontrolą elementów sprzętowych komputera PC za pomocą kodu maszynowego. Ale na wiele sposobów języki asemblerowe są powszechnie określane jako zależne od maszyny. Z reguły są one przystosowane do określonego typu sprzętu komputerowego. Ich głównym zadaniem jest uproszczenie zarządzania komputerem dla użytkownika poprzez odpowiednią komunikację niskopoziomową.
Z kolei język programowania wysokiego poziomu pozwala użytkownikowi na interakcję z komputerem, niezależnie od tego, jaki konkretny sprzęt jest zainstalowany na komputerze. Dlatego należy ją przypisać niezależnej od maszyny. Podczas pisania systemów operacyjnych najczęściej angażowany jest język programowania wysokiego poziomu. Ale jest system operacyjny napisany w asemblerze. Języki programowania niskiego i wysokiego poziomu mogą być używane jednocześnie. Osoba przekazująca polecenia wysokiego poziomu do komputera musi w taki czy inny sposób przekazywać je do określonych komponentów sprzętowych, a ta funkcja może być realizowana za pomocą języków asemblera jednocześnie z wysokimi poziomami, które są zaangażowane w strukturę systemu operacyjnego.
Najważniejszymi elementami języków programowania wysokiego poziomu są tłumacze. Ich funkcja może być inna. Jednym z kluczowych obszarów zastosowania translatorów jest "tłumaczenie" poleceń generowanych w języku programowania wysokiego poziomu na kod maszynowy, który jest zrozumiały dla określonego komponentu sprzętowego komputera, na przykład procesora. Translatory wykonujące tę funkcję są również nazywane kompilatorami. Istnieje inny rodzaj istotnego komponentu - tłumacze ustni. Mają one z kolei na celu "przetłumaczenie" poleceń wysokiego poziomu na te, które są zrozumiałe dla systemu operacyjnego lub dowolnego programu.
Języki programowania wysokiego poziomu mogą być klasyfikowane z różnych powodów. Schemat jest podzielony według podziału na następujące główne odmiany:
- zorientowane na procedury (używane jako narzędzie dla przetwarzanie informacji na dowolnym etapie obliczeń);
- zorientowane na problem (stosowane jako środek rozwiązywania problemów w przemyśle i stosowane, które powstają podczas rozszerzania zakresu zastosowań komputerów osobistych);
- obiektowe (mogą to być specjalne przypadki języków dwóch pierwszych typów, jednak są one przystosowane do użycia przez szeroką gamę programistów o różnych poziomach szkolenia, na przykład w postaci rozwiązania z interfejsem wizualnym).
Rozważmy teraz niektóre z historycznych i współczesnych języków programowania wysokiego poziomu, które odpowiadają tej klasyfikacji.
Należą do nich FORTRAN. Uważany jest za pierwszy język programowania wysokiego poziomu przeznaczony do powszechnego użytku. Charakteryzuje się prostą strukturą. Języki proceduralne obejmują również BASIC. Jest uważany za jeden z najczęściej używanych podczas nauki programowania. Przykładem innego języka proceduralnego jest SI. Pierwotnie został stworzony dla systemu operacyjnego UNIX. Na jego podstawie stworzono później język C ++, uzupełniony o narzędzia programowania obiektowego. Kolejny język w tej kategorii to Pascal. Często angażuje się również w programowanie uczenia się. Możliwości tego języka pozwalają na wykorzystanie go jako bardzo potężnego narzędzia do tworzenia profesjonalnych typów oprogramowania.
Należą do nich Lisp, Prolog. Pierwszy język powstał w 1962 roku - kilka lat po stworzeniu Fortran. Dlatego uważany jest za drugi w historii. Aktywnie zaangażowany jako narzędzie dla programistów do pracy z ciągami znaków. W praktyce Lisp był używany w systemach sklasyfikowanych jako ekspert, a także w tych przeznaczonych do obliczeń analitycznych. Prolog jest szeroko stosowany w programowaniu logicznym. W praktyce jest najczęściej wykorzystywany w zarządzaniu algorytmami sztucznej inteligencji w odpowiednich systemach.
Obecnie badamy przykłady języków programowania wysokiego poziomu, które są zorientowane obiektowo. Należą do nich Visual Basic, Delphi, Visual Fortran, C ++ opisane powyżej i Prolog ++. Praktycznie wszystkie z nich oparte są na językach proceduralnych. Oczekuje się jednak, że zostaną one znacznie uzupełnione wizualnymi kontrolami w celu późniejszego opanowania niezbędnych algorytmów przez programistów, którzy są przyzwyczajeni do innych narzędzi. W ten sposób pierwszy język programowania wysokiego poziomu, Fortran, może zostać szybko przestudiowany przez specjalistów IT dzięki możliwościom Visual Fortran. Używając podobnej metody, możesz szybko opanować Basic lub Prolog.
Z kolei zaimplementowano programowanie Delphi na wysokim poziomie Object Pascal. Istnieje wiele innych środowisk programistycznych sklasyfikowanych jako język obiektowy. Ten obszar technologii tworzenia oprogramowania aktywnie się rozwija.
Pozwól nam dowiedzieć się więcej o tym, jak pojawił się pierwszy język programowania wysokiego poziomu - Fortran, a także Lisp, który jest uważany za drugi. W 1954 r. Programiści IBM, kierowani przez Johna Backusa, stworzyli język, dzięki któremu programiści mieli możliwość znacznie ułatwić interakcję z komputerami, które do tej pory były wdrażane za pomocą instrukcji maszynowych lub asemblera. Otrzymał imię Fortran i wkrótce stał się znany w ZSRR pod zdyszifikowaną nazwą. Fortran stał się popularnym narzędziem do obliczeń naukowych.
Głównym rewolucyjnym elementem zaproponowanym społeczności IBM dla społeczności był w rzeczywistości ten sam kompilator, zaprojektowany jako alternatywa dla asemblera. W pierwszych latach praktyki pisania programów przy użyciu Fortranu wielu programistów uważało, że kompilator nie jest całkowicie pomyślnym rozwiązaniem, przede wszystkim pod względem kosztów pracy. Wiele kodów maszynowych zostało skompilowanych łatwiej niż w przypadku korzystania z translatora. Jednak wraz z szybkim wzrostem wydajności komputera, programiści zaczęli zdawać sobie sprawę, że bez użycia kompilatora, wydajne oprogramowanie, które w pełni wykorzystywałoby moc obliczeniową komputera byłoby bardzo problematyczne. W ten sposób rozwijano inicjatywy programistów IBM. Podstawowe konstrukcje syntaktyczne języka programowania wysokiego poziomu Fortran w wielu przypadkach zaczęły działać jako podstawowe podczas tworzenia nowych rozwiązań.
Przykład osiągnięcia praktycznych rezultatów w rozwoju koncepcji osadzonych w Fortranie można uznać za stworzenie Lispa. Język ten został opracowany w 1958 roku, jednak stał się powszechnie znany nieco później - w 1960 roku. Lisp został opracowany przez Johna McCarthy'ego i opublikowany w jednym z popularnych magazynów dla specjalistów IT. Głównym celem danego języka jest przetwarzanie list. Lisp stał się popularny wśród twórców systemów sztucznej inteligencji. Na tej podstawie stworzono takie języki jak Planner, Scheme i Common Lisp. Lisp miał również znaczący wpływ na wiele nowoczesnych narzędzi programistycznych. Struktura popularnych języków programowania wysokiego poziomu jest w dużej mierze oparta na algorytmach Fortrana i Lispa.
Byłoby jednak interesujące rozważenie innych podejść do klasyfikacji rozważanych narzędzi programistycznych.
Współcześni eksperci podkreślają uniwersalne języki wysokiego poziomu. Należą do nich w szczególności te, które zostały opracowane w latach 60-tych. Ich kluczowe cechy:
- koncentracja na szerokim zakresie zadań (głównie związanych z informatyką);
- Duża liczba konstrukcji językowych i algorytmów;
- znaczenie nie tylko dla swojego czasu, ale także dla nowoczesnego etapu rozwoju sprzętu komputerowego;
- wsparcie w niezbędnej metodologii dotyczącej języków.
Języki uniwersalne mają fundamentalne znaczenie dla odpowiedniej branży IT. Można zauważyć, że do tej pory nie mają bezpośrednich odpowiedników w części struktury wewnętrznej. W rzeczywistości w dużej mierze wyjaśnia to znaczenie użycia odpowiednich języków w nowoczesnych interfejsach obiektowych. W typowych językach często występuje typ danych. Czynnik ten w dużej mierze determinuje ich uniwersalność. Do najbardziej niezwykłych właściwości języków należących do kategorii uniwersalnej należy ciągłość. Historycznie późniejsze języki były z reguły oparte na koncepcjach poprzedników.
Niektórzy eksperci IT wyróżniają "unikalne języki" jako niezależną kategorię. Należą do nich: APL, Cobol, Forth, SETL i CLU. Jaka jest ich specyfika?
Najważniejszym aspektem APL jest użycie tablic (wektorów i macierzy) jako kluczowego typu strukturalnego. Specyfika języka Cobol koncentruje się na sferze komercyjnej. Dlatego wskazane jest użycie go w rozwiązywaniu problemów związanych ze standardowym formatem prezentacji wyników. Język Forth charakteryzuje się zastosowaniem szybkiego pisania programów, a także stosowaniem notacji stosu. W SETL zestawy wartości są używane jako jeden z kluczowych typów danych. Językiem programowania wysokiego poziomu jest również CLU. Jego główną cechą jest wykorzystanie koncepcji pracy z abstrakcyjnymi typami danych. Wielu specjalistów IT dostrzega logiczne pojawianie się nowych rozwiązań opartych na unikalnych językach - takich jak na przykład Cobol zorientowany na obiekt.
Ta kategoria może obejmować ogromną liczbę rozwiązań. Z kolei równoległe języki programowania mogą mieć wiele powodów do klasyfikacji. Na przykład metoda organizacji procesu. Ta podstawa sugeruje klasyfikację równoległych narzędzi programistycznych opartych na obecności:
- coroutines;
- widły;
- stowarzyszenia;
- nawiasy równoległe;
- algorytmy do pracy z procesami.
Inną podstawą klasyfikacji tego typu języków są metody synchronizacji procesów. Odpowiednie rozwiązania mogą zatem obejmować:
- semafory;
- monitory;
- "Rendezvous";
- obszary krytyczne;
- zdalne wywołanie procedury;
- transakcje związane z kategorią atomową.
Języki tego typu obejmują Modula-2, BLISS, Concurrent Pascal, DP, Argus.
Powyżej rozważaliśmy rozwiązanie takie jak C jako przykład wysokiego poziomu języka programowania, co w istocie tworzy całą rodzinę. Języki należące do niego to konkretne konstrukcje C. W ten sposób dodanie różnych komponentów obiektowych doprowadziło do rozwoju C ++. Po znacznym filtrowaniu szeregu konstrukcji C pojawił się język Java. Można zauważyć, że Java została stworzona w dużej mierze pod wpływem koncepcji projektu Oberon, którym kieruje Niklaus Wirth, twórca języka Pascal. Czy dotyczy to wysokopoziomowego JavaScript? Oczywiście tak, pomimo wąskiej aplikacji, jako narzędzie do tworzenia stron internetowych. Jednak języki programowania wysokiego poziomu nie obejmują w szczególności HTML, XML i SGML. Są one klasyfikowane jako narzędzia do hipertekstu.
Języki programowania wysokiego poziomu Pascal również tworzą oddzielną rodzinę. Na podstawie Pascala faktycznie powstał Oberon, sklasyfikowany jako język obiektowy. Kluczową cechą Oberona jest jego zdolność do zabezpieczania typu. Oprócz języka Oberon języki rodziny Pascal obejmują moduł Modula-2, a także komponent Pascal.
Założenie w odpowiedniej kategorii języków - uporządkowane według potrzeb Departamentu Obrony USA Ada. Powstał pod koniec lat 70. - początek lat 80. Charakteryzuje się dużą liczbą funkcji, funkcji, wszechstronności. Rodzina języków Ada obejmuje rozwiązania takie jak Cedar, Modula 3.
Język Simula jest powszechny w programach związanych z symulacją. Specyfika odpowiednich decyzji opiera się na wykorzystaniu określonego rdzenia. Jego zastosowanie pozwala na stosowanie różnych rozszerzeń, dostosowanych do różnych aplikacji. W oparciu o Simulę powstał obiektowy język Smalltalk, a także BETA, charakteryzujący się umiejętnością łączenia w ramach jednej abstrakcji algorytmów odzwierciedlających pracę z danymi, procedurami i kontrolą. Obiekty BETA można wyświetlać w różnych kontekstach, na przykład jako zmienne, funkcje lub systemy równoległe.