[ icobh @ 24.06.2006. 19:10 ] @
Pozdrav svima, prvi put sam na ovom forumu, stoga ako šta ubrljam, molim vas nemojte da pišete velikim i crvenim slovima, samo laganice recite da griješim...

Danas uradim neki mali programčić u C# (Borland Studio 2006) i tako zafrkavajući se sam njim, rekoh da provjerim sa PEiD-om šta će reći u vezi njega, tj. da vidim čime je iskompajliran. Na moje zaprepašćenje pisalo je: Microsoft C#/VB.NET. Iako ovu .NET tehnologiju nisam nikako kontao, sad tek pogotovo. Kako to da PEiD pokazuje jednakost između Borlanda i Microsofta, tj. njihovih kompajlera. I tako tragajući za odgovorom shvatio sam da postoji .NET Framework SDK. Naravno ovo me i te kako podsjeća na Javu. Znam da Microsoft sa C Sharpom pokušava da parira Javi, ali mi ovo na filozofiju Microsofta uopšte ne liči! Nepišu ljudi džabe Microsoft skraćeno M$, gdje ovo $ predstavlja na šta se Microsoft bazirao. Nekontam kako neko kao Microsoft može da pusti u slobodnu raspodjelu tako moćan alat kao što je .NET SDK i tako svoj Visual Studio ostavi na velikom cijedilu. Sad mene zanima, ako Microsoft može, Borland može, a vidio sam da i neki ICSHARPCODE.NET može, može li neko, nebitno ko, da napravi IDE za sve mogućnosti .NET tehnologije i da lagano pusti u prodaju kao što je Borland uradio, i da na kraju opet to sve bude legalno? I još da ironija bude veća, isti taj IDE bude napisan u npr. C#-u. To nikako ne razumijem.
[ formeye @ 24.06.2006. 20:13 ] @
Neko moze i da napise svoju implementaciju .NET platforme:
http://www.mono-project.com/

Prica je kao Netscape vs IE - da bi skinuli kralja sa trona, moraju da rade stvari onako kako nisu navikli ;)

Meni je najvece cudo sto se .NET filosofije tice to da su ga pravili kao poluinterpretirani jezik (kao java), a da nikad nisu planirali da naprave .NET za vise platformi (*nix, MacOS, ...) - malo se gubi smisao (na stranu bajke o tome kako Just in Time compiler moze da omoguci brze izvrsavanje koda nego da je program native kompajliran sto je bilo pricano prilikom reklamiranja .NET-a)
[ icobh @ 24.06.2006. 20:28 ] @
Mono sam vidio, genijalan je i možda ga večeras i skinem sa neta. Ali ono što Mono postiže a i ti si naglasio da je on Multiplatform, znači da svaka sličnost .NETa sa Javom dobija konačno svoju svrhu. Meni je bilo toliko čudno što .NET toliko liči na Javu, a samo je dostupan na Win platformama. Čini mi se da je krajnji cilj Microsoft-a bio nečije uništenje, a ne kako oni to kažu TEHNOLOGIJA BUDUĆNOSTI. I što si spomenuo takođe, Just in Time Compiler, pa sporiji je od VB6 interpretera. Mnogo, mnogo ima da se priča u vezi ovog .NETa.
[ Igor Gajic @ 24.06.2006. 20:51 ] @
Logika postoji. Kao i kod Jave .NET tehnologija ne prevodi kod direktno u masinski kod vec u neku vrstu
medju-koda. Taj kod pri izvrsenju prevodi u izvrsni kod. U sustini .NET kod moze da se izvrsava
na svim masinama nakojima postoji .NET framework. Naravno, za ovakvu arhitekturu, mora se platiti izvesna cena u performansama.

Zasto bi Microsoft napravio ovakvu tehnologiju?

Ako pogledas razvoj PC tehnologije videces da i najnoviji AMD64(P4 EM64T) procesori
mogu izvrsavati programe koji su napisani jos pre 30 godina. Danasnji procesori postaju
isuvise komplikovani bas zbog te kompatibilnosti sa starijim procesorima. Naravno sto je
procesor komplikovaniji to je manja teoretska brzina koju moze da postigne. Zadnjih par godina
vide se jasno usporavanje rasta frekvencija procesora, nikako da predju 4GHz. Vecina
strucnjaka misli da je x86 arhitektura procesora dostigla vrhunac. AMD je sa svojim 64-bitnim
procesorima donekle produzio zivot x86 arhitekture. Intel uopste nije planirao prelazak na 64-bitne
procesore.


Po mom misljenju .NET tehnologija ce omoguciti laksi prelazak sa x86 tehnologije na neku
novu. S obzirom da su .NET programi kompajlirani na medju-jezik bice dovoljno instalirati .NET
framework na novoj arhitekturi i svi programi ce raditi sasvim normalno. Nadam se da ce PC
proccesori konacno postati mnogo efikasniji i preci 4GHz-a.

Pozdrav.


[ formeye @ 24.06.2006. 20:55 ] @
Sve je to ok dok se ne pojavi tehnologija vezana za .NET koja ce biti patentirana i koja nece smeti da se implementira u Monou (neke tehnologije koje ce biti u Visti, ako ikad izadje, ce biti u toj klasi). Tada se opet gubi svaki smisao poluinterpretiranja...

Moje srce ostaje sa Javom sto se ovog dvoboja tice :)

