JP SS 1 podstawy JP

background image

1

Języki Programowania

Podstawowe pojęcia

2

Plan wykładu

Właściwości języków programowania

Czytelność kodu

Łatwość 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

background image

2

3

Programowanie komputera

Sprzet

Jezyk maszynowy

Assembler

Jezyk wysokiego poziomu

Fortran

C, C++

Pascal

Kompilacja

Egzekwowanie
programu

Narzedzia programistyczne

4

Języki …

Jezyk maszynowy

...01100100111011...

Jezyk maszynowy

...01100100111011...

Jezyk naturalny

...niech mi Pan nie przerywa, Panie...

Jezyk naturalny

...niech mi Pan nie przerywa, Panie...

Jezyk niskiego poziomu

Jezyk niskiego poziomu

Jezyk wysokiego poziomu

Jezyk wysokiego poziomu

Jezyk niskiego poziomu

Jezyk niskiego poziomu

Jezyk wysokiego poziomu

Jezyk wysokiego poziomu

background image

3

5

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

6

Ewolucja JP

011111110100010101001100010001100000000100000010000000010000000000000000000000
000000000000000000000000000000000000000000000000000000000000000001000000000000
001000000000000000000000000000000001000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001010000100000000000000000000000000
000000000000000000110100000000000000000000000000000000000000000000101000000000
000000100000000000000000010000000000101110011100110110100001110011011101000111
001001110100011000010110001000000000001011100111010001100101011110000111010000
000000001011100111001001101111011001000110000101110100011000010000000000101110
011100110111100101101101011101000110000101100010000000000010111001110011011101
000111001001110100011000010110001000000000001011100111001001100101011011000110
000100101110011101000110010101111000011101000000000000101110011000110110111101
101101011011010110010101101110011101000000000000000000000000000000000010011101
111000111011111110010000000100110000000000000000000000001001000000010010011000
000000000000010101000000000000000000000000100100100001001010100000000000000100
000000000000000000000000000000000001000000000000000000000000101000000001000000
000000000010001001000000010000000000000001000000010101000000000000000000000000
100100100001001010100000000000000100000000000000000000000000000000000001000000
000000000000000000101100000001000000000000000100001000000000000000000000100000
000100000000000000000000000010000001110001111110000000001000100000011110100000
000000000000000000000000000000000000000000000001001000011001010110110001101100
011011110111011101101111011100100110110001100100001000010000000000000000000000
000000000000000000000000000000000000000001000000000000000000000000000000000000
000000000000000000000000000000000100000000001111111111110001000000000000000000
000000000000010000000000000000000000000000000000000000000000000000000000000000
000001000000000011111111111100010000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000001100000000000000000000
001100000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000010000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000110000000
000000000000000100000000000000000000000000001101000000000000000000000000000000
000000000000000000000000000000000000001000000000000000000000000000000000000000
000000000000000100010000000000000000000000000000000000000000000000000000000000
000000000010000000000000000000000000000000000000000000000000000010001100000000
000000000000000000000000000000000000000000000000000000000000100000000000000000
000000000000000000000000000000000000101100000000000000000000000000000000000000
000000000000000000000000000000001000000000000000000000000000000000000000000000
000000001101001000000000000000000000000000000000000000000000000000000000100100
000010010000000000000000000000010000000000000000000000000011011100000000000000
000000000000000000000000000000000000000000000000000000100000000000000000000000
000000000000001101000011001010110110001101100011011110010111001100011011100000

pierwsze komputery
(ENIAC)

nie były

programowane





przełom lat 40/50:

kodowanie bezpośrednio

w języku maszynowym

background image

4

7

Ewolucja JP cd.

.file "hello.cpp"
gcc2_compiled.:
.global _Q_qtod
.section ".rodata"
.align 8
.LLC0: .asciz "Hello world!"
.section ".text"
.align 4
.global main
.type main,#function
.proc 04
main: !#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
sethi %hi(cout),%o1
or %o1,%lo(cout),%o0
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

lata 50.: język asembler

mnemoniki (zapis symboliczny)
zastąpiły kody numeryczne

