Java eller C++

Tags:    diverse

<< < 12 > >>
Hey hey.
Jeg har et mindre spørgsmål til dem af jer der både har programmeret i Java og i c++.

hvilket sprog syntes i er bedst at programmere i. Nu snakker jeg ikke så meget om high-end programmering men mere i retning af hvilket sporg i syntes er mest behageligt at programmere.

Min baggrund er at jeg har haft 2 kurser om java på SDU så det kan jeg det meste basale i. Men jeg skal have C++ i et senere kursus.

Men jeg vil gerne i gang med at lave nogle hjemmeprojekter men jeg ved ikke om jeg skal starte op på C++ allerede.

Så jeg vil egentlig bare høre hvad folk der har kodet i begge dele hvad i mener er det mest behagelige at kode i.

Det er lidt svært at forklare hvad jeg mener men jeg håber i kan følge mig.





Jeg synes helt klart at java er mest behageligt at kode i. Syntaxen et en smule lettere at forstå og du har mange flere færdiglavede muligheder i frameworket. Det har jo så den konsekvens at det langt fra performer lige så godt som fx C++. Så det kommer vel helt an på hvad du vil programmere :)



hvis du ved at du skal lave c++ senere i et kursus vil jeg da klart foreslå at du bruger det med det samme.

Til spørgmålet om hvad der er mest behageligt, vil jeg da sige at af alle de sprog jeg har prøvet er c++ klart det værste.





hmm det lyder som om at i er ret enige om at i ikke kan lide C++. er det muligt i kan fortælle lidt om hvorfor I ikke bryder jer om det??



Mange af syntaksne i C++ er rigtig svære at forstå, og det tager længere tid at lære det end andre sprog. Det kan også rigtig hurtigt blive uoverskueligt hvis du sidder med en stor kode. Den er case-sensitiv, som også hjælper på meget på forvirringen. Det er nok også en del sværere at lave GUI applikationer end med andre sprog.

Men egentlig synes jeg at du skal tage det kursus og se om det er noget for dig.



ting jeg ikke kan lide ved c++

-makroer.
-include guards
-2 filer for at implementere noget (h og cpp)
-man skal skrive } ; for at afslutte en klasse.
-den evindelige tvivl om hvor og hvorfor man skal skrive typename nogen steder.
-De til tider totalt uforståelige fejlmeddelser<- kan godt være det bare min visual compiler.
-using namespace ...



Den er case-sensitiv, som også hjælper på meget på forvirringen

Tværtimod, ikke case-sensitive sprog er rodede, for folk begynder straks at skrive Foo, foo eller FOO selv om de mener det samme.

C++ er et ret komplekst sprog med ufatteligt mange features (macros, namespaces, opdeling i interfaces og implementering) osv. Det gør det naturligvis mere kompliceret at læse end mere simple sprog.

Men efter nogle år vil du synes at C++ er det mest logiske og naturlig sprog og fatter ikke andre sprogs meget mystiske syntax, hvordan laver man f.eks. ordentlig koden uden macro'er og hvordan klarer man sig uden include guards.

Men java er på nogle punkter lettere at gå til.



Nu ved jeg godt at det kun er Java og C++ der har været nævnt, men derfor vil jeg nu alligevel lige nævne C#. Det er rimelig simpelt, og bygger lige som C++ (i den seneste MS udgave) på .Net frameworket.



Hehe...endnu et "hvilket sprog er bedst?" type spørgsmål.

"Til hvad?" er vist det bedste svar.

Java har nogle klare fordele:
* Du har det meste til rådighed via standard bibliotekerne (grafik, tråde, sockets, osv)
* Meget informativ mht. fejl. Indekserer man uden for et arrays grænser eller kalder man en metode på en null reference eller dividerer man med 0, får man en exception med et stack trace, som viser, nøjagtigt i hvilken kode fil og i hvilken linje, fejlen opstod.
* Ikke meget langsommere end C/C++ (til tider endda hurtigere):
# http://www.javaworld.com/jw-02-1998/jw-02-jperf.html
# http://www.idiom.com/~zilla/Computer/javaCbenchmark.html
# http://www.kano.net/javabench/
* Garbage collecter
* Mindre kompleks syntax
* Compile once, run anywhere (endda i en browser)

