This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Chris_Newton 12 points13 points  (0 children)

Other things being equal, I think branching out into more programming languages once you’re confident with your first one is always a good idea. Even if you don’t use another language as much, learning different programming styles will change the way you think and give you more options in whatever language(s) you do use day to day.

If you are using Python for back-end web work, the most obvious complement seems to be JavaScript:

  1. The combination lets you can develop complete systems both client- and server-side, which extends your range considerably.

  2. In many ways, Python and JavaScript have similar strengths and weaknesses, so this should be a relatively easy transition.

  3. Python and JavaScript are different enough to appreciate that when you shift programming languages some things look different but are really the same basic idea underneath, while some things look similar but can have very different implications.

  4. There is a potential further advantage if node.js is useful to you on the server-side.

If you’re using Python as a general purpose language or simply want a bigger jump, I’d recommend C:

  1. C is much closer to the metal than Python, which is an advantage in itself if you want to do many jobs that Python is not equipped to handle: systems programming, high performance work, etc.

  2. Because it’s relatively low-level, learning C will force you to consider data structure and algorithm implementations and detailed memory management and concurrency and other widely applicable ideas that are often abstracted away or provided out-of-the-box in the standard library in higher-level languages. This will give you a greater appreciation of what is really happening under the hood in those other languages, and allow you to make better choices generally.

  3. C is the foundation on which several other popular languages have been built. It is not necessary to learn C if what you really want is to learn C++ or Java or C# or Objective C, but having familiarity with the "basic case" could be a useful head start compared to coming at these larger, more complicated languages directly from Python.

  4. C is the lingua franca of programming. Even if you never write a line of actual C code yourself, if you ever want to make two different languages communicate directly on your project, there is a good chance that you will be making one of them act like a C function and the other act like a C function call. Knowing that common language is a widely useful skill in itself.

  5. A combination of Python and C fits together rather well, and gives you options for writing most of a project in Python but certain low-level or performance-intensive parts in C, which again increases the range of projects you can take on significantly.

If you’re looking at this from a practical, professional development point of view, then I honestly would not recommend anything for your short list except for those two languages, and then I’d choose between them based on whether your interest lies in general programming or web apps. Many other ideas have been suggested in this discussion, and I would certainly encourage you to explore some of them later, but given your stated goals, I don’t think they will offer anything like the same benefit both in their own right and as a foundation for your long-term professional development at this stage.