Rooby: a Ruby-like object oriented language written in Go
github.com
github.com
I have to ask, if your goal is "compilable Ruby", then...why not Crystal? (https://crystal-lang.org/ ) Seems like it accomplishes your goals, already exists, and is (as far as I know) stable and well regarded.
Nothing wrong with reinventing the wheel, and you may have very compelling reasons to write your own project. But it looks weird when there's already a well-known project in this space and you don't compare yourself to it. How are you better?
But it's good to know if the author's main issue with Crystal is that it <lacks important feature X> or if it's that it's not written in Go, which is a barrier for him to contribute. Both are very valid reasons to start a new project, but it's good info to have. :)
I was not implying a problem with that. I'll try to make that more clear by an edit.
It's a valid question to ask but I don't think anyone has to think that through and really have a good answer before creating!
Hi, Rooby is a new object oriented language I created recently (written in Go). It looks just like Ruby for now because it's mainly inspired by it. But I want it to be a new language and start developing its own feature when it gets more mature. So I'm looking for developers who also interested in this project, any help or idea will help me a lot.
There's little risk of that I think; even very strong and innovative languages struggle to gain traction. It doesn't tend to happen by accident.
And let's not forget that writing your own ORM, compiler, programming language, hardware driver, etc., (even blog engine!) is an amazing way to learn. But it is good to know whether a project is a hobby project to help learn, or a serious project aimed at getting traction, or what.
I don't know, C++ is pretty popular. ;)
Most programming projects start with the intention of the latter but usually end up becoming the former.
Linus Torvalds 1991
Most projects start out as a hobby / experiment and a tiny fraction of those become popular.
1. The goal of this project is to let people "Use Ruby-like syntax build Go-like performant api servers".
2. The "Ruby-like" means Ruby-like syntax because I am a Rubyist and I think using Ruby to develop project is fast.
3. Using golang is because I want to build a http server library upon go's http package, which I think is a very good choice for writing api servers. And of course I might use goroutine directly in the future.
4. Making rooby compilable is just a feature I personally like.
5. You can see this project as a experimental language for a relatively small goal (see the first point above) + I like writing Go, then you won't be so surprise why I created it and not using crystal instead.
6. I really didn't expect rooby would gain so many traction, thanks for all your opinions :)
I suggest renaming before too late.
It's like saying JRuby is a suitable replacement because it's fast and has microservice libraries - it's not exactly what you want.
If the author is not planning to support rubyspec, monkey patching, runtime magic, etc. then it looks like they are closer to delivering on their objective.
BTW I also took "nand2tetris II" on coursera and read "Ruby under a microscope" for this project.
I also read that book, and have a toy language I've been building, basically extending his ideas. I've looked through your code and much of is it nearly verbatim from the book (including code in your 'vm', or the monkey 'eval' package - it's not just the lexer/parser), though you (as I have), chose different names, or organized things differently, and added new features.
Yes, you've extended his ideas much farther, but the core of 'rooby' is pretty much the same as Thorston's language, 'monkey'.
Monkey is available with the MIT license, so it's fine what you've done. But, having been through the book and pretty familiar with the Monkey code (available for download here: https://interpreterbook.com/waiig_code_1.3.zip), I think it's disingenuous to say 'I read that book before this project..', which seems to imply that it was inspiration, rather than original source material.
On a positive note, it's a pretty cool version of Monkey.
Monkey is fundamentally a functional language, but rooby is totally an object oriented language. And the compiler, vm's internal implementation and bytecode spec, which are the 'core' of rooby, is not like monkey at all.
I would say I extended monkey's lexer and parser as rooby's. I feel sorry if I didn't give enough credit to Thorston, I would add reference to his book in readme. But the core is more a Ruby than monkey, so I don't think it's just an "extension" of monkey.
Please read the commits and you'll know how much work I did to make rooby, it's far more complicated than just "extend" monkey.
I don't know. I do know that many of these language projects are people's hobby projects. They like to pick a language they either know'n'love or want to get more proficient in.
Is it just because they both have "def" and "puts"? Cause that's just about where the similarities end :-)
FWIW, I've been using elixir for about a year now, and I think it's fantastic. I still use node & ruby for scripts (which can get complicated, but almost always for one-offs and asynchronous processing), Go for anything I actively want to share memory (though, started using Crystal, can't wait for threads), and OpenResty for any web proxy/middleware stuff. But Elixir is now the lions share for me and I find it fun and productive.
"Goal
I want to build a language that focuses on developing microservices. Which should be performant and easy to write. This is why Rooby has Ruby's user friendly syntax and is written in Go."
There is a wide range of languages to pick the one that better suits our style from. That's great and I like that people keeps trying.