PODSTAWY INFORMATYKI
PODSTAWY INFORMATYKI
Wykład 1
Historia
• 1623-24: Wilhelm Schickard, kalkulator
mechaniczny
• 1642: Błażej Pascal, maszyna dodająca
• 1670: Gottfried Wilhelm Leibnitz,
maszyna mnożąca
• 1804: Joseph Marie Jacquard:
programowana maszynka tkająca
• 1822: Charles Babbage: koncepcja
komputera cyfrowego
• 1850: Augusta Ada Byron: projekty
programowanych maszyn liczących
Historia
• 1847: George Boole, "The Mathematical
Analysis of Logic: Being an Essay Towards
a Calculus of Deductive Reasoning”
• 1944: Howard Aiken, komputer cyfrowy
(częściowo mechaniczny)
• 1949: Konrad Zuse, komputery
mechaniczne i elektromechaniczne
• 1945: John von Neumann: nowoczesny
komputer, wspólna pamięć dla danych i
programu
Historia
•
1946: ENIAC, 18000 lamp próżniowych, 5 mnożeń
na sekundę (5 FLOPS = 0.000005 MFLOPS)
•
1957: zastosowanie tranzystorów w komputerach
•
1967: zastosowanie układów scalonych w
komputerach
•
1971: Intel 4004, pierwszy mikroprocesor,
60000 instrukcji na sekundę, 0.06 MIPS
•
Prawo Moore’a (1968):
Złożoność układów cyfrowych stosowanych w
komputerach podwaja się co 18 miesięcy. Dotyczy
do pamięci, mocy obliczeniowej itp.
•
2002: Pentium 4, Athlon: 2000 MIPS, 500 MFLOPS
•
The Earth Simulator: 40 TFLOPS = 40000000
MFLOPS
Ogólny schemat
komputera
Procesor
Pamięć
Urządze
niawe/w
y
sterowanie
mag. danych
mag. adresowa
Reprezentacja dwójkowa
liczb całkowitych
• Liczby całkowite maja dwie reprezentacje:
dwójkowa oraz dziesiętna. Reprezentacje
liczb całkowitych są stosowane do
zapisywania tych liczb w pamięci
procesora; koprocesor wykonuje obliczenia
na liczbach w reprezentacji
zmiennoprzecinkowej. Dwójkowe liczby
całkowite są zapisywane zawsze w kodzie
U2 (uzupełnienia do dwóch).
Działania na liczbach w systemie
dwójkowym: kod prosty, odwrotny
i dopełnieniowy
kod odwrotny (notacja
uzupełnieniowa do 1), polega na
odjęciu odjemnika od podstawy
pomniejszonej o 1. W przypadku liczb
dwójkowych polega na zamianie 0 i 1 w
liczbie
kod dopełnieniowy (notacja
uzupełnieniowa do 2), jest to notacja
uzupełnieniowa do 1 powiększona o 1
System
ósemkowy,szesnastkowy
• System ósemkowy używany w komputerze
polega na tym, że komputer zamiast pamiętać
szereg 0 i 1 zamienia je odpowiednio na liczby
w kodzie ósemkowym trójkami co zmniejsza
obszar w zajmowanej pamięci np. (111)
2
=(7)
8
• System szesnastkowy używany w
komputerze polega na tym, że komputer
zamiast pamiętać szereg 0 i 1 zamienia je
odpowiednio na liczby w kodzie
szesnastkowym czwórkami co zmniejsza
obszar w zajmowanej pamięci np. (1111)
2
=(f)
16
,gdzie(a=10,b=11,c=12,d=13,e=14,f=15)
Programowanie
•
Procesor (CPU) rozumie
tylko
kod maszynowy
Wersja binarna:
00100011 11010001
10001010 00000110
01000110
11000001 11101001 00000010
01000111
10000011 11111000 00001000
Wersja
szesnastkowa:
23 D1
8A 06
46
C1 E9 02
47
83 F8 08
...nazywany też
językiem pierwszej
generacji
Programowanie
• Procesor rozumie
tylko
kod maszynowy
Asembler - mnemoniki:
mov al,byte ptr [esi]
mov byte ptr [edi],al
inc esi
shr ecx,2
inc edi
cmp ecx,8
...asembler jest nazywany
językiem
drugiej generacji
Asembler
• Zależy od procesora: nie jest
przenośny
• Trudne programowanie: wolne i
podatne na błędy
• Daje potencjalnie najszybszy program
ale: procesory są szybsze z każdym
rokiem, ludzie nie
Języki trzeciej generacji
• Nazywane również
językami
wysokiego poziomu, 3GL
• Zaprojektowane jako łatwiejsze do
zrozumienia i stosowania przez ludzi
• Zwykle przenośne
• Problem: procesor ich nie rozumie
• Rozwiązanie: translatory
Języki wysokiego
poziomu
• 1946:
Plankalkul
, Konrad Zuse
• 1949:
Short Code
• 1951:
A-0
, Grace Hopper
• 1957:
FORTRAN
, John Backus
• 1959:
LISP
• 1958:
COBOL
• 1960:
ALGOL 60
• 1962:
APL
• 1964:
BASIC
, J. Kemeny and T. Kurtz
Języki wysokiego
poziomu
• 1970:
Pascal
, Niklaus Wirth
• 1972:
C
, Dennis Ritchie and Brian
Kernighan
• 1980:
Smalltalk
• 1982:
PostScript
• 1983:
C++
, Bjarne Stroustrup
• 1989:
ANSI C
• 1994:
Java
, grupa robocza pod kierunkiem
Jamesa Goslinga
Jak przetłumaczyć?
• Interpreter: tłumaczy jedną linię kodu,
wykonuje ją i przechodzi do następnej
linii
• Kompilator: tłumaczy cały kod, wynik
może być wykonany bez angażowania
kompilatora
Droga z tekstu
źródłowego do kodu
maszynowego: kompilacja
Tekst
źródłowy
Kompilator
Plik OBJ
Bibliotek
i
Linker
Kod maszynowy