[#335632] SOAP - issue with openssl verification failure — Venkat Alla <spinhoo2000@...>

I have the following code in a script that I am trying to use at work -

10 messages 2009/05/01

[#335755] Should I upgrade Ruby from 1.8.5 to 1.8.7? — Cali Wildman <caliwildman2004-info@...>

I just upgraded to Rails 2.3.2 but my Ruby is still 1.8.5. Rails 2.3.2

23 messages 2009/05/04

[#335777] my logroll code, please critique — Derek Smith <derekbellnersmith@...>

My goal is to keep 10 files each at 100Mb. Please critique and suggest

12 messages 2009/05/05

[#335842] '=||' — James Byrne <byrnejb@...>

Can someone point out to me where exactly in the API I find a discussion

18 messages 2009/05/05
[#335843] Re: '=||' — Eleanor McHugh <eleanor@...> 2009/05/05

On 5 May 2009, at 20:51, James Byrne wrote:

[#336031] Superclass of eigenclass — Danny O cuiv <danny.ocuiv@...>

On page 261 of The Ruby Programming Language, they state:

30 messages 2009/05/07
[#336052] Re: Superclass of eigenclass — Rick DeNatale <rick.denatale@...> 2009/05/07

On Thu, May 7, 2009 at 8:35 AM, Danny O cuiv <danny.ocuiv@gmail.com> wrote:

[#336056] Re: Superclass of eigenclass — Rick DeNatale <rick.denatale@...> 2009/05/07

On Thu, May 7, 2009 at 11:50 AM, Rick DeNatale <rick.denatale@gmail.com> wrote:

[#336061] Ruby memory usage — Pete Hodgson <ruby-forum@...>

Hi Folks,

23 messages 2009/05/07

[#336087] File over tcp? with out using net/ftp — Bigmac Turdsplash <i8igmac@...>

Im trying to send a file back and forth between a client.rb and

12 messages 2009/05/07

[#336160] CGI help — Jeff Leggett <hikerguy@...>

So, I am trying ot read the contents of a file and format the contents

19 messages 2009/05/08

[#336168] ruby string slice/[] w/ range, weird end behavior — Gary Yngve <gary.yngve@...>

First the docs:

17 messages 2009/05/08
[#336169] Re: ruby string slice/[] w/ range, weird end behavior — Eleanor McHugh <eleanor@...> 2009/05/08

On 9 May 2009, at 00:26, Gary Yngve wrote:

[#336205] converting UTF-8 to entities like &#x525B; — Jian Lin <winterheat@...>

15 messages 2009/05/09

[#336385] Any current preprocessor/Ruby language add-ons? — "C. Dagnon" <c-soc-rubyforum@...>

This is kind of a wide-ranging question but for some fairly specific

16 messages 2009/05/12

[#336411] Whaaaaat? — Tom Cloyd <tomcloyd@...>

p [0..5].include? 0

26 messages 2009/05/12

[#336458] what could be improved in Ruby for Science? — Diego Virasoro <Diego.Virasoro@...>

Hello,

20 messages 2009/05/13

[#336505] Syntactic sugar idea — Daniel DeLorme <dan-ml@...42.com>

It seems that often an object will be passed into a block only to invoke

26 messages 2009/05/14
[#336508] Re: [bikeshed] Syntactic sugar idea — Jan <jan.h.xie@...> 2009/05/14

* Daniel DeLorme <dan-ml@dan42.com> [2009-05-14 11:42:31 +0900]:

[#336766] Berkeley DB or Store equivalent? — Mk 27 <halfcountplus@...>

I have never used mySQL because perl's Storable or BerkeleyDB modules

16 messages 2009/05/17

[#336783] permute each element of a ragged array? — Phlip <phlip2005@...>

Rubies:

19 messages 2009/05/17

[#336821] Sorting numbers as strings — Jack Bauer <realmadrid2727@...>

I'm trying to sort some strings containing numbers. The strings

14 messages 2009/05/18

[#336850] Introducing RubyScience on GitHub! — Joshua Ballanco <jballanc@...>

In the tradition of actions vs. words, I present to you:

14 messages 2009/05/18

[#336930] Create an exe with Ruby 1.9.1 — Marc-antoine Kruzik <kadelfek@...>

Hello !

23 messages 2009/05/19

[#336939] Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...>

Greetings, folks. First time poster, so if I breach

235 messages 2009/05/19
[#337016] Re: Pythonic indentation (or: beating a dead horse) — Roger Pack <rogerpack2005@...> 2009/05/20

> ...maybe something like this:

[#337699] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/28

On May 27, 10:21=A0pm, James Britt <james.br...@gmail.com> wrote:

[#337734] Re: Pythonic indentation (or: beating a dead horse) — James Britt <james.britt@...> 2009/05/28

J Haas wrote:

[#337740] Re: Pythonic indentation (or: beating a dead horse) — Juan Zanos <juan_zanos@...> 2009/05/28

On May 28, 2009, at 2:33 PM, James Britt wrote:

[#337745] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/28

On May 28, 11:15=A0am, Eleanor McHugh <elea...@games-with-brains.com>

[#337954] Re: Pythonic indentation (or: beating a dead horse) — Steven Arnold <stevena@...> 2009/05/30

After listening to this debate for some time, the position of allowing

[#338133] Re: Pythonic indentation (or: beating a dead horse) — Andy F <andchafow-ruby@...> 2009/06/02

[#338172] Re: Pythonic indentation (or: beating a dead horse) — Eleanor McHugh <eleanor@...> 2009/06/02

On 2 Jun 2009, at 06:20, Andy F wrote:

[#337023] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/20

On May 20, 8:51=A0am, Rick DeNatale <rick.denat...@gmail.com> wrote:

[#337025] Re: Pythonic indentation (or: beating a dead horse) — Rick DeNatale <rick.denatale@...> 2009/05/20

On Wed, May 20, 2009 at 2:35 PM, J Haas <Myrdred@gmail.com> wrote:

[#337045] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/20

On May 20, 12:25=A0pm, Tony Arcieri <t...@medioh.com> wrote:

[#337581] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/27

On May 22, 9:01=A0am, Roger Pack <rogerpack2...@gmail.com> wrote:

[#337673] Re: Pythonic indentation (or: beating a dead horse) — Juan Zanos <juan_zanos@...> 2009/05/28

[#337686] Re: Pythonic indentation (or: beating a dead horse) — Eleanor McHugh <eleanor@...> 2009/05/28

On 28 May 2009, at 15:06, Juan Zanos wrote:

[#337002] Ruby 1.8 vs. Ruby 1.9 — Calvin <cstephens4@...>

Hi,

17 messages 2009/05/20

[#337094] snailgun-1.0.2 — Brian Candler <b.candler@...>

New experimental project:

18 messages 2009/05/21

[#337115] w00t! Party for Gregory! — pat eyler <pat.eyler@...>

> On May 20, 2009, Gregory Brown wrote:

12 messages 2009/05/21

[#337221] Cryptogram II (#206) — Daniel Moore <yahivin@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

17 messages 2009/05/22

[#337323] String concatenation in Ruby — Jagadeesh <mnjagadeesh@...>

Hi,

18 messages 2009/05/25

[#337340] Do you nest classes inside classes? — Mike Stephens <rubfor@...>

Object Orientation is conceptually about a sea of objects interacting

11 messages 2009/05/25

[#337366] Runnin code at a certain time? — Tom Ricks <carrottop123@...>

Hello all,

20 messages 2009/05/25
[#337392] Re: Runnin code at a certain time? — Caleb Clausen <vikkous@...> 2009/05/25

On 5/25/09, Tom Ricks <carrottop123@gmail.com> wrote:

[#337413] Other languages to try? — Adam Gardner <adam.oddfellow@...>

So, I've been programming in Ruby for a good while now. Not an expert,

20 messages 2009/05/26

[#337421] Newbie on Threads — Nabs Kahn <nabusman@...>

I'm creating a screen scraping software and I want to have X (let's say

13 messages 2009/05/26
[#337424] Re: Newbie on Threads — Robert Klemme <shortcutter@...> 2009/05/26

2009/5/26 Nabs Kahn <nabusman@gmail.com>:

[#337507] Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...>

I have the following working with cleartext LDAP:

20 messages 2009/05/26
[#337539] Re: Something Not going with my LDAP using SSL — Brian Candler <b.candler@...> 2009/05/27

Xeno Campanoli wrote:

[#338073] Re: Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...> 2009/06/01

Brian Candler wrote:

[#338082] Re: Something Not going with my LDAP using SSL — Brian Candler <b.candler@...> 2009/06/01

Xeno Campanoli wrote:

[#338084] Re: Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...> 2009/06/01

Brian Candler wrote:

[#338094] Re: Something Not going with my LDAP using SSL — Brian Candler <b.candler@...> 2009/06/01

Xeno Campanoli wrote:

[#338095] Re: Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...> 2009/06/01

Brian Candler wrote:

[#338096] Re: Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...> 2009/06/01

Xeno Campanoli wrote:

[#337574] Installing Ruby 1.9.1 Binary on Windows Vista — Joel Dezenzio <jdezenzio@...>

I've searched and only found one topic which did not have an answer or

27 messages 2009/05/27

[#337671] death toll — deka <rocha.deka@...>

Hi, I am a Brazilian girl and I have a doubt abour numbers in English.

13 messages 2009/05/28

[#337823] Endless Ruby 0.0.2 — Caleb Clausen <vikkous@...>

endless.rb is a pre-processor for ruby which allows you to use python-ish

22 messages 2009/05/29

[#337841] Regular expression — Harry Kakueki <list.push@...>

I want to write a regular expression to do the following.

13 messages 2009/05/29

[#337869] Quine (#207) — Daniel Moore <yahivin@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

46 messages 2009/05/29
[#338000] Re: [QUIZ] Quine (#207) — pjb@... (Pascal J. Bourguignon) 2009/05/31

Robert Dober <robert.dober@gmail.com> writes:

[#338018] Re: [QUIZ] Quine (#207) — Aureliano Calvo <aurelianocalvo@...> 2009/06/01

I did something like that, but with parenthesis.

[#337899] Requesting Japanese Translation — James Gray <james@...>

I'm adding a little Japanese to a Ruby presentation I am giving. I

13 messages 2009/05/30

[#337961] nokogiri 1.3.0 Released — Aaron Patterson <aaron@...>

nokogiri version 1.3.0 has been released!

32 messages 2009/05/30
[#337962] Re: nokogiri 1.3.0 Released — Roger Pack <rogerpack2005@...> 2009/05/30

Aaron Patterson wrote:

[#337966] Re: nokogiri 1.3.0 Released — Aaron Patterson <aaron@...> 2009/05/30

On Sun, May 31, 2009 at 06:43:05AM +0900, Roger Pack wrote:

[#337968] Re: nokogiri 1.3.0 Released — Iii Iii <bqotatjyujepur@...> 2009/05/30

> gem install nokogiri

[#337985] Re: nokogiri 1.3.0 Released — Aaron Patterson <aaron@...> 2009/05/31

On Sun, May 31, 2009 at 08:37:54AM +0900, Iii Iii wrote:

[#338049] Re: nokogiri 1.3.0 Released — Roger Pack <rogerpack2005@...> 2009/06/01

Pythonic indentation (or: beating a dead horse)

From: J Haas <Myrdred@...>
Date: 2009-05-19 21:40:02 UTC
List: ruby-talk #336939
Greetings, folks. First time poster, so if I breach
any etiquette I sincerely apologize. I'm a bit of a Ruby Nuby who's
been
bouncing around between Python and Ruby, not entirely satisfied with
either
and wishing both were better. Two years ago I had no familiarity with
either
language, then I quit working for Microsoft and learned the true joy
of
programming in dynamic languages.

I am not a zealot and have little tolerance for zealotry, and I have
no
desire to get involved in holy wars. I'm a little apprehensive that
I'm
about to step into one, but here goes anyway. In general, I prefer
Ruby's
computational model to Python's. I think code blocks are cool, and I
love Ruby's
very flexible expressiveness. I dig the way every statement is an
expression,
and being able to return a value simply by stating it rather than
using the
'return' keyword. I hate Python's reliance on global methods like len
() and
filter() and map() (rather than making thesem methods members of the
classes
to which they apply) and I absolutely loathe its reliance on __magic__
method names. Ruby's ability to reopen and modify _any_ class kicks
ass, and
any Python fan who wants to deride "monkeypatching" can shove it. It
rocks.

That being said, I think monkeypatching could use some syntactic sugar
to
provide a cleaner way of referencing overridden methods, so instead
of:

  module Kernel
    alias oldprint print
    def print(*args)
      do_something
      oldprint *(args + [" :-)"])
    end
  end

...maybe something like this:

  module Kernel
    override print(*args)
      do_something
      overridden *(args + [" :-)"])
    end
  end

But I digress... the purpose of this post is to talk about one of the
relatively
few areas where I think Python beats Ruby, and that's syntatically-
significant
indentation.

Before I get into it, let me say to those of you whose eyes are
rolling way
back in your skulls that I have a proposal that will allow you to keep
your
precious end keyword if you insist, and will be 100% backward
compatible with
your existing code. Skip down to "My proposal is" if you want to cut
to the
chase.

When I encounter engineers who don't know Python, I sometimes ask them
if they've heard anything about the language, and more often than not,
they
answer, "Whitespace is significant." And more often than not, they
think that's
about the dumbest idea ever ever. I used to think the same. Then I
learned
Python, and now I think that using indentation to define scope is
awesome.
I started looking over my code in C++ and realized that if some
nefarious
person took all of my code and stripped out the braces, I could easily
write a simple script in either Python or Ruby ;-) to restore them,
because
their locations would be completely unambiguous: open braces go right
before
the indentation level increases, close braces go right before it
decreases. And
having gotten used to this beautiful way of making code cleaner, I
hate that
Ruby doesn't have it.

I've read the two-year-old thread at
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/252034
(well, most of it, anyway) and I'll answer some of the objections
raised
in it, but first let me illustrate the scope of the problem with the
output
of a quick and dirty script I wrote:

> Examined 1433 files in /usr/lib/ruby/1.8.
> Total non-empty lines: 193458
> Lines consisting of NOTHING BUT THE WORD END: 31587 (a whopping 16.33%)
>
> Streaks:
> 7: 4
> 6: 37
> 5: 28
> 4: 159
> 3: 765
> 2: 4082
> 1: 16505

My friends, when ONE OUT OF EVERY SIX of your code lines consists of
just the
word "end", you have a problem with conciseness. I recognize that
syntactically-
significant indentation is not perfect, and it would bring a few pain
points
with it. But let me say that again: ONE OUT OF EVERY SIX LINES, for
crying out
loud! This should be intolerable to engineers who value elegance.
"Streaks"
means what you'd expect: there are four places in the scanned files
that look
like this:

            end
          end
        end
      end
    end
  end
end

This is *not* DRY. Or anything remotely resembling it. This is an
ugly blemidh on a language that otherwise is very beautiful. The
problem of
endless ends is exacerbated by Ruby's expressiveness, which lends
itself to  very short methods, which can make defs and ends take up a
large amount of space relative to lines of code that actually do
something.

Even if you can find some ways in which the explicit "end" keyword is
preferable
to letting indentation do the talking... one out of every six lines.

Matz's objections in the cited thread were:

  * tab/space mixture

Well, tough. Programmers shouldn't be using freakin' tabs anyway, and
if they
are, they _definitely_ shouldn't be mixing them with spaces. I don't
think
it's worthwhile to inflate the code base by a staggering 20% to
accommodate
people who want to write ugly code, mixing tabs and spaces when
there's no
reason to. And if for some reason it's really, really critical to
support this
use case, there could be some kernel-level method for specifying how
many
spaces a tab equates to, so the interpreter can figure out just how
far indented
that line with the tabs is.

  * templates, e.g. eRuby

Not having used eRuby and therefore not being very familiar with it, I
don't
want to comment on specifics other than to note that plenty of Python-
based
template systems manage to get by.

 * expression with code chunk, e.g lambdas and blocks

I don't really see the problem. My blocks are generally indented
relative to
the context to which they're being passed, isn't that standard?

My proposal is to, first, not change a thing with respect to existing
syntax. Second, steal the : from Python and use it to signify a scope
that's marked by indentation:

  while some_condition
    # this scope will terminate with an 'end' statement
    do_something
  end

  while some_condition:
    # this scope will terminate when the indentation level decreases
to the
    # level before it was entered
    do_something

  %w{foo bar baz}.each do |val|
    print val
  end

  %w{foo bar baz}.each do |val|:
    print val

A valid objection that was raised in the earlier thread was regarding
a
quick and easy and common debugging technique: throwing in print
statements

  def do_something(a, b, c)
print a, b, c  # for debugging purposes
    a + b + c
  end

  def do_something(a, b, c):
print a, b, c  # error! unexpected indentation level
    a + b + c
  end

We can get around this by saying that braces, wherever they may
appear,
always define a new scope nested within the current scope, regardless
of
indentation.

  def do_something(a, b, c):
{ print a, b, c }  # this works
    a + b + c

Alternatively, perhaps a character that's not normally valid at the
start of a
line (maybe !) could tell the interpreter "treat this line as though
it were
indented to the level of the current scope":

  def do_something(a, b, c):
!print a, b, c
    a + b + c

Well, I think that's probably enough for my first post. Thank you for
your
time, and Matz, thanks for the language. Thoughts, anyone?

--J

In This Thread

Prev Next