Domain: rubycentral.com
Stories and comments across the archive that link to rubycentral.com.
Comments · 128
-
Re:Python
I'll oppose that. Instead start right here http://tryruby.org/levels/1/challenges/0, and or here http://www.ruby-lang.org/en/documentation/quickstart/ and then move onto here http://www.rubycentral.com/pickaxe/ and here http://ruby.railstutorial.org/ruby-on-rails-tutorial-book.
Ruby has to be the best learning program, from the interactive Ruby shell, with immediate execution of lines of code to very compact and easy to read code.
One click in a browser and he can be coding in Ruby in seconds.
-
Re:As a longtime(past tense) PHP developer I can s
Well, theres why's (poignant) guide to ruby which is licensed under creative commons. So it could be that somebody made a book on demand out of it. Personally I used "Programming Ruby" of which the first edition is also available online. "Rails Recipes" is a very good reference book for repeating patterns using Ruby on Rails. Rails though also has it's annoyances so I am trying to find an excuse to build something with Django and Python.
-
Re:If not PHP, then what?
Ruby does have tainting and it's been there for a while (i cba to find a resource dating further back than 1.6 -- that's 2000-ish?).
http://www.rubycentral.com/book/taint.html -
Re:Perl Out, Ruby In - Thank God
Ruby has a lot of work in the library department, and a HELL of a lot of work in the documentation department.
I never really understood the documentation complaint about Ruby (I use Rails, mostly). Most everything I need to know about the core libs is in http://www.ruby-doc.org/ and http://api.rubyonrails.com/ is nearly complete. It is no worse than the PHP online documentation. Actually, it is better. I find RDoc much faster to search (CTRL-F). And you can get the first edition of the book, Programming Ruby: The Pragmatic Programmer's Guide online at http://www.rubycentral.com/book/ to get more in depth knowledge of how Ruby works. The IRC channels are very active and helpful (I help lots of people there myself). There is a great mailing list/form at http://www.ruby-forum.com/forum/3 And there are a million Rails tutorial out there. I learned Ruby/Rails to a point where I could do useful things in like 5 days without any prior exposure with no hassle. So what is missing, exactly?
-matthew -
Re:Perl Out, Ruby In - Thank God
-
Re:Future of Java without Sun?
Java will never lose to Ruby / Python / PHP, at the least because Java is faster
I don't much believe in performance, and in the vanishingly small cases where it matters, any other language can dive into C callouts, anyway.
and allows fast multithreading programming on many processors/cores - which Python/Ruby don't allow
Ruby Threads - look familiar?
but PHP is too specialized, and I am doubt very much that it is substantial threat to Java.
Not sure what you mean "is too specialized" - virtually all java is used for these days are web apps. Which is php's bread and butter. -
Re:Getting started
It should be noted that the book you linked is available for free online at http://www.rubycentral.com/book/ It's very good for learning the language.
-
Re:Getting started
I would suggest 'Programming Ruby'. The first edition can be read online here: http://www.rubycentral.com/book/
Ruby is a wonderful language that is very flexible. I came to it from Python. I enjoy using both languages, but Ruby has replaced Python as my 'home' language. I don't do web devel.... there's much more to Ruby than Rails :) Ruby is an excellent Windows or Unix sys admin language or a great general purpose programming language or a scientfic/computational language as well. Rails simply demonstrates Ruby's power and flexibility.
Ruby will be around for a long time. -
Re:Getting started
I recently finished the Pick Axe book 2nd ed and would highly recommend it. Like one of the other replies notes, it's a Ruby book, not a Rails book, but I agree you should learn Ruby first. The first edition of this book is available for free on the web at various locations (eg: http://www.rubycentral.com/book/). I started using this several years ago but got sidetracked. The recent Rails fuss has grabbed my attention again, so I finally sat down and dug in. It's now my language of choice for most programming tasks (quickly replacing Perl altogether for my needs). I've yet to do any Rails work, but have a few personal projects in mind that might be good testing for it. Ruby definitely stands on it's own as a language, Rails is just a beautiful use of a beautiful language.
Cheers.
-Ben -
Re:Getting started
The book is Programming Ruby. That's the second edition.
The first edition is available online. You don't need to buy the second edition unless you are really serious about learning Ruby. The first will do for evaluating the language and playing around with Rails. And if you really want to learn Rails (after going through the tutorials), Agile Web Development with Rails is the book I recommend. -
Re:Getting started
Programming Ruby - a free ruby eBook - http://www.rubycentral.com/book
-
Ruby all the way
I just recently got into Ruby, but I wish I would have started learning programing with it. Its got the OOP learning curve to get over, but the way that nearly everything is an object in Ruby gets you over that pretty quick. Besides, its best to get the whole OOP thing done with so you can learn good programming. Ruby has been useful to me in the common areas I deal with - shell scripts for sysadmin tasks, graphical applications using various toolkits, and web application development.
Ruby also gives some great tools for beginners to the language, or programming in general. Irb, the interactive ruby shell, gives you instant feedback while trying out new(-to-you) features of the language. Erb, embedded ruby, is great for the web, but also allows you to create templates for non-web files. All without needing to learn another templating language. And while we're on it, Erb allows you to move your programming skills onto the web. Most newbie programmers who ask me about programming either don't understand the difference between classic applications and web-apps, and are mostly interested in the latter. By giving them a way to immediately see the results of their programming efforts in a familiar way gets them deeply interested in expanding their knowledge.
While there isn't a flood of books and online resources for Ruby, there is one coming. The current market is thankfully filled by such excellent texts as the Pragmatic Programmer's Guide (maybe if I pimp them enough they'll hook me up with some free books) and the entertaining Why's (Poignant) Guide to Ruby.
Ruby provides the perfect mix of logical syntax and language features to make it a great beginners language. Starting with Ruby will give an up-and-coming programmer the skills needed to work with OOP and create clean, beautiful code.
I haven't even talked about Rails yet... and I won't. It rocks, thats all I'll say.
-
Re:Now is the time...
I was kind of tired of trying other tutorials (mainly from the internet) as I fouind them incomplete and sincerely wanting.
Did you see Programming Ruby: The Pragmatic Programmer's Guide, by Ruby's creator Yukihiro Matsumoto? It's a freely-available transcript of a paper book, and I'm halfway through and finding it good going.
Now I'm only playing with Ruby at the moment, so I couldn't say how the examples and sections stand up to heavy industrial use, but if seems an excellent introduction and the tone and flow are both good! -
Commodore PET with the chiclet keys...
... My school got like 3 of them when I was in kindergarten, and I started learning BASIC then.. It's taken a lifetime to unlearn!
Seriously though, after the PET arrived, and my folks saw how much fun I had making it do things, they got a pension loan and bought a newly-released Apple ][+.. They even let me upgrade it from 16k to 48k, then they let me install the Disk ][ and Micro-Soft 64k card (for integer BASIC), and I got to go to summer computer courses at a local community college when I was 10-11.. I'm a member of the generation between those who wrote their term papers using typewriters and those who've never seen a typewriter outside of museums or media... ScreenWriter and C.Itoh escape codes ftw!!!
Enough reminiscing and procrastinating, back to the mines... -
Ruby and watchdogsI suggest you compile your C++ library interfaces as Ruby modules. (You could do the same in Perl but XS is harder). Then you'd get the benefit of your libraries with the resilience and faster development of Ruby. Ruby also has a wide range of test modules to help you with test-first development.
Since you plan to decouple your various processes, why not use a single "watchdog" process to oversee the others and restart if necessary? This is a commonly used technique in high availability environments. You can guarantee the watchdog is running by putting it in a cron job, whereby it continues running if it can't see itself in the process list.
Hope this helps!
-
Ruby's Quite Nice, Really
I can understand why he noted Ruby as a primary contender with Java. I've been learning it from an online primer, and it seems quite flexible and elegant. Java, on the other hand, is much too bloated.
-
Re:If you want to read it..
Nice! Serves me right for using the Ruby 1.6 docs.
As an aside, are there proper references for Ruby 1.8 online? I have the Pickaxe book, but I'd much rather have something online and searchable.. -
Check out Ruby on Rails
Why not check out Ruby On Rails?
Websites
RubyOnRails - http://www.rubyonrails.org/
Ruby general
http://www.ruby-lang.org/
Programming Ruby book - 1st edition online.
http://www.rubycentral.com/book/
Ruby Code and Style Online Mag
http://www.artima.com/rubycs/index.html
Small article on how to program in ruby.
http://www-128.ibm.com/developerworks/linux/librar y/l-ruby1.html
RubyOnRails vs Java for web development efforts
http://www.relevancellc.com/blogs/?p=92#comments
Another comparing Java and Ruby for Web Efforts
http://article.gmane.org/gmane.comp.lang.ruby.rail s/24863 -
Re:Yes, very
-
Re:Documentation
Try the one-click installer for Ruby from http://www.ruby-lang.org./ If I remember correctly, it comes with a
.chm version of the Programming Ruby book, which you can browse at http://www.rubycentral.com/book (or buy the second edition, which is nicer). -
Re:Question for all the coders out there..
> So basically you take issue to features and paradigms Ruby people espouse?
> IE: that it is ok to take several well defined interfaces and then mix them
> creating an interface that is defined nowhere to acheive whatever capability you need.
I don't think you are doing what you think you are doing. I just looked at some Ruby tutorials, and to my untrained eye those mixins are nothing more than multiple inheritance. I wasn't able to figure out what the difference was, but you definitely have to define a class to mixin (Ruby calls them Modules, but I see no reason to differentiate them from classes. It must be a terminology thing. In C++ these things would be classes), and the syntax for mixing is the same as specifying a base class in C++. The tutorial mentions that there are "problems" with multiple inheritance that this supposedly avoids, but fails to mention any of them.
The capability to "extend" the class is basically the same thing as defining a derivative class and creating it with a copy constructor. Ruby seems to be simply replacing the vtable for the class with that of the new class with the extensions. I shudder to think that an object I gave some function can suddenly become a totally different object, as if I gave it a lamb and got back a wolf. I don't know how you can stand debugging such astounding transformations. If you can, you must be one hell of a wizard; I would never allow such unclean things in my code.
Since this discussion is suddenly all about Ruby, I guess I should look at it a bit closer. I've looked at http://www.rubycentral.com/book/index.html for examples and explanations. Feel free to suggest others if you disagree with my conclusions.
The language doesn't seem all that different from C++ in substance. All the OO capabilities are there, and aside from the quaint notation the code looks pretty much like it would when translated to C++. It is as if the designer really hated C++ and decided to do everything as differently as possible. That must be the justification, since I found no features that I would classify as improvements over C++.
There is even the ironic requirement of using C to extend the language, which is truly a laughable point considering the C++ can be extended using C++ just fine.
When I look at those examples, the words that come to mind are "sloppy", "wobbly", "tacky", and a few other unprintable adjectives. To a C++ person the lack of structure in the code is acutely painful. (From what you've said, that might be what you find so appealing) I'm not sure exactly what is creating that impression, the feeling of a pile of logs where one expects a building, but this problem alone is enough to instill a permanent deep aversion to the language in my mind.
> It is sort of funny you mention Martin Fowler: he really likes Ruby.
I don't base my opinions on the opinions of others. If Kernigan and Ritchie themselves proclaimed C to be evil and Ruby to be the pinnacle of quality, I would simply shrug, mutter something about how misguided they are, sigh and go back to coding. In C++, of course.
> It is possible to pretty easily determine whena nd where things are being
> mixed so you can determine: in code where the interfaces are being mixed.
> And at run time you can determine what interfaces are being mixed.
Maybe your programs just aren't that big. uSTL is ~12kl and it is downright tiny. My C++ projects routinely exceed 50kl in size and I've worked with ones as large as several million lines. There is more than enough complexity in them to worry about without intentionally introducing interface inconsistencies like the ones you're describing.
> If I want to iterate over all of the attack capabilities my creature has I
> do have access to all of the modules (IE: capabilities) that have been
> mixed in. I can then determine which of those are attacks and do whatever I want.
This is very non-object- -
How I got into it
I started 'programming' as a kid, in the form of DOS batch files and some BASIC, just to do funny things (like make people think that they were reformatting their harddrive by replacing an
.exe file with a file that put info on the screen that looked like a drive reformat... silly, I know, but I was like 8!).
If you have any *nix available at home (and if you're a tinkerer and you want to get into programming, you should be able to get your hands on at least one computer set up this way, if only for geek cred.. if you just run windows, try Cygwin!), a really good way to start would be learning shell programming. This is both immediately useful to you as a user, as well as being a great introduction into programming concepts like variable scoping and loop structures. It also lends itself to coming up with something useful to program, which is helpful when you're learning programming. Most shell syntax/commands (depending on the shell) are similar to (or are actually) the C language, which would give you a solid foundation. There's also plenty of resources at the library and on the net for free, or you could pick up a book (I have this one) to serve as a reference.
What it won't teach you very well is object-oriented approaches to programming. An easy (and cheap!) way to get more information on this sort of thing is to look for free books on the internet. There's a lot of hotness to be found in The Pragmatic Programmer's Guide to programming in Ruby; the text is all online and covers both 'the good way' as well as serving as a language reference. Everything you need to get started with Ruby (and then some) are free, too! Then again, most of the necessary tools for any language are easily available and typically free, but might take some hunting.
A lot of people have probably suggested Java and all its cross-platform goodness. Personally, I think it would be much better to start with a language with less of an entry hurdle - it can be difficult for a total newbie to do all the 'extra stuff' like linking to libraries and all the class structure right out of the gate. All that stuff makes Java more powerful (and cumbersome), but much harder to just dive into than scripting or Ruby. -
Perl 6 is a mistake.I've been using perl pretty much constantly since the Pink Camel, and believe me, Perl 5 is an extremely good language for quick scripting things. That's what it was designed for. Sure, you can do big projects in it, but it's not exactly ideal. Recently I've started using Ruby as well, and I intend to move my department over to it instead of wasting time with Perl 6.
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespacethank you very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. It's like Ada all over again! The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD^H^H^H^H Perl is dying.
-
Re:Is Java falling behind?I agree that Java has not improved in ages. I write Java client apps and have been for a while. The JVM has come along very well and since 1.4 it allows us to write really great end user apps - it's fast as hell. Once they get the memory usage under control it will be perfect.
But the language and the libraries are suffering from the weight of (bad) past decisions. There are usually about 3 million ways to do anything in Java. The language was great when it came out, but it has not been improved at all. The improvements in 5.0 are really a joke - too little, too late, and an unbearably ugly syntax.
Here's what Sun would have to do to improve Java:- Sit down and decide on what to keep and what to deprecate with an eye on deprecating as much as possible and leave a clean orthagonal set of libraries
- rewrite all the tutorials so they make sense, then provide a patterns library for good solutions for common problems (non-existent)
- quit wasting resources on second-best IDEs and embrace Eclipse and the rich client platform. Get over it.
- educate people about threading (other than the "use it when your program is slow, hurrh" kind of crap in the current tutorials).
- Then make the language nicer.
Newsflash to Sun: Being miles ahead of c doesn't cut it anymore!
[1] free old version or the second edition -
Opensource innovationLets see, Software installation management:
- A central repository of packages, and a GUI with more than 10000 packages, all installable with 2 clicks.
- Automatic upgrading of all these packages.
- Uniform interface to install, remove or upgrade all of these packages.
- Automatic installation of packages according to file access attempts (auto-apt).
GUIs:- Desktop/network integration (i.e: ftp exploration works just like local file exploration) (and no, this does not work, not even in Windows XP, try copying files from one ftp to another, for example).
- Panel applets bringing usefulness to the panel, as well as quick browsers/bookmark lists in the panel (Microsoft copied some of this)
- Tabbed command-line consoles
- Password-keeping wallets for all applications, allowing the user to remember just one password
- Customization of desktop behavior, shortcut keys to basic operations such as minimizing/maximizing, and any other feature in the desktop.
- Division of responsibility, window management keeps working even when applications hang.
- Search feature in Configuration Manager.
- Countless other innovations
Development tools:- The diff/patch tools.
- gcc: A single compiler handling the compilation of a huge collection of languages, in a large set of platforms.
- xemacs: An environment platform that allows extensions via a dynamic language with seamless on-the-fly compilation of the extension code you write. Also, the most featureful platform out there for this purpose, with powerful macro recorders/editors, customizable key binding, etc.
- Languages: Python, Perl, Ruby. Microsoft is still behind in this area, despite its
.NET technology, which is less innovation, and more an extension of the Java platform (I would even say, Java done right). Many more languages are Open Source, but I simply don't recall the exact history of other language to tell for sure. - Vast libraries in each of these languages, many of which are filled with technical innovation (i.e: Twisted Matrix, SDL, pygame)
- Transparent RPC's for: Python, Ruby, Smalltalk. Microsoft, to the best of my knowledge, does not implement a single transparent RPC. (Transparent means that the server needs not be aware of what objects the client will use, nor does it require any code to explicitly export the object's features to the client, as Microsoft's COM/.NET technologies require).
Emulation:- CoLinux [colinux.org]: Modifying the Linux Kernel to run in kernel-mode side-by-side a host operating system.
- bochs: Unprivileged, 100% user-space emulation of an entire PC.
- qemu: Like bochs, but with dynamic code translation.
All in all, I may have misattributed a few innovations, but most of these are from Open Source. Also, there are many others I can't remember or simply don't know. Microsoft has done less innovation than Open Source, that much is obvious.
I would appriciate information fillers on innovations from other projects I'm less familiar with, such as Apache, the Kernel. - A central repository of packages, and a GUI with more than 10000 packages, all installable with 2 clicks.
-
Re:uh-oh
And, BTW, you are way off topic. This article is about PHP frameworks. Let me explain to you. PHP is considered by some to be an excellent language. However, differently from Ruby, PHP users are ready to acknowledge its shortcomings. So, how can we make PHP a better language? Frameworks are one kind of solution.
Well, we're not really THAT far off topic. The reason that the OP doesn't want to use Rails is that they don't want to learn another language. That's a good reason on the surface, but to those of us who have made the leap, it's absurd. As many have pointed out, if you know PHP or Perl, the learning curve of Ruby is really shallow. You can get the basics in a few hours, and be quite proficient in a few weeks. And once you've taken the leap, you WILL be more efficient on 99% of tasks. So rather then being off topic, we are pointing out that the entire question is based on a flawed premise.
I'm not qualified to really explain the technical advantages & disadvantages of Ruby vs. PHP. But there's a high level overview of what's great about Ruby on the Ruby website. If you want more, the first edition of the excellent Programming Ruby is available for free online. You could easily scan through the first chapter in half an hour, and it touches on all the major parts of the language. If you're honest about your curiosity about Ruby, then I highly recommend you spend a few minutes & scan the online docs. You won't be disappointed. -
Re:Lisp is D.O.A.Ruby would have a hard time turning into lisp, given the lack of continuations.
Except that Ruby does have continuations, and Common Lisp doesn't...
The reason Ruby would have a hard time turning into lisp is the syntax, the lack of macros, and the fact that Lisp has such an emphasis on minimalism (provide a really small core that can be used to implement the rest of the language in itself).
-
Perl6 is a mistakeI've been using perl pretty much constantly since the Pink Camel, and believe me, Perl 5 is an extremely good language for quick scripting things. That's what it was designed for. Sure, you can do big projects in it, but it's not exactly ideal. Recently I've started using Ruby as well, and I intend to move my department over to it instead of wasting time with Perl 6.
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespace thank you very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. To put it bluntly, Perl scripts will still look less beautiful than our friend Mr Goat.cx. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD^H^H^H^H Perl is dying. Larry is buggering it up the ass without lubricants, just like Shoeboy is doing to Larry's daughter.
-
Re:Programming in COBOL
Yes but. COBOL arrays, or as they are called, tables, are extremely simple. In fact they are barely above indexed addressing in assembly -- not surprising. They are nowhere near as powerful as the array type in modern languages, e.g. Ruby Arrays. In fact they don't really measure up to Java's array, which at least knows its own length.
-
Technical innovation from opensourceLets see, Software installation management:
- A central repository of packages, and a GUI with more than 10000 packages, all installable with 2 clicks.
- Automatic upgrading of all these packages.
- Uniform interface to install, remove or upgrade all of these packages.
- Automatic installation of packages according to file access attempts (auto-apt).
GUIs:
- Desktop/network integration (i.e: ftp exploration works just like local file exploration) (and no, this does not work, not even in Windows XP, try copying files from one ftp to another, for example).
- Panel applets bringing usefulness to the panel, as well as quick browsers/bookmark lists in the panel (Microsoft copied some of this)
- Tabbed command-line consoles
- Password-keeping wallets for all applications, allowing the user to remember just one password
- Customization of desktop behavior, shortcut keys to basic operations such as minimizing/maximizing, and any other feature in the desktop.
- Division of responsibility, window management keeps working even when applications hang.
- Search feature in Configuration Manager.
- Countless other innovations
Development tools:
- The diff/patch tools.
- gcc: A single compiler handling the compilation of a huge collection of languages, in a large set of platforms.
- xemacs: An environment platform that allows extensions via a dynamic language with seamless on-the-fly compilation of the extension code you write. Also, the most featureful platform out there for this purpose, with powerful macro recorders/editors, customizable key binding, etc.
- Languages: Python, Perl, Ruby. Microsoft is still behind in this area, despite its
.NET technology, which is less innovation, and more an extension of the Java platform (I would even say, Java done right). Many more languages are Open Source, but I simply don't recall the exact history of other language to tell for sure.
- Vast libraries in each of these languages, many of which are filled with technical innovation (i.e: Twisted Matrix, SDL, pygame)
- Transparent RPC's for: Python, Ruby, Smalltalk. Microsoft, to the best of my knowledge, does not implement a single transparent RPC. (Transparent means that the server needs not be aware of what objects the client will use, nor does it require any code to explicitly export the object's features to the client, as Microsoft's COM/.NET technologies require).
Emulation:
- CoLinux: Modifying the Linux Kernel to run in kernel-mode side-by-side a host operating system.
- bochs: Unprivileged, 100% user-space emulation of an entire PC.
- qemu: Like bochs, but with dynamic code translation.
All in all, I may have misattributed a few innovations, but most of these are from Open Source. Also, there are many others I can't remember or simply don't know. Microsoft has done less innovation than Open Source, that much is obvious.
I would appriciate information fillers on innovations from other projects I'm less familiar with, such as Apache, the Kernel.
I am pretty sure Ballmer really believes what he says, because most people, surely Microsoft employees, are quite ignorant of Opensource offerrings and their innovations. - A central repository of packages, and a GUI with more than 10000 packages, all installable with 2 clicks.
-
Re:well..entirely object based. objects are pased via pipeline composition
That sounds almost exactly like the Ruby interactive shell (http://www.rubycentral.com/book/irb.html); except that it feels a bit wierd that Microsoft's twisting the pipe symbol for method calls. It make me think some VB guy read a book on streams and pipes and unix's everything's a file philosophy and decided to embrace-and-extend the '|' symbol by dealing with COM objects instead.
-
Re:How not to win the corporate mind.
I have to agree. Java-Doc is one of the best things about java. The API listing is enormously useful and links regularly to the tutorials. Java is simply the most accessible, best documented language/platfrom I've used.
I do wonder why other languages don't adopt some sort of javadoc. While it may add more verbosity to an already verbose class file, modern editors allow ways to hide arbitrary sections.
Sun's api listing is vastly easier to navigate then python's , perl outdated man-page style, or even ruby
Seriously, (and I'm not trying to troll) is there anything better than javadoc? I don't see any drawbacks to it. Why doesn't the rest of the open language community adopt it? -
perl6 is a mistakeI've been using perl pretty much constantly since the Pink Camel, and believe me, Perl 5 is an extremely good language for quick scripting things. That's what it was designed for. Sure, you can do big projects in it, but it's not exactly ideal. Recently I've started using Ruby as well, and I intend to move my department over to it instead of wasting time with Perl 6.
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespace thank you very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. It's like Ada all over again! The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD^H^H^H^H Perl is dying.
-
Re:I wish there was RHP instead of PHP
Maybe you should have read more than the first few pages of that book.
:) -
I wish there was RHP instead of PHP
I wish there was RHP instead of PHP... The R would be for "ruby" of coarse.
Having been programming Ruby now for several months, I prefer it to Perl and the very similar PHP... Just go read the first few pages of the ruby book for why this language is so much cooler than others.
PHP is awsome for integrating HTML and code with their syntax though, and I'd love to see this in Ruby....
Maybe it already exists? Anyone? -
To quote the developer...I found this quote on the Rails Development Weblog.
Three levels of caching: I implemented page, action, and fragment caching for the Action Pack in Rails so I could be able to use it in Ta-da. And it's working exceedingly well. Lots of pages went from 50-70 req/sec to 400-1100 req/sec due to caching.
As another data point, consider that www.rubyonrails.com and its wiki are both Rails apps themselves, and are still running along gamely despite the slashdotting they're receiving.That may also answer your PEAR::Cache deal (as I understand PEAR::Cache anyways). But Ruby doesn't need a framework to cache method calls. Making caching function calls is kind of a learning excercise. It's covered in the old, online version of Dave Thomas's "Programming Ruby" book. Specifically, in this chapter. Search for "class and module defintions" and read on. It's really quite interesting how easy it is.
-
Re:Played with it
Perhaps you might want to have a look at http://www.rubycentral.com/book/ which is a good ebook to learn Ruby.
-
Programming Ruby
Programming Ruby by by Dave Thomas, Chad Fowler, Andy Hunt
-
Re:Ruby + C == World Domination
Here is how to get started:
Extending Ruby
That is from the 1rst edition, I recommend getting the 2nd.
Also take a look at the README.EXT (come with the ruby source code).
Here are some helpful links (a bit more advanced):
Ruby Source Code Browser
Ruby C API Docs
GC And Extensions
Ruby Talk
I must admit the learning curve for C extensions is a bit steap if you don't have experiance in either language. Also more tutorials are needed.
-Charlie -
Re:First edition is available online.
And here they are converted to actual links:
Ruby Home
http://www.ruby-lang.org/
Ruby Forum (new! primarily for beginners)
http://www.ruby-forum.org/bb/
Ruby Online Docs
http://www.ruby-doc.org/
Ruby Project Archives
http://raa.ruby-lang.org/
http://rubyforge.org/
Ruby Package Manager (easy to install ruby apps)
http://rubygems.rubyforge.org/wiki/wiki.pl
Ruby IDE (free!)
http://freeride.rubyforge.org/wiki/wiki.pl
Ruby One-Click Installer for Windows
http://rubyinstaller.rubyforge.org/wiki/wiki.pl
Ruby IRC channel
#ruby-lang at irc.openprojects.net
Ruby Newsgroup
news://comp.lang.ruby
Ruby Links
http://www.rubycentral.com/links/index.html
http://dmoz.org/Computers/Programming/Languages/Ru by/Software/ -
Re:First edition is available online.
-
RubyConf 04 was held recently....
...thanks to Ruby Central for sponsoring it.
A BitTorrent of the presentations is available here. -
Re:The pragmatic bookshelf
For those that don't already know, the first edition of this book is available free of charge.
It's a great book and I can't wait for the second edition.
P.S. Send an email to mando.escamilla@gmail.com if you want some gmail invites.
--
Mando
-
Re:Why Perl is still the Regex king
Have you looked at Ruby? Regular expressions are very well integrated, and it seems like a far more elegant language (to me).
-
POD==vaporware, free digital books==coolIt was interesting to see their response to this question:
A recent weblog entitled Why Do We Need Publishers? pointed out that print-on-demand (POD) makes small print runs more affordable and more profitable than cultivating a relationship with a professional publisher.From the authors' response, it sounds like they actually have a fairly traditional publishing arrangement, where they print books in quantity, and distribute them through O'Reilly. The question is also kind of a non-sequitur, because they say "POD" and "small print runs" in the same breath -- POD was supposed to be a technology for printing copies for individual readers on demand. Printing short press runs isn't a new idea. The whole POD thing was one of those things that really got oversold in the 90's. The fact was that the technology and business aspects never really made sense.
What is really cool, and really makes sense, and is really practical technologically, is what they're doing by making their book free in digital form but also available in print.
-
Ruby can probably do that.In Ruby, the most common way to create a class is to use a class
... end block, but you can also do it in a more OOP way by using a class method of Class:MyClass = Class.new do
This is just a call the new method of class Class; it creates the class, executes all the statements in the block within the scope of the class, and assigns the Class object to the constant MyClass.
# class-scope definitions
endIt is also possible to subclass Class to make your own kinds of classes; the Class class provides a inherited hook to catch when somebody inherits from it, and its superclass Module has a method_added hook.
I'm not sure what kind of behavior you want to overload the normal Python class and def statements to do, but I suspect you have multiple workarounds to do what you want in Ruby. Two ideas:
- Don't use the class statement; subclass Class to MyClass, implement the behavior you want, and create classes of your new kind by calling MyClass.new with a block. Then you instantiate them normally.
- Create MyBehavior as a plain old vanilla class (or maybe as a mixin module, haven't thought it through) which implements the behavior you want. The classes with the behavior you want should subclass MyBehavior (or if you use a mixin, declare include MyBehavior at the top).
-
Re:where is it now?
-
And those are just the operators...
Wait until they add the special variables like $_ and $^
...
I'd like to have a chart over how to do simple stuff like accessing a string in an array in a hash.. I always forget where to put that cryptic $\@%-stuff..
If you like the concept of Perl but hate the cryptic syntax and feel that Python isn't flexible enough without being too verbose, have a look at Ruby! It's 100% OO down to the core and it's simply beautiful! It's Perl done right. -
Re:Next generation for ME
Ruby does all this very transparently already with the Distributed Ruby library which is part of the standard Ruby.
Basically all you do is this:
# Server
# (Sorry about the bogus underlines, Slashdot kept wanting to remove my pretty whitespace!)
class Calculator
_ def add(a, b)
_ _ return a + b
_ end
end
DRb.start_service('druby://server:9000', Calculator.new)
# Client
calculator = DRbObject.new(nil, 'druby://server:9000')
calculator.add(2, 2) # => 4 -- Note that the calculation will be done by the server!It's as simple as that. You can run the Server and the Client on entirely different computers, thousands of miles away and everything will just work. There are layers that build on top of this which provide master server functionality (clients and servers can find each other via an application server), firewall layers and more. All those however keep in the spirit of the simplicity of the example code above.
There's more information about this available at this article. Just one more quote I would like to highlight:
Ho hum, you say. This sounds like Java's RMI, or CORBA, or whatever. Yes, it is a functional distributed object mechanism---but it is written in just 200 lines of Ruby code. No C, nothing fancy, just plain old Ruby code.
-
Perl6 is a mistakeI've been using perl pretty much constantly since the Pink Camel, and believe me, Perl 5 is an extremely good language for quick scripting things. That's what it was designed for. Sure, you can do big projects in it, but it's not exactly ideal. Recently I've started using Ruby as well, and I intend to move my department over to it instead of wasting time with Perl 6.
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespace thank you very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. To put it bluntly, Perl scripts will still look less beautiful than our friend Mr Goatse. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD^H^H^H^H Perl is dying. Larry is buggering it up the ass without lubricants, just like Shoeboy is doing to Larry's daughter.