9 ms·
I love looking at new languages. People invent really creative stuff. However, my exploration usually ends with "this is great, but there are no libraries for
by andr 8y ago
I love looking at new languages. People invent really creative stuff. However, my exploration usually ends with "this is great, but there are no libraries for it, so I probably won't use it".
If you are building a language, starting from scratch is the epitome of Not Invented Here syndrome. Build it on top of an existing ecosystem. Look at Elixir and how it builds on Erlang and interoperates with it just perfectly. Or look Groovy, Scala and Clojure to see what kind of range you can get from a single platform. With the exception of Go, every language that has become popular in the past 10 years, built on something else.
- tombert 8y agoThis compiles to C, which (I think) means it should be able to FFI to it fairly easily?
- amedvednikov 8y agoYes, calling C functions is as simple as C.puts('hello world')
- tombert 8y agoAh, cool, so effectively the standard library is huge :). Question though; I'm assuming that if you're touching C, there's no extra protection added by V, right? The C will be just as unsafe as it was before, or do you add some kind of exception handling thing around it?
- megous 8y agoWhere did you get an idea that the language has exceptions? Looks like they just have a way to return errors if you use question mark at the end of function declaration. See "Option types" here https://vlang.io/docs https://vlang.io/docs
- tombert 8y agoSorry, that's kind of what I meant, though I realize I made a mistake in how I said it.
- amedvednikov 8y agoNo extra protection right now. You have to handle error codes. Strings are simple: 'hello'.cstr() So are arrays: [1,2,3].carray() But if you work with pointers, you have to be careful. Maybe I'll implement an unsafe block.
- hexane360 8y agoHow can this be true if "V's memory management is similar to Rust but much easier to use"?
- coldtea 8y ago>If you are building a language, starting from scratch is the epitome of Not Invented Here syndrome. And there's nothing wrong with that.
- AnimalMuppet 8y agoDepends on whether you want the language to be used.
- deleted 8y ago[deleted]
- coldtea 8y agoI've never seen a language being used or not used because it reused some other ecosystem. It might have worked for Clojure and Scala, but didn't get tons of other JVM targeting languages very far. And inversely, C, C++, Java, Python, Perl, Go, Rust etc succeeded by themselves.
- AnimalMuppet 8y agoRe-used an ecosystem? Perhaps not. But the breadth of the library is a big deal for language usability. The easy way to get a big library is to steal an existing one. Java and Go didn't take that route, because they had corporations behind them that could put a lot of people on writing a solid, broad library fairly quickly. When C came out, the standards were a lot lower - a few people wrote the library that they wanted. Same with Perl. (CPAN is an amazing organic achievement, but it took time to develop.) When C++ started, it just used C's library. I don't know about Python. Rust is the exception to my reading of this, but even Rust had a large organization, even if it wasn't a corporation. So I think the rules are be early, so standards are lower; have a big organization write a big library at the beginning; or use an existing library to get off the ground.
- coldtea 8y ago>* The easy way to get a big library is to steal an existing one.* Doesn't that always lead to compromises in the language design (to easily link to the old language) and sub-par non-idiomatic libraries?
- fogleman 8y agoAnd Go put a lot of effort into the standard library by the looks of it.
- yiyus 8y agoThe initial library was very based on Plan 9 and Inferno libraries. It was far of being a direct port (not even a derived work strictly speaking), but it certainly took a lot of inspiration.
- andrenth 8y agoWould love a modern programming language that compiles to Go and can call Go libraries...
- Koshkin 8y agoAll I know is that such language would first be called “Go with classes,” then “Go++.”
- int_19h 8y ago*Go with templates
- wellsjohnston 8y agoI started a project called Go++ which was exactly this lol
- fouc 8y agoThat would be a sign of maturity in the Go ecosystem if a whole new language could be built on top of it - perhaps one that isn't C-like/Go-like at all.
- amedvednikov 8y agoThe very first and ancient version of V was compiling to Go :) I think this can be an option in the future. The language is simple enough.
- mstade 8y ago> With the exception of Go, every language that has become popular in the past 10 years, built on something else. And Go probably wouldn't have half the range it enjoys today without the massive reach and coffers of Google. That's not a snark, or a critique even, just a reflection of the difficulty of breaking through in this space and indeed a comment to support your assertion that in order to succeed in this space today you probably have to build on or successfully interoperate with an already established platform. If Go didn't have the backing of Google, I doubt it'd have half the audience it enjoys today; Rob Pike notwithstanding. Case in point: Plan 9.
- pushpop 8y agoPlan 9 is a little different because it's harder to flitter between operating systems than it is programming languages. That said, I'm not discounting what you're saying about Go's popularity either.
- mstade 8y agoMy point with mentioning Plan 9 was that even with luminaries such as Rob Pike, success is not guaranteed. Having a huge organization backing you doesn’t hurt. (Ok, granted, plan 9 had bell labs but I posit a research arm is altogether different from the commercial entity that is google.)
- rakoo 8y agoIt's interesting you bring Plan 9 up, because it was closed source for a long time, who knows if it was long enough to kill interest. Probably another factor for success.
- pushpop 8y agoI got that. I was saying there were a lot of other mitigating circumstances that contributed towards Plan 9’s lack of success that would be specific to Plan 9 and thus not relevant to general purpose programming languages. So it’s not really a great example. I do think your general point does have merit and the computer industry is littered with examples of great languages that have either failed to gain traction or just fallen out of favour for whatever reason.
- robbrit 8y agoSeems like you either need to build off an existing platform, or have a company bankroll it. Rust also falls into this category.
- bunderbunder 8y agoIt looks like V is built on top of the biggest ecosystem of them all: C. From the page comparing to other languages, they claim "Zero cost C interop".
- bartl 8y agoYet I've skimmed the entire site and nowhere do I see mentioned how to use C libraries in V. I don't have to convert C to V and then compile the entire V program, do I?
- bunderbunder 8y agoI doubt it, but it's hard to tell. More will become clear once they've actually released the langauge - as it is, this whole website seems super premature, since neither the language itself nor the source code to any real software written in it are available for public consumption. The documentation that exists is minimalist enough that I would be very careful about assuming it represents a complete representation of the language's features.
- amedvednikov 8y agoGood point, I'll add an example. It's just `C.puts('hello')`
- edflsafoiewq 8y agoHow do you include the header with puts though?
- amedvednikov 8y ago#include <stdlib.h> fn main() { C.puts('hello') }
- ncmncm 8y agoThis is an important point. amedvednikov is the author. It is hard to interpret it. The V compiler parses C?
- _hardwaregeek 8y agoExcept that's your specific attitude towards language adoption. And while it's a perfectly reasonable stance, there's plenty of people who see a language with no libraries and see an opportunity to build their own. Every language ecosystem has to start somewhere. Also, Rust started in the last 10 years and wasn't built on anything. Unless you count LLVM?
- bunderbunder 8y agoOne of the main things that attracts me to non-mainstream languages is that they offer a chance to build some of the kinds of things I like to build for fun, without a bunch of killjoys nagging me about how $language already has $library. Granted, there are still killjoys who want to nag about how $language isn't on the TIOBE index, but they're usually easier to ignore.
- azhenley 8y agoI’ve been working on a language that builds on top of Go for this exact reason. I want to use the existing ecosystem. But a lot of people have been telling me it isn’t a “real” language and that I need to target either C or LLVM. Can’t please everyone, I suppose.
- mrath 8y agoI think that is a great idea. something like typescript? Do you have a repo you can share?
- dan-robertson 8y agoTo offer a counterpoint, I basically entirely disagree with your opinion but maybe we have different ideas of using something. Most libraries aren’t really that useful in the long term (although the most-used are). Typically they will not do quite what you want or they will do more than you need and therefore what you want will be mixed up with a lot of other things you need to specify. In cases where a perfect library already exists for your thing there is a reasonable chance that your thing already exists, and otherwise just use whatever language the library is in. Now there are some libraries but I claim that basically everything else you can get away without and just do it yourself only adding things as you need them. E.g: libc type library is quite fundamental. Likely a lot of the basic stuff already exists. So long as you have an ok ffi it should be easy to add any missing calls. HTTP client. This is likely to exist but also not super hard to implement. One can also skip this and ffi/shell out to curl. Json parser. Again likely to exist and quite easy to implement. Data structures. Likely to somewhat exist although anything missing that you want may be a bit annoying to add. Typically I think most projects don’t hinge on exactly the right exotic data structure, and if they do then they should be implementing that themselves. E.g. yaml parser. Less likely to exist and annoying to implement but you can just use some existing program to convert to json first and then easy. E.g. bindings for your favourite C drawing library. Probably don’t exist but hopefully there is an ffi so just do it yourself. Libraries aren’t really very special and rolling one’s own isn’t hard. And even if you refuse that, you can just write part of your project as a simple unix process and call that from your python script with all the libraries you want. Personally I see the lack of libraries as an opportunity to not search around for libraries or try to work out how they can go wrong or be forced to do things a certain way. Especially if the language is novel, it probably isn’t really clear how such a library should be structured. E.g. the reason that rust doesn’t have a canonical gui library isn’t that there are no libraries or no one is trying or no libraries exist but rather that the community in general are still trying out different approaches trying to find something that fits the language well. On the other hand the OP mentions the existence of a widget library for V already.
- hderms 8y agoHttp clients and Json parsers aren't great examples because both should be about as fast as you can make them. Idk about you but I don't find it credible to claim writing your own http library or Json parser is a reasonable route to go down in most cases. Not to mention the opportunity cost of reinventing those wheels would be quite large.
- TheAceOfHearts 8y agoTypeScript is a good example of a language that received widespread adoption due to its ease of integration with regular JavaScript. Another lesser-known example is ReasonML [0], which is supposed to integrate really well with JavaScript and OCaml. Based on my experience, it's still young with plenty of rough edges but it's very promising. [0] https://reasonml.github.io/ https://reasonml.github.io/
- staticassertion 8y agoIt's interesting that you chose Elixir, Groovy, Scala, and Clojure as examplars - they seem like failures from an adoption standpoint. Go, your exception, is by far the most successful of the languages listed.
- tormeh 8y agoThat's not true. According to the Redmonk rankings, Scala is slightly more popular (based on GitHub and Stack Overflow) than Go. They are both solidly tier 2 languages. Groovy and Clojure are tier 3 languages. Elixir is about as popular as Fortran or Ocaml, which is not bad, but kinda niche.
- staticassertion 8y agoThat lacks the context of their age. Go is 10 years old, scala is 16 - 60% older, and it was built on top of the JVM, which is much older than that. I feel like that's worth mentioning, because it seems like Go has more momentum - maybe there's data that shows otherwise though, like trends in Redmonk over time. I had a quick look and didn't see an easy way to get that. I'd be happy to be proven wrong, it's just the impression I get.
- slavapestov 8y agoWhy should the goal of every programming language be to become popular?
- stevekemp 8y agoI find the same, but there are rare gems out there. Frustratingly I saw a fun-looking language posted here before, which was a virtual-machine based system. It was small, clear, and had a good range of libraries and I'm damned if I can find it again!
- rkeene2 8y agoProbably Tcl ;-)
- dunefox 8y agoPharo, Pixie, Pony, ...?
- stevekemp 8y agoI looked those up: https://pharo.org/ https://pharo.org/ - A language with an IDE http://pixielang.org/ http://pixielang.org/ - A lisp. https://www.ponylang.io/ https://www.ponylang.io/ Sadly not a match. All I remember was that the language was written in C, compiled to bytecode and was executed in a virtual machine (like Lua, and similar languages). It was "small" and "fast" and probably had a C-like syntax. I should perform a decent search, because the more I think about it the more I'm annoyed now!
- lorenzk 8y agoNo virtual machine, but maybe you‘re thinking about https://nim-lang.org https://nim-lang.org ?
- stevekemp 8y agoNo, it was definitely bytecode/vm-based. That was one of the reasons I was interested - because I've written a couple of toy virtual machines myself. I should just post an "Ask HN: Tell me of your niche languages" and hope I get lucky!
- masukomi 8y ago