Avatar billede lasse37 Nybegynder
30. november 2003 - 01:52 Der er 20 kommentarer og
1 løsning

Hvor? og til hvad?

Hej

Jeg vil gerne vide lidt om programmeringssprogene C++ og Java. Her tænker jeg ikke på Java kørende i en browser, men Java som stanalone program.

Er der applikationer som fx er bedre at skrive i Jave fremfor i C++? Eller er det efterhånden hip som hap hvad man vælger til at udvikle i?
Avatar billede viciodk Praktikant
30. november 2003 - 02:01 #1
Som begynder vil det sandsynligvis være nemmest at gå direkte i gang med Java. Fordelen ved Java er at det ikke er afhængig af hvilket styresystem den bliver kørt på. Det samme Java-program vil kunne køre på Windows, Linux, Solaris osv. uden problemer. Desuden er der ikke nogen fast standard for C++, men det er der for Java, som bliver udviklet af Sun Microsystems. C++ bruges meget til større programpakker. Jeg skal ikke kunne sige om C++ giver flere muligheder, men jeg kan sige så meget at C++ giver en del flere faldgruber end Java.
Avatar billede jakoba Nybegynder
30. november 2003 - 02:11 #2
enig med viciodk.
  Sproget Java er mere konsistent og sammenhængende
  Imens C++ er en videreudvikling af C med objektorienteringen klistret på, snarere end integreret i den basale tankegang.
  Du kan godt nok finde gratis C++ udviklingssystemer på nettet, men de er højest forskellige og medmindre du køber et af de kendte kan du ikke regne med at ret mange herinde kender det og kan give råd.
  Java derimod kan udvikles med det gratis 'sun one' (FORTE) som noget nær alle herinde kender (der er også et par andre som fx Jbuilder, men hvorfor købe når det findes gratis).

  Det store argument for C++ er at det færdige program kører hurtigere. Hvis det du vil lave er billedbehandling eller redigering i mp3 filer er det noget bu bør tage hensyn til; ellers er det ret ligegyldigt.
Avatar billede arne_v Ekspert
30. november 2003 - 10:26 #3
C++ er et betydeligt større sprog end Java. Bl.a. ting som Java ikke
har kan nævnes: unsigned data typer, operator overload, multipel arv,
pointere, templates. Java har så tilgengæld: interfaces, garbage collection.

Java er derfor et noget nemmere sprog at lære end C++. Og selvom man
en gang imellem savner nogen af C++ featurene, så er det ikke det store
problem.

Hvis man kan tage C# som et udtryk for en vurdering af Java, så vil jeg
sige at ideerne i Java er blevet accpeteret - og at fremtidige sprog vil
lade sig mere inspirere af Java end af C++.

Der er en C++ standard. Men den er ret med hensyn til biblioteker og derfor
vil de fleste større C++ programmer bruge platform specifikke biblioteker.
Java derimod kommer med et meget stort bibliotek - og fordi biblioteker lavet
i ren Java er binært kompatible mellem platforme - så kan man normalt
lave selv større programmer portable.

Der findes flere gratis compilere og IDE til både C++ og Java. Til Java
foretrækker jeg Eclipse (www.eclipse.org) blandt de gratis.

Umiddelbart vil jeg vurdere at hvis man skal igang med en helt ny
applikation idag, så vil man vælge C++ hvis man har "specielle behov"
for direkte hardware adgang eller OS specifikek API'er eller real time
egenskaber, mens man til mere generelle applikationer vil vælge C# eller Java.

Java er ret dominerende indenfor high end enterprise apps med J2EE
(CORBA er en lille niche og MS teknologierne er Windows specifikke).

Men C++ stortrives til f.eks. spil.
Avatar billede lasse37 Nybegynder
30. november 2003 - 13:44 #4
Er C++ fx meget sværere at udvikle i end Java er? Og er der ikke programmer som er bedre at udvikle i C++ fremfor Java eksempelvis? Altså foruden hastighed.

Og hvad er J2EE for noget?
Avatar billede arne_v Ekspert
30. november 2003 - 13:59 #5
Hastigheds forskellen er normal ubetydelig med moderne JVM's.

Typisk er det de 3 årsager jeg nævnte at man vælger C++ (foruden at man
allerede er startet i C++).

