Athena: I wasn’t talking about a physical stack, but the logical construct. There is a fundamental difference between a stack and a queue. What is it?
BTW, queues are used all the time in computers. Microsoft Windows uses a queue for one of the main functions of the operating system. Any clue what it is?
bda: 5 out of 10 isn’t good enough. If you can’t answer at least 9 out of those ten (I’ll cut you some slack on the ‘C’ question, as it’s language specific), then what you really need is to learn how to PROGRAM. Forget certifying yourself in a zillion languages.
What you should do is start with some good ‘fundamentals of programming’ books. Learn how to code a good function. Learn why global variables are generally bad. Learn how to reduce a problem down to common steps and implement them in code. Learn how to test your software, and how to come up with a testing framework that will allow you to validate your functions and make sure that they not only return right answers for specific inputs, but that they handle all the boundary conditions as well.
Once you’ve done that, learn object-oriented programming. Learn how to build an application out of objects, how to model what you want, etc.
Learn some Boolean Algebra. If I give you a problem that says, “I want this light to go on if you toggle switch A, or switch B, or switch C only if A and B are both off. However, if all three switches are on, I want the light off”. These types of problems come up all the time, and you had better be able to reduce them to a simple expression and deal with them. You might have to learn things like DeMorgan’s theorem to reduce the expression to make your code efficient. I can’t tell you how many times I’ve seen bad programmers try to solve problems like this with a whole bunch of nested IF and CASE statements.
If you just want to noodle around on your own, take whichever language you think would be interesting, and hack your way through problems. But if you want to get hired and be a professional, learn the fundamentals. Stringing together lines of VB or VC++ with correct syntax is a trivial part of programming. Actually coding in the language of your choice makes up perhaps 10% of the effort of designing any non-trivial application.
If you go the route of learning to program VB professionally, be aware that a huge chunk of your work will be designing GUI front ends for database applications. So learn SQL, and learn data structures and how to build them. Get a good book on database theory, so you can build a set of normalized tables that are extensible and efficient. You’ll be doing a lot of that.
If you decide you want to go the C++ route, you’ll almost certainly wind up working on system-level code, so learn machine architectures, and get heavily into the architecture of the operating system you’re working with. In Microsoft’s world, that means learning MFC, which is pretty complex and requires a lot of the theoretical knowledge I was talking about earlier.
If you go the systems route, you need to learn how computers work down to the bare metal. Get a book on Assembly language, and work your way through the problems. Learn how the machine represents programs, so you can understand C structures, register pointers, stack manipulation, etc. Learn about the hardware, what a UART is, how the RS-232 protocol works, etc. You’ll have to learn some networking protocols along the way, primarily TCP/IP. There’s a reason the C++ guys make a lot of money, and it’s not because they know C++. It’s because of all the other knowledge you have to have to be a good C++ programmer.
A very good book for general programming style is “Code Complete” from the Microsoft Press. Their “Writing Solid Code” is also excellent. You’ll also need a book on Data Structures and Algorithms. Grab a used textbook for a university-level intro to computing science course. Better yet, go to university or a 2-year college and study.
As you can see, I have very little use for ‘professional’ programmers who’s only knowledge comes from Microsoft Certification Courses. I don’t have anything against people with the certification, but then I don’t have anything against people who are self-taught. I look at resumes all the time from people who have never taken a formal computer course. If their skill set looks good, I’ll interview them and find out very quickly if they have real knowledge or just play around. The same goes for the certified guys. The certification means very little to me, so everything comes down to the interview. Granted, being certified may get you in the door for an interview whereas the self-taught guy might not, but you still have to pass that interview. And if all you know is what you got from Microsoft, I guarantee you’ll fail.