Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf ·...

42
Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie 2017 Departamentul de Calculatoare CSE Dep Cursul 3, Dezvoltarea programelor 1/48

Transcript of Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf ·...

Page 1: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Cursul 3Dezvoltarea programelor

Utilizarea Sistemelor de Operare (USO)9 noiembrie 2017

Departamentul de Calculatoare

CSE Dep Cursul 3, Dezvoltarea programelor 1/48

Page 2: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Moto

There are only two kinds of programming languages: those peoplealways bitch about and those nobody uses.

Bjarne Stroustrup

One of the main causes of the fall of the Roman Empire was that –lacking zero – they had no way to indicate successful termination

of their C programs.

Robert Firth

CSE Dep Cursul 3, Dezvoltarea programelor 2/48

Page 3: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Utilizarea sistemului de fis, iere

separator director ierarhie

ier dimensiune

cale

nume

director

r d cin

creare tergere

listarea are

opera ii

recursive

trunchiere

redirectare

concepte

opera ii

nume

binar/text

ASCII

editare

arhivarecomprimare

copiere

mutare

schimbare

director

CSE Dep Cursul 3, Dezvoltarea programelor 3/48

Page 4: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Utilizarea sistemului de fis, iere

http://www.geekarmy.com/geeks/2906/file-transferring/

CSE Dep Cursul 3, Dezvoltarea programelor 4/48

Page 5: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Remember: WoUSO v11

I ıncepe mart, i, 10 octombrie 2017

I folosit, i contul de cs.curs.pub.ro pentru autentificare

I urmarit, i forumuri s, i pagina de Facebook

CSE Dep Cursul 3, Dezvoltarea programelor 5/48

Page 6: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Suport curs

I Suport (Introducere ın sisteme de operare)I Capitolul 11 – Compilare s, i linkingI Capitolul 14 – Utilitare pentru dezvoltare

CSE Dep Cursul 3, Dezvoltarea programelor 6/48

Page 7: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Conexiunea dezvoltator - utilizator

fișcod sursă

fișier

cod sursă

fișier

obiect

fișier

obiect

fișier

executabilpachet

software

fișier

de datefișier de

configurare

bibliotecă

compilare

compilare

linking

dezvoltator

utilizator

CSE Dep Cursul 3, Dezvoltarea programelor 8/48

Page 8: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Operat, iile utilizatorului cu aplicat, iile

I instalare

I dezinstalare

I parcurgere documentat, ie

I configurare s, i personalizare

I rulare (cu diverse opt, iuni)

I dezvoltatorul trebuie sa-i faca viat,a cat mai us,oarautilizatorului

CSE Dep Cursul 3, Dezvoltarea programelor 9/48

Page 9: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Pachete software

I arhive cu fis, ierele necesare pentru instarea aplicat, iei

I fis, iere de date, fis, iere de configurare, fis, iere executabile

I fis, ierele executabile sunt folosite pentru a rula aplicat, ia

I utilizatorul instaleaza pachetele software s, i apoi foloses, tefis, ierele din acestea

Cont, inutul pachetului tcpdump

user@host:~$ dpkg -L tcpdump

[...]

/usr/share/man/man8/tcpdump.8.gz # pagina de manual

[...]

/usr/sbin/tcpdump # executabilul din pachet

CSE Dep Cursul 3, Dezvoltarea programelor 10/48

Page 10: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Fis, iere executabile

I folosite pentru rularea aplicat, iei

I dublu click ın GUI, rulare de comanda ın linia de comanda

I obt, inute din codul sursa

I ın Unix se gasesc, ın general ın /bin, /sbin, /usr/bin s, i/usr/sbin

I pot fi binare sau text (ASCII)I binare pentru cod sursa compilat (C, C++, Java)

I /bin/ls, /usr/bin/vim

