Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Like many others, I always hold true that "A pure compiler will never exist for Ruby because the language is far too dynamic for a static compiler to work."
But I recently stumbled upon these:
The Crystal programming language at GitHub
Statically compiled Ruby
Both projects seem to be very interesting. They could give us the speed of a native-compiled language (and the often commercially-required, obfuscated code of a compiled language) while keeping all (or most) of the elegance and flexibility of Ruby. Add a good support library (or, more likely, the possibility to access the existing C++ libraries) and you can easily understand why this stuff could be interesting.
Has anybody tried the Crystal language?
(I didn't yet, because of compilation problems with ruby-llvm)
Which was his/her feeling about it?
Do you think that, given those design choices, would it be actually possible to develop a native-code (machine-code) compiler for Ruby (with a reasonable effort and in a reasonable amount of time)? Would it be meaningful?
I'm the developer of crystal. Currently not everything is implemented from the bulleted point list. In fact classes were just started to be implemented.
I really like the idea of it though. But I need to think more about how to implement it. And I also need more time, hehe.
The second article has a completely different approach because it won't introduce a new language: it'll just try to compile a subset of Ruby, or maybe will be compiled to native code but still allow some dynamism with performance costs (I talked to the author of that article some months ago).
My feeling toward both approaches: I really with it could happen. We need a fast language with an elegant, readable, joy to use syntax and library (like what Ruby offers).
I'm the developer of Foundry; the second article is mine.
A more recent article on the same topic would be "A language for embedded developers"; or you could also track development progress by subscribing at foundry-lang.org.
Please note, however, that my project is commercial, (at least initially) not open-source, and is primarily focused on embedded development. You could still use it on desktops or servers, of course.
I'm also one of ruby-llvm maintainers; please report the problems you've encountered as bugs on the project page.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I'm making an e-commerce website which deals with medicines, big number of them. I can't choose between Ruby on Rails and Node.js. Can someone tell me which would be more helpful?
I just need some opinions.
Thanks
You'll mostly get biased and opinionated answers to this question.
Both are very good choices, but you should pick what you're more familiar (or if you plan on learning, what you're more comfortable with). Also, you need to think about the platform you'll be deploying on: can you install additional software (like libraries) on it? Can you use gem (Ruby) or npm(Node.js) to install additional requirements you might need?
It's all very relative to you. They are both excellent tools.
Note: Following answer is probablydefinitely opinionated.
I'd say Rails, because it could (in my experience) be faster & easier to work with.
Performance-wise, I think node.js might be slightly better, but unless you're going to have a lot of traffic, it shouldn't matter.
Also, don't forget there's always Unicorn (MRI/CRuby) or Puma (JRuby, Rubinius), and combining those two with nginx, and you're on a horse! Well, on a puma or on a unicorn, technically... So, that would solve your performance issue, if one were to occur.
Also, Ruby (it is humanist, afterall) is a much more elegant language than JavaScript , although, you can get around its subjective uglyness[1] with CoffeeScript.
It comes down to preference, in the end. I love both, but I slightly prefer Ruby than JavaScript, and I also slightly prefer Rails over Node.js.
[1]: I don't find it ugly personally.
From a technology standpoint, both are very capable. It's going to be down to your preference and situation as to which one you choose.
However if this is a commercial project then I would say that the undoubted winner is going to be ruby. It's more mature than node and so enjoys better tooling, better "google-ability", and you are going to find it far easier to find staff that have experience developing and debugging it. These considerations are going to be far more important for most projects than a pure technical comparison.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I'm a IT student in the university, been programming in Visual Basic for a great time. Learnt Java here and C# by myself(really analog to Java). I am also a music producer, and I want to start working on a large project, just for myself, for fun and for expanding my knownledge.
I want to make a DAW (Digital Audio Workstation) like Cubase, Reaper or Fruity Loops. Starting from small things like a Sound Sequencer. I already have some flow diagrams made.
I want to start coding it as soon as possible, but Java is an interpreted language as SuperCollider and Python, making it slow for processing. Visual Basic is not an option, I loved starting with it, but I don't like it anymore. I don't know if I should use C#, I, as a Linux lover, don't want to marry with Windows just because I need to use Visual Studio. I know there is Mono.
What is a good language for me? Could it be something:
Fast processing, non interpreted if its possible
Able to make my software crossplatform. Without the need of rewriting all the code, maybe just implementing some methonds for different systems.
With good documentation.
I know my question may be a little complicated, even can be seen as inmature. But I need help choosing a new language to learn.
Thanks for taking your time reading this. Every answer is appreciated.
Take a look at Juce, which is written in C++.
I know that one very popular DAW is written with Juce. C++ has the added bonus that it is powerful and portable.
Extempore is fast and very cool. It's a pretty new project, but it's been used for some very cool things.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I was planning on learning a way to create my own programming language and I wanted to know what language to write a compiler with. C? C++?
Windows Vista and newer come with the .NET Framework installed by default. That in turn already provides a compiler for the .NET languages (most notably C# and VB.NET). It's the only provided language you could possibly write an efficient compiler in. Other languages are VBScript and JScript (via windows Scripting Host) and batch files, so nothing you'd really want to implement more complicated stuff in.
Depending on the complexity of the language you want to create, a C++ implementation may provide better performance, though. No offense, but you don't quite make the impression that you really know how to implement a compiler for a new language. Greg Hewgill's link should give you some starting points there. The thing is, creating a new (formal) language is anything but a trivial task. Yes, the tools to do it are free, and so is the knowledge. But you should really already have a solid understanding of the programming language you want to write the compiler or interpreter in before even attempting to do it.
I suggest you use C#; DLR is great for this purpose.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I have a specific goal in mind: I want to make a to-do-list-type app for my group at work to use. My key requirements are to have very easy entry and removal of items, as well as work in an OS X environment. The first requirement is because anything that is easy to use is more likely to be used, and the second is because that's what we're on. The application will need to be live-updating among multiple users, but authentication is not a requirement. Distribution of the same app to other remote teams is a plus, but not required. Just a shared to-do list, with task-specific things to be added. It doesn't have to be a web app; native is great but the world at large seems to be more and more web-related these days.
I've been looking at a number of technologies such as Ruby (and Rails), PHP, MAMP, Cappuccino, FileMaker, Trac, and a few other options - but the paradox of choice means that I don't really know what is "best" to use. Looking at that list it is obvious that I don't really know what I should be looking at, let alone how to decide on things. I'm drowning in a sea of opportunities and a surplus if "good enough."
I am a somewhat-experienced with Objective-C and Cocoa, but excluding Cappuccino, those skills don't directly relate. I'm rather excited to learn new things, so my existing skill set is not especially important.
What sounds natural for this? I'm fully prepared for the fact there is no "right" option. Who here has a favorite methodology? What's a good application stack that has proven itself in rapid development time and future flexibility?
TL;DR: I want to make a concurrently-updated todo app for a small work team. It specifically does not need to be feature-filled, but should be "simple" to build and maintain. What is the right tool for the job?
EDIT: My team does nothing related to software dev, but my own personal mindset is that of a software dev. Part of the reason I am not afraid to roll up my sleeves and learn something new is a matter of personal development.
I would highly recommend that you use an existing solution rather than build your own. Teams building their own management software has a long history of sucking up lots of time, energy and talent for little benefit.
As for which solution you should use, it depends on the kind of work your team does. If they do software development, as I suspect they might based on your question, Trac is an excellent option.
Based on your requirements, IMHO, the GoogleTask is the best one for you. If want desktop (not web) app, check Things (commercial).
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
I am a CS student and I have a compiler project this year.
I want to know how to manage my project with my three partners.
I know that the compiler has many level and process, and I want to make use of these features to mange my project.
Thanks for any tips/pointers/resources you can provide for me to start.
You haven't really specified what it is that you are compiling, so it's a little difficult to make specific recommendations.
If you're doing something novel, I wrote a blog post a couple of weeks ago that has some specific things to consider:
http://www.plsadventures.com/2009/09/why-programming-language-design-is-hard.html
If it is a pre-existing language you are compiling, then I would work to generate a decent test corpus, and consider using test-driven development to manage your progress.
As you mentioned, there are some obvious components in most compilers that are relatively discrete. I would consider documenting the interfaces that connect these components. For example, if one person is writing the lexer and another is writing the parser, then ensure that you have a list of tokens written down somewhere. The format for your parse and/or abstract syntax trees should be defined and written down so that anybody working on optimisation or code generation is on the same page.
Above all, tests really help this kind of integration. You should be able to build these components separately and put them together, for the most part.
You should use a DCVS like Git or Mercurial, so each of you can develop individually while it's still easy to merge changes.
Next, you should define test cases to know which features you'll need and how you will know that a feature works.
That should help to figure out different areas of the project which don't overlap too much so each member of the team can work without stepping on each others toes.