Well you've made a good start - learning C++ certainly is a good first language to learn because so many other languages are very similar to it.
PHP is also another good language to learn, but once you take a look at PHP if you know C++ you'll soon realise it is very, very similar to C++. There are a few differences like you don't have pointers in PHP and defining variables is a bit different (it's nowhere near as strict as C++ with it's casting from one type to another - PHP does most of the casting automatically which can feel a bit strange).
Also look into SQL - It's vital that you know SQL because SQL (quite often pronounced Sequel) allows access to a major database system which most internet based programs use in some way (forget that Microsoft Access - SQL is the real deal!) SQL is very different to C++ but you can quite easily pick it up.
If your using C++ you can find SQL engines to work with SQL database, and SQL and PHP go really hand in hand. SQL is quite self explanatory here are some examples:-
SELECT * FROM employee_table
SELECT name FROM employee_table
SELECT address FROM employee_table WHERE town = "Ludlow"
the top example tells it to "select" (select is like "get") all (* is a wildcard) fields from employee_table
the middle example "select" all data in the name field from employee_table
and the bottom example is to "select all data in the address field from employee table, but only if town is equal to Ludlow
The select command in SQL is like reading the data in. There are other more complex options too.
One other thing you should also learn about with C++ is a thing called Object Orientated Programming or OOP.
OOP is where everything goes back to one basic object but then you create new objects that evolve from that object - possibly the best way to describe OOP is to think of a vehicle...
now if your creating a vehicle they all have the same outline don't they - what makes a vehicle...
class vehicle
{
wheels
chassis
brakes
}
now if we wanted to make a push-bike that class might be fine, but what if we now want to take it a stage further and make it into a motor bike or a car. Well either way it's still going to have wheels, chassis and brakes so we can say something like this
class motorbike :: vehicle
{
engine
suspension
wheels = 2 ;
}
or
class car :: vehicle
{
engine
suspension
doors
seats
}
now from there we've created a few objects the car object is a child of the vehicle object ( car::vehicle ) so anything that all vehicles have like wheels, chassis and brakes are already defined but now we've added some extra bits on that are exclusive to cars like it's doors, seats, engine and suspension.
The other one - the motorbike only adds suspension and engine to it and sets wheels to 2 because normally a motorbike doesn't really need an entry for seats or doors, of course we could take it one stage further like this:
zafira::car
{
doors = 5 ;
seats = 7 ;
wheels = 4 ;
}
meriva::car
{
doors = 5 ;
seats = 5 ;
wheels = 4 ;
}
Now in this example we've created a new child of the car - again it's got all the same things that the car has got, the only difference is we're now defining it to be a specific car. We're telling it that a zafira car has 7 seats, where as a meriva has 5 (I only used zafira in the example 'cos I've got one), but going back to the beginning - it's still got all the stuff that the car has got - engine, seats, and also everything it's grandparents have got (it's grandparent is vehicle - so it's still got wheels, a chassis, and brakes)
So that's how OOP works, you start out with the most basic of object and then create new objects off from it. That way it's easier to create evolution - like from vehicle you could go to car, bus, van, bike, motorbike, coach they all share the same basic vehicle structure even though they're very different - and from car you could even go to various types of car - like even
class robinreliant :: car
{
wheels = 3 ;
}
And finally you also have recursion - recursion is a handy trick to learn because you can make a function loop without a for loop and it's really useful - for example
int total ( int ret = 0, int count = 0 )
{
return ( count > 10 ? ret : total ( ret+count, count+1 ) ) ;
}
now the example might not seem very useful - but it's only a basic example - in the example the total function will go through from 0, if the counter is less than 11 it will call the total function again (recursion) until it reaches 11, it will also add the counter to the ret value and at the very end when the counter reaches 11 it will return 1 to 10 added up - not really too useful, but you can use recursion in other ways - going through directories on a hard drive, or linked lists...
(btw in case you've not seen it before ?: is like an if else statement - e.g.
int b = 5 ;
int a = ( b == 10 ? 5 : 10 )
is the same as
int b = 5 ;
int a ;
if ( b == 10 )
a = 5 ;
else
a = 10 ;
just a lot shorter!