Switching between languages/API

Started by
5 comments, last by jsvcycling 10 years ago

Hi, not really a beginner question but probably fits here than anywhere else.

I was coding SFML/C++ for the entire year of 2013, and switched to Libgdx/Java this Jan to port a game I made in C++ to android. After playing with Libgdx for about 2~3 months, + a 1 week break without touching any coding, I faced a problem. I wanted to prepare myself for Ludum dare this week and intended to use SFML/C++ instead of Libgdx, since I like SFML more. I realized I couldn't remember most of my C++/SFML stuffs. (I will probably have to read through my old projects). It is not that I forget the syntax but to do extremely trivial stuffs, like drawing sprite to screen, using my own personal code, or even just loading of assets, I have to reference my old projects to get started.

So my question is, what are some ways that you guys do to prevent or reduce this "confusion state" that happens when you switch from one language to another after using one for significant time. I don't think I am the only one that experience this. Does cheatsheet helps ? I tried creating one in the past but it became extremely tedious and pointless when you are using the language but become extremely useful when you forget them.

Check out my blog at zwodahs.github.io and zwodahs.itch.io/

Advertisement

When I dont spend time on a codebase for a while I will have to read the stuff again and see how I do things, this is normal you can't keep all of this in your head all the time. The thing is though that you haven't actually forgotten how something works it's just the details that you miss, once you have seen them again for once you remember how it works.

I switch between 3 programming languages often, mostly C++/C# the only mistake I always make is array syntax related, if I switch to or from python extra {} are added in python or forgotten in C++.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

If you don't use it, you lose the details quickly.

Over my career I have forgotten more languages than I currently know. Pascal, Ada, Cobol, about 10 versions of basic, dozens of scripting languages and tool languages, and on and on. I may be able to recall notable features of each, but otherwise they are gone from my brain's working set.

The good news is that when you need to pick it up again, the necessary bits come back very quickly. I went form mostly forgetting the details of Java 1.3 to needing to pick it up again quickly at Java 7 (they had dropped the 1.x naming) after a decade of non-use. It was just like falling off a bike. huh.png (I shouldn't say much bad about it, Java is a mostly good language.)

I usually keep a document with the most important stuff I've done in some project, for each project. Most doubts I faced during the development should be there, also tricky workarounds I've used and whatever I think I'm going to forget about soon. It's good to keep it neat and simple.

Quite of a simple thing, but most people get lazy to do it and I find it very helpful.

Descriptive documentation, commenting (in code, perhaps within mainly a version of the game source code only for that), and to continue using the previous language and your libraries as much as you can while working another - is about all that you can do.

Long term, if you revisit coding issues enough times then most of them will stick more, which might take years.

This thread shows the importance of making sure to thoroughly complete a game (or version of one) before moving to another project when possible. Read my signature below here and you will see that I am adamant about these matters.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

I have read through some of my completed projects since I posted this :D. Most of the memory came back after a while =).

I think having completed projects helps a lot. I wanted to make a cheatsheet for this a few years ago when I was switching between python / java / C# but I guess once you have enough projects in that language, they will serve the purpose of the cheatsheet.

Check out my blog at zwodahs.github.io and zwodahs.itch.io/

I regularly switch between several languages and APIs. For the languages I use the most (C, C++, C#, Java, JavaScript, PHP, Python, and Haskell) I have a quick reference sheet that has some of the common techniques and styles that are specific or noteworthy to that language. For APIs, I also have references for some of my more commonly used methods or classes in some of my regularly used APIs. I also have at least 1 book for each language or API (if there is a book for it) nearby so I can pull it out and use it if my quick reference sheet doesn't provide enough detail.

I also like to comment my code regularly, especially when using 3rd-party libraries.

Plus there's always the internet and I have a bookmarks folder for all the reference pages for just about every API I use regularly.

Some favourite quotes:Never trust a computer you can't throw out a window.
- Steve Wozniak

The best way to prepare [to be a programmer] is to write programs, and to study great programs that other people have written.
- Bill Gates

There's always one more bug.
- Lubarsky's Law of Cybernetic Entomology

Think? Why think! We have computers to do that for us.
- Jean Rostand

Treat your password like your toothbrush. Don't let anybody else use it, and get a new one every six months.
- Clifford Stoll

To err is human - and to blame it on a computer is even more so.
- Robert Orben

Computing is not about computers any more. It is about living.
- Nicholas Negroponte

This topic is closed to new replies.

Advertisement