I love Ruby - But how bright is Ruby's Future?

Entirely valid and thought-provoking point of view, and one that I'm finding
is quite characteristic of the Ruby community, perhaps indeed the defining
characteristic.

Ruby is the only programming language I know that (for specific reasons
inherent in the design of the language) has some potential to challenge the
prevailing wisdom among businesspeople who manage IT projects. Which, to
oversimplify, is that a large problem requires something at least resembling
a large team. I'm eliding some of the logical steps, but this entrains much
of what you and others (with some justification) criticize as
backside-covering.

But this goes directly against the ethos that software production is a fine
art, and that the choice of tools matters less than the quality of the
artifact. This feeling has been a recognizable characteristic of software
practitioners long before Ruby was invented, as has the concomitant
criticism of IT managers. As one of those managers, I wouldn't dream of
attempting to build a large one-off enterprise application in Java with one
or three top-quality programmers and five assistants. But someday I might
actually consider doing it in Ruby.

The best Ruby programs are small ones. This is wired into the genetics, and
the aesthetics, of the language. But small Ruby programs can be remarkably
powerful, in ways that can fundamentally change the dynamics of software
production. If this point can be made by powerful and eloquent advocates
then Ruby may become a much more widely used language. But so much depends
on the goals one chooses to pursue. Many committed Rubyists have stated many
times that Ruby should not have widespread adoption by business as a goal.
(Perhaps underneath this, there is fear that success would corrupt Ruby's
essential character. If so, that's a topic for another thread.) But this
does explain why the Ruby community has so few powerful and eloquent
advocates.

···

On 6/5/06, Matthew Smillie <M.B.Smillie@sms.ed.ac.uk> wrote:

On Jun 6, 2006, at 2:42, James Britt wrote:

> > Because I'm a businessperson, I'm always struck that people would
> > question the value of achieving greater acceptance for anything.
>
> Interesting. I'm always stuck by people who don't get think that
> everything is fair game for questioning.

It's worth questioning, because what does "acceptance in industry"
mean for a language?

In my view, it means "average".

It means "Nobody ever got fired for picking X" (canonically, of
course, X=IBM).

It means crunch-time, late nights, and all of the Mythical Man-Month
traps which are also accepted by industry.

Being accepted by industry doesn't actually provide me with anything
other than a few extra buzzword points on my CV.

More importantly, it wouldn't provide my hypothetical manager with
anything other than a false sense of security, and a small dose of
backside-covering warm fuzzy feelings, because the vast majority of
the time it isn't a question of whether or not Ruby/Python/Lisp/Java/
Smalltalk can do it, it's a question of whether or not *I* can do it,
and no amount of industry acceptance will change that.

I think it's pretty much agreed that good programmers don't need
industry acceptance of their tools to do their job.

What we ought to realise is that good managers shouldn't need it either.

matthew smillie.

Francis Cianfrocca wrote:

Because I respect you, I'm going to respond as if you're serious.

Thanks, but I am serious.

I asked one of my favorite guys to do a Ruby project three years ago. He had
never heard of Ruby but he took the project. Just as I expected, he was
right up to speed on Ruby almost immediately (essentially in one night) and
did more production-quality work in less time than all of the experienced
Rubyists on the project. With these guys, it's like their brains are
orthogonal to language issues.

One night? Right up to speed?

Ok.

Interesting. I'm always stuck by people who don't get think that

everything is fair game for questioning.

Here, you made two different points ("get" vs "think") as you decided midway
through writing the sentence to pull your punch ;-).

Really? Which of the two words did I intend to delete, but missed in my editing?

I get (and I even
think) that everything is fair game for questioning. But James, think twice
about this: not everything is WORTH questioning.

Ah, but how does one know before hand? Or should I not question this?

I'm deeply skeptical of extravagant claims and sweeping assertions.
(I'm leery of the notion of superstar programmers, but that's another
matter.)

But about Ruby popularity: I'm a businessman, too. And a coder, and an artist, and a writer, and a bunch of things. Widespread [interest|use|acceptance] of Ruby has different value to me from different perspectives, but overall it is not a big concern. That a client is aware of Ruby has, on at least one occasion, been useful. That magazine editors consider Ruby of sufficient reader interest to pay me to write articles is quite nice.

On the other hand, I wasn't drawn to Ruby because of its popularity, or
the prospect that it might one day be big. And the increase in traffic
on ruby-talk is a mixed blessing (although a false elitism is no fun
either). But here we are.

Years ago, when (once again) trying to decide what to be when I grew up
(a consideration still unresolved to this day), I read The Soul of a New
Machine, by Tracy Kidder. It describes how engineers from Data General designed and built a new 32-bit minicomputer. And very early in the book it said that the founder of the company recruited his engineers with a small ad that said, "Have fun and make money."

That's pretty much been my goal. Have fun, and make money (in that
order). And Ruby helps me do that. So long as that stays true, I'm happy.

···

--
James Britt