adresy relatywne, etykiety


oddzielny program (assembler)
dokonuje translacji z kodu asemblera
na kod maszynowy

• to jest ciągle kod maszynowy,

niskopoziomowy

8

Ewolucja JP cd.

późne lata 50. – rozwój języków wysokiego
poziomu

programista może używać wyższego
poziomu abstrakcji

compiler

translacja całego kodu na kod

maszynowy (np., FORTRAN, C++)

interpreter

wykonywanie

(interpretowanie) kodu linia po linii (np.,
BASIC, Scheme)

Java jest hybrydą

• kod źródłowy jest kompilowany na „byte

code”

• „byte code” jest interpretowany prze

maszynę wirtualną Java Virtual Machine
- JVM (JDK lub przeglądarka WWW)

// File: hello.cpp
// Author: Dave Reed
//
// This program prints "Hello world!"
////////////////////////////////////////

#include <iostream>
using namespace std;

int main()
{
cout << "Hello world!" << endl;

return 0;
}

background image

5

9

FORTRAN (Formula Translator)

FORTRAN

był pierwszym językiem

wysokiego poziomu

 opracowany przez

John Backus

z

IBM

 zaprojektowany dla komputera IBM

704

ukończony w 1957

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)

C
C FORTRAN program
C Prints "Hello world" 10 times
C
PROGRAM HELLO
DO 10, I=1,10
PRINT *,'Hello world'
10 CONTINUE
STOP
END

John Backus

10

C  C++  Java  JavaScript

C (1971, Dennis Ritchie at Bell Labs)

• przeznaczony do programowania

systemowego (użyty do implementacji

UNIX)

• konstrukcje wysokiego poziomu ale z

dostępem do sprzętu (low-level)

C++ (1985, Bjarne Stroustrup at Bell Labs)

• rozszerzenie C, wprowadzenie obiektów
• również zorientowany obiektowo

Java (1993, Sun Microsystems)

• bazuje na C++, ale prostszy i bardziej

niezawodny

wyłącznie obiektowy, lepsze wsparcie

dla abstrakcji i sieci

JavaScript (1995, Netscape)

• Język skryptowy dla stron WWW

#include <stdio.h>
main() {
for(int i = 0; i < 10; i++) {
printf ("Hello World!\n");
}
}

#include <iostream>
using namespace std;
int main() {
for(int i = 0; i < 10; i++) {
cout << "Hello World!" << endl;
}
return 0;
}

public class HelloWorld {
public static void main (String args[]) {
for(int i = 0; i < 10; i++) {
System.out.println("Hello World ");
}
}
}

<html>
<body>
<script type="text/javascript">
for(i = 0; i < 10; i++) {
document.write("Hello World<br
/>");
}
</script>
</body>
</html>

C

C++

Java

JavaScript

background image

6

11

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

12

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

background image

7

13

Rodzina języków programowania

14

Popularność JP

Java

C++

background image

8

15

Popularność JP

Java

C++

PHP

C

Python

C#

JavaScript

Perl

16

Popularność JP – TIOBE Index

background image

9

17

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.






18

Popularność cd.

http://www.ideachampions.com/weblogs/archives/2011/10/ipod_ipad_ipaid.shtml

background image

10

19

Szybkość programów dla danych języków programowania

www.bagley.org/~doug/shoutout

Completely Random and Arbitrary
Point System


Wyszukiwarka

Podobne podstrony:
JP SS 5 podstawy Java (2)
JP SS 5 podstawy Java
JP SS 1 podstawy JP
JP SS 5 podstawy Java
JP SS 2 algorytmy i podstawy programowania
JP SS 4 start Java
JP SS 10 Interfejs graficzny
JP SS 7 Klasy i obiekty
JP SS 6 BlueJ
JP SS 6 Klasy i obiekty
JP SS 7 Typy i operacje
JP SS 8 Instrukcje, pętle
JP SS 4 wprowadzenie Java
JP SS 3 jezyk C klasy id 228754 Nieznany
JP SS 9 Tablice IO wyjątki

więcej podobnych podstron