Języki Programowania
Podstawowe pojęcia
Plan wykładu
żð WÅ‚aÅ›ciwoÅ›ci jÄ™zyków programowania
żð Czytelność kodu
żð Aatwość programowania
żð Niezawodność
żð Ewolucja jÄ™zyków programowania
żð JÄ™zyk maszynowy
żð JÄ™zyki proceduralne
żð JÄ™zyki zorientowane obiektowo
żð Rodzina jÄ™zyków programowania
żð Popularność jÄ™zyków, trendy, zastosowania
2
1
Programowanie komputera
Narzedzia programistyczne
Fortran C, C++ Pascal
Kompilacja
Jezyk wysokiego poziomu
Egzekwowanie
Assembler
programu
Jezyk maszynowy
Sprzet
3
Języki &
Jezyk naturalny
Jezyk naturalny
...niech mi Pan nie przerywa, Panie...
...niech mi Pan nie przerywa, Panie...
Jezyk wysokiego poziomu
Jezyk wysokiego poziomu
Jezyk wysokiego poziomu
Jezyk wysokiego poziomu
Jezyk niskiego poziomu
Jezyk niskiego poziomu
Jezyk niskiego poziomu
Jezyk niskiego poziomu
Jezyk maszynowy
Jezyk maszynowy
...01100100111011...
...01100100111011...
4
2
Dlaczego istnieje tyle języków programowania?
żð Teoretycznie, wszystkie jÄ™zyki programowania sÄ… sobie
równoważne
żð Kompilowane/interpretowane na jÄ™zyk
wewnętrzny procesora (asembler)
żð Dlaczego istnieje tyle jÄ™zyków naturalnych ?
żð W praktyce, jÄ™zyki naturalne speÅ‚niajÄ… rozmaite zapotrzebowania
określone przez
żð Różne kultury (różne obszary zastosowaÅ„)
żð Różne Å›rodowiska zawodowe
żð Różne sposoby postrzegania Å›wiata
5
Ewolucja JP
011111110100010101001100010001100000000100000010000000010000000000000000000000
żð pierwsze komputery
000000000000000000000000000000000000000000000000000000000000000001000000000000
001000000000000000000000000000000001000000000000000000000000000000000000000000
(ENIAC) nie były
000000000000000000000000000000000000000000001010000100000000000000000000000000
000000000000000000110100000000000000000000000000000000000000000000101000000000
programowane
000000100000000000000000010000000000101110011100110110100001110011011101000111
001001110100011000010110001000000000001011100111010001100101011110000111010000
000000001011100111001001101111011001000110000101110100011000010000000000101110
011100110111100101101101011101000110000101100010000000000010111001110011011101
000111001001110100011000010110001000000000001011100111001001100101011011000110
000100101110011101000110010101111000011101000000000000101110011000110110111101
101101011011010110010101101110011101000000000000000000000000000000000010011101
111000111011111110010000000100110000000000000000000000001001000000010010011000
000000000000010101000000000000000000000000100100100001001010100000000000000100
000000000000000000000000000000000001000000000000000000000000101000000001000000
000000000010001001000000010000000000000001000000010101000000000000000000000000
100100100001001010100000000000000100000000000000000000000000000000000001000000
000000000000000000101100000001000000000000000100001000000000000000000000100000
000100000000000000000000000010000001110001111110000000001000100000011110100000
000000000000000000000000000000000000000000000001001000011001010110110001101100
011011110111011101101111011100100110110001100100001000010000000000000000000000
żð przeÅ‚om lat 40/50:
000000000000000000000000000000000000000001000000000000000000000000000000000000
000000000000000000000000000000000100000000001111111111110001000000000000000000
000000000000010000000000000000000000000000000000000000000000000000000000000000
kodowanie bezpośrednio
000001000000000011111111111100010000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000001100000000000000000000
w języku maszynowym
001100000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000010000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000110000000
000000000000000100000000000000000000000000001101000000000000000000000000000000
000000000000000000000000000000000000001000000000000000000000000000000000000000
000000000000000100010000000000000000000000000000000000000000000000000000000000
000000000010000000000000000000000000000000000000000000000000000010001100000000
000000000000000000000000000000000000000000000000000000000000100000000000000000
000000000000000000000000000000000000101100000000000000000000000000000000000000
000000000000000000000000000000001000000000000000000000000000000000000000000000
000000001101001000000000000000000000000000000000000000000000000000000000100100
000010010000000000000000000000010000000000000000000000000011011100000000000000
000000000000000000000000000000000000000000000000000000100000000000000000000000
000000000000001101000011001010110110001101100011011110010111001100011011100000
6
3
Ewolucja JP cd.
.file "hello.cpp"
gcc2_compiled.:
lata 50.: język asembler
.global _Q_qtod
żð mnemoniki (zapis symboliczny)
.section ".rodata"
.align 8
zastąpiły kody numeryczne
.LLC0: .asciz "Hello world!"
żð adresy relatywne, etykiety
.section ".text"
.align 4
.global main
.type main,#function
oddzielny program (assembler)
.proc 04
main: !#PROLOGUE# 0
dokonuje translacji z kodu asemblera
save %sp,-112,%sp
na kod maszynowy
!#PROLOGUE# 1
sethi %hi(cout),%o1
" to jest ciÄ…gle kod maszynowy,
or %o1,%lo(cout),%o0
niskopoziomowy
sethi %hi(.LLC0),%o2
or %o2,%lo(.LLC0),%o1
call __ls__7ostreamPCc,0
nop
mov %o0,%l0
mov %l0,%o0
sethi %hi(endl__FR7ostream),%o2
or %o2,%lo(endl__FR7ostream),%o1
call __ls__7ostreamPFR7ostream_R7ostream,0
nop
7
Ewolucja JP cd.
// File: hello.cpp
pózne lata 50. rozwój języków wysokiego
// Author: Dave Reed
poziomu
//
// This program prints "Hello world!"
żð programista może używać wyższego
////////////////////////////////////////
poziomu abstrakcji
#include
using namespace std;
" compiler translacja całego kodu na kod
maszynowy (np., FORTRAN, C++)
int main()
{
" interpreter wykonywanie
cout << "Hello world!" << endl;
(interpretowanie) kodu linia po linii (np.,
BASIC, Scheme)
return 0;
}
Java jest hybrydÄ…
" kod zródłowy jest kompilowany na byte
code
" byte code jest interpretowany prze
maszynÄ™ wirtualnÄ… Java Virtual Machine
- JVM (JDK lub przeglÄ…darka WWW)
8
4
FORTRAN (Formula Translator)
C
FORTRAN był pierwszym językiem
C FORTRAN program
wysokiego poziomu
C Prints "Hello world" 10 times
C
żð opracowany przez John Backus z
PROGRAM HELLO
IBM
DO 10, I=1,10
żð zaprojektowany dla komputera IBM
PRINT *,'Hello world'
10 CONTINUE
704
STOP
żð ukoÅ„czony w 1957
END
żð pomimo pewnych problemów,
FORTRAN był bardzo popularny w
latach 50. i 60.
żð FORTRAN nadal siÄ™ rozwijaÅ‚
" FORTRAN II (1958)
" FORTRAN IV (1962)
" FORTRAN 77 (1977)
" FORTRAN 90 (1990)
John Backus
9
C Ä…ð C++ Ä…ð Java Ä…ð JavaScript
#include
żðC (1971, Dennis Ritchie at Bell Labs)
main() {
for(int i = 0; i < 10; i++) {
" przeznaczony do programowania
printf ("Hello World!\n");
}
systemowego (użyty do implementacji
C
}
UNIX)
#include
" konstrukcje wysokiego poziomu ale z
using namespace std;
int main() {
dostępem do sprzętu (low-level)
for(int i = 0; i < 10; i++) {
cout << "Hello World!" << endl;
żðC++ (1985, Bjarne Stroustrup at Bell Labs)
}
return 0;
" rozszerzenie C, wprowadzenie obiektów
C++
}
" również zorientowany obiektowo
public class HelloWorld {
żðJava (1993, Sun Microsystems) public static void main (String args[]) {
for(int i = 0; i < 10; i++) {
" bazuje na C++, ale prostszy i bardziej System.out.println("Hello World ");
}
niezawodny
}
Java
}
" wyłącznie obiektowy, lepsze wsparcie
dla abstrakcji i sieci
żðJavaScript (1995, Netscape)
JavaScript
10
5
Inne znaczące języki
żð COBOL (1960, Dept of Defense/Grace Hopper)
żð zaprojektowany dla aplikacji biznesowych, funkcje dla struktur danych i
zarzÄ…dzania plikami
żð BASIC (1964, Kemeny & Kurtz Dartmouth)
żð zaprojektowany dla poczÄ…tkujÄ…cych, popularny w latach 70., (obecnie czasami
stosowany BASCOM dla mikrokontrolerów AVR)
żð Simula 67 (1967, Nygaard & Dahl Norwegian Computing Center)
żð zaprojektowany dla symulacji, rozszerzenie jÄ™zyka ALGOL do wsparcie klas i
obiektów
żð Pascal (1971, Wirth Stanford)
żð zaprojektowany dla nauczania ale powszechnie stosowany, (MATLAB bazuje na
języku Pascal)
żð Prolog (1972, Colmerauer, Roussel Aix-Marseille, Kowalski Edinburgh)
żð jÄ™zyk programowania logiki, programy okreÅ›lone jako zbiór faktów i zasad
żð Ada (1983, Dept of Defense)
żð duży i skomplikowany jÄ™zyk, zaprojektowany jako oficjalny jÄ™zyk rzÄ…dowy
11
Nie ma idealnego rozwiÄ…zania &
żð pamiÄ™taj: nie ma najlepszego (idealnego) jÄ™zyka
programowania
żð każdy jÄ™zyk ma swoje zalety i wady
żð jÄ™zyki dla okreÅ›lonych aplikacji
biznesowe Ä…ð COBOL
sztuczna inteligencja Ä…ð LISP/Scheme, Prolog
programowanie systemowe Ä…ð C
inżynieria Ä…ð C++, Java, Smalltalk
strony WWW Ä…ð Java, JavaScript, VBScript, PERL
12
6
Rodzina języków programowania
13
Popularność JP
Java
C++
14
7
Popularność JP
Java
Perl
JavaScript
C++
C#
Python
C PHP
15
Popularność JP TIOBE Index
16
8
Popularność cd.
Objective-C rozszerzenie
języka C o możliwości
obiektowe (wzorowane na
Smalltalku). Jest używany
głównie w API w systemie
Mac OS X oraz w iOS.
Objective-C zdobywa
popularność dzięki
sukcesom urządzeń
mobilnych iPhone, iPod
touch i iPad.
17
Popularność cd.
http://www.ideachampions.com/weblogs/archives/2011/10/ipod_ipad_ipaid.shtml
18
9
Szybkość programów dla danych języków programowania
www.bagley.org/~doug/shoutout
Completely Random and Arbitrary
Point System
19
10
Wyszukiwarka
Podobne podstrony:
JP SS 5 podstawy Java
JP SS 5 podstawy Java (3)
JP SS 1 podstawy JP
JP SS 5 podstawy Java
JP SS 2 algorytmy i podstawy programowania
JP SS 6 Klasy i obiekty
JP SS 4 start Java
JP SS Interfejs graficzny
JP SS 4 wprowadzenie Java
JP SS 7 Klasy i obiekty
JP SS 6 BlueJ
JP SS 3 jezyk C
JP SS 3 jezyk C
JP SS 4 start Java
JP SS 8 Instrukcje, pętle
JP SS 7 Typy i operacje
JP SS 9 Tablice IO wyjÄ…tki
JP SS 3 jezyk C
więcej podobnych podstron