• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
coding trails

coding trails

hello wisconsin!!!

  • Cards of Power

Archives for July 2024

How I Learn A New Programming Language

July 23, 2024 by schildawg Leave a Comment

How I Learn A New Programming Language

Recently I received an invitation on LinkedIn as a selected “expert” to write up the best way to learn a new programming language.  It’s a good topic so I figured I’d go ahead and cover it here.

Get It In Your Brain

When I learned Rust, the recommended approach was to read through the book once as quickly as possible to get the entire overview into your brain.  I was happy to see this advice, because I have been doing this for many years.  Back in the 1980’s my dad photocopied the IBM BASIC manual, had it bound in 4 or 5 volumes, and put it on my desk to read.  The stack of books was intimidating.  I started reading and quit.  I couldn’t understand half of it.  My dad said, “Read it and don’t try to understand.  You will remember it when you need to.”  Over the years I have learned to trust the capability of the mind to comprehend things beyond our conscious understanding.  But it can’t remember something if you haven’t read or heard it.

Type Out the Examples

The next step is to slow down and attempt to understand the concepts.  Find a good book, and go through it one chapter per day.  To move beyond the academic and into the practical, type in each example and run it.  Try playing around with the examples, changing values to really grasp what is being illustrated by the example.  For me, this generally, takes a month, and can take anywhere between 30 – 100 hours.

Learn the Culture

When I learned Java, my mentor told me, “If you haven’t read Effective Java, you aren’t really a Java developer.” I followed his example and read, and re-read Effective Java every year for close to a decade.  It introduced me to the concept of idioms in programming.  Beyond simple syntax difference, every language is designed with a certain development philosophy.  You can’t program Java the way you would C++, or Python the way you would Java, or for that matter Rust like any other language.  I always start out learning a new language by searching for the “Effective Java” for that language.  They usually start with “Effective”, like “Effective C,” “Effective C++,” “Effective Python,” etc.

Beyond syntax and idioms, there is also culture.  This can take much longer to absorb and assimilate.  Typically a community grows around a language and acceptable patterns and practices emerge.  What is perfectly acceptable in one language could be an egregious “sin” in another.  I have found, for example, the Rust community is extremely harsh about the “right and wrong” ways to program in Rust.

Practice, Practice, Practice

You can’t learn a programming language without programming in it.  I have a “playground” project which contains reproductions of all the coding tests I’ve taken throughout my career, all the way back to Fizz Buzz.  I rewrite my “playground” in each new language I learn, copying the style, idioms, and culture to the best of my ability.  Recently I have been writing Lox from “Crafting Interpreters” in each new language.  Between the code and unit tests this typically comes up to around 5 – 7K lines of code.

Summary

When I learned Rust, I read “The Rust Programming Language” in 2 days.  Then, I spent 3 weeks walking through the book chapter-by-chapter, running each code example.  Then I translated my “playground” to Rust.  Then I wrote 5,000 lines of Rust, converting the Lox tree-walk interpreter.  Well, at least till I got stuck on Environments, and realized I didn’t understand Rust’s memory management and lifecycles as well as I thought I did.  So, I read the book again, and rewrote Lox using smart pointers.  Final step, add “Rust” to resume… as beginner 🙂

Filed Under: Uncategorized

Primary Sidebar

Recent Posts

  • Modernization Code Converter
  • Paradigm Shift
  • LeetCode
  • Longest Substring Without Repeating Characters
  • The Big Bang
  • Add Two Numbers
  • The Word
  • Two Sum

Archives

  • June 2025
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • April 2024

Copyright © 2025 · Genesis Sample on Genesis Framework · WordPress · Log in

  • Cards of Power