J2EE = Java 2 Enterprise Edition (JSP, Servlet, EJB, JCA)
Avatar billede lasse37 Nybegynder
02. december 2003 - 05:26 #6
Tak, det lyder rigtig godt alt sammen. Er Jave fx mere sikkert end C++? Går ud fra at det ikke er muligt at lave et styresystem i Java eftersom det jo kræver en JVM for at køre selv.
Avatar billede arne_v Ekspert
02. december 2003 - 07:43 #7
Ja. Der er f.eks. ikke de samme risici for buffer overflow.

(husk: mere sikkert != sikkert)

Det er korrekt.
Avatar billede lasse37 Nybegynder
04. december 2003 - 02:23 #8
De der er exe filer man kan lave i Java som Jar filer fx. kan de kører uden JVM eller hva?
Avatar billede arne_v Ekspert
04. december 2003 - 07:57 #9
Nej.

Man kan ikke køre Java uden JVM.

(du kan heller ikke køre et .NET program uden .NET runtime)
Avatar billede lasse37 Nybegynder
04. december 2003 - 19:34 #10
Nej,det tænkte jeg jo nok. Det er måske heller ikke så smart. Sidder lige nu og læser om statiske variabler i Java. Det står at  de er klasse variabler og ikke objekt variabler, men alligeven skriver de at objekterne deler den samme værdi. Mærkeligt, eftersom de ikke har noget med den statiske variabel at gøre..??
Avatar billede arne_v Ekspert
04. december 2003 - 19:38 #11
Nej, men de har noget med klassen at gøre !
Avatar billede arne_v Ekspert
04. december 2003 - 19:41 #12
public class X {
    private static int v1;
    private int v2;

...

    X x1 = new X();
    X x2 = new X();
    X x3 = new X();

3 instanser x1,x2,x3 af klassen X

de 3 instanser har hver sin v2

de 3 instanse deler en enkelt v1
Avatar billede lasse37 Nybegynder
04. december 2003 - 21:54 #13
Aha, og hvordan får du så adgang til v1, når du ikke kan gå gennem objekterne?
Avatar billede arne_v Ekspert
04. december 2003 - 21:57 #14
Inde i klassen X bare som v1.

Hvis den var public så skulle den udenfor klassen X bruges som X.v1 (altså
med klassens navn i.s.f. objektets navn foran punktum).
Avatar billede lasse37 Nybegynder
04. december 2003 - 23:21 #15
Skal man ikke lave nogle statiske medlemsfunktioner for at få adgang? Eller hvornår er det man benytter dem da?
Avatar billede arne_v Ekspert
04. december 2003 - 23:25 #16
Jo det vil være det pæneste.

public class X {
  private static int v1;
...
  public static int getV1() {
      return v1;
  }

Den refereres så som X.getV1().
Avatar billede lasse37 Nybegynder
06. december 2003 - 00:58 #17
Ja, nu ligger du jo også variablen i public delen. Men havde du lagt den i privat så måtte du jo benýtte en medlems metode til at få adgang. Når den ligger i public har alle og enhver jo adgang til den, selv andre objekter.
Avatar billede lasse37 Nybegynder
08. december 2003 - 16:02 #18
Hej Arne

Du kan tro at jeg er glad for din hjælp, og jeg vil gerne sætte pointene op, for jeg har lige nogle tillægs spørgsmål.

1: Vil du mene at interfaces i Java erstatter mulipel arv som i C++?

2: Da man åbenbart allokere sit array på heapen i Java, og ikke på stakken som i C++, er det en fordel eller en ulempe?

3: Har en Java nogen form for erstating for operator overloading? Eller hvordan løser Jave denne mangel?
Avatar billede arne_v Ekspert
08. december 2003 - 16:08 #19
1)

Delvist.

Via interfaces understøtter Java multiple definitions arv, men ikke
multipel implementations arv.

2)

(arrays i C++ kan også allokeres på heap med new)

Det har ihvertfald den fordel, at arrays er objekter.

Og p.g.a. garbage collection er der ikke noget problem med
deallokering.

3)

Eksplicitte metode kald.

Og ja det kan godt være lidt klodset.
Avatar billede arne_v Ekspert
08. december 2003 - 16:08 #20
Og et svar !
Avatar billede lasse37 Nybegynder
15. december 2003 - 15:53 #21
OK takker for hjælpen..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester