Citat:
Nasao si bas LINQ... pa naravno da LINQ nema osnova u CIL-u kada se izvrsava na CIL-u koji je nastao godinama pre nego sto su poceli da razmisljaju o LINQ-u. Inace kakve veze ima CIL sa ovim? CIL je jezik CLR-a nije CLR, sam CLR je daleko vise od CIL-a.
Pa dovoljno je kao primer. Sve sto je u .NET dodato od v2.0 na ovamo je iskljucivo i samo na nivou biblioteka (uz eventualne dodatke kompajlerima), bez obzira sto MS marketing tim besomucno inkrementira broj verzije ni IL ni CLR se nisu znacajnije menjali (sem nekih optimizacija GCa i slicnih stvari). Ne znam kako ne uvidjas problem, zato sto se na kraju i AsParallel instrukcije svode na automatsko startovanje worker threadova kroz biblioteku JIT nikad nece moci da optimizuje taj kod vise nego sto moze da optimizuje kod biblioteke koja to radi, samim tim JIT nema sanse da bilo sta smisleno izanalizira iz payload koda koji ti threadovi rade niti moze bilo sta smisleno da tu optimizuje. Samim tim ne moras ni da cekas VS2010 za AsParallel(), to si mogao i sam da uradis kroz IEnumerable<T> ekstenziju gde ces svaku iteraciju da pobacas na worker thread pool. Vec godinama nam prodaju muda za bubrege i teraju u sto vecu apstrakciju na ustrb performansi. Sto opet ja razumem, to omogucava zaposljavanje C- programera ali opet6 me uzasno nervira kad se tvrdi da je to DOBRO.
Citat:
realnost je malo drugacija, ne mozes da ih otpustis a cak i da mozes, kako ces ih zameniti (ali kazem ti manje vise ne radi se o njima nego o upotrebljivim B i B+ programerima). Prvo i prvo nemas na svakom trzistu dostupnu kvalifikovanu i iskusnu radnu snagu, drugo vecina njih su zaposleni, trece da ih nadjes i dovuces u firmu kosta i to ne malo novca (znam prema teoriji na duze staze se isplati ali u praksi ta duza staza ne postoji bar ne u softverskoj industriji).
ne pratis me, ja se slazem sa slikom realnosti koju ti slikas, nisam ja pao sa drveta pre pola sata i zato vec godinama pazim gde cu se zaposliti i ko ce mi biti kolege, problem nije u tome sto ti tvrdis, problem je sto ti smatras da je to DOBRO resenje za softversku industriju. A za ovo poslednje nisi u pravu i postoje firme koje ne razmisljaju na taj nacin i koje zaradjuju fine pare. Medjutim upravo takvim firmama cloud najvise kvari posao jer direktno konkurise na istu klijentelu, ljude koji su se opekli na mediokritetske ISV-ove, s tim sto cloud ulazi u pricu sa svojim brandom.
Citat:
Inace CLR i Kernel zaista nemaju nikakva osnova za poredjenje, jer je kernel softverski sloj izmedju hardvera i aplikativnog (i sistemskog) softvera a CLR je "masina" iznad kernela a ne ispod. ALi generalno da i Kernel je sloj i neki vid apstrakcije ali nebitan za ovu diskusiju.
Itekako imaju, samo ti to odbijas da vidis zato sto dozivljavas CLR kao varijantu JavaVM-a sto on nije. Samo zato sto vodi racuna o svojoj memoriji ne cini ga virtuelnom masinom.
Code:
int x = 1;
00000041 mov dword ptr [ebp-40h],1
for (int y = 1; y < 10; y++)
00000048 mov dword ptr [ebp-44h],1
0000004f nop
00000050 jmp 00000061
{
00000052 nop
x = x * y;
00000053 mov eax,dword ptr [ebp-44h]
00000056 imul eax,dword ptr [ebp-40h]
0000005a mov dword ptr [ebp-40h],eax
}
0000005d nop
for (int y = 1; y < 10; y++)
0000005e inc dword ptr [ebp-44h]
00000061 cmp dword ptr [ebp-44h],0Ah
00000065 setl al
00000068 movzx eax,al
0000006b mov dword ptr [ebp-48h],eax
0000006e cmp dword ptr [ebp-48h],0
00000072 jne 00000052
Console.WriteLine(x);
00000074 mov ecx,dword ptr [ebp-40h]
00000077 call 674C2F40
Ne znam za tebe ali meni ovo izgleda kao x86 instruction set. CLR nije virtuelna masina, at best to je forsirani API u kome je unmanaged malloc zamenjen sa managed verzijom i u kome je apstrakcija postignuta time sto je programeru uskracena puna kontrola nad izlazom iz JIT-a u high level jezicima kao sto je c# ili vb.net. C++/CLI ti omogucava bez pardona da u bilo kom trenutku napustis managed context i da predjes na pure native kod (bila je neka tema na .NETu pre nekog vremena gde smo uradili trostruki prelaz). Ta tranzicija nije nikakva mudrost i svodi se bukvalno na cleanup stek-a i jos par sitnica, CLR se cak ni ne trudi da sacuva svoj managed heap, sve strukture su direktno dostupne iz unmanaged koda (s tim sto bi bilo lepo da ih pinujes prvo da ih GC ne bi pomerao). To ide do te mere da mozes komotno da zaobidjes i sama CLR ogranicenja kao sto je string immutability, dakle ne postoji nikakav sandboxing koda.
Singularity ti je npr konkretan primer toga, ceo OS je managed, tj kernel JE kernel+HAL+CLR i sav kod je "apstraktovan" na nivo ILa, dakle ako imas HAL i JIT za odredjeni hardver imas i automatsku kompatibilnost Singularity aplikacija, user mode drajvera, itd.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić