I'm getting into programming mainly for fun, though I may eventually want to work in the field. I'm not exactly young, so I'm looking for a language that's approachable without being limiting. Go interests me because it seems fast, relatively simple, and capable of building practical software. Lisp also caught my attention because people say it teaches programming concepts in a different and valuable way, although I'm unsure how useful it is for real-world projects today. Would Go or Lisp be a sensible first language, or would something like Python or C be a better starting point?
4 Answers
Go is a perfectly reasonable first language. It has a small set of features, clear conventions, straightforward syntax, and enough capability to build useful programs, including web services and command-line tools. You can ignore concurrency until you’re ready for it. The most important thing is to choose a language and start building small projects instead of endlessly comparing options.
Lisp is also a worthwhile choice, especially if your goal is to understand programming concepts and explore a different way of thinking. It may be less common in entry-level jobs, though, so it’s often best paired with a more mainstream language. Clojure is a modern Lisp option, while traditional Lisp implementations are useful for learning but may have fewer beginner resources and practical opportunities.
Python is probably the easiest general recommendation for a first language. It has simple syntax, excellent documentation, lots of beginner material, and can be used for automation, web development, data work, and more. Once you understand variables, functions, control flow, and data structures, moving to Go, C, Lisp, or another language will be much easier.
The best choice also depends on your goals. C is useful if you specifically want to understand memory and lower-level systems, while Go is a better fit for practical compiled applications and services.
Try not to treat the first language as a permanent decision. Learn one language deeply enough to build a few small projects, then implement similar ideas in two or three others. That’s where you start seeing the common concepts underneath different syntax. Go, Python, Lisp, and C can all teach useful lessons; having a good learning resource and actually practicing matters more than picking the perfect language.

The main drawback is that Go can feel restrictive to people coming from other languages, but that same lack of options can make it easier for a beginner to understand someone else’s code.