5 ms·
Go is not a good comparison. Crystal is expressive, 500 lines of Go commonly translate to 50 lines of Crystal. The DX in Crystal is really closer to Ruby than
by moe 3y ago
Go is not a good comparison.
Crystal is expressive, 500 lines of Go commonly translate to 50 lines of Crystal.
The DX in Crystal is really closer to Ruby than to Go. It's essentially a very fast and type-safe version of Ruby.
- pelasaco 3y ago> The DX in Crystal is really closer to Ruby than to Go. Me as polyglot can say that is much easier to switch completely between languages and paradigm than write or talk similar (but not equal) languages. So it is maybe a great reason for beginners to start to play with Crystal as Rubyists, but as soon as you start to work daily with the language, other factors like good documentation, tons of examples, great standard lib, active community and development, etc are much more important than if its remembers ruby or not.
- straight-shoota 3y agoCrystal core developer speaking: I think this argument is less about the concrete syntactical and semantic similarities to Ruby, but the shared general idea to focus on developer happiness. For example, code is easy to read, yet still expressive.
- mirekrusin 3y agoMaybe with LLMs it won't matter much anymore? Maybe in the near future we'll have copilot for crystal as vscode plugin and the rest doesn't matter much - just quality of this plugin?
- aatd86 3y agoWhat will your LLM be trained on? It only makes the problem even more acute I think.
- vidarh 3y agoYesterday I told ChatGPT: > We're going to write a program in a "new" language that is a mix of Ruby and INTERCAL. We're going to take the "come from" statement and use it to allow "hijacking" the return of a function. Furthermore, we're going to do it conditionally. "come from <method> if <condition>" will execute the following block if <method> was executed and <condition> is true. In <condition>, "result" can be used to refer to the result of executing <method>. And that was enough to get it to understand my example code and correctly infer what it was intended to return. Given it took that little, I don't think you need much code in a new language before you have a reasonable starting point as long as you can give examples and document the differences, and then use that on a few large projects that has good test suites, and work through any breakage.
- aatd86 3y agoYou still need libraries and the ecosystem. If it can't find those, then because there is no training data, best case scenario is that it will hallucinate APIs that don't exist.
- vidarh 3y agoIf the LLM understands the language it can aid in creation of the libraries and ecosystem because it can also translate code. I just tested it by having ChatGPT translate one of my Ruby scripts to Python for example. I don't like Crystal all that much, but it's similar enough to Ruby that if ChatGPT can handle Ruby->Python, it can handle Ruby->Crystal with relatively little work. But it doesn't need to handle it flawlessly, because every new library you translate and fix up gives you a new codebase you can use to finetune it.
- mirekrusin 3y agoWe need RLHF -> RLCF/RLIF/RLEF (Reinforcement Learning from Compiler/Interpreter/Execution Feedback).
- mirekrusin 3y agoBut that's the thing, libraries are written and it should be able to just read/learn/train on it, that's all.
- mirekrusin 3y agoIdeally on source code so it knows standard library and how to use it with enough comprehension to be useful.
- yellowapple 3y agoAt that point, why bother with high-level languages at all? A sufficiently-good AI should be able to read a specification / test suite and directly generate a binary which passes those tests.
- mirekrusin 3y agoMaybe. Or maybe it'll become validation/what-is-happening lowest denominator. Programming languages are also a good Intermediate Language between humans<->machines and machines<->machines apparently due to recent AI advancements.
- unrealhoang 3y ago> 500 lines of Go commonly translate to 50 lines of Crystal This is a vast exaggeration. And even if I grant it, it's still thousand of loc that you don't have to write because of available libraries.
- DennisP 3y agoAlthough they do try to make it easy to use C libraries: https://crystal-lang.org/reference/1.8/syntax_and_semantics/c_bindings/ https://crystal-lang.org/reference/1.8/syntax_and_semantics/...
- antifa 3y agoIMO crystal's value is that I can do things normally associated with golang without the horrors of actually dealing with golang's absence of a good type system and other quirks like error handling.
- deleted 3y ago[deleted]