Prvo, tema je malo nespretno postavljena, jer se traži iznošenje prednosti i mana, ali se ne precizira u odnosu na šta, niti se precizira da li se traži odgovor iz ugla korisnika ili iz ugla programera. Dalje, u odgovorima ima previše teoretisanja, a malo praktičnih iskustava. I konačno, prave se bezvezne generalizacije i koriste "nategnuti" argumenti, koji apsolutno ne dovode ni do kakvih zaključaka.
Evo da krenemo redom. Jedan od argumenata protiv .NET-a je da zahteva instaliran .NET framework. Pa šta ? Ogroman broj aplikacija za Windows danas zahteva .NET framework, kao i dosta servisa u samom Windows-u, a mnogo toga ne može ni da se instalira bez istog. Tako da, ako svakodnevno koristite Windows, odnosno ako vam je Windows primarni operativni sistem, šanse da već nemate instaliran .NET framework su ravne nuli.
Dalje, argument da .NET aplikacije imaju slabije performanse. Pa .NET i nije namenjen pisanju aplikacija koje zahtevaju ne znam ni ja kakve performanse, već rapidnom razvoju, mahom poslovnih aplikacija (RAD), a ne softveru koji treba da analizira DNK-a ili pravljenju aplikacija tipa 3Ds Max, Adobe Photoshop, video igrama i slično, gde postoji potreba za što bržim procesiranjem.
Dalje, što se tiče memorije, nije tačno da .NET aplikacije gutaju memoriju, već to zavisi od strukture same aplikacije, što opet zavisi od toga koliko je programer stručan u pisanju aplikacija. Sve se da optimizovati, ako se pazi kako se koji objekti otvaraju i kada, kao i da se zatvaraju kada se više ne koriste, neće biti tih problema. To što su neki .NET programeri razmaženi, pa sve prepuštaju garbage collectoru je već neka druga priča, ali to ne znači da se ne može uraditi nešto povodom toga. Uostalom, danas je neki standard 2-4GB, tako da ne verujem da je to nekakav problem, čak i kada se memory management ne odradi kako treba i retko ko će to primetiti osim nekoga ko baš prati takve stvari, a to je manje od 5% klijenata.
Takođe, bespotrebno se meša Linux u ovu priču, jer on nema nikakve veze sa .NET-om, niti je .NET namenjen pisanju Linux aplikacija. Ko hoće da piše aplikacije za Linux, postoje druga rešenja. Mada, ni to nije bitno, jer ipak najveći deo tržišta zauzima Windows i .NET je namenjen onima koji žele da rade isključivo za to tržište.
A sad da se osvrnem na generalizacije koje sam pomenuo. Dakle, ne može se o tome koji je jezik najbolji pričati uopšteno, već to zavisi od namene, za koga se radi, kako se radi, zašto se radi, šta se radi. U stvari, teoretski je bolje koristiti ono što daje bolje performanse, troši manje resursa, pravi najmanje problema sa instalacijom... ali u praksi je malko drugačije.
Recimo, kada se razvija softver namenski za specifičnog klijenta koji ima specifične potrebe, njega apsolutno ne zanima u čemu je pisana aplikacija, niti ga interesuje da meri nekakve performanse, već ga mnogo pre toga interesuje da njegove potrebe budu ispunjene, da se projekat odradi što pre i da to košta što manje. NET obično to i omogućava, osim ako te potrebe ne podrazumevaju analizu DNK-a strukture bubašvabe ili tako štogod. Sledeće što ga interesuje je šta on mora da nabavi da bi to radilo onako kako je on zamislio. Ovo sve pričam iz prakse, jer još mi se nije desilo da me klijent pita "Izvini, a u kom programskom jeziku će to da se radi i koliko milisekundi će da traje koja operacija i gde mogu da uporedim performanse tog softvera sa istim takvim pisanim u nekom drugom jeziku".
Dalje, kada se radi o razvoju softvera šire namene, većinu korisnika takođe ne interesuje čime je to pisano, niti će i on da merka tu neke performanse, već je zahtev broj jedan da softver radi ono što treba da radi i da to radi dobro, da je što jednostavniji za korišćenje, cena i slične kategorije. Korisnici koji traže performanse su uglavnom profesionalci u određenoj oblasti, i uglavnom takvi već koriste neki alat koji je standard u industriji, recimo grafički dizajneri i Adobe Photoshop i naravno da nećeš pokušati da ugroziš PS pisanjem alternative u NET-u. Ali .NET i nije namenjen takvoj vrsti softvera, već je više, kao što rekoh, mahom za poslovne aplikacije, i eventuačno neke manje aplikacije šire namene koje bi bile interesantne širem krugu korisnika, recimo kakav telefonski imenik, voip telefon, program za autoškolu, evidencija kućnih računa, čuvanje recepata i šta ti ja znam, a za te stvari je više nego dobar i tu neku moguću razliku u performansama niko neće ni primetiti.
Ameri imaju jednu izreku koja kaže "Right tool for the right job" i ja se sa time u potpunosti slažem. Ako klijent ima potrebu za nekom mrežnom aplikacijom sa bazom na SQL serveru koja će da služi za evidenciju zaposlenih, izdavanje faktura, praćenje lagera... NET ili java su jednostavno nezamenjivi za takvu vrstu aplikacija, jer omogućavaju da se takve aplikacije odrade poprilično brzo, pa samim tim i uz mnogo manje troškova. Ako se radi softver za neke laboratorijske analize, gomilu proračuna i sličnih stvari, naravno da će se tražiti neki niži jezik poput C-a ili čak asemblera.
Suma sumarum, samo neko ko je dokon i ima viška slobodnog vremena deli programere na ozbiljne i neozbiljne po tome da li programiraju u VB-u ili C++ i da li program ovog prvog izračunava nešto za 12 milisekundi, a ovog drugog za 8, da li program ovog prvog zauzima 10MB, a ovog drugog 500KB, da li program ovog prvog zahteva 256MB RAM-a, a od ovog drugog može da se pokrene i sa 32MB. I to sve u vreme kada su 2-4GB memorije i hard diskovi od 500-1000GB praktično standard. Ono što je na kraju bitno je, ko ima zadovoljnije klijente, čiji softver zauzima veći deo tržišta, ko je zaradio više para od tog softvera... Postoje c++ programeri koji se razbijaju od para, ali postoje i ljudi koji rade isključivo .NET platformu, pa se još više razbijaju od para. Mislim, možemo reći da nije sve u parama, ali u čemu je onda poenta diskutovati o nečemu što je i namenjeno razvoju nečega za pare, a .NET to definitivno jeste. Kome je stalo do nekakve programerske slave, uzme lepo asembler i takmiči se sa kolegama čiji će softver brže da izračuna prvih milion decimala broja PI.
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti