• Nie Znaleziono Wyników

U WAGI O SYSTEMACH PROGRAMOWANIA I ZASTOSOWANIU KOMPUTERÓW

2. Częściowo strukturyzowane dane – dane XML

1.9. U WAGI O SYSTEMACH PROGRAMOWANIA I ZASTOSOWANIU KOMPUTERÓW

1.9.1.PARADYGMATY PROGRAMOWANIA KOMPUTERÓW

Warto przyjrzeć się znaczeniu słowa „paradygmat”, bezlitośnie nadużywanemu przez filozofów, lingwistów i informatyków — by wymienić tylko paru sprawców zamieszania. Otóż, jak podaje Słownik języka polskiego PWN, paradygmat to «przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie np. zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych), właściwy danemu typowi wyrazów; wzorzec, model deklinacyjny lub koniugacyjny». Jak to się ma do programowania? Szereg autorów, w tym Wikipedia, formułują paradygmat programowania jak niżej:

1.9.1.00. Definicja. Paradygmat programowania (programming paradigm) — wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach. Paradygmat programowania definiuje sposób patrzenia programisty na przepływ sterowania i wykonywanie programu komputerowego.

Przykład: W programowaniu obiektowym jest on traktowany, jako zbiór współpracujących ze sobą obiektów, podczas gdy w programowaniu funkcyjnym definiujemy, co trzeba wykonać, a nie, w jaki sposób. Zależności między paradygmatami programowania mogą przybierać skomplikowane formy, ponieważ jeden język może wspierać wiele różnych paradygmatów.

Język, C++ posiada elementy programowania proceduralnego, obiektowego oraz uogólnionego, co stanowi o nim, że jest hybrydowym językiem.

Niektórzy autorzy uważają, że mamy do czynienia z bardzo wieloma różnorodnymi paradygmatami programowania, których zakres nie zawsze jest rozłączny:

1. Imperatywnym 2. Obiektowym 3. Proceduralnym 4. Strukturalnym 5. Funkcyjnym 6. Zdarzeniowym

7. Logicznym (np. przy użyciu języka Prolog) 8. Aspektowym

9. Deklaratywnym 10. Agentowym 11. Modularnym.

W dalszy ciągu zajmiemy się omówieniem dwóch, naszym zdaniem kluczowych paradygmatów.

A mianowicie, paradygmatami programowania: imperatywnego i obiektowego.

1.9.1.10. Wyjaśnienie. Programowanie imperatywne to najbardziej pierwotny sposób programowania, ściśle związany z architekturą komputerów wywodzącą się od Johna von Neumana, w którym program postrzegany jest, jako ciąg poleceń dla komputera:

Ściślej, obliczenia rozumiemy tu, jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku.

Stan maszyny należy z kolei rozumieć, jako zawartość całej pamięci oraz rejestrów i znaczników procesora.

Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan.

Języki wysokiego poziomu — takie jak Fortran, Algol, Pascal, Ada lub C — posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.

Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaś abstrakcją komórek pamięci są zmienne. Programowanie imperatywne jest tak stare jak komputery, a nawet starsze. Przepisy kuchenne czy sformalizowane procedury urzędowe można uznać za przejaw programowania imperatywnego.

Oczywiście używane dzisiaj języki imperatywne są znacznie bogatsze niż te z czasów pionierskich. Niesłychanie ważnymi elementami, o które wzbogacił się ten paradygmat, to programowanie strukturalne (używanie prostych, dobrze zdefiniowanych struktur jak np. pętla, oraz unikanie skoków) i programowanie proceduralne.

1.9.1.20. Wyjaśnienie. W programowaniu obiektowym program to zbiór porozumiewających się ze sobą obiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje:

Podejście obiektowe, obejmujące klasy obiektów o wspólnych atrybutach oraz operacjach (zwanych metodami) i interfejsy umożliwiające łączenia pomiędzy sobą obiekty należące do różnych, a wyposażone w ten sam interfejs,

Ważną cechą jest tu powiązanie atrybutów (czyli stanu), z operacjami na nich (czyli poleceniami) w całość, stanowiącą odrębną jednostkę — obiekt.

Cechą nie mniej ważną jest mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących i bardziej złożonych interfejsów na bazie już istniejących.

Obiekty tworzą konstrukcje kapsułowaną (an capsulation), czyli konstrukcje wiążące mniejsze jednostki w zamkniętą całość, które można użytkować, znając ich funkcjonalność – bez wchodzenia w szczegóły realizacyjne.

Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie, nawet, jeśli pogląd ten uznamy za nie w pełni uzasadniony, to niewątpliwie programowanie obiektowe zdobyło ogromną popularność i wypada je uznać za paradygmat obecnie dominujący. Przykładami języków programowania obiektowego są: JAVA i C#.

1.9.1.21. Definicja. Abstrakcja to — w naszym rozumieniu — reprezentacja pewnego bytu, w której pominięto nieistotne w danym kontekście szczegóły. Pozwala nam to grupować byty według ich wspólnych cech, albo zajmować się całymi grupami (czyli owymi wspólnymi cechami), albo bytami wewnątrz grupy (czyli szczegółami różniącymi bajty w grupie).

