May you please write one explaining why smalltalk inspired languages such as Python, and others afterward such as Ruby, Dart, and others were created while they just could be a refreshed and free real smalltalk such as Pharo is, please?

In general, one may ask why new programming languages are being created when hundreds of them already exist that are perfectly usable. There are many reasons:

  1. Programmers always believe they can improve on the current state of the art. They seek some kind of programming “Holy Grail” and they’re never satisfied with what they have today.
  2. Programmers have different perspectives on what constitutes good programming. There is little consensus. So they create languages that reflect their beliefs.
  3. No programming language is perfect. New languages are created all the time to address known weaknesses.
  4. Programming language designers seek fame and acknowledgement. It’s an ego thing. They want to create a great language and be recognized for it.
  5. Some languages are tailored to a very specific use case. The language designer seeks the most optimal design.
  6. Programming language adoption is pretty much a matter of fad and fashion. Languages find popularity only to fall out of favour years later. New languages are created to fill the void.

So here’s why Smalltalk may not have been good enough for many people, thereby encouraging new designs:

  1. They regard the syntax as being too strange. Never mind that it’s really really simple and easy to learn. Much simpler and easier than Python!
  2. They eschew object-oriented purity and Alan Kay’s concept of late binding. They think this is too limiting, which is a total falsehood.
  3. They regard the image-based development environment as being too strange. This is a misperception. There isn’t really anything strange about it, but the misperception is a product of ignorance and inflexible attitude.
  4. They prefer static typing over dynamic typing. This is a religious war without resolution.
  5. They don’t think Smalltalk executes quickly enough. Again, this is a matter of ignorance. There is no reason theoretically why Smalltalk can’t execute almost as quickly as C# and Java. It’s an optimization problem.

Dart, Python and Ruby were created with different design goals. Apparently, Smalltalk wasn’t good enough for the designers.

Why Guido did reinvent the wheel (and in such a strange, unintuitive, inconsistent, etc way)?

I’m not sure Guido knew much about Smalltalk when he created Python. In fact, the original Python didn’t even have OOP support.

As Pythonistas explain it, Python programming adheres to a specific philosophy that states:

  • explicit is better than implicit
  • don’t let purity get in the way of practicality

Thats why you have instance variables and methods that aren’t really hidden.

That’s why you have the global function len() instead of obj.len().

That’s why “self” is always the first parameter in an instance method definition.

That’s why you have half-open intervals.

That’s why lambdas are restricted.

Python’s philosophy mandates its inconsistencies and oddities.

What’s your opinion on Dart, on its own and versus Pharo/smalltalk?

I think Dart is a good language and Flutter is a highly promising framework. It seems to be doing quite well at the present time (rapidly ascending at PYPL).

Pharo/Smalltalk doesn’t really have an equivalent, though with PharoJS you can target the web and mobile devices (through Apache Cordova or PhoneGap).

And… Is there a scalable (multi thread, multi servers…) smalltalk?

I believe GemTalk Systems’ GemStone/S comes closest to what you’re looking for.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store