I will soon be getting my associates in computer science.
I have taken two courses in Java (mostly just learning to use the language), a course in data structures, assembly language, and computer architecture and organization. Thats it for my schools compy sci curriculum in terms of computer science courses (of course there are plenty of math courses and other things)
Apart from that, I have taught myself C++ and do practice programming for fun.
So I feel like I should know something about programming, yet I read programming articles and message boards and I still have no idea whats going on. Why?
I think the problem is that I spend all the time learning about how to program in specific languages, setting up data structures, implementing algorithms, etc. But I learn nothing about say..what a Project is? Whats a DLL? Whats an API? What is a module? How do you set up projects, where do you place the files, how do the files interact?
I usually just Google these things, but often the definitions contain more unfamiliar terminology, and I get just a hazy idea of whats going on.
I'm really having trouble explaining this, because I don't fully understand what it is I'm lacking. But I feel like I need to know more about... how do we actually put our code together, and turn them into actual programs. How do we access predefined resources and make them work with our programs, and just...general programming knowledge?
I guess I feel like the only thing I understand is source code. But there is clearly, far more to a programming project than source code.
I have the whole summer off and I am hellbent on gaining as much programming knowledge as I can, but I'm not really sure where to look. I have looked at some books, but many of them again seem to use a lot of terminology and information that I've just not been introduced to, and I'm confounded by it.
Does anyone actually bother to explain these things, or are programmers just assumed to know it after a course or two in C++?
So I guess my question is, if I want to learn about general programming knowledge, or the basics of the programming environment, where should I begin?
Last edited by mikau (2008-05-13 20:35:00)
A logarithm is just a misspelled algorithm.
Once you got the coding down, everything else is just details. Typically you learn those things by experience. The thing is that every environment and project is different. There is no standard way of setting up a project. A lot of people use common structures (etc, lib, src, bin), but other than that, each project is very different.
How do we access predefined resources and make them work with our programs, and just...general programming knowledge?
There are thousands of libraries, the vast majority of which you will never hear of or need to know. For example, a popular library on Linux is gtk and there are many more. But anything you learn with gtk will not carry over into the windows API. You have a project you want to do, you do research to find what libraries will be helpful, and then you learn about how to use them through online documentation.
A DLL is just a dynamic link library, Microsoft's implementaiton of a shared library. It contains code that many programs will want to use, hence saving space.
An API, application programmer interface, is pretty much exactly like it sounds. It's for application programmers (you), and it's an interface, in the same sense that Java uses the word. It gives you basic function descriptions implimented by the language or library for you to use. Some examples are Windows API, Java API, and OpenGL API. That is, the first is an OS API, the second a language API, and the third, a library API.
So basically, just to reiterate, you typically don't go around finding out these things until you need to. For example:
I want to make a GUI program in linux.
Google: GUI programs in linux
Result: X windows, Gtk, etc
"In the real world, this would be a problem. But in mathematics, we can just define a place where this problem doesn't exist. So we'll go ahead and do that now..."
Do a project!
And when you get stuck you can use the web for advice, and the advice will start to make sense as you go.
Every area has its own lingo, acronyms, ideas, structures. And you just have to get your head around them (part of the fun).
And it never seems to stop! Always more to learn as technology moves on.