Pozdrav
[ icobh @ 24.06.2006. 21:58 ] @
Ovo sa logikom prelaska sa x86 arhitekture na neku novu arhitekturu ima smisla, ali hajdemo da malo vidimo šta je to novo u .Net-u, što dosad nismo vidjeli... Krenimo prvo od samih jezika, tj. C# i VB.NET. Složili smo se da C# u mnogome podsjeća na Javu. VB.NET sem ovog VB nema ništa zajedničko sa predhodnikom. Ustvari VB.NET je kao C# samo za malo bahatije programere, koji nemaju običaj da iza svake linije instrukcija moraju da stave ";". Ostatak na prvi pogled, VB.NET & C# se ne razlikuju mnogo. Ali, ali, ali čemu sve ovo i gdje je ta velika novina, kad smo mi i dosad imali HIGH LEVEL programske jezike a posebno Javu. Kao prvo, biće lakše napraviti kompajler za novu arhitekturnu, nego kompletan .NET npr. treće generacije. Što se Sun Microsystems-a tiče, isuviše su ozbiljni da nebi izbacili JRE za novu arhitekturu procesora. Još jedna stvar, šta sa tim tromim .NET-om kada se prebrode prve godine prelaska na neke nove tehnologije. Java je bila Java i ostaće takva ali alternative unutar samog Sun Microsystems-a nema, ali pojaviće se i potreba sa ultra brzim programima, kao što je nekada ali danas se koristi asembler, isključivo po ovom pitanju, tj. brzine, šta onda? Ajd da kažem da .NET nije bio promašaj ali budućnost mu nije svijetla.
[ Dejan Vesic @ 25.06.2006. 07:43 ] @
Nisam siguran da pogađate poentu .Net framework-a i cele priče oko njega.

Citat:
icobh: Na moje zaprepašćenje pisalo je: Microsoft C#/VB.NET. Iako ovu .NET tehnologiju nisam nikako kontao, sad tek pogotovo. Kako to da PEiD pokazuje jednakost između Borlanda i Microsofta, tj. njihovih kompajlera.


Ne pokazuje jednakost, naravno. Samo pokazuje da je Borland IDE, bilo pored postojećeg .Net Framework SDK-a bilo pomoću nekog drugog, napravio IL (Intermediate Language) assembly za .Net.

Citat:
Nepišu ljudi džabe Microsoft skraćeno M$, gdje ovo $ predstavlja na šta se Microsoft bazirao. Nekontam kako neko kao Microsoft može da pusti u slobodnu raspodjelu tako moćan alat kao što je .NET SDK i tako svoj Visual Studio ostavi na velikom cijedilu.


Ma još je gore ;-) Možeš da skineš CEO Ms Visual Studio Express 2005 (pogledaj na mom sajtu), POTPUNO BESPLATNO i da ga POTPUNO SLOBODNO koristiš kao i programe koje sa njim napraviš ;-)

Logika je prosta: ni jedna platforma nije živa dok nema podršku za programere; da bi privukao programere, daš im razvojna okruženja, daš im masovno ciljno tržište (80% svih desktop instalacija) i oni će se potruditi da prošire platformu dalje. Kada se jednom navučeš na Visual Studio Express 2005 koji je moćniji od bilo čega drugoga sem od Professional izdanja VS-a, MS će lako prikupiti neku licencu itd.

Citat:
icobh: Ovo sa logikom prelaska sa x86 arhitekture na neku novu arhitekturu ima smisla, ali hajdemo da malo vidimo šta je to novo u .Net-u, što dosad nismo vidjeli... Krenimo prvo od samih jezika, tj. C# i VB.NET


Sve je novo - kompletna hijerarhija klasa, memory management, pristup programiranju, IL, ama baš sve. Java je super itd, a da li ti znaš neku desktop aplikaciju u Javi koju koristiš svakodnevno? Malo teže, Java se nekako pozicionirala kao server side jezik. Što se tiče kompajlera za novu arhitekturu - napraviš samo novi JIT procesor koji IL prebacuje u mašinski kod (to tako i sada radi) i eto ti native programa za ciljnu platformu. Istina, "native" C kompajler bi sigurno izvukao 20 - 30% brži kod ... ali koga je briga? Da li ikada možeš u C/C++ da budeš produktivan kao u C#? Ne. Programeri i programersko vreme su sada kritična tačka na putanji izrade nove aplikacije, a .Net Framework i njegovi alati su super način da to vreme skrate.
[ icobh @ 25.06.2006. 10:15 ] @
OK, možda nepostoji neka jaka desktop aplikacija pisana u Javi, ali takođe ja ne znam ni jednu pisanu u C# ili VB.NET, a znamo da ova dva programska jezika postoje već evo 3 godine, trebalo bi nešto svažno već da iskoči. Ali šta mene kopka najviše u vezi .NET-a jesu grafičke kontrole tipa: button, menu, toolbar... Ako sam već primoran da koristim .NET, mogli su barem na ovim poljima ponešto da urade. Što ja moram da koristim neki Xtreme Suite ActiveX koji je do bola skup i teško se koristiti da bih na formi napravio toolbar istog izgleda kao Office XP, zar nisu mogli, ako su već napravili 5-6 različitih stilova toolbara do sad, to sve fino implementirati kako treba, a ne samo office 2003 style koji je glup do bola i kod koga je maximalna veličina ikonica 16x16px. A pogledajte kako to Xtreme Suite radi. Ono što me sad zanima u vezi sa VS-om, je li taj Expess moguće skinuti kao standalone install ili ide online installation.
[ formeye @ 25.06.2006. 10:15 ] @
Citat:
Dejan Vesic: Malo teže, Java se nekako pozicionirala kao server side jezik. Što se tiče kompajlera za novu arhitekturu - napraviš samo novi JIT procesor koji IL prebacuje u mašinski kod (to tako i sada radi) i eto ti native programa za ciljnu platformu.

