[#343034] RUBY vs COMMON LISP — fft1976 <fft1976@...>

On Aug 1, 8:55=A0pm, p...@informatimago.com (Pascal J. Bourguignon)

16 messages 2009/08/02

[#343054] Inconsistency in Array#[] — Wojciech Piekutowski <w.piekutowski@...>

Disclaimer: I know what docs say, but I'd prefer a different

14 messages 2009/08/02

[#343135] Kind of ParsTree for 1.9.1 — Macario Ortega <macarui@...>

22 messages 2009/08/04

[#343186] Bizarre Range behavior — Scott Briggs <scott.br@...>

Can someone please explain this behavior in ruby (1.8.6p111):

42 messages 2009/08/04
[#343187] Re: Bizarre Range behavior — Yossef Mendelssohn <ymendel@...> 2009/08/04

On Aug 4, 1:47=A0pm, Scott Briggs <scott...@gmail.com> wrote:

[#343193] Re: Bizarre Range behavior — Rob Biedenharn <Rob@...> 2009/08/04

On Aug 4, 2009, at 3:04 PM, Yossef Mendelssohn wrote:

[#343196] Re: Bizarre Range behavior — "Matthew K. Williams" <matt@...> 2009/08/04

On Wed, 5 Aug 2009, Rob Biedenharn wrote:

[#343199] Re: Bizarre Range behavior — Rob Biedenharn <Rob@...> 2009/08/04

On Aug 4, 2009, at 3:45 PM, Matthew K. Williams wrote:

[#343234] Re: Bizarre Range behavior — Yukihiro Matsumoto <matz@...> 2009/08/05

Hi,

[#343251] Re: Bizarre Range behavior — Brian Candler <b.candler@...> 2009/08/05

Yukihiro Matsumoto wrote:

[#343261] Re: Bizarre Range behavior — Yukihiro Matsumoto <matz@...> 2009/08/05

Hi,

[#343266] Re: Bizarre Range behavior — "David A. Black" <dblack@...> 2009/08/05

Hi --

[#343272] Re: Bizarre Range behavior — Yukihiro Matsumoto <matz@...> 2009/08/05

Hi,

[#343273] Re: Bizarre Range behavior — Rick DeNatale <rick.denatale@...> 2009/08/05

On Wed, Aug 5, 2009 at 12:21 PM, Yukihiro Matsumoto<matz@ruby-lang.org> wro=

[#343235] remove commas from string — Jason Lillywhite <jason.lillywhite@...>

I have following string:

14 messages 2009/08/05

[#343288] including gems with standalone app — Eric Peterson <ericdp@...>

Morning,

10 messages 2009/08/05

[#343320] 1.9 String and M17N documentation — Brian Candler <b.candler@...>

I have put together a document which tries to outline the M17N

20 messages 2009/08/06
[#343351] Re: [ANN] 1.9 String and M17N documentation — James Gray <james@...> 2009/08/06

On Aug 6, 2009, at 6:47 AM, Brian Candler wrote:

[#343378] Re: [ANN] 1.9 String and M17N documentation — Eric Hodel <drbrain@...7.net> 2009/08/07

On Aug 6, 2009, at 08:57, James Gray wrote:

[#343423] How do I add ? — chutsu <chutsu@...>

I've got a file that is in two columns, how do I add the second column

14 messages 2009/08/07

[#343566] Reading contents of a file and storing — Shekar Ls <idealone5@...>

Guys,

14 messages 2009/08/10

[#343592] Destroying related objects doubt ... basic oop question — Soh Dubom <sohdubom@...>

::Destroying related objects doubt

16 messages 2009/08/10
[#343726] Re: Destroying related objects doubt ... basic oop question — Mike Stephens <rubfor@...> 2009/08/12

Yet another reason for steering well clear of object-relational mappers.

[#343751] Re: Destroying related objects doubt ... basic oop question — Fabian Streitel <karottenreibe@...> 2009/08/12

> Yet another reason for steering well clear of object-relational mappers.

[#343649] Good editor for Windows Ruby — Peter Bailey <pbailey@...>

Hello,

21 messages 2009/08/11

[#343658] Readline not working with Ruby — Stewart <stewart.matheson@...>

24 messages 2009/08/11

[#343756] Class#descendants? — Jason Lillywhite <jason.lillywhite@...>

Ruby can do Class#ancestors but not Class#descendants.

18 messages 2009/08/12
[#343757] Re: Class#descendants? — Joel VanderWerf <vjoel@...> 2009/08/12

Jason Lillywhite wrote:

[#343771] skip_before_filter (Do I need a lesson in modules/mixins?) — Cris Shupp <cshupp1@...>

Gurus,

13 messages 2009/08/12

[#343831] newbie question making a folder with ruby — Simon Staton <simon@...>

ok well the program I am in the middle of programming I need it to

20 messages 2009/08/13
[#343851] Re: newbie question making a folder with ruby — Lui Core <usurffx@...> 2009/08/13

Simon Staton wrote:

[#343898] Re: newbie question making a folder with ruby — Simon Staton <simon@...> 2009/08/14

Lui Core wrote:

[#343902] Re: newbie question making a folder with ruby — Simon Staton <simon@...> 2009/08/14

To give more of an idea this is the code that I have on the .rb file. it

[#343920] Class method aliased in superclass bypasses subclass overrides — Marcos <markjreed@...>

This seems like it should work:

11 messages 2009/08/14

[#344009] start_with? Does someone need a grammar lesson? — 7stud -- <bbxx789_05ss@...>

String#start_with?-------------------------------

15 messages 2009/08/17

[#344088] fromdos dos2unix in ruby — Krzysztof Cierpisz <ciapecki@...>

how can I achieve in ruby the result of running:

18 messages 2009/08/18
[#344103] Re: fromdos dos2unix in ruby — krzysztof cierpisz <ciapecki@...> 2009/08/18

>

[#344109] Re: fromdos dos2unix in ruby — Robert Klemme <shortcutter@...> 2009/08/18

2009/8/18 krzysztof cierpisz <ciapecki@gmail.com>:

[#344125] exercise in DRY — Peter Ehrlich <crazedcougar@...>

I have some simple code for a thumbs up/thumbs down functionality.

13 messages 2009/08/18

[#344180] #has_arguments? — Intransition <transfire@...>

Messing with optional argument check for the umpteenth time, eg.

23 messages 2009/08/19

[#344218] Confirm my Performance Test Against Java? — Ben Christensen <benjchristensen@...>

I'm evaluating Ruby for use in a variety of systems that are planned by

40 messages 2009/08/19
[#344222] Re: Confirm my Performance Test Against Java? — brabuhr@... 2009/08/19

On Wed, Aug 19, 2009 at 9:31 AM, Ben Christensen

[#344342] extending ruby - handling errors — Jason Lillywhite <jason.lillywhite@...>

I want to raise an ArgumentError, "Function only takes numeric objects."

11 messages 2009/08/20

[#344345] How do I estimate how long it will take a calculation to complete? — Paul <tester.paul@...>

Hi there, I wrote a short ruby script to calculate the prime factors

10 messages 2009/08/20

[#344366] Why, oh why, _why? — Karl von Laudermann <doodpants@...>

_why the lucky stiff appears to have disappeared from the internets!

79 messages 2009/08/20
[#344400] Re: Why, oh why, _why? — Ralf Mueller <ralf.mueller@...> 2009/08/21

Karl von Laudermann wrote:

[#344421] Re: Why, oh why, _why? — Gregory Brown <gregory.t.brown@...> 2009/08/21

On Fri, Aug 21, 2009 at 4:24 AM, Ralf Mueller<ralf.mueller@zmaw.de> wrote:

[#344432] Re: Why, oh why, _why? — Rick DeNatale <rick.denatale@...> 2009/08/21

On Fri, Aug 21, 2009 at 7:17 AM, Gregory Brown<gregory.t.brown@gmail.com> w=

[#344434] Re: Why, oh why, _why? — Gregory Brown <gregory.t.brown@...> 2009/08/21

On Fri, Aug 21, 2009 at 9:49 AM, Rick DeNatale<rick.denatale@gmail.com> wro=

[#344441] Re: Why, oh why, _why? — Jason Roelofs <jameskilton@...> 2009/08/21

On Fri, Aug 21, 2009 at 9:54 AM, Gregory Brown <gregory.t.brown@gmail.com>wrote:

[#344448] Re: Why, oh why, _why? — Xavier Noria <fxn@...> 2009/08/21

On Fri, Aug 21, 2009 at 4:07 PM, Jason Roelofs<jameskilton@gmail.com> wrote:

[#344453] Re: Why, oh why, _why? — Jason Roelofs <jameskilton@...> 2009/08/21

On Fri, Aug 21, 2009 at 10:23 AM, Xavier Noria <fxn@hashref.com> wrote:

[#344525] Re: Why, oh why, _why? — Todd Benson <caduceass@...> 2009/08/22

On Thu, Aug 20, 2009 at 3:10 PM, Karl von

[#344526] Re: Why, oh why, _why? — Todd Benson <caduceass@...> 2009/08/22

On Sat, Aug 22, 2009 at 7:43 AM, Todd Benson<caduceass@gmail.com> wrote:

[#344404] How to convert string "/regexp/i" to /regexp/i - ? — Joao Silva <rubyforum@...>

When i try to use:

20 messages 2009/08/21

[#344462] Github and _why — John W Higgins <wishdev@...>

I'm about to get very nasty responses but this absolutely is a very bad

19 messages 2009/08/21
[#344467] Re: Github and _why — Tony Arcieri <tony@...> 2009/08/21

On Fri, Aug 21, 2009 at 10:38 AM, John W Higgins <wishdev@gmail.com> wrote:

[#344545] 1.8.7 String#lines keeps new-line chars (say it ain't so in 1.9) — Intransition <transfire@...>

Ruby 1.8.7 p72

19 messages 2009/08/22

[#344554] Ruby Editor — sasan <sasan.bahrieh@...>

I need a good software for ruby programming. please post message for

21 messages 2009/08/22

[#344573] ruby-debug does not hit breakpoints at class-methods — Sys Ppp <systemppp@...>

ruby-1.8.6-p369

19 messages 2009/08/22
[#344593] Re: ruby-debug does not hit breakpoints at class-methods — 7stud -- <bbxx789_05ss@...> 2009/08/23

...and more

[#344597] Re: ruby-debug does not hit breakpoints at class-methods — Sys Ppp <systemppp@...> 2009/08/23

> $ rdebug r2test.rb

[#344652] Re: ruby-debug does not hit breakpoints at class-methods — 7stud -- <bbxx789_05ss@...> 2009/08/24

Sys Ppp wrote:

[#344653] Re: ruby-debug does not hit breakpoints at class-methods — 7stud -- <bbxx789_05ss@...> 2009/08/24

...or I guess this would be a better example:

[#344656] Re: ruby-debug does not hit breakpoints at class-methods — Sys Ppp <systemppp@...> 2009/08/24

To 7stud. These are all normal, except class-method, as i wrote.

[#344691] Re: ruby-debug does not hit breakpoints at class-methods — Rick DeNatale <rick.denatale@...> 2009/08/24

On Sun, Aug 23, 2009 at 11:50 PM, Sys Ppp<systemppp@gmail.com> wrote:

[#344705] Re: ruby-debug does not hit breakpoints at class-methods — Sys Ppp <systemppp@...> 2009/08/24

Rick Denatale wrote:

[#344580] Development - works, production not - why? — Joao Silva <rubyforum@...>

My development envrioment:

11 messages 2009/08/23

[#344680] Comparison Ruby, Python, Php, Groovy ecc. — Marco Mastrodonato <m.mastrodonato@...>

Comparison script languages for the fractal geometry, these are the

25 messages 2009/08/24
[#344684] Re: Comparison Ruby, Python, Php, Groovy ecc. — Urabe Shyouhei <shyouhei@...> 2009/08/24

Are those executables compiled with identical compilers + compile flags?

[#344717] _why's "suicide" note? — Graham Agnew <graham.agnew@...>

Just found this as _why's last tweet on the Google cached copy of _why's

12 messages 2009/08/24

[#344762] Calling method from another class — Kostas Lps <louposk@...>

Hi guys,

15 messages 2009/08/24

[#344872] ||= with 1.8 and 1.9 ? — Aldric Giacomoni <aldric@...>

A friend of mine on Twitter recently posted this tidbit of code:

30 messages 2009/08/26
[#344879] Re: ||= with 1.8 and 1.9 ? — Brian Candler <b.candler@...> 2009/08/26

Aldric Giacomoni wrote:

[#344899] Re: ||= with 1.8 and 1.9 ? — Rick DeNatale <rick.denatale@...> 2009/08/26

On Wed, Aug 26, 2009 at 11:08 AM, Brian Candler<b.candler@pobox.com> wrote:

[#344921] Re: ||= with 1.8 and 1.9 ? — Brian Candler <b.candler@...> 2009/08/26

Rick Denatale wrote:

[#344923] Re: ||= with 1.8 and 1.9 ? — Joel VanderWerf <vjoel@...> 2009/08/26

Brian Candler wrote:

[#344881] # sign does not work as expected form irb — Salvador Sanjuan <salvador.sanjuan@...>

I have just started Ruby. I have tried to do some exercises usin irb but

15 messages 2009/08/26
[#344887] Re: # sign does not work as expected form irb — Aldric Giacomoni <aldric@...> 2009/08/26

Salvador Sanjuan wrote:

[#344988] Re: # sign does not work as expected form irb — Salvador Sanjuan <salvador.sanjuan@...> 2009/08/27

Aldric Giacomoni wrote:

[#344938] Rack must not dictate how to create a middleware — Sys Ppp <systemppp@...>

In current realization of Rack::Builder the method :use dictates that

15 messages 2009/08/26
[#344940] Re: Rack must not dictate how to create a middleware — Brian Candler <b.candler@...> 2009/08/26

Sys Ppp wrote:

[#345037] Possible to use Ruby for Dynamic HTML sites without Rails? — Frank Peterson <fictionalperson@...>

How easy is this to do? I've been going though a Ruby book again (was

13 messages 2009/08/27

[#345070] I need a string#all_indices method--is there such a thing? — timr <timrandg@...>

In ruby you can use string#index as follows:

22 messages 2009/08/28

[#345079] #map, #select semantics — James Coglan <jcoglan@...>

I imagine this has come up before, though I can't find anything about it. I

16 messages 2009/08/28

[#345097] How to call this method — Robert Dober <robert.dober@...>

Hi list

15 messages 2009/08/28
[#345100] Re: How to call this method — Robert Klemme <shortcutter@...> 2009/08/28

2009/8/28 Robert Dober <robert.dober@gmail.com>:

[#345222] Sorting an array by multiple elements? — Paul <tester.paul@...>

Hi there, I have an array of arrays that I want to sort by multiple

14 messages 2009/08/30

[#345267] What is the ruby conventions to name private method? — pierr <pierr.chen@...>

16 messages 2009/08/31
[#345274] Re: What is the ruby conventions to name private method? — Ryan Davis <ryand-ruby@...> 2009/08/31

[#345322] help on phps $$ equivalent in ruby — Arthur Rats <simon.jacobs.ams@...>

i just cant find this anywhere, googling for a while and read up tons on

11 messages 2009/08/31

Re: Confirm my Performance Test Against Java?

From: David Masover <ninja@...>
Date: 2009-08-23 22:08:59 UTC
List: ruby-talk #344639
On Thursday 20 August 2009 10:22:39 am Ben Christensen wrote:
> That being said, I am trying to figure out what the "Ruby way" is -
> which so far is far from clear to me.
[...]
> What example opensource projects can you refer me to which espouse the
> "real Ruby" style of doing things?

I can't think of any particularly good examples, mainly because...

> unless it's a small team
> of very competent people who all believe in the same paradigm and treat
> their code as art.

I was part of just such a team. We built a set of semi-formal rules, and an 
always-outdated document about coding style. Mostly, though, our coding style 
evolved together because we were always in each other's code and over each 
other's shoulder.

So, unfortunately, I've developed a very visceral and intuitive sense of what 
"real Ruby" should be, what's idiomatic, but I find it difficult to express.

I can point to a few things you've probably heard:

 - Duck typing. The type and class hierarchy is completely irrelevant. All you 
care about is whether the object in question responds to a particular method. 
(This means you should more often use #responds_to? rather than #kind_of? if 
you're testing your arguments at all.)

 - Encapsulation. Not as in enforcing what's private, because you can't 
(there's always #send and #instance_variable_get), but as in, push the logic 
back into the appropriate object, rather than into something operating on that 
logic.

 - DSLs. Or, less buzzword-y, define what you'd like to be able to do, and then 
figure out how to do it. Go by what's most expressive, and most sounds like 
English -- treat code as communication. "Code like a girl."

 - Don't Repeat Yourself.

I can give you some extreme examples: Rake (or even Capistrano), Hpricot (or 
better, Nokogiri), Sinatra, Markaby, and Rspec (or test-spec, etc).

I'm not suggesting you read the source of all of them. Rather, see how they 
might be used. Sinatra is a particularly powerful example, especially combined 
with Markaby -- though I prefer Haml for real projects. Rails is a fine 
framework, but it's beautiful to see a framework dissolve into nothing more 
than:

get '/' do
  'Hello, world!'
end

> For example, if both Java and Ruby both performed single threaded
> transactions at 150ms each, and both scaled to 10 concurrent threads
> equally well, but Java continues to scale to 30 concurrent threads and
> Ruby does not, then that's a scenario where I can add 3 machines to
> scale Ruby horizontally and truly argue that the cost of the hardware is
> more than made up for by lower developer costs.
>
> But, "per request" performance does not get improved by this type of
> solution.

A good point. Still worth investigating whether Ruby can be "fast enough" for 
this. Just for fun, here's a quick presentation:

http://www.slideshare.net/wycats/merb-camp-keynote-presentation

This is also relevant, as there are plans to merge Merb and Rails at some 
point, while retaining the advantages of Merb -- particularly performance.

> Adding faster hardware does not make Ruby catch up to Java - since Java
> also improves with faster hardware.

Yes, you've said this before -- but it doesn't have to. Take your example 
above -- if you can get Ruby under 150 ms, that's good enough. Adding faster 
hardware gets Ruby under 150 ms. If it gets Java down to 30 ms, what's the 
point?

> It provides a better use experience to the user and (according to Google
> and Amazon) increases their usage of the system.

I'm curious what the threshold was for this to make a difference.

Certainly, at a certain point, it doesn't. The difference between 16 ms and 0.6 
ms would actually be invisible to the human eye. But while 100 ms vs 50 ms may 
make a difference, I'm skeptical. Users are annoyed at having to wait a tenth 
of a second for a response?

> The speed at which an application responds to an end users request
> impacts the overall usability of an application.
>
> It is for this same reason that things such as network compression,
> network optimization (CDNs, Akamai route acceleration etc) and client
> side caching also all play a role.

These all make sense -- Akamai in particular -- in the context of having a 100 
ms response instead of, say, 500 ms or a full second, or in the context of 
scalability.

> --  when was the last time the type system saved you?
>
> It's the toolset as you stated that you suspect.
>
> The readability of code to know exactly what types a given argument,
> variable or array contain.

To me, this falls back into Duck Typing. What type does this argument contain? 
Why is this a meaningful question? If I want it to contain a string, for 
instance, all I really need to know is whether it responds to #to_s.

More likely, it's a more complex object, but it's still the behavior that I 
care about, not the type of it. And this intuitively makes sense -- in the 
real world, also. When making a hiring decision, do you care about the "type" 
of the person -- their degree, their sex, their skin color? Or do you care 
what they can do, and how they'll interact with the rest of the team?

Yes, the degree may be an indication of that, but it's not really what you 
care about. And certainly, the other things I mentioned shouldn't enter into 
the equation at all.

> For example, code completion in these tools to suggest the available API
> methods is almost useless, as they offer virtually every method
> available under the sun, as they are not interpreting what actual type
> the variable is.

Because it probably doesn't have one yet.

While it's a bit different, try running an IRB shell with your favorite 
framework loaded and some sort of tab completion. It won't be perfect, but 
it'll probably work.

In the mean time, I'm going to say that it isn't an issue for me, simply 
because if the framework I'm using is so complex that I need code completion 
for daily work, I'm probably using the wrong framework. I can think of some 
times it would've been convenient, but not nearly worth having to use one of 
these other languages.

> Therefore they'll show me 15 different versions of a
> method with the same name, all for different object types from the Ruby
> API.

Any one of them would probably have been a starting place.

> Thus, I must now depend on a team of developers properly documenting
> everything, using very descriptive naming conventions (and properly
> refactoring all of that when changes occur), and wrapping everything in
> unit tests.

These are things you should rely on anyway.

No, not Hungarian notation, but calling the variable something more 
descriptive than 'a' and 'b'.

> Now, all of those are "ideal" cases - ones I believe in and stress
> continually. I have hundreds and hundreds of unit tests and automated
> build servers etc - but in the "real world", getting teams to comment
> every method, properly name (and refactor) variable names and cover
> everything in unit tests just doesn't happen

I don't comment every method. I should comment more than I do, but for 
example:

def writable_by? user
  # ...
end

Tell me you don't at least have a guess what that does.


> -- 100 lines of code is generally easier to read and
> -- debug than a thousand.
>
> I'll give you that - but I have yet to see anything that proves to me
> that a competent developer using both Ruby and Java (or C# for that
> matter) would have 10x as much written code than they would in Ruby.

It's probably an exaggeration, but not much, though I admittedly have limited 
experience in Java. But as an example, how much time do you spend writing 
interfaces? Maybe it was the nature of the assignment, but I would guess 
easily 20-30% of my time doing Java in school was doing things like writing 
interface definitions.

That whole file becomes irrelevant in Ruby.

And I would say the same for Ruby or Python, and to a lesser extent, Perl and 
Lisp -- it does end up being _significantly_ less code. I'm learning Lisp now, 
and this book:

http://gigamonkeys.com/book

opens with just such an anecdote:

"The original team, writing in FORTRAN, had burned through half the money and 
almost all the time allotted to the project with nothing to show for their 
efforts... A year later, and using only what was left of the original budget, 
his team delivered a working application with features that the original team 
had given up any hope of delivering. My dad credits his team's success to 
their decision to use Lisp.

"Now, that's just one anecdote. And maybe my dad is wrong about why they 
succeeded. Or maybe Lisp was better only in comparison to other languages of 
the day..."

I could say the same -- certainly Java is going to be better than FORTRAN. But 
you'll still occasionally find the story of the team which beat everyone to 
market, or swooped in and rewrote a failing project, or won.

> The "cruft" so often referred to are things that I don't even consider
> or think of. Boilerplate code ... clutter and sometimes annoying ...
> fades into the background and tools remove the pain of it.

I don't think tools would remove the pain of looking at it, at least -- and 
yes, it is annoying. Even if the language is going to be statically typed, 
consider the runtime exception. If the Java compiler knows enough to know that 
I forgot to declare what type of exceptions a method might throw, why do I 
have to specify them at all? If it's for the sake of other developers, why 
can't the tool tell them?

After all, there are going to be plenty of methods which really wouldn't care 
about exceptions -- just let them pass through, let some other layer handle 
them.

I also find it telling that with Ruby, I can get by with just a good text 
editor -- TextMate for OS X was excellent, though I now use Kate on Linux -- 
whereas with Java, I would pretty much need a tool just to remove the pain of 
the language.

> Amazon referred another book called "The Ruby Way" which may also
> provide me good insights. Any experience with that one?

None. I did read a book called "The Rails Way" which was excellent, and seems 
to be from the same series, but by a different author.

> In fact, I'm trying to figure
> out how to rip Java out of my webapps completely and leave that to the
> backend webservices and let the presentation layer be as free from
> "code" as possible.

Look at Haml and Sass. You'll either love it or hate it.

> For example, if I can accomplish a dynamic front-end purely driven by
> client side Javascript using AJAX techniques with a REST style
> webservices backend, I will try to pursue that.

I like jQuery for this. Rails and Merb seem to be moving back towards 
integrating this kind of thing -- "link_to_remote" is an old-school example, 
and I suspect we'll see more of this sort of thing in the future.

I've also been a big fan of replacing the X in AJAX with either JSON or HTML, 
as the situation demands. While it's a bit sloppy, HTML makes sense in that I 
can then have all the HTML-generation stuff in the server-side views, where 
they belong, and the Javascript on the client is that much simpler. But if I 
was writing a richer client, JSON would be ideal, at least until someone shows 
me a decent Javascript Yaml library.

> The middle ground seems to be pursuing Ruby or something else that is
> still server-side, but better suited to the always changing pace of
> webapp dev and more creative, script driven coding style better suited
> to web developers and designers.

I think this would work well with the above. In particular, Rails has been 
very REST-oriented for a very long time.

In This Thread