BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 14 | UU: 507

Jak rozmawiamy z komputerem?

Wiemy już, że programy działają dzięki temu, że programiści konstruują dla nich odpowiednie algorytmy. Poznaliśmy nawet prosty algorytm, który być może jest stosowany jest przez program Notatnik do otwierania plików tekstowych.

Zauważ jednak, że jest on napisany w języku naturalnym - to znaczy takim, jakim posługują się ludzie. Chociaż jest doskonale zrozumiały dla wszystkich, to ma jedną niezaprzeczalną wadę: nie rozumie go komputer! Dla bezmyślnej maszyny jest on po prostu zbyt niejednoznaczny i niejasny.

Z drugiej strony, już istniejące programy są przecież doskonale "zrozumiałe" dla komputera i działają bez żadnych problemów. Jak to możliwe? Otóż pecet też posługuje się pewnego rodzaju językiem. Chcąc zobaczyć próbkę jego talentu lingwistycznego, wystarczy podejrzeć zawartość dowolnego pliku EXE. Co zobaczymy? Ciąg bezsensownych, chyba nawet losowych liter, liczb i innych znaków. On ma jednak sens, tyle że nam bardzo trudno poznać go w tej postaci. Po prostu język komputera jest dla równowagi zupełnie niezrozumiały dla nas, ludzi :)


Screen 2. Tak wygląda plik EXE :-)

Jak poradzić sobie z tym, zdawałoby się nierozwiązalnym, problemem? Jak radzą sobie wszyscy twórcy oprogramowania, skoro budując swoje programy muszą przecież "rozmawiać" z komputerem?

Ponieważ nie możemy peceta nauczyć naszego własnego języka i jednocześnie sami nie potrafimy porozumieć się z nim w jego "mowie", musimy zastosować rozwiązanie kompromisowe. Na początek uściślimy więc i przejrzyście zorganizujemy nasz opis algorytmów. W przypadku otwierania plików w Notatniku może to wyglądać na przykład tak:

Algorytm Plik -> Otwórz
Pokaż okno wyboru plików
Jeżeli użytkownik kliknął Anuluj, To Przerwij

Jeżeli poczyniono zmiany w aktualnym dokumencie, To
Wyświetl komunikat "Czy zachować zmiany w aktualnym dokumencie?" z przyciskami Tak, Nie, Anuluj
Sprawdź decyzję użytkownika
Decyzja Tak: wywołaj polecenie Plik -> Zapisz
Decyzja Anuluj: Przerwij

Odczytaj wybrany plik
Wyświetl zawartość pliku
Koniec Algorytmu

Jak widać, sprecyzowaliśmy tu kolejne kroki wykonywane przez program - tak aby "wiedział", co należy po kolei zrobić. Fragmenty zaczynające się od Jeżeli i Sprawdź pozwalają odpowiednio reagować na różne sytuacje, takie jak zmiana decyzji użytkownika i wciśnięcie przycisku Anuluj.

Czy to wystarczy, by komputer wykonał to, co mu każemy? Otóż nie bardzo. Chociaż wprowadziliśmy już nieco porządku, nadal używamy języka naturalnego - jedynie struktura zapisu jest bardziej ścisła. Notacja taka, zwana pseudokodem , przydaje się jednak bardzo do przedstawiania algorytmów w czytelnej postaci. Jest znacznie bardziej przejrzysta oraz wygodniejsza niż opis w formie zwykłych zdań, które musiałyby być najczęściej wielokrotnie złożone i niezbyt poprawne gramatycznie. Dlatego też, kiedy będziesz wymyślał własne algorytmy, staraj się używać pseudokodu do zapisywania ich ogólnego działania.

No dobrze, wygląda to całkiem nieźle, jednak nadal nie potrafimy się porozumieć z tym mało inteligentnym stworem, jakim jest nasz komputer. Wszystko dlatego, iż nie wie on, w jaki sposób przetworzyć nasz algorytm, napisany w powstałym ad hoc języku, do postaci zrozumiałych dla niego "krzaczków", które widziałeś wcześniej.

Dla rozwiązania tego problemu stworzono sztuczne języki o dokładnie określonej składni i znaczeniu, które dzięki odpowiednim narzędziom mogą być zamieniane na kod binarny, czyli formę zrozumiałą dla komputera. Nazywamy je językami programowania i to właśnie one służą do tworzenia programów komputerowych. Wiesz już zatem, czego najpierw musisz się nauczyć :)

Język programowania to forma zapisu instrukcji dla komputera i programów komputerowych, pośrednia między językiem naturalnym a kodem maszynowym.

Program zapisany w języku programowania jest, podobnie jak nasz algorytm w pseudokodzie, zwykłym tekstem. Podobieństwo tkwi również w fakcie, że sam taki tekst nie wystarczy, aby napisaną aplikację uruchomić - najpierw należy ją zamienić w plik wykonywalny (w systemie Windows są to pliki z rozszerzeniem EXE). Czynność ta jest dokonywana w dwóch etapach.

Podczas pierwszego, zwanego kompilacją , program nazywany kompilatorem zamienia instrukcje języka programowania (czyli kod źródłowy, który, jak już mówiliśmy, jest po prostu tekstem) w kod maszynowy (binarny). Zazwyczaj na każdy plik z kodem źródłowym (zwany modułem ) przypada jeden plik z kodem maszynowym.

Kompilator - program zamieniający kod źródłowy, napisany w jednym z języków programowania, na kod maszynowy w postaci oddzielnych modułów.

Drugi etap to linkowanie (zwane też konsolidacją lub po prostu łączeniem). Jest to budowanie gotowego pliku EXE ze skompilowanych wcześniej modułów. Oprócz nich mogą tam zostać włączone także inne dane, np. ikony czy kursory. Czyni to program zwany linkerem .

Linker łączy skompilowane moduły kodu i inne pliki w jeden plik wykonywalny, czyli program (w przypadku Windows - plik EXE).

Tak oto zdjęliśmy nimb magii z procesu tworzenia programu ;D

Skoro kompilacja i linkowanie są przeprowadzane automatycznie, a programista musi jedynie wydać polecenie rozpoczęcia tego procesu, to dlaczego nie pójść dalej - niech komputer na bieżąco tłumaczy sobie program na swój kod maszynowy. Rzeczywiście, jest to możliwe - powstało nawet kilka języków programowania działających w ten sposób (tak zwanych języków interpretowanych, przykładem jest choćby PHP, służący do tworzenia stron internetowych). Jednakże ogromna większość programów jest nadal tworzona w "tradycyjny" sposób.
Dlaczego? Cóż - jeżeli w programowaniu nie wiadomo, o co chodzi, to na pewno chodzi o wydajność 1 ;)) Kompilacja i linkowanie trwa po prostu długo, od kilkudziesięciu sekund w przypadku niewielkich programów, do nawet kilkudziesięciu minut przy dużych. Lepiej zrobić to raz i używać szybkiej, gotowej aplikacji niż nie robić w ogóle i czekać dwie minuty na rozwinięcie menu podręcznego :DD

Zatem czas na konkluzję i usystematyzowanie zdobytej wiedzy. Programy piszemy w językach programowania, które są niejako formą komunikacji z komputerem i wydawania mu poleceń. Są one następnie poddawane procesom kompilacji i konsolidacji, które zamieniają zapis tekstowy w binarny kod maszynowy. W wyniku tych czynności powstaje gotowy plik wykonywalny, który pozwala uruchomić program.

1 Niektórzy powiedzą, że o niezawodność, ale to już kwestia osobistych priorytetów :)

Kurs C++
Copyright © 2006-2013 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker