Spry Language
sprylang.org
sprylang.org
I put it on the Bootstrapping page since I think it has potential to be used or inspire thinking about mid-level languages in that.
Thanks!
I mentioned what I liked in the past with what metrics I wanted optimized in the future here:
https://lobste.rs/s/hhmlfh/spry_language_inspired_by_rebol_l...
The Brute-Force Assurance concept I've described scattered in different places to get most benefits of strong verification without cost and time drawbacks of needing specialists. I [probably] got idea from a mix of VMS or CLR's mixed-language development plus SRI attempt to convert proofs to every form to use their tooling. My concept was coding in language w/ metaprogramming and Design-by-Contract that can be converted into equivalent Rust, C, SPARK, and so on. Languages with lots of push-button-style tooling for finding or proving absence of defects. They all run on the code with anything found shown to developer to see if it's in original code. Rinse repeat until nothing found. If extracting to C, one can also use CompCert or Simpl/C for certified compilation with CPU's like CHERI optionally enforcing safety/security at machine level. Similar concept on spec side where structural and temporal properties might output a bunch of stuff like Alloy, TLA+, SPIN, Why3, or whatever to run against all of it at once.
With it being a HLL w/ metaprogramming, it might allow a development cycle with quick iterations, REPL coding, whatever. At some point, each component is semi-frozen where developer starts annotating it to fire off the verification processes in the background as he or she works on the next component. Quickest analyses run first instantly reporting results so code is still fresh in mind. The app can follow gradual assurance philosophy similar to gradual typing with a mix of stuff in motion that's at least memory/concurrency/interaction-safe with dynamic checks covering what static ones can't plus things with tons of verification.
At least, that's what's been tumbling around in my head for a while on this topic. There's a few works out there right now suggesting it might be more doable now than ever before. It would take some funding, some language lawyers, and people with knowledge of implementing such tooling.
> QEMU actually started as an offshoot of tcc. When fabrice looked into providing multiple output formats for tcc (to support targets other than 32-bit x86), he started playing with multiple input formats as well, such as pages of existing machine code. The result was qemu, which is actually a "dynamic recompiler" rather than an emulator.
https://lists.linuxfoundation.org/pipermail/celinux-dev/2009...
Wow!
Spry does look pretty cool too. Besides JS, I have huge respect for all the langs that Spry was influenced by (Lisp, Rebol, Forth, & Smalltalk). I think only APL is left out if this were my favorite grouping :).
With that being said, what are the plans for doing a multi-user live coding setup? Also, how is the Smalltalk like syntax homoiconic?
The Smalltalk keyword syntax is a simple preprocessing in the parser so that `a at: 3 put: 5` turns into the AST of `a at:put: 3 5`. And yes, it's homoiconic.
So, I'm as cautious about attempts to over-simplify things as I am to over-complicate them. Well, ok, I worry about over-complicating things more if it's programming we're talking about. I do try not to forget the other in the rare cases I think it might show up. ;)
Far as Kay, he's been building things on LISP's and Ometa-like languages in STEPS that I was aware. Given that, Im not sure how much he really believes im Smalltalk these days. Maybe he's implemented new Smalltalks that I just missed.
Fortunately there is some empirical data becoming available to support this (single data point) assertion:
“Functional languages have a smaller relationship to defects than other language classes such as procedural languages” – A Large Scale Study of Programming Languages and Code Quality in Github
“Functional and scripting languages provide significantly more concise code than procedural and object-oriented languages.” – A Comparative Study of Programming Languages in Rosetta Code
I guess WebForms if they passed to POCOs that errored in a certain way.
I did think you all would like it, though. Again, sorry for clicking wrong thing everyone. :(