RSS
 

Archiwum dla kategorii ‘VII. Oprogramowanie i programowanie komputerów’

Licencjonowanie oprogramowania

18 paź

Licencja jest to umowa na korzystanie z aplikacji komputerowej, zawierana pomiędzy podmiotem mającym majątkowe prawa autorskie do aplikacji, a jej użytkownikiem.

Rodzaje licencji:
- komercyjna – wraz z zakupem użytkownik nabywa prawo do użytkowania programu, ale najczęściej nie może go samodzielnie modyfikować,
- shareware – oferowany program jest rozpowszechniany za darmo z pewnym ograniczenie, najczęściej czasowym lub funkcjonalnym,
- freeware – programy oferowane są za darmo, ale użytkownik nie może ich modyfikować,
- open source – oprogramowanie wolne, możliwość nie tylko korzystania z oprogramowania, ale i jego modyfikacji.

Rodzaje licencji wolnego oprogramowania:
- GNU GPL (General Public License), licencja sformułowana przez Free Software Foundation, nakładająca na autora oprogramowania obowiązek publikacji kodu źródłowego,
- GNU LGPL (Lesser General Public License), pozwalająca na łączenie licencji GPL z innego rodzaju, bardziej liberalnymi licencjami, najczęściej BSD lub X11,
- X11 – jedna z najbardziej liberalnych licencji typu open source, pozwala na nieograniczone prawo do użytkowania, modyfikowania oraz darmowego lub odpłatnego rozpowszechnienia zmienionego programu, przy zachowaniu warunków licencyjnych oraz informacji o autorze,
- BSD (Berkeley Software Distribution), bardzo liberalna licencja pozwalająca m.in. na modyfikację i rozprowadzenie oprogramowania bez konieczności udostępniania kodu źródłowego,
- Public Domain, dotyczy zarówno programów, jak i innych form autorskich, do których autorzy zrzekli się wszelkich praw,
- CeCILL (CEA CNRS INRIA Logiciel Libre), której celem jest utworzenie licencji zgodnej z GNU GPL, a zarazem dostosowanej do obowiązującego francuskiego oraz międzynarodowego prawa,
- MPL (Mozilla Public License), utworzona przez firmę Mozilla Foundation na potrzeby oprogramowania dostarczającego przez tego producenta,
- licencja artystyczna (ang. Artistic License), używana głównie w ramach języka programowania Perl, m. in. nakłada na osoby modyfikujące kod źródłowy obowiązek udostępnienia go autorowi lub zmianę nazwy modyfikowanego programu, aby nie wchodził w konflikt z poprzednimi wersjami.

Jedną z najczęściej spotykanych licencji wolnego oprogramowania jest GNU GPL. Pozwala na:
- używanie programu w dowolnym celu,
analizowanie działania programu oraz modyfikację kodu źródłowego w celu dostosowania do własnych potrzeb,
- nieograniczone rozpowszechnianie oryginalnej wersji aplikacji,
- publiczne udostępnianie własnych modyfikacji programu.

Różnica między GNU GPL a LGPL to wykorzystanie bibliotek utworzonych w ramach obydwu licencji. W przypadku GPL utworzone biblioteki można wykorzystać jedynie w ramach wolnego oprogramowania, podczas gdy LGPL dopuszcza wykorzystanie bibliotek również w ramach programów prawnie zastrzeżonych.

Licencja X11 jest jedną z najbardziej liberalnych licencji wolnego oprogramowania. Pozwala na nieodpłatne prawa dla każdego użytkownika, dotyczące zarówno samej aplikacji, jak i plików dokumentacji. Kopie oprogramowania można bez ograniczeń:
- wykorzystywać w niemal dowolnym celu, zarówno komercyjnym, jak i niekomercyjnym,
- kopiować, również na użytek innych osób,
- modyfikować i publikować swoje zmiany,
- scalać z innymi programami,
- publikować i rozpowszechniać poprzez udostępnienie pozostałym osobom,
- wykorzystywać w innych aplikacjach, tworząc sublicencje,
- sprzedawać.

FLOSS (Free Libre/Open Source Software) – łączenie cech wolnego oraz otwartego oprogramowania w ramach urzędowych dokumentów i oficjalnych analiz. Najczęściej występującą licencją w oprogramowaniu FLOSS jest GNU GPL. Najbardziej znane oprogramowanie zgodne z charakterem FLOSS to system operacyjny GNU/Linux.

 

