Discovering Languages
Some time ago (a few years back), while I was working on a small CRM-like project based on PHP, I had an idea about an ERP-related software that, in very few words, has to do with writing enterprise management applications (for instance an accounting application)1. My first real concern was how would such a beast would be implemented and more importantly on what platform?
Well, long story short (about three years long), I started considering some of the languages I had some experience with, and which I thought would provide a solid architecture as well as good performance for an enterprise-level application, as follows2 (in a somewhat chronological order):
- PHP (don’t shoot me, I tried to be as open-minded as I could; anyway there are too many reasons for which I discarded this one, and to be honest, considering the purpose PHP was intended for and the way it is implemented, I think it will most likely never be capable of properly supporting enterprise level applications - but I may be wrong);
- C++ (impecable performance, but had to do everything by hand, and I don’t have a death wish);
- D (DigitalMars) (this one was *VERY* appealing, having the speed of C++ and the productivity of Java, though it had a few disadvantages: the dmd compiler backend was not opensource even though free, productivity is *MUCH* higher than C/C++ but it’s not as high as that of interpreted languages; also documentation, libraries and support are limited);
- Perl (very good option, however I was never comfortable with Perl’s syntax, and following platforms seemed to have greater potential for developing elegant architectures - especially the fully object oriented ones);
- Python (this one was also very cool, and I have to say that in the end this was surpassed by Ruby by pure coolness - such as in-lining C code directly into Ruby code);
- Java (almost won the prize!,… but didn’t; it lives in a world of its own; Java server, Java GUI, Java everything; after 4 months of coding a charting javabean I felt the development was too slow and obtuse: in my opinion it took a very precise architectural design to make an application that was extensible and flexible to change; I know that Java enthusiasts will say a lot of things - including the fact the Java is used for almost all major ERP related softwares out there - but I felt it promoted an old and conservatory view of things - so sue me!);
- Ruby (may be the winner! Ruby was entirely new to me and even though it proved to be slower than most others it’s fully object oriented promoting all the concepts behind a scalable and flexible software design, very clean syntax, great tools to work with all the trinkets, supports a wide range of server/balancing/threading implementations, and best of all it allows for pure C code in-lined into ruby code - RubyInline; in my opinion this is brilliant: Ruby = great architecture, C = great speed; Ruby + C = drooling! But that is not to say that the implementation is perfect; one can not cross over completely and transparently between Ruby and C and what’s more you only get to write in C and not C++ which is a drawback, but still…).
So far I am inclined to say that Ruby is what I’m after but I’m not yet convinced. I still ponder at D (number 4) as a viable option. Both of these have advantages and disadvantages, but I’ll probably discuss that in another post. So far let’s do some research on the new kid on the block… Ruby!
I usually take great comfort in having a good cheat-sheet at hand or even a good tutorial (although a good book usually is better than both). That is especially true when I’m trying to learn a new programming language.
Following is small list of materials I used to get started with Ruby. I felt I should post this because I was not very satisfied with all the Ruby documentation listings and/or sites out there. Too many and incoherent (many recommend directly going from trying Ruby on-line to the Programming Ruby Book :( ). So, the exact steps I went through (in chronological order!):
- Try Ruby! [online tool] (excellent for absolute beginners)
- Mr. Neighborly’s Little Humble Ruby Book [PDF eBook] (requires free registration)
- Ruby Course [PDF/PS presentation] (great to be used as a cheat-sheet even though not intended as such)
- Ruby Language Quick Reference [PDF cheat-sheet] (print this one)
- Ruby Standard Library Quick Reference [PDF cheat-sheet] (print this one)
- Ruby Cheatsheet [PDF/PNG cheat-sheet] (a good alternative to points 4 and 5)
- Programming Ruby (a.k.a. The Pickaxe Book) [online book] (good reference when starting to write real programs)
Observe that I did not go into talking about Ruby on Rails (which - for newbies - is actually a framework written in Ruby). I will try to treat that subject (again from a beginner’s point of view) after a while. Until then here are some sites with interesting Ruby documentation links:
- Ruby-Doc [online list] (extensive documentation website)
- Ruby Home Page [online list]
- Little Book Of Ruby [PDF eBook] (may be an alternative to point 2 above)
- Learn to Program [online book]
- Free Ruby Tutorials [online list]
I’m sure there are many more documentation materials out there and hopefully this post will be completed to a point where it will contain a more or less recommended way (or at least one way) of starting to learn Ruby. So you can add to this any material you would like to recommend for Ruby beginners.
Enjoy!
- I will not go into the details about this software (since I am trying to keep it something of a secret until the first release). ⇑
- I ask you not to start another (biased, pointless and bitter) flame war about which language is good (or better) for which purpose. This is only the summary of my experience regarding the goal I had in mind, so try and restrain yourselves… ⇑
Enjoyed this post?, why not subscribe to the RSS feed!
August 10th, 2007 at 8:42 am
[…] while ago I posted an article describing my quest for the right language to develop one of my projects (a development platform in […]