Programming Languages

Has anybody tried memorizing a programming language? How did your techniques differ from memorizing aspects of a foreign language? I know the basics of Java and C++, but I have no knowledge of specific libraries. I would like to get into programming applications and games for Linux. I hate having to constantly look in the API every time I forget a particular function or class.

If anybody does have experience with C++, would you recommend how to learn a graphics library? What are some good resources? I would like to learn OpenGL and SDL – those seem the best options. Yet every time I try to learn them, I run into errors (mostly because the sources I use are outdated – certain functions have deprecated – or because the sources are written for Windows and not Linux.)

Funny I thought of this earlier today and added the idea to the wiki for possible things to work on as a group. I was thinking of having a way to memorize programming theory and then be able to tie the theory to individual languages. I went by the local bookstore today but wasn’t able to find many useful and affordable books in the computer section. I can’t justify paying $50 for a book that will be outdated in a year. So instead I’ll see what online resources I can come across and update here.

Moeris, I would suggest that you simply find a project you’re interested in and start on it. You will learn by doing, but you need to put in the hours. At least that’s my experience.

Depending on what you want to do, you could of course try to memorize a whole API using memory techniques. But I don’t think it would be worth it. Most APIs have way too much stuff that you don’t use that often.

Instead, I would recommend using memory techniques whenever you use a new method. That way you get the best of both worlds.

For myself, I just accept the fact that I am going to refer to the documentation a lot!

I’m not a programmer, but I dabble. I wonder if you could place different elements of a programming language in different locations.

Just to use PHP as an example:

You could put the ~74 array functions in one location – maybe in a room or a building:

array_change_key_case()
array_chunk()
array_combine()
array_count_values()

Here’s a group that could go in one room or chained into a story:
array_diff()
array_diff_assoc()
array_diff_key()
array_diff_uassoc()
array_diff_ukey()

array_fill()
array_filter()
array_flip()
etc.

String functions could go in another building or room. Etc…

Yeah, I know the pain of having to remember a billion different functions, etc.

I have to say though, with today’s highlighting, intellisense, and macros in most IDEs such as Eclipse and Visual studio, having to remember all the APIs/functions/signature parameters is becoming decidedly less of an issue.

One thing I do to save time is every time I write a function, I make sure it’s fairly generic, and put it in a library grouped by the type of functionality for it. Having worked in C# for several years, I’ve compiled fairly substantial libraries for handling strings, IO, serialization, reflection, networking, etc.

To be honest, I question the use of committing API’s to long-term memory, and the only reason I say this is because of how often technology is changed, revised, adapted, etc. I’m just saying it might not be worth it.