java el c++

Här pratar vi programmering i dessa olika former. Perl, C/C++, Pascal, ADA, Lisp, COBOL, ZX Basic och mm.
Post Reply
sjukperro
Posts: 169
Joined: 30 November 2008, 20:10
Location: piteå

java el c++

Post by sjukperro » 18 June 2010, 12:57

ska läsa upp mitt gymnasiebetyg och ska läsa programmering, funderar på om man skulle ha valt java el c++.. så skulle vara fint att få höra några fördelar/nackdelar med båda språken :)
//Johan

Grisner
Posts: 8
Joined: 14 November 2008, 13:41

Re: java el c++

Post by Grisner » 8 July 2010, 13:01

Nu är jag ingen inbiten javakodare, utan har mest kodat C/C++, så om jag irrar bort för långt får väl någon helt enkelt skrika (jag lovar att inte försöka mig på några tekniska jämförelser jag inte klarar :-)); Alltså: C/C++ är ett mer hårdvarunära språk, vilket gör att det är snabbare i exekvering, men å andra sidan sägs det att man måste vara mer noggrann med minneshanteringen. Java å andra sidan, i och med att det alltid körs i en virtuell miljö (javavm) är långsammare, men som jag fattat det mer lätthanterligt i själva kodandet.

Jag är lite osäker på om jag minns uttrycken rätt, men jag har för mig att man kallar java ett interpreterat språk och C/C++ ett kompilerat språk. Det det innebär är i alla fall att java kompileras under körning, medan C/C++ kompileras en gång och kan sedan köras obegränsat antal gånger, och även på andra maskiner (med samma förutsättningar). Detta påverkar naturligtvis också hastigheten i exekveringen.

I och med den sagda virtuella miljön så är java verkligt plattformsoberoende, om jag fattat saken rätt så kan du i princip köra en och samma javaapplikation på vad som helst där du har javastöd. C/C++ har inte samma direkta plattformsoberoende, då man måste kompilera om källkoden för en ny miljö (annat OS, exempelvis), och då gäller det också att alla nödvändiga bibliotek finns tillgängliga i denna miljö. Förutom detta kan jag tänka mig att det finns få system som klarar det ena men inte det andra, definitivt gäller detta Windows, OSX, GNU/Linux, android och symbian. Dock skulle jag kunna tänka mig att mindre linuxsystem, typ gumstix och arduino inte har javastöd.

Min erfarenhet av java är som sagt begränsad, medan jag har lite erfarenhet av att koda C++, och där kan jag säga att det är just detta med biblioteken som kan leda till problem. Standardbiblioteken finns naturligtvis till de flesta plattformarna.

Jag skulle nog vilja säga att det beror lite på vad du skall koda och hur du vill publicera resultatet. Tänkte du dig att exekvera resultatet från en websida så är java enda alternativet. Tänkte du dig en klientapplikation eller närmre kommunikation med hårdvara så skulle jag rekommendera C/C++. Man kan få till schysst grafik även med java idag, så där har jag lite svårt att svara på vad som egentligen är smartast (skulle vara just att C/C++ är snabbare att exekvera som kan avgöra där, möjligtvis).

Av det lilla jag sett av java skulle jag kanske till och med vara lite kontroversiell och säga: lär dig C/C++, och få hälften av javakunskaperna på köpet! Kom igen, ge mig lite motargument där, någon!

User avatar
kjell-e
Posts: 2817
Joined: 21 December 2002, 16:27
Location: Linköping
Contact:

Re: java el c++

Post by kjell-e » 9 July 2010, 09:12

Java är inte interpreterande utan det är kompilerande. Man kompilerar källkoden till Java-bytekod som körs i en virtuell javamaskin. När programmet körs görs en del "just in time"-kompilering.

Om man börjar med Java slipper man pekarhantering och minnesallokering som lätt ger upphov till fel. I Java finns det färdiga klasser som sköter sådant och det gör att man enklare kan koncentrera sig på det som är väsentligt istället för att gräva ner sig i detaljer som har med allokering och pekare att göra.

C++ är dels procedurellt och dels objektorienterat. Java är nästan helt rent objektorinterat. Java kan kanske ur den aspekten ses som ett renare språk.
I och med den sagda virtuella miljön så är java verkligt plattformsoberoende, om jag fattat saken rätt så kan du i princip köra en och samma javaapplikation på vad som helst där du har javastöd. C/C++ har inte samma direkta plattformsoberoende, då man måste kompilera om källkoden för en ny miljö
Språk där man kompilerar till "native"-kod för den aktuella maskinen är alltid beroende av hårdvarutyp och operativsystem. Det innebär att källkoden måste anpassas om den ska kunna kompileras för ett annat operativsystem. Man kan t.ex. inte enkelt ta källkoden för ett program som är gjort för Windows och kompilera och köra det i Linux, i alla fall inte om man använder windowsspecifika saker. Med Java och den virtuella javamaskinen så fungerar samma program i stort sett överallt utan att ens behöva kompileras om.

Här finns en jämförelse mellan C++ och Java.
http://www.ida.liu.se/~tao/kursmaterial ... n-Java.pdf

sjukperro
Posts: 169
Joined: 30 November 2008, 20:10
Location: piteå

Re: java el c++

Post by sjukperro » 9 July 2010, 19:15

tror det blir java till att börja med, får se om man får läsa c++ också :D
//Johan

erik_persson
Posts: 1474
Joined: 29 August 2002, 15:19

Re: java el c++

Post by erik_persson » 25 September 2010, 14:26

Trots att tråden är gammal så hoppar jag på och säger att c++ lider av en hel del last från c. Upprättande av klassgränssnitt är närmast bizarrt idiotiskt, där gränssnittet (h-filen) redovisar för klassen interna strukturer. C++ konstruktorer medför, om man inte aktar sig, att implicita typkonverteringar införs. Subklassning kan inte förbjudas vilket i priincip gör att alla destruktorer måste vara virtuella om det är tänkt att klassen ska finnas i klassbibliotek. Minneshantering kan ställa till underliga problem vid ärvning.
Java är förvisso något långsammare, men c++ tillhandahåller alla tänkbara möjligheter för att skjuta sig själv.

/ep

Post Reply