Oprogramowanie użytkowe

17 paź

Oprogramowanie użytkowe to rodzaj oprogramowania wspomagającego pracę użytkowników aplikacji.

Oprogramowanie użytkowe można podzielić na następujące kategorie:
- oprogramowanie biurowe,
- oprogramowanie wspomagające zarządzanie przedsiębiorstwem,
- oprogramowanie wspomagające prace inżynierskie,
- oprogramowanie edukacyjne,
- oprogramowanie rozrywkowe,
- programy specjalistyczne.

Oprogramowanie biurowe (ang. office automation software) – usprawnia podstawowe czynności biurowe. Istnieją następujące kategorie oprogramowania biurowego:
- edytory tekstu,
- arkusze kalkulacyjne,
- bazy danych,

- programy do tworzenia prezentacji,
- programy do tworzenia notatek.

Oprogramowanie wspomagające zarządzanie przedsiębiorstwem – grupa skupiająca aplikacje używane w większości organizacji biurowych. Do tej grupy zalicza się oprogramowanie:
- do zarządzania procesem produkcji (MRP, MRPII, ERP),
- wspomagające zarządzanie relacjami z klientem (CRM),
- do zarządzania łańcuchem dostaw (SCM),
- do elektronicznego obiegu dokumentów (WFM),
- do analityki biznesowej (szeroko pojęte systemy klasy Business Intelligence, w tym hurtownie danych).

Oprogramowanie wspomagające prace inżynierskie – dostarcza pełnej funkcjonalności do wykonywania skomplikowanych obliczeń inżynierskich i prac projektowych. W tej grupie znajdują się następujące kategorie:
- CAD (Computer Aided Design) – wspomagające prace projektowe,
- CAE (Computer Aided Engineering) – wspomagające prace konstrukcyjne,
- CAM (Computer Aided Manufacturing) – wspomagające prace produkcyjne.

Oprogramowanie edukacyjne – dostarcza programy wspomagające proces uczenia się. Ogólna klasyfikacja oprogramowania edukacyjnego obejmuje następujące programy:
- nauczające (ang. tutorials), dające użytkownikowi możliwość samodzielnej nauki kursu oraz sprawdzenia swojej wiedzy, zwykle w formie quizów,
- symulacyjne (ang. simulation), dostarczające użytkownikowi możliwość wprowadzenia warunków wejściowych w celu badania występowania określonego zjawiska,
- demonstrujące (ang. demonstration), których celem jest zaprezentowanie w przystępny sposób zwykle skomplikowanych procesów zachodzących w danej dziedzinie nauki.

Oprogramowanie rozrywkowe (ang. Entertainment software) – największa gałąź produkcji oprogramowania. Do tej grupy zaliczane są:
- gry komputerowe,
- oprogramowania do odtwarzania muzyki oraz filmów,
- programy do prowadzenia rozmów w ramach sieci Internet.

Oprogramowanie specjalistyczne – grupa skupiająca aplikacje, które mają różnorodne zastosowania. Obejmuje następujące kategorie programów:
- do zarządzania projektami,
- do składu tekstu (ang. deskop publishing – DTP),
- do celów administracyjnych,
- mapy geograficzne,
- do aplikacji medycznych,
- do zaawansowanej obróbki grafiki, filmów oraz muzyki,
- pisane do obsługi specyficznego procesu biznesowego,
- inne, bardzo liczne specjalistyczne i niszowe pakiety oprogramowania.

 

Programowanie współbieżne. Systemy kontroli wersji

16 paź

Współczesne oprogramowanie komputerowe nie ogranicza się do jednej czynności w danym czasie,, lecz pozwala na jednoczesne wykonywanie wielu zadań. Te zadania zwane są procesami. Każdy proces może zawierać w sobie wiele wątków (ang. threads). Wątki są najmniejszą, elementarną częścią programu, odpowiedzialną zwykle za jedną funkcję.

Programowanie współbieżne (ang. concurrent programming) to paradygmat programowania, którego celem jest wykorzystanie w ramach jednej aplikacji wielu procesów lub wątków do wykonywania działań na współdzielonych danych.

