Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I could never make myself like Pharo (or Smalltalk). Yes, it's interesting and exotic, but it never seemed really practical. Maybe what I was missing the most was static/explicit typing, which replaces the need for many of Smalltalk's features. I also never liked working with Python or JS for that reason.

It's amusing that in the mid-2010 with the raise of Node, web (turned "full stack") devs advocated for JS and how static typing was really not that relevant. Then TS came and suddenly the same folks considered it an absolut game changer.





> it never seemed really practical.

IMO this is partially true but that's mostly because not enough people are working on it. If Pharo would have as much people working on it as Python, it'd be practical really quickly.

> Maybe what I was missing the most was static/explicit typing

I actually have a talk where you can hack typing in. To be fair, it will be checked during execution, so it's not a compile time thing. It's somewhere around here (I did like 3 mini talks in one mini talks, it was pure chaos, haha [1]). It's about 5 min., the whole talk.

Personally, I'm a fan of type hints, but ultimately engineering culture and standardization is more important. Or at least, in a professional context, in a personal code context I like dynamic typing and when it gets too big, I refactor it to explicit typing.

[1] https://www.youtube.com/watch?v=FeFrt-kdvms&t=2270s


> static/explicit typing, which replaces the need for many of Smalltalk's features

For example?

Which Smalltalk features do compile-time type declarations replace?


Dynamic inspection of an object's API? I think it's a very common thing for programmers to explore a type's API on-the-go (as we can't memorize every function name). With static typing, that information is known before run time and can be immediately displayed by the IDE in the form of auto-complete. In dynamically typed languages, the most reliable way to achieve the same is by running and inspecting it, which is basically how people work in Smalltalk from what I've seen.

Things are a little confusing when we can both use the Smalltalk IDE with or without running our stuff.

Code exploration tools are available before "running and inspecting" our stuff. We read the protocols and code without "running and inspecting" our stuff.

It is true that static types provide more-precise more-automated identification of implementations and call sites.


The irony is that many dynamic languages have had optional typing for decades.

BASIC, Common Lisp, xBase/Clipper, Perl

So yet again we got a cycle of people rediscovering the tools that predated them.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: