I want to learn programming mainly for fun, though I might eventually look for work in the field. I'm trying to choose a first language and have been considering Go and Lisp. Go seems fast, relatively approachable, and capable of building practical software. Lisp interests me because people say it teaches useful ways of thinking, but I'm unsure how practical it is for real-world projects. Would either be a good starting point, or would Python, C, or another language be a better choice?
5 Answers
Almost any mainstream language can teach you the fundamentals: variables, functions, control flow, data structures, and modular design. Go is good if you’re interested in practical compiled programs, while Python is often an easier first choice because it has beginner-friendly syntax, extensive documentation, and lots of learning resources. Your goals matter more than finding the theoretically perfect language.
Go is a perfectly reasonable first language. It has a relatively small syntax, clear conventions, and enough features to build useful programs, including web services and command-line tools. Its concurrency features can wait until you’re comfortable with the basics. The most important thing is to choose one language and start building small projects instead of endlessly comparing options.
Lisp is valuable for learning because its unusual syntax and functional ideas can broaden how you think about programs. It may not be the easiest route to finding a job, but that doesn’t make it impractical or useless. Clojure is one modern Lisp option if you want a Lisp with an established ecosystem. You could learn Lisp alongside a more mainstream language rather than treating it as an either-or decision.
There are disagreements about whether Go teaches the right things, but most of that depends on what you want to do. Go is practical and approachable, Python is usually the smoothest general-purpose introduction, and Lisp is excellent for exploring different programming ideas. Pick one, work through a structured course, and implement a few simple projects before switching languages.
If understanding lower-level computer concepts is your priority, C can be a useful starting point because it exposes memory, pointers, and how compiled programs work. However, it also introduces more opportunities for beginners to get stuck. You don’t need to learn C first to become a good programmer, and starting with Go or Python won’t prevent you from learning those concepts later.

The main drawback is that Go can feel restrictive to people coming from other languages, but that same lack of variety can make beginner code easier to read and understand.