[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)