ZNALEZIENIE KONKRETNEJ ODPOWIEDZI

Co gorsze, bardzo często denerwujemy się, że komputer źle działa, bo nie daje wyników, a niekiedy, że wyniki są… I tu powstaje pytanie – jakie? Czy są one nie­zgodne z oczekiwaniami, czy mamy takowe, czy wiemy, co chcemy uzyskać lub czy wiemy, dlaczego uzyskane wyniki nas nie zadowalają? IMa każde z tych pytań musimy zna­leźć konkretną odpowiedź i to taką, która jest sensowna i logiczna, a ponadto twórcza. Chodzi tu bowiem o to, aby wyniki działania programu, a także sposób jego rozwiąza­nia, zanalizować krytycznie, dostrzec miejsca popełnio­nych błędów oraz umieć je skorygować. W przeciwnym wypadku nie wiadomo, czy kiedykolwiek potrafi się dojść do końcowych rezultatów, które będą nas zadowalały. I jeszcze jedno. W całym procesie programowania, począw­szy od sformułowania problemu, a skończywszy na anali­zie wyników, wymagana jest „żelazna” konsekwencja rozważań, logika i precyzja myślenia, a także konsekwen­cja w przestrzeganiu obowiązujących zasad i kanonów programowania. Bez zastosowania tych nadzwyczajnych środków ostrożności nasze programowanie będzie na­miastką tego, co powinniśmy czynić, uzyskane zaś rezul­taty antypropagandą wykorzystania nowoczesnej tech­niki obliczeniowej.

PROCES PROGRAMOWANIA

Problem, który mamy oprogramo­wać (odpowiednik spektaklu), dzielimy na mniejsze zada­nia – podproblemy, te z kolei na mniejsze lub większe ins­trukcje (odpowiedniki fraz). Instrukcje składają się z przemyślanego ciągu rozkazów (odpowiednik nuty). Tak więc rozkazy są najmniejszymi jednostkami, za pomocą których można tworzyć lub rozwiązywać zadania na kom­puterach. Tak jak w wypadku nut, również i w języku komputerowym nie wszystkie rozkazy są jednakowe. Ist­niejące różnice tworzą zbiór rozkazów, który jest skatalo­gowany w postaci listy rozkazów. Każdy program można więc zbudować w ciągu rozkazów elementarnych. Tak więc przez pojęcie „programowanie można rozumieć ustalanie kolejności działania rozkazów zmierzających do realizacji postawionego zadania. Jak wiadomo, na rozwią­zanie zadania składają się dwa elementy: komputer oraz ciąg rozkazów, czyli program. Na rozwiązanie zadania pozwala tylko istnienie obu elementów. Zastanówmy się obecnie, jakie czynności należy wykonać, aby uzyskać program. Przede wszystkim należy zastanowić się nad tym, czy wiemy, co chcemy uzyskać, jaki problem mamy do rozwiązania. Dlaczego o tym mówimy? Określając prob­lem często, nie mamy go przemyślanego do końca, nie rozważamy wszystkich za i przeciw, nie analizujemy jego uniwersalności i wielu innych zagadnień. I co otrzymu­jemy w efekcie? Najczęściej produkt, którego wręcz nie możemy opanować lub który nie wiadomo w jaki sposób rozwiązać.

KOLEJNY ELEMENT

Kolejny element programu to deklaracja pól i obszarów, które będą w programie wykorzystywane. Wymagają tego różne względy, zarówno techniczno-technologiczne (re­zerwacja odpowiednich pól w pamięci), jak i praktyczne (ujednolicenie i ustalenie pól i ich nazw, w których będą przechowywane konkretne informacje).Mając tak przygotowane obszary programowe (zarówno stałe, jak i zmienne), można kodować algorytm opisujący rozwiązanie problemu. Algorytm, naszym zdaniem, należy podzielić na części funkcjonalne: sterowanie i podpro­gramy (moduły) funkcjonalne. Sterowanie programu zawiera odwołania do dokonania operacji wejścia-wyjś­cia oraz podstawowe czynności związane z działaniem algorytmu. Podprogramy (moduły) stanowią funkcjonalne części zawierające rozwiązanie określonych, zamkniętych logicznie fragmentów programu. Jeśli chodzi o praktyczne omówienie procesu progra­mowania, posłużymy się jako przykładem muzyką, chociaż na pozór nie ma ona z komputerami nic wspólnego. Spró­bujmy jednak zanalizować, z czego się składa. Otóż cały spektakl muzyczny jest podzielony na pojedyncze utwory muzyczne, z których każdy składa się z pojedynczych fraz, te z kolei z nut, które stanowią najmniejszy, niepodzielny element języka muzycznego. Tak więc nuty są najmniej­szymi jednostkami, za pomocą których można tworzyć wszystkie dzieła muzyczne. Podobnie wygląda to w wypadku komputerów.

KLASYFIKACJA JĘZYKÓW PROGRAMOWANIA

Znając klasyfikację języków programowania, łatwiej można zrozumieć różnorodność i specyfikę problematyki programowania w różnych zastosowaniach.Program jest to więc maszynowa realizacja algo­rytmu, w którym wymienia się wszystkie drogi, uwz­ględnia wszystkie możliwości i warunki. Należy zazna­czyć, że występujące w sformułowaniu słowa „wszystkie” mają ogromne znaczenie w programowaniu. Oczekujemy bowiem, że komputer, będąc cudownym urządzeniem, da nam odpowiedź na każdy problem i rozwiąże każdy jego szczegół. Należy jednak pamiętać, że jeśli człowiek nie przewidzi i nie opisze wszystkich dróg działania w pro­gramie, to sam program ani komputer tego nie uczynią, ponieważ nie ma podstaw logicznych do podejmowania takowych decyzji. Jeżeli człowiek – istota rozumna – nie wie, jak powinien się zachować program (będący wytwo­rem jego intelektu), to na pewno nie uczyni tego kompu­ter, będący tylko i wyłącznie maszyną. Rozważmy, z jakich elementów składowych powinien być zbudowany program. Otóż każdy program musi mieć nazwę, dzięki której będzie odróżniany od innych. Naieży zadbać, aby nazwa była unikalna, gdyż w przeciwnym wypadku można działać na programie, który oprócz nazwy nie ma nic wspólnego z naszym zamierzeniem. Jeżeli pro­gram korzysta z urządzeń zewnętrznych (czytniki, taśmy magnetyczne, drukarki), musi mieć zadeklarowany do­stęp do urządzeń zewnętrznych, tak aby komputer doko­nał odpowiedniego przydziału urządzeń i umożliwił odczyt lub zapis informacji do (lub z) zbiorów w nich zawartych.

JĘZYKI WEWNĘTRZNE

Języki wewnętrzne są to języki najniższego stopnia, których jedynymi dopuszczalnymi wyrażeniami są rozkazy kodu wewnętrznego danego komputera. Języki symboli­czne są to języki, w których zamiast kodu cyfrowego można stosować oznaczenia symboliczne. Języki zew­nętrzne to języki, które są uniezależnione od komputera, o postaci zbliżonej do notacji matematycznej lub nieco sformalizowanej notacji języka naturalnego.Częstokroć języki symboliczne są określane mianem maszynowo zorientowanych, natomiast języki zewnętrz­ne są też zwane językami wyższego rzędu, języki wewnętrzne zaś – językami niższego rzędu.Podczas produkcji oprogramowania niektóre języki opracowywano z myślą o konkretnych zastosowaniach, innym starano się nadać cechy uniwersalności, stąd też w klasyfikacji istnieje podział na dwie grupy języków. Spoś­ród języków specjalnych można wyróżnić klasę języków służących do opracowywania programów użytkowych. Można tu wyodrębnić języki przeznaczone do programo­wania zagadnień: ekonomicznych (COBOL), naukowo- -technicznych (FORTRAN), symulacyjnych (SIMULA). Wśród języków programowania o przeznaczeniu uniwer­salnym wyodrębnia się klasy języków proceduralnych i konwersacyjnych. Do najbardziej znanych języków uni­wersalnych należy zaliczyć: PL/1, ALGOL-68, PASCAL, z kolei do najbardziej znanych języków konwersacyjnych należą języki APL, BASIC, LOGO, JEAN.