Men også nogle ulemper:
* Langsom opstart (skulle blive fixet med Java 7)
* Bruger mere hukommelse (skulle blive fixet med Java 7)
* Operativ systemets specielle features bliver skjult (men kan benyttes gennem Java Native Interface)
* Kan nogen gange slet ikke løse opgaven (drivere, udviddelser til tredjepart software, osv.)

Spørgsmålet er ikke sådan ligetil at svare på, for alle sprog har deres fordele og ulemper, men derfor er det heller ikke nok for en professionel programmør at kende til ét sprog. Jo flere desto bedre, for så kan man i den aktuelle situation tage stilling til, hvilken platform (herunder sprog), man vil bruge. Og til tider vil det endda være en fordel at dele en opgave op i mange mindre opgaver, og så tage stilling til platform for hver enkelt mindre opgave. Jeg selv løser de fleste opgaver med et mix af C/C++, Java, PHP, SQL, Bash og Ruby, men jeg kan en hel del flere sprog end dem.

Et godt råd jeg selv fik engang for mange år siden var: Lær et nyt sprog hvert år.



... Jeg selv løser de fleste opgaver med et mix af C/C++, Java, PHP, SQL, Bash og Ruby, men jeg kan en hel del flere sprog end dem.

Et godt råd jeg selv fik engang for mange år siden var: Lær et nyt sprog hvert år.


Faktisk et ganske godt råd. jeg er kommet lidt frem til at jeg nok vil fokusere på java til at starte med. For som jeg har tænkt lidt over så er det sikkert nemmere at skifte til et nyt sprog des bedre man kan et andet. jeg kan forestille mig at mange ting når man skifter er sådan lidt: "nå sådan opretter man en ny klasse i xxxx" (banalt eksempel men alligevel)

men bare lige for at gå en smule off-topic. Hvordan automatisere man egentlig en lang række delopgaver skrevet i forskellige sprog. En form for batch der eksekvere de forskellige dele undervejs eller?? (ja jeg kunne godt vente til jeg for det af vide i et kursus på uni men jeg er nysgerrig :) )




men bare lige for at gå en smule off-topic. Hvordan automatisere man egentlig en lang række delopgaver skrevet i forskellige sprog. En form for batch der eksekvere de forskellige dele undervejs eller?? (ja jeg kunne godt vente til jeg for det af vide i et kursus på uni men jeg er nysgerrig :) )


Det afhænger af sprogene, men jeg kan da tage komogvind som eksempel.

Vores spil er lavet i Java, men al statistik og highscores og så'n ligger i databaser, som IKKE tilgåes gennem Javas JDBC (hvilket måske ville være den mest åbenlyse måde), men istedet gennem kald til PHP scripts på en web server. PHP er meget nemmere at have med at gøre hvad angår databaser og så kan man ændre i koden (fixe fejl, implementere nye features, osv.) uden at spillet skal recompiles og redistribueres.

Under udviklingen kan vi implementere interaktive tests i JavaScript. Det er meget nemt at strikke et lille script sammen i stedet for at skulle skrive mere Java.

Brugerfladen til chatten er lavet i HTML og JavaScript. En lille applet ligger inde bagved og håndterer alle netværksevents og informerer JavaScript funktioner når noget nyt sker. Det er meget nemmere at lave brugerflader i HTML og JavaScript end i Java.

På serversiden har vi en bunke Bash scripts som kan finde alle vores multiplayer spil og deres konfiguration. Scriptsene kan så bruge denne information til at tjekke om spillene kører og om der er mange gamle logs, som kan slettes og den slags.

Vi har så lavet en brugerflade til disse scripts, så man selv kan gå ind og pille løs. Den er lavet i C med ncurses biblioteket.

Håber det gav lidt indblik i, hvordan man kan mixe sprogene. Lær en masse sprog, så vil du være i stand til at argumentere for, hvorfor en opgave lettest løses i Ruby, eller hvorfor en opgave skal deles op i tre dele, som skal løses med hvert deres sprog.



<< < 12 > >>
t