[so] my feedback

Daniel Flamaropol raptorclw at gmail.com
Fri Jun 26 03:09:41 EEST 2009


Pentru cine nu are rabdare sa citeasca interminabila tirada care va urma, am

scris un scurt sumar la sfarsit :).

Majoritatea ideilor expuse de Alex mi se par foarte pertinente. A reusit sa
rezume destul de bine cursul de SO de anul asta. As vrea totusi sa fac niste
mentiuni care ma rod de mult (cam de cand a inceput semestrul) si se leaga
de urmatorul pasaj :

Last but not least, Windows sucks... cred că partea de Windows nu ne
> testa cunoștințele despre Sisteme de Operare ci răbdarea nostră :| But
> seriously, e important să fie Windows și Linux în laboratoare
> (probabil e mai justificat să fie Windows decât Linux la nivel de User
> Space pentru că, totuși, e mai răspândit), dar, ar fi frumos dacă am
> avea 1-2 cursuri/laboratoare în care să ne atingem de MacOS de
> exemplu...sau Minix (că este mai didactic) sau BSD.
>

A. Cursul de Sisteme de Operare (vasta lume a SO) s-a redus la Linux si
Windows.
E pana la urma normal, avand in vedere extinderea acestora, dar cred ca
tuturor ne-ar fi
facut placere sa vedem macar cum arata un program de Mac sau unul de
Solaris, etc.
Astea sunt genul de curiozitati foarte greu de satisfacut in afara
facultatii.

Si mult mai pe larg :

B. Windows doesn't suck.

Inteleg ca majoritatea studentilor au intrat in facultate fara experienta
extensiva de
programare, sau cu multiple ore de Pascal, Turbo C++ sau ce alte limbaje
le-au irosit
timpul prin liceu, si de aceea au avut un contact indelung cu mediul Linux.
Multi dintre
noi habar nu aveau ce e aia Win32 sau Windows ("ferestre") atunci cand a
inceput
acest curs. Situatia nu s-a schimbat cu mult in bine.

Obisnuinta cu Linux se poate observa si in modul in care este
alcatuit/predat cursul.
Majoritatea laboratoarelor (si nu pot sa accentuez suficient acest lucru),
sunt alcatuite
pe Linux si apoi PORTATE pe Windows. (exemplul cel mai bun este laboraturl
de
semnale si cel de introducere).

Am cateva sugestii extrem de importante, care nu tin de un laborator anume,
ci mai degraba
de modul in care este privit acest sistem de operare in cadrul intregului
curs :

1. Problema : Windows nu functioneaza in linie de comanda. Nu a fost gandit
pentru asta, si nu contine
uneltele necesare. Orice incercare de a emula functionarea unei linii de
comanda complete
( cygwin, nmake, etc ) reprezinta o _indepartare_ de conceptele care stau la
baza shell-ului
de windows.Practic nu invatati studentii decat cum arata functiile, nu cum
este gandit SO-ul.

2. Problema : API-ul de Windows nu a fost proiectat pentru a fi
folosit/compilat din editoare
de text simple (fara autocomplete+alte facilitati). In consecinta,
laboratoarele au fost o tirada
de copy-paste la functii cu zeci de parametri care ii sperie pe studenti, si
care uzeaza teribil
tastaturile.

1+2. Solutie : Folositi Visual Studio. Orice slujba Windows-related din
industrie va folosi cel putin
o instalare Professional de Visual Studio. Invatati studentii sa faca
debugging, profiling, sa foloseasca
msdn-ul integrat. Invatati-i sa foloseasca macro-urile predefinite si
snippet-urile automate. Asa cum
sunt sectiuni anexa despre modalitati de cautare in fisiere multiple pe
Linux, sa fie anexe despre
proiecte si solutii pe Windows.

1+2. Impact asupra studentilor :
    -  De la primele laboratoare, se instaureaza o frica de parametrii..
cati sunt, ce fac,
unde ii pun? Un simplu open de fisier (CreateFile) se poate transforma
intr-un calvar de a cauta codul
pe msdn/cs.pub.ro si de a il adapta corespunzator.
    - Daca vor avea ocazia sa lucreze in industrie, se vor uita "Ca vitelul
la poarta noua" la IDE si la
facilitatile lui. La EGC cand s-a intrebat "cine nu a creat vreodata un
.sln" 3/4 din grupa mea a ridicat
mana. Cursul de SO nu a schimbat nimic in aceasta privinta

3. Problema : Nu s-a facut nimic legat de HWND si Message Pump. Am mai scris
in diverse mesaje,
dar acestea 2 sunt concepte _vitale_ in modul in care functioneaza procesele
intr-un sistem Windows.
In opinia mea sunt la fel de importante ca semnalele de pe Linux. Orice
program care se vrea serios
contine un message pump cu interpretari ale diverselor semnale (pardon,
mesaje).

{{Exemplu pentru cine nu stie : Daca preiei HANDLE-ul ferestrei care contine
Winamp-ul, si ii trimiti prin
Windows Messages (este un fel de MPI, dar implementat in Win32)  valoarea
14, incepe sa cante :

HANDLE hwnd = FindWindow("Winamp",NULL); // cod scris din amintiri, probabil
lipsesc parametri :)
SendMessage(hwnd,0,14,NULL);   }}

Mi se pare mult mai important decat interceptarea CTRL-C. De cate ori ati
dat CTRL-C in Windows, sa fim
seriosi..

4. Problema : Nu s-a facut nimic legat de profiling pe Windows. Probabil
studentii au ramas cu impresia ca
nu se poate, sau ca nu exista astfel de unelte. Bineinteles ca exista, si
sunt integrate in Visual Studio.

5. Problema : Nu s-a facut nimic legat de debugging pe Windows. Cele mai
importante aspecte (si deloc
triviale) sunt pentru mine cele care privesc debugging-ul multi-threaded, in
care urmaresti un anumit
thread pe parcursul executiei, sau repornesti anumite thread-uri desi s-au
blocat.

6. Problema : Nu s-a facut nimic legat de ferestre pe Windows. Spre
deosebire de Linux, unde X-server-ul
este doar o alta aplicatie, in Windows ferestrele stau la baza sistemului
(dupa cum ii spune si numele).
Shell-ul este atat de integrat de partea de ferestre incat pentru multe
functii de sistem, daca nu ai deja o
fereastra deschisa, trebuie sa iti creezi una (fie ea si una invizibila),
doar pentru a aloca resursele necesare.

7. Etc.. cred ca v-ati prins deja care este ideea. Tot ce am scris, am scris
din proprie experienta. Avand in
vedere ca partea de Linux a laboratorului mi-a depasit cu mult expertiza,
presupun ca exista aspecte de
Windows care ar fi utile studentilor, dar despre care habar nu am si pe care
nu le pot mentiona.

As sugera asistentilor sa orienteze partea de Windows catre dezvoltarea de
programe care fac ceva, mai clar
de programe care fac lucrurile asa cum _ar trebui_ sa fie facute. Exemplu:
thread-pooling-ul a fost modificat
extensiv de Windows Vista.. de ce invatam notiuni care vor fi in curand
desuete.


Sumar :

Partea de Windows se face "asa cum s-ar face pe Linux". Asta da impresia ca
Windows-ul este un sistem greoi,
ciudat, si prost adaptat pt majoritatea task-urilor. De fapt, problema sta
in abordare si in faptul ca asistentii
sunt mult mai obisnuiti (poate chiar pasionati) de Linux, si fac Windows-ul
doar "pentru ca trebuie".

Multi dintre studentii care vor iesi din facultate vor lucra in medii
Windows-based. Acest curs nu i-a invatat
aproape nimic despre realitatea lucrului pe Windows, nimic despre debugging
sau profiling, nimic despre
link-are multipla intr-o solutie de dimensiuni mari, nimic despre cum arata
DE FAPT un program de Windows.
Aici includ chiar si miile de linii de cod pe care ti le genereaza Visual
Studio in mod _automat_ atunci cand
creezi o aplicatie Win32.. si ce fac ele.

Multi studenti vor ramane cu o impresie profund gresita despre Windows si
modul in care se programeaza pe
acest sistem de operare. Avand in vedere ostilitatea cu care multi dintre ei
abordeaza sistemul de operare,
ar trebui ca asistentii, in consecinta, sa incerce sa proiecteze o imagine
realista.

Solutie :

Interes pentru Windows. Acceptarea necesitatii unei pregatiri eficiente si
profunde in acest sistem de operare.
Folosirea _tuturor_ uneltelor puse la dispozitie de Microsoft, si a
sistemelor de operare la zi. ( Server 2003 are
6 ani vechime.. la multe dintre teme gaseam referinte la API-ul cel nou,
care are apeluri si functionalitati diferite).

Dar cel mai important, cred eu, este aplicarea aceleiasi pasiuni si
aceluiasi entuziasm pentru laboratoarele/temele
de Windows, de care se da dovada la cele de Linux. Impresia actuala este ca
acestea se fac doar ca sa
se faca, si nimanui nu ii convine atunci cand trebuie sa se ocupe de ele.



Multumesc daca ati citit pana aici si pentru dedicatia cu care va ocupati de
aceasta materie!

Daniel Flamaropol
332CA
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20090626/e0b00d49/attachment.htm>


More information about the so mailing list