It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I have learnt java. I can write in C/C++. Recently i have been developing web applications in java. I was planning to learn ruby. Are there any prerequisites for ruby that i don't have.
In terms of knowledge? No, not really. You'll just need to be prepared for when Ruby does things differently to C-type languages. You'll probably find your workflow changes too – Ruby doesn't have a compile stepº
This slide deck looks pretty helpful.
APIDock is an invaluable resource for learning standard libraries…
Get yourself a decent book (or try a neat online tutorial), and dive right in.
What do you want to do?
If you want to build web apps, rails is the obvious and most popular choice, but there are other, lighter options (like Sinatra) available.
If you're interested in using it to build desktop apps, then Shoes is a good cross-platform option to explore.
If you're using Linux or OSX (and you probably should be), you should use RVM to keep things tidy, and using Bundler with your projects will protect you from gem versioning hell on any platform.
º Technically, it could, but none of the major distributions compile Ruby to anything…
I haven't learned any computer language before save Basic and similar vendorscript trash. I have been developing no web applications at all. I cannot write in C/C++. Yet it took me less than a year to learn Ruby, start using Emacs, Git, Heroku, Bundler, MongoDB and all those things developers are supposed to use. I'm doing it for my job (writing a simulator in Ruby). You have nothing to fear, as long as you are a mathematician.
Have a look at these sites:
ruby learning
Ruby docs
Unfortunately, you already missed the most important prerequisite to learn Ruby: not having learned Java ;-)
This may seem a bit inflammatory, but at least in my experience with learning Ruby myself as well as what I have observed from friends, it seems indeed to be harder to learn Ruby if you have learned Java beforehand than if you haven't learned to program at all. In my personal quest to learn Ruby, the hardest thing was unlearning everything I learned from Java.
Smalltalk (or even better Self and Newspeak) are much better languages to learn before learning Ruby, as are Scheme and Haskell.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I'm a relatively new person to programming, I've read the first half of SICP until I thoroughly ingrained it into every cell in my body, took a class implementing basic data structures in Java, and made programs in Mathematica. But that is about as far as my knowledge goes, which is my problem.
I'm trying to play with Clojure via netbeans/enclojure and, to be honest, I don't know how to get anything beyond constructing functions and manipulating data structures in the REPL.
For example, I want to use Incanter for statistics stuff, but I don't know how to install it since I have never really used a terminal (I'm using windows vista), and don't know where to begin. When I search google, all the tutorials seem to assume knowledge with Unix, or they assume knowledge of how emacs works, etc.
I suppose what I am looking for is an online tutorial that covers the very basics of how to set everything up for a programming environment that doesn't assume previous knowledge.
Thanks,
Bryan
I'm relatively new to programming as well. My suggestion is that Unix or Linux are easier environments to program in. I know you said that you don't have experience with it, but you can pick up the basic commands in an afternoon. Learning basic Unix commands are going to be much, much easier than learning Java or Clojure, for example. The advantage is that once you have some basic familiarity with Unix/Linux then the rest of the environment becomes much simpler. This is a guide to Unix for someone who has never used it before:
http://www.ee.surrey.ac.uk/Teaching/Unix/
A quick way to try it out would be to download Cygwin, which is a Unix emulator that runs in Windows. You can install this and then try out Unix. Also, when you install Cygwin, you get a list of languages and text editors that you can install with it, so setting up that environment becomes fairly easy:
http://www.mcclean-cooper.com/valentino/cygwin_install/
I wouldn't suggest using Cygwin forever though, it'd just be a way to start out and see if you like programming in a Unix environment.
You can take some book that describes Clojure - for example, Practical Clojure first, and than - The Joy of Clojure - these books give you understanding of language.
About installing of plugins, etc. you can read on following page. Projects are usually maintained with Maven or Leiningen (I gave links to my articles). Dependencies, like Incanter are found through clojars, and put into project's files.
And clojure mailing list - good place where to ask questions...
Clojure is really fun, and managing the dependencies is not.
I think that using leiningen to create and build the project with its dependencies will help you skip to the fun part :) Leiningen from windows works just fine from what I hear though I dont see much advantage in trying to get away from the CLI. You should be fine sticking with windows and perhaps spending some time with the windows shell (or powershell) I hear a lot of good things about it.
ohh and another vote for the joy of clojure :)
If you are strict about using a windows environment, then I can recommend clojure box.
http://clojure.bighugh.com/
If you are flexible, I'd recommend setting up a virtual machine (with Virtualbox) and work in a *nix environment. Luckily, you may not have to do much since there are turnkey solutions with an editor, dependency management, and other tools configured and installed.
See
http://technomancy.us/150
Some examples include:
http://github.com/notifymd/vagrant-clojure-box
http://github.com/Seajure/emacs-clojure-vagrant
A caveat, though, is that these do seem to depend on gem.
As a bonus, if you are willing to spend time learning a *nix, then I can also recommend my dependency management software. You should be able to use any editor for this, but I'm only familiar with emacs. If you tell me what you use, I should be able to help you set it up.
http://github.com/bmillare/dj
I like to keep it simple. For Netbeans, you need to import the Incanter JAR files as they are merely Java libraries. Do a search on how to add libraries to Netbeans. Once that's done, then you can use Incanter in Netbean's REPL.
Once you feel like learning more, follow the other people's advice here and learn Leiningen, command line interface, Linux, emacs, etc.
Unfortunately, setting up a development environment for Clojure is just about the hardest part of learning it. There is no single, canonical way to do it, as shown by all of the other answers to this question.
Another option you might consider is LispCabinet. Despite its name, one of the options it provides is to set up a Clojure programming environment. A couple of advantages of this approach are that 1) it works in Windows, 2) its an Emacs environment, since a lot of the tutorials you find talk about how to do things with that editor, and 3) it makes it easy to explore and play with other, more traditional Lisps like CLISP and SBCL.
I too started with NetBeans and enclojure. I dearly love NetBeans for Java and PHP, but enclojre just doesn't seem stable. It's constantly breaking. So I gave up on it.
There are also plugins for IDEA and Eclipse if you prefer those environments.
But really, I recommend LispCabinet. You can see a slightly longer rationale on my blog at http://clarkonium.net/2011/02/getting-started-with-lispschemeclojure/.
I suppose this is two very closely related questions:
Everyone says to start with Why's (Poignant) Guide to Ruby, and I can't stand that book; what's another good starting point for an experienced programmer that has a more serious tone?
If I'm not the sort of person who appreciates _why, should I skip Ruby because the community will not be to my taste?
I'm currently rolling through Programming Ruby: The Pragmatic Programmer's Guide. So far I think the concepts are well-defined by the authors, and the examples provided help clarify any misunderstandings. The book is available for free online or you can order a copy:
http://www.ruby-doc.org/docs/ProgrammingRuby/
Update: More current version of book (Thanks bgporter)
http://pragprog.com/titles/ruby3/programming-ruby-1-9
The only problem with the online version is that it is a little outdated. I don't know Ruby that well yet so I can't say how much of the book is still valid in all cases, but the examples have worked for me so far when I run them. Note that the book available for purchase is up to date. It's hard to beat free, so be sure to check this guide out.
That being said, I don't think you should skip out on Ruby just yet. I've had a blast learning the language so far, and I'm looking forward to doing some full-fledged web development with Rails soon. At the very least give the language a chance; I think you'll find it a joy to work with.
I bought a lot of books learning ruby, the Well Grounded Rubyist was hands down the best.
And while we aren't really a community of _whys, we are a community of people who appreciate creativity and cleverness in code. If you are the sort of person who thinks there should only be one way to do something, and that way should be the clearest and most straight forward possible, python is probably for you. If you are the person who likes to push the language as far as it will go to create interesting and clever APIs, ruby is probably for you.
The Ruby Programming Language.
Programming Ruby would be my choice. It's also known as the Pickaxe book because of the cover:
It's a great introduction to Ruby. Why they still have the huge API reference in it in this day and age escapes me, though. It makes it thick as a brick, which is its only fault.
You can also find it online, although I think it's the first edition, which is well dated: http://ruby-doc.org/docs/ProgrammingRuby/. The third edition is the one in print now, it was updated just months ago and covers Ruby 1.9.2, which is the latest version of Ruby at this time.
I don't particularly like _why either. He created some great libraries, but I can't stand the Poignant guide, nor any of the talks he made. You don't have to like him, or be like him to belong in the Ruby community.
Ruby Koans are great for learning those small things that make Ruby unique.
It's basically set of excercises that show you how things work. Each excercise is in form of a failing test, and you have to make sure it passes. And they're fun! :)
If you're going to do them all, I also suggest enabling autotest, so you won't have to run them manualy. This article explains how.
Not everyone says start with Why's book, for instance, me.
Here's a quick list of my on-disk Ruby books and references. You can search for their individual titles on the interwebs. Some are commercial, and some are free. I linked the ones that are part of an app's documentation that I saved as PDFs so I'd have them on my laptop.
Agile Web Development with Rails
Programming Ruby
Ruby Best Practices
Sequel cheatsheet
Sinatra Book
The Ruby Cookbook
The Ruby Programming Language
The Ruby Way
The Well Grounded Rubyist
Why's book is worthy, but reminds me of Hunter S. Thompson trying to write a programming book, complete with Ralph Steadman drawings, which really disturbs me.
Also, don't overlook using ri, which is the on-disk reference to Ruby's libraries and gems. Also, the core library and standard library docs are really useful.
I was in your position this summer. Why was not for me, but I did find an excellent online resource: http://railstutorial.org/. It is actually for learning Ruby on Rails, but you can use it to learn Ruby as well. I'm not very experienced but I believe you can be part of the Ruby community without appreciating Why :-).
http://railsforzombies.org/ is a nice one , although it is not a book
Chris Pine's Learn to Program It's very straightforward. I started learning right away. It was very encouraging.
My colleague has written an excellent post summarizing starting points, books to read and paths to follow when learning ruby at http://www.jasimabasheer.com/posts/meta_introduction_to_ruby.html
I'd recommend taking a look at it, it has a wealth of information.
To add more info to the answers above, not really a book to learn ruby but a some companion resources for the learning process:
Ruby Language Quick Ref
Essential Ruby Refcard
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I have just bought a Ruby on Rails book, but I am going to learn Ruby as much as possible through the internet first.
The first thing I need to know is, what is Ruby and what do I need to run it?
Is it likely to be installed on my Linux/Apache server or will I need to have them install it? Is it even a web based language or is it like Java or C, any help, advice, tips all gratefully received, especially if you can point me to a good tutorial to start me off.
I would take jaunt over to the Ruby website - http://www.ruby-lang.org/en/ and begin there. Personally, I found this site to be a good introduction to Ruby - http://www.techotopia.com/index.php/Ruby_Essentials. There is a site where you can run the code without even installing it - http://tryruby.org/. I think this should allow you to get to know the language well enough to decide if you want to go any further.
what is Ruby
A programming language.
and what do I need to run it?
A computer that has Ruby installed.
I'd start with Ruby-lang.org (including the tutorial in the link).
Beyond that, IMO another excellent activity to learn Ruby is the Ruby Koans, which help you learn idiomatic ruby through fixing failed unit tests.
Book-wise, for Rails I had good luck with Head First Rails. I'm currently chewing through The Ruby Way, which has been great for learning more idiomatic Ruby.
If your interest is in learning Ruby on Rails, and are a total beginner, you would do well to start with Michael Hartl's http://railstutorial.org/
It is the best one-stop resource for a newbie; and it is a much efficient way to learn rails than to go about learning stuff on the internet.
In addition to teaching Rails framework, the book teaches the reader about the tools essential to existence in the Rails Community, such as Git, GitHub, Heroku, RubyGems, Test Driven Development with RSpec. There is adequate treatment of relevant topics required for becoming a Rails developer - HTML, CSS, JavaScript, and the relevant parts of Ruby language. And there are suggestions for further reading to advance the skills in each of these.
The book begins with a chapter with easy to follow steps for installing all relevant components on various OSes, including Linux.
When I learned Ruby and Rails I started with Pragmatic Programmers' Agile Web Development with Ruby on Rails (1st edition) and worked my way back into Ruby from there. If I had it to do over I would have picked up Programming Ruby (also from Pragmatic Programmers) at the same time--as it was I picked up bits and pieces of Ruby as I went, and didn't really sit down and learn Ruby for about a year, even though I was creating Rails apps for production.
These days I think Michael Hartl's Rails Tutorial site, already mentioned, is the best way to go.
In addition, Mr. Neighborly's Humble Little Ruby Book is an overlooked but good introduction to the Ruby language. It's available as a free PDF.
Learning Ruby the Hardway is a good book to start with
http://ruby.learncodethehardway.org/book/
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
Before I go ahead and invest time checking out RealBasic (now Xojo), I'd like some feedback from people who have moved on from VBCLassic and use the Windows version of RealBasic to write professional business applications.
Is the language good enough, are there enough third-party add-on's to solve the inevitable shortcomings, etc.?
Thank you.
I was never a big VB6 developer, but I have used VB.NET quite a bit. REALbasic is a great substitute for creating desktop applications, but there are some things it cannot do, such as create DLLs or COM objects.
The REALbasic language is significantly more robust than VB6: it's fully object-oriented, has introspection/reflection and even has some dynamic capabilities. The IDE is a lot nicer than the VB6 IDE. But VB6 is 10 years old now and REALbasic is updated regularly, so it ought to be better.
There is a weakness in the 3rd party control market. You won't find anything as good as the grid controls available to VB6, for example. Reporting has been a weak area until recently. REALbasic itself now includes reporting capabilities and there are several 3rd party reporting tools available.
I've created quite a few professional business apps for Windows using REALbasic, but I do all my development on Mac OS X and use VMware Fusion and REALbasic's remote debugger to test and debug on Windows XP/Vista/7.
Update: As of 2013, REALbasic is now known as Xojo (the language is the same, though).
The answer to your question is YES. RB is Great for Desktop Apps. YES there are a bunch of third party add in, however, you don't really need them. You can do everything you want in RB. If you do want to benefit from 3rd Party products (why reinvent the wheel), there are plenty, and the support group is awesome.
REALbasic is free on linux. Install a dual boot system on your PC. Ubuntu would be a good bet here.
I've found Ruby to be very attractive; I like the fact that everything is an object and its syntax is very appealing.
I was hoping that it would gain a lot of popularity this year, but I don't see lot of activity in Ruby.
For instance if we take the number of tags added in SO there are only about 700 questions tagged as "ruby." This may be because:
Ruby is so easy, noone has any questions.
This site attracts more from the.Net community and Ruby developers ignore its existence.
There are not as many Ruby projects as there projects in other programming languages.
Other resources show Ruby is not as popular as other programming languages.
What reasons do you think are behind this?
Links:
TIOBE Programming Community Index for October 2008
StackOverflow tags
Ohloh
You're mistakenly attributing something to Ruby. RubyForge alone reports over 1,000 open-source projects, let alone all Ruby on Rails apps that exist, and the projects hosted on Github, Sourceforge, and elsewhere.
Unless you spend a lot of time on other sites (Reddit is a good example) you will be unaware of just how .NET/Oracle/SQL Server/etc.-centric Stack Overflow is. (I use a Greasemonkey plugin to hide a broad swathe of these Windows- and "Enterprise"-centric technologies, because they don't interest me.)
I actually had the complementary experience to you: I started spending time on Stack Overflow, and had something of a "woah" moment when I realized just how many people spend their days futzing with ASP.NET. That's not a world in which I'd spent any time, so I had underestimated its size.
Some parts of the internet (e.g., Reddit) are primarily concerned with free software and its associated languages: Perl, Python, Ruby, PHP.
Some parts (e.g., Lambda the Ultimate) are concerned with more esoteric languages: Haskell, Lisp, Joy, Coq.
Other parts (e.g., Stack Overflow) are more mainstream: Java, .NET.
You cannot draw any conclusions about the popularity of a language by sampling just one of these 'pools'.
Ruby had its moment in the sun in 2005 - 2006 when Rails was making its way through the community and Apple decided that it would package it with OS X. So to pick 2008 as the year for Ruby to gain a lot of popularity seems amiss to me.
The Ruby language itself is, as you stated, very attractive. Its syntax and OOP model are what make it a hit with developers. You get equivocally the same product as you would with another language, but with what feels like less time wasted on internals.
Rails is really what I think is holding Ruby in the mainstream right now, more or less because of its ease-of-use and database handling. Web developers love it for that.
If you really want to see sites that have a lot of Ruby(on Rails) chatter on them, you could check out http://refactormycode.com or http://pastie.org. Those websites are built on RoR and are used very frequently by Ruby(on Rails) users.
Regardless of any real numbers, one thing I do know: When I go to look for a Ruby library for something I'm working on, I find something satisfactory over 90% of the time. And for some of the remaining 10%, it isn't that hard to write something myself. I do believe that 90% figure will rise over the next few years, too.
If I get what I need, I don't really care whether PHP or Python or C# has sixty bajillion applications and libraries written for them. :)
I find Ruby very attractive in several ways, but it has some issues holding it back.
The biggest I think is that Python already covers much of the same ground, has a larger library of projects, and thusfar better performance.
The other main problem I've had is also the thing that keeps it so popular: Rails. I think there are a lot of people that don't even think of Ruby as a standalone language. While I appreciate that Rails is supposed to be pretty great, it is not anything I deal with, and thus I get annoyed at having to wade through so much discussion of Rails to find an answer to a question in Ruby as a standalone language.
One last thing that has made me skittish about it is the 'more than one way to do it' philosophy it shares with Perl. I was not a fan of that.
It is really a matter of their already being a few hammers around, and Ruby's main distinguishing feature that most people tout currently is Rails.
There's a lot of activity with Ruby in web-based development. You just have to join the right communities and lists.
I don't think it will ever be as popular as C/C++ (because of the existence of already deployed code and a developer base) or Java (because I imagine it isn't quite as easy to understand at first).
2 - Not many rubyist come here. I you look there is a TONNE of Ruby projects. Just not here so much.
Check out what is happening on Github, rubyforge etc. I mean, Rails for starters is massive.
Here's my theory:
Industry Adoption - Although ruby is used in the real world, other languages (e.g. Java, C++, C#, etc.) have been accepted as "safe languages". No one ever got fired for picking Java, or C#, but CIOs' eyebrows have been known to raise when ruby is mentioned.
Talent Pool - When selecting a language, you want to know that you can find a good pool of talent. The more popular the language, the larger the pool, and the greater number of experts (statistically) (statistics do lie 50% of the time ;) ).
My hopes:
I believe the ruby talent pool will grow over time and the productivity offered by ruby will present a huge incentive for its adoption.
More and more colleges will teach it.
Please don't take TIOBE too seriously. Checking search engines for instances of "language-name programming" as some sort of indicator of popularity isn't very meaningful.
More than likely because it is younger than a lot of other languages and, on the web side of things, isn't as easy to implement as PHP and Python. Ruby has also gained notoriety as a web scripting language due to Rails which may be turning off some developers who are looking for client-based languages to work with.
Is Ruby not popular? I think it is but it hasn't really reached a critical mass yet to be widely accepted.