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
Nej der er intet galt i at kunne flere sprog, men at vælge mellem C++ el. C# er jo kun en smags sag. Hvis vi til gengæld vælger mellem C++ og C# .NET er der en kæmpe forskel, da .NET er noget af det værste vrøvl jeg længe har oplevet.
(Man lad os nu please ikke begynde en .NET fight! Stay on topic :P)



Giver det mening at snakke om C# uden .net?
Valget af sprog er ikke kun en smagssag.



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.

Tja, det er såmend rigtigt nok, men det er nu meget rart at have et primært sprog. Det kan godt være, at java ville være det bedste til en given opgave, men hvis man nu i forvejen har C# kompetencer, og opgaven _kan_ udføres i C#, så er det ikke altid forsvarligt, rent tidsmæssigt, at skulle til at lære et helt nyt sprog(java), når man kan benytte sig af det man allerede kender :)

Men naturligvis er en bred vifte af kompetencer altid fornuftig. Bare ikke altid muligt, tids- og overskudsmæssigt :)



Giver det mening at snakke om C# uden .net?
Valget af sprog er ikke kun en smagssag.

Niks, det giver ingen mening, bare mig der vrøvler.. :D







Indlæg senest redigeret d. 29.09.2008 11:56 af Bruger #13985
Bare du VIRKELIG vælger et sprog, altså ikke bare skifter frem og tilbage mellem 2, det bliver du nemlig aldrig rigtig god af (Det er i hvert fald min erfaring).

Hvis Java var ude er der vel to tilbage:
C++
C#

Hovedargumentet for C++ er vel cross-platform
mens C# er (hæng mig ikke op på det her.. :P) .NET platformen

Hvad er dit mål med din programmering? Vil du måske leve af det? Er det en lille/stor hobby? Et fritidsjob? opensource-mand? Svar selv på disse spørgmål, så tror jeg at svaret vil blive lidt lettere! :)

Held og lykke herfra







Indlæg senest redigeret d. 29.09.2008 11:56 af Bruger #13985
Jeg vil godt lige give lidt svar på den krig som mit indlæg (ganske som forventet) gav.

mht. multipel nedarvning, så er (næsten) nødvendigt i c++, da sproget "mangler" det Java og c# kalder for interfaces. Det går også fint sålænge man ikke bruger det til andet end det, konflikterne begynder dog at hobe sig op når man arver fra 2 eller flere "klasser" navnligt hvis de alle specificerer den samme metode signatur.
Jeg synes derfor det er en bedre ide at man kun har eet skud i kanonen, men tilgengæld kan implementere alle de interfaces man lyster. Det er vel også rimelig tæt på den måde du anvender arv på idag Bertel?

Hvad angår typesikkerhed, så er det relateret til hukommelses sikkerhed.
Et teoretisk eksempel. et objekt, a, af typen A er blevet instantieret af objektet, e, e giver en pointer/reference til a til objektet v. e deleter nu a, og instantierer et nyt objekt, b, af typen B. I teorien er der ikke noget i vejen for at b kan allokeres der hvor a engang lå, og v, der tror at han har en pointer til et objekt af typen A, har nu i virkeligheden en pointer til et objekt af typen B, og han har ingen måde at vide det på!

Hvad angår hukommelsen, så kan C++ ikke defragmentere sit hukommelses område, hvilket vil sige, at det vil over tid blive fragmenteret, n refererer til antal af fragmenter. Java og C# kan derimod defragmentere deres hukommelses område, og derfor kan de nøjes med blot at have en enkelt pointer der peger på første ledige byte, og det er derfor blot at sige haps. Det er dog en sandhed med små modifikationer, fordi for at kunne lave det nummer skal man have en garbage collecter.

Og så til hastigheden. Jeg har ikke lige kunnet finde nogle sammenligninger af nyere dato, men de 4-5 år gamle sammenligninger jeg har kunnet finde, indikerer at det var rimelig lige, med en marginal fordel til c++ overall.
På 4-5 år er c++'s fordel ikke blevet bedre. Det er min vurdering at hvis ikke c# og java allerede er hurtigere end C++, så bliver de det over tid, for 99,9% af os.



Rent idealistist valg af sprog er en ting, men realistisk valg af sprog er noget andet! Hvis jeg skal ud og have et job, har jeg størst mulighed for at få et job hvis jeg kan skrive på mit C.V at jeg kan .NET. Der er mange jobs i C++ og Java der er forsvundet til fordel for jobs der har med .NET at gøre. Hvis man sidder på sin idealistiske piedestal og holder på at C++ er det bedste sprog i verden, begrænser man sine muligheder - der er ikke plads til idealismen - men derimod realismen.


Bare mine 2 cents



Per: Ja, det er rart at have et primær sprog, og det var heller ikke det jeg argumenterede imod. Det jeg sagde var at man skulle bruge det bedste værktøj til opgaven, og det kan sagtens indebære at bruge C# istedet for Java, eller omvendt. ;)

Jakob: Hvad angår dig, så er du tabt for omverden og sund fornuft. Du er den typiske troll der mener at C++ er supersejt fordi det har værktøjer til at tilgå rå hukommelse, og tidligere en uovertruffen hastighed. Jeg tildeler dig hermed den officielle Chadk pris.



t