C++, C# eller Java

Tags:    programmering





Indlæg senest redigeret d. 29.09.2008 11:56 af Bruger #13985
38 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Mit første programmeringssprog var C++

Jeg har altid fundet det spændende, men det kan godt blive hårdt!
Jeg startede ud med en masse console programmer (windows), og da det egentlig kørte meget fint, begyndte jeg at lære (og lærer stadig!) de lidt mere raffinerede dele af C++, som Classes, pointers, templates osv.
Jeg havde meget svært ved at forstå pointers, men det går nogenlunde nu :)

Da jeg var klar på at lære noget nyt, blev det i Win32 API'et. Der er meget kode, men til gengæld for du et produkt du kan blive ved med at tilpasse!

Da den evindelige "Jeg vil lave kæmpestore 3D spil" kom over mig, kastede jeg mig over Direct3D. Det var svært, rigtig svært! Alt det med buffers og memory in/out osv. var virkelig svært at forstå, men efter nogen tid lykkedes det mig faktisk at loade nogle figure ind i mit program! (fra .x filer)

Jeg øver mig stadig i Win32 API'et, men har besluttet mig her på det seneste at jeg vil skifte over til et cross-platform framework, som GTK eller Qt, og derfor også skifte til OpenGL

Alt i alt har mine erfaringer været rigtig dejlige når det gælder C++, da man egentlig kan lave ALT i C++, der er ikke nået der er får højt, og ikke noget der er for lavt.
(Man kan faktisk kode ASM o.l. direkte i C++ dokumenter!)

Eftersom jeg på det seneste er blevet cross-platform mand, ville jeg droppe C# da det er "Windows-only".
Java... Hmm.. har ikke de store erfaringer, men har hørt at det er et langsommere sprog en C++


Håber at min post, ikke blev alt for forvirrende :P



Java har jeg dog en fornemmelse af, at det er mere begrænset ligesom Visual Basic også er låst til fast til high level og Windows-only.

vis du med Windows-only mener at det kun køre på windows, så er ideén med java jo netop at det kan køre på mange platformer.

vis du mener at det kun er til at kode vinduer/desktop applicationer med, så (jeg er ikke ekspert på området eller noget) ved jeg at man iværtfald kan bruge java i lego mindstorm, og en stor del af java er også serverside programmering.

vis du mente noget andet så... forstod jeg ikke hvad du mente.



Jeg syntes personligt at java er lidt tungt at arbejde med når du skal generere GUI (eller er det bare mig der ikke har et ordentligt IDE?), samt at til tungere matematiske beregninger er det heller ikke lige så hurtigt som f.eks. C#. Jeg kan personligt godt lide Microsoft visual C# express edition, der er et gratis IDE i stil med Visual Studio, det kan bare kun bruges til C#.



Jakob: Tak for det udemærkede svar. Ja, GTK ville være en klar fordel, da det jo også er cross-platform.
Har godt hørt det med at Java skulle reagere langsommere, håber der er en der kan be/afkræfte det.

Andreas: Nej, Java er ikke Windows-only. VS er.
Det der tiltaler ved Java er netop at det ikke bare er cross-platform, men den næsten samme kodning kan give en Windows, Linux, web og mobile applikation :)



Java:
fordele:
-ingen (arbitrære) pointers
-Kan runtime optimeres
-God open source implementation
-Garbage collection
-Hukommelses allokering er O(1)
Ulemper:
inkonsekvent objekt model
Generics er lidt brækket
lang ønskeliste til ekstra features

C# (safe):
Fordele:
-ingen (arbitrære) pointers
-Kan runtime optimeres
-konsekvent object model (alt er et objekt)
-har næsten alt hvad man måtte ønske sig (operator overloading, delegates, properties, events osv.)
-Garbage collection
-Generics
-Hukommelses allokering er O(1)
Ulemper:
-Open source implementationen kunne være bedre, og halter konsekvent lidt efter reference implementationen. Den er dog 100% 2.0 kompatibel, og de har så vidt jeg har kunnet læse også mange af tingene fra 3.5 med.

C++:
Fordele:
???
Ulemper:
Arbitrære pointers
ingen garbage collection
Preprocessoren er turing komplet (dvs. at det er nondeterministisk om kompileringen vil lykkes/slutte)
Multipel nedarvning
Templates er turing complete (hvilket bare generelt giver problemer)
Hukommelses allokering er O(n)
Type sikkerhed er en by i rusland
og jeg kan blive ved... men jeg tror det dækker

Hvad angår C# vs. Java så er der jo også spørgsmålet hvad man synes bedst omet en sprog specification der udelukkende styres af et stort firma, eller et hvis specifikation "officielt" styres af en standard organisation.





Her må jeg lige protestere.

At C++ har multipel nedarvning er en kæmpe fordel, hvordan kan man seriøst arbejde med et sprog der ikke har multipel nedarvning? Er der nogen som helst grund til at lave et sprog der ikke understøtter noget så basalt og nødvendigt som multipel nedarvning?

Typesikkerhed findes i høj grad i C++!







Indlæg senest redigeret d. 29.09.2008 11:57 af Bruger #13985
Java har længe haft problemer med performance, men det bliver vist bedre. Den store fordel ved Java er at det kører lige godt på alle platforme, C# er i realiteten kun til MS Windows.

Om du vælger det ene eller andet nu betyder nok ikke det store, om nogle få år kan du sandsynligvis dem alle. I strukturen er de ret ens.

Jeg ved ikke hvad der menes med "Hukommelses allokering er O(n)" vs. "Hukommelses allokering er O(1)"



Hvis man tænker sig lidt om, burde man kunne se fornuften i at vælge det bedste værktøj til opgaven. Nogle gange er det C++, andre gange C# og helt andre gange et tredje sprog. Man kan ikke bare sige at f.eks. C++ (eller C) er überl33t til alt, for det er en sandhed med modifikationer. Jeg kan sagtens lave det meste i C# (eller Java) som i har tænkt jer at bruge C++ til, og lave det en hel del hurtigere. Så tænk over hvad der er smartest til den opgave du har tænkt dig.
Og så er der jo intet galt i at kunne flere sprog og paradigms.



t