I am completely new to programming and I was just lazy to start even though I was really interested, so I forced myself into a C++ course even though my current college major is quite irrelevant. Heehee. So far I can write simple ones like using user input to calculate stuff (volume etcetera).
I started watching tutorials off youtube and was quite comfortable on Code Blocks, but then the class I am taking uses Visual 2008... So I had to download VS but I got 2013 which feels completely different! Most tutorials on youtube are about VS 2010 and the interface is very different and I find it hard to learn now.
1. What is a good source of VS 2013 tutorial?
2. Am I starting from the right language??
3. Please share experiences on how you first started programming.
i cant attest to using vs2013 (linux developer w/ gedit; dont even use an ide), however c++ is a great place to start. it has its benefits and downfalls (i know because i started with it; well c rather). if you start with a simple language, say python or php, then it will teach you programming fundamentals that you will see in most other languages. however, making the shift to a more lower-level language where not everything is done for you (like c++ for example), can be difficult, since some new ideas are at play. if you start with c++ it is (at least in the cases of when ive taught people) more difficult to learn, but moving to other languages is a breeze
they are two very different things. vs2012, code::blocks, xcode, geany, they are ides. ides group tools like debuggers, editors, and compilers together. hence the i (intergrated). it sometimes provides code completetion, highlights errors, and has syntax coloring which is how you get the d (development) and then wrap it all together and you get the (e)nvironment. compilers read in a source file, analzye it, and spit out the equivalent file in another language. its not whatever. its like saying bananas and banana splits are the same thing
Recently I found out, that Lisp(I would choose either Common Lisp - which is fast and rich - or Closure - because it might be useful and semi-popular) could be nice learning material. Its syntax will make it hard for you to switch to other language(at least from Algol family), but at the same time... Somehow it's easy to grasp concepts of how things work in Lisp. Maybe it's all these parenthesis? ;))
But beginner should probably go with Python/C++(considering we're on cpp forum :)). These are more popular then Lisp, so there are more tutorials, resources, and so on.
Python, Java, and C# are good first languages. C++ is still possible for a first language, but it is complex and can be daunting to learn due to its complexity. The thing is to pick a language and learn it by reading tutorials, books and, most importantly, program and practice. There is no point in learning it if you don't plan to program ever minute you can to use what you learn.
I'd recommend starting with Ruby. Its really simple. C++ can be a bit of a pain to grasp at the beginning if you are really new to programming since even your "Hello World" program will have some stuff like #include and a main() function and the return statement. Those stuff needs more explaining and can be quite confusing for beginners. If you start with C# or Java, OOP needs to be explained in your "Hello World" program because you'll see stuff like publicclass MyFirstProgram. Those can go above your head if you've never programmed before. So if you start with Ruby or Python, your first program will be as simple as: puts "Hello World!"
That won't need much explaining and you can (hopefully) get many new concepts in a short time. After that, learning C++ would be A LOT easier.
I would go with VS 2010, these newer compilers spoil the user.
They don't spoil the user. What if the user wants to use newer C++ 11 features?
1) A program is data - there's almost no syntax, you just declare data structures which are interpreted as a program.
2) Macros. This is closely related to 1).
1) Garbage collector.
2) Dynamic typing.
3) A concept of variables - all of them are effectively pointers.
4) A real function type. And in result, closures.
6) Eval. Ability to write self-modifying code, ability to generate code on the fly.
C++ has garbage collection... I think you meant forced garbage collection. Also, I think you meant functions as first class, which can be achieved in c++ with std::function.
Well, I heard there are some garbage collectors for C++, but they suck big time. Correct me if I'm wrong. I think GC is something you must design from ground up. And RAII is not GC - you must sill think about object ownership, unless you use shared_ptr for everything, which is like, dumber and slower version of a real GC.
About functions - what I really had in mind are closures. In C++ you can simulate them with objects, but then again - in any Turing complete language you can simulate any feature, in the extreme case by writing an interpreter for higher-level language ;) Objects are just not as convenient in some cases.