Zanima me dali se u C# moze koristiti Win32 API, a ako se moze onda bi to značilo da se moze sve isto isprogramirati kao i sa C++, ili sam u krivu?
Zanima me dali se u C# moze koristiti Win32 API, a ako se moze onda bi to značilo da se moze sve isto isprogramirati kao i sa C++, ili sam u krivu?
C# je jezik kojemu su potrebni moduli za rad isto kao za npr visual basicu.net
Da, ali svejedno moze recimo 99% stvari kao i C++ (osim pisanja drivera recimo), ne?
Zanima me dali se u C# moze koristiti Win32 API, a ako se moze onda bi to značilo da se moze sve isto isprogramirati kao i sa C++, ili sam u krivu?
Da, moze se.
Osim onih low level stvari koje nikada u zivotu vjerojatno neces ni vidjeti ;)
Samo deri po onome sto ti je lakse.
Ma nikako da se odlučim između C++ i C#, a sad čak razmišljam ako naučim C# da je to jako slično Javi pa mi je to praktički kao da 2 jezika znam, a opet C++ mi se sviđa zbog low level stvari (jer me ne zanima bas previse programiranje poslovnih aplikacija, vise me zanima rad u industriji gdje se nesto konkretno programira i ugraduje u uređaje).
Da, ali svejedno moze recimo 99% stvari kao i C++ (osim pisanja drivera recimo), ne?
A cuj, nisu bez razloga isli izmisljati C#. A ti driveri, kerneli, engini kojekakvih igara... to je c i c++ sve gdje je vazna svaka milisekunda procesora... i to naravno ima svoju cijenu u kompliciranosti i sporom razvojnom procesu.
Pa da, ali kako C# ima JIT compiler, a i zbog mikrooptimizicija koda nekad se događa da je managed kod brzi od nativnog, ne?
Ja ti tu ne mogu puno pomoci, C++ znam malo, a C# gotovo nista :D
Najbolje da dode neki od C++ ili C# apolgeta i predstavi ti svoje argumente...
Ma znam ja u čemu je koji jezik bolji ali nikako da se odlučim, a opet učiti 2 jezika istodobno nema smisla, bolje da jedan naučim kako treba nego dva polovično.
Pa da, ali kako C# ima JIT compiler, a i zbog mikrooptimizicija koda nekad se događa da je managed kod brzi od nativnog, ne?
Ne, ni pod razno. U najboljem slucaju managed kôd moze biti jednako brz kao nativni kôd.
Naravno govorimo o tome da korisnik zna sto radi kada pise nativni kôd (ako zasere, bit ce i sporiji). Kod JIT kompajlera je caka u tome sto se kôd dinamicki prilagodava sustavu na kojem se izvodi pa korisnik ne mora razbijati glavu s low level optimizacijama. Ali kompajleri nisu savrseni, jos je uvijek rucno moguce postici bolji kôd.
Intelov kompajler je jedan od najboljih, ako ne i najbolji sto se automatskog optimiziranja tice.
Da, čuo sam to za Intelove compilere, ali ja se još uvijek nemogu odlučiti što se isplati više učiti, jer nije mi cilj nauciti neki bezveze jezik pa pisati poslovne aplikacije, a opet imam osjecaj da su C# (i svi ostali osim C++ programera) podcijenjeniji samo zato što su jezici malo lakši za naučiti.
Ma to laksi-tezi ti je relativno. Ako skuzis objektno orjentirano programiranje, C++, C# i Java bi ti trebali biti jednostavni za nauciti. Prakticki ne ucis nista novo jer vec znas sto su petlje, klase, metode... samo moras nauciti sintaksu svakog od tih jezika i spreman si.
P.S.
Ne bih se slozio da je C++ tezi od C# :D
Ja se mogu zbog poznavanja C-a provuci i sa C++-om, ali C# je za mene kineski.
Da znam, a što bi mi ti preporučio da učim (čini mi se da si nešto iskusniji u programiranju) jer ja se sam očito nikako neću odlučiti što da učim, jer bi najrađe i C# i C++ istovremeno (mislim na sintaksu) ali opet to nema smisla baš, bar ja tako mislim.
Ja se mogu zbog poznavanja C-a provuci i sa C++-om, ali C# je za mene kineski.
Pa da, ali kako C# ima JIT compiler, a i zbog mikrooptimizicija koda nekad se događa da je managed kod brzi od nativnog, ne?
Ne, ni pod razno. U najboljem slucaju managed kôd moze biti jednako brz kao nativni kôd.
Naravno govorimo o tome da korisnik zna sto radi kada pise nativni kôd (ako zasere, bit ce i sporiji). Kod JIT kompajlera je caka u tome sto se kôd dinamicki prilagodava sustavu na kojem se izvodi pa korisnik ne mora razbijati glavu s low level optimizacijama. Ali kompajleri nisu savrseni, jos je uvijek rucno moguce postici bolji kôd.
Intelov kompajler je jedan od najboljih, ako ne i najbolji sto se automatskog optimiziranja tice.
Rucno postici bolji kod? Ako si mislio na koristenje pravih algoritama i struktura podataka za odredeni problem, onda da. Jer najbolja optimizacija je vrhusnki obrazovani programer s sirokim pozavanjem struktura podataka i algoritama. Ove low level stvari koje radi kompajer tesko da covjek moze danas bolje napravit od njega, previse je sitnica oko pojedinih arhitektura koje kompajler zna a mi ne znamo. I slazem se da je Intelov C kompajler najbolji, ali pogodi za koje procesore i arhitekture?
Sto se C# tice, naravno da se moze koristit Win32 API. Stovise, mozes koristit funkcije iz bilo kojeg DLL-a zelis (i tako se Win32 API nalazi u par DLL-ova samo). Za to imas mehanizam koji se zove Pinvoke ili Platform Invoke.
I svakako je bolje poceti u C#. Jos ako uzmes VS, vrlo brzo mozes raditi cool aplikacije. GUI programiranje u C++ (ako nije Visual C++ temeljen na .NET-u) ne preporucujem nikome. VS + C# vrlo mocna kombinacija.
EDIT
Vidio sam da si napisao da te zanima programiranje za industriju i embeded uredaje. E to je jedna sasvim druga prica. Ovisi dosta o uredaju, ali u vecini slucajeva mozes zaboravit na ovo sto znas o Windowsima, C++, C#. Jednostavno ogromna razlika. Imaju i drukciji tip operacijskog sustava.
jer bi najrađe i C# i C++ istovremeno (mislim na sintaksu) ali opet to nema smisla baš, bar ja tako mislim.
Mozes probati. Sintaksa im je relativno slicna, vjerojatno je puno veca razlika kod standardnih biblioteka.
Ali kao sto vec rekoh, neka dode netko tko zapravo i radi s nekim od tih jezika pa ti iznese argumente, to je najpametnije.
Pa za C++ se sad manje-više koriste razne GUI biblioteke, ne piše se direktno u Win32 API-ju, ne?
A recimo ako se programira nešto što se ugrađuje u neki uređaj kako se to radi, mislim dali mora postojati neki OS na tome uređaju ili se nekako drukcije to radi (mozda je pitanje malo glupo ali stvarno neznam, a zanima me)?
Rucno postici bolji kod? Ako si mislio na koristenje pravih algoritama i struktura podataka za odredeni problem, onda da. Jer najbolja optimizacija je vrhusnki obrazovani programer s sirokim pozavanjem struktura podataka i algoritama.
Ne, nisam mislio samo na to. Nego na doslovno manipuliranje podatcima na low level razini.
Ove low level stvari koje radi kompajer tesko da covjek moze danas bolje napravit od njega, previse je sitnica oko pojedinih arhitektura koje kompajler zna a mi ne znamo.
Nije istina, kompajleri su jos uvijek relativno mutavi, treba im posebno pokazivati gdje da koriste SIMD (i slicne) optimizacije inace bi mogli propustiti optimizirati neki dio. A detaljna dokumentacija sa Intelove i AMD-ove strane je dostupna svakome, tako da nema tu "kompajleri znaju, a mi ne znamo". Pitanje je samo koliko si temeljit.
I slazem se da je Intelov C kompajler najbolji, ali pogodi za koje procesore i arhitekture?
Ne zelim ulaziti u teorije zavjere. Cinjenica je da Intelov kompajler vrsi odlicne optimizacije za x86 arhitekturu (u to spadaju i AMD-ovi procesori). Ogranicavaju li oni umjetno AMD ili ne, to je neka druga prica.
Pa za C++ se sad manje-više koriste razne GUI biblioteke, ne piše se direktno u Win32 API-ju, ne?
Danas vise ne (za velike aplikacije), ali MS recimo jos uvijek tako radi. Svi programi koji dolaze s Windowsima su ti napisani koristeci cisti API (paint, notepad, kalkulator)
A recimo ako se programira nešto što se ugrađuje u neki uređaj kako se to radi, mislim dali mora postojati neki OS na tome uređaju ili se nekako drukcije to radi (mozda je pitanje malo glupo ali stvarno neznam, a zanima me)?
C++ (kao i C) moze koristiti inline assembly te tako direktno komunicirati sa hardverom. Nikakav OS pretnodno nije potreban, i zato se ti jezici mogu koristiti za pisanje operacijskih sustava.
Nekužim zašto MS jos uvijek radi u Win32, pa to je stoputa teže i kompliciranije, pa zar im nije jednostavnije napraviti to sve koristeći neki GUI!?
Inače recimo zanimalo me jos, recimo čuo sam da su se Marsovi roveri programirali u Java-i, pa me zanima dali netko nešto zna o tome, ispada da se ne koristi ipak onda svugdje C++ kao sto ljudi pricaju!?
Nekužim zašto MS jos uvijek radi u Win32, pa to je stoputa teže i kompliciranije, pa zar im nije jednostavnije napraviti to sve koristeći neki GUI!?
Ah, brkas vizualni resource editor sa programiranjem.
Dakle nekakvim GUI designerom napravis prozor, pobacas kontrole na njega, on ti proizvede .rc (resource) datoteku koja opisuje izgled tog prozora. Te ti pomocu te resource datoteke rucno isprogramiras sto ce koja kontrola raditi.
Inače recimo zanimalo me jos, recimo čuo sam da su se Marsovi roveri programirali u Java-i, pa me zanima dali netko nešto zna o tome, ispada da se ne koristi ipak onda svugdje C++ kao sto ljudi pricaju!?
Prvo definiraj "svugdje". Ne mozes bas NASA-u spominjati kao obicnog korisnika, ne rade oni IPad ili novi CoD, nego lete po svemiru.
Aha, sad kuzim, nisam znao ovo za resource.
Pa "svugdje", gdje god se programiraju neke ozbiljnije aplikacije, igre, embedded sistemi, svugdje kazu da je C++ tu glavni.
Aha, sad kuzim, nisam znao ovo za resource.
Pa "svugdje", gdje god se programiraju neke ozbiljnije aplikacije, igre, embedded sistemi, svugdje kazu da je C++ tu glavni.
A gle, ti si vidio rovera na Javi pa odmah mislis da NASA nigdje ne koristi C++. Zapravo NASA koristi cijeli set razlicitih programskih jezika, za dosta njih vjerojatno nisi niti cuo.
Nekužim zašto MS jos uvijek radi u Win32, pa to je stoputa teže i kompliciranije, pa zar im nije jednostavnije napraviti to sve koristeći neki GUI!?
Inače recimo zanimalo me jos, recimo čuo sam da su se Marsovi roveri programirali u Java-i, pa me zanima dali netko nešto zna o tome, ispada da se ne koristi ipak onda svugdje C++ kao sto ljudi pricaju!?
Vecina novih MS aplikacija ima GUI napisan u .NETu i WPFu. Cak i Visual Studio 2010 sam.
Aha, sad kuzim, nisam znao ovo za resource.
Evo, ovako ti to izgleda.
Aha, nisam to nikad vidio dosad, ali cekaj ti kazes da ovi u Microsoftu to sve ručno pišu, što bi ovakav program mogao izgenerirati ako sam te dobro shvatio !?
Pa neznam, ja sam samo čuo da su roveri programirani u Javi i da se sve vrti na Linuxima.
Vecina novih MS aplikacija ima GUI napisan u .NETu i WPFu. Cak i Visual Studio 2010 sam.
Visual Studio 2010 je pisao u C#?
Aha, sad kuzim, nisam znao ovo za resource.
Pa "svugdje", gdje god se programiraju neke ozbiljnije aplikacije, igre, embedded sistemi, svugdje kazu da je C++ tu glavni.
Gle, zaboravi te sheme "koriste ovo ili ono". Tesko mozemo znati zasto su izabrali koji programski jezik u tom trenutku, a sigurno nisu birali na nacin koji im je ljepsi.
Moras se fokusirati na ono sto te zanima. Ako su to industrijska rjesenja, C++ ti je vjerojatno bolji zbog bolje manipulacije memorijom i vece kontrole nad njom, industrijski uredjaji vecinom nemaju swap diskove i silna cuda virtualne memorije, nesto slicno kao danasnji mobiteli.
No, ono sto moras znati, da danas programer mora biti kompletan. U zivotu ces raditi sa hrpom programskih jezika, ovisno o trenutnoj potrebi.
Fokusiranje na jedan je ok za pocetak, a za ucenje kako funkcionira to sve, bolje kreni sa C#-om. Ili kako bi kasnije znao cijeniti .NET, pocni sa C++om ;-)
Vecina novih MS aplikacija ima GUI napisan u .NETu i WPFu. Cak i Visual Studio 2010 sam.
Visual Studio 2010 je pisao u C#?
Da, UI je razvijen u WPFu. Visual Studio ni nije nista drugo nego UI za kompajler, debugger i editor ;-)
Vrlo vjerojatno u C#u. Sumnjam da su isli u VBu to radit.
Ostatak VStudia je i dalje u C++u.
Aha, sad kuzim, nisam znao ovo za resource.
Pa "svugdje", gdje god se programiraju neke ozbiljnije aplikacije, igre, embedded sistemi, svugdje kazu da je C++ tu glavni.
Gle, zaboravi te sheme "koriste ovo ili ono". Tesko mozemo znati zasto su izabrali koji programski jezik u tom trenutku, a sigurno nisu birali na nacin koji im je ljepsi.
Moras se fokusirati na ono sto te zanima. Ako su to industrijska rjesenja, C++ ti je vjerojatno bolji zbog bolje manipulacije memorijom i vece kontrole nad njom, industrijski uredjaji vecinom nemaju swap diskove i silna cuda virtualne memorije, nesto slicno kao danasnji mobiteli.
No, ono sto moras znati, da danas programer mora biti kompletan. U zivotu ces raditi sa hrpom programskih jezika, ovisno o trenutnoj potrebi.
Fokusiranje na jedan je ok za pocetak, a za ucenje kako funkcionira to sve, bolje kreni sa C#-om. Ili kako bi kasnije znao cijeniti .NET, pocni sa C++om ;-)
Da, kuzim sto hoces reci, ali mene najvise smeta to sto Visual Studio 2010 nema Intellisense za C++ koji bi mi uvelike pomogao, a i ako bi već krenuo sa C++ onda bi to bio managed C++, a opet ne vidim smisao učenja Win32 API-ja osim toga da shvatim bolje kako zapravo rade programi
(da, radio sam sa Win32 već, ali ništa konkretno, proučavao sam samo),a MFC je opet druga priča i čini mi se užasno težak, jedino mi se čini da se Win32 koristi kad programiraju igre ili se varam?
Da, kuzim sto hoces reci, ali mene najvise smeta to sto Visual Studio 2010 nema Intellisense za C++ koji bi mi uvelike pomogao, a i ako bi već krenuo sa C++ onda bi to bio managed C++, a opet ne vidim smisao učenja Win32 API-ja osim toga da shvatim bolje kako zapravo rade programi
(da, radio sam sa Win32 već, ali ništa konkretno, proučavao sam samo),a MFC je opet druga priča i čini mi se užasno težak, jedino mi se čini da se Win32 koristi kad programiraju igre ili se varam?
Zaboravi Win32, to je zesci pain in the ass za programiranje. Ako vec moras u C++u onda moras ici na MFC ili managed C++. Tako imas prednosti oba svijeta, C++ programski jezik i class library iz .NETa.
Win32 mozes eventualno probati napisati nesto za probu, pa ces znati cijeniti da ne moras programirati u tome. :-) Tu i tamo i iz .NETa moras pristupiti nazalost Win32 APIju kako bi natjerao neke GUI kontrole da se ponasaju onako kako ti hoces (ako koristis Windows Forms u .NETu). Sreca sto je to sa WPFom izmijenjeno skroz na skroz. WPF je jaaaako odlicna platforma za razvoj GUI aplikacija koje su jako brze u iscrtavanju jer se iscrtavaju u DirectXu.
Naravno, ovo ti sve vrijedi za Windowse. Ako brijes radit za neku drugu platformu, Java ili C++. Java je u zadnje vrijeme dobila na popularnosti zbog Androida, i to ce samo rasti.
U svakom slucaju, kloni se ObjectiveC-a. To se kosi sa svim principima i zakonima prirode :-P