Interview with the Creator of Ruby
Lisa writes: "Yukihiro "Matz" Matsumoto talks about Ruby's history, the influence of Perl and Python on Ruby, and his new book, Ruby in a Nutshell. In the article he explains: "When I started the language project, I was joking with a friend that the project must be code-named after a gemstone's name (àla Perl). So my friend came up with "ruby". It's a short name for a beautiful and highly valued stone. So I picked up that name, and it eventually became the official name of the language. Later, I found out that pearl is the birthstone for June, and ruby is the birthstone for July. I believe Ruby is an appropriate name for the next language after Perl.""
that's treason - "off with his head!" ;)
free (as in mp3s) electronic music
One might want to check out this link as well.
-Vic
If you haven't looked at Ruby yet it's @ www.ruby-lang.org it's a beautifully done object oriented scripting language which IMHO is exactly what the computer industry needs. Other scripting languages have really hit a wall in development because of the objectless syntax, but ruby, is a piece of work.
To the development site or somewhere else I can get more info and maybe even an interperter to finally get off the fence and try playing with this language?
I checked the linked articles but couldn't find anything.
--- Juggle juggle@hitesman.com
there the ruby language home page and you can download the latest version.
free (as in mp3s) electronic music
...are they? Honestly, I swear over the last 6-8 months there have been at -least- 1 article/month on *Ruby*. So what's the big deal? Another scripting language; how many of those do we got now? C'mon!
Karma whorin' since 1999
The language biosystem is overpopulated, and mindshare starvation can be fatal to a new tool.
I love Perl, wrote many a fine script in it, and a couple mostly unreadable messes. I started using Python, and am using it for most of my scripts now. I poked around Ruby's web page a while back and tried to find out what all the hoopla was about, but couldn't find anything really revolutionary. Bruce Eckel (of Thinking in C++/Java fame) doesn't seem to think much of Ruby.
Sure, maybe there's some cool new syntactic sugar. Sure, it's sexy to be able to say you're developing in/developing libraries for/developing a brand new computer language. But unless there's some significant additional benefit to this new design, why re-invent the wheel with Yet Another Language?
So, SOMEONE must be able to tell me what's so *great* about Ruby that we should start calling Python obsolete. Either that, or acknowledge that Ruby is just a fun, impractical project that truly is re-inventing the wheel.
include $sig;
1;
Are there any plans to have Ruby use Parrot, the future shared backend for Perl and Python?
From the article:
As long as some people feel happy using Ruby, that's enough of a reason for another language for me.
A-men.
It works for a lot of other things, too. Pick
a language, or political party, or religion, or
operating system, or city of residence, or
economic system, or mathematical notation, etc...
Seriously, folks, adopt this attitude, and the
world will sleep MUCH easier at night.
Libertarianism is rich wolves and poor sheep playing gambler's ruin for dinner.
Compared to Perl and Python, the syntax is cleaner and easier to understand. Scripts can be roughed out in functional terms, and then moved over to objects in no time at all. And, since every component of the core language is an object, OOP is as simple as it gets. The thing that's killing Ruby for me is the lack of documentation. The material that's available requires a lot of (read too much) effort to assimilate. It desperately needs a Camel book...
The trouble with practical jokes is that very often they get elected. -- Will Rogers
for a new programming language name. Why not? Then after that let's make Sapphire and perhaps Obsidian....blah blah.
"sweet dreams are made of this..."
I love Ruby, especially for the arbitrary-sized integers by default (this might seem like a minor feature, but I deal with exact numbers over a few billion so often that I hate to fumble with extensions and libraries for it), but one thing that confuses me is the block structure. Why "end"?
... end" or "{||...}" not more general?
... end" and "for {|| ... }", but not between "def func(n) ... end" and "def func {|n| ... }" ?
Why are static conditional and loop blocks, and function and class definitions, so different from the brace type of general blocks, and so different-looking from Perl? And why is the option of "do ||
For example (and please correct me if my assumption is wrong), why can you choose between "for do ||
I'm not officially OT. See, I still read wants ads. And I look at what's in demand for clues to what I should be learning, trends, etc. Databases are a good example from a couple years ago. I noticed that lots of the 1996 job ads had web->DB stuff in them, and so starting brushing up on databases in my off hours. It turned out to be useful later on. I know that one could take this line of reasoning to mean that everyone should start learning VB and IIS stuff, but it isn't an absolute. You kinda have to read all the ads and then stand back and squint to see the trendfs in your area. If you're a Unix geek, you'll see what ost people want, which might lead to learning something new.
My (long winded) point is: Ruby won't be on my radar until people can reasonably be expected to pay me for using it. I know I just got modded down in the minds of a lot of poeple by saying that, but it's how I think. When I see Ruby listed in want ads, then I start noticing it (especially if its mention grows over time). I figure that I need to kill two birds with one stone: know enough to get my job done by knowing a diverse enough range of stuff so that I can still get paid. If I spent all my time learning every other thing that came out, I'd never get any work done. And I'd only know a little bit about everything. I need to know a certain subset of things really well, and just the right amount about a lot of other stuff in order to stay competitive. It's setting that threshold of other stuff where the want ads come in handy. If everyone wants wireless all of the sudden, something's up. So I devote a little time to learning it.
I guess as I get older, I'm starting to value my unplugged time. I can't burn 36 straight hours engrossed in new (and mostly arcane) stuff like I did 15, 20, or even 10 years ago. I have to choose my projects and apply my time wisely. So whern I start seeing Ruby in the wants ads, I'll take a look. I'll be behind the curve, but that's fine.
-B
Ash and Hickory, straight-grained and true, make excellent bludgeons, dandy for the cudgeling of vegetarians.
I've looked at python and ruby syntax and they are not that different actually.
IMHO ruby is cleaner, well refactored, and consistent than python. You can almost guess how a class will work and it just work.
And cleanner syntax matters! That is why people switch from perl to python and many avoid lisp.
I'm only now on chapter two of learning python. gonna have to wait till i can do more than just
print "Hello, World"
before i try to learn something else.
-
I'm going to call it ASS, which will stand for Active Scripting Somethingrather. People will use it because theirs won't stink, but everyone else's will. Of course, they will know that everyone else's stinks because of the power of Open Source - everyone will want to packet-sniff everyone else's ASS to see how theirs is configured, which one is pretty, and which one stinks.
I long for the day when I will have an o'reilly interview where I get to sit and talk about ASS.
"On the Internet, nobody knows you're a dog!" - a dog
There is a Mind-to-Ruby liaison page for coodinating the implementation of an Open Source AI Theory of Mind in Ruby.
A previous instance of porting the AI to Visual Basic was Mind.VB of 3.Apr.2000.
A more recent port from JavaScript into Java is at Mind.JAVA of June 2001.
The Ruby programming language leads to a technology transfer of American AI to advanced Japanese robots: the Technological Singularity.
It's hard to get syntax that is "cleaner" than Lisp syntax: Lisp syntax is very easy to parse, very easy to write, and completely unambiguous.
> Sure, maybe there's some cool new syntactic sugar.
[sigh.] All non-1stGLs are, boiled down, syntactic and semantic sugar. *That's the whole point.* You try and map the necessary, needs-of-the-machine language up to something closer to How People Think (tm).
> Sure, it's sexy to be able to say you're
> developing in/developing libraries for/developing
> a brand new computer language.
Yeah, I like to read the same book over and over, too. It's not like I can learn any new ideas from anything other than _Atlas_Shrugged_.
> But unless there's some significant additional
> benefit to this new design, why re-invent the
> wheel with Yet Another Language?
If nothing more, than to grind one's teeth on the *art* of language design. Am I reading you wrong, or are you actually convinced that Python and Perl are the highest glory of formal systems?
> So, SOMEONE must be able to tell me what's so
> *great* about Ruby that we should start calling
> Python obsolete. Either that, or acknowledge that
> Ruby is just a fun, impractical project that truly
> is re-inventing the wheel.
You should become a project manager, as you have the proper terror for new ideas. I'll be here at work over the weekend, grinding out shit in Visual C++ that could have been done in no fucking time with Common Lisp. But hey, those LISPs are just fun and impractical.
"And the people bowed and prayed to the neon god they made"
--_The_Sounds_of_Silence_
I think he should stick with one of the {} or do...end styles; eliminate the @ from @member (maybe .member?); generally don't be afraid to make it a MORE beautiful language.
A few months ago, I was a chemist sitting in my lab pondering crystalization of aluminum oxide, with no more programming experience other than the required pascal & fortran from school. A few websearches later, and thanks to ruby, I finally hit that moment of enlightenment of understanding OO. Any language that helps me grow is good. I'm still in a lab, but this one doesn't have fume hoods ;).
The post you are refering to is not a flame. The poster was asking a valid question. Just because you do not agree with the questions does not make it a flame.
It seams a little closed minded to call a post you don't agree with a flame...
Sure, Perl and Python have their strong points. Ruby seems to have done a good job of combining the strong points of both. A lot of folks want a language that is easier to develop object oriented code in than Perl (which, as someone who has done OO Perl, I have to say it's downright ugly), and many people don't like Python's style (forced indentation - need I say more?).
It's a matter of which language fits you, the programmer, best instead of the other way around. A lot of folks find that programming in Ruby is just more natural to them than programming in either Perl or Python.
The message here is: give it a try. If it works for you and you decide that you really like it, then you've gained. If you try it out for a couple of days and decide that you don't like it, then you don't have to continue. Try it, you might like it.
It's a valid point you make, I suppose.
But what if you were to learn it because it's fun?
"Fun?" Yeah, fun.
Another point: By the time something hits the help wanted ads in large numbers it's already gotten a some percentage way through it's active life. Look at Java - a lot of people started learning it because it looked like an important technology to them at the time, there weren't many Java jobs at first. Now everybody and his brother has learned Java, so you're competing with everybody and their brother.
BTW: I did see a Ruby ad at:
http://www.postget.com/get/ad.php?id=591
So maybe it's just starting and has a lot of life ahead of it - one can only hope.
If someone INSISTS on using a scripting language to build thousands of line of code that I then have to try and maintain and enhance as a product, I'd welcome any alternative scripting language that doesn't encourage obfuscated code as much as Perl does.
I don't know if Ruby fits that bill, but it would be a reason to switch if it does.
Of course, I know that code in any language can be well documented and written so that's easy to understand. It just seems like code written in Perl is much more likely to be difficult to read than in other languages more appropriate for applications.
I'm part of a group that has had Perl code (using the OO facilities) handed off to it to maintain and fix. It contains many Packages and probaby several thousand lines of code. Not sure. I've successfully kept my name off the responsibility list for that code. It's been pure hell for the engineers that have been asked to fix it--and all it's supposed to be is a simple parser and data access interface.
I use Perl myself for my own scripting but it can be cruel and unusual punishment to be given someone else's Perl to maintain.
It's enough to make you take your clothes off and run around the office screaming "I CAN'T CODE NAKED!!! AHAHAHAHAAHAH!!!" until they put you on a different project.
Jesus saves....And takes 1/2 damage.
I've heard it described many times as: Ruby allows me to go from thought to code with the least friction of any language I've tried. I find it to be true as well.
Sure some people will still prefer Perl and other Python, but a lot of people seem to be finding that Ruby just clicks for them.
Maybe it's Matz's design philosophy "The principal of least surprise"
...which is how most moderators seem to use it. which is sad. tyranny of the majority is boring in spirited discussions...
A: None. The Universe spins the bulb, and the Zen master merely stays out of the way.
Comment removed based on user account deletion
Like Java(tm). Oh, wait, that's the power of COBOL with the ease of, well, COBOL.
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries. All rights reserved. The Java name and Java logo may not be used without express permission from Sun Microsystems, Inc. Sun Microsystems reserves the right to pretend interest in "open source" development yet maintian dictatorial control over ever last freaking aspect of the Java bloated programming language because Sun Microsystems were the first and only people to think of "write once, run anywhere." Oh, and that phrase is trademarked, too, so don't even think of applying it to anything else, even if it's true (which it isn't for Java, but we have the marketing and the laywers, so there).
Java is the blue pill
Choose the red pill
It's a joy to program in...
;-)
* There's iterators & blocks
*A unified class/type system (meaning you can extend built-in types like String,Array,Hash,Kernel, etc)
* fully OO - 42.times { |i| puts i }
but it doesn't get in the way when you don't want OO, like it seems to with Java.
* Design patterns - Observable,Delagator,Singleton,...
* dRuby - Ruby's very easy to use distributed object system.
For now it's great fun, hopefully someday it'll pay the bills too.
Whoever moderated this off-topic must not have ever written any Lisp code...
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
I don't think he was daying that young people don't value thir time; I think he was saying that, since he no longer has the energy of youth, he has less time to do all the things he might want to do, so he needs to be careful about how he spends his time in order to get to do all the stuff he wants.
Speaking as someone who, three years ago, couldn't even begin to dream how much a toddler could eat up your personal time, I understand (in some sense) exactly what he's saying :-)
"Great men are not always wise: neither do the aged understand judgement." Job 32:9
Easy to parse? Are you insane? The primary reason for LISPs lack of success in the real world, IMHO, and the ultimate success of least common denominator languages like Java lies in their parseability to somebody with only general knowledge of the specifics of the applications (i.e. lead time on bringing new developers into a project). This is the one of the most significant strengths of Java over C++ (well, not the only one, and there are plenty of weaknesses, but this strength wins out with much "enterprise" or "business" server-side software). I also find Python generally quite pleasant to parse and read. LISP, on the other hand, is easily parseable only for those with strange brain defects that make them love spending their days counting parens with bleary eyes.
I looked at Ruby. It is certainly a heartfelt attempt. However, it seems to me that yet another poor communicator has written yet another language.
Not only that, but the Ruby creator has created his own syntax. A new language has one big advantage for the creator: The creator finds the syntax very familiar. Everyone else must struggle.
Links:
The Ruby Home Page
Ruby Language Reference Manual
The Ruby Language FAQ
Programming in the Ruby language by Joshua D. Drake, who is a good communicator.
A Slashdot story and comments: Programming in the Ruby Language
Positive comments about Ruby:
Introducing the latest open source gem from Japan
Thirty-seven Reasons I Love Ruby by Hal Fulton.
Negative comments about Ruby:
As mentioned above, Bruce Eckel does not like Ruby:
"IMO, the Ruby syntax is
Eckel again: "... Python has 10 years behind it and a big, very smart, very active community, a nice number of good books and more on the way, a large set of libraries and a whole process and team in place for developing the language. Recent improvements to the language have outstripped whatever Ruby could offer, I think, and there's currently lots of very good work going on to further improve Python."
For those who would like to quickly see for themselves, there is a section of the The Ruby Language FAQ called Show me some Ruby code
Quotes from Ruby's creator, a Japanese man with an incomplete command of English:
What is the history of Ruby?
"Well, Ruby was born on February 24 1993. I was talking with my colleague about the possibility of an object-oriented scripting language. I knew Perl (Perl4, not Perl5), but I didn't like it really, because it had smell of toy language (it still has). The object-oriented scripting language seemed very promising.
"I knew Python then. But I didn't like it, because I didn't think it was a true object-oriented language -- OO features appeared to be add-on to the language. As a language manic and OO fan for 15 years, I really wanted a genuine object-oriented, easy-to-use scripting language. I looked for, but couldn't find one.
"So, I decided to make it. It took several months to make the interpreter run. I put it the features I love to have in my language, such as iterators, exception handling, garbage collection.
"Then, I reorganized the features of Perl into a class library, and implemented them. I posted Ruby 0.95 to the Japanese domestic newsgroups in Dec. 1995.
"Since then, highly active mailing lists have been established and web pages formed."
--
Links to respected news sources show how U.S. government policy contributed to terrorism: What should be the Response to Violence?
Bush's education improvements were
I did. In 1995 I had a conversation with Bjarne Stroustrup (inventor of C++) and asked him the obvious layup "Which language should programmers seek out and learn?"
.I respect him as a writer, but I couldn't disagree with him more)
Instead of automatically plugging C++ he suggested something like this:
1. Learn (or read) at least one every year or two so you don't get pigeonholed into the limitations of the language you use every day. Different languages promote different approaches - and different approaches/designs are the toolchest of this industry.
2. At least try out one functional language (Lisp/Scheme), one OOP language(C++/Java), one procedural language. None is better than the other, they have different takes on the world and shine at solving different types of problems.
3. Sticking with one language (at the total exclusion of others)limits your output and stunts your learning curve. Looking at more than one also reminds you what languages are for -- expressing more succinctly and clearly the instructions you want the computer to heed.
This being said, I look at lots of languages and I've learned a lot from using Ruby (and I use it a lot now). The best ideas from Perl, Smalltalk, Python and C/C++ are all there. The downsides are not (Perl - clumsy OO, Smalltalk - high-priced/low acceptance, Python whitespace-significance/non-OO primitives, C/C++ - compilation, etc.). The user community is probably the most helpful and thoughtful I've been a part of as well.
As far as Ruby's success at translating your thoughts to working programs? I read posts where people claimed they wrote less code, got more functionality, and fewer bugs right away. At the same time, they claimed they generally produced cleaner solutions at a faster rate than they ever had before with Perl or Python. Skeptical at first, I tried it out. . . I was shocked to find it was true for me within 2 days - I was sold.(note - I really am baffled by Bruce Eckel's comments on Ruby. .
Final note: If you are interested in becoming a better programmer, you should get the book "The Pragmatic Programmer" and read it(It was previously and glowingly reviewed by Slashdot - and no, I'm not the author). Its full of great advice on how to approach new languages and the general art of programming. The authors also wrote the book "Programming Ruby" (The "pickaxe" book) and they are big fans of Ruby as well.
Rappsrv is an interesting framework for web applications written entirely in Ruby.
You can check out the site, the code and the thing at work.
Pretty neat! There are also some nice Ruby resources at the same site.
"Client is a small advertising agency in Manhattan.
"Job consists of production work on heavily dHTML website. In order to minimize production pain, html pages are generated using Ruby (a wonderful language)."
Yay, Ruby!
Transcript show: self sigs atRandom.
Object orientation is the semantics. Semantics
is tied to syntax, but not to any particular syntax; there is no ``object oriented syntax''. Syntax allows you to group some expressions together to express some semantic relationship.
Languages hit the wall when they have a hard-wired syntax, with hard-wired semantics.
Ruby is no exception. It's a whole lot of syntactic sugar for a bunch of non-programmable semantics. It was obsolete before it was conceived. Moreover, the author has a very limited view of what object oriented programming is, and suffers from a fundamental confusion that OO is somehow syntactically determined. This if from one of his slides:
//OOP
fi = File::new("sample.dat", "r")
fi.binmode = true
line = fi.readline()
fi.close
// Non-OOP
fi = fopen("sample.dat", "r")
fbinmode(fi, true)
line = freadline(fi)
fclose(fi)
So, in other words, something is object oriented if it uses the notation object.method(arg), but not object oriented if it uses the notation method(object, arg). Is this guy for real?
It takes a certain level of experience to see through the facade of curly braces, vertical bars, squiggles, splats, hashes, cokebottles and whatnot. Such devices, despite looking impressively cryptic and terse, do not imply any special power; they are designed to dazzle and seduce the undergraduate mind.
The real power arises when the same expression, whether it uses lots of syntactic sugar or not, can mean absolutely anything that the programmer wants, not only what the language designer wants it to mean.
No no: Java combines the speed of Visual Basic with the elegance and simplicity of C++.
-- Help Digitise the Public Domain at DP.
Ruby looks a lot better in this regard, and that alone might be a reason to use it, even if otherwise it is roughly equivalent to Python.
Still, overall, it is disappointing to me that there is no Perl/Python/Ruby-like scripting language implemented in C++: using C++, the native code interface could be much simpler to use. Yes, there are various C++ wrappers for Python and probably the other languages, but they generally add a complex C++ layer around an already complex C interface.
Years ago you rarely saw jobs where Linux was asked for. If one were to take your stance no language would advance. Fact is that toys software is where the next popular thing comes from.
My advice? Bookmark a Ruby news site and read every couple of days. Just soak in it. You won't waste too much valuable time and it'll expand your mind. Maybe you'll be so interested you'll feel the urge to learn it in your spare time.
Fact is that as a programmer you can pick up Ruby in a month, and that means you'll adapt quickly enough to cope with the influx of Ruby, or any programming language.
There are many facts but they all miss the point. Will learning Ruby be worth my time commercially? Only a fool would answer that with any solidity. Spread your mind around information and just soak it in. Not just Ruby but Linux and Electronics and Interface. Choose wisely and spend a few minutes each day expanding your mind. Follow your heart and one day you'll get that pony, Jeff. You'll climb those stairs and drive that Porsche. And remember, you don't need the drugs when you're high on crack.
Though you won't find it in your job ads, having a lot of languages (and a lot of different kinds of languages at that) on your resume is a definite bonus. Especially if there's a variety of languages (procedural, OO, functional, logic etc), it shows that you can easily adapt to a new language should that become an issue.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
If you disagree with an opinion in a reasonably politely worded message, respond with a good technical argument. Don't throw out random accusations or moderate down messages you merely disagree with.
Also, don't point people at a few hundred pages of documentation--it's counterproductive. If proponents of a tool are incapable of producing a concise statement of why their tool is better than other tools, people are entitled to assume that it isn't worth looking into it further. The burden of proof is on the shoulders of people who want mindshare, not on the shoulders of people who want to use existing tools.
(As for Ruby, it seems like a reasonable language with a nicer C interface than Python. Enough to switch? I don't know.)
Ruby was invented in 1988 by Alan Cooper, he sold it to Bill Gates. Bill mixed Ruby with Qbasic and the result was Visual Basic.
Sources:
http://www.webword.com/interviews/cooper.html
http://www.cooper.com/
Actually, I was talking about parsing, not readability. But well-written Lisp is very readable, just like well-written C or well-written Java.
LISP, on the other hand, is easily parseable only for those with strange brain defects that make them love spending their days counting parens with bleary eyes.
Lisp, like Python, relies on indentation for readability. People never count parentheses, they use editors that handle parentheses for them. Python programmers don't go blind counting spaces either, they use editors that handle indentation for them.
The primary reason for LISPs lack of success in the real world, IMHO,
Lisp is probably more widely used today than Python or Ruby. It may be unfamiliar, but it is really easy to learn. CommonLisp failed mostly for reasons unrelated to syntax.
the ultimate success of least common denominator languages like Java lies in their parseability to somebody with only general knowledge of the specifics of the applications
Come on: "&&", "?:", and lots of other operators? Lots of braces? Oddball precedence rules? Variable declaration syntax with type modifiers on the variables? Prefix conversion operators with postfix method selectors? Java syntax is pretty tricky and unintuitive; people only consider it simple if they know C.
I also object to your characterization of Java as a "lowest common denominator" language. Java is a very powerful language, hidden under a deceptively familiar syntax.
I am saying that, for me as a native English speaker, the cost of being involved with Ruby is high:
Ruby is a language primarily written and maintained by one person. The author of the language says this in one of the links that I provided. The documentation in English is poor, and, because there is only one primary person working on the language, the documentation is likely to remain poor. That makes a big difference for anyone trying to learn a new computer language, because it vastly increases the cost (in time) of learning.
Also, if there is poor documentation in English, it has been my experience that fewer people adopt a new computer language. English is the world's most common second language. EVERY Japanese student studies English, my Japanese friends say. A friend in Thailand told me that there was a scholarship program to teach computer skills to Thais in Japan. The courses were taught in English.
Try a test: Call the main number of any large German bank. When the operator says hello in German, just start speaking English. You will find that the operator immediately switches to perfect English. If German banks think that communicating in English is important, maybe that is because communicating in English is important in today's world.
If fewer people adopt a computer language, there will be less development. If there is less development, then it may become one of the hundreds of languages that have eventually died. This would increase the cost of adopting Ruby still further.
Poor communication is a BIG issue with open source software, in my opinion (and closed source, too). In my opinion, poor communication is the one big barrier to getting rid of the Microsoft Windows operating system completely. I don't like Windows because I don't like being abused by Microsoft.
My city, Portland, Oregon, USA, has what is said to be the biggest bookstore in the world, Powell's. I went to Powell's technical bookstore and looked at about 20 books on Samba. ALL of them were very incomplete. ALL of them were poorly written.
--
Links to respected news sources show how U.S. government policy contributed to terrorism: What should be the Response to Violence?
Bush's education improvements were
I think, it's better than to lose the ability of binding to pure C (or assembly, or whatever) code.
My exception safety is -fno-exceptions.
I'll forgo my moderator privs to mention that the Midgard development team have selected Ruby as the Scripting Core of the next generation of Midgard, which is (in part) a Content Management and Web Database deployment system based on PHP.
Paul Gillingwater
MBA, CISSP, CISM
I couldn't disagree more. Mindshare may be needed for products but too much mindshare can kill ideas faster than anything. Memes that "everybody knows" are essentially dead. The language biosphere only seems overpopulated if you're used to living in the BASIC* & C* wasteland we had a few years back.
-- MarkusQ
I don't know if you'll check back for responses to this post, but if you do I wonder if you could clarify your comment about american being a poorer version of english. I'm not aware that there is anything that can be said in the british dialect that cannot be said just as clearly in american, but I'd be interested to hear your views on this (or was it just flamebait?)
>Lisp is probably more widely used today than Python or
I highly doubt this. A perusal of the traffic of the python verson lisp newsgroups tells tales as does the paucity of available libraries for lisp when compared to those of python. I would hazard a guess that Lisp is used quite a bit less than Python.
C//
...why can you choose between "each do |i| ... end" and "each{|i| ... }" ...
I'm writing a new scripting language and it's defined such that if you give it a program with no statements (i.e. an empty file) it will print "Hello, World\n" to stdout. Can anyone else write a hello world program in fewer than zero bytes?
Anyway, there's a great page out there by a guy who wrote a series of articles on the topic of "Worse is Better" and why LISP failed to maintain critical mindshare in the professional world and lost so much ground to C and C++, though functional languages seem to retain a serious support base in academe.
I sincerely doubt that LISP is that widely used - certainly it has a miniscule hobbyist following left, compared to Python. Even Ruby, while new-ish in the US probably has more users in Japan alone. LISP still has a lot of users in the business world, in software development projects at companies working on the rare project that is well suited to LISPs strengths (whatever exactly they are - beats me).
Java syntax is least common denominator because it basically steals C++ and removes everything that fucked up the morons working on larger projects (pointers, multiple inheritence, certain weird keywords, operator overloading). They left some stuff in it that may be weird to a LISP person, but to most people, thinking in one of the ALGOL-derived languages is still much more natural (procedural style) than thinking in functional style. Everyone seems to forget the real goal of a programming language is to translate between my wetware and bits and bytes and provide me with some insulation while still providing enough power and performance to build useable applications that can perform significant tasks.
You said it perfectly. I used to spend all night -- for weeks on end -- on a VIC-20 doing mostly useless stuff in BASIC. I didn't have a job, family (of my own), eating, anything really to get in the way of my interest. Back then I could attack things with a passion that had no regard for time or other personal responsibilities.
When I was in college, I could spend all night fooling with GIS stuff or pascal or whatever, just because I had to get that one project done. And more often than not, I'd "waste" plenty of time doing things not strictly necessary. I had more responsibility then than I did when I was in high school, but it was subconsciously counted as school, so I could metally get away with it.
Now I'm at the point where I come home and I just want to spend time with my family, in the garage working with wood or something, making a good dinner, etc. If I'm on the computer at night, it's with a very carefully chosen project. I don't have as much time to burn now as I did then. I have to choose my "battles". There's still plenty of room for fun, and that's what I do on my off hours. The trick is to make the fun stuff also count as work stuff.
Like another poster said, you have to have a well-rounded toolkit to get along. And I do. I've got a very well rounded set of skills, and I am always looking for more to learn. But consider the time budget imposed by age and responsibility with the ROI I'd get from learning another language roughly equivalent to a couple I already know. I can get by with perl and python and PHP in order to do what I do -- even for the fun stuff. It's when I see more and more job ads in the "computer" section ask for Ruby that I'll start to make that ROI worth it. In the meantime, there's plenty more stuff I have to know better than I do.
I wasn't saying that youth can or do waste their time. They just have more of it. Which they should enjoy to the fullest doing whatever it is that piques their curiosity, even if it doesn't "offically" count as something important. Us old guys don't get that luxury anymore... :-)
-B
Ash and Hickory, straight-grained and true, make excellent bludgeons, dandy for the cudgeling of vegetarians.
I stand corrected.
-- Help Digitise the Public Domain at DP.
Well, that may be true if you have grand schemes for the scripting language. But I'd happily give up C compatibility and the C ABI standard for easier, more reliable bindings to native code. Existence of something with a really nice C++ interface and implementation wouldn't obsolete existing scripting languages.
... I had mod points. :) Because I'd mod this one Waaaay up.
Those advice from Stroustrup are worth gold. And as if a coincidence, those very advices echo through that very book you are mentioning. I read it. It is very good.
Actually, those, and similar advices are the ones I try to live by too... my greatest problem right now, however is that it is too much to choose from. After reading this, and revisiting Hunt and Thomassite I think I'll have a go with Ruby, finally.
Thanks!
One thing I've found, is that even if I don't stick with a language I try, I program the others slightly different, and hopefully better after tried it and gotten my thinking shaken around a little... :)
I think it is good for you.
When I first saw the title I immediately thought it was another thing by the same name: Ruby Annotation. (31 May 2001, Marcin Sawicki, Michel Suignard, Masayasu Ishikawa, Martin Dürst, Tex Texin)
The sort of Ruby I had in mind was a type of markup used to add pronunciation alongside text.
This is not something Python got wrong. It's superior for the simple fact that any programmer worth their salary will indent anyway and leveraging that makes more sense. Why force a programmer to type in a brain dead curly brace or 'Next' on a 'for' loop (C and VB respectively), when your indenting has already specified what you intend?
Truly, you do not miss typing the explicit block delimiters after trying it. As far as anyone who argues that indenting code is bad goes... well get with it. Really.
Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
But I'd happily give up C compatibility and the C ABI standard for easier, more reliable bindings to native code.
What the "more reliable" part applies to? Certainly not to dependence on compiler version or on compile-time flags (e.g. --fno-exceptions). Face it, "easier" in one aspect often means "trickier" in another.
On the other hand, it'd be useful to have C++ bindings to the engine ABI, probably in the form of light inlined functions/classes and/or templates. This way, no linkage problems would blow you out of the blue.
My exception safety is -fno-exceptions.