Professional Documents
Culture Documents
PROGRAMIRANJE
P1 Debugiranje
Raunalni sustav
Raunalni sustav
Raunalni sustav
Hardver softver
Fizika arhitektura - programska
podrka
esto se ue odvojeno, ali u
raunarstvu su usko povezani i dok
se bavi jednim uvijek se mora misliti
na drugo.
Budui da razvoj fizike arhitekture
esto prethodi razvoju programske
podrke, razvoj programske podrke
vie ovisi o fizikoj arhitekturi nego
obrnuto.
Raunalni sustav
Kad raste veliina raunala, raste i
cijena
Kad raste veliina raunala, raste i
potronja
Raunalni sustav treba raditi
dovoljno dobro, biti to jeftiniji i
imati to manju potronju.
to treba raditi dovoljno dobro?
Raunalni sustav
Sustavi za rad u stvarnom vremenu
Ugraeni sustavi
Namjenski raunalni sustavi
Procesori s ogranienim resursima
Memorija, registri
Brzina
Energija
Asembler
Blii arhitekturi
Prevoditelj (asembler) laki za izradu
Kompliciraniji za uspjeno programiranje
Programer
Sustav domain
(engl. host
system)
Ciljni sustav
(engl. target
system)
Obino raunalo
ope namjene
Na namjenski
raunalni sustav
Programski jezik C
Vii programski jezik koji se najee
koristi za programiranje NRS je C.
Position
Jun 2013
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Position
Jun 2012
1
2
4
3
7
5
6
8
9
11
10
12
17
14
16
21
19
13
18
22
Programming
Language
C
Java
Objective-C
C++
PHP
C#
(Visual) Basic
Python
Perl
JavaScript
Ruby
Visual Basic .NET
Transact-SQL
Lisp
Pascal
Bash
PL/SQL
Delphi/Object Pascal
Ada
MATLAB
Ratings
Jun 2013
17.809%
16.656%
10.356%
8.819%
5.987%
5.783%
4.348%
4.183%
2.273%
1.654%
1.479%
1.067%
0.913%
0.879%
0.779%
0.711%
0.657%
0.602%
0.575%
0.563%
Delta
Jun 2012
+0.08%
+0.39%
+1.26%
-0.54%
+0.70%
-1.24%
-1.70%
+0.33%
+0.05%
+0.18%
-0.20%
-0.15%
+0.21%
-0.11%
-0.07%
+0.09%
+0.02%
-0.55%
-0.11%
0.00%
Change
Programming
Language
Ratings
Change
Oct 2015
Oct 2014
Java
19.543%
+6.04%
16.190%
-1.47%
C++
5.749%
+0.88%
C#
4.825%
+0.08%
Python
4.512%
+2.18%
PHP
2.561%
-0.38%
13
2.462%
+0.71%
12
JavaScript
2.292%
+0.52%
Perl
2.247%
+0.13%
10
16
Ruby
1.825%
+0.70%
11
11
Delphi/Object Pascal
1.637%
-0.18%
12
31
Assembly language
1.573%
+1.16%
13
14
Visual Basic
1.515%
-0.05%
Programski jezik C
Zato programski jezik C?
Nije previe visok
Omoguuje bolje cijeenje performansi
Relativno dobro preslikavanje njegovih
operacija na operacije fizike arhitekture
Povijesni razlozi
Nagomilan ve postojei kod
Veliki broj njegovih poznavatelja
Konstrukcija prevoditelja relativno
jednostavnija
Programski jezik C
Zato NE programski jezik Ce?
Nije previe visok
Vii nivo apstrakcije bi olakavao programiranje
Relativno loe preslikavanje njegovih operacija na
operacije fizike arhitekture
Povijesni razlozi
Valjda je do sada moglo biti smiljeno neto pametnije
Veliki broj njegovih poznavatelja
Koji standard tono podrava konkretan sustav?
K&R
C99
C89
C11
K&R
C99
C89
C11
Debugiranje
Debugiranje?
Buba (eng. Bug /bag/) - Problem u
programu
Otklanjanje buba, problema, odnosno
bugova
U uem smislu to podrazumijeva:
kontrolirano izvravanje programa i
uvid u stanje programa radi
otklanjanja problema.
U irem smislu to su svi mogui (i
nemogui) postupci za otkrivanje i
Testiranje (ispitivanje)
Program najee radi savreno sve dok ga ne
pokrenemo.
Provjera ispravnosti: verifikacija i validacija
Verifikacija
provjerava radi li program ono to mi mislimo da treba raditi;
odgovara na pitanje: Radimo li proizvod ispravno?
Validacija
provjerava radi li program ono to bi trebao raditi;
to to mi mislimo da program treba raditi ne mora biti ono to
treba korisniku/naruitelju;
odgovara na pitanje: Radimo li ispravan proizvod?
Otklanjanje problema
Program najee ne radi dobro sve dok ga ne
izdebugiramo.
Ispitni sluaj:
ulaz (pobuda) - oekivani izlaz (reakcija)
Zato dobivamo neoekivan izlaz?
Potreban nam je bolji uvid u izvravanje programa.
Uobiajeno dostupne stvari:
Kontrolirano izvravanje:
Korak po korak i toke prekida
Otklanjanje problema
Neuobiajeno dostupne stvari:
Kontrolirano izvravanje:
Korak unazad
Uvjetne toke prekida
Kretanje po tijeku podataka, umjesto po tijeku
izvravanja
Sloeni bugovi
Manifestacija problema i mjesto greke u kodu su
vrlo posredno povezane.
Razumjeti sustav
Reproducirati bug
Ne pretpostavljati - pogledati
Podijeli pa vladaj
Postepeno mijenjati
Voditi biljeke
Provjeriti kabel (da nije do fizike
arhitekture?)
Primijeniti novi pogled na stvari
Nita se ne popravlja samo od sebe
Najvaniji savjet!
Pokuati rijeiti
problem