Well it looks like we need another fun topic, so here is one:
I am fairly new to programming in general (1 year with multiple languages and not alot of any of them) and have been wondering all along; is this all mostly memorizing things or just knowing where to find the answer to a particular problem? I mean I know that things like Val() and Cstr() would be things that are easily memorized but I am talking about the more advanced things like using the API and subclassing. Do you remember all the parameters to a particular API call, do you memorize the subclassing procedures or do you just know where to look (ie: old source code, API guide).
I would really like to hear what people who have been programming for a while do when they get ready to use an API or begin a subclassing procedure or something similar that is more advanced than the simple structre of a for loop or Val() or something.
P.S. I guess I am showing how much of a newbie I really am here :-\
03-15-2002, 07:19 PM
Programming is about structure. Anyone can but hundreds of lines of code to fill an array, but a good programmer does it the shortest and\or (short doesn't always = efficiant, efficiant doesn't always = short) efficiant method of doing something. A newbie may do this:Dim a(10) As Integer
a(0) = 0
a(1) = 1
a(2) = 2
a(10) = 10whereas an experienced programmer would do this:Dim a(10) As Integer, i As Integer
For i = 0 To 10
a(i) = i
Programming isn't about memorizing. You could memorize the entire language, but not know anything about how to make a short efficiant program.
Before you start to become a serious programmer, you need to learn the basics of programming in general. This includes the flow of a program (in 99.9% of the languages, the code is executed in the order that you type it in), the structure of a program, the do's and don'ts of programming, and how your computer works\reacts to your program internally.
Of course you need to memorize the syntax of all your basic commands, For...Next, If...Else...End If, Select Case...End Select, etc. but that is only a part of the big picture. I, myself, have never memorized any API. I always have API-Guide and APIViewer2000 close at hand when working with API.
Finally, programming is about continually learning. If you knew absolutely everything there is about programming, it'd get REALLY boring, REALLY fast. I recently did a bit of graphics work for The Hand, and while I was doing it, I learned an awful lot about the GDI32 API.
That's the end of my 'lecture'. I know this was probably on the outer boundries of what it was you were actually asking, but hopefully somewhere in there, your question was answered.
03-15-2002, 07:46 PM
I'm a more or less a noob myself. I went to school for years, but only recently really started codeing real stuff.
Based on what I've seen, programming is 10% memorization (i.e. knowing the langauge syntax), 45% understanding programming concepts (structures, techniques), 45% knowing where to go for answers (like here).
03-15-2002, 08:35 PM
Memorization in programming is a fairly unimportant thing to worry about when sites and programs such as Google.com and the API Guide feed you the information. It's the logic that matters. Of course, when you've programmed for as long as I have, typing out a subclassing procedure without reference is second nature. ;)
03-15-2002, 08:41 PM
A little story about Albert Einstein:
Einstein is being interviewed for an article one day. The reporter asks him what the Pythagorean Theorum is. Einstein answers that he does not know what it is off the top of his head. The reporter is stunned that the greatest mathematician of our time does not know an elementary theorum such as this. But, says Einstein, reaching for the bookshelf, I know where to find the answer!
The moral of my story (and please forgive my less than verbatim version of this classic tale) is you don't need to memorize all the answers, but you should darn well know where to look for them. ;)
03-15-2002, 09:32 PM
Man that's a red/pink face. :p
I don't think many people know all or even half of the api calls as there are 1000's of them.
What you could do is each time you come across a new API you could add it to a notepad/word file with some info about it so you can then cut and paste it each time you want to add it to your next project.
03-15-2002, 10:21 PM
Well, when I get the lousy gamma levels set right it will not be quite so red/pink. In the mean time you can just think of it as a very strange sunburn. :D
edit/ There volteface decided to modify it a tad. /edit
03-16-2002, 02:42 AM
I would consider programming to be alot of understanding concepts. Once you understand the workings of an object or objects, you are hwlafway to being able to work with them. EG - the GDI API set. You need to know about DCs and Bitmaps etc, but they are essentially simple API calls. Once you understand *why* they work, you can use them effectively.
Thanks for all the great responses. I guess I was getting a little curious as to haf far I have come. I feel like I know absolutely nothing compared to alot of the people around here and I was wondering how some of you (Thinker and others) are able to keep so much information in there heads.
It really is impressive to see so many people who know so much and willing to share their knowledge wit the rest of us. Thanks alot, you guys are great.
03-18-2002, 07:42 AM
The amount I can know and remember is directly proportional to
the number of stupid mistakes I have made. ;)
Even though I'm still learning myself, I find it hard to remember Api and the like, so I tend to just go to www.vbcode.com or put a post on this forum. :)
03-20-2002, 02:40 AM
I'd say it really depends on the kind of programming you do, and which language is your forte.
If you're primarily a Visual Basic programmer, then the more advanced things you can do are subclassing, and implementing solutions via APIs that you couldn't otherwise achieve with VB. However, if you come from a win32 C/C++ programming background, the API is probably how you do all your interaction with Windows (unless you use MFC, with sucks.)
But some things are common to all languages. Chances are, if you can program *well* in any particular language, the move to a different language or different way of doing things will be fairly smooth.
I think there comes a point when you realise that you wouldn't really have a problem achieving virtually *any* programming task set before you, with sufficient time and resources. I think its around then that you realise you're a good programmer. Getting a job involving programming can be good for learning too, because you pick things up from your co-workers.
Sort of a catch 22, you need to be an experienced programmer to get the job (not to mention have a computer science degree), and yet you can't gain the experience without getting to know people to learn from.
My situation here lately is I feel like I reached a brick wall, in that what I know now is pretty much were I'm stuck. I don't know a single sole around that I could talk to about programming except for here and therefore have nobody to bounce ideas off of or pick up new things from.
I haven't got the slightest idea about alot of things in VB and obviously you learn from doing, but how? If I have a game and I want to make it 2 player it is pretty straight forward but then adding the functionallity to play over a network would be way over my head. This isn't an actual question simply an example of why I was asking the question in the first place. I don't have a clue about winsock or anything and the questions I would need to ask would be very dumb (to some people) and there would be many of them.
I guess the bottom line is this:
1 - Learn how to read the MSDN as it is very helpfull if you can understand the way they word things
2 - Post lots of questions here, and hope people don't get tired of answering your dumb questions
3 - Read, Read, Read!
4 - Download lots of source code and tutorials
5 - Use the API guide
6 - Read some more... :D
Once again you guys are awesome and please if I start to ask alot of dumb questions about things I haven't learned yet, don't get frustrated with how little I know about these things, or how basic the questions seem to you. I probably ask more questions than a typical newbie because I want a really clear understanding of what I'm learning before moving on to another topic.
I guess another reason I asked in the first place is that I don't want to always turn here first, I was looking for a way to learn things without having to ask a million questions and only ask if I find something to be un-clear.
03-20-2002, 11:19 AM
I probably ask more questions than a typical newbie because I want a really clear understanding of what I'm learning before moving on to another topicIf this is why you're asking so many questions, I for one will never get tired. To help someone who wants to learn is why I'm here. :D