sorry but the ruby community now has something called Elixir.
Erlang is not made for anything that is cpu intensive. It doesn't solve every problem. Thats the void I think Crystal is going to fill for Rubyists.
Goby: A new Ruby-inspired language written in Go
31–40 of 45 posts
Re: Goby: A new Ruby-inspired language written in Go
#32Earlier quoted context omitted.
Erlang is not made for anything that is cpu intensive. It doesn't solve every problem. Thats the void I think Crystal is going to fill for Rubyists.
That's one of the reasons I migrated to Go instead of Elixir (plus, I love the idea of suddenly having system programming within reach). But doing so, I haven't explored deeply enough Elixir and Crystal. Would you say they each provide something, not related to taste, that Go doesn't have (or that Go is doing worse)?
Re: Goby: A new Ruby-inspired language written in Go
#33Earlier quoted context omitted.
If you care about CPU-heavy computation, you care about not using an interpreted language to do it, because if you pay a 10x performance penalty, that turns your 16-core machine back into an effective 1-core machine. (Apparent number mismatch to account for slowdowns and general amdahl's law.) And, with no offense intended to Goby, a brand new scripting language built on top of a language like Go (already ~2x-3x slow…
> "If you care about CPU-heavy computation, you care about not using an interpreted language to do it, because if you pay a 10x performance penalty, that turns your 16-core machine back into an effective 1-core machine. " > "Edit: Would someone like to explain what is wrong with the idea that people who care about CPU-heavy computation also need to care about the performance of the language they are using rather than…
Is a JIT, not an interpreter. JITs are fundamentally different. I seriously doubt Goby is a JIT yet, to the point I'm not even going to check the source.
LuaJIT is also an outlier. I consider it a solid point in favor of the argument that if you build a language for speed from day 1, you can do pretty well and still build in a lot of nice features. Even so, I understand LuaJIT had to drop some Lua features to get there. However, if you first design your language's features with a lot of focus on convenience, and then try to make them fast without compromise, you end up in the PHP/Python/Perl/Ruby/Javascript space, where no matter how much work you put into it you hit fundamental walls. (Yes, even JS with all modern JIT'ing is not really that fast of a language.) The counterargument to your point is that LuaJIT is pretty much all alone in its position on the performance, despite the fact that other seemingly-similar languages have had orders of magnitude more work poured into their JITs.
I think there's a lot of up-and-coming languages that have learned a lot about designing for performance and while, alas, LuaJIT's future seems dim, I believe a lot of languages like Nim and Crystal and even to some extent Go have learned about how to be nicer languages than C or C++ while not giving up tons of performance. LuaJIT, in my opinion, still has a place of honor in the history of programming languages, far outsized from its actual use.
(Rustaceans may be assured I have not forgotten them, I just think Rust is coming at this from a significantly different angle.)
Re: Goby: A new Ruby-inspired language written in Go
#34Hi, I'm Stan, this project's creator. I will explain your questions later. But before that please check out our sample site (written in Goby): http://sample.goby-lang.org/ And our plugin system, which is Goby's coolest feature: https://goby-lang.gitbooks.io/goby/content/plugin-system.htm...
When things settle down, I would love to read an article from you about what it's like to launch a new programming language by the end of the 2010s.
I'm under the impression that adoption is going way faster than in previous decade, when php, java and C/C++ were kings hard to revoke. But there's still a gap of few years between initial announcement of a language and it being used in the wild - which is quite understandable, because people want to be sure the language will stick around before writing production code with it.
I would love to know what you do during those years, how you grow your language, how you simply manage to use it at work, or for your own projects. If you could write such article, that would be awesome :)
Re: Goby: A new Ruby-inspired language written in Go
#35Earlier quoted context omitted.
If you care about CPU-heavy computation, you care about not using an interpreted language to do it, because if you pay a 10x performance penalty, that turns your 16-core machine back into an effective 1-core machine. (Apparent number mismatch to account for slowdowns and general amdahl's law.) And, with no offense intended to Goby, a brand new scripting language built on top of a language like Go (already ~2x-3x slow…
Didn't downvote, but perhaps a request for clarification; perhaps you could cite some benchmarks for these numbers? Esp. The 100-500x speed loss for interpreted languages.
First, let me remind you that you have to think logarithmically here, not in absolute terms. 1-5x is the same sized range as 100-500x, about half-an-order of magnitude. (Pedants will correctly observe it isn't actually half as half an order of magnitude is actually 3.16... but it's close enough for estimate work.)
I use 50x slower than C as my guideline for how fast conventional 1990s dynamic scripting languages running an a conventional interpreter are, based on: http://benchmarksgame.alioth.debian.org/u64q/which-programs-... You can see Erlang, Perl, Ruby, Smalltalk, Python3, Lua (not LuaJIT, Lua, huge difference), and Ruby. You can find Node.JS with all the mighty power of a JIT'd language down on the next graph all the way on the right, hanging out somewhere around 10x slower than C, which seems to be all you can practically expect from a JIT'd dynamic scripting language; excepting my comments about LuaJIT in the cousin comment, I haven't see anything that convinces me you can go any faster for that crop of languages. Of course if somebody produces a 2x-slower-than-C Python JIT, I'll just update my understanding rather than insist it can't exist. But at the moment I see no particular reason to think that's going to happen.
You can also see Go at 2-3x slower than C just a bit to the right. (This is why I say Go is pretty fast for a scripting language, but you can see it's not all that fast when compared to the conventionally compiled languages. It takes a non-trivial loss on both not doing a lot of optimization, and requiring a lot of indirect vtable lookups when you use interfaces heavily which C++ often avoids and Rust aggressively avoids whenever possible.)
100-500x speed loss is just an estimate for a brand new, unoptimized scripting language... and, actually, it's a rather generous one, it could go another order of magnitude or two quite easily, especially in the very early days. Note how while that may seem extreme, it's just another order of magnitude or so slower than the optimized dynamic scripting languages. For an unoptimized implementation, that's not necessarily a terrible estimate. As I understand it, Perl 6 is currently hanging out in the 100-500x slower than C range, though I see no fundamental reason they won't catch up to the current scripting languages at the very least once they have time to optimize. (Whether than can significantly exceed them I don't know; I don't even know that it's a goal, since the dynamic scripting languages are certainly plenty fast enough for a huge variety of tasks as-is and that will continue to be true indefinitely.) These languages aren't "stuck" there, it's just that it takes time to optimize.
And my final caveat is to point out that A: fast != good and slow != bad, it's merely one element of a rich and complicated story for every language and B: that while benchmarks always have a certain subjectivity to them, we are broadly speaking observing objective facts here than, in particular, engineers responsible for creating solutions for people really, really ought to know and not dismiss because they make you feel bad. Being "insulted" at the idea Python is meaningfully fundamentally slower than Rust or something isn't going to change anything about the performance of your system, so it behooves you as engineers to be sure that you've lined your requirements, resources and solutions all up correctly.
Re: Goby: A new Ruby-inspired language written in Go
#36Earlier quoted context omitted.
That's one of the reasons I migrated to Go instead of Elixir (plus, I love the idea of suddenly having system programming within reach). But doing so, I haven't explored deeply enough Elixir and Crystal. Would you say they each provide something, not related to taste, that Go doesn't have (or that Go is doing worse)?
I'd compare Go to Crystal. Go is more mature and stable but crystal a little faster thanks to LLVM. Plus I like Crystal's syntax better. I've been contributing to the crystal ecosystem with some libs and use it for personal stuff but I use Go at work. Once Crystal hits 1.0 and has good parallelism then I think it could be used as a drop-in replacement for Go for most use cases.
Re: Goby: A new Ruby-inspired language written in Go
#37Earlier quoted context omitted.
Didn't downvote, but perhaps a request for clarification; perhaps you could cite some benchmarks for these numbers? Esp. The 100-500x speed loss for interpreted languages.
"Esp. The 100-500x speed loss for interpreted languages." First, let me remind you that you have to think logarithmically here, not in absolute terms. 1-5x is the same sized range as 100-500x, about half-an-order of magnitude. (Pedants will correctly observe it isn't actually half as half an order of magnitude is actually 3.16... but it's close enough for estimate work.) I use 50x slower than C as my guideline for ho…
Another thing is that we have CPU architecture that is optimized for a one size fits all system when it comes to personal computing. If we truly wanted power from higher level, more expressive languages and programming systems, we would have architecture designed for those systems.
If you want to experiment with truly new programming languages and environments, you probably have to experiment with hardware too. Our present reality makes this difficult to change, which is really too bad.
Re: Goby: A new Ruby-inspired language written in Go
#38Earlier quoted context omitted.
> Would someone like to explain what is wrong with the idea that people who care about CPU-heavy computation also need to care about the performance of the language they are using rather than just downmodding it? I didn't downvote you, so i'm not sure, but maybe it was because of the condescending tone (assuming what they care about from a simple question and telling them what they should care for instead), aaand not…
I didn't assume, the question contained "CPU-heavy", and the answer is relevant because it's a common misconception that you can make up for a slow language with parallelization, but you can't. If you've got a CPU-heavy task, you will find in practice that even using a lot of threads you'll be lucky to get even a 3x speedup on clock time, unless your problem is 100% strictly embarrassingly parallel. (I've tried a few…
Re: Goby: A new Ruby-inspired language written in Go
#39Hi, I'm Stan, this project's creator. I will explain your questions later. But before that please check out our sample site (written in Goby): http://sample.goby-lang.org/ And our plugin system, which is Goby's coolest feature: https://goby-lang.gitbooks.io/goby/content/plugin-system.htm...
Congratulation, and best wishes :) When things settle down, I would love to read an article from you about what it's like to launch a new programming language by the end of the 2010s. I'm under the impression that adoption is going way faster than in previous decade, when php, java and C/C++ were kings hard to revoke. But there's still a gap of few years between initial announcement of a language and it being used in…
Re: Goby: A new Ruby-inspired language written in Go
#40Hi, I'm Stan, this project's creator. I will explain your questions later. But before that please check out our sample site (written in Goby): http://sample.goby-lang.org/ And our plugin system, which is Goby's coolest feature: https://goby-lang.gitbooks.io/goby/content/plugin-system.htm...
Congrats on the release! I have one question: why Go? I would have expected Rust I guess, or OCaml or something.
I think Go does good work at concurrency support, so using it can save me a lot time dealing with concurrency.
And in my opinion Go is simple to learn, which can make others contributing it more easily. For example, this is only my second Go project, and most of Goby contributors haven't written any Go code before (of course I spent some time guiding them).
The last reason is that I think Go has a relatively big community and ecosystem. It'll be more easy for me to finding resources.