Hacker News new | comments | show | ask | jobs | submit login

Nice find. I think it Lunascript might the classical case of programmer naiveté: "I can re-invent the wheel so much better, and it will take not that much time". Usually is part of the process of maturing up as a programmer/engineer. Get the main stuff done (wow, this looks like a cool idea), but soon you are treading in deep waters as soon as the technology start hitting the edge cases, and day to day usability.

My self have started a couple of these overambitious projects, without realizing the amount of work it takes to get something in production level. Sure you can cover the base functionality pretty quickly, but it is the edge cases and polishing and making a robust solution that actually take the most time.

Sometimes these over-ambitious projects, succeed (Linux is the prime example), but usually they do because there is a huge need in the market for such product.

Perhaps Lunascript is something more 'interesting in paper, but not that great in practice'.

As much as I don't really like the "DSL" terminology for anything less than a true language with a parser and AST of its own, the advantage of the Ruby-esque "DSL"/library-with-carefully-chosen-name-conventions is that you are starting from the base of a known-working language. I have a "DSL" I wrote at work for decorating functions with various metadata and recurring bits of functionality like permissions checking in Perl for work, but because it's just not-really-even-glorified Perl I still have the full power of Perl to do things like programmatically generate these functions. Using a recurring set of decorations is as easy as sticking them in a bog-standard Perl array and just passing them as bog-standard arguments in the right place.

It's tempting to replace your language entirely and compile down to something else, but IMHO this sort of thing shows that's a very dangerous play that generally succeeds big or fails big, usually the latter. Incremental expansion of an existing language, even with something as powerful as a syntax preprocessor (that ideally compiles to results that are themselves manipulable language constructs like closures or simple values passed in an idiomatic way), is generally the way to go; most of the win, hardly any of the risk. Something like StratifiedJS or something, if I understand it properly, adding meaningful additional syntax without trying to be its own independent language: http://onilabs.com/stratifiedjs Or, from the sounds of it, the way this language ultimately went.

Javascript may not be quite as slick as Ruby, but, well, to be honest I think Ruby partisans really oversell the value of being able to drop a few parentheses out of your code, and while the block syntax may be nicer JS still has relatively decent closures.

> Sometimes these over-ambitious projects, succeed (Linux is the prime example), but usually they do because there is a huge need in the market for such product.

Linux was not that ambitious to start with. That's why it succeeded: while everyone else was waiting for Hurd or AT&T-free BSD, Linux was rapidly gaining momentum.

> I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu)


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact