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