Does a new or emerging programming language really need practical libraries?
Using a factor or forth, Arc or whatever as an example (note: factor is a bad example because it has a large set of practical libraries). Lets say you are considering using a programming language. Does having a large set of practical libraries matter? If your language is well designed, then it would be easy to create a 'string' library or a 'date' library. Maybe even a web framework?
I mention this, because when a language emerges, it seems that someone brings up 'practical libraries'.
6 comments
[ 3.6 ms ] story [ 57.3 ms ] threadTake the case of Lua. A compelling small language if ever there was one. It has many great things going for it: simple syntax, elegant grammar, small and efficient VM. Even after 15 years it has only gotten traction among game developers and as an embedded language. The obvious reason why is that their standard library is very small (for important reasons).
It may be easy to create such things with a new language, but you shouldn't have to.
I consider it good enough if established libraries can be linked to new languages (e.g. via C). That way, the unique features of the language can be more readily tested in existing tools. For example, I may have a program with a critical algorithm, that might be faster in a new language; if the language simply links to C, I can easily test that algorithm in the new language, without having to replace the rest of the program and the libraries it uses.
Note that I'm not saying it's bad for new languages to be capable of implementing something like a 'string' or 'date' in a simple way. In fact, such practical examples may help when learning the new language. It's just a question of whether or not that is mandatory before anything useful can be done with the new language.
A lot of these sorts of libraries contain an essential amount of cruft, either because they deal with crufty human things, or because they implement crufty standards.
haXe and Factor are both good examples of languages that have a basis with which to grow their libraries. haXe is getting uptake from a variety of angles but the emphasis is clear the everyone involved wants to minimize the costs of multiple-language incompatibilities, and that is resulting in powerful libraries across multiple domains. I don't know the details of Factor's growth, but I suspect that it is doing so on its strengths as a "next-gen" concatenation language in a field with little comparable competitors. Both languages have C bindings available, but haXe in particular has strong reasons to create native libraries.