About C languages / next language for me

03/31/2012 21:04 BeginnerDO#1
Hey,

I've been "working" with vb.net now for quite long. Or long enough for me to notice that it isnt my language.

So I'd like to ask you about C languages. I dont know much or almost anything of them so this could be quite stubid question too :) They all look quite similar (C, C++, C#, anything more?) so are they? If they are similar what are differents? If I think names they C could be the first language, C++ in more advanced and C# something between them. But maybe some lines of text about their (similarity and differences) could be really good.

The above is the main question but I'd like to ask another too. So far vb.net is the only language I know (enough to make different kind of "basic" programs but still there would be much to learn). What do you suggest to learn next? The main point is that I can do something with it: now and in the future. I have also thought Java because it is so much used but it looks terrbile :D But what do you think? I've also had a little kind of problems with vb.net's way to "work outside of the program" and a little longer codes was hard to write. (lack of exercise - my laziness :) )
03/31/2012 21:54 MrSm!th#2
C, C++ and C# are actually totally different languages although C and C++ have some things in common.

C is the oldest language and has a procedural programming concept. It does neither support OOP, nor generic programming. It is native, which means it is directly executed by the processor, you can embed inline ASM and you can directly manipulate the memory which makes C a very powerful language but also very unsafe and uncomfortable, because you have to do many things manually (for example freeing allocated memory) and you have to be aware of many things which could cause problems if they go wrong. The amount of applications which really need C and for which you couldn't use C++ instead is very low and shrinking.

C++ combines several programming concepts like OOP, procedural programming and generic programming. It provides all the features which C provides, so you have to grapple with the same problems. However, the OOP and generic paradigms make the life much easier and make several libraries (for example boost) possible, which can take over some of the dirty work for you. Additionally, it adds some features like runtime type information to the very lowlevel information a C assembly provides.
In many cases (especially commercial ones), which need a very good performance (like games) or direct memory access this is the language of choice.

C# is a .NET language, which means it is compiled into byte code and then executed by a virtuel machine and not by the processor which can cause some performance issues. However, in most cases you wouldn't even notice this. Besides that, the byte code is full of very highlevel information about the structure so that decompilers have an easy job; you have to protect your work with obfuscaters in most cases (unlike your project is allowed to be seen by others). You have no direct access to the memory (well, you CAN do it with a special keyword I dont remember, but you should NOT) and you cannot directly execute ASM code which makes it a bit less useful for gamehacking, but it's still enough to do basic and advanced stuff. Unlike C and C++ it includes an own GUI framework (you have to use 3rd-party libraries in C and C++) and the overall .NET framework makes the life much easier by providing classes for many different things you would have to do manually in C or C++.
In most cases this language provides everything you need to write professional applications (the performance loss is very low compared to the Java VM), although it's hard to protect your work from piracy.

The suffixes ++ and # have nothing to do with the difficulty of those languages. Actually, learning a programming language has almost always the same difficulty, but learning C and C++ can me more depressing or "annoying" because you have to fight with many annoying problems like memory leaks or access violations.