3 ms·
Interesting list but "fledgling" is not only about language, it can be about where the language can run. When Node.js started, JavaScript was already popular b
by zwetan 11y ago
Interesting list but "fledgling" is not only about language, it can be about where the language can run.
When Node.js started, JavaScript was already popular but I'm pretty sure node could have been considered "fledgling".
- lmm 11y agoA list of fledgling languages is a very different thing from a list of fledgling language implementations. Haskell is 20+ years old but the Android port might count as "fledgling". Python is similarly mature but PyPy not so much. If you want to maintain a list of fledgling language implementations/ports that would be very cool. Probably a lot more work than just a list of languages though.
- derefr 11y agoIt's not just the implementation, though. The thing that differentiates Node from in-browser JS is something like a standard library—but really it's something we don't really have a term for in software architecture. It's the fact that in-browser JS has a DOM to work with, while Node has processes and files and other Unixisms to work with. Effectively, Node and JS-in-browsers are two sublanguages, each exposing the distinct set of abstractions their underlying platforms provide. This is distinct from the difference between, say, MRI Ruby and JRuby and IronRuby: those all fundamentally present the same (Unix) abstractions. The C, JVM, and CLR implementations of Ruby are effectively all composed of two parts: first, a shim on the underlying platform allowing it to be presented as having Unix platform abstractions; and then, a compiler/interpreter written in terms of those Unix platform abstractions. Instead of IronRuby exposing, say, a Window with a thread-pool as the basic actor type, you still get Processes with Threads; instead of IronRuby exposing NT Objects with ACLs, you still get Files with read/write/execute masks. Although this distinction is important, it's usually pretty trivial. There just aren't that many platform abstractions that existing languages really target, other than Unix, web browsers, and (rarely) SQL databases. There are some rare exceptions that have their own set of platform abstractions: Smalltalk, MOO games, Erlang, Lua, and Microsoft's Midori project, to name a few. This is why you don't tend to see a language directly "ported" to or from any of these runtimes; it'd end up a different sublanguage, and indeed often an entirely new language. (One could argue that Elixir, for example, is what happens when you "port" Ruby to Erlang's runtime; or that MoonScript is what happens when you "port" CoffeeScript to Lua's runtime.) Point being: I don't know whether a list of fledgling ports/implementations of languages would be all that interesting, where those ports/implementations retain the original language's platform abstractions. But I'd love to see a list of fledgling sublanguages that adapt an existing language to the platform abstractions of a new or different platform.
- lmm 11y agoI don't think the distinction is as strong as you make out. Node and browsers both implement the same language standard. They offer different "standard libraries", but in that sense any program that embeds Lua is offering a different "lua platform".