PROGRAMY TŁUMACZĄCE

Programy tłumaczące opracowuje producent komputera i dostarcza razem z nim. Program napisany przez czło­wieka nazywa się programem źródłowym. Program źród­łowy zapisywany jest na specjalnych arkuszach progra­mowych, a następnie przenoszony na nośniki informacji (karty, taśmy magnetyczne), z których jest wprowadzany do komputera, gdzie podlega tłumaczeniu na język wew­nętrzny. W procesie tłumaczenia sprawdzana jest po­prawność formalna (zgodność z przyjętymi w danym języku standardami i formatami) obowiązująca dla danego języka i   komputera. Z chwilą gdy program jest poprawny, można przystąpić do jego wykorzystania, gdy ma błędy, są one drukowane i program nie powinien być wykorzystywany przed ich usunięciem. Dzieje się tak dlatego, że istnienie błędów wprowadza reakcje komputera o niekiedy zupełnie niezrozumiałym działaniu. Program przetłumaczony na język wewnętrzny komputera nazywamy programem wynikowym. Znając ogólne zasady opracowywania programu na komputerze zauważmy, że na świecie istnieje ogromna liczba języków programowania. Każdy język może się róż­nić szczegółami implementacyjnymi na różnych kompute­rach.

JĘZYKI PROGRAMOWANIA

Rozpatru­jąc języki programowania z punktu widzenia potrzeb osób, które się nimi posługują, najlepszym rozwiązaniem byłoby skonstruowanie takich komputerów, które potrafiłyby roz­umieć i wykonywać rozkazy podawane w języku natural­nym. Na przeszkodzie stoi jednak wielka różnorodność słów, jak również ich znaczeń, wieloznaczność oraz uży­wanie różnych abstraktów i zwrotów, które niekiedy nie są znane ogółowi ludzi. W tym wypadku musiałby istnieć taki język naturalny, który doprowadziłby do ujednolicenia znaczenia oraz jednoznaczności interpretacji słów, oraz zasad gramatyki.W przeciwieństwie do niego język programowania ma bardzo ograniczony zasób symboli, a także charakteryzują go sztywne zasady zarówno składni, jak i semantyki.Program napisany przez człowieka w języku zewnętrz­nym nie może być jednak użyty bezpośrednio do wykona­nia przez komputer. Każdy bowiem komputer rozumie tylko odpowiedni dla niego język wewnętrzny. Dlatego też program napisany w języku zewnętrznym musi być prze­tłumaczony na właściwy dla danego komputera język wewnętrzny. Do tłumaczenia (które wykonuje się automa­tycznie) wykorzystuje się specjalny (dla każdego języka programowania inny) program tłumaczący.

CZEGO DOTYCZY PROGRAMOWANIE?

Jednym z warunków automatycznej pracy komputera i wykorzystania resursów jest umieszczenie w jego pamięci programu, za pomocą którego dokonuje się realizacji konkretnego algorytmu.W pamięci komputera każdy rozkaz programu jest zapi­sywany w postaci cyfrowego symbolu operacji, jaką ma wykonać, oraz adresu (lub adresów), w której umie­szczono odpowiedni numer komórki pamięci zawierającej dane do wykonania podanej operacji. Na program składa się więc ciąg rozkazów powiązanych logicznie i formalnie. W tej postaci przedstawiony program nazywa się progra­mem zakodowanym w języku wewnętrznym. Pisanie pro­gramów w języku wewnętrznym jest trudne, kłopotliwe i pracochłonne. Wynika to między innymi z faktu, że w dzi­siejszych czasach komputery wykonują od 100-300 róż­nych operacji i zapamiętanie przez człowieka kodów licz­bowych tych operacji wymagałoby dużo czasu. Z tych to powodów do pisania programów używa się obecnie zewnętrznych języków programowania.Językiem programowania nazywamy zestaw znaków oraz reguł ich zastosowania wykorzystywanych jako narzędzie porozumiewania się człowieka z kompute­rem. Są to języki sztuczne, które opracowano wyłącznie do zapisu programów. Różnią się one więc od języków naturalnych, którymi porozumiewają się ludzie.