Da ali nije nista lakse napraviti JIT nego napraviti backend za postojeci pravi native compiler. (cak je obrnuto)


Citat:
Igor Gajic
Ako pogledas razvoj PC tehnologije videces da i najnoviji AMD64 (P4 EM64T) procesori
mogu izvrsavati programe koji su napisani jos pre 30 godina.

Ovo nije sasvim tacno. Pentium arhitektura je prekinula neke veze za svojim praprecima (pre 80386). Intel jeste planirao prelazak na 64bitne procesore, ali kao potpuno novu arhitekturu koja nema veze sa ia32.

Citat:
Igor Gajic
Po mom misljenju .NET tehnologija ce omoguciti laksi prelazak sa x86 tehnologije na neku
novu.

To bi bilo lepo opravdanje kada bi se arhitekture procesora menjale toliko cesto. Posto M$ ne razmislja o portabilnosti medju operativnim sistemima, jedina portabilnost koju zele bi onda bila bas ta za procesorske arhitekture. Da cak kazemo kako u jednom trenutku mogu postojati 3 koriscene arhitekture (koriscene od strane Windows korisnika), da li je problem kompajlirati program za te 3 arhitekture ako ce to znaciti bolje performanse programa? Odgovor je "nije" - primer je Debian GNU/Linux distribucija - pogledajte za koliko arhitektura postoji.

Dakle, zbog necega sto se desava jednom u ne-znam-koliko godina, korisnici ce imati programe koji su zestoko sporiji?

P.S. Od Java programa svakodnevno koristim Eclipse i NetBeans :)
[ icobh @ 25.06.2006. 10:31 ] @
Sorry što sam postavio ovo pitanje u vezi sa Expessom, Dejane, sad sam bio na tvom sajtu i vidio sam da postoje Iso slike za svaki produkt pojedinačno, znači mogao bih ja do neke, čak legalne verzije! Drugo što bih želio da kažem jeste, da nisam znao da je NetBeans napisan u Javi, nisam ga koristio ali znam o čemu se radi. Treće, ono što ja sanjam da će ponovo jednom da bude a to su kompajleri koji će da generišu Native kod. U vezi portabilnosti među OS-ovima, ja mislim da je MingW uzoran primjer! Mislim da još jedan klik za kompajliranje programa za neku novu platformu/os, programeru nije teško, pa još ako se za instalaciju uzme Windows Installer, pa se može odrediti koja kompajlirana verzija programa da se instalira, da bi se izbjegle nekompaktibilnosti, a za uzvrat dobiješ stable native program uz performanse i do 50% veće, mislim da se nešto mora uraditi sa ovim .NET-om.
[ formeye @ 25.06.2006. 12:02 ] @
Za Java -> Native postoji GCJ. (sto se kompajlera tice)
Problem je sto GNU Classpath projekat jos uvek nije dostigao finalnu verziju tako da jos uvek nema nekih klasa kojih ima u javinoj standardnoj biblioteci. U svakom slucaju, projekat je dosta napredovao tako da je moguce kompajlirati Eclipse, Azureus i jos neke programe kao native aplikacije. (najveci nedostatak GNU Classpatha je Swing - Eclipse i Azureus koriste SWT)
[ icobh @ 25.06.2006. 12:27 ] @
@formeye

Hoćeš da kažeš da ćemo u skorije vrijeme (GJC 0.91!) imati kompajler i sve potrebne biblioteke koje će moći da generišu standalone programe tj. programe bez dodatnih runtime-a? Nešto slično kao što imamo MingW C/C++ za Win i Lin?
[ Dejan Vesic @ 25.06.2006. 12:57 ] @
Nisam siguran da baš razumem oko čega se ovde vodi rasprava?

Ako hoćete maksimalno portabilan kod između _različitih_ operativnih sistema, koristite Javu, uz neminovan gubitak performansi zbog izvršavanja u VM prostoru.

Ako hoćete što portabilniji kod uz što veće performanse, koristite C / C++; uz odgovoarajući set include / pragma direktiva postiže se vrlo visoka portabilnost.

Ako hoćete što brže do rezultata za _određenu_ platofrmu, koristite ono što ima dobru podršku; .Net za Windows recimo. Pri tom gađanje procentima ("50% sporije itd") ništa ne znači - dobro napisan kod na .Net-u (od nekog ko zna dobro ceo Framework i korektno implementira algoritme) će biti sporiji od native koda, ali u najvećem broju slučajeva (tj. ako ne pišete servis koji koristi hardverske / multimedijalne časovnike) je _nebitno_ - svako čekanje na unos korisnika, čitanje iz baze i/ili datoteke će prosto poništiti tu razliku. Programi koji niti čekaju na korisnika, niti na bazu ili čitaju/pišu po datotekama su retki i svode se na sistemske servise; iste itekako ima smisla pisati u C/C++.

Ne postoji srebrni metak koji će sve rešiti - da to postoji, do sada bi ga neko već pronašao.

Izbor alata i platforme je _ličan_, visoko subjektivan izbor: zavisi čime želite da se bavite, kakvo vam je predznanje i da li je razlog bavljenja hobi, učenje nove platforme, ili posao / projekat.

Ja sam svesno izabrao .Net jer odavno radim na Windows okruženju i tržište za takve programe je više nego veliko.
[ icobh @ 25.06.2006. 14:59 ] @
Jesmo malo sišli sa teme u posljednja 2-3 posta, ali ono što se čitavo vrijeme pokušavalo reći jeste da je Microsoft napravio jedan novi VM pod imenom .NET, samo za Win platformu što je u mnogome kod nas izazvalo čuđenje i to što je M$ free.
[ Igor Gajic @ 25.06.2006. 15:38 ] @
Da malo nastavim svoju pricu o novom procesoru.

