Voor het geval dat iemand jouw het "java-is-traag-omdat-het-in-een-vm-draait" fabeltje heeft wijsgemaakt, laat ik dan zeggen dat de helft van de programma's in Ubuntu in Python zijn geschreven, en die draaien ook in een VM (zelfs eentje dat nog minder geoptimaliseerd is dan Java).
Verder heb je ook nog gcj, dat compileert java-programma's naar native binairies.
Mocht je toch nog c++ willen gebruiken, even wat tips:
1) installeer boost. De "standaardbibilotheek" (omg ik begin te lachen) is namelijk nogal... beperkt. (sterk eufimisme). Dependencies++
2) Tenzij je een grote fan bent van geheugenbeheer (nogal moeilijk onderwerp), link je best je programma met een garbage collector. Dependencies++
3) Als je binaire relocatie wilt (zodat je programma kan uitgevoerd worden onafhankelijk in welke map het staat), heb je binreloc nodig. Dependencies++
3) Iets als reflection ga je niet snel vinden in C++... maar er zijn libraries voor. Dependencies++
4) Ben ik al bij networking gekomen? Of File I/O? tenzij je graag posix leert zal dat wel zuur opbreken. Niet te vergeten dat POSIX alleen werkt op Linux. Voor het porten (als je ertoe komt om te porten), zal je weer meer code kunnen schrijven, en oh ja, MFC (Windows) of CF (Mac) gaan leren... Of weer een of andere library zoeken. Dependencies++
Dus straks heb je een programma'tje dat misschien 2x niks doet, maar waar je een hele vloot aan dependencies voor moet installeren... Welkom bij C++.
Vergeet ik nog haast het verschil tussen doorgeven als pointer, reference of copy. En templates. Oh, virtual methods al uitgelegd?
Niet dat ik C++ wil afkraken. Integendeel. C++ is een zeer goede programmeertaal, ik gebruik hem dagelijks. Maar je moet het onder de knie krijgen. En dat is iets wat ik ook nog niet helemaal heb klaar gekregen

.
Java is veel noob-safer: als je wilt leren programmeren (je zegt hier dat je Basic hebt gedaan, dus je kent de "basis") is het beter. De stap van Basic naar C++ is nogal groot. Ik spreek hier uit ervaring. Ik heb al eerder C++ proberen te leren, en ik verstond er niets van. Nadat ik wat ervaring had met Java, ging C++ er als niets in.
En oh ja, begin alsjeblieft niet in Python. Zeker als je niet van VM's houd en dergelijke. Java is nogal redelijk algemeen geaccepteerd, met andere woorden, voor Java is er overal veel ondersteuning. Python staat eigenlijk nog verder af van "native" omdat je hier direct van source-code interpreteert i.p.v. bytecode. Vergeet ik bijna te zeggen dat het packagen ongeloofelijk moeilijk is. En dat het absoluut niet goed is om mee te beginnen als je later C of C++ wilt leren, omdat de syntax helemaal anders is. Het lijkt mij meer op een soort markup language of zoiets.
Hieronder een paar voorbeelden (een simpele klasse met een functie)
Python: (denk even in dat die vier spaties tabs zijn, anders wil Python niet werken

)
class Foo:
def __init__(self):
self->doSomething("Hello world!")
def doSomething (self, mytxt):
print(mytxt)
if __name__ is "__main__":
new Foo()
Java:
public class Foo {
public Foo() {
doSomething("Hello World!");
}
public void doSomething(String mytxt) {
System.out.println(mytxt);
}
public static void main(String args[]) {
new Foo();
}
}
C++, bestand Foo.h:
#ifndef _FOO_H
#define _FOO_H
class Foo {
public:
Foo();
virtual ~Foo();
void doSomething(const char *) const;
};
#endif // _FOO_H
C++, bestand Foo.cpp:
#include "Foo.h"
#include <iostream>
Foo::Foo() {
doSomething("Hello world!");
}
Foo::~Foo() {
}
void Foo::doSomething(const char * c) const {
std::cout << c << endl;
}
C++, main.cpp:
#include "Foo.h"
int main(int argc, char * argv[]) {
Foo * f = new Foo();
delete f;
return 0;
}
Uiteraard beslis jij. Ik dring niemand iets op.
- SeySayux