"Programs must be written for people to read, and only incidentally
  for machines to execute."
   - H. Abelson and G. Sussman
   (in "The Structure and Interpretation of Computer Programs)

Austin Ziegler wrote:

···

On 6/5/06, ReggW <me@yourhome.com> wrote:

Here is a list of Drivers that people *need* for Rails...
http://wiki.rubyonrails.com/rails/pages/DatabaseDrivers

Approx. 90% of these would go away if they implemented ODBC.

Then someone should post a bounty for those drivers. In open source,
people implement what they need or what others are willing to pay them
for.

Just like most open-source zealots, when presented with the facts you
change your story.

That's ok, I still love the language, but hate the mentality of *some*
of it's users/developers.

Thanks

--
Posted via http://www.ruby-forum.com/\.

You may want to check your settings, then just hit you completion key on a blank line and see if anything comes up. I get a whole slew of things. But as often the case for dynamic typing, it's not always relevant to the variable I'm dealing with.
I'm on RDT 0.8.0.604272100PRD, RadRails 0.6.3.
-Mat

···

On Jun 6, 2006, at 5:25 PM, ReggW wrote:

Mat Schaffer wrote:

On Jun 6, 2006, at 1:54 PM, James Britt wrote:

Java, then that's quite slick.

To clarify, code completion is a bit limited, but works. Refactoring
appears to be non-existent in the current release, the I get by
pretty well with Eclipse's search and replace features.
-Mat

I can't get any code completion to work with RadRails.

This is the ONLY thing that RadRails really needs, and it would be the
best Ruby/Rails IDE available.

I think JEdit has the best code completion, but it lacks the rails
features of RadRails and the ProjectViewer plug-in doesn't bring your
entire project directory structure from the hard drive.

Anyway, RadRails is almost the best IDE.

One night? Right up to speed?

Yes. And I knew he would because I'd seen him do similar things before. No,
it's not normal. But there is a remarkably small amount of really great
software in the world (although I think my definition of great probably
differs from yours), and much of it is written by that kind of guy.

Interesting. I'm always stuck by people who don't get think that

everything is fair game for questioning.
The fact that "get think" makes this an invalid English sentence suggests to
me (perhaps wrongly) that you changed your thought midway through. Not a
point worth arguing.

"I get (and I even think) that everything is fair game for questioning. But
James, think twice about this: not everything is WORTH questioning."

Ah, but how does one know before hand? Or should I not question this?

Ah, but this is a very important question. How do you know beforehand?
Experience and TASTE. I've learned to recognize and pay a lot of attention
to people who have a knack for recognizing what are the important questions,
and which are the minor side issues. People who are good at this tend to
become leaders.

Austin Ziegler wrote:
>> Here is a list of Drivers that people *need* for Rails...
>> http://wiki.rubyonrails.com/rails/pages/DatabaseDrivers
>>
>> Approx. 90% of these would go away if they implemented ODBC.
>
> Then someone should post a bounty for those drivers. In open source,
> people implement what they need or what others are willing to pay them
> for.
>
Just like most open-source zealots, when presented with the facts you
change your story.

You *really* don't want to take that attitude with me. You don't know
me and you obviously don't know what contributions that I *have* made
in the past and will make again as soon as I find time. I'm not trying
to toot my own horn, but basically what I'm saying is that no one is
going to do your ODBC drivers for you unless there's something in it
for them.

I, for one, have no need for ODBC drivers for Rails.

Why? Because I don't use Rails. That's right. I don't use Rails.

So why would I *possibly* do anything to support the development of
ODBC drivers for Rails?

You, however, use Rails. You, however, seem to need ODBC drivers. So
... why aren't you developing them or making the effort to make sure
that they do get developed? Or is it just easier to whine that Rails
doesn't have ODBC drivers?

My story on this hasn't changed, Regg. If you look closely, you'll see
that I've always been pushing you toward getting someone to develop
the drivers for you. If you're not going to do it yourself, complain
to your database vendor that you need Rails support. If they don't
listen, find out whom else needs what you need and post a bounty to
get it done.

That's ok, I still love the language, but hate the mentality of *some*
of it's users/developers.

Try again. You're not talking to someone who has that mentality. I
would strongly suggest you google some of your correspondents -- not
just me -- before you start spouting off "open source zealot." I, for
one, am nothing of the sort. I'm just not your unpaid code monkey,
either.

-austin

···

On 6/6/06, ReggW <me@yourhome.com> wrote:

> On 6/5/06, ReggW <me@yourhome.com> wrote:

--
Austin Ziegler * halostatue@gmail.com
               * Alternate: austin@halostatue.ca

Me, too. Only *very* few, but congratulations - you made the list
already.

(I'm really getting the feeling from both the ML and the newsgroup that
we're being deliberately baited just lately. Anyone else noticing that,
or am I being paranoid?).

···

On Tue, 2006-06-06 at 13:43 +0900, ReggW wrote:

That's ok, I still love the language, but hate the mentality of *some*
of it's users/developers.

--
Ross Bamford - rosco@roscopeco.REMOVE.co.uk

Francis Cianfrocca wrote:

Ruby is the only programming language I know that (for specific reasons
inherent in the design of the language) has some potential to
challenge the
prevailing wisdom among businesspeople who manage IT projects. Which, to
oversimplify, is that a large problem requires something at least
resembling
a large team. I'm eliding some of the logical steps, but this entrains
much
of what you and others (with some justification) criticize as
backside-covering.

Well ... I suppose it depends on how you define "large problem". Let's
assume, for example, that you have a well-behaved business problem whose
natural solution algorithm uses resources that grow no faster than N log
N, where N is the size of the inputs. A prototypical such problem is
sorting.

That may be a large problem, given, say, trillions of records to sort
through. But it does not require a wide variety of domain expertises,
and as far as I can tell is no easier in Ruby than in any other
language, including some very old ones.

In the scientific realm, consider the problem of hurricane forecasting.
Again, there isn't a wide variety of domain expertises required,
although just about everybody understands sorting and not just about
everybody understands partial differential equations and atmospheric
physics. This is also a problem for which it is highly unlikely that a
Ruby solution would be proposed.

So there are two examples of large problems which would not necessarily
require a large team. I'm sure there are numerous others -- Google has a
solution to one of them at its core.

I think perhaps you're mistaking "large team required" with "non-agile
process required" and unconsciously linking agile processes with Ruby.
I've seen a lot of programming languages, both general purpose and
special purpose, and I guess I'm not convinced that Ruby is the "best"
general purpose language, or even significantly "better" than, say,
Java, Ada, or even Common Lisp.

But this goes directly against the ethos that software production is a
fine
art, and that the choice of tools matters less than the quality of the
artifact. This feeling has been a recognizable characteristic of software
practitioners long before Ruby was invented, as has the concomitant
criticism of IT managers. As one of those managers, I wouldn't dream of
attempting to build a large one-off enterprise application in Java
with one
or three top-quality programmers and five assistants. But someday I might
actually consider doing it in Ruby.

Pure Ruby, or Ruby plus Rails plus all of the other tools that have
sprung up from Ruby? And what about .NET?

The best Ruby programs are small ones. This is wired into the
genetics, and
the aesthetics, of the language. But small Ruby programs can be
remarkably
powerful, in ways that can fundamentally change the dynamics of software
production. If this point can be made by powerful and eloquent advocates
then Ruby may become a much more widely used language.

I don't think this is true only of Ruby. Small, elegant solutions to
problems can be powerful in quite a few other languages. The ones that
spring to my mind right now are Lisp, Forth, APL, R and SmallTalk. And
one other that probably doesn't spring to many minds except my own these
days -- macro assembly language. :slight_smile:

And I can think of languages where it isn't true -- Fortran, C, COBOL
are the obvious ones. And then there are "borderline cases" -- Perl and
Java are the two that I know of. I don't know enough Python or PHP to
classify them.

But so much depends
on the goals one chooses to pursue. Many committed Rubyists have
stated many
times that Ruby should not have widespread adoption by business as a
goal.
(Perhaps underneath this, there is fear that success would corrupt Ruby's
essential character. If so, that's a topic for another thread.) But this
does explain why the Ruby community has so few powerful and eloquent
advocates.

I wonder if a language can "have a goal". Ruby, like some other
languages, is a community that sprung up around a creative force, in
this case Matz. Perl sprung up around Larry Wall, Lisp around John
McCarthy, APL around Ken Iverson and Forth around Chuck Moore.

John McCarthy's goal was to create a computer that could take advice.
Chuck Moore's goal was to write a lot of programs in a compact way. Ken
Iverson's goal was to bring the tools of mathematical formalism to
programming. As far as I know, none of them -- Larry Wall and Matz
included -- had as a goal getting rich, or world domination, or creating
the "best" computer language.

I think Ruby *does* have powerful and eloquent advocates. I'm just not
sure they are advocating Ruby so much as they are advocating agile
processes, metaprogramming, domain-specific languages, "duck typing",
dynamic languages, and, of course, Rails. :slight_smile:

···

--
M. Edward (Ed) Borasky

http://linuxcapacityplanning.com

I think assume that he means how are you sure that he didn't initially
make a milder comment, then decide to throw a punch?

Anyway, there have been countless threads on whether Ruby can be
accepted by "the enterprise." Doing a search will cover the the same
tired arguments that reappear.

In my opinion, "the enterprise" is full of people who are too stupid
to use Ruby. I read a lot of comments about how to lock Ruby down a
bit more so that it's more accessible to larger teams...what they're
really asking is how to dumb it down for less capable programmers.
Bottom line is that the people who are capable enough and have the
desire to use Ruby are in positions where higher ups tell them to get
things done, and don't care about how.

Nobody would ever ask, "How do I make a stock car safer for my toddler
to drive?"

Pat

···

On 6/5/06, Francis Cianfrocca <garbagecat10@gmail.com> wrote:

>>>Interesting. I'm always stuck by people who don't get think that
everything is fair game for questioning.
The fact that "get think" makes this an invalid English sentence suggests to
me (perhaps wrongly) that you changed your thought midway through. Not a
point worth arguing.

Francis Cianfrocca wrote:

...
Ah, but this is a very important question. How do you know beforehand?
Experience and TASTE. I've learned to recognize and pay a lot of attention
to people who have a knack for recognizing what are the important questions,
and which are the minor side issues. People who are good at this tend to
become leaders.

Ah. Well, you've just made something very clear for me.

Thank you.

···

--
James Britt

"Blanket statements are over-rated"

Yep. Like GWB.

<ducks>

phil

···

On 6/5/06, Francis Cianfrocca <garbagecat10@gmail.com> wrote:

>>>One night? Right up to speed?
Yes. And I knew he would because I'd seen him do similar things before. No,
it's not normal. But there is a remarkably small amount of really great
software in the world (although I think my definition of great probably
differs from yours), and much of it is written by that kind of guy.

>>>Interesting. I'm always stuck by people who don't get think that
everything is fair game for questioning.
The fact that "get think" makes this an invalid English sentence suggests to
me (perhaps wrongly) that you changed your thought midway through. Not a
point worth arguing.

"I get (and I even think) that everything is fair game for questioning. But
James, think twice about this: not everything is WORTH questioning."

>>>>>Ah, but how does one know before hand? Or should I not question this?

Ah, but this is a very important question. How do you know beforehand?
Experience and TASTE. I've learned to recognize and pay a lot of attention
to people who have a knack for recognizing what are the important questions,
and which are the minor side issues. People who are good at this tend to
become leaders.

Austin Ziegler wrote:

···

On 6/6/06, ReggW <me@yourhome.com> wrote:

>
Just like most open-source zealots, when presented with the facts you
change your story.

You *really* don't want to take that attitude with me.

Why...are you going to beat me up?

--
Posted via http://www.ruby-forum.com/\.

Large problems: you're playing word games with me. "Large" has many
meanings. Two that are germane to my point are: information systems with an
extremely long anticipated lifetime (meaning that it's unwise to expect the
original developers to stay committed to it), and systems that cut across a
large number of knowledge domains in a single organization (meaning you
can't leverage the expertise of a world full of developers). A lot of
resources go into solving problems that are understood along these lines,
and a lot of those resources get wasted. THAT is a problem that's worth
solving. Ruby could be part of the solution, if more of the community were
interested in the problem.

Advocacy: you make a compelling point that the advocacy around Ruby is part
of the more general enthusiasm for agile development and dynamic languages.
Well and good, so long as your focus is on computer programs as
beautifully-crafted artifacts. But this advocacy is largely meaningless
several steps higher, where decisions are made about which computer programs
to fund the development of. A different kind of advocacy is required there,
and it's becoming clear to me that Ruby advocacy probably doesn't belong at
that level. The original topic of this thread was Ruby's future. It may be
that Ruby's future is all about projects that are undertaken for love, not
money. And there's nothing wrong with that.

···

On 6/7/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

Francis Cianfrocca wrote:
> Ruby is the only programming language I know that (for specific reasons
> inherent in the design of the language) has some potential to
> challenge the
> prevailing wisdom among businesspeople who manage IT projects. Which, to
> oversimplify, is that a large problem requires something at least
> resembling
> a large team. I'm eliding some of the logical steps, but this entrains
> much
> of what you and others (with some justification) criticize as
> backside-covering.
Well ... I suppose it depends on how you define "large problem". Let's
assume, for example, that you have a well-behaved business problem whose
natural solution algorithm uses resources that grow no faster than N log
N, where N is the size of the inputs. A prototypical such problem is
sorting.

That may be a large problem, given, say, trillions of records to sort
through. But it does not require a wide variety of domain expertises,
and as far as I can tell is no easier in Ruby than in any other
language, including some very old ones.

In the scientific realm, consider the problem of hurricane forecasting.
Again, there isn't a wide variety of domain expertises required,
although just about everybody understands sorting and not just about
everybody understands partial differential equations and atmospheric
physics. This is also a problem for which it is highly unlikely that a
Ruby solution would be proposed.

So there are two examples of large problems which would not necessarily
require a large team. I'm sure there are numerous others -- Google has a
solution to one of them at its core.

I think perhaps you're mistaking "large team required" with "non-agile
process required" and unconsciously linking agile processes with Ruby.
I've seen a lot of programming languages, both general purpose and
special purpose, and I guess I'm not convinced that Ruby is the "best"
general purpose language, or even significantly "better" than, say,
Java, Ada, or even Common Lisp.
>
> But this goes directly against the ethos that software production is a
> fine
> art, and that the choice of tools matters less than the quality of the
> artifact. This feeling has been a recognizable characteristic of
software
> practitioners long before Ruby was invented, as has the concomitant
> criticism of IT managers. As one of those managers, I wouldn't dream of
> attempting to build a large one-off enterprise application in Java
> with one
> or three top-quality programmers and five assistants. But someday I
might
> actually consider doing it in Ruby.
Pure Ruby, or Ruby plus Rails plus all of the other tools that have
sprung up from Ruby? And what about .NET?
>
> The best Ruby programs are small ones. This is wired into the
> genetics, and
> the aesthetics, of the language. But small Ruby programs can be
> remarkably
> powerful, in ways that can fundamentally change the dynamics of software
> production. If this point can be made by powerful and eloquent advocates
> then Ruby may become a much more widely used language.
I don't think this is true only of Ruby. Small, elegant solutions to
problems can be powerful in quite a few other languages. The ones that
spring to my mind right now are Lisp, Forth, APL, R and SmallTalk. And
one other that probably doesn't spring to many minds except my own these
days -- macro assembly language. :slight_smile:

And I can think of languages where it isn't true -- Fortran, C, COBOL
are the obvious ones. And then there are "borderline cases" -- Perl and
Java are the two that I know of. I don't know enough Python or PHP to
classify them.

> But so much depends
> on the goals one chooses to pursue. Many committed Rubyists have
> stated many
> times that Ruby should not have widespread adoption by business as a
> goal.
> (Perhaps underneath this, there is fear that success would corrupt
Ruby's
> essential character. If so, that's a topic for another thread.) But this
> does explain why the Ruby community has so few powerful and eloquent
> advocates.
I wonder if a language can "have a goal". Ruby, like some other
languages, is a community that sprung up around a creative force, in
this case Matz. Perl sprung up around Larry Wall, Lisp around John
McCarthy, APL around Ken Iverson and Forth around Chuck Moore.

John McCarthy's goal was to create a computer that could take advice.
Chuck Moore's goal was to write a lot of programs in a compact way. Ken
Iverson's goal was to bring the tools of mathematical formalism to
programming. As far as I know, none of them -- Larry Wall and Matz
included -- had as a goal getting rich, or world domination, or creating
the "best" computer language.

I think Ruby *does* have powerful and eloquent advocates. I'm just not
sure they are advocating Ruby so much as they are advocating agile
processes, metaprogramming, domain-specific languages, "duck typing",
dynamic languages, and, of course, Rails. :slight_smile:

--
M. Edward (Ed) Borasky

http://linuxcapacityplanning.com

I wanted to also include a mention of the Google summer of Code project
where many great projects are being worked on currently to further
contribute to the ruby community, rubys future definetely seems less grimm
each day. I do believe as long as you can justify and actualize it's use
beneficially for your applications, it is going to remain a useful tool.

Benjamin

ReggW wrote:

Austin Ziegler wrote:

>
Just like most open-source zealots, when presented with the facts you
change your story.

You *really* don't want to take that attitude with me.

Why...are you going to beat me up?

Very mature guys ....

The point of a programming language is to solve a specific problem.
Some languages are better suited for solving certain problems compared
to others. For example, C is great for having total control of memory
and ensuring that the code executed can perform at an optimal level, but
there are definitely times such performance constraints don't exist ...
and then managed programming languages are better options.

This is to address the origional author's statement of not learning many
programming languages; to leverage languages effectively you need to
know them, or need to be able to pick them up quickly ... or at least
certain types of languages. I suggest understanding unmanaged code (C,
C++), managed code (Java, C#), and then the "dynamic" languages (Python,
Ruby, etc). The differences between dynamic and managed languages are
mainly that managed languages are compiled while dynamic languages are
in some form interpreted. Also most dynamic languages are dynamically
typed, compared to static typing (declaring a variable of a type that
can not be changed). This provides flexability and most programmers
find it easier to work with.

In short, languages are a tool. If you've got a nail, you don't try to
drill it in; you use a hammer. Using a language that is not suited for
the problem is like trying to force that nail in with a drill. So I
suggest using the knowledge people have given in this thread and decide
whether Ruby is a tool you want to apply to the problems you are trying
to solve.

~Jimmy

···

On 6/6/06, ReggW <me@yourhome.com> wrote:

--
Posted via http://www.ruby-forum.com/\.

Oh, good god. Once again, ruby-forum demonstrates its that it's the
cess-pit of Ruby users.

No, Regg, I'm not going to "beat you up." You don't want to take that
attitude with me because you're going to alienate me (and probably
others) from *wanting* to help you. Based on your responses, it seems
that you think that it's your god-given right to have the
functionality *you* need in an open-source mostly-volunteer project.

Guess what: you don't. You sometimes have to pay for what you need.
And sometimes, just sometimes, you can't even do that. (I have had
people offer to pay me to do certain features on PDF::Writer. I have
appreciated the offers, but I don't have time to work on PDF::Writer
right now because of a *lot* of reasons, but I'll have time later and
I have my own priorities with PDF::Writer.)

-austin

···

On 6/6/06, ReggW <me@yourhome.com> wrote:

Austin Ziegler wrote:
> On 6/6/06, ReggW <me@yourhome.com> wrote:
>> Just like most open-source zealots, when presented with the facts you
>> change your story.
> You *really* don't want to take that attitude with me.
Why...are you going to beat me up?

--
Austin Ziegler * halostatue@gmail.com
               * Alternate: austin@halostatue.ca

Francis Cianfrocca wrote:

Large problems: you're playing word games with me. "Large" has many
meanings. Two that are germane to my point are: information systems
with an
extremely long anticipated lifetime (meaning that it's unwise to
expect the
original developers to stay committed to it), and systems that cut
across a
large number of knowledge domains in a single organization (meaning you
can't leverage the expertise of a world full of developers). A lot of
resources go into solving problems that are understood along these lines,
and a lot of those resources get wasted. THAT is a problem that's worth
solving. Ruby could be part of the solution, if more of the community
were
interested in the problem.

As in "Enterprise Integration With Ruby?" Yeah ... I probably write what
you'd call "enterprise integration" but what I call "glue logic" in
Perl. That's mostly because I learned Perl 4 about ten years ago and
haven't needed anything better, except for math, where I have R. But I'm
a "domain expert" in performance engineering, monitoring, analysis, etc.
-- at least that's my role at present. Nobody would ask me to write a
web application. If they did, it would undoubtedly be in either .NET or
PHP, not Ruby.

Long lifetimes ... is that air traffic control system from the late
1960s still up and running? :slight_smile: The one that was written in System\360
Assembler, PL/I and probably some other languages? Is Chuck Moore's Kitt
Peak Forth code still driving that telescope? Has NASTRAN been ported
from Fortran to some more "modern" language?

Resources wasted? That's a "fundamental law of nature" having to do with
large teams starting to exhibit behavior reminiscent of gas dynamics. I
don't see how Ruby changes the realities of large teams, any more than
any other "magic bullet" has in the 44 years I've been programming. If
the "Ruby community" isn't interested in *that* problem, more power to
them! :slight_smile:

Advocacy: you make a compelling point that the advocacy around Ruby is
part
of the more general enthusiasm for agile development and dynamic
languages.
Well and good, so long as your focus is on computer programs as
beautifully-crafted artifacts. But this advocacy is largely meaningless
several steps higher, where decisions are made about which computer
programs
to fund the development of. A different kind of advocacy is required
there,
and it's becoming clear to me that Ruby advocacy probably doesn't
belong at
that level. The original topic of this thread was Ruby's future. It
may be
that Ruby's future is all about projects that are undertaken for love,
not
money. And there's nothing wrong with that.

Yeah ... Ruby is certainly a beautifully-crafted artifact. It's perhaps
more complicated than it needs to be, especially when you compare it
with the stark simplicity of Lisp, Forth or LIW microcode. Any language
with "lambda" is OK in my book. :slight_smile:

···

On 6/7/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

Francis Cianfrocca wrote:
> Ruby is the only programming language I know that (for specific
reasons
> inherent in the design of the language) has some potential to
> challenge the
> prevailing wisdom among businesspeople who manage IT projects.
Which, to
> oversimplify, is that a large problem requires something at least
> resembling
> a large team. I'm eliding some of the logical steps, but this entrains
> much
> of what you and others (with some justification) criticize as
> backside-covering.
Well ... I suppose it depends on how you define "large problem". Let's
assume, for example, that you have a well-behaved business problem whose
natural solution algorithm uses resources that grow no faster than N log
N, where N is the size of the inputs. A prototypical such problem is
sorting.

That may be a large problem, given, say, trillions of records to sort
through. But it does not require a wide variety of domain expertises,
and as far as I can tell is no easier in Ruby than in any other
language, including some very old ones.

In the scientific realm, consider the problem of hurricane forecasting.
Again, there isn't a wide variety of domain expertises required,
although just about everybody understands sorting and not just about
everybody understands partial differential equations and atmospheric
physics. This is also a problem for which it is highly unlikely that a
Ruby solution would be proposed.

So there are two examples of large problems which would not necessarily
require a large team. I'm sure there are numerous others -- Google has a
solution to one of them at its core.

I think perhaps you're mistaking "large team required" with "non-agile
process required" and unconsciously linking agile processes with Ruby.
I've seen a lot of programming languages, both general purpose and
special purpose, and I guess I'm not convinced that Ruby is the "best"
general purpose language, or even significantly "better" than, say,
Java, Ada, or even Common Lisp.
>
> But this goes directly against the ethos that software production is a
> fine
> art, and that the choice of tools matters less than the quality of the
> artifact. This feeling has been a recognizable characteristic of
software
> practitioners long before Ruby was invented, as has the concomitant
> criticism of IT managers. As one of those managers, I wouldn't
dream of
> attempting to build a large one-off enterprise application in Java
> with one
> or three top-quality programmers and five assistants. But someday I
might
> actually consider doing it in Ruby.
Pure Ruby, or Ruby plus Rails plus all of the other tools that have
sprung up from Ruby? And what about .NET?
>
> The best Ruby programs are small ones. This is wired into the
> genetics, and
> the aesthetics, of the language. But small Ruby programs can be
> remarkably
> powerful, in ways that can fundamentally change the dynamics of
software
> production. If this point can be made by powerful and eloquent
advocates
> then Ruby may become a much more widely used language.
I don't think this is true only of Ruby. Small, elegant solutions to
problems can be powerful in quite a few other languages. The ones that
spring to my mind right now are Lisp, Forth, APL, R and SmallTalk. And
one other that probably doesn't spring to many minds except my own these
days -- macro assembly language. :slight_smile:

And I can think of languages where it isn't true -- Fortran, C, COBOL
are the obvious ones. And then there are "borderline cases" -- Perl and
Java are the two that I know of. I don't know enough Python or PHP to
classify them.

> But so much depends
> on the goals one chooses to pursue. Many committed Rubyists have
> stated many
> times that Ruby should not have widespread adoption by business as a
> goal.
> (Perhaps underneath this, there is fear that success would corrupt
Ruby's
> essential character. If so, that's a topic for another thread.) But
this
> does explain why the Ruby community has so few powerful and eloquent
> advocates.
I wonder if a language can "have a goal". Ruby, like some other
languages, is a community that sprung up around a creative force, in
this case Matz. Perl sprung up around Larry Wall, Lisp around John
McCarthy, APL around Ken Iverson and Forth around Chuck Moore.

John McCarthy's goal was to create a computer that could take advice.
Chuck Moore's goal was to write a lot of programs in a compact way. Ken
Iverson's goal was to bring the tools of mathematical formalism to
programming. As far as I know, none of them -- Larry Wall and Matz
included -- had as a goal getting rich, or world domination, or creating
the "best" computer language.

I think Ruby *does* have powerful and eloquent advocates. I'm just not
sure they are advocating Ruby so much as they are advocating agile
processes, metaprogramming, domain-specific languages, "duck typing",
dynamic languages, and, of course, Rails. :slight_smile:

--
M. Edward (Ed) Borasky

http://linuxcapacityplanning.com

--
M. Edward (Ed) Borasky

http://linuxcapacityplanning.com

Large problems: you're playing word games with me. "Large" has many
meanings. Two that are germane to my point are: information systems with an
extremely long anticipated lifetime (meaning that it's unwise to expect the
original developers to stay committed to it), and systems that cut across a
large number of knowledge domains in a single organization (meaning you
can't leverage the expertise of a world full of developers). A lot of
resources go into solving problems that are understood along these lines,
and a lot of those resources get wasted. THAT is a problem that's worth
solving. Ruby could be part of the solution, if more of the community were
interested in the problem.

I think it's important to remember that you're talking about a distinct class of businesses; businesses that are too big and varied to buy off-the-shelf software, but who aren't involved in full-time software development (and either staff-up or contract-out as needed on a project-by-project basis). It's a very large class of businesses, I admit, quite likely it's the large majority of the available market for programmers, but it's not all businesses, which will be important later on.

In any case, it's interesting that you think these are problems which are solvable via language design (or by a particular language). If you ask me, they're problems of management; I'll split up my analysis below.

1: long lifetimes.

For small values of "long" (say, 5-10 years, though this will vary by domain) the language will have some impact - languages which encourage self-documentation will have a slight advantage over languages which don't, given similar standards and practices within the organisation, but it's those standards and practices which will have the largest impact. This is a problem of management and engineering, the realm of specifications and documentation and requirements; it's essentially language-agnostic.

For medium values of long, your implementation is going to become obsolescent, especially if you don't periodically renovate/reimplement it. I expect this to be less of an issue between now and 2030 than it was, say, between 1975 and Y2K, but I believe there's a very solid economic reason to that obsolescence is the norm (which I'll briefly discuss below), regardless of your choice of language.

For big values of long - your guess is likely as good as mine, but I'd pick Lisp. Four decades and still going strong.

2: organisation-specific knowledge.

Again, this is primarily an issue of management; it includes system design and specification, organisational history, and also the retention of those individuals who incorporate that knowledge. If those processes fail, there's little that the choice of language can do to compensate for that.

Advocacy: you make a compelling point that the advocacy around Ruby is part
of the more general enthusiasm for agile development and dynamic languages.
Well and good, so long as your focus is on computer programs as
beautifully-crafted artifacts. But this advocacy is largely meaningless
several steps higher, where decisions are made about which computer programs
to fund the development of. A different kind of advocacy is required there,
and it's becoming clear to me that Ruby advocacy probably doesn't belong at
that level.

And there's the big disconnect: management decisions are made for economic reasons, not purely technical ones, and there are big economic factors throwing their weight around:

First: [Freely-available] Computer languages and their associated libraries approximate public goods (I am aware of theoretical nits that might be picked with this assertion). From a business perspective, they represent a positive externality; businesses benefit from the production of these goods ("language design") while contributing little to it. Typical profit-motivated businesses either can't afford or wouldn't be willing to fund language design simply to support their own projects, they instead rely on individuals with significantly different economic motivations to design these languages and libraries.

The catch is that unlike typical examples of beneficial externalities in business (e.g. the road network), languages can change at a pace faster than or comparable to the business itself. This is one reason why projects tend towards obsolescence: current languages evolve, their libraries change, deprecation ensues (Java), some fall out of fashion (COBOL, Fortran), new languages are created (Perl, Python, Ruby), some come back into fashion (Lisp), and so on. In the maintenance phase of its life-cycle, your system is essentially static with respect to this churn. Without a direct involvement in the process of language design - which the typical business doesn't pursue - the odds are very much higher that your system will be left behind.

The second big economic gorilla is the fact that for a certain type of production - into which most 'enterprise' software falls - profit is maximised at the expense of efficiency. If someone using technically-sophisticated methods to accomplish a project should leave, the cost of replacing them (basically, the time it takes to find someone with equivalent knowledge + the time it takes the replacement to get up to speed with the existing work/start over) is quite high, but such methods are more efficient and will get the job done faster. On the other hand, it's easier to replace people working using less sophisticated methods, but such methods are less efficient and the project will take longer.

Accounting for this risk/efficiency trade-off, profit ends up getting maximised somewhere in the middle of the efficiency spectrum - a middle currently occupied quite comfortably by Java and .NET. "Business acceptance" in this regard is highly correlated to 'dumbing-down' the language to make it more suitable for less-skilled (rather, de-skilled) labour.

The original topic of this thread was Ruby's future. It may be
that Ruby's future is all about projects that are undertaken for love, not
money. And there's nothing wrong with that.

You may be right, but I'm willing to bet that you're only right insofar as you mean *your* money.

The economic motivations of businesses mentioned above are often contrary to the economic interests of the programmers they employ. Where businesses have a motivation *not* to invest in the production of public goods such as languages and libraries, programmers do have such motivation; both in a higher value on non-monetary reward (typical in particular of language developers), and as a method of ensuring that they don't have to pay to practice their trade[1]. Where businesses have a motivation towards average, simple systems, programmers (on the whole) would prefer working on interesting and sophisticated ones, again both for monetary reasons (better pay or the strong likelihood of better pay in the future) and non-monetary ones (intellectual stimulation and less chance of terminal ennui in the future).

Recent changes in the programming industry have meant that programmers can now pursue their own economic interests more freely, instead of relying upon "business acceptance" for economic security (and the associated compromise of their own interests).

Opportunities to pursue technically-sophisticated projects have grown enormously: from Google's Summer of Code to a few paid hours a week at your usual job to contribute to an open-source project, to grants and full-time employment on open source projects. In the private sector, Google, Microsoft, NTL, and IBM all have well-funded and diverse research divisions. I'd say that even academic opportunities are improving (this is harder to quantify, since it occurs over longer periods, though certainly industry-associated funding is rising). It's feasible to say that this class of businesses has benefited from aligning their interests with the programmer's interests, rather than forcing it the other way around.

And as a result, "business acceptance" in its traditional sense is becoming less relevant to language design because typical businesses are contributing less to language design; essentially nothing in direct terms, and even their marginal contribution of providing jobs to direct contributors (i.e. jobs not involving those contributions) is proportionally lower than it ever has been.

matthew smillie.

[1] Take the hypothetical situation where a company requires as part of their license terms that everyone programming with their language and/or library holds a certification (which only they provide).

···

On Jun 7, 2006, at 6:25, Francis Cianfrocca wrote:

James Schementi wrote:

ReggW wrote:

Austin Ziegler wrote:

>
Just like most open-source zealots, when presented with the facts you
change your story.

You *really* don't want to take that attitude with me.

Why...are you going to beat me up?

Very mature guys ....

I'm just poking fun as Austin :slight_smile:

Lighten up...

···

On 6/6/06, ReggW <me@yourhome.com> wrote:

--
Posted via http://www.ruby-forum.com/\.

Austin Ziegler wrote:

Austin Ziegler wrote:
>> Just like most open-source zealots, when presented with the facts you
>> change your story.
> You *really* don't want to take that attitude with me.
Why...are you going to beat me up?

No, Regg, I'm not going to "beat you up." You don't want to take that
attitude with me because you're going to alienate me (and probably
others) from *wanting* to help you. Based on your responses, it seems
that you think that it's your god-given right to have the
functionality *you* need in an open-source mostly-volunteer project.

Austin, I was only poking fun at you, no harm was meant :slight_smile:

Also, I'm not looking for help. I'm only airing some of my concerns with
Ruby's decision and direction.

It's ok for you and I to disagree on some issues.
Thru these types of disagreements and discussions comes some very
enlightening details.

For one you have informed me that I have been dealing with the wrong
website in getting the latest Ruby information.
Also, that there may be a new product (YARV/Rite) that may help with
some of my concerns.

Thanks

···

On 6/6/06, ReggW <me@yourhome.com> wrote:

> On 6/6/06, ReggW <me@yourhome.com> wrote:

--
Posted via http://www.ruby-forum.com/\.