The definition of a “spirit animal”:
In certain spiritual traditions or cultures, spirit animal refers to a spirit which helps guide or protect a person on a journey and whose characteristics that person shares or embodies. It is also metaphor, often humorous, for someone or something a person relates to or admires.dictionary.com
Someone at Quora asked: How do you decide what is your “spirit programming language”?
I found this question intriguing. It speaks to the special nature of programming languages and how one may have a particular affinity to a specific language. I think many developers do have a spirit programming language, even if they don’t realize it.
Here was my answer…
There are several things you may consider:
- which language offers the most job opportunities — this is decidedly a very pragmatic consideration because we all have to eat
- which language appeals to you aesthetically and philosophically — this is, of course, very much a matter of individual taste
- which language is primarily used in your preferred application domain — assuming, of course, that you have a preferred application domain
- which language you find very easy to use and makes you most productive — this can only come from your personal experience
- which language is most versatile — it can do nearly everything with equal aplomb
So, based on these considerations, you might choose one of the following as your “spirit programming language”:
- Python or Java — at Indeed, they have the most job postings
- if you’re inclined toward functional programming, look at Elixir; if you’re inclined toward object-oriented programming, look at Pharo
- without doubt, Smalltalk (or Pharo) is the most productive language, by far, because it’s so ridiculously easy to use
- there are several enormously versatile languages to choose from: C++, Java, Python, Smalltalk (or Pharo)
Smalltalk (Pharo) became my “spirit programming language” because:
- it’s really, really easy to learn and easy to use, much more so than, say, Python
- it’s the most productive programming language in the world
- its object-oriented purity, clarity, and consistency are beautiful to behold
- its live coding capability is wonderful
- its metaprogramming capability is wonderful
- it’s amazingly versatile…
Use Pharo for Internet of Things with PharoThings.
Use Pharo for robotics with PhaROS.
Use Pharo for virtual reality:
Use Pharo for scripting the Unreal game engine:
Here’s a fantastic Roassal demonstration:
Here’s a great demonstration of Pharo’s live coding:
Here’s a nice game for mobile that was written in VisualWorks Smalltalk: HexSolve.