I text pentru cod sursa interpretate (Perl, Python, Ruby)I ls /bin/* | grep ASCIII ls /usr/bin/* | grep ASCII

CSE Dep Cursul 3, Dezvoltarea programelor 11/48

Page 11: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

De la cod sursa la pachet software

fișcod sursă

fișier

cod sursă

fișier

obiect

fișier

obiect

fișier

executabilpachet

software

fișier

de datefișier de

configurare

bibliotecă

compilare

compilare

linking

dezvoltator

utilizator

CSE Dep Cursul 3, Dezvoltarea programelor 13/48

Page 12: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Cod sursa pentru un limbaj

I un fis, ier al unui program este denumit fis, ier cod sursa (sourcecode)

I codul sursa este codul citibil al unui limbaj de programare:format text

I cod sursa: instruct, iuni ıntr-un limbaj

I codul sursa respecta sintaxa acelui limbaj

I pentru a ınt,elege un program este necesara cunoas, tereasintaxei limbajului

I codul sursa este scris de programator

CSE Dep Cursul 3, Dezvoltarea programelor 14/48

Page 13: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Editoare s, i IDE-uri

I folosite pentru scrierea codului sursaI editoare

I scriu ın general text, printre care s, i cod sursaI Vim, Emacs, Notepad++, Sublime Text

I IDE: Integrated Development EnvironmentI integreaza editor, compilator, debugger, biblioteciI Eclipse, Visual Studio, Code::Blocks, NetBeans

I facilitat, iI syntax highlighting, auto indentation, utilitare pentru

debugging integrateI code folding, code completion (autocompletion)

CSE Dep Cursul 3, Dezvoltarea programelor 15/48

Page 14: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Coding Style

I convent, ii s, i recomandari pentru scrierea codului sursa

I us,urint, a ın a ınt,elege codul sursa

I consecvent, a

I ın general cu suport din partea editoarelor s, i IDE-urilorI aspecte acoperite

I indentareI nume de funct, ii, variabile, constante, macro-uriI spat, iereI comentarii de cod

I Steve Oualline: C Elements of Style

I Python PEP 8

CSE Dep Cursul 3, Dezvoltarea programelor 16/48

Page 15: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Bad Code

main(){int extra; char *len="prime";

int num;

int is prime,i;

for(i=0;i<10;i++){printf("Introduceti numar:");

scanf("%d", &num);

is prime=prime(num);

if(is prime)

printf("is %s\n",len); else printf("is not %s\n",len);extra=get sum(num);

printf("sum (1..%d) is %d\n",num,extra);}}

CSE Dep Cursul 3, Dezvoltarea programelor 17/48

Page 16: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Good Code

int main(void)

{size t i, num;

for (i = 0; i < NUM ROUNDS; i++) {printf("Introduceti numar: ");

scanf("%zu", &num);

if (check if prime(num))

printf("%zu e numar prim.\n", num);

elseprintf("%zu nu e numar prim.\n", num);

printf("Suma (1..%zu) este %zu\n", num, compute sum until(num));

}

return 0;

}

CSE Dep Cursul 3, Dezvoltarea programelor 18/48

Page 17: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Good Code / Bad Code

http://blog.codinghorror.com/whos-your-coding-buddy/

CSE Dep Cursul 3, Dezvoltarea programelor 19/48

Page 18: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Compilare s, i interpretare

I un fis, ier cod sursa poate fi compilat sau interpretatI deosebirea ıntre compilare s, i interpretare

I compilare: codul sursa este translatat de un program denumitcompilator ın cod mas, ina (machine code), dupa care poate fiexecutat

I interpretare: un program este executat direct din cod sursaprin intermediul unui interpretor

I codul mas, ina este cel care ruleaza, ın final, pe procesorulsistemului

I compilatoare s, i interpretoareI GCC (GNU Compiler Collection) – compilator de C, C++,

Ada, FortranI MSVC (Microsoft Visual C) – compilator de C, C++I GCL (GNU Common Lisp) – interpretor de Common LispI Python: interpretor de PythonI Perl: interpretor de Perl

CSE Dep Cursul 3, Dezvoltarea programelor 20/48

Page 19: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Linking

I ın urma procesului de compilare, din modulul cod sursarezulta un modul obiect

I modulul obiect este fis, ier binar (.o, .obj): cont, ine codmas, ina

I mai multe fis, iere obiect (+biblioteci) sunt legate (linked)ıntr-un fis, ier executabil: cont, ine cod mas, ina

I cod sursa compilat → modul obiect (cod mas, ina)

I module obiect s, i biblioteci linkate → executabil

CSE Dep Cursul 3, Dezvoltarea programelor 21/48

Page 20: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

De ce programare ın limbajul C?

I limbaj foarte cunoscut

I limbaj foarte puternic

I limbaj aproape de hardware s, i sistemul de operare, eficient,rapid

I documentat, ie, tutoriale, cart, i

CSE Dep Cursul 3, Dezvoltarea programelor 23/48

Page 21: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

De ce nu programare ın limbajul C?

I limbaj relativ greu de ınvat,at

I limbaj periculos, necesita experient, a

I limbaj mai put, in expresiv

I dureaza mult timp sa dezvolt, i o aplicat, ie

I posibile probleme de portabilitate (Linux, Windows, Mac OSX, Android etc.)

CSE Dep Cursul 3, Dezvoltarea programelor 24/48

Page 22: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Procesul de dezvoltare pentru programe C

I scriere de fis, iere cod sursa: surse (.c) s, i headere (.h)

I urmarirea unui coding style

I compilarea fis, ierelor cod sursa ın fis, iere obiect

I linkarea fis, ierelor cod obiect s, i a bibliotecilor ın fis, ier executabil

I pe Unix/Linux, pentru compilare s, i linking folosim gcc (GNUC Compiler)

CSE Dep Cursul 3, Dezvoltarea programelor 25/48

Page 23: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Reminder: De la cod sursa la pachet software

fișcod sursă

fișier

cod sursă

fișier

obiect

fișier

obiect

fișier

executabilpachet

software

fișier

de datefișier de

configurare

bibliotecă

compilare

compilare

linking

dezvoltator

utilizator

CSE Dep Cursul 3, Dezvoltarea programelor 26/48

Page 24: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Compilare de program simplu ın C

Compilare cu gcc

user@host$ ls -F

hello-world.c

user@host$ gcc hello-world.c

user@host$ ls -F

a.out* hello-world.c

user@host$ ./a.out

Hello, World!

user@host$ rm a.out

user@host$ ls -F

hello-world.c

user@host$ gcc -Wall hello-world.c -o hello-world

user@host$ ls -F

hello-world* hello-world.c

user@host$ ./hello-world

Hello, World!

CSE Dep Cursul 3, Dezvoltarea programelor 27/48

Page 25: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Compilare s, i linking de program simplu ın C

Compilare cu gcc

user@host$ ls -F

hello-world.c

user@host$ gcc -Wall -c hello-world.c

user@host$ ls -F

hello-world.c hello-world.o

user@host$ gcc hello-world.o -o hello-world

user@host$ ls -F

hello-world* hello-world.c hello-world.o

user@host$ ./hello-world

Hello, World!

CSE Dep Cursul 3, Dezvoltarea programelor 28/48

Page 26: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Modularizare s, i module

I Do one thing, do one thing well!

I funct, ionalitat, ile diferite intra ın fis, iere sursa diferite

I evitam ıngramadirea funct, ionalitat, ilor ıntr-un singur fis, ier

I fiecare fis, ier este numit ,,modul” (module)sau ,,unitate decompilare” (compilation unit)

CSE Dep Cursul 3, Dezvoltarea programelor 29/48

Page 27: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Compilare s, i linking din surse multiple

Compilare cu gcc din mai multe surse

user@host$ ls -F

debug.h http_reply_once.c sock_util.c sock_util.h util.h

user@host$ gcc -Wall -c sock_util.c

user@host$ gcc -Wall -c http_reply_once.c

user@host$ ls -F

debug.h http_reply_once.o sock_util.h util.h

http_reply_once.c sock_util.c sock_util.o

user@host$ gcc http_reply_once.o sock_util.o -o http_reply_once

user@host$ ls -F

debug.h http_reply_once.c sock_util.c sock_util.o

http_reply_once* http_reply_once.o sock_util.h util.h

CSE Dep Cursul 3, Dezvoltarea programelor 30/48

Page 28: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Procesul de build

I building : obt, inerea unui executabil, a unui set de executabilesau a unui pachet software din fis, iere cod sursa

I o versiune de pachet construita se mai cheama s, i un build

I pentru programe scrise ın C ınseamna compilare, linking,ımpachetare

CSE Dep Cursul 3, Dezvoltarea programelor 32/48

Page 29: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Sisteme de build

I cele care permit automatizarea procesului de build

I make: folosit foarte mult ın lumea Unix/Linux

I Ant, Maven: folosite pentru Java

I Scons: scris ın Python

I Rake: folosit pentru Ruby

I altele

CSE Dep Cursul 3, Dezvoltarea programelor 33/48

Page 30: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Make

I sistem de build s, i automatizare

I folosit ındeosebi pentru automatizare procesului de compilare(dar nu numai)

I se scriu reguli ıntr-un fis, ier denumit ın general Makefile (unfel de fis, ier cu ,,ret,ete”)

I se ruleaza comenzile aferente regulilor, ın mod automat,folosind comanda make

I se obt, in target-uri (ın general fis, iere executabile) care depindde dependent,e (ın general fis, iere cod sursa)

CSE Dep Cursul 3, Dezvoltarea programelor 34/48

Page 31: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Folosire simpla a Make

1 hello-world: hello-world.c

2 gcc -Wall hello-world.c -o hello-world

Compilare folosind make pentru fis, ierul Makefile de mai sus

user@host$ ls -F

hello-world.c

user@host$ make

gcc -Wall hello-world.c -o hello-world

user@host$ ls -F

hello-world* hello-world.c

CSE Dep Cursul 3, Dezvoltarea programelor 35/48

Page 32: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Folosire mai avansata a Make

1 all: hello-world

2

3 hello-world: hello-world.c

4 gcc -Wall hello-world.c -o hello-world

5

6 clean:7 rm -f hello-world hello-world.o

Compilare folosind make pentru fis, ierul Makefile de mai sus

user@host$ ls -F

hello-world.c

user@host$ make

gcc -Wall hello-world.c -o hello-world

user@host$ ls -F

hello-world* hello-world.c

CSE Dep Cursul 3, Dezvoltarea programelor 36/48

Page 33: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Folosire eleganta a Make

1 .PHONY: all clean2

3 all: hello-world

4

5 hello-world: hello-world.o

6 gcc hello-world.o -o hello-world

7

8 hello-world.o: hello-world.c

9 gcc -Wall -c hello-world.c

10

11 clean:12 -rm -f hello-world hello-world.o

13 -rm -f *∼

Compilare folosind make pentru fis, ierul Makefile de mai sus

user@host$ ls -F

hello-world.c

user@host$ make -f Makefile.elegant

gcc -Wall -c hello-world.c

gcc hello-world.o -o hello-world

user@host$ ls -F

hello-world* hello-world.c hello-world.o

CSE Dep Cursul 3, Dezvoltarea programelor 37/48

Page 34: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Folosire eleganta a Make pentru surse multiple

1 .PHONY: all clean2

3 all: http reply once

4

5 http reply once: http reply once.o sock util.o

6 gcc http reply once.o sock util.o -o http reply once

7

8 http reply once.o: http reply once.c util.h debug.h sock util.h

9 gcc -Wall -c http reply once.c

10

11 sock util.o: sock util.c util.h debug.h sock util.h

12 gcc -Wall -c sock util.c

13

14 clean:15 -rm -f http reply once http reply once.o sock util.o

16 -rm -f *∼

Compilare folosind make pentru fis, ierul Makefile de mai sus

user@host$ ls -F

Makefile debug.h http_reply_once.c sock_util.c sock_util.h util.h

user@host$ make

gcc -Wall -c http_reply_once.c

gcc -Wall -c sock_util.c

gcc http_reply_once.o sock_util.o -o http_reply_once

user@host$ ls -F

Makefile http_reply_once* http_reply_once.o sock_util.h util.h

debug.h http_reply_once.c sock_util.c sock_util.o

CSE Dep Cursul 3, Dezvoltarea programelor 38/48

Page 35: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

De la dezvoltator la utilizator

fișcod sursă

fișier

cod sursă

fișier

obiect

fișier

obiect

fișier

executabilpachet

software

fișier

de datefișier de

configurare

bibliotecă

compilare

compilare

linking

dezvoltator

utilizator

CSE Dep Cursul 3, Dezvoltarea programelor 40/48

Page 36: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

GCC s, i Make

GCC GNU C Compiler

I compilatorul implicit pe distribut, iile Linux

I compileaza s, i linkeaza cod sursa ın C

Make

I utilitar pentru automatizarea procesului de build

I reguli, target-uri, dependent,e

CSE Dep Cursul 3, Dezvoltarea programelor 41/48

Page 37: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Resurse utile

I http://www.oualline.com/style/index.html

I http://www.gnu.org/software/make/

I http://www.gnu.org/software/libc/manual/

I http://git-scm.com/

I http://gitimmersion.com/

I http://www.moolenaar.net/habits.html

CSE Dep Cursul 3, Dezvoltarea programelor 42/48

Page 38: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Cuvinte cheie

I cod sursa

I cod mas, ina

I coding style

I editor

I IDE

I pachet software

I fis, ier executabil

I fis, ier obiect

I compilare

I linking

I limbajul C

I gcc

I modularizare

I sistem de build

I make

I Makefile

CSE Dep Cursul 3, Dezvoltarea programelor 43/48

Page 39: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Compilers: Principles, Techniques and Tools

I The Dragon Book

I Aho, Sethi, Ullman

I 2nd Edition, 2006

I cartea de baza pentru toate cursurile de compilatoare dinuniversitat, i

I expunere exhaustiva a analizei sintactice, semnatice s, iparserelor

CSE Dep Cursul 3, Dezvoltarea programelor 45/48

Page 40: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Guido van Rossum

I inventatorul limbajului de programare Python

I Benevolent Dictator for Life (BDFL) pentru Python

I a activat la Google ın perioada 2005-2012

I din 2013 lucreaza la Dropbox

CSE Dep Cursul 3, Dezvoltarea programelor 46/48

Page 41: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Google

I google.com – cel mai folosit site din lume

I fondata de Larry Page s, i Sergey Brin

I lansata ın 1998

I init, ial: search engine + advertising

I aplicat, ii web

I Android

I Chrome

I YouTube

CSE Dep Cursul 3, Dezvoltarea programelor 47/48

Page 42: Cursul 3 - Dezvoltarea programelorelf.cs.pub.ro/uso/res/cursuri/curs-03/curs-03-handout.pdf · Cursul 3 Dezvoltarea programelor Utilizarea Sistemelor de Operare (USO) 9 noiembrie

Valgrind

I http://valgrind.org

I detectarea de probleme la rulare (runtime)

I ın principal folosit pentru probleme de lucru cu memoria

I Linux s, i Darwin (Mac OS X)

I un engine peste care ruleaza componente dedicate: memcheck(implicit), cachegrind, callgrind, helgrind

CSE Dep Cursul 3, Dezvoltarea programelor 48/48