5 ms·
Spry Language
- nickpsecurity 9y agoThis language draws on traits of LISP, Rebol, Smalltalk, and Forth. There's a lot of potential for languages doing that. :) It has a REPL. It’s key components started at under a thousand lines of code each. It was written in Nim, leverages it for GC + concurrency, and can use either Nim or C for performance reasons. I was strongly considering writing a LISP or Smalltalk variant in Nim for past few months for similar reasons. The output would be very different since I want to leverage various analyses for safety-critical tooling. The common thinking seems to have been Nim as a strong, base language for macros, portability, and performance. As in Spry, one also needs something to drop down to when new language isn’t cutting it for whatever reason. 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. http://bootstrapping.miraheze.org http://bootstrapping.miraheze.org
- eitland 9y agoFWIW no elements except the menu seems clicable on that bootstrapping page (FF mobile).
- nickpsecurity 9y agoYou're right: mobile version doesnt work any more. I tested it on Chrome, too. Ill tell the maintainer. Btw, there's a desktop link on bottom that gives working set of links for me. Try that if you see it in FF.
- PeCaN 9y agoWell, that list of languages got me interested. It'll be interesting to see where you're going with this. I think I'll check out the source a bit. I've been itching to hack on another GC for a while now. Thanks!
- nickpsecurity 9y agoThe Show was a moderation error. It was just a submit. The list of languages got me interested, too, in whatever the author is doing. I posted it partly so people would see that list to hopefully get their own ideas. I imagine most tweaks of those languages would be of limited utility for large audiences much like most tweaks of LISP or OOP themselves. Yet, there might be some combination of features that's pretty amazing waiting to be discovered. 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_lisp 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.
- carapace 9y agoAll sorts of fascinating stuff linked from there! Thank you for this! > 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-December/000217.html https://lists.linuxfoundation.org/pipermail/celinux-dev/2009... Wow!
- rmason 9y agoAm I the only one who thought wait a minute. Is Adobe's JavaScript framework making a comeback?
- justbaker 9y agoJeez I’m starting to feel old now, yes the name sounded familiar to me
- giancarlostoro 9y agoFor those who were wondering like I was: https://github.com/adobe/Spry https://github.com/adobe/Spry
- pvg 9y agoAre you the author of or contributor to Spry?
- MattRix 9y agoIt is posted as "Show HN" so I would assume so.
- deleted 9y ago[deleted]
- nickpsecurity 9y agoNo, no, I nust have clicked wrong thing by mistake. I meant it as a regular submission, not show hn. Im not the author. Ill email dang to see if he can change that. I did think you all would like it, though. Again, sorry for clicking wrong thing everyone. :(
- sctb 9y agoThis was completely my fault, I misinterpreted the original comment and added “Show HN”. Removed now. Sorry!
- nickpsecurity 9y agoGiven my memory problems, I was really stretching to figure out how I did that. I just assumed I slipped since they're close together on this device. So, I appreciate you owning up to it so I dont get all paranoid about submissions haha.
- pvg 9y agoAh, it all makes sense now, thanks. Clearly we should all be grumplinking you the Show HN rules!
- mchahn 9y agoThis is impressive enough that it might turn into a real language instead of a hobby language. I think improving the speed is the top concern. Everything else seems to be already in place.
- throwaway7645 9y agoHow could they do that without doing something like LuaJIT?
- gokr 9y agoThe general idea was to leverage Nim's capabilities, either as implementing core parts of standard libraries in Nim (which is very easy to do) or possibly by partial compilation using the Nim meta programming mechanisms.
- agumonkey 9y agoEither they changed their websites or I have memory loss .. I posted this on reddit a year ago but completely forgot that when reading this page
- JepZ 9y agoSometimes, when I read that a language was inspired by another language, I wonder why you can't see the simplicity of the first in the second.
- taneq 9y agoSecond-system effect?
- nickpsecurity 9y agoPeople said that about Wirth's languages, too. Yet, metaprogramming, highly-optimizing compilers, REPL's, generics, concurrency models that were safe, Design-by-Contract, and so on all had their benefits that complicated implementation. In my opinion, some features like those were worth complicating implementations of languages since they simplified developers' work on every other project in that language. So, I'm always up for looking at new languages in case their experiments can teach us to do something better. Maybe it will simplify, complicate, or just refactor something in process. I don't care long as end result is better in a measurable way. 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. ;)
- gokr 9y agoLooking at my inspirations I would (take it with a grain of salt) say that Lisp and Forth are too simple, javascript is a mess (but with nice literal syntax for maps etc), Smalltalk is too complicated and Rebol is basically also a bit complicated and IMHO a bit of an oddball with some neat ideas. And Nim is a totally different beast.
- nickpsecurity 9y agoI thought Smalltalk was relatively simple. What makes you think it's too complicated?
- gokr 9y ago
- virmundi 9y agoSo were is the feature for DRY business logic like centralized validation? There was a post not too long ago about Bitcoin like currency that only validated on the front end. Where is the language or framework that solves this? To this day Java doesn’t. I don’t think that even Node really does. I guess WebForms if they passed to POCOs that errored in a certain way.
- zwww 9y agoCan you provide the link to the currency you mentioned?
- throwaway7645 9y agoPretty cool to see Nim being stable enough prior to 1.0 for people to be writing other languages with it. 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?
- gokr 9y agoThe multiuser stuff etc, I am temporarily too focused on other things so Spry is at "a hold" right now. I would also like to fix more things in the language before proceeding. 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.
- pmarreck 9y agoHas anyone else completely lost interest in non-"functional" languages after spending years making the same OO mistakes?
- skrebbel 9y agoSounds like you just jumped from one bandwagon to another.
- pmarreck 9y agoI’d wonder that except that I’m finding I’m writing far fewer bugs 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
- def- 9y agoYes, and then I lost interest in in functional languages after discovering the beauty of imperative programming for predictability and performance. All major programming paradigms can be useful, some are better suited for some problem than others.
- nerdponx 9y agoWhat is the appeal of "100% live coding in a Smalltalk style immersive environment"?
- gokr 9y agoA lot of things including very good development speed, very good debugging capabilities, very good meta programming (making your own tools) etc. Try out Pharo.org for example.