Microsoft founder Bill Gates once said that learning to code “creates a way of thinking about things that I think is helpful in all domains”. But if learning programming changes your thinking, it is your choice of programming language that molds that new perspective.

Families of programming languages have idiosyncratic styles that constrain how developers solve problems. The tools each programming language makes available, be it a function in Haskell or a class in Java, will shape the ultimate solution.

There is even a school of thought that certain programming languages should be avoided by beginners, for fear those languages’ poor designs will instill bad habits.

SEE: Hiring kit: Python developer (Tech Pro Research)

Given the influence individual programming languages can have, here are the languages that notable developers working today say they’re particularly glad they learned and why.

John Carmack, co-founder of id Software and CTO of Oculus VR

Notable programming language: Racket

Why Racket? “Almost all of my day-to-day work is in C++, but I have a soft spot for Racket for small side projects. Racket is a Lisp descendent, and it is remarkable that a language with roots that go back sixty years can be honestly argued to be among the most productive languages today.”

Find out more about Racket: A dialect of Lisp and a descendant of Scheme, Racket has garnered enthusiastic praise for its power in the hands of a knowledgeable programmer.

Bjarne Stroustrup, creator of C++

Notable programming language: Simula67

Why Simula67? “It taught me the value of a flexible and extensible type system.”

Find out more about Simula67: Created by the University of Oslo to aid in the construction of advanced mathematical simulations, Simula 1.0 released in 1967 and its legacy can be seen in the object-oriented paradigm used by many major programming languages today.

Peter Norvig, director of research at Google

Notable programming language: Lisp

Why Lisp? “I’m glad I learned Lisp at an early age, for two reasons: it is an interactive language that encourages exploration (something we take for granted in Python, Javascript, Ruby, etc. today, but was rare then) and it is a programmable programming language, which taught me about language design, about how compilers and interpreters work, and about having good taste in problem decomposition.”

Find out more about Lisp: Created in 1958, Lisp remained in widespread use for decades, and is credited with being a powerful language with a minimal design that lives on through dialects like Scheme.

Audrey Tang, renowned free-software developer and Taiwan’s digital minister

Notable programming language: Haskell

Why Haskell? “I feel that learning Haskell is very helpful.

“The problem is broken down into small parts that are independent of each other, and then the higher-order functions are combined, filtered, and mapped to structure the program. This is the ‘intuition of functional programming’. With this intuition, you can see any problem and think of it as a series of small functions, the result of the combination.

“If you can fully grasp this method, you can realise the maxim, ‘Big things become small, small things are nothing, and the world is full of little nothings’.”

Find out more about Haskell: A purely functional programming language, Haskell‘s co-creator described its appeal as stemming from the fact that “functional languages have a particularly compact intellectual core. They’re particularly tractable in your head and because they’re tractable that means you can be more ambitious in what you do with them.”

Joel Spolsky, co-creator of Stack Overflow and creator of Trello

Notable programming language: C

Why C? Speaking to TechRepublic in the past, Spolsky recommended programmers learn C to gain a better idea of what the computer is actually doing, in that it is a low-level language whose instructions more closely resemble those being executed by the computer’s CPU.

“A lot of programmers these days will end up learning a higher level language–such as Python, Ruby or Java–and then not even really have a good grasp on anything that is causing that code in the language to execute and therefore not appreciating why things are slow or weird.

“The idea is to have a really good comprehension of what happens at the level of abstraction below the level where you work, of what the CPU is actually doing,” he said, comparing it to how psychology students are taught the biological basis of behavior.

Find out more about C: First developed in 1972, C is a low-level, efficient language that found a use in everything from writing operating systems to software for microcontrollers, and that paved the way for modern programming languages, such as C++ and Java.

Marissa Mayer, co-founder of Lumi Labs, former Yahoo CEO, and employee #20 at Google

Notable programming languages: Not one, but many

Why? “I’m not tied to any specific language and, in fact, see benefits of learning many (to see similar paradigms, think more flexibly about solutions and approaches, etc.).”