Programowanie współbieżne pozwala na lepsze wykorzystanie zasobów systemu komputerowego i w rezultacie przyspieszenie działania utworzonego programu. Prowadzi ono jednak do licznych problemów związanych z zarządzaniem współdzielonymi danymi. W związku z tym ważna jest synchronizacja prazy poszczególnych wątków, co realizuje się poprzez takie mechanizmy, jak semafory i monitory. Celem tych dwóch mechanizmów jest umożliwienie komunikacji międzyprocesowej w celu przekazywania informacji na temat obecnie używanych i zablokowanych zasobów.

Systemy kontroli wersji
Systemy kontroli wersji
to narzędzie używane do śledzenia zmian w kodzie źródłowym, pozwala na przypisywanie kolejnego numeru oznaczającego wersję tworzonej aplikacji do każdej modyfikacji kodu źródłowego.

Podstawowa klasyfikacja systemów kontroli wersji obejmuje:
- systemy scentralizowane,
- systemy rozproszone.

Systemy scentralizowane działają z wykorzystaniem architektury klient-serwer, w której użytkownicy pracują nad jednym wspólnym repozytorium zawierającym kod źródłowy. Systemy rozproszone działają na zasadzie węzłów równorzędnych (ang. peer-to-peer). Pozwala to na napisanie niezależnych kodów źródłowych, fizycznie zlokalizowanych u użytkownika, a następnie ich synchronizację.

Systemy kontroli wersji można również podzielić na śledzące zmiany zawartości plików przez opis ich zmian oraz oparte na zestawach zmian. W pierwszym przypadku zmiana nazwy pliku może oznaczać śledzenie wersji pliku od początku. W drugim przypadku mechanizm zestawu zmian jest używany do oznaczania plików, nawet jeżeli zmieniają swoją lokalizację oraz nazwę.

 

Programowanie komponentowe i sterowane zdarzeniami

15 paź

Programowanie komponentowe pozwala na używanie predefiniowanych usług, które zapewniają realizację określonej funkcjonalności systemu informatycznego.

Komponent jest podstawową jednostką używaną do budowy oprogramowania, zawierającą określoną przez twórcę komponentu funkcjonalność.

Komponent ma jasno sprecyzowane interfejsy, które pozwalają na komunikację pomiędzy komponentami. Wszystkie wymagane przez komponent zależności są zdefiniowane tak, aby umożliwić osobom trzecim, niebędącym jego twórcami, wdrożenie komponentu. Zwykle komponent wykorzystywany jest przez wiele osób do tworzenia niezależnych od siebie aplikacji.

Programowanie sterowane zdarzeniami (ang. event-driven programming) to metoda programowania której celem jest pisanie oprogramowania działającego w oparciu o zdarzenia generowane najczęściej przez użytkownika.

Zdarzeniami jest obiekt opisujący konkretną zmianę źródła zdarzenia. Źródłem zdarzenia jest zawsze obiekt generujący zdarzenia.

 

Środowisko Microsoft .NET

14 paź

Środowisko programistyczne Microsoft .NET powstało w celu usprawnienia procesu tworzenia aplikacji działających w rozproszonym otoczeniu. Technologia .NET ma następujące cechy:
- przetwarzanie rozproszone
– tworzenie aplikacji klient/serwer, opartej na standardach internetowych,
- programowanie komponentowe – dostarczanie uproszonego modelu tworzenia oraz używania komponentów,
- usługi typu Enterprise (ang. enterprise services) – możliwość rozwijania aplikacji bez konieczności pisania kodu aplikacji biznesowych do zarządzania transakcjami i bezpieczeństwem,
- paradygmat dotyczący zmian webowych – możliwość dostosowania tworzonych usług i aplikacji do wymagań związanych ze zmianami i udoskonaleniami technologii internetowych,
- narzędzie pozwalające na skalowalność, dostępność oraz zarządzanie tworzonym oprogramowaniem, a także współpracę z innymi aplikacjami.

Środowisko Microsoft Visual Studio .NET pozwala na tworzenie aplikacji, które są uruchamiane na systemach operacyjnych większości popularnych urządzeń. Centralnym punktem są usługi .NET, z których najważniejsze to:
- model programowania do tworzenia stron HTML – ASP.NET, którego celem jest dostarczenie zintegrowanego systemu, pozwalającego na pisanie aplikacji webowych,
- podejście do udostępniania funkcjonalności aplikacjom klienckim – XML Web Services, umożliwiające uruchomienie poszczególnych usług na dowolnym systemie operacyjnym.

