[HN Gopher] Design Principles Behind Smalltalk (1981)
       ___________________________________________________________________
        
       Design Principles Behind Smalltalk (1981)
        
       Author : stopachka
       Score  : 72 points
       Date   : 2022-05-20 15:00 UTC (8 hours ago)
        
 (HTM) web link (www.cs.virginia.edu)
 (TXT) w3m dump (www.cs.virginia.edu)
        
       | Jtsummers wrote:
       | Past discussions:
       | 
       | https://news.ycombinator.com/item?id=23496800 - 2020, 87 comments
       | 
       | https://news.ycombinator.com/item?id=17825747 - 2018, 30 comments
       | 
       | https://news.ycombinator.com/item?id=13611222 - 2017, 54 comments
       | 
       | https://news.ycombinator.com/item?id=1758057 - 2010, 1 comment
       | 
       | https://news.ycombinator.com/item?id=1643098 - 2010, 4 comments
        
       | [deleted]
        
       | dgb23 wrote:
       | > Operating System: An operating system is a collection of things
       | that don't fit into a language. There shouldn't be one.
       | 
       | I like this one especially.
       | 
       | It rings true if you imagine a world where you have complete
       | control over your machine, you don't worry about possibly
       | external code breaking or extracting your stuff and so on.
       | 
       | But lets just pretend we don't need to worry about these things
       | for some reason. It would be so powerful. And I don't mean you
       | have 'root' privileges, I mean your programming environment owns,
       | controls and _is_ everything that happens. No black boxes, no
       | overhead, nothing. Just _one_ runtime that is integrated all the
       | way down with the expressive power of a Lisp/Smalltalk/Self or
       | similar. It's sad that this doesn't seem like a viable option.
        
         | jdblair wrote:
         | Everyone who grew up with 8-bit micros understands what it
         | feels like to know the whole machine.
        
         | mch82 wrote:
         | People just need to start chipping away at it. Eventually it'll
         | exist.
         | 
         | My favorite inspiration for "chipping away at it" is
         | https://ephtracy.github.io/ who has been slowly building up the
         | coolest 3D art tools one commit at a time.
        
           | jibbit wrote:
           | I'm not convinced by the logic of the "you didn't read the
           | article rule". I wish we could talk about it.
        
           | dgb23 wrote:
           | That's amazing, and inspiring. Thanks for sharing.
        
         | AnimalMuppet wrote:
         | The problem with environments like that is that they are never
         | perfect. There's always something that at least some users need
         | that they left out. But, since they're trying to be everything,
         | they don't leave you any way to leave their world to go get
         | something from the real OS, or the bare metal, or wherever
         | "outside" is.
         | 
         | So, if you're trying to build an "everything" environment,
         | sure, try to get everything in. But know that you will fail.
         | And therefore, don't trap people. Leave them a way to get
         | "outside".
        
           | dgb23 wrote:
           | In a sense that's a valid point, but what we have seems
           | inferior in this regard. My machine is running a huge amount
           | of individual, uncoordinated runtimes. Often there's layers
           | and layers of uncoordinated bloat, communication overhead and
           | everyone does his own garbage collection, scheduling format
           | translation, gui rendering and so on. It's incredibly
           | wasteful and the only thing that patches over it is that my
           | computer is fast enough to handle all this crap.
           | 
           | /rant
           | 
           | I get that all of this has reasons, often historical.
           | PC/Internet adoption just grew so fast during 80's and 90's
           | that nobody even had the time to think it all through and
           | design a coherent system. Even new OS's and runtimes have to
           | carry over all this legacy stuff. I mean I get it and as a
           | web developer I'm probably more part of the problem than the
           | solution. But boy would computing be simpler, more powerful
           | and expressive if we could just start over and lean on the
           | ideas of (mostly) early, holistic visions and prototypes of
           | personal computing.
        
           | musicale wrote:
           | > they don't leave you any way to leave their world to go get
           | something from the real OS, or the bare metal, or wherever
           | "outside" is.
           | 
           | Pretty sure the idea was and is to run Smalltalk on bare
           | metal. Which you can absolutely do.
           | 
           | The more realistic problem is: what if you still need
           | Firefox, or Office, or Photoshop? One solution is probably to
           | run Windows _and_ Smalltalk on a hypervisor. You still get
           | low-level access from Smalltalk (hypervisor calls, hardware
           | access, etc.) without giving up Windows (or Linux, etc.) apps
           | and compatibility.
           | 
           | Running a web browser in a hypervisor is also probably a good
           | idea for isolation reasons.
           | 
           | Another interesting idea is to run Smalltalk on the JVM
           | (which itself was inspired by the Self and Smalltalk VMs.)
           | You lose some low level access from Smalltalk but you gain
           | interoperability with Java as well as portability.
        
         | pjmlp wrote:
         | It almost is though,
         | 
         | Type 1 hypervisor + language runtime on cloud deployments
        
       | andsoitis wrote:
       | > The point here is that the human potential manifests itself in
       | individuals.
       | 
       | What does this mean?
        
         | ModernMech wrote:
         | Think of "human potential" as a class, and "individuals" as
         | instances of that class.
        
           | andsoitis wrote:
           | I think there are additional levels of human potential that
           | express not at the individual level but at aggregates.
           | Perhaps a MOP* for human potential?
           | 
           | * meta-object protocol
        
       | aaroninsf wrote:
       | After my last foray through Squeak,
       | 
       | I haven't followed subsequent evolution of the
       | language/environment;
       | 
       | I'm wondering: has anyone taken on integration of an idea of
       | something like a native notion of modules/versioned package
       | management?
       | 
       | I enjoyed the premises of working with changesets and a
       | monolithic image, to a point;
       | 
       | but it always seemed it would not be _that_ hard to integrate a
       | contemporary notion of modularity...
       | 
       | I'd love an environment which allowed me to develop in Smalltalk,
       | debug in an image, yet freeze the dependencies, with smart
       | ephemeral compilation and the like, and...
        
         | igouy wrote:
         | > I'd love an environment which allowed me to develop in
         | Smalltalk, debug in an image, yet freeze the dependencies, with
         | smart ephemeral compilation and the like, and...
         | 
         | Once upon a time, back in the day:
         | 
         | https://www.google.com/books/edition/Mastering_ENVY_Develope...
        
         | spindle wrote:
         | Haver for Cuis - and Cuis is in any case my favourite
         | Smalltalk.
         | 
         | http://haver.klix.ch
        
         | Jtsummers wrote:
         | Iceberg for Pharo: https://github.com/pharo-vcs/iceberg
         | 
         | Monticello: http://www.wiresong.ca/monticello/
         | 
         | I haven't used the latter, but the former is easy to use and
         | based on libgit. Create a new repository, select the packages
         | that go into it, make the initial commit. After that it'll tell
         | you when the changes don't match the repo. You can select down
         | to the method level since it's aware of the language's syntax
         | and semantics. The generated repository looks like the Iceberg
         | repo itself, a collection of directories for the packages and
         | then .st files for the classes and their contents.
        
       | _benj wrote:
       | I've been playing around in Pharo [0] and it's such an immersive
       | experience! My first reaction was to compare to eMacs in that the
       | editor/environment _is_ the program and it can be edited,
       | customized, extended... but Pharo /Smalltalk takes it to the next
       | level of ease of use, discoverable and fun!
       | 
       | [0] <https://pharo.org/>
        
         | smegsicle wrote:
         | lol don't spell emacs like that
         | 
         | https://en.wikipedia.org/wiki/EMac
        
           | bitwize wrote:
           | If you're on an iPhone, doubtless its autocorrect will assume
           | that what you meant was the plural of that other wonderful
           | Apple product from years past.
        
           | fmakunbound wrote:
           | Every now and then we get someone on freenode/libre #emacs
           | asking the weirdest questions.
        
           | _benj wrote:
           | autocorrect :)
        
         | michaelcampbell wrote:
         | > compare to eMacs
         | 
         | Not sure if this is a typo, but if not it is the first time
         | I've ever seen it typed in such a way. No judgement, just
         | noticing.
        
           | _benj wrote:
           | iPhone autocorrect...
        
         | AlanYx wrote:
         | If you like the emacs-like aspect of Pharo, the Glamorous
         | Toolkit project (which is built on top of Pharo) is worth
         | checking out too. They recently released a digital notebook
         | tool called Lepiter that has a lot of similarities to org-
         | roam/org-babel: https://lepiter.io/feenk/introducing-lepiter--
         | knowledge-mana...
        
           | _benj wrote:
           | thanks for the suggestion! will take a look
        
       | sebastianconcpt wrote:
       | Epic.
       | 
       | This one gets me every time:
       | 
       |  _Personal Mastery: If a system is to serve the creative spirit,
       | it must be entirely comprehensible to a single individual._
       | 
       | That combined with instant feedback can make you feel like a
       | rockstar coder.
       | 
       | And Smalltalk delivers.
        
         | igouy wrote:
         | Perhaps "to serve the creative spirit" _of the coder_ is not
         | what most software development should be about?
        
           | tgvaughan wrote:
           | Perhaps we need to get rid of this artificial distinction
           | between users and programmers.
        
             | dgb23 wrote:
             | There's a subsection of people who are very well served by
             | that. And it has already been happening. SQL, Python,
             | HTML/CSS/JS are all things that people use who are not
             | primarily programmers. Applications like Unity, Excel, some
             | Adobe stuff also blur the line here.
             | 
             | But let's not forget that there are a ton of people (many
             | more than the above) who are constantly overwhelmed by
             | computers even though they only use very few features.
             | There's people who can't use ATMs and smartphones. Most
             | computer users only ever use the most common applications
             | (browsers, music/video players etc).
        
             | ryukafalz wrote:
             | Precisely. Every barrier in place between using a system
             | and programming it serves to elevate the decisions of its
             | designers over those of its users. The greatest power of
             | computers is their ability to be reshaped to meet whatever
             | need the user has, but we mostly lock that power away from
             | them.
        
             | igouy wrote:
             | Perhaps users want to use apps without needing to program
             | apps?
             | 
             | Perhaps some want to play in a garden without needing to
             | dig and plant and weed and...
        
               | t0suj4 wrote:
               | I think you shouldn't need to program if you don't want
               | to understand the problem domain.
        
               | igouy wrote:
               | Do you think someone should need to program if they want
               | to understand the problem domain?
        
               | macintux wrote:
               | Speaking for myself, I've never found a better way to
               | understand something new.
        
               | igouy wrote:
               | Perhaps a way to understand abstract categories.
        
             | smegsicle wrote:
             | think i've seen the term 'operator' used in this context?
        
           | sebastianconcpt wrote:
           | Isn't software a form of literacy? Why should not be about?
           | I'm not understanding yet your line of reasoning.
        
           | Mikeb85 wrote:
           | Literally almost every piece of consumer facing software is
           | created using languages or frameworks that derive from
           | Smalltalk-esque principles (OOP, MVP, IDEs, etc...).
           | 
           | And the creative spirit is what brings innovation. Tons of
           | what's obvious now wasn't obvious when someone created it.
        
           | _benj wrote:
           | I agree that "most software development" is not about serving
           | the creative spirit of the coder, but it'd be a shame to lose
           | that! And if in some way we could have our cake and eat it
           | (i.e. enjoy the creative process of coding for most software)
           | sounds like a win-win to me! Idealistic, but one can dream ;)
        
           | Ingon wrote:
           | Absolutely! Software development is all about making money,
           | and I think this in general is at odds with creativity
           | (different goals, methods, practices, whatnot). However, I
           | also think that there is large group of people who does not
           | code for money, but to make art, have fun, or express
           | themself, and "to serve the creative spirit" is exactly what
           | they need.
        
             | igouy wrote:
             | Software development is also about making things work for
             | other people.
        
           | jrvarela56 wrote:
           | I sort of get where this comes from: the product should serve
           | the users. But thinking of dev tools as the product for devs
           | (the users in this context) is useful.
           | 
           | Devs code better products if they enjoy using the tools.
        
             | igouy wrote:
             | > Devs code better products if they enjoy using the tools.
             | 
             | Is there any evidence for that claim?
        
               | sebastianconcpt wrote:
               | A guitar's design shouldn't be at least enjoyable enough
               | to make the guitarist a better player?
        
               | igouy wrote:
               | I don't think we've been talking about guitars.
        
           | samatman wrote:
           | "Even if you're designing for professional programmers, in
           | the end your programming language is basically a user-
           | interface design. You will get much better results regardless
           | of what you're trying to do if you think of it as a user-
           | interface design." -Alan Kay
           | 
           | https://www.doc.ic.ac.uk/~susan/475/AlanKay.html
        
             | igouy wrote:
             | Let's take that to be true, as-before -- Perhaps "to serve
             | the creative spirit" _of the coder_ is not what most
             | software development should be about.
             | 
             | Perhaps most software development should be about
             | effectiveness or reliability or ...
        
       | projektfu wrote:
       | (1981)
        
       ___________________________________________________________________
       (page generated 2022-05-20 23:01 UTC)