Daily programmer questions?


#1

1- Is there a daily schedule for programmers who are programmed in more than one programming language?
2- If I learned a programming language and want to learn another one, should I learn the new one beside review the old one or leave the old until I learn the new one?
I mean for example learn function in Rust and review function in C in one time.


#2

Disclaimer : I am probably not what you consider a very experienced programmer, but hope this would be of help anyway.

  1. Not entirely sure what you mean. But if you’re asking if one would spend time practicing/exercising all the programming languages just to make sure one still remembers everything, then probably not.
  2. You can review the old one if you really want to, but I don’t find that very helpful in understanding the new one.
    One of my uni professors once said it’s easier to teach students who have never done programming than those who’ve done programming in some particular languages, due to an existing mindset etc. I.e. When you study a new language, try to see it as a separate experience rather than constantly trying to map from a language you knew.
    In your specific case, I’d suggest to not bring C into the mind to avoid confusion, and just try to create your understanding of Rust from scratch.

You will certainly notice parallel between languages as you learn more, but the important part is to not let the technical similarities to prevent you from understanding the language from the design point of view.

My habit for at least past few years is to pick up a language in several months(slow and steady), then try to make something in that language(a toy project or a proper project) that takes another few months, then move onto another language. So overall I pick up a new language every year.

The ones I’ve enjoyed the most are the ones I’ll naturally keep using, but every language is eye opening as well(given you that pick languages from very different families).

I think your second question somewhat suggests you’re worried about forgetting the old languages. In practice you don’t forget everything completely, just some of it, and IMO things from programming languages that you don’t remember are probably not that useful to you anyway, or they simply do not align with your mindset. For instance, I still don’t remember the OOP stuff in Java/C++ off top of my head, and I have never found them overly useful to me either.

TL;DR

  • Try to create your understanding from scratch, this will give you new perspectives, and you will force your mind to work a lot harder.
  • Don’t worry about forgetting the old languages. If you forget something from a language, then it’s likely not that important due to the way you think and solve problems. If you can actually forget an entire programming language, then it is unlikely you will ever remember that language by heart anyway.
    Most people forget some of the technical details of past languages, and they look up when they need to. And this is fine, languages are very complex by design, you don’t have to always remember everything all the time.
  • If you’re picking the language for learning, pick one that’s outside of your comfort zone.
    • E.g.
      • If you’ve been doing imperative programming only, then look into functional programming languages(e.g. Haskell, OCaml) too.
      • If you’ve been doing very sequential programming only, then look into high concurrency languages(e.g. Rust, Ada).
      • If you’ve been quite comfortable with both imperative and functional languages, then look into metaprogramming focused ones(e.g. Lisp, Racket).
    • If you’re picking one for job/work, then do whatever’s suitable in the context obviously.
  • Just to add to above point, picking up language from the same genre is almost trivially easy all the time(e.g. picking up Python after you’ve done Java wouldn’t take long), so avoid this when you’re trying to widen your horizon.

#3

Beautiful words deserve appreciation