Całość aplikacji powstaje z wykorzystaniem .NET Framework, czyli środowiska do uruchamiania aplikacji (ang. run-time environment), które ma mechanizmy automatycznego zarządzania pamięcią oraz łatwy dostęp do wszystkich usług systemowych.

Poszczególne składniki .NET Framework to:
- usługi webowe, dostarczające funkcjonalność środowiska rozproszonego dla tworzonych aplikacji,
- formatki webowe oraz systemu Windows, które pozwalają na wizualizację projektowanych aplikacji,
- dane oraz klasy XML, dostarczające jednolity sposób opisu komponentów tworzonych aplikacji,
- podstawowe klasy .NET Framework, które umożliwiają działanie utworzonej aplikacji w różnych środowiskach,
- CLR, czyli środowisko uruchomieniowe wspólnego języka, będące centralnym punktem . NET Framework, pozwalającym na pracę programów na wielu różnych platformach systemów operacyjnych.

 

Rodzaje środowisk. Środowisko J2EE i WAS

13 paź

Współczesne programy są tworzone z wykorzystaniem zintegrowanych środowisk programistycznych. Środowisko to stanowi logicznie spójny zestaw programów służących do tworzenia i utrzymywania aplikacji. W skład takiego środowiska zwykle wchodzą: edytor kodu źródłowego, translator, program śledzący wykonywanie programu (ang. debugger), repozytorium gotowych komponentów oraz system kontroli wersji. Każde środowisko umożliwia wykorzystanie różnych paradygmatów programowania.

Środowisko Sun Microsystems J2EE oraz IBM Websphere Application Server
Technologia J2EE (Sun Microsystems Java 2 Platform, Enterprice Edition) definiuje standard tworzenia aplikacji oparty na architekturze wielowarstwowej. Oprogramowanie jest pisane w języku Java, co pozwala na uruchomienie napisanych programów teoretycznie na dowolnej platformie sprzętowej, systemie operacyjnym oraz serwerze aplikacji. Architektura J2EE pozwala na izolowanie logiki aplikacji od środowiska wykonania.

Technologia JSEE pozwala na stosowanie następujących rozwiązań:
- aplety (ang. applets) – są to małe programy osadzone zwykle na stronach WWW, wykonane po stronie klienta,
- serwlety (ang. servlets) – podobnie jak aplety, są to programy osadzone na stronach internetowych, ale wykonywane po stronie serwera,
- JavaBeans – są to niezależne moduły wywołane oraz uruchamiane w programach, opracowane przez firmę Sun Microsystems, działające zwykle po stronie klienta,
- Enterprise JavaBeans – (EJB) – rozszerza środowisko JavaBeans o komunikację w środowisku rozproszonym oraz programowanie transakcyjne, zwykle stosowane po stronie serwera,
- Java Server Pages (JSP) – pozwala na tworzenie dynamicznych dokumentów WWW w formatach HTML, XHTML, DHTML oraz XML poprzez umieszczenie programu napisanego w języku Java w ramach strony WWW,
- Java 2 Software Development Kit (J2SDK) – zawiera podstawowe narzędzia do kompilacji i uruchamiania programów napisanych w języku Java.

Platforma Micro Edition (J2ME) jest przeznaczona dla urządzeń kieszonkowych. Platforma Standard Edition (J2SE) została zaprojektowana z myślą o implementacji rozwiązań dla użytkowników domowych oraz niewielkich aplikacji dla serwerów grup roboczych. Platforma Enterprice Edition (J2EE) pozwala na tworzenie aplikacji serwerowych dla systemów o dużej wydajności, tj. serwery grup roboczych czy też serwery high-end.

Na technologii J2EE opiera się IBM Websphere Application Server (WAS).

Serwer aplikacji to zestaw oprogramowania wspierający programistę podczas tworzenia aplikacji umożliwiając oddzielenie logiki biznesowej od usług dostarczanych przez dostawcę platformy.

Technologia IBM WAS wykorzystuje otwarte standardy XML oraz Web Services, co pozwala na współpracę z większością serwerów sieciowych. WAS dostarcza bezpieczną, skalowaną oraz elastyczną infrastrukturę dla architektury zorientowanej na usługi. WAS pozwala również na implementację rozwiązań dla systemów operacyjnych.

 

Metody realizacji języków programowania

12 paź

