Pentru cine nu are rabdare sa citeasca interminabila tirada care va urma, am <br>
scris un scurt sumar la sfarsit :).<br><br>Majoritatea ideilor expuse de Alex mi se par foarte pertinente. A reusit sa<br>rezume destul de bine cursul de SO de anul asta. As vrea totusi sa fac niste<br>mentiuni care ma rod de mult (cam de cand a inceput semestrul) si se leaga<br>
de urmatorul pasaj :<br><div class="gmail_quote"><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Last but not least, Windows sucks... cred că partea de Windows nu ne<br>
testa cunoștințele despre Sisteme de Operare ci răbdarea nostră :| But<br>
seriously, e important să fie Windows și Linux în laboratoare<br>
(probabil e mai justificat să fie Windows decât Linux la nivel de User<br>
Space pentru că, totuși, e mai răspândit), dar, ar fi frumos dacă am<br>
avea 1-2 cursuri/laboratoare în care să ne atingem de MacOS de<br>
exemplu...sau Minix (că este mai didactic) sau BSD.<br></blockquote></div><br>A. Cursul de Sisteme de Operare (vasta lume a SO) s-a redus la Linux si Windows.<br>E pana la urma normal, avand in vedere extinderea acestora, dar cred ca tuturor ne-ar fi<br>
facut placere sa vedem macar cum arata un program de Mac sau unul de Solaris, etc.<br>Astea sunt genul de curiozitati foarte greu de satisfacut in afara facultatii.<br><br>Si mult mai pe larg :<br><br>B. Windows doesn't suck. <br>
<br>Inteleg ca majoritatea studentilor au intrat in facultate fara experienta extensiva de <br>programare, sau cu multiple ore de Pascal, Turbo C++ sau ce alte limbaje le-au irosit <br>timpul prin liceu, si de aceea au avut un contact indelung cu mediul Linux. Multi dintre <br>
noi habar nu aveau ce e aia Win32 sau Windows ("ferestre") atunci cand a inceput <br>acest curs. Situatia nu s-a schimbat cu mult in bine.<br><br>Obisnuinta cu Linux se poate observa si in modul in care este alcatuit/predat cursul.<br>
Majoritatea laboratoarelor (si nu pot sa accentuez suficient acest lucru), sunt alcatuite<br>pe Linux si apoi PORTATE pe Windows. (exemplul cel mai bun este laboraturl de<br>semnale si cel de introducere).<br><br>Am cateva sugestii extrem de importante, care nu tin de un laborator anume, ci mai degraba<br>
de modul in care este privit acest sistem de operare in cadrul intregului curs :<br><br>1. Problema : Windows nu functioneaza in linie de comanda. Nu a fost gandit pentru asta, si nu contine<br>uneltele necesare. Orice incercare de a emula functionarea unei linii de comanda complete <br>
( cygwin, nmake, etc ) reprezinta o _indepartare_ de conceptele care stau la baza shell-ului<br>de windows.Practic nu invatati studentii decat cum arata functiile, nu cum este gandit SO-ul.<br><br>2. Problema : API-ul de Windows nu a fost proiectat pentru a fi folosit/compilat din editoare<br>
de text simple (fara autocomplete+alte facilitati). In consecinta, laboratoarele au fost o tirada<br>de copy-paste la functii cu zeci de parametri care ii sperie pe studenti, si care uzeaza teribil<br>tastaturile.<br><br>
1+2. Solutie : Folositi Visual Studio. Orice slujba Windows-related din industrie va folosi cel putin<br>o instalare Professional de Visual Studio. Invatati studentii sa faca debugging, profiling, sa foloseasca<br>msdn-ul integrat. Invatati-i sa foloseasca macro-urile predefinite si snippet-urile automate. Asa cum<br>
sunt sectiuni anexa despre modalitati de cautare in fisiere multiple pe Linux, sa fie anexe despre<br>proiecte si solutii pe Windows. <br><br>1+2. Impact asupra studentilor :<br> - De la primele laboratoare, se instaureaza o frica de parametrii.. cati sunt, ce fac,<br>
unde ii pun? Un simplu open de fisier (CreateFile) se poate transforma intr-un calvar de a cauta codul <br>pe msdn/<a href="http://cs.pub.ro">cs.pub.ro</a> si de a il adapta corespunzator. <br> - Daca vor avea ocazia sa lucreze in industrie, se vor uita "Ca vitelul la poarta noua" la IDE si la <br>
facilitatile lui. La EGC cand s-a intrebat "cine nu a creat vreodata un .sln" 3/4 din grupa mea a ridicat <br>mana. Cursul de SO nu a schimbat nimic in aceasta privinta<br><br>3. Problema : Nu s-a facut nimic legat de HWND si Message Pump. Am mai scris in diverse mesaje,<br>
dar acestea 2 sunt concepte _vitale_ in modul in care functioneaza procesele intr-un sistem Windows.<br>In opinia mea sunt la fel de importante ca semnalele de pe Linux. Orice program care se vrea serios <br>contine un message pump cu interpretari ale diverselor semnale (pardon, mesaje).<br>
<br>{{Exemplu pentru cine nu stie : Daca preiei HANDLE-ul ferestrei care contine Winamp-ul, si ii trimiti prin <br>Windows Messages (este un fel de MPI, dar implementat in Win32) valoarea 14, incepe sa cante :<br><br>HANDLE hwnd = FindWindow("Winamp",NULL); // cod scris din amintiri, probabil lipsesc parametri :)<br>
SendMessage(hwnd,0,14,NULL); }}<br><br>Mi se pare mult mai important decat interceptarea CTRL-C. De cate ori ati dat CTRL-C in Windows, sa fim <br>seriosi..<br><br>4. Problema : Nu s-a facut nimic legat de profiling pe Windows. Probabil studentii au ramas cu impresia ca<br>
nu se poate, sau ca nu exista astfel de unelte. Bineinteles ca exista, si sunt integrate in Visual Studio.<br><br>5. Problema : Nu s-a facut nimic legat de debugging pe Windows. Cele mai importante aspecte (si deloc<br>triviale) sunt pentru mine cele care privesc debugging-ul multi-threaded, in care urmaresti un anumit<br>
thread pe parcursul executiei, sau repornesti anumite thread-uri desi s-au blocat.<br><br>6. Problema : Nu s-a facut nimic legat de ferestre pe Windows. Spre deosebire de Linux, unde X-server-ul<br>este doar o alta aplicatie, in Windows ferestrele stau la baza sistemului (dupa cum ii spune si numele).<br>
Shell-ul este atat de integrat de partea de ferestre incat pentru multe functii de sistem, daca nu ai deja o<br>fereastra deschisa, trebuie sa iti creezi una (fie ea si una invizibila), doar pentru a aloca resursele necesare.<br>
<br>7. Etc.. cred ca v-ati prins deja care este ideea. Tot ce am scris, am scris din proprie experienta. Avand in <br>vedere ca partea de Linux a laboratorului mi-a depasit cu mult expertiza, presupun ca exista aspecte de<br>
Windows care ar fi utile studentilor, dar despre care habar nu am si pe care nu le pot mentiona.<br><br>As sugera asistentilor sa orienteze partea de Windows catre dezvoltarea de programe care fac ceva, mai clar<br>de programe care fac lucrurile asa cum _ar trebui_ sa fie facute. Exemplu: thread-pooling-ul a fost modificat<br>
extensiv de Windows Vista.. de ce invatam notiuni care vor fi in curand desuete.<br><br><br>Sumar :<br><br>Partea de Windows se face "asa cum s-ar face pe Linux". Asta da impresia ca Windows-ul este un sistem greoi,<br>
ciudat, si prost adaptat pt majoritatea task-urilor. De fapt, problema sta in abordare si in faptul ca asistentii<br>sunt mult mai obisnuiti (poate chiar pasionati) de Linux, si fac Windows-ul doar "pentru ca trebuie".<br>
<br>Multi dintre studentii care vor iesi din facultate vor lucra in medii Windows-based. Acest curs nu i-a invatat<br>aproape nimic despre realitatea lucrului pe Windows, nimic despre debugging sau profiling, nimic despre<br>
link-are multipla intr-o solutie de dimensiuni mari, nimic despre cum arata DE FAPT un program de Windows.<br>Aici includ chiar si miile de linii de cod pe care ti le genereaza Visual Studio in mod _automat_ atunci cand<br>
creezi o aplicatie Win32.. si ce fac ele.<br><br>Multi studenti vor ramane cu o impresie profund gresita despre Windows si modul in care se programeaza pe <br>
acest sistem de operare. Avand in vedere ostilitatea cu care multi dintre ei abordeaza sistemul de operare,<br>ar trebui ca asistentii, in consecinta, sa incerce sa proiecteze o imagine realista.<br><br>Solutie :<br><br>
Interes pentru Windows. Acceptarea necesitatii unei pregatiri eficiente si profunde in acest sistem de operare.<br>Folosirea _tuturor_ uneltelor puse la dispozitie de Microsoft, si a sistemelor de operare la zi. ( Server 2003 are<br>
6 ani vechime.. la multe dintre teme gaseam referinte la API-ul cel nou, care are apeluri si functionalitati diferite). <br><br>Dar cel mai important, cred eu, este aplicarea aceleiasi pasiuni si aceluiasi entuziasm pentru laboratoarele/temele <br>
de Windows, de care se da dovada la cele de Linux. Impresia actuala este ca acestea se fac doar ca sa<br>se faca, si nimanui nu ii convine atunci cand trebuie sa se ocupe de ele.<br><br><br><br>Multumesc daca ati citit pana aici si pentru dedicatia cu care va ocupati de aceasta materie!<br>
<br>Daniel Flamaropol<br>332CA<br>