1.9.1.22. Wyjaśnienie. Dwie podstawowe abstrakcje w językach programowania to:

1. Abstrakcja procesu: Abstrakcjami procesów są podprogramy. Pozwalają wskazać (przez ich wywołanie), że pewna czynność ma być wykonana, bez wskazywania jak ma być wykonana.

Szczegóły znajdują się w treści podprogramu, której wywołujący nie musi znać.

2. Abstrakcja danych: Zamknięta całość obejmująca reprezentację pewnego typu danych wraz z podprogramami, umożliwiającymi działanie na tych danych.

1.9.1.21. Definicja. Abstrakcyjny typ danych, jest to konstrukcja języka programowania, w której definiujemy typ danych oraz operacje na nim w taki sposób, że inne byty w programie nie mogą manipulować tymi danymi inaczej niż za pomocą zdefiniowanych przez nas operacji. Istotą rzeczy jest tu oddzielenie części „prywatnej” typu (czyli szczegółów reprezentacji danych i implementacji poszczególnych operacji) od części „publicznej” (tego, co można wykorzystywać w innych miejscach programu). Rozdzielenie składników abstrakcyjnego typu danych na część prywatną i publiczną jest możliwe za pomocą zawartych w języku programowania mechanizmów sterowania dostępem.

Piśmiennictwo: Wikipedia W.2.32.

1.9.2.ZASTOSOWANIA KOMPUTERÓW

Około roku 1950 pojawiła się opinia kilku specjalistów z USA, w zakresie technik obliczeniowych, że na całym świecie potrzebnych będzie łącznie kilkadziesiąt komputerów.

Pamiętać przy tym trzeba, iż współczesny tablet lub notebook posiada moc obliczeniową przekraczającą znacznie, moc obliczeniową komputerów EDSAC i EDVAC. Nie licząc specjalizowanych komputerów, przeznaczonych do bardzo różnorodnych celów, jak np.

smartphony albo sterowniki urządzeń AGD, czy też sterowniki obrabiarek, park wykorzystywanych komputerów na pewno przekracza miliard systemów. Oczywiście, zastosowania komputerów dotyczą bardzo wielu dziedzin życia współczesnej ludzkości, takich jak: nauka, przemysł, medycyna, edukacja, administracja publiczna, bankowość i ubezpieczenia, kryminalistyka, twórczość artystyczna i rozrywka, itd.

1.9.2.10. Wyjaśnienie. Zastosowania w nauce, to przede wszystkim: badania naukowe (np.

symulacja zjawisk i procesów prowadzona na modelach informatycznych) oraz rejestracja i analiza wyników badań doświadczalnych.

1.9.2.20. Wyjaśnienie. Zastosowania w przemyśle, to - sterowanie procesami technologicznymi, projektowanie produktów i projektowanie technologii, prowadzenie dokumentacji technicznej oraz technologicznej produktów i procesów, zastosowanie systemów informatycznych takich jak: ERP, CRM, zarządzanie przedsięwzięciami, prowadzenie ewidencji, rachunkowości, itp.

1.9.2.30. Wyjaśnienie. Zastosowanie w medycynie, to – prowadzenie dokumentacji medycznej wraz z możliwością lokalnego i zdalnego posługiwania się tą dokumentacją, sterowanie aparaturą, graficzne zobrazowanie wyników badania (np. rezonansu magnetycznego), projektowanie protez, wykorzystanie skanerów 3D i drukarek 3D do wypełniania ubytków kostnych, itd.

1.9.2.40. Wyjaśnienie. Zastosowania w edukacji, to – wykorzystanie techniki slajdów w procesie dydaktycznym, nauczanie na odległość, udostępnianie na odległość literatury fachowej, itd.

1.9.2.50. Wyjaśnienie. Zastosowania w administracji publicznej, czyli jest to – prowadzenie różnorodnych ewidencji, masowa korespondencja np. związana z pobieraniem danin publicznych, zdalne korzystanie z usług i uzyskiwanie decyzji administracyjnych, itd.

1.9.2.60. Wyjaśnienie. Zastosowania w bankowości i ubezpieczeniach, to – prowadzenie ewidencji, zdalna obsługa klientów, prowadzenie masowej korespondencji, itd.

1.9.2.70. Wyjaśnienie. Zastosowania w kryminalistyce, to – prowadzenie bazy danych (np.

odcisków linii papilarnych), badanie i porównanie materiałów dowodowych, obróbka zdjęć, dokumentowanie zdarzeń, tworzenie portretów pamięciowych, itd.

1.9.2.80. Wyjaśnienie. Zastosowania w twórczości artystycznej, to – grafika komputerowa i druk 3D, obróbka zdjęć cyfrowych, projektowanie wnętrz i obiektów (np. architektonicznych), komponowanie muzyki, pisanie książek i innych utworów.

1.9.2.90. Wyjaśnienie. Zastosowania w rozrywce, to – zdjęcia cyfrowe, pisanie tekstów i rysowanie, gry komputerowe, wideo-łączność, Internet, itd.

Piśmiennictwo: Wikipedia W.2.33.

Część 2.

Outline

Powiązane dokumenty