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.

Filozofia jak nauka

Wypływa stąd wniosek, że filozofia rozwija się równolegle do nauki. Nie jest ona, jak sugerowało wielu filozofów, ani matką nauki, ani jedynie wiedzą pomocniczą, porządkującą bałagan terminologiczny i pojęciowy po tym, jak naukowcy zrobili już to, co do nich należało. Poszukując odpowiedzi na wiele pytań, nie stwierdzono, ze istnieje ostra granica między filozofią a innymi dyscyplinami. Odnosi się to szczególnie do wszystkich dziedzin, zwanych filozofią nauki, do nauk społecznych, sztuki czy religii. Nie można również wyraźnie oddzielić tego, co eksperymentalne i możliwe do poznania, od tego, co jest aprioryczne – tego, co wewnętrzne, od zewnętrznego. A zatem współpraca i szacunek powinny występować po obu stronach.

Nauka czy nie? O filozofii

Jednak przez wiele lat – również wówczas, gdy niektórzy filozofowie nawoływali do uznania filozofii za dział nauki lub, wiedzę pomocniczą, łączącą odrębne działy nauki – pewni myśliciele stanowczo twierdzili, że problemy filozoficzne odbiegają od nauki. Zgodnie z tym poglądem problemy filozoficzne nie wymagają żadnych doświadczalnych dowodów, ani też naukowego badania – w rzeczy samej, nie wymagają żadnych dowodów czy badań: Posługując się żargonem filozoficznym, możemy powiedzieć, że problemy te mogły i mogą być rozwiązywane a priori, czyli niezależnie od doświadczenia i eksperymentów, ale poprzez odwoływanie się do logiki i języka lub do pewnego rodzaju intuicji.

Filozofowie a nauka

Kant doceniał również piękno sztuki, gorliwość religijną, cuda matematyki, towarzystwo bliźnich i kieliszek dobrego wina oraz wartość nauki. Sam Newton bynajmniej nie ograniczał swojej filozofii do opisu „natury”! Ostatnie dwadzieścia lat życia poświęcił na opracowywanie teologii, która obejmowałaby i dopełniła jego fizykę. Fryderyk Nietzsche, często zachwycający się dziewiętnastowieczną nauką, zauważył, że naukowa prawda opisuje jedynie mały fragment naszego doświadczenia. Za ważniejsze i bardziej odpowiadające filozofii uważał prawdy estetyczne. W związkach między filozofią i nauką istnieje jednak coś zbawiennego i zasadniczego, coś więcej niż nacisk, który obie te dziedziny kładą na obiektywizm i racjonalizm oraz wspólne filozofii i nauce poszukiwanie prawdy.

Filozofia to nie nauka!

Bezosobowości i bezstronności, jakie obowiązują w nauce, z pewnością nie powinno się zalecać w filozofii, i zgodnie z tym,  bardzo wielu filozofów (zarówno-wschodnich, jak i zachodnich) podkreślało, że filozofia jest sztuką, umiejętnością, dyscypliną lub ćwiczeniem, i dlatego filozofia różni się od nauki, a przynajmniej jest od niej bardziej przenikliwa. Nawet filozofowie, którzy oddają właściwie boską cześć nauce, są świadomi jej ograniczeń. Na przykład Immanuel Kant, jeden z największych filozofów, nowożytnych i entuzjasta fizyki Newtona, twierdził, że dwie rzeczy napawają go „grozą” – „niebo gwiaździste nade mną i prawo moralne we mnie”.

Badanie niewarte uwagi

Platon jednak, tak jak wiele pokoleń wcześniejszych filozofów, głęboko przejmował się tymi problemami. Trudnym zadaniem, podejmowanym w celu naszkicowania pełnego, aczkolwiek nie do końca dokładnego, obrazu greckiej filozofii, jest wyjaśnienie owego oczywistego braku ciągłości i poważnych rozbieżności, dotyczących samego pojęcia filozofii. Czy filozofia, tak jak przedstawiał ją Sokrates, jest bardzo osobistą, ale zarazem społeczną i praktyczną troską o to, aby żyć godnie, oraz nauczaniem i wspieraniem innych w ich wysiłkach? Czy też jest raczej naukową, abstrakcyjną, często niejasną próbą zrozumienia absolutnej natury świata, wysiłkiem, który dla Sokratesa, Konfucjusza i Buddy nie był godnym uwagi?

Badania Sokratesa

Najważniejszą koncepcją Sokratesa była zatem koncepcja samego Sokratesa jako ucieleśnienia mądrości. Wynika z tego pewien problem, który po dziś dzień dzieli filozofów. Sokrates poświęcił swoje życie rozmyślaniom nad cnotą, głoszeniu jej i ilustrowaniu budującymi przykładami. Wydaje się, że zupełnie nie był zainteresowany wielkimi pytaniami kosmologicznymi swoich czasów. Wykazywał jedynie minimalne zainteresowanie matematyką i geometrią jako zagadnieniami mającymi własną, indywidualną wartość, a oficjalną religią Aten zajmował się jedynie pobieżnie i nie okazywał jej zbyt wielkiego szacunku (tego właśnie dotyczył jeden z zarzutów stawianych Sokratesowi). Czy to zarzuty słuszne – ciężko teraz dywagować, ponieważ czas zrobił swoje.

Historia filozofii

Arystoteles uważał, że pożyczanie pieniędzy na procent, czyli lichwa, jest nienaturalna, natomiast większość współczesnych biznesmenów orzekła, że zarabianie pieniędzy jest najbardziej naturalną rzeczą w świecie. Można pomyśleć, że naturalne jest to, co nam zostało dane przez świat. W rzeczywistości „natura” okaże się najbardziej sporną i kontrowersyjną kwestią w historii filozofii. Z kolei na Bliskim Wschodzie, w Persji – dzisiejszy Iran – człowiek, zwany Zoroaster z Balkhu lub Zaratusztra (ok. 628-ok. 551 p.n.e.), dążył ku moralnemu monoteizmowi o szerokim zasięgu. Możemy jedynie spekulować, do jakiego stopnia Zoroaster znajdował się pod wpływem starożytnych Żydów i staroegipskiego monoteisty Echnatona, czy nawet pod wpływem Wed.

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.

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.