Program komputerowy może występować w dwóch postaciach: źródłowej i wykonywalnej (wynikowej). Programista tworzy, analizuje i rozbudowuje postać źródłową, która nie może być wykonana bezpośrednio przez system komputerowy. Aby wykonać program w postaci źródłowej, należy albo przetłumaczyć ją za pomocą kompilatora na postać wykonywalną (kod maszynowy), albo do jej wykonania posłużyć się interpreterem.

Kompilator to program, który tłumaczy kod napisany w języku wysokiego poziomu na równoważny kod w języku niższego poziomu.

Interpreter to program, który w przeciwieństwie do kompilatora nie generuje kodu wynikowego, lecz na bieżąco wykonuje kolejne instrukcje zawarte w kodzie źródłowym. Kolejność instrukcji wyznaczona jest przez przebieg wykonywania kodu źródłowego, a miejsce pierwszej instrukcji definiuje język źródłowy. Wykonanie instrukcji oznacza wywołanie wewnętrznej funkcji interpretera.

Model pracy prostego interpretera:
- pobierz kolejną instrukcję z kodu źródłowego,
- analizuj pobraną instrukcję,
- jeżeli instrukcja jest niepoprawna, przerwij interpretację, w przeciwnym wypadku wykonaj instrukcję,
- jeżeli istnieje kolejna instrukcja, przejdź do kroku 1, w przeciwnym wypadku zakończ interpretację.

ANALIZA PORÓWNAWCZA INTERPRETERÓW I KOMPILATORÓW
Analiza porównawcza interpreterów i kompilatorów

 
 

Paradygmaty programowania

11 paź

Paradygmat programowania to zespół ogólnych koncepcji, mechanizmów i konstrukcji programistycznych, determinujących styl tworzenia oprogramowania.

Paradygmaty podstawowe:
- imperatywne (sekwencyjne i strukturalne),
- obiektowe,
- deklaratywne (funkcyjne i logiczne).

Język programowania może wspierać kilka paradygmatów. Wsparcie przez język pewnego paradygmatu oznacza dostarczenie mechanizmów, które ułatwiają programowanie w tym paradygmacie.

Programowanie sekwencyjne – program nie miał struktury i składał się z sekwencji instrukcji wykonywanych zwykle w kolejności zapisu. Kolejność ta mogła być zmieniana poprzez instrukcje skoku warunkowego i bezwarunkowego, a także pętli. Wykonywanie kolejnych instrukcji prowadziło do modyfikacji stanu zmiennych, aż do uzyskania końcowego rezultatu.

Paradygmat strukturalny – usprawnienie technik programistycznych spowodowało ewolucję programowania sekwencyjnego, programowanie sekwencyjne i strukturalne to łącznie paradygmat imperatywny (ang. imperative programming). Usunięcie instrukcji GOTO, sterowanie w oparciu o kombinację konstrukcji:
- sekwencji – instrukcje wykonywane w kolejności zapisania,
- selekcji (wyboru) – wykonanie bloku instrukcji uzależnione od prawdziwości wyrażenia warunkowego,
- iteracji – wielokrotne wykonywanie bloku instrukcji, tak długo jak prawdziwy jest warunek iteracji.

Paradygmat strukturalny wykorzystuje dekompozycję funkcjonalną jako technikę radzenia sobie ze złożonością, czyli kolejne podziały programu, zgodnie ze strategią dziel i zwyciężaj (ang. divide and conquer), na coraz mniejsze, łatwiejsze do ogarnięcia i zarządzania modularne podprogramy.

Programowanie modularne – oddzielenie interfejsu od implementacji, zwane ukrywaniem informacji (ang. information hiding), program składa się z wyizolowanych podprogramów, o ściśle określonych interfejsach, podprogramy są luźno powiązane (ang. low coupling), każdy może być zrozumiały i modyfikowany bez analizowania całości, każda zmiana w implementacji zwykle jest lokalna i nie przenosi się na inne moduły.

Większość kompilatorów języków strukturalnych była stosunkowo prosta w implementacji oraz charakteryzowała się niskimi potrzebami sprzętowymi. Miało to istotny wpływ na popularyzację języków strukturalnych w dobie pierwszych komputerów osobistych.

Programowanie zorientowane obiegowo (OOP – Object-Oriented Programming) – język Simula, język Java w biznesie i ośrodkach akademickich. Odwzorowanie bytów występujących w danej dziedzinie przedmiotowej na kolekcję obiektów tworzących program komputerowy. Obiekt jest odpowiedzialny za pewien fragment rzeczywistości. Obiekt wykorzystuje swój stan (wartości atrybutów, funkcje operujące na danych) do realizacji powierzonych czynności. Może skorzystać z usług oferowanych przez inny obiekt.

