Programowanie. Oprogramowanie Pojęcia wstępne Programem - sekwencja rozkazów, które instruują komputer, jakie operacje i w jakiej kolejności powinien wykonać, by rozwiązać określony problem. Programowanie - czynność polegająca na konstruowaniu (pisaniu) programu nazywamy. Programista - osoba wykonująca tę czynność. Oprogramowanie - zbiór róŝnych programów wykorzystywanych w systemie, mających zastosowanie do róŝnych celów. Oprogramowanie 2 Pojęcia wstępne (2) Języki programowania sztuczne (nie etniczne) jednoznaczne języki zaprojektowane specjalne do pisania programów. Język wewnętrzny jedyny język zrozumiały dla procesora. Program wykonywalny (binarny) program napisany w języku wewnętrznym. Program źródłowy program napisany w języku komputerowym niezrozumiałym dla procesora, wymagający przetłumaczenia. Oprogramowanie 3 Pojęcia wstępne (3) Translacja (w formie kompilacji lub interpretacji) tłumaczenie programu napisanego w języku źródłowym na język wewnętrzny. Oprogramowanie 4 Podział funkcjonalny oprogramowania WyobraŜenie uŝytkownika nt. pracy na komputerze oprogramowanie systemowe oprogramowanie uŝytkowe oprogramowanie narzędziowe (usługowe) tutaj zaliczymy je do oprogramowania systemowego. Oprogramowanie 5 Oprogramowanie 6 1
Rzeczywistość Oprogramowanie systemowe zbiór programów zaprojektowanych, by wspomagać całość systemu komputerowego, przez koordynację działania poszczególnych składników sprzętu i oprogramowania uŝytkowego. system operacyjny oprogramowanie narzędziowe i pomocnicze translatory języków programowania Oprogramowanie 7 Oprogramowanie 8 System operacyjny (1) to program zarządzający wszystkimi zasobami systemu komputerowego: zarówno sprzętowymi, jak i programowymi. to zorganizowany zbiór programów pełniących rolę pośredniczącą między sprzętem a uŝytkownikami, dostarczając uŝytkownikom zestawu środków ułatwiających projektowanie, kodowanie, uruchamianie i eksploatację programów, a w tym samym czasie sterują odpowiednim przydziałem zasobów, w celu zapewnienia System operacyjny (2) UŜytkownicy niekiedy stykają się wprost z systemem operacyjnym, zlecając mu wykonanie pewnych funkcji, jak np. kopiowanie plików, zmiany nazw plików, itp., częściej jednak wykorzystują programy uŝytkowe, które z kolei korzystają z moŝliwości systemu operacyjnego, który wykonuje za nich wiele funkcji związanych z bezpośrednim odwoływaniem do sprzętu. efektywnego działania całego systemu. Oprogramowanie 9 Oprogramowanie 10 Schemat korzystania z systemu komputerowego Oprogramowanie 11 System operacyjny (3) Pojęcie systemu operacyjnego podlega ciągłej ewolucji. Poszczególni producenci mają ambicje włączania w ich skład coraz to nowych części, realizujących coraz więcej funkcji. NajwaŜniejszą częścią kaŝdego systemu operacyjnego jest tzw. jądro. Jest to część systemu operacyjnego, która pozostaje w pamięci operacyjnej przez cały czas pracy komputera. Uruchomienie w komputerze Ŝadnego programu nie jest moŝliwe bez obecności jądra w pamięci Oprogramowanie operacyjnej. 12 2
Podstawowe funkcje systemów operacyjnych 1. zarządzanie procesorem, 2. zarządzanie pamięcią operacyjną, 3. zarządzanie urządzeniami zewnętrznymi, 4. zarządzanie informacjami (programami i danymi), 5. interpretacja poleceń uŝytkownika. Oprogramowanie 13 Systemy operacyjne wielodostępne i sieciowe Systemy operacyjne wielodostępne umoŝliwiają jednoczesną pracę wielu uŝytkowników na jednym komputerze (np. Unix, MVS). Systemy operacyjne sieciowe umoŝliwiają współpracę wielu połączonych ze sobą komputerów (np. Windows NT, Windows 2000, XP, Novel Netware). ZłoŜoność takich systemów operacyjnych jest zwiększona ze względu na konieczność synchronizacji pracy wielu uŝytkowników, przy jednoczesnym zapewnieniu odpowiedniej wydajności systemu Oprogramowanie 14 komputerowego jako całości. Oprogramowanie narzędziowe (usługowe) i pomocnicze Ułatwiają uŝytkownikom zarządzanie systemem, a nawet rozszerzają moŝliwości systemu operacyjnego. O ile istnienie systemu operacyjnego jest niezbędne do działania komputera, to programy narzędziowe i pomocnicze ułatwiają i upraszczają posługiwanie się nim. Jest to zbiór programów bardzo zróŝnicowany pod względem wypełnianych przez nie funkcji szczegółowych: diagnostyczne, optymalizujące i wiele, wiele innych. Oprogramowanie 15 Translatory języków oprogramowania System operacyjny jest niezbędny do uruchomienia komputera, programy usługowe ułatwiają zarządzanie systemem, a translatory są potrzebne tylko wtedy, gdy chcemy tworzyć nowe oprogramowanie. Translatory stanowią programową część całości, która nosi nazwę systemu programowania, w którego skład wchodzi: język programowania, traktowany jako zbiór symboli i reguł syntaktycznych oraz semantycznych, właściwy translator, czyli program tłumaczący, często równieŝ inne elementy, takie jak edytor czy Oprogramowanie 16 teŝ program uruchomieniowy (ang. debugger). Oprogramowanie uŝytkowe automatyzacja prac biurowych (edytory tekstów, arkusze kalkulacyjne, programy prezentacyjne i graficzne, pakiety zintegrowane), wspomaganie zarządzania gospodarczego, ułatwianie prac inŝynierskich i badawczych, sterowanie procesami technologicznymi, oprogramowanie telekomunikacyjne, programy dydaktyczne i rozrywkowe i wiele innych Oprogramowanie 17 uzyskania - programy standardowe rozpowszechniane wśród uŝytkowników o podobnych potrzebach i posługujących się jednorodnym sprzętem. Olbrzymi rynek masowa sprzedaŝ. Cena jednostkowa takiego oprogramowania jest stosunkowo niska i stanowi niewielki odsetek kosztu produkcji pojedynczego egzemplarza. Oprogramowanie 18 3
uzyskania - programy standardowe (2) Oprogramowanie uniwersalne - spełniać musi większość, jeśli nie wszystkie, potrzeby potencjalnych uŝytkowników -uniwersalność ta powoduje, Ŝe poszczególni uŝytkownicy wykorzystują jedynie niewielką część dostępnych moŝliwości Koszty eksploatacji takiego oprogramowania są niewielkie: samodzielna instalacja, help przez telefon. Częste kolejne wersje, poszerzone i lepiej dostosowane do aktualnie rozpowszechnionego sprzętu, udostępniane dotychczasowym uŝytkownikom za niewielki odsetek aktualnej ceny. Oprogramowanie 19 uzyskania - programy niskoseryjne Specjalistyczne oprogramowanie, na które zapotrzebowanie jest stosunkowo niewielkie. Koszt jednostkowy takiego oprogramowania jest oczywiście o wiele wyŝszy, niŝ programów standardowych, ale istnieje moŝliwość lepszego dostosowania go do aktualnych potrzeb uŝytkowników. Instalacji takiego oprogramowania i dostrojenia całego systemu dokonuje zazwyczaj pracownik firmy sprzedającej oprogramowanie. Oprogramowanie 20 uzyskania - programy indywidualne Na indywidualne zamówienie. Oprogramowanie takie moŝna stworzyć własnymi siłami, moŝna teŝ wynająć odpowiednią firmę, która podejmie się takiego zadania. Coraz rzadsza sytuacja. Na indywidualne oprogramowanie decydują się organizacje, których działalność jest nietypowa w skali kraju (np. urzędy centralne). Programy bezpłatne (ang. freeware). Są to programy, co do których autor zrezygnował z prawa własności i ochrony dóbr intelektualnych. Zrzekając się tych praw autor niekiedy udostępnia nie tylko program wykonywalny, ale równieŝ jego wersję źródłową. Oprogramowanie 21 Oprogramowanie 22 Programy shareware. Właścicielem prawa do programów zaliczanych do tej grupy jest firma lub osoba, która bezpłatnie udostępnia program potencjalnym uŝytkownikom. Programy te są prawnie chronione, mają zastrzeŝone prawa autorskie, a uŝytkownik posiada je tylko na próbę (kilkadziesiąt dni, niektóre opcje programu są wyłączone). Po upływie tego terminu uŝytkownik ma obowiązek wykasowania programu lub wniesienia na rzecz autora lub producenta stosownej opłaty rejestracyjnej. Nabiera on wtedy pełnych praw do wykorzystywania tego programu. Opłata jest dosyć niska. Programy licencjonowane. Programy zaliczane do tej grupy pozostają własnością autora lub firmy producenckiej. UŜytkownik kupuje licencję na odpowiednią liczbę kopii, nabywa prawo do zainstalowania określonej w umowie liczby kopii tego oprogramowania. Stanowią najpewniejsze źródło uzyskania niezawodnego oprogramowania - firma dystrybucyjna lub producent zapewniają doradztwo, serwis, dokumentację i gwarancję. Cieszą się sporą popularnością. Oprogramowanie 23 Oprogramowanie 24 4
Programy własne. Instytucja zlecająca wykonanie indywidualnego oprogramowania moŝe, jeśli jest to zapisane w umowie, stać się pełnym właścicielem oprogramowania. Staje się tak teŝ w przypadku, gdy instytucja produkuje oprogramowanie siłami własnych pracowników. Właściciel moŝe w pełni zmieniać to oprogramowanie, udostępniać innym itd. To bardzo kosztowny sposób uzyskania oprogramowania, ale stosunkowo bezpieczny, gdyŝ będąc właścicielem kodu źródłowego jest się niezaleŝnym od zewnętrznych dostawców. Oprogramowanie 25 Języki programowania komputerów - wewnętrzne symboliczne (asemblerowe) wysokiego poziomu języki czwartej generacji (4GL) języki naturalne (? moŝe w przyszłości?) Oprogramowanie 26 Języki wewnętrzne KaŜdy typ procesora (serii procesorów) posiada swój własny język wewnętrzny. Programy napisane w tych językach noszą nazwę programów binarnych (wynikowych, wewnętrznych, wykonywalnych). Program w języku wewnętrznym składa się z ciągu zrozumiałych dla procesora prostych rozkazów; rozkazy te przedstawione są w postaci odpowiedniej sekwencji zer i jedynek. Programy tego typu są bardzo trudne do zrozumienia przez człowieka, trudne do analizy, a ręczne dokonanie zmiany w takim programie jest praktycznie niemoŝliwe. Języki symboliczne (asemblerowe) Stanowiły spore ułatwienie dla programistów. Kod rozkazu, jak i jego argumenty zapisywane były nie w postaci 0/1, lecz przy pomocy skrótów (np. ADD, SUB, MOV) i dziesiętnych wartości liczbowych. Program napisany w języku symbolicznym przed swym pierwszym wykonaniem musi być przetłumaczony na język wewnętrzny. Operację tłumaczenia wykonuje się za pomocą specjalnego programu zwanego asemblerem. Nie dadzą się przenosić Oprogramowanie na inne procesory. 27 Oprogramowanie 28 Języki wysokiego poziomu Pod koniec lat 50-tych (Fortran, Cobol) DuŜe ułatwienie dla programistów - mogli skoncentrować się na rozwiązywaniu problemów merytorycznych. Programy tego typu przypominają pewien mniej lub bardziej sformalizowany zapis matematyczny. MoŜna je łatwo przenosić na komputery innego typu. Produktywność pracy programistów po wprowadzeniu języków wysokiego poziomu Języki wysokiego poziomu (2) Program napisany w języku wysokiego poziomu (program źródłowy), nie jest zrozumiały dla procesora, dlatego przed wykonaniem musi zostać poddany procesowi tłumaczenia (translacji) na język wewnętrzny. Czynność ta wykonywana jest przez specjalne programy, zwane ogólnie translatorami: kompilatory (gdy proces tłumaczenia jest niezaleŝny i w całości poprzedza proces wykonywania programu) interpretery (gdy proces tłumaczenia i wykonywania programu przeplatają się). wyraźnie wzrosła. Oprogramowanie 29 Oprogramowanie 30 5
Języki czwartej generacji (4GL - 4 Generation Language) Programowanie jest jeszcze prostsze i wygodniejsze, gdyŝ programista opisuje jedynie, co ma być zrobione. Zwykle stosuje się je w powiązaniu z bazami danych, stąd druga nazwa języków tego poziomu: języki baz danych. Polecenia programisty powodują automatyczną generację kodu programu, na postać której ma on niewielki wpływ. Języki naturalne Przyszłość (?) Oprogramowanie 31 Oprogramowanie 32 6