Jedna od vesti koje mozes naci na netu je objava procesora A64 X2 AM2. Sam AMD navodi
da do kraja ove godine nece napraviti ni jedan novi procesor, a da ce sledece godine
najverovatnije sasvim zameniti K8 arhitekturu!

Kao sto je bilo reci, Intel je bio nameravao da objavi novi procesor koji nece
imati veze sa prethodnom arhitekturom. 128 registara opste namene, 128 FP registara,
novi format instrukcija, tri paralelna execution enginea, su bile samo od nekih specifikacija
ovog procesora. Jedna od stvari koje su najvise kocile ovaj procesor je bio nedostatak
ikakvog kompajlera!

Za objavljivanje nove arhitekture i novog procesora nije dovoljno imati brz i efikasan procesor.
Potrebna ti je i softverska podrska tj. gomila softvera za datu masinu.
Za x86 procesore imas PLANINU softvera, i tesko je zamisliti prekompajliranje i distibuciju
svog tog softvera na novu arhitekturu. Sa .NET-om dovoljno je iskompajlirati program na IL
i radice na svakom .NET frameworku.A besplatan .NET ,po mom misljenju, ce obezbediti gomilu novog softvera za novi procesor. A kao sto ste naveli za Javu sigurno ce se pojaviti neki kompajler koji prevodi IL kod u native kod
za novi procesor.



A, Microsoft, ukoliko deli VS besplatno tim bolje.
Za prosecnog programera, to je kao dar sa neba. Original VS kosta kao polovan auto. :)


C# ima gomilu prednosti kao sto su GC, koji resava problem memory leak-a, zatim Assemblies,
koji resava probleme "DLL Hell-a", zatim mnogo manja upotreba pointera, obavezna inicijalizacija
promenljivih,....


Slazem se sa Dejanom u vezi C#, ukoliko ti programski jezik omogucuje da projekat zavrsis
na vreme, bez prekovremenog rada, neprospavanih noci debagirajuci program, onda vredi
zrtvovati tih 20-30% performansi. U prosecnom programu kao sto su office aplikacije,
knjigovodstveni programi, razliku sigurno neces osetiti. Jedino C# nije pogodan kod
time-critical aplikacija kao sto su igrice,rendering, kompresija gde C++ ostaje neprikosnoven.



[ icobh @ 25.06.2006. 18:01 ] @
Citat:
Igor Gajic:Za x86 procesore imas PLANINU softvera, i tesko je zamisliti prekompajliranje i distibuciju svog tog softvera na novu arhitekturu. Sa .NET-om dovoljno je iskompajlirati program na IL i radice na svakom .NET frameworku.

Da, ali kada se tek uspostavi nova arhitektura, nemislite valjda da će već sutra biti dostupan .NET na istom. Tu se stvara jedan vakuum, za kojeg vi tvrdite da uopšte neće biti jer je .NET od Microsofta i on će sve to bezazleno lako riješiti...
[ formeye @ 25.06.2006. 18:59 ] @
@icobh (offtopic, bar sto se .NET-a tice)
Uskoro? Nisam siguran, ali se iskreno nadam (za sada nisam imao problema sa kompajliranjem programa koji koriste SWT, QT ili GTK biblioteke za iface)

@Dejan Vesic
Nije rasprava o tome sta je bolje... (daleko bilo)
Rasprava je samo da ne shvatam(o) poentu VM-a, ako je poenta veoma mala (skoro nikakva) portabilnost.

@Igor Gajic
Citat:
"radice na svakom .NET frameworku"

Prekompajliras C program za novu arhitekturu i radice na toj arhitekturi... (nije problem otkucati make tri puta za tri arhitekture...)

Citat:
"Slazem se sa Dejanom u vezi C#, ukoliko ti programski jezik omogucuje da projekat zavrsis
na vreme, bez prekovremenog rada, neprospavanih noci debagirajuci program, onda vredi
zrtvovati tih 20-30% performansi."

Sa ovim se slazem, ali sve te prednosti koje si spomenuo ne dolaze od cinjenice da program radi pod VM-om, nego dolaze od cinjenice da je skup raspolozivih klasa (koliko toliko) sveobuhvatan.
[ mmwlada @ 25.06.2006. 19:04 ] @
Zar nije .NET framework samo jedna implementacija ECMA standarda koji je potpuno otvoren? Ako je tako i ako sam ja to doro razumeo, onda je Microsoft implementirao ECMA standard za Windows, jer mu to najviše i odgovara. A evo sada open source zajednica radi na implementaciji za Linux i to je valjda taj Mono ili kako se već zove. Isto tako može da se uradi implementacija za svaki OS. Ako grešim ispravite me.
[ Dejan Vesic @ 25.06.2006. 19:49 ] @
VM - nije tu radi portabilnosti, nego radi svega ostalog što VM pruža - okruženje tačno poznatih specifikacija, nezavisnih od mašine na kojoj se izvršava + GC odnosno rad sa memorijom.

Glavni razlog za pravljenje .Net Frameworka _nije_ portabilnost između raznih operativnih sistema no prevazilaženje granica između jezika za Win platformu - sada, bez obzira za koji se .Net jezik odlučite, rezultujući asembli se može koristiti u bilo kom drugom jeziku.

Tako, ako imate odličnog programera u VB.NET-u, njegova biblioteka neće biti bačena jer ostatak tima koristi C# - jednostavno će se referencirati u C# projektu i koristiti ravnopravno.

To je _odličan_ razlog za uvođenje .Net platforme; ne obim same biblioteke klasa, nego DoItOnce princip - jednom napisan kod koristite kada vam god treba.



