Live data from Hacker News

Skip – A programming language to skip the things you have already computed

skiplang.com

31–40 of 103 posts

Re: Skip – A programming language to skip the things you have already computed

#31

Earlier quoted context omitted.

How does your language compare to the glut of modern systems-ish languages like Rust, Go, Swift, Julia, Nim? I see a lot of C++ influence here. Your docs don't explain how you make parallelism ergonomic, but the "async" keyword is getting popular. Why would I choose to invest in your language over one of these other ones that has more momentum?

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-…

> 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?

Re: Skip – A programming language to skip the things you have already computed

#32

Earlier quoted context omitted.

How does your language compare to the glut of modern systems-ish languages like Rust, Go, Swift, Julia, Nim? I see a lot of C++ influence here. Your docs don't explain how you make parallelism ergonomic, but the "async" keyword is getting popular. Why would I choose to invest in your language over one of these other ones that has more momentum?

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-…

I 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.

Re: Skip – A programming language to skip the things you have already computed

#33

Does skip target js just through emscripten? Does it have good support for browser interaction?

We have js printed at the "OuterIST" phase right now. It's the phase just before we sent to the native backend which will generate llvm. You can go to the playground ( http://skiplang.com/playground/ ) and click "JavaScript" to see the output.

We talked about doing it at an earlier phase in order to output JavaScript closer to what the input code was, in a very similar fashion as BuckleScript does. But we never gotten around to as we focused on the native backend.

We also have a prototype of a wasm backend using emscriptem.

Right now none of them are really usable as is but there's a lot of potential there.

Re: Skip – A programming language to skip the things you have already computed

#34

> Skip also features a code-formatter to ensure consistent code style and a tool for running codemods. Nice! I love this trend.

Yeah, before joining the Skip team I worked on Prettier. Once you have an automatic formatter, you can't really go back, so I ported the core algorithm of prettier to Skip and built all the formatter for it.

My biggest surprise was that the language has been designed by people that have been working on languages for their entire lives so it was dead simple to write the formatter for it compared to JavaScript.

It only took me ~2 weeks to get it in a place where we could reasonably convert the entire codebase to it. It took Prettier ~6 months to get to that point.

Re: Skip – A programming language to skip the things you have already computed

#35
post #31

Earlier quoted context omitted.

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-…

> 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 programmi…

Right.

It really depends what one means by "system programming". I would add Java/C# and many others to that list.

Re: Skip – A programming language to skip the things you have already computed

#36

Earlier quoted context omitted.

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-…

You have a doc section named "Lvalues." Nobody talks about lvalues outside C++.

This 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.

Re: Skip – A programming language to skip the things you have already computed

#37

Earlier quoted context omitted.

I'll look into removing it. If you want an overview of language features/design. I'd start with the docs: http://skiplang.com/docs/hello_world.html

Can I email you?

You didn't ask me personally but feel free to email me, I've helped with the open sourcing effort: vjeux@fb.com

Re: Skip – A programming language to skip the things you have already computed

#38
post #30
post #28

Earlier quoted context omitted.

This was an unfortunate choice of wording, that maybe should be updated: > The Skip project concluded in 2018 and Skip is no longer under active development at Facebook. This makes it sound like the project was killed off entirely, as it mentions its 'concluded'.

The key question for me is what about the project made Facebook uninterested in using the language or continuing development. On paper, Skip sounds quite compelling, so I assume there is some reason, if just politics.

(I work at FB, not on Skip.) The project was originally started with the hopes of converting Facebook's entire (Hack) web codebase to use Skip and support reactivity. It seemed like the Skip team hoped that it would be possible to convert incrementally while reaping performance wins incrementally too.

Converting a multi-million-line codebase takes many years, and in practice, it turned out that huge swaths of the code would need to be converted before any wins were had. (To fully leverage reactivity, all your dependencies also need to be reactive.) Our codebase is intertwined and doesn't have many self-contained parts that could be fully converted in isolation so this wasn't possible.

Essentially, Skip is still very promising as a language for new projects but it feels like Facebook management couldn't justify staffing a permanent team given that we don't have a path to move huge chunks of development to it except in projects being developed more from scratch, which we tend to have few of.

I wouldn't see any of this as an indictment of Skip's potential generally.

Re: Skip – A programming language to skip the things you have already computed

#39
post #30

Earlier quoted context omitted.

The key question for me is what about the project made Facebook uninterested in using the language or continuing development. On paper, Skip sounds quite compelling, so I assume there is some reason, if just politics.

(I work at FB, not on Skip.) The project was originally started with the hopes of converting Facebook's entire (Hack) web codebase to use Skip and support reactivity. It seemed like the Skip team hoped that it would be possible to convert incrementally while reaping performance wins incrementally too. Converting a multi-million-line codebase takes many years, and in practice, it turned out that huge swaths of the cod…

Thanks for the insight. That seems quite reasonable, especially the fact that you'd need your dependencies to implement it before seeing any speed up.

Re: Skip – A programming language to skip the things you have already computed

#40
post #34

> Skip also features a code-formatter to ensure consistent code style and a tool for running codemods. Nice! I love this trend.

Yeah, before joining the Skip team I worked on Prettier. Once you have an automatic formatter, you can't really go back, so I ported the core algorithm of prettier to Skip and built all the formatter for it. My biggest surprise was that the language has been designed by people that have been working on languages for their entire lives so it was dead simple to write the formatter for it compared to JavaScript. It only…

Yeah my first experience was with gofmt. I am currently working in both large and old java code bases so I have needed to only use tools that auto format lines that are staged for committing, but it was one of the first things I set up.
Post reply on HN