[HN Gopher] The Shen Programming Language
       ___________________________________________________________________
        
       The Shen Programming Language
        
       Author : tmalsburg2
       Score  : 188 points
       Date   : 2024-03-05 12:30 UTC (10 hours ago)
        
 (HTM) web link (shenlanguage.org)
 (TXT) w3m dump (shenlanguage.org)
        
       | knuckleheads wrote:
       | Has the license for Shen changed in the last few years? Last I
       | remember it was a custom one that was off putting. I got and read
       | the book years ago, interesting ideas, but not so interesting as
       | to try and go further with a language with a weird license.
        
         | macksd wrote:
         | Says they transitioned to 3-clause BSD a while ago:
         | https://shenlanguage.org/OSM/License.html
        
           | knuckleheads wrote:
           | Ah nice, thank you
        
         | anonzzzies wrote:
         | There was a crowdfunding to open source it. It seems to have
         | gotten more friendly with the open science thing as well. Might
         | give it another go.
        
         | fipar wrote:
         | There are open source ports that have a clear license now:
         | https://github.com/Shen-Language/shen-sources/blob/master/LI...
         | 
         | That said, even if I don't use this a lot, I pay for Shen
         | Professional to support development. Like you, I got and read
         | the book and like the ideas, and I decided to support the
         | project because I rather be sold something explicit (a
         | programming language) than who knows what I get sold through a
         | language that is open source but depends on a few or even one
         | big company to pay the devs.
        
       | hu3 wrote:
       | The page "Shen in 15 minutes" gives a quick introduction:
       | 
       | https://shenlanguage.org/OSM/15min.html
        
       | VyseofArcadia wrote:
       | When I want to get a quick feel for a language I've never heard
       | of, I usually look for the Learn X in Y Minutes[0] page for it.
       | 
       | Shen doesn't have one. Perhaps the author and/or poster should
       | remedy that?
       | 
       | [0] https://learnxinyminutes.com/
        
         | fipar wrote:
         | Not the same, but this section of the book could work as a
         | quick intro: https://shenlanguage.org/TBoS/tbos_34.html#34;
        
         | rlonstein wrote:
         | It does: https://shenlanguage.org/OSM/15min.html
        
           | VyseofArcadia wrote:
           | That page is less discoverable. From the Shen homepage, I
           | click on Learn and hope that they have a 15 minute intro? Vs
           | I go to Learn X in Y Minutes, Crtl+F "shen", and I
           | immediately get what I want.
        
             | eganist wrote:
             | LearnXinYminutes says "Want to add your favorite language
             | to the list? Head on over to Github[1] and send a pull
             | request!" Right at the very bottom.
             | 
             | Sounds like a great opportunity for you to contribute.
             | Especially since the work is basically already done and
             | your main concern is discoverability.
             | 
             | [1]: https://github.com/adambard/learnxinyminutes-docs
        
               | TimTheTinker wrote:
               | This is the way. Open source projects--languages,
               | libraries, toolkits, etc. (and _especially_ those built
               | by individuals)--are not like YouTube channels vying for
               | your attention, and should not be treated with the arms-
               | length  "you serve me" mindset that is so common in some
               | cultures.
               | 
               | As developers, we exist within a shared ecosystem where
               | we all depend on one another. Especially for non-
               | commercial open-source projects, those who put themselves
               | out there are doing so out of goodwill, _not_ because
               | they want to gain fame or money from you (beyond maybe
               | covering the cost of hosting the project). The least we
               | all can do is support them in some small way and thus
               | help build the world of great free software.
        
             | fwip wrote:
             | Your personal workflow is what you are used to, not what is
             | inherently "more discoverable."
        
             | zztop44 wrote:
             | The second option sounds way less discoverable, assuming
             | you're interested in learning Shen.
        
         | miroljub wrote:
         | Bullshit. Why would a page on some obscure website only you
         | know about be more discoverable than a direct link on the
         | programming language website?
         | 
         | If you have a problem finding a 15-minute intro, maybe Shen is
         | really not for you.
        
       | samatman wrote:
       | The author, Dr. Mark Tarver, is perhaps best known for the essay
       | _The Bipolar Lisp Programmer_ :
       | https://marktarver.com/bipolar.html
       | 
       | If you want to jump straight into what makes Shen interesting,
       | read Part 10 of the manual, starting with recursive types:
       | https://shenlanguage.org/OSM/Recursive.html
        
         | nextos wrote:
         | He has also published _The Book of Shen_ , which is really
         | interesting.
         | 
         | Sadly, the lack of extensive free documentation is probably
         | harming Shen's popularity.
        
           | fuzzythinker wrote:
           | Agree, freely available extensive documentation is a must.
           | The link to Book of Shen is for UK. To find it elsewhere,
           | search for the isbn, eg.
           | https://www.amazon.com/s?k=1915012112
           | 
           | Edit: The book is available online, but is scanned in low res
           | blurry format, very not readable.
        
       | maxfurman wrote:
       | I am not getting a good sense from the website of what is special
       | or unique about Shen. The top line feature (above the actual list
       | of features) is the presence of an "S series kernel" which as far
       | as I can tell is Shen-specific. After that the top feature is
       | pattern matching, which has become common in the mainstream
       | languages lately (Java and Ruby come to mind)
       | 
       | A little further digging shows that this language is a Lisp.
       | Great! I love lisps and functional programming, and I have a
       | particular soft spot for Clojure. Are there any domains where
       | this language would excel and CLJ would not?
        
         | JonChesterfield wrote:
         | It's a hybrid of lisp and prolog.
        
         | JoelMcCracken wrote:
         | Shen is a very unique language, and one of the ways in which it
         | is unique is that so much of its marketing, information, etc is
         | non-obvious, and less accessible than you might want.
         | 
         | I think the main thing that I find compelling about shen is its
         | type system, especially its sequent calculus system (for
         | defining types in a way that would not be possible for most
         | languages).
         | 
         | The other thing about it that is compelling is how portable it
         | is. the main language is implemented in a simple kernel
         | language; someone who wanted to port the language to a new
         | environment would need to implement a small (relatively) set of
         | primitives, and then you can run the entire shen environment on
         | top of it.
         | 
         | Its worth looking into, however I do caution that it has plenty
         | of rough edges etc.
         | 
         | For me personally I think of it as an inspiration for
         | programming languages I wish to develop someday. Additionally,
         | if you ever worked in a certain environment and really dislike
         | that the language is a bit weak, shen might be something you
         | could port to that language and use. For example, I recently
         | updated https://github.com/deech/shen-elisp so that some of its
         | rough edges were a bit smoothed down and should be more usable;
         | I haven't actually written any shen yet that runs in emacs.
         | That's still a ways away.
        
       | mthom wrote:
       | I've spinning up a new Shen implementation from scratch, in
       | Racket, which integrates directly with my Prolog implementation,
       | Scryer Prolog:
       | 
       | https://github.com/mthom/scryer-shen/
       | 
       | Several innovations are documented in the README. Both the Prolog
       | implementation and the type checker are written in / hosted by
       | Scryer (Prolog implementation is done, the type checker is in
       | progress). Scryer has many powerful constructs for monotonic
       | reasoning which should help to take Shen's type checker in
       | particular to new heights of power!
        
         | dsabanin wrote:
         | Great job with Scryer Prolog!
        
           | mthom wrote:
           | thank you! the scryer community deserves much of the credit
           | too. everyone is welcome and encouraged to join us at
           | https://github.com/mthom/scryer-prolog! some exciting plans
           | in the pipe
        
       | novagameco wrote:
       | Tip for anyone trying to show off a language: put a hello world
       | or fizz buzz on the front page
        
         | dkarras wrote:
         | this is not one of "those" languages that is begging for your
         | use / mainstream adoption.
        
           | philosopher1234 wrote:
           | > Our mission is to bring the power of Shen technology to
           | every major programming platform used by industry and deliver
           | to programmers the great power of Shen.
           | 
           | Sounds like it is?
        
             | dkarras wrote:
             | yes, but not really. if you reached Shen and would likely
             | use it, you probably clicked on that website on purpose.
             | the idea behind it is not something you can show with a
             | fizzbuzz anyways as it is not your good old regular C skin.
        
               | KerrAvon wrote:
               | Some idea of the flavor of the language would be helpful,
               | though, and that's surprisingly hard to find at a glance.
               | It seems to be another Lisp variant? Maybe?
        
               | samus wrote:
               | Here's what you're looking for I guess. But yeah, not
               | that easy to find.
               | 
               | https://shenlanguage.org/OSM/15min.html
        
       | juris wrote:
       | Love the name. Literally the only reason why I clicked into
       | this-- "Hey, is this referencing what I think it's referencing?"
       | Neat.
        
       | 6gvONxR4sf7o wrote:
       | I see that it has an inbuilt compiler-compiler, prolog, and
       | features for DSLs. Is the idea that Shen good for implementing
       | statically typed, compiled languages? Or for metaprogramming?
       | 
       | Looks like it's been around for a while and I'm curious what
       | folks have used it for.
        
       ___________________________________________________________________
       (page generated 2024-03-05 23:00 UTC)