[ formeye @ 26.06.2006. 08:24 ] @
Samo sto, kao sto je ovde vec spominjano, VB.NET nema mnogo veze sa starim VB-om. U programiranju nije problem nauciti sintaksu for petlje novog programskog jezika, problem je nauciti standardnu biblioteku i mogucnosti jezika...

GC moze da postoji i bez VM-a (postoje GC implementacije za C++)

Medjusobno pozivanje programa/biblioteka iz razlicitih programskih jezika je moguce i bez VM-a - Pascal, C/C++, Python, Java... svi mogu da pozivaju tudje biblioteke... dakle, ni to ne zavisi od VM-a

Nije pitanje sta je "Glavni razlog za pravljenje .Net Frameworka" nego sta je glavni razlog za pravljenje .Net Frameworka kao *poluinterpretiranog jezika*
[ Dejan Vesic @ 26.06.2006. 08:46 ] @
Ovo počinje da liči na raspravu bez smisla, samo rasprave radi :-(

Citat:
GC moze da postoji i bez VM-a (postoje GC implementacije za C++)


Da li si ti ikada koristio ovo gore u komercijalnom projektu? Uspešno?

Citat:
Medjusobno pozivanje programa/biblioteka iz razlicitih programskih jezika je moguce i bez VM-a - Pascal, C/C++, Python, Java... svi mogu da pozivaju tudje biblioteke... dakle, ni to ne zavisi od VM-a


Znači, imaš komercijalni projekt koji je pisan u Javi i zove DLL koji je dobijen u Pythony? Mogu li to da pogledam?

Naravno da u programiranju sve može, pitanje je samo šta se može uraditi za života programera. Mislim da sam odgovorio u svojoj poslednjoj poruci tačno zašto je napisan .Net Framework a to možeš da proveriš i na zvaničnim stranama:

http://msdn.microsoft.com/netf...rk/gettingstarted/default.aspx

"The .NET Framework is a development and execution environment that allows different programming languages & libraries to work together seamlessly to create Windows-based applications that are easier to build, manage, deploy, and integrate with other networked systems."

ili:

"What is the .NET Framework?

The Microsoft .NET Framework is a platform for building, deploying, and running Web Services and applications. It provides a highly productive, standards-based, multi-language environment for integrating existing investments with next-generation applications and services as well as the agility to solve the challenges of deployment and operation of Internet-scale applications. The .NET Framework consists of three main parts: the common language runtime, a hierarchical set of unified class libraries, and a componentized version of Active Server Pages called ASP.NET.
"

Ni manje ni više - ujedinjenje WINDOWS razvojnih okruženja. Znači, kome gornje ne odgovara, prosto se okrene nekoj drugoj platformi / okruženju. Ako opet misliš da je filozofija .Net pogrešna, okreneš se onoj koja je daleko uspešnija (koja je to?) ili napišeš svoju platformu - to može.
[ bunker @ 26.06.2006. 14:25 ] @
pa igore, ovi jezici postoje vise od tri godine. za c# sam prvi put cuo '99. mislim, a tri godine kasnije sam poceo da se bavim time profesionalno. Tad su me vecc cakali i visual studio i verzija 1.1 frameworkia. A sto se tice broja aplikacija do sada sam izabcio 5 enterprise aplikacija (ne licno ja, vecc firme u kojima radim).
Moja prva ljubav je bila java i kleo sam se u nju najjace. I sada tvrdim da je daleko brza i mocnija na webu od .neta, ali sam se na MS prebacio zbog 'leba (citaj $ iz M$-a). U beogradu sam promenio nekoliko firmi i za .net je tako lako nacci posao, a za javu to ni blizu nije tako. Sve sami mudrijasi uz javu ti traze visegodisnje iskustvoi (koje imam, ali neprofesionalno - za pare sam uvek radio .net), ali se daleko bolje placca.

A sledecce su narucioci, koji se kunu u .NET kao da su i sami programeri, zna se i zasto. Pokusaj nekoga da ubedis da mu prodas aplikacijukoja radi pod linuxom. Nije to tako lako. MS je vecc napravio tako dobar marketing za sve da nikome vise ne pada na pamet java (bar na ovom kontinentu)... i mrzi me vise da pricam.

A jos ovo: za javu je izaslo toliko frameworka (tapistry, struts), da je MS uvideo da je bolje polako debugovati windowswe i ofice, a za developerske alate zaposliti open sors zajednicu, kao i univerzitete koji se otimaju oko toga.

A to gde je ASP.NET, pogledaj po tome da je MasterPage podrzan tek u verziji 2005, odnosno 2006. godini, a u struts-u sam to koristio pre 4 godine!

Pozdrav.
I jos: i u hrvatskoj cces lakse nacci posao u .netu nego u javi. Radio sam i tamo. Znam.
[ formeye @ 26.06.2006. 17:29 ] @
@Dejan Vesic

Poenta mojih postova nije:
.NET nema smisla

Poenta mojih postova jeste:
Nema smisla sto je .NET napravljen kao poluinterpretiran jezik (jezici)

"The .NET Framework is a development and execution environment that allows different programming languages & libraries to work together seamlessly to create Windows-based applications that are easier to build, manage, deploy, and integrate with other networked systems."

Na ovo sam mislio da sam odgovorio. Ne znam kako iko (ko nema veze sa marketingom) moze da tvrdi da su C# i ostali .NET jezici razliciti kad su im standardne biblioteke iste.

U trenutku kad naprave sistem koji ce biti u stanju da bez problema povezuje programe napisane u pravom Pascal-u, sa njegovim stdlib-om (i bibliotekama pisanim za pravi Paskal), pravom C-u (i ...), pravom ... onda im skidam kapu. Makar to bilo i u meri u kojoj je Jython spojio Javu i Python.

I, opet, to nema veze sa VM. Ako je moguce napraviti DLL od python biblioteke, iz Jave, C-a je moguce pozvati ga...

P.S. Svrati na:
http://www.robert-tolksdorf.de/vmlanguages.html
[ icobh @ 26.06.2006. 22:16 ] @
@bunker
Ja sam prvi put cuo za C# negdje oko 2003g., jer sam tad se prvi put susreo sa VS.Net, od kada tačno postoji, ne znam, evo rečeno od '99, OK. Druga stvar je što ja poslije VS 6.0 nijedan programski alat od M$-a ne gotivim. Sem razvojnog okruženja, ništa mi se ne dopada. Tu ima malo nečeg, zbog čega ja navijam za Native Code ili za Crossplatform nego za nešto tipa .NET. Sljedeća stvar je, zašto sam otvorio ovaj post, zato što nisam baš kontao ovaj .NET, njegovu krajnju svrhu i to što se M$ odrekao $. To me strašno iznenadilo, isto kao kod Opere 8.5 pa nadalje. Još jedna stvar je, da sam ja NE Pofesionalac u programiranju, tj. sve što znam o programiranju, i sve jezike što znam, naučio sam alone, tek se sad školujem malo (ETF BL, 1. godina, evo pogledajte kako sam uradio programiranje: http://www.etfbl.net/dokument.php?id=5168&ss_jezik=0), tako da sam ja operisan od ove priče kako se dolazi do posla, šta se traži itd... Ali meni kao entuzijazisti će se uvijek više sviđati jedan jedini *.exe fajl koji ti u ne znam koliko milisekundi se upali, završi posao i ugasi nego...

@offtopic
Skinuo sam Mono za Win i moram da kažem da me je razočarao. Ja (nemam pojma koji mi je vrag) uvijek prvo pogledam kako je razvojno okruženje, ovdje ga nema, znači tipa je command line... Ima on neki programčić za kompajliranje ali ni jedan od Samples nisam uspio iskomajlirati. Malo me nervira što je sve odrađeno u Gnome fazonu, tj. ružne maslinasto-zelene ikonice itd... Jezik je standardno C#, mada sam se nadao da će biti takav fazon, da kompletan projekat napiasn u MS C# može se iskomajlirati pomoću Mono-a, ali sam već u drugoj liniji koda naletio na Using GTK, što u standardnom MS C# nema....
[ Java Beograd @ 27.06.2006. 15:56 ] @
Citat:
formeye
Poenta mojih postova jeste:
Nema smisla sto je .NET napravljen kao poluinterpretiran jezik (jezici)


Smisao je u razvijanju funkcionalnih .NET biblioteka (dll ova) od strane mnogih developera. Dakle, neko, koristeci VB napise dll, neko koristeci J# a onda neko treci, pokupi te dll-ove i iskoristi ih svom C# kodu.

Citat:
formeye:
Ne znam kako iko (ko nema veze sa marketingom) moze da tvrdi da su C# i ostali .NET jezici razliciti kad su im standardne biblioteke iste.


Ja ne znam kako iko, (ko ima veze sa programiranjem i programskim tezicima) moze da tvrdi da su C# i VB (.NET) i J# isti.
[ NrmMyth @ 27.06.2006. 17:58 ] @
Citat:
Java Beograd: Ja ne znam kako iko, (ko ima veze sa programiranjem i programskim tezicima) moze da tvrdi da su C# i VB (.NET) i J# isti.
A tek razlika MC++ naprema ostalim .NET jezicima...
[ Dragi Tata @ 27.06.2006. 17:59 ] @
OT: C# se `99 zvao Cool i za njega su znali samo unutar MS-a. Prva javna specifikacija jezika se pojavila u kasno proleće 2000-te
[ formeye @ 27.06.2006. 19:06 ] @
@Java Beograd (ako je to uopste tvoje pravo ime :) )

