Search code examples
programming-languages

How do you keep all your languages straight?


I think I'm going a little crazy.

Right now, I'm working with the following languages (I was just doing a mental inventory):

  • C++ - our game engine
  • Assembler - low level debugging and a few co-processor specific routines
  • Lua - our game engine scripting language
  • HLSL - for shaders
  • Python - our build system and utility tools
  • Objective C/C++ - game engine platform code for Mac and iPhone
  • C# - A few tools developed in our overseas office
  • ExtendScript - Photoshop exporting tools
  • ActionScript - UI scripting
  • VBScript - some spreadsheet related stuff
  • PHP - some web related stuff
  • SQL - some web and tool related stuff

On top of this are the plethora of API's that often have many different ways of doing the same thing: std library, boost, .NET, wxWidgets, Cocoa, Carbon, native script libraries for Python, Lua, etc, OpenGL, Direct3d, GDI, Aqua, augh!

I find myself inadvertently conflating languages and api's, not realizing what I'm doing until I get syntax errors. I feel like I can't possibly keep up with it, and I can't possibly be proficient in all of these areas. Especially outside the realm of C++ and Python, I find myself programming more by looking at manuals that from memory.

Do you have a similar problem? Ideas for compartmentalizing so you're more efficient? Deciding where you want to stay proficient? Organizational tips? Good ways to remember when you switch from Lua to C++ you need to start using semi-colons again? Rants on how complicated we programmers have made things for ourselves?

Any ideas welcome!


Solution

  • For any language I plan on learning thoroughly, I will write my own syntax highlighting in Vim. I try and make the colouring strict so that the colouring picks up obvious mistakes as I type them. This helps me remember where to put certain syntax items in case I forget (so // doesn't look like a comment in python, and I always have trouble remembering where to put * or [] in C). If I can't remember a function or method name, I guess it, and if it shows up in colour I know I've spelled it correctly. I also try and choose differing colours so that different languages stand out from each other, it helps my brain remember what language I'm writing in.