3 ms·
Skip is not meant to be a system programming language. So the comparison with Rust for example is difficult. > "I see a lot of C++ influence" I don't see what
by jverlaguet 8y ago
Skip is not meant to be a system programming language. So the comparison with Rust for example is difficult.
> "I see a lot of C++ influence"
I don't see what gave you that impression. Perhaps the syntax? But I don't think it looks more like C++ than Java or C#.
> Why would I choose to invest in your language over one of these other ones that has more momentum?
There are several reasons, but of course I am biased:
1- builtin cache invalidation
2- safe parallelism
3- predictable GC
While 2-3 can be found in other languages, I think I can argue that 1 is very unique to skip.
The other thing is, what are you trying to build? If you what you want to do is to develop an incremental tool, then Skip is probably the best option out there right now.
Let's say you decided tomorrow to build a fully incremental C++ front-end, to support auto-complete for example (I chose C++ because it is notoriously complex). What would you write this in? I think Skip should be the language of choice.
- fusiongyro 8y agoYou have a doc section named "Lvalues." Nobody talks about lvalues outside C++.
- vjeux 8y agoThis is the technical term for what's left of the `=` sign. If you are from a JavaScript background, it is commonly called "destructuring assignment". The interesting about Skip is that local mutations are explicit with a ! in front of it. And it works in the context of a lvalue. We may want to rename this title if it's confusing.
- jasone 8y ago> Skip is not meant to be a system programming language. So the comparison with Rust for example is difficult. Can you elaborate on this comment in the context of some of the other languages listed by the grandparent (Go, Swift, Julia, Nim)? Granted, writing bare-metal operating system kernels may severely limit practical options, but I can imagine using Go, Swift, and Nim for slightly higher level "systems programming". Skip would be a reasonable alternative to these, right?
- jverlaguet 8y agoRight. It really depends what one means by "system programming". I would add Java/C# and many others to that list.
- dom96 8y agoI'm curious what your thoughts are on Nim. Especially seeing as we're both FB employees :) I think you've done a really good job with Skip. I really love the incremental type-checking. It's a breath of fresh air to see a compiler created with IDEs in mind from the beginning. Effect tracking is something that Nim also boasts so I'm curious how that works in Skip. Are there any docs/articles going into detail about this?
- bausshf 8y agoGenerally system programming is that you're able to interact with the system without some sort of "bridge". For that reason Java and C# cannot be counted as system programming languages, because neither of those can interact directly with the system they're running on. Ex. C# needs PInvoke, where as C can just call system functions directly. At least that's my understanding.
- dgreensp 8y agoI can see why someone who stumbles on Skip would classify it as "systems-ish": General-purpose statically-typed language that compiles to native code with an emphasis on being fast with predictable performance. Go is thought of as a systems language, and it is a garbage-collected language meant for writing servers! How would you describe when to use Skip? It looks really interesting.
- the_duke 8y agoI don't know anyone who considers Go a systems language. That wording was also removed from the Go website a long time ago. The GC and the heavy weight runtime make it unsuitable in this space. Skip seems very similar to Swift and Java, with inspiration from Rust wrt mutability.