Citat:
Smisao je u razvijanju funkcionalnih .NET biblioteka (dll ova) od strane mnogih developera. Dakle, neko, koristeci VB napise dll, neko koristeci J# a onda neko treci, pokupi te dll-ove i iskoristi ih svom C# kodu.

Da si procitao/la dosadasnju raspravu, shvatio/la bi da je to moguce postici i bez poluinterpretiranja - dovoljno je napraviti kompajler za * jezik koji ce da postuje odredjeni format za dinamicke biblioteke.

Citat:
Ja ne znam kako iko, (ko ima veze sa programiranjem i programskim tezicima) moze da tvrdi da su C# i VB (.NET) i J# isti.

Nisam rekao da su isti. Samo sam rekao da nisu razliciti. (There's a gray place between black and white)
Programski jezik karakterisu mnoge stvari - sintaksa je samo mali deo. Ljudi previse cesto poistovecuju jezik sa njom - na taj nacin neupuceni smatraju da su Java i JavaScript jedno te isto.

Reci mi da li bi ti bilo lakse da predjes sa jezika J na jezik K ako je izmedju njih razlika u tome da je jedan case-sensitive, a drugi nije, for petlja u J izgleda kao u C-u, a u K izgleda "for i = 1..n do"... a da su biblioteke identicne
ili da su im sintakse iste, samo da jedan ima klase koje imas u Javi, a drugi klase koje imas u .NET-u?

Koja je od ovih razlika beznacajna?
[ jablan @ 28.06.2006. 07:51 ] @
Čoveče, odluči se da li pišeš o razlikama među jezicima ili među frejmvorcima.

Nije mi jasno zašto si tako zapeo za taj VM. Jednostavno, VM pruža neke lepe stvari i proizvoiđačima frejmvorka i proizvođačima jezikâ i proizvođačima hardvera, a samim tim i nama, običnim developerima i krajnjim korisnicima. Lakše je da naprave sandbox u vidu VM-a, pa svako u njemu neka radi šta hoće - tebi valjda nije potrebno objašnjavati značaj apstrakcije. Naravno da je sve teoretski moguće i sa native DLL-ovima, ali to dosad nikom nije pošlo za rukom. Ovako, uzmem DLL pisan u VB-u, dodam ga kao referencu u svoj projekat i nastavim da radim kao i da sam taj projekat sâm pisao u C#, imam iste tipove podataka, isti način prosleđivanja parametara funkciji (seti se kako se koriste c++ biblioteke u delfiju npr.), Intellisense šljaka, GC šljaka, refleksija šljaka. Što se mene tiče kao programera: ruke im se pozlatile!. Eto toliko.
[ formeye @ 28.06.2006. 19:50 ] @
@Jablan
Nisam zapeo za VM. To je bilo nesto za sta sam rekao da ne vidim svrhu kod .NET-a, a onda su ljudi trazili da objasnim. Pa su opet trazili da objasnim, pa su opet... i sa sam objasnjavao :)
I onda je to postalo jedina tema ovog posta, sto mi nije bila namera.
[ Dejan Vesic @ 29.06.2006. 09:32 ] @
Citat:
formeye:
Programski jezik karakterisu mnoge stvari - sintaksa je samo mali deo. Ljudi previse cesto poistovecuju jezik sa njom - na taj nacin neupuceni smatraju da su Java i JavaScript jedno te isto.


Koja, uzgred budi rečeno imaju sintaksu sličnu ne zna se ;-)

Citat:

Reci mi da li bi ti bilo lakse da predjes sa jezika J na jezik K ako je izmedju njih razlika u tome da je jedan case-sensitive, a drugi nije, for petlja u J izgleda kao u C-u, a u K izgleda "for i = 1..n do"... a da su biblioteke identicne
ili da su im sintakse iste, samo da jedan ima klase koje imas u Javi, a drugi klase koje imas u .NET-u?

Koja je od ovih razlika beznacajna?


O čemu pričaš?

Svi se jezici svedu na niz nula i jednica tj. mašinski kod koji procesor jednino razume.

Pitanje je samo kako da do tih nula i jedinica što pre dođeš. Dinamičke / statičke biblioteke, DLL pakao, verzioning, COM, DCOM itd - sve ovo je rezultat "starog" načina koji _NIJE_ dao dobre rezultate.

.Net je odlično okruženje, koje ti omogućava da uz sintaksu jezika koji znaš (zato i postoji izbor jezika - da uštediš vreme na učenje sintakse), iskoristiš okruženje (Framework) na najbolji mogući način.

Ako si ikada radio u okruženju koje će te brže dovesti do rezultata (= aplikacije koju je koristio neko drugi sem tebe) na WINDOWS operativnom sistemu, molim te da podeliš tajnu sa nama.
[ formeye @ 29.06.2006. 14:49 ] @
Na sve sto si rekao sam vec vise puta odgovorio.

Ako se nadje neko ko ce da kaze nesto novo sto ima veze sa VM strukturom .NET-a i ukaze mi da nije bilo moguce postici ovo bez nje, bice mi drago da to procitam (na ostalo vise necu da odgovaram jer o ostalom nisam ni pisao). Ali, posto ovo pocinje previse da lici na advocacy, napustam vas...
[ negyxo @ 29.06.2006. 15:03 ] @
Neki su mozda vec citali ovaj blog a za one koji nisu neka procitaju
http://blogs.msdn.com/jasonz/archive/2004/01/31/65653.aspx

Nije bas mozda usko vezano za ovu temu ali ima nekih dodirnih tacaka.
[ Dejan Vesic @ 30.06.2006. 15:40 ] @
Citat:
formeye: Na sve sto si rekao sam vec vise puta odgovorio.


Pa, proverio sam, ni na jedno konkretno pitanje koje sam ja postavio nisi odgovorio:

FE: GC moze da postoji i bez VM-a (postoje GC implementacije za C++)

DV: Da li si ti ikada koristio ovo gore u komercijalnom projektu? Uspešno?
--
FE: Medjusobno pozivanje programa/biblioteka iz razlicitih programskih jezika je moguce i bez VM-a - Pascal, C/C++, Python, Java... svi mogu da pozivaju tudje biblioteke

DV: Znači, imaš komercijalni projekt koji je pisan u Javi i zove DLL koji je dobijen u Pythony? Mogu li to da pogledam?
--
DV: Ako si ikada radio u okruženju koje će te brže dovesti do rezultata (= aplikacije koju je koristio neko drugi sem tebe) na WINDOWS operativnom sistemu, molim te da podeliš tajnu sa nama.

--

Nije da si obavezan da odgovoriš, nisi, ali bi bilo lepo zbog vremena koje smo potrošili da i ti daš kvalitetan doprinos sa tvoje strane, BEZ opštih priča tipa "može i ovo, može i ono ...". Prosto na nivou developer developeru. Ako pak nećeš, opet ok.
[ formeye @ 30.06.2006. 22:08 ] @
Na doticna pitanja nisam odgovorio jer sluze za skretanje sa teme (odgovoricu na kraju posta, kad objasnim ovu recenicu).

Nije pitanje da li postoji (dobra) implementacija GC-a, i svega navedenog bez koriscenja VM-a, a jos manje da li sam ja koristeci te implementacije pravio "komercijalne" programe.

Pitanje je da li je .NET, sa navedenim osobinama, bilo moguce realizovati bez VM-a.

Analogija:
Vratimo se u proslost - pre nego sto su nastali proceduralni programski jezici.
Dodje neka firma M, napravi nov jezik koji umesto 'a = x + y', kao sintaksu za sabiranje ima 'add x to y and store the result into variable a'.
Onda se pojavi osoba A i pita koja je poenta takvog komplikovanja, kad je to bilo moguce uraditi sa normalnom sintaksom na koju su svi navikli.
Tu se stvori osoba B i pita osobu A "Da li si napisao komercijalni program u proceduralnom jeziku koji nije imao takvu sintaksu?"
Osoba A odgovori "Naravno da nisam. Ovo je prvi proceduralni jezik koji je napravljen".

Do sada niko nije naveo osobinu koju je nemoguce realizovati bez VM-a.

--------
Odgovori na pitanja:
Napomena: ignorisacu deo "da li sam ja ..."

Citat:
DV: Da li si ti ikada koristio ovo gore (Garbage Collector prim. autora) u komercijalnom projektu? Uspešno?

Evo linka ka spisku projekata koji koriste Hans Boehm Garbage Collector:
http://www.hpl.hp.com/personal/Hans_Boehm/gc/#users
Mislim da su imena GCJ, Mono i Mozilla sasvim dovoljna.

Citat:
DV: Znači, imaš komercijalni projekt koji je pisan u Javi i zove DLL koji je dobijen u Pythony? Mogu li to da pogledam?

Ne, nemam. Za Python, bar koliko sam upucen (jer me Python i ne interesuje mnogo), i ne postoji kompajler koji pravi DLL fajlove. (sto ne znaci da je nemoguce ga napraviti)
Ako si voljan da mi platis da napravim nacin za pozivanje Python koda preko DLL-a*, a iz Jave, i na taj nacin ti dokazem da je moguce, na raspolaganju sam. (kao developer developeru)
Primer da je moguce iz jednog jezika pozivati dinamicke biblioteke kompajlirane drugim su C i C++

Citat:
DV: Ako si ikada radio u okruženju koje će te brže dovesti do rezultata (= aplikacije koju je koristio neko drugi sem tebe) na WINDOWS operativnom sistemu, molim te da podeliš tajnu sa nama.

Ne, nisam. Ne radim na WINDOWS platformi (sto si mogao i da vidis). A, opet, brzina "dovodjenja do rezultata" nema apsolutno nikakve veze sa VM-om. Ako smatras da ima, dokazi.

--------

Sad kad sam bio fin i odgovorio na pitanja, ocekujem po prvi put neki kvalitetan doprinos i sa tvoje strane, pa da mi odgovoris na pitanje "Koju od divnih osobina koje .NET framework poseduje je nemoguce realizovati bez VM-bazirane arhitekture?". Ocekujem objasnjenje zasto je nemoguce, ali ne objasnjenje koje ce se bazirati na tome da sada tako nesto ne postoji bez VM-a.

--------
* u slucaju mog sistema .so fajla

[Ovu poruku je menjao formeye dana 30.06.2006. u 23:20 GMT+1]
[ Dejan Vesic @ 01.07.2006. 19:36 ] @
Citat:
formeye: Pitanje je da li je .NET, sa navedenim osobinama, bilo moguce realizovati bez VM-a.


Teoretski da, ali nije bitno*

Ono što VM/CLR omogućava je:

1. Apstrakciju platforme na kojoj se program izvršava (više ne boli 32 vs. 64 bita, jer su CLR tipovi standardizovani)
2. Aspekte sigurnosti kod izvršavanja koda / asemblija
3. Upravljanje memorijom (GC)
4. Centralizovano upravljanje izuzecima (exceptions)
5. Gomiletina API-ja za najčešće programerske poslove - prosto je sramotno koliko se recimo u ASP.NET 2.0 brzo i lako može napraviti sajt sa Login / Register / Change Password / Retrieve Forgotten / Password / User Roles BEZ KODIRANJA (preporučujem: http://msdn.microsoft.com/asp..../newtodevelopment/default.aspx )

To je sigurno nekako moglo biti postignuto i u native OS okruženju SEM (1), samo što se tog posla, iz verovatno dobrih razloga, niko nije prihvatio.

E da, za razliku od Java VM-a, CLR NIJE pravi VM - ima dobre aspekte VM-a ali je tesno vezan za OS (Windows) što mu itekako daje prednosti nad čistim VM implementacijama (koga više zanima, vrlo dobar članak: Scott Hanselman's Weblog - The Myth of .NET Purity

--------
* Iz samo njemu znanih razloga, Microsoft je odlučio da koristi VM/CLR ; ja ne znam koji mistični razlogozi su prevagnuli, ali je tako.
[ formeye @ 01.07.2006. 20:20 ] @
Citat:

To je sigurno nekako moglo biti postignuto i u native OS okruženju SEM (1), samo što se tog posla, iz verovatno dobrih razloga, niko nije prihvatio.

--------
* Iz samo njemu znanih razloga, Microsoft je odlučio da koristi VM/CLR ; ja ne znam koji mistični razlogozi su prevagnuli, ali je tako.


Hvala na odgovoru. Mislim da u ovom trenutku mozemo da kazemo da smo dosli do nekakvog zakljucka cele ove price, koja je mogla da bude mnogo kraca.

Pozdrav.

P.S. Problem u celoj ovoj temi je efekat Advocacy foruma zbog kog vise nikad ni ne citam poruke na istom, a kamoli odgovaram.