ZAWARTOŚĆ PROJEKTU

Zauważmy ponadto, że zawartość projektu może się różnić w zależności od przyjętej metody projektowania, a także w zależności od osób go wykonują­cych. I tak projekt ogólny systemu informatycznego może zawierać:    informacje o przedmiocie, zakresie i funkcjach, jakie realizuje system;   opis struktury funkcjonalnej, organizacyjnej oraz technicznej systemu;   organizację przetwarzania;   szczeblowość i zakres wykonywanych na nich funkcji;   schemat ogólny działania systemu, opisujący powią­zania jednostek przetwarzania i uwzględniający relacje i zalezności czasowo-przestrzenne;ograniczenia organizacyjne, ekonomiczne i techni­czne systemu dotyczące wszystkich jego elementów: wejść, funkcji, wyjść, metody przetwarzania, ludzi i otoczenia;   charakterystykę dokumentów wejściowych zawiera­jącą nazwy i struktury tych dokumentów;  charakterystykę dokumentów wyjściowych zawiera­jącą nazwy i struktury dokumentów; zasady budowy symboliki; charakterystykę technicznych środków informatyki wykorzystywanych w systemie;     charakterystykę zbiorów systemu, ich podział, nazwy, strukturę i zawartość informacyjną;    charakterystykę dokumentów wynikowych zawiera­jącą np. takie dane, jak: nazwa i symbol wydawnictwa, przeznaczenie, użytkownicy, termin sporządzania, liczba egzemplarzy oraz budowa i jego treść;  algorytmy przetwarzania elementów systemu (pro­gramy, moduły itp.);      charakterystykę sieci transmisji danych;wymagania organizacyjne warunkujące wdrożenie i eksploatację systemu;określenie niezbędnych środków techniczno-programowych;szacunkowe określenie efektywności projektowaneao systemu;szacunkowy harmonogram dalszych prac projekto­wych oraz organizacyjnych.

DOŚWIADCZENIE W PROJEKTOWANIU

Z doświad­czeń w projektowaniu wynika, że niekiedy drobny błąd w projektowaniu, nierozpatrzenie jakiegoś przypadku lub niekonsekwencja w realizacji przyjętych założeń powoduje wykonywanie na różnych etapach projektowania wielu niepotrzebnych czynności. Związane są one bądź z identy­fikacją przyczyny sytuacji awaryjnej, bądź jej usunięciem. Dzieje się tak dlatego, że system informatyczny ma na ogół skomplikowaną budowę, istnieje wiele różnych powiązań między jego elementami i niesprawność dowol­nego z nich powoduje często reakcję łańcuchową burzącą wielokrotnie całość systemu. Aby nie być gołosłownym, przytoczmy przykładowo kilka liczb. Otóż autorzy projektowali systemy informatyczne różnej wielkości o bardzo zróżnicowanej problematyce. Do większych należy zaliczyć system o zasięgu krajowym, w którym funkcjonowało ponad 200 programów, istniało kilkadziesiąt zbiorów z danymi o bardzo zróżnicowanej struk­turze. Już samo przedstawienie powiązań logicznych mię­dzy programami tego systemu jest zagadnieniem skompli­kowanym. Dlatego też w celu nieco głębszego zoriento­wania Czytelnika w treści projektu systemu informatycz­nego przedstawiamy zawartość informacyjną projektu. Będzie to zawartość wymagana przy opracowywaniu wielu projektów, chociaż odstępstwa i różnice są tu oczy­wiście dopuszczalne.