Sunday, July 12, 2009

What should I learn after I master C++?

I'm a computer engineering student and I'm still trying to master the basics of C++. I just started learning about classes and memory management and arrays. In my book those are the last few topics. There are further topics on online tutorials and such and I plan to move on to Java next.





After I master C++ classes, what is next?





How do you learn how to make GUI in C++?





My other question though is what computer languages should a computer engineer or possible software engineer definatly learn? What are the most popular languages?








should I learn other languages like:





HTML,PHP,Javascript, Perl, Python, Visual Basic, ASP.net, XML, SQL?





Should a computer engineer know all these?

What should I learn after I master C++?
I've been doing Software Engineering for twenty plus years. Here's what I think:


C++ may be the most complex language you'll learn. You will need to learn a lot of the supporting libraries as mentioned by OOP's. PERL, Python and PHP are scripting languages and you can learn them as you need them. I think Java is important to learn, it is a delightful and useful language. The syntax is similar to C++.


The web based languages (HTML, Javascript) are worth learning if you plan to do a lot of internet stuff.


XML is useful and easy. In many situations.


I have to say that once you have C++ under your belt other languages come pretty easy. They all have loops conditions and variables, many support object oriented programming. I have never learned PERL, Python or PHP to any degree, but can figure out how to use them when there is a particular need. I've used all three at one time or another.


Visual Basic is just a shell, so to speak, over the DotNet CLR. So, it is no more useful than Java#, C# or managed C++. And since you will know C++, C# and managed C++ are a matter of learning their DotNet quirks.


Mostly, as a software engineer, you will come to a job and have to learn the application and particular libraries the employer is interested in. So you may have to learn a new language on the fly. But you should understand basic data structures and algorithms. Also math through linear algebra is important. And most importantly, as a software engineer, you need to understand how to solve problems. Then languages are just tools to solve them.
Reply:Well, if you manage to learn C++ properly, you should learn the most useful libraries for it, as C++ is probably the most powerful language available. (Well maybe C is better for drivers..meh).


Here is a list:





Win32 API -Allows you to make GUI using C++ on Windows,


lets you handle processes, threads, user input, make video game cheats..loads of stuff


Winsock - Lets you make networked programs


Direct3D - Lets you make 3D programs.


Fmod - Sound library used by many professional game designers





Various other useful ones like zlib, libpng, etc..





Of course, this depends on what you want to do with your programming. I also suggest you learn Perl, as it's a good language with which to quickly develop small utilities and text handling / administration programs. If you get into web design, you should learn Flash, Javascript, SQL, and PHP.





I advice against learning Java unless you must, since it sucks. (C++ is wayy better, although not as portable.) A computer engineer should know C,MIPS, and x86 assembly. These are relatively low level and are what engineers often have to deal with. (The ones you listed are high level and are used mainly for Web development.) The most popular languages are C/C++, C#, and Java.





C# is also good for rapid development, but the user must have .net framework installed...so that might reduce the portability of your programs. I would suggest you learn C# instead of Java because it's portable on all machines with .net installed (Like java needs the Java virtual machine installed) but is much faster and simpler, but just as powerful. Good luck.





Note: Idk where you plan on learning your programming, but I'd like to let you know I have learned all of these except PHP and SQL through the sole use of Google.


No comments:

Post a Comment