Paradygmat deklaratywny – ukrywanie przed programistą szczegółów systemu komputerowego, skoncentrowany jest na wskazaniu tego co, należy obliczyć, oraz własności rozwiązania.

Paradygmat funkcjonalny – podstawową konstrukcją budowy programów są funkcje matematyczne, funkcje złożone dekomponuje się na funkcje prostsze i przedstawia się ich złożenie, dekompozycja kończy się w momencie uzyskania funkcji na danych wejściowych programu. Nie występuje pojęcie zmienne ani przypisania. Języki funkcyjne oferują funkcje, których argumentem może być inna funkcja oraz które jako wynik mogą zwrócić inną funkcję. Nie występują instrukcje pętli, sposobem zapisu jest rekurencja.

Polimorfizm parametryczny – uogólnienie ze względu na typ danych zapisu algorytmu, wykorzystywany jest, gdy implementowany algorytm nie zależy od typu danych, na których operuje.

Język logiki – program składa się ze stwierdzeń opisujących daną dziedzinę przedmiotową, zapisanych w postaci klauzul Horna: fakty opisują relacje między obiektami, reguły sposób, w jakim można wyprowadzić nowe relacje na podstawie istniejących, zapytania umożliwiają sprawdzenie, czy między obiektami zachodzi pewna relacja. Zbadanie spełnialności zapytania, czyli znalezienia obiektów czyniących to zapytanie prawdziwym lub stwierdzeniu, że zapytanie jest fałszywe.

Paradygmaty uzupełniające:
- programowanie współbieżne
(ang. concurrent programming) – paradygmat zorientowany na zespół komunikujących się asynchronicznie procesów/wątków,
- programowanie sterowane zdarzeniami (ang. event-driven programming) – paradygmat, w którym przepływ sterowania jest kierowany zdarzeniami, tj. kliknięcie myszką, naciśnięcie przycisku, odczytanie zdalnego pliku, itp., programowanie jest zorientowane wokół obsługi generowanych zdarzeń,
- programowanie komponentowe (ang. component-oriented programming) – paradygmat zorientowany ma tworzenie oprogramowania poprzez składanie gotowych komponentów, komponent to moduł wielokrotnego użytku o charakterze czarnej skrzynki, oferujący logiczne spójne usługi w wąskiej specjalizacji.

Paradygmaty uzupełniające mogą być łączone z większością paradygmatów podstawowych, jednak najczęściej występuje łączenie ich z paradygmatem obiektowym.

 
 

Generacje języków programowania

10 paź

Dialog między programistą a komputerem jest możliwy dzięki zastosowaniu języków programowania. Język programowania umożliwia precyzyjne wyrażenie, w postaci kodu źródłowego, zadania przeznaczonego do wykonania przez system komputerowy.

Język programowania to język o składni i semantyce zrozumiałej dla pewnego systemu komputerowego.

Składnia to zbiór słów oraz reguł, według których słowa mogą być łączone, natomiast semantyka to znaczenie słów oraz ich połączeń, poprawnych składniowo.

Programowania sprzętowe, nazywane także programowaniem zewnętrznym, polegało na ręcznym ustawieniu setek przełączników oraz przekładaniu układów elektrycznych. Metoda ta była kosztowna, powolna i mało elastyczna.

Języki maszynowe, traktowane jako pierwsza generacja języków programowania (1GL) – instrukcje w języku maszynowym mają postać ciągu zer i jedynek, trudne do zapamiętania i analizowania, błędy niełatwe do zlokalizowania, dostępne zestawy instrukcji maszynowych różnią się w zależności od rodzaju procesora.

Języki symboliczne, zwane asemblerami, zaliczane do języków drugiej generacji (2GL) – dla każdej instrukcji maszynowej wprowadzono odpowiadający jej, łatwy do zapamiętania mnemonik, czyli kilkuliterowy skrót, oznaczający konkretną czynność procesora, program zapisany w języku symbolicznym musi być przetłumaczony na kod maszynowy przez program – asembler.

Ukrycie przed programistą szczegółów architektury sprzętowej, a tym samym przeniesienie programowania na wyższy poziom abstrakcji, zaowocowało powstaniem języków trzeciej generacji (3GL). Języki wysokiego poziomu (HLLs – ang. high level languages) umożliwiają programiście skoncentrowanie się na rozwiązywanym problemie. Pojedynczej instrukcji zapisanej w HLL opowiada wiele instrukcji maszynowych. W celu przetłumaczenia programu napisanego w HLL na kod maszynowy wykorzystuje się kompilatory.

Języki czwartej generacji (4GL) – specjalizacja w ramach ściśle określonego obszaru zastosowań. Specjalizacja polega na dostarczeniu gotowych do wykorzystania komponentów, które zwalniają programistę z potrzeb implementowania typowych fragmentów aplikacji. Kategorie języków 4GL:
- generatory aplikacji,
- generatory raportów oraz formularzy,
- języki powstałe na wewnętrzne potrzeby aplikacji.
Udogodnieniem języków 4GL jest graficzny interfejs dialogu z użytkownikiem.

 
 

Oprogramowanie systemowe

09 paź

Oprogramowanie systemowe to zespół programów sterujących działaniem jednostki centralnej komputera i urządzeń zewnętrznych, organizujących logiczną przestrzeń adresową komputera i system plików, oraz tworzących warunki do opracowywania i wykonywania innych programów.

Do oprogramowania systemowego zaliczane są:
- systemy operacyjne,
- systemowe oprogramowania pomocnicze,
- języki programowania wraz ze środowiskami programistycznymi.

System operacyjny (ang. operating system) to program odpowiedzialny za koordynację pracy komputera oraz zarządzanie jego zasobami sprzętowymi i oprogramowaniem.

Elementy systemu operacyjnego:
- jądro systemu, które rezyduje w pamięci operacyjnej komputera,
- interpretator poleceń, obecnie będący najczęściej graficznym interfejsem użytkownika,
- system plików, definiujący sposób zapisu struktur danych na nośniku.

Najważniejsze funkcje realizowane przez system operacyjny to:
- zapewnienie kontroli oraz sterowanie działaniem komponentów sprzętowych komputera,
- wykrywanie błędów pojawiających się podczas działania komputera,
- bezpieczne wykorzystywanie zasobów systemowych,
- umożliwienie komunikacji pomiędzy użytkownikiem a komputerem.

Do najważniejszych kryteriów podziału systemów operacyjnych zalicza się rozróżnienie ze względu na przeznaczenie i sposób komunikacji.

RODZAJE SYSTEMÓW OPERACYJNYCH
Rodzaje systemów operacyjnych

Współczesne systemy operacyjne działają na zasadzie wielozadaniowości. Również większość systemów operacyjnych pozwala na wielodostępność. Umożliwia to wieli użytkownikom pracę na jednym komputerze.

Jeśli za kryterium podziału systemów operacyjnych przyjąć sposób komunikowania się użytkownika z systemem operacyjnym, to można wyróżnić systemy:
- graficzne, które wykorzystują graficzny interfejs użytkownika, składający się z okien i symboli ikon, a także odpowiednich urządzeń wskazujących, tj. mysz komputerowa, gładzik czy ekran dotykowy, w celu komunikacji pomiędzy użytkownikiem a systemem operacyjnym,
- tekstowe, które realizują konwersację pomiędzy użytkownikiem a komputerem za pomocą instrukcji wykonywanych z linii poleceń.

Systemowe oprogramowanie pomocnicze to aplikacje używane do diagnozowania i konfigurowania komputera, zarządzania pamięcią, systemem plików oraz wspomagające bezpieczną pracę systemu komputerowego.

W kategorii oprogramowania pomocniczego wyróżnia się:
- programy antywirusowe, zabezpieczające zasoby przed działaniem wirusów komputerowych,
- ściany ogniowe, chroniące zasoby komputera przed atakami hakerów z zewnątrz,
- menedżery plików, ułatwiające pracę z systemem plików, wspierając zadanie, tj. przeglądanie, kopiowanie, przenoszenie i usuwanie plików,
- programy do archiwizacji i odtwarzania systemu, umożliwiające tworzenie kopii zapasowych zasobów systemu,
- aplikacje do zarządzania pamięcią masową, które pozwala na korygowanie błędów w pikach, oczyszczanie dysku ze zbędnych plików i scalanie nieciągłych plików,
- programy do zdalnego zarządzania systemem, tj. terminale i zdalne pulpity.