1
Informatyka
Programowanie w VBA
Wykład 1(2)
Jerzy Duda, 2010
Jerzy Duda, WZ AGH, 2008–2010
Zakres wykładów (1)
Programowanie, j
ę
zyki programowania
definicje
historia
Definiowane j
ę
zyka formalnego
składnia a semantyka
notacja BNF, EBNF
Paradygmaty programowania
imperatywny/proceduralny
funkcyjny
obiektowy
programowanie w logice
Translatory i interpretery
kompilator, preprocesor, asembler
interpreter, maszyna wirtualna
2
Jerzy Duda, WZ AGH, 2008–2010
Zakres wykładów (2)
Sposoby reprezentacji liczb
arytmetyka binarna
liczby całkowite
liczby zmiennopozycyjne
Podstawowe struktury danych
dane elementarne
dane zło
ż
one
tablice
struktury
rekordy
Nieregularne struktury danych
listy
stosy
kolejki
Jerzy Duda, WZ AGH, 2008–2010
Zakres wykładów (3)
Algorytmy
poj
ę
cie algorytmu
zło
ż
ono
ść
obliczeniowa
algorytmy iteracyjne i rekurencja
podstawowe algorytmy sortowania
wyszukiwanie binarne
drzewa
haszowanie
3
Jerzy Duda, WZ AGH, 2008–2010
Zakres wykładów (4)
Programowanie obiektowe
klasy
wła
ś
ciwo
ś
ci i metody
konstruktory i destruktory
hermetyzacja
dziedziczenie
polimorfizm
modyfikatory widoczno
ś
ci
klasy abstrakcyjne
programowanie obiektowe z wykorzystaniem VBA
Jerzy Duda, WZ AGH, 2008–2010
Literatura
Algorytmy
S. Harris, J. Ross: Algorytmy. Od podstaw, Helion 2006
(Wrox)
G.T. Heineman, G. Pollice, S. Selkow: Algorytmy.
Almanach, Helion 2010
VBA
M. Lewandowski: Tworzenie makr w VBA dla Excela
2003/2007.
Ć
wiczenia, Helion 2007
J. Walkenbach: Excel 2003 PL. Programowanie w VBA.
Vademecum profesjonalisty, Helion 2004
A. Osyczka, R. Jankowski, I. Skalna, P. Krajewski:
Visual Basic dla Aplikacji, AGH Uczelniane Wydawnictwa
Naukowo-Techniczne 2006
4
Jerzy Duda, WZ AGH, 2008–2010
Dlaczego warto programowa
ć
?
Programowanie
dobra zabawa
zaj
ę
cie twórcze
mo
ż
liwo
ść
wyra
ż
ania abstrakcyjnych idei w namacalnej formie
Ź
ródło pozytywnych nawyków
uwa
ż
ne czytanie
my
ś
lenie analityczne
twórcza synteza
zdolno
ść
dostrzegania szczegółów
Ka
ż
dy powinien nauczy
ć
si
ę
, jak projektowa
ć
oprogramowanie
Ź
ródło: Felleisen, Findler, Faltt,Krishnamurthi: „Projektowanie oprogramowania. Wst
ę
p do programowania i techniki komputerowej”, Helion 2003
Jerzy Duda, WZ AGH, 2008–2010
Program komputerowy (1)
Niklaus Wirth
ALGORYTMY + STRUKTURY DANYCH = PROGRAMY
Programy stanowi
ą
skonkretyzowane sformułowania abstrakcyjnych
algorytmów na podstawie okre
ś
lonej reprezentacji i struktury danych
Fundacja na rzecz Wolnej Infrastruktury Informacyjnej (FFII)
Program komputerowy oznacza sposób przetwarzania danych, które je
ś
li s
ą
poprawnie opisane, mo
ż
e by
ć
wykonywany przez komputer
Słownik PWN
Program to ci
ą
g instrukcji napisanych w j
ę
zyku zrozumiałym dla komputera
J. Barta i R. Markiewicz
Program to zestaw instrukcji (rozkazów) przeznaczonych do u
ż
ycia
bezpo
ś
rednio lub po
ś
rednio w komputerze w celu osi
ą
gni
ę
cia okre
ś
lonego
rezultatu
5
Jerzy Duda, WZ AGH, 2008–2010
Program komputerowy (2)
Knuth Donald E. „Sztuka programowania”
Program to wyra
ż
enie metody obliczeniowej w j
ę
zyku
komputerowym
metoda obliczeniowa – procedura przekształcaj
ą
ca dane wej
ś
ciowe
w wynik za pomoc
ą
jednoznacznie zdefiniowanych, elementarnych
kroków
Program komputerowy – podstawowe rodzaje kodu
kod
ź
ródłowy – stanowi
ą
cy zapis w okre
ś
lonym j
ę
zyku
programowania; zrozumiały dla człowieka (dalej kompilowany lub
interpretowany)
kod wykonywalny – zrozumiały dla maszyny; gotowy do wykonania
przez maszyn
ę
(posta
ć
binarna)
Jerzy Duda, WZ AGH, 2008–2010
Programowanie komputerowe
Słownik W. Kopali
ń
skiego:
Proces sporz
ą
dzania dokładnego zestawu instrukcji potrzebnych na to, aby
komputer mógł spełni
ć
okre
ś
lone zadanie; zestaw ten obejmuje wybór (a.
wynalezienie) stosownego algorytmu, kodowanie i testowanie
Programowanie to proces projektowania, tworzenia i poprawiania kodu
ź
ródłowego programów komputerowych [Wikipedia]
Etapy tworzenia oprogramowania (in
ż
ynieria oprogramowania):
analiza wymaga
ń
systemowych
specyfikacja aplikacji
architektura systemu informatycznego
programowanie (implementacja)
kompilacja oprogramowania
testowanie oprogramowania
dokumentacja programu
integracja
piel
ę
gnacja oprogramowania
6
Jerzy Duda, WZ AGH, 2008–2010
J
ę
zyk programowania
J
ę
zyk słu
żą
cy do dialogu pomi
ę
dzy programist
ą
a komputerem,
przeznaczony do opisu danych oraz algorytmów ich
przetwarzania
J
ę
zyk programowania to usystematyzowany sposób
przekazywania komputerowi polece
ń
do wykonania [wikipedia]
HOPL: system kodowania, który umo
ż
liwia stworzenie programu
Niektórzy zaw
ęż
aj
ą
to poj
ę
cie tylko do j
ę
zyków spełniaj
ą
cych
warunek tzw. kompletno
ś
ci Turinga
J
ę
zyki programowania klasyfikuje si
ę
ze wzgl
ę
du na
paradygmaty
generacj
ę
implementacj
ę
Jerzy Duda, WZ AGH, 2008–2010
Troch
ę
historii
Encyklopedia History
of Programming
Languages wylicza
8512 j
ę
zyków
programowania
Ludzko
ść
na
ś
wiecie
u
ż
ywa obecnie
ok. 6-7 tysi
ę
cy j
ę
zyków
www.99-bottles-of-beer.net
program w 1318 j
ę
zykach
Ź
ródło rysunku: http://users.skynet.be/averkeyn/computer/histlang.html
7
Jerzy Duda, WZ AGH, 2008–2010
Historia j
ę
zyków (1)
1943
1943
– pierwszy j
ę
zyk Plankalkül
opracowany przez Konrada Zuse
(Bawaria); publikacja w 1948;
brak implementacji
1952
1952
– pierwszy kompilator – j
ę
zyk Autocode na komputer Mark 1
opracowany przez Alicka Glennie’a (Univ. of Manchester)
Ź
ródło kodów: "Hello, World!" in 66 Programming languages”, http://www.scribd.com/doc/2276844
R1.1(V0[:sig]) => R0
R1.2(V0[:m x sig]) => R0
0 => i | m + 1 => j
[W [ i < j -> [ R1.1(V0[i: m x sig]) => R0 | i + 1 => i ] ] ]
END
R1.3() => R0
'H';'e';'l';'l';'o';',';' ';'w';'o';'r';'l';'d';'!' => Z0[: m x sig]
R1.2(Z0) => R0
END
org 100h
start:
mov ah, 9
mov dx, hello
int 21h
mov ax, 4C00h
int 21h
hello
db 'Hello World!','$'
Assembler (Intel)
Jerzy Duda, WZ AGH, 2008–2010
Historia j
ę
zyków (2)
1954
1954
– Fortran (FORmula TRANslator system) - John Backus i inni
naukowcy z IBM; Fortran II (1958) wprowadza p
ę
tle, funkcje i
procedury
1958
1958
– LISP (LISt Processing)
– składnia nawiasowa
C Fortran: Hello, world!
PROGRAM HALLO
WRITE (*,100)
STOP
100 FORMAT ('Hello, world!')
END
;;; Common Lisp: "Hello, world!"
(defun helloworld ()
(print "Hello, world!")
)(helloworld)
8
Jerzy Duda, WZ AGH, 2008–2010
Historia j
ę
zyków (3)
1960
1960
– Cobol (COmmon Business Oriented Langage) - COnference
on DAta SYsystems Language; wprowadzenie rekordów
1964
1964
– Basic (Beginner’s All-purpose Symbolic Instruction Code)
- John Kemeny i Thomas Kurtz
1970
1970
– Pascal opracowany przez
Niklausa Wirtha – programowanie
strukturalne
10 REM BASIC: "Hello, world!"
20 PRINT "Hello, world!"
program HelloWorld;
(* Pascal: Hello, world! *)
begin
WriteLn('Hello, world!');
end.
Jerzy Duda, WZ AGH, 2008–2010
Historia j
ę
zyków (4)
1972
1972
– J
ę
zyk C opracowany w 1972 r. przez Dennisa Ritchiego z
Bell Telephone Laboratories dla systemu Unix
1972
1972
– Smalltalk - pierwszy j
ę
zyk zorientowany obiektowo
(podstawy OOP Simula – 1962)
1972
1972
– PROLOG - programowanie w logice (Francja)
pocz
pocz
ą
ą
tek lat 1970
tek lat 1970
– SQL opracowany w IBM SEQUEL (Structured
English Query Language)
/* Hello world */
#include <stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 0;
}
% Prolog: "Hello, world!"
?- write('Hello, world!') , nl .
-- SQL: "Hello, world!"
SELECT 'Hello, world!' AS message;
9
Jerzy Duda, WZ AGH, 2008–2010
Historia j
ę
zyków (5)
1983
1983
– C++; C with Classes opracowany przez Bjarne’a Stroustrupa
(1979); bazowany na C i Simuli
1991
1991
– Java stworzona przez Jamesa Goslinga, programist
ę
Sun
(pierwotnie jako Oak); Java 1.0 (1995) - Write Once, Run Anywhere
#include <iostream>
using namespace std;
int main() // Hello World
{
cout << "Hello, World!" << endl;
return 0;
}
class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello, World!");
}
}
Jerzy Duda, WZ AGH, 2008–2010
Historia j
ę
zyków (6)
1993
1993
– Ruby stworzony przez Yukihiro "Matz" Matsumoto; oparty na
wielu paradygmatach
1995
1995
– PHP (PHP: Hypertext Preprocessor) opracowany pierwotnie
przez Rasmusa Lerdorfa (Dania)
2000
2000
– C# opracowany przez Microsoft (zespół Anders Hejlsberga)
jako cz
ęść ś
rodowiska .NET; zaaprobowany jako standard przez
ECMA oraz ISO
using System;
class HelloWorld
{
public static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
<?php // PHP: "Hello, world!"
echo "<html><body>"."Hello, world!"."</body></html>"; ?>
10
Jerzy Duda, WZ AGH, 2008–2010
Popularno
ść
j
ę
zyków – TIOBE
Ź
ródło: http://www.tiobe.com
Jerzy Duda, WZ AGH, 2008–2010
Paradygmaty programowania
Paradygmaty programowania
Programowanie imperatywne (1)
Ź
ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/
Najbardziej pierwotny sposób programowania, w którym program
postrzegany jest jako ci
ą
g polece
ń
dla komputera
Obliczenia to sekwencja polece
ń
zmieniaj
ą
cych krok po kroku stan
maszyny, a
ż
do uzyskania oczekiwanego wyniku
Stan maszyny to zawarto
ść
całej pami
ę
ci oraz rejestrów
i znaczników procesora
Ten sposób patrzenia na programy zwi
ą
zany jest
ś
ci
ś
le
z budow
ą
sprz
ę
tu komputerowego o architekturze von Neumanna,
w którym poszczególne instrukcje to wła
ś
nie polecenia zmieniaj
ą
ce
stan
Demo:
http://osilek.mimuw.edu.pl/images/9/91/kontener.html?
nazwa_animacji=/images/7/71/Pp-1.1.1
11
Jerzy Duda, WZ AGH, 2008–2010
Programowanie imperatywne (2)
Ź
ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/
J
ę
zyki wysokiego poziomu — takie jak Basic czy C — posługuj
ą
si
ę
pewnymi abstrakcjami, ale wci
ąż
odpowiadaj
ą
paradygmatowi
programowania imperatywnego
Instrukcje podstawienia działaj
ą
na danych pobranych z pami
ę
ci i
umieszczaj
ą
wynik w tej
ż
e pami
ę
ci, za
ś
abstrakcj
ą
komórek pami
ę
ci
s
ą
zmienne
Sub Pierwszy
Dim s as Integer
Dim n as Integer
n = InputBox()
s = 1
For i = 2 To n
s = s * i
MsgBox(s)
Next i
End Sub
int main()
{
int i, n, s;
n=scanf("%d",&n);
s = 1;
for(i=2;i<=n;i++)
{s*=i;
printf("%d",s);}
return 0;
}
Jerzy Duda, WZ AGH, 2008–2010
Programowanie proceduralne
i strukturalne
Ź
ródło: http://pl.wikipedia.org/wiki/Programowanie_strukturalne
Programowanie proceduralne
Programowanie proceduralne
to paradygmat programowania
zalecaj
ą
cy dzielenie kodu na procedury, czyli fragmenty
wykonuj
ą
ce
ś
ci
ś
le okre
ś
lone operacje
Procedury nie powinny korzysta
ć
ze zmiennych globalnych
(w miar
ę
mo
ż
liwo
ś
ci), lecz pobiera
ć
i przekazywa
ć
wszystkie dane
(czy te
ż
wska
ź
niki do nich) jako parametry wywołania
Programowanie strukturalne
Programowanie strukturalne
to podzbiór programowania
proceduralnego zalecaj
ą
ce:
stosowanie konstrukcji j
ę
zyka takich jak p
ę
tle (
WHILE
) i
instrukcje warunkowe (
IF ELSE
)
unikanie instrukcji
GOTO
i wielokrotnych punktów wej
ś
cia i
wyj
ś
cia z kodu danego podbloku programu
(Inna definicja:) paradygmat zalecaj
ą
cy hierarchiczne dzielenie kodu
na moduły, które komunikuj
ą
si
ę
jedynie poprzez dobrze okre
ś
lone
interfejsy
12
Jerzy Duda, WZ AGH, 2008–2010
Dekompozycja funkcjonalna
Hierarchiczny podział systemu (programu) na bloki
funkcyjne (operacje, procedury, moduły)
Ka
ż
dy z bloków:
wykonuje okre
ś
lone zadanie dla systemu
ma jasno zdefiniowane wej
ś
cia i wyj
ś
cia
mo
ż
e by
ć
traktowany oddzielnie w stosunku do pozostałych
bloków
Jerzy Duda, WZ AGH, 2008–2010
Programowanie obiektowe (1)
Ź
ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/
W programowaniu obiektowym program to zbiór porozumiewaj
ą
cych
si
ę
ze sob
ą
obiektów
Obiekty to jednostki zawieraj
ą
ce pewne dane i umiej
ą
ce wykonywa
ć
na nich pewne operacje
Wa
ż
n
ą
cech
ą
jest tu powi
ą
zanie danych (czyli stanu) z operacjami
na nich (czyli poleceniami) w cało
ść
, stanowi
ą
c
ą
odr
ę
bn
ą
jednostk
ę
– obiekt
Cech
ą
nie mniej wa
ż
n
ą
jest mechanizm dziedziczenia, czyli
mo
ż
liwo
ść
definiowania nowych, bardziej zło
ż
onych obiektów, na
bazie obiektów ju
ż
istniej
ą
cych
Demo:
http://osilek.mimuw.edu.pl/images/9/91/kontener.html?
nazwa_animacji=/images/e/ef/Pp-1.1.2
13
Jerzy Duda, WZ AGH, 2008–2010
Programowanie obiektowe (2)
Ź
ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/
Zwolennicy programowania obiektowego uwa
ż
aj
ą
,
ż
e ten
paradygmat dobrze odzwierciedla sposób, w jaki ludzie my
ś
l
ą
o
ś
wiecie
Przykłady j
ę
zyków: Smalltalk, C++, Java, C#
public class Student {
String nazwisko;
String imie;
int ocena;
long nrIndeksu;
void ocen(int o);
{
this.ocena = o;
}
}
Jerzy Duda, WZ AGH, 2008–2010
Programowanie funkcyjne (1)
Ź
ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/
Program to po prostu zło
ż
ona funkcja (w sensie matematycznym),
która gdy otrzyma dane wej
ś
ciowe wylicza pewien wynik
Brak stanu maszyny: nie ma zmiennych, a co za tym idzie nie ma
ż
adnych efektów ubocznych
Nie ma te
ż
imperatywnych z natury, tradycyjnie rozumianych p
ę
tli
(wymagaj
ą
np. zmiennych do sterowania ich przebiegiem)
Demo:
http://osilek.mimuw.edu.pl/images/9/91/kontener.html?
nazwa_animacji=/images/9/93/Pp-1.1.3
14
Jerzy Duda, WZ AGH, 2008–2010
Programowanie funkcyjne (2)
Ź
ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/; Wikipedia
Konstruowanie programów to składanie funkcji, zazwyczaj
z istotnym wykorzystaniem rekurencji
(defun factorial (n)
(if (<= n 1)
1
(* n (factorial (- n 1)))))
let rec factorial n =
if n = 0
then 1
else n * factorial (n - 1)
System.Console.WriteLine(factorial anInt)
Przykłady j
ę
zyków: Lisp, Scheme, ML (bakusa), Haskell,
F#
Lisp
F#
Jerzy Duda, WZ AGH, 2008–2010
Programowanie logiczne (1)
Ź
ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/
Na program składa si
ę
zbiór zale
ż
no
ś
ci (przesłanki, predykaty) i
pewne stwierdzenie (cel, konkluzja)
Wykonanie programu to próba udowodnienia celu w oparciu o
podane przesłanki
Obliczenia wykonywane s
ą
niejako „przy okazji” dowodzenia celu
Podobnie jak w programowaniu funkcyjnym, nie „wydajemy
rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyska
ć
Demo:
http://osilek.mimuw.edu.pl/images/9/91/kontener.html?
nazwa_animacji=/images/d/dc/Pp-1.1.4
15
Jerzy Duda, WZ AGH, 2008–2010
Programowanie logiczne (2)
Ź
ródło: Małgorzata Moczurad, Włodzimierz Moczurad: Paradygmaty programowania, http://wazniak.mimuw.edu.pl/
ojciec(jan, jerzy).
ojciec(jerzy, janusz).
ojciec(jerzy, józef).
dziadek(X, Z) :- ojciec(X, Y), ojciec(Y, Z).
?- dziadek(X, janusz).
Przykłady: PROLOG, Mercury, Oz
Jerzy Duda, WZ AGH, 2008–2010
Programowanie sterowane
zdarzeniami
Ź
ródło: http://en.wikipedia.org/wiki/Event-driven_programming
Przepływ w programie zale
ż
y od akcji u
ż
ytkownika (klikni
ę
cie
myszki, naci
ś
ni
ę
cie klawisza) lub wiadomo
ś
ci z innych
programów
W programowaniu wsadowym przepływ jest okre
ś
lony przez
programist
ę
Wersja wsadowa
Wersja sterowana zdarzeniami
read a number (from the keyboard) and store it in variable A[0]
read a number (from the keyboard) and store it in variable A[1]
print A[0]+A[1]
set counter K to 0
repeat {
if a number has been entered (from the keyboard) {
store in A[K] and increment K
if K equals 2 print A[0]+A[1] and reset K to 0
}
}
16
Jerzy Duda, WZ AGH, 2008–2010
Generacje j
ę
zyków (1)
Ź
ródło: http://pl.wikipedia.org
1GL
nie było translatora, który był dokonywał kompilacji lub
asemblacji kodu
programowanie odbywało si
ę
bezpo
ś
rednio w j
ę
zyku maszyny
program był efektywny, ale wymagał ka
ż
dorazowego przepisania
dla innej maszyny
2GL
kod programu zapisywany symbolicznie w j
ę
zyku asemblera
poprawiona czytelno
ść
kodu dla człowieka
podstawowa wada: równie
ż
zwi
ą
zany z j
ę
zykiem danej maszyny
wykorzystywany, tam gdzie potrzebny jest b. szybki kod
wynikowy: j
ą
dra systemów, sterowników, fragmentów kodu gier,
szyfrowania
xor ax, ax
mov bx, ax
jmp skok1
01001001010010
101100101010
Jerzy Duda, WZ AGH, 2008–2010
Generacje j
ę
zyków (2)
Ź
ródło: http://en.wikipedia.org
3GL
program zapisywany w j
ę
zyku wysokiego poziomu
łatwo zrozumiały dla człowieka, m.in. przez zastosowanie
zmiennych
pierwsze przykłady: Fortran, ALGOL, COBOL
nowsze j
ę
zyki: Basic, C, C++, Java
4GL
j
ę
zyk programowania albo
ś
rodowisko programistyczne nastawione
na rozwój aplikacji dla biznesu
cel: redukcja czasu potrzebnego na stworzenie programu oraz
zmniejszenie liczby bł
ę
dów
zalicza si
ę
do nich:
generatory raportów (np. PS)
hurtownie danych (np. SAS)
j
ę
zyki baz danych (np. SQL)
let a=0
let b=a
goto skok1
SELECT 0 FROM dummytable
17
Jerzy Duda, WZ AGH, 2008–2010
Generacje j
ę
zyków (3)
Ź
ródło: http://en.wikipedia.org
4GL (c.d.)
niektórzy autorzy nie uwa
ż
aj
ą
j
ę
zyków 4GL za prawdziwe j
ę
zyki
inni proponuj
ą
okre
ś
la
ć
tym mianem tylko j
ę
zyki umo
ż
liwiaj
ą
ce
programowanie obiektowe
5GL
ide
ą
jest aby komputer sam rozwi
ą
zywał problem
bazuje na rozwi
ą
zywaniu problemów poprzez dostarczenie
ogranicze
ń
, a nie na algorytmie dostarczonym przez programist
ę
Freuder: "to jak
Ś
wi
ę
ty Graal dla programowania – u
ż
ytkownik
dostarcza problem, a komputer sam go rozwi
ą
zuje"
do j
ę
zyków 5GL zalicza si
ę
wi
ę
kszo
ść
j
ę
zyków programowania w
logice (PROLOG) oraz w logice z ograniczeniami
wykorzystuj
ą
osi
ą
gni
ę
cia sztucznej inteligencji
Jerzy Duda, WZ AGH, 2008–2010
Generacje j
ę
zyków (4)
5GL – definicja IEEE
5GL to j
ę
zyk, który realizuje koncepcje systemów opartych na
wiedzy, systemów ekspertowych, systemów wnioskowania oraz
przetwarzaniu j
ę
zyka naturalnego
5GL – alternatywna definicja
5GL to
ś
rodowisko programistyczne, które wykorzystuje graficzny
interfejs u
ż
ytkownika w celu stworzenia kodu
ź
ródłowego, który jest
nast
ę
pnie kompilowany przy u
ż
yciu j
ę
zyka 3GL lub 4GL
Programowanie graficzne umo
ż
liwia łatwiejsze stosowanie klas,
poruszanie si
ę
po ich hierarchii, itd
18
Jerzy Duda, WZ AGH, 2008–2010
Kompilator
Kompilator
– program, który przetwarza kod napisany w
jednym j
ę
zyku (tzw. j
ę
zyku
ź
ródłowym) na równowa
ż
ny kod
w drugim j
ę
zyku (tzw. j
ę
zyku wynikowym)
J
ę
zyki wynikowe generowane przez kompilatory
j
ę
zyk (kod) maszynowy
dowolnego komputera od
mikrokontrolera do superkomputera
przeno
ś
ny
kod po
ś
redni
dla ró
ż
norodnych maszyn
wirtualnych (Java i platforma .NET)
inny
j
ę
zyk programowania
(istniej
ą
np. kompilatory
tłumacz
ą
ce z j
ę
zyka Fortran na j
ę
zyk Pascal); zwane s
ą
translatorami
Asembler
tłumaczy kod zapisany w
j
ę
zyku symbolicznym
na
j
ę
zyk maszynowy
Ź
ródło: Wojciech Complak: Podstawy kompilatorów, http://wazniak.mimuw.edu.pl/
Jerzy Duda, WZ AGH, 2008–2010
Interpreter
Interpreter
– program komputerowy, który analizuje kod
ź
ródłowy
programu a przeanalizowane fragmenty wykonuje
Wykonanie programu za pomoc
ą
interpretera jest wolniejsze a
do tego zajmuje wi
ę
cej zasobów systemowych ni
ż
wykonanie
kodu skompilowanego
Interpreter musi analizowa
ć
ka
ż
de wyra
ż
enie i nast
ę
pnie
wykona
ć
akcj
ę
, a kod skompilowany jedynie wykonuje akcj
ę
Analiza wyra
ż
enia nazywana jest "kosztem interpretacji"
W implementacjach b
ę
d
ą
cych w pełni interpreterami wykonanie
wielokrotne tego samego fragmentu kodu wymaga wielokrotnej
interpretacji tekstu
Cykl edycja-interpretacja-debugowanie mo
ż
e czasami by
ć
jednak znacznie krótszy ni
ż
cykl edycja-kompilacja-
uruchomienie-debugowanie
Ź
ródło: http://pl.wikipedia.org/