[#17136] Net::SMTP error — Alan Tsang <atsang@...>
[#17151] Calling Marshal.dump/load from C — Emil Ong <onge@...>
Hi,
[#17167] ` (back tick) on Win32 machines — Stephan K舂per <Stephan.Kaemper@...>
Hi all,
[#17177] Question on Net::HTTP — Dave Thomas <Dave@...>
[#17198] enhancing Ruby error messages for out of the bound constant Fixnum? — Guillaume Cottenceau <gc@...>
Hi,
Hi,
matz@ruby-lang.org (Yukihiro Matsumoto) writes:
On Thu, 5 Jul 2001, Guillaume Cottenceau wrote:
[#17206] /* */ comments — Dave Thomas <Dave@...>
On Wed, 4 Jul 2001, Dave Thomas wrote:
Stephen White wrote:
> Over on http://www.rubygarden.org, dv posted a patch to parse.y that
Hi,
Hello --
[#17212] Ruby 1.6.4 Win32 .exe installer question — A Bull in the China Shop of Life <feoh@...>
Folks;
A Bull in the China Shop of Life <feoh@fourfuzzies.org> writes:
[#17224] Getting variable name — DaVinci <bombadil@...>
Hi.
[#17225] Re: /* */ comments — Arnaud Meuret <ameuret@...4you.com>
|From: Mark Slagell [mailto:ms@iastate.edu]
[#17240] Ruby Mascot/logo — "Kevin Powick" <kpowick@...>
Hi there.
"Cameron Matheson" <cmatheson3@yahoo.com> wrote in message
>"Cameron Matheson" <cmatheson3@yahoo.com> wrote in message
[#17254] extension and GC — Shan-leung Maverick WOO <maverick@...>
Hello,
[#17281] Inheritance — "Aleksei Guzev" <aleksei.guzev@...>
>>>>> "A" == Aleksei Guzev <aleksei.guzev@bigfoot.com> writes:
# -----Original Message-----
>>>>> "A" == Aleksei Guzev <aleksei.guzev@bigfoot.com> writes:
What I want to do could be expressed in pseudo-C++.
>>>>> "A" == Aleksei Guzev <aleksei.guzev@bigfoot.com> writes:
I have hardware, wich in case of division be zero generates an
>>>>> "A" == Aleksei Guzev <aleksei.guzev@bigfoot.com> writes:
[#17295] — "Aleksei Guzev" <aleksei.guzev@...>
I found a solution.
[#17307] Re: Extension building — Ed L Cashin <ecashin@...>
Tony Smith <tony@smee.org> writes:
[#17331] SIGUSR1/2 ? — Emil Ong <onge@...>
Hi,
>>>>> "E" == Emil Ong <onge@mcs.anl.gov> writes:
Hi,
[#17348] Adding a method to a class at the top-level — Guillaume Cottenceau <gc@...>
Comrades,
On Fri, 06 Jul 2001 06:24:15 +0900, Guillaume Cottenceau wrote:
[#17396] Problem with Ruby/Gtk and GC — DaVinci <bombadil@...>
Hi all.
[#17413] Default Value in a Hash.. but I need a new object each time! — Guillaume Cottenceau <gc@...>
Hi,
[#17441] Tk - how to clear a canvas? — Tjabo Kloppenburg <tjabo@...>
hi,
[#17477] wget in Ruby with a twist — Steve Price <sprice@...>
Just curious if someone already developed something that creates
[#17482] Aliases for class methods — "HarryO" <harryo@...>
Say I wanted to write my own version of File#open that adds some
Thanks. I put most of my comments in my reply to Dave's post, so I won't
[#17484] % — "Aleksei Guzev" <aleksei.guzev@...>
[#17511] Ruby on Slashdot — jweirich@...
Ruby is currently mentioned on Slashdot. I posted some references.
Interesting...
Hi,
> |I thought about that too; what about Ruby being a standard?
Hi,
Hello --
On Mon, 9 Jul 2001, David Alan Black wrote:
[#17540] Dir.chdir — stephen.hill@... (Steve Hill)
Hi,
[#17560] low-level TCP/IP manipulations? — Al Chou <hotfusionman@...>
Hi, all,
[#17562] writing arbitrary data to a socket — Al Chou <hotfusionman@...>
Continuing my investigations into my Ruby network hardware emulator, is there a
[#17570] Re: Constants and Variables — r2d2@... (Niklas Frykholm)
Martin J. Laubach wrote:
[#17572] Re: Constants and Variables — "HarryO" <harryo@...>
> If you want objects that don't change, try Object#freeze,
[#17607] Net/Http problem - connect(2) error on windows — jbshaldane@... (S Sykes)
I run ruby on Windows 2000... it works wonderfully, except when
[#17628] Strange warning — Bob Alexander <balexander@...>
What exactly does Ruby's warning message
[#17632] Re: SWIG — Craig Files <Craig_Files@...>
We have done this two ways...
[#17633] WIN32OLE — "MikkelFJ" <mikkelj-anti-spam@...1.dknet.dk>
Have anyone successfully used the win32ole library for ruby?
[#17634] SWIG and strings — Craig Files <Craig_Files@...>
Hi,
[#17637] TkPhoto on a button — "Hal E. Fulton" <hal9000@...>
Ruby/Tk question for you all.
[#17671] IO in a Ruby extension — "Brett W. Denner" <Brett.W.Denner@...>
I need to write a Ruby extension which reads binary data from a C FILE
[#17686] YART (Yet Another Ruby Talk) — Jim Menard <jimm@...>
This talk was given to the New York City CTO Club on July 10, 2001.
[#17688] Ruby jobs — "Peter Hickman" <peterhi@...>
I was looking on Job Serve here in the UK (things aren't going too well down
[#17689] Re: Old chestnut: invariants, pre/post conditions and so on — "MikkelFJ" <mikkelj-anti-spam@...1.dknet.dk>
[#17694] Funky file.each_byte — nlper@... (Tyler)
Howdy! I was filtering some files and ran into an anomaly.
[#17732] Re: Array#sort! returns nil when array empty — hfulton@...
> Array#sort! returns nil if the array is empty, whereas ri
On Fri, 13 Jul 2001 hfulton@pop-server.austin.rr.com wrote:
>>>>> "P" == Paul Brannan <pbrannan@atdesk.com> writes:
On Fri, 13 Jul 2001, ts wrote:
While following the Array thread, I noticed the minus
Jim Freeze <jim@freeze.org> writes:
On Fri, 13 Jul 2001, Dave Thomas wrote:
Jim Freeze <jim@freeze.org> writes:
Dave Thomas wrote:
> pigeon% ruby -e 'p ("a b c :d e f".split(/:(\S.*)|\s+/) - [""])'
[#17773] What happened to Ruby-Fltk? — Damon <adamon@...>
I heard about Ruby bindings to FLTK on this newsgroup, but the Ruby-Fltk
[#17797] Re: .Net, JVM and languages. — "MikkelFJ" <mikkelj-anti-spam@...1.dknet.dk>
[#17798] GC mark — "Aleksei Guzev" <aleksei.guzev@...>
"The mark routine will be called by the garbage collector during its
[#17832] Creating methods on the fly — "HarryO" <harryo@...>
I would like to create a new method on the fly. Assuming I have a
[#17833] Extending objects — "Aleksei Guzev" <aleksei.guzev@...>
Once I fire up Rubywin, and then invoke _R_uby _I_rb from the
At 07:05 PM 7/14/01 +0900, Euan Mee spewed forth:
[#17836] Specialised data structures - good or bad? — Stephen White <spwhite@...>
There's been a move towards implementing sets, bags, red-black trees and
[#17842] Bug ... probably another one — "Aristarkh A Zagorodnikov" <xm@...3d.ru>
[#17859] Re: Creating methods on the fly — "HarryO" <harryo@...>
I
"HarryO" <harryo@zipworld.com.au> writes:
This particular code yields some strange results.
Hello --
Hi,
[#17864] Trapping Ruby exceptions from C — senderista@... (Tobin Baker)
I'm trying to solve the problem of how to trap a Ruby exception from a
[#17872] Overloaded methods — "HarryO" <harryo@...>
A while ago, someone asked whether it was possible to overload methods in
> The approach of the P language is weird (bad syntax for me) and
[#17890] Deriving from Class — "Aleksei Guzev" <aleksei.guzev@...>
Why deriving from "Class" class is denied?
Hi,
Would You like to revise this issue? It seems to be inconsistent.
matz@ruby-lang.org (Yukihiro Matsumoto) writes:
[#17901] Rubygarden Poll — Dave Thomas <Dave@...>
[#17922] Time vs ParseDate — Kero van Gelder <kero@...4050.upc-d.chello.nl>
Why doesn't Time accept the output from ParseDate.parsedate directly?
[#17925] Movement in scripting language communities to integrate XML-RPC — gsemones@... (Guerry Semones)
Greetings,
Hi,
"out of the box" by including
Hi,
Hi,
[#17931] Re: Rubygarden Poll — "Lyle Johnson" <ljohnson@...>
> The next poll will be interesting: "I prefer building Ruby GUIs with:"
[#17939] RUBY C++ Extension — jglueck@... (Bernhard Glk)
Does anybody have the source to a WORKING C++ Class exported to RUBY
[#17948] FastCGI for Ruby? — Eli Green <eli.green@...>
Hey there. A few weeks back, when I was searching for Ruby-related stuff, I
[#17984] waiting for `backquotes` to finish — stephen.hill@... (Steve Hill)
Hi,
[#18018] Broadcasting data — "HarryO" <harryo@...>
Does someone have an example of broadcasting data around a network using
Hi,
> |Does someone have an example of broadcasting data around a network using
[#18023] [ANN] libxslt Rubified! — Wai-Sun Chia <waisun.chia@...>
Hello,
Wai-Sun Chia <waisun.chia@compaq.com> wrote:
I've been learning Ruby, mostly with the Pickaxe book, and it's going
At 05:07 PM 7/19/01 +0900, Wayne Vucenic spewed forth:
[#18041] How to define instance variables from 'C'? — Wai-Sun Chia <waisun.chia@...>
Hello Rubyists,
[#18046] Wny two exception handling methods? — Ned Konz <ned@...>
I just started looking at Ruby (reading Dave Thomas' book), and I'm puzzled
[#18060] Best way to prevent infinite loops... — Sean Chittenden <sean-ruby-talk@...>
Howdy. What's the best way to prevent infinite loops in Ruby?
[#18073] 99 bottles of beer — "Dat Nguyen" <thucdat@...>
[#18080] [ANN]: RubyGems (was Re: Rubygarden Poll) — Ryan Leavengood <mrcode@...>
Bill Kelly wrote:
[#18087] Debugging extensions with gdb — Wai-Sun Chia <waisun.chia@...>
Hello,
[#18098] Exceptions — "Aleksei Guzev" <aleksei.guzev@...>
What about "retry"ing from the line where exception occurred and/or just
[#18101] Re: 99 bottles of beer — grady@... (Steven Grady)
(I believe in Perl circles this is called Golf. This is the first
[#18120] Re: An exercise in minimalism — Chris Moline <ugly-daemon@...>
Here's a first attempt. It weighs in at 66 bytes.
At 12:19 AM 7/20/01 +0900, David Alan Black spewed forth:
>>>>> "A" == A Bull in the China Shop of Life <feoh@fourfuzzies.org> writes:
[#18142] Re: instance variables by name? — "Barnett, Aaron" <aaron.barnett@...>
[#18144] Re: instance variables by name? — "Barnett, Aaron" <aaron.barnett@...>
[#18167] Enabling "super" — "Aleksei Guzev" <aleksei.guzev@...>
(1)
>>>>> "A" == Aleksei Guzev <aleksei.guzev@bigfoot.com> writes:
# tt_mM = rb_define_module("M");
>>>>> "A" == Aleksei Guzev <aleksei.guzev@bigfoot.com> writes:
[#18188] Newbie. Sinking fast. Please help. — Matt <matt@...>
I bought Programming Ruby a number of months back and finally have an opportunity to try out Ruby. However, I can't get it to build. Actually, that's not quite accurate. It builds fine. It won't pass 'make test'.
>>>>> "M" == Matt <matt@greenviolet.net> writes:
On Sat, 21 Jul 2001, ts wrote:
"Serban Udrea" <S.Udrea@gsi.de> writes:
On Sat, 21 Jul 2001, Dave Thomas wrote:
[#18193] Re: 99 bottles of beer — "Dat Nguyen" <thucdat@...>
99.downto(0){|x|w=" on the wall";u="#{x!=0?eval(x.to_s):'no more'}
On Sat, 21 Jul 2001, Glen Starchman wrote:
[#18215] Re: 99 bottles of beer — Will Sobel <will.sobel@...>
On Sat, 21 Jul 2001, Will Sobel wrote:
On Sat, 21 Jul 2001, Avi Bryant wrote:
On Sat, 21 Jul 2001, Avi Bryant wrote:
On Sat, 21 Jul 2001, David Alan Black wrote:
On Sat, 21 Jul 2001, Avi Bryant wrote:
Ok. 151 bytes. No warnings.
On Sat, 21 Jul 2001, Avi Bryant wrote:
[#18244] RCR: Transient instance variables — Michael Neumann <neumann@...>
Hi,
[#18271] Re: 99 bottles of beer — "MikkelFJ" <mikkelj-anti-spam@...1.dknet.dk>
[#18280] Re-loading a modified class definition — "HarryO" <harryo@...>
I was chatting with a friend of mine last night and we were discussing
[#18293] NUM2LONG problem :) — "Aleksei Guzev" <aleksei.guzev@...>
Just now I met a funny problem with NUM2LONG macro.
[#18295] Unicode filenames and Ruby porting — Ned Konz <ned@...>
If someone were to port Ruby to Windows/CE, they would have a little
[#18306] Ruby as opposed to Python? — "Mark Nenadov" <mnenadov@...>
Hello. I have toyed with the idea of trying Ruby out for some time now.
Hi, Mark.
Albert Wagner <alwagner@tcac.net> writes:
In article <ExK67.8849$1V1.797914@e420r-atl2.usenetserver.com>, "Albert
I consider Smalltalk to be "pure" OO. You have objects and you have
Yukihiro Matsumoto wrote:
Michael Neumann wrote:
Yukihiro Matsumoto wrote:
On Mon, Jul 30, 2001 at 05:58:22AM +0900, Paul Prescod wrote:
"Florian G. Pflug" wrote:
[#18328] Re: Ruby Book — Todd Gillespie <toddg@...127.ma.utexas.edu>
Tom Malone <tom@hurstlinks.com> wrote:
[#18344] Newbie question: Data structures in Ruby. — Erik <recon_nospam@...>
Hi all,
[#18351] RCR: String./ to concatenate paths — Michael Witrant <mike@...>
[#18356] Still can't get Ruby to compile... — Matt <matt@...>
Quick recap:
[#18374] OO question — "Tom Malone" <tom@...>
Someone please tell me if this is an inappropriate question for this list -
[#18378] More newbie questions — Matt <matt@...>
OK. Now that I have Ruby installed and apparently (mostly) working, I'm trying my hand at simple things. (At least they seem like they'd be simple enough...)
[#18390] RE: OO question — Will Conant <WillC@...>
Over the weekend, I put together my first real Perl project. Perl, of
On Tue, 24 Jul 2001, Will Conant wrote:
[#18393] Trouble Using FXRuby on cygwin/Windows NT — rgilbert1@... (Robbie Gilbert)
Hi,
[#18395] interfaces? — "MikkelFJ" <mikkelj-anti-spam@...1.dknet.dk>
I am fairly new to Ruby (the DDJ generation), so I may have missed something
[#18408] Re: mod_ruby - persistent variables? — Shugo Maeda <shugo@...>
Hi,
Shugo Maeda <shugo@ruby-lang.org> wrote in message news:<87u202on1y.wl@studly.priv.netlab.jp>...
[#18409] Socket vs. TCPSocket & UNIXSocket — Eli Green <eli.green@...>
Socket.accept returns an array, whereas TCPServer.accept and UNIXSocket.accept
[#18439] Re: OO question — "David Simmons" <pulsar@...>
"Tom Malone" <tom@tom-malone.com> wrote in message
[#18452] Re: Ruby as opposed to Python? — "Dat Nguyen" <thucdat@...>
"Dat Nguyen" <thucdat@hotmail.com> writes:
[#18502] Ruby source code and binaries for Mac OS 9 — Dan Moniz <dnm@...>
Hi everyone,
[#18510] Basic OO Tutorial, Ruby & Perl — clpoda@...
I have prepared a document called rubyboot,
[#18542] Tk Demo Patch — "John Kaurin" <jkaurin@...>
I have not been following comp.lang.ruby much since 1.6.3, so please
[#18545] Re: Ruby as opposed to Python? — Ned Konz <ned@...>
Avdi Grimm wrote:
[#18566] Which database should I use? — Urban Hafner <the-master-of-bass@...>
Hello everybody,
Urban Hafner wrote:
[#18573] ruby versus Perl Magic — markus jais <info@...>
hi,
[#18583] My first Ruby program... :-) — "Bjorn Pettersen" <BPettersen@...>
Well, it's now two days into playing with Ruby, and I wrote my first
Hello --
[#18608] ruby indenter — Joseph McDonald <joe@...>
> Has anyone written a ruby pretty printer or indent-er in ruby?
Hi,
> Yes. But since I no longer program in emacs lisp, and have been too busy
Hi,
[#18616] IO.popen — "Aristarkh A Zagorodnikov" <xm@...3d.ru>
[#18622] Regex problems — "Roger Lipscombe" <rlipscombe@...>
I'm trying to do some regex replacement in strings:
[#18628] State of the Onion Five — Dave Thomas <Dave@...>
[#18629] exit() called in ruby_run()? — Emil Ong <onge@...>
Hi,
[#18634] Most Sig. NonZero bit, efficiently? — Hugh Sasse Staff Elec Eng <hgs@...>
I see that integer types (Bignum and Co.) support [] to get the kth bit out.
FYI - UDP guarantees delivery of uncorrupted, complete datagrams, or no
[#18699] Possible threading problem under Windows — Dave Thomas <Dave@...>
At 23:22 7/28/2001 +0900, you wrote:
[#18704] HTML Librarys and OOP Design Philosophy — David Tillman <dtillman@...>
[#18724] Problem installing IOWA — "James Britt (ruby-talk ML)" <ruby@...>
I've downloaded the IOWA package, and have tried to install it
[#18762] Guide to using class loading (or similar concepts) in Ruby? — JamesArendt@... (James Arendt)
I'll be quite honest I'm quite a Ruby newbie and haven't had much
In Ruby you load entire files rather than individual classes.
On Mon, Jul 30, 2001 at 08:39:15AM +0900, Nat Pryce wrote:
[#18766] Re: Autoflush backquotes?? — Harry Ohlsen <harryo@...>
> def make( action )
[#18768] Re: Ruby vs. Objective Caml — "MikkelFJ" <mikkelj-anti-spam@...1.dknet.dk>
[#18810] Net::HTTP (downloading an image) — Tobias Reif <tobiasreif@...>
Hi;
[#18826] Get a list of class (not instance) functions — "Florian G. Pflug" <fgp@...>
Hi
[#18832] Ruby164-2.exe — "Albert L. Wagner" <alwagner@...>
Ruby164-2.exe does not work in my Win2k box. Judging by other
[#18851] Rubywin uses hard-coded "/cygdrive" prefix. — Lloyd Zusman <ljz@...>
I just noticed today that the version of `rubywin' that comes with the
[#18863] Re: Who can count change?? — teespy <teespy@...>
[ruby-talk:18330] Ruby, Python and Objects philosophy
Wasn't there a big /. discussion about this a week or so ago? If I may
interject some thoughts into this matter as well. Regretfully it belongs on
page 75 of that old slashdot discussion but how could I resist?
*** Warning, below is pure opionated sputter. Read or discard as needed ***
Some data type differences I have noticed.
Firstly Ruby is Dynamically typed. So is Python. In Ruby everything is an
object and objects are construed of their definitions as such and not just a
few basic complimentary data types. An example is lists, tuples, sequences
and dictionaries acting like objects and collections in Python but are
really "intrinsic" data types. For most people this really doesn't make
much difference since the implementation is more or less syntactically the
same.
Why Objects?
So it really begs the question, "what is an object and why is it important
that everything be defined as such?" This is particularly the case with
respect to interpreted languages at design-time. If my code looks the same
and acts the same, then isn't it the same? Perhaps this is true. I have
seen arguments conveying very compelling arguments against Object Oriented
programming that make a lot of sense. Here are some that I have seen.
-Most people just don't get Object Oriented Programming either in theory or
practice.
-If you duplicate code then you've broken the "golden rule" of OOP so it's
pointless to try.
-Maintaining a poorly designed Object Oriented Design is worse than mucking
through functional spaghetti code. (gawd ain't this the truth?)
-A poorly designed object metaphor ends up creating more work than just
coding the functions and not duplicating code. (my personal favorite)
-If all you're doing is using objects to represent namespaces with functions
or rich data types then what difference does it really make? (you just need
a struct right?)
-Don't you have to have like 3 years life cycle to get you're money out of
Object Oriented Systems? (i've seen this one, hey it's possible!)
No really, why objects?
So the answer from it's face value is, "does it really matter?" I mean if
you're going to code it and throw it away? Or are you? To me it all boils
down to a matter of personal preference. If you feel like greased
lightening when you code and you aren't hitting any brick walls then you're
doing something right. Keep it up.
What is a 菟ureobject language anyway?
There has been debate on the 溺eta Objectbehavior of pure object languages
such as Smalltalk (wot痴 that?) and Ruby. Does a Meta Object Protocol
really belong as a 吐eatureof Object Oriented design? Well all of these
arguments are all fine and good but to me the answer is 土es Here are my
thoughts on the matter if you are still awake.
It all boils down to three things Neo. 鼎ontrol, Opions and PerspectiveTo me, Smalltalk was not so much about syntax as it was about 菟erspective.Objects were perceived to be living entities. In other words we perceived
our code to exist purely in the runtime environment. Let us excuse design
time for a moment because an object at design time is a dead object. To me,
Smalltalk was also about patterns. Patterns of reuse, patterns modeling
processes, patterns mixed with other patterns to make a larger pattern
(pattern language). Patterns were built from homogenous building blocks
(objects) and nothing was ever hidden from you by the VM (like keywords) so
anything that existed was built entirely from objects. Objects were
percieved to be "alive" and given personas. Debugging was known as
"communicating with your objects,"
So in order to apply this level of perception in a practical sense we can
take the following requirement into consideration. Take that cool program
(not just a piece of code) and reuse any piece of it or tie it into a bigger
program without ever stopping your program. (whoa!) When you take that
requirement and try to apply it to most so-called Object Oriented languages
the complexity starts to boggle the mind. But in Smalltalk it was not
uncommon at all. In fact, if I were to share some Smalltalk code with you I
would send you my instantiated objects in binary form along with the code
that defines them. To me, it was just as imported to have 妬nstancesas it
was to have a definition.
So from an implementation standpoint I really do not care about what the
academic definition of an Object Oriented something or other is. All I care
about are my requirements and the obstacles it would take to get there.
Perhaps this is pragmatic? For example, let us examine that requirement of
reusing your code and never stopping your program. My code can be run as
long as there is power (not easy in CA) and as long as it is running (or
not) I can reuse it. Apply those requirements to (my_favorite_language) and
you池e options start to shorten or the code it would take to get this done
starts to lengthen. Given a running configurable/reusable environment
requirement, the concept of assembling objects and methods at runtime start
to make sense. Assembling objects and modifying their behavior at runtime
is powerful mechanism in and of itself wouldn稚 you say?
Other buzzwords protagonizing modeling languages such as Smalltalk are
鄭spect Oriented Programmingor buzzwords such as 鼎rosscuttingbut words
get in the way. Let痴 take a logging example. Every program I get paid to
work on involves some custom logging mechanism and whoever I work for has
some brilliant idea on this new fancy logging framework that痴 going to tell
you everything about stupid program X.
Method defintion( some params )
LogMethodEntry( Hard_code_method_name_or_something )
Try:
Wow_my_code_finally_goes_here
Catch:
LogThatProblem( Send_That_Error_All_Unformatted_and_ugly_to_our_logger )
Finally:
LogMethodExit( Hard_coded_method_name )
Wow you notice all the duplicate code here? Also what if I知 printing to a
rich text canvas? Also, what class am I in? Also when did that class
transition occur? Also, when that class transition occurred do I have to
hard code a logging statement there too? Gee that sucks! How much time was
spent coding and how much time was spent logging? About 50/50 you say? Now
that痴 what I call value! So what is the alternative? If I can override
the default behavior of all objects in stupid program X than I can have it
電escribeitself to the logger without writing all that duplicate ugly
code. How easy is that in Java? How easy is that in Python? How easy is
that in a language that allows for dynamic manipulation of the 鼎lassobject runtime behavior?
What about all those ugly try catches in every method? Isn稚 that duplicate
code? Why yes, it is and it痴 pretty common if you池e in a real hurry and
don稚 have time to come up with, think about or even programmatic privilege
to implement some nice delegator pattern that allows us to never duplicate
exception handling code. Reminds me of the first time my Smalltalk buddy
explained the 澱lockto me. 展ell it痴 this cool method object that just
hangs around and you can just attach it to any object you need if you want
that behavior. So this design works pretty cool if we just design some
nifty object and call it 擢ailBlock.
..method definition
#notesomeMethod exhibits error trapping behavior
someMethod( some params )
# logging is take care of by Class!
Do_my_work_here
outside method call
catch( methodProblem )
tell_FailBlock( what, where )
send_methodProblem_back_to_sender
Now isn稚 that pretty? Notice the missing duplicate code? Assuming of
course that we can have objects interested only "aspects" of what is going
on take care of those things and the code does not have to be duplicated.
In this case the "aspect" is logging method behavior. Please forgive and/or
correct me if my understanding of Aspect Oriented Programming (AOP) is
skewed. Now wouldn稚 it be cool if we could get that method as it exists in
it痴 instance, change the code then send it back to every instance of that
object? Wouldn稚 that be like open heart surgery or something?
Everything is beautiful in my little world
So you can see that in my little world everything is perty and code is never
duplicated. Objects are self-describing and can accommodate themselves to
their environment dynamically. It痴 a beautiful place. However in the salt
mines of reality where people pay get paid to write code. I have found that
there is a certain sick pleasure companies get out of knowing that some
project took hundreds or thousands of man hours to complete especially if it
involves re-inventing the wheel in some form or other. (duplicate code
non-withstanding) Also I can get paid big bucks today programming in
languages like Java that really limit what I can do at runtime. (ouch!)
This is not the case with Ruby or Smalltalk. So what difference does it
make to the would-be Ruby fleeing from Python / Java / VB or whatever
programmer? The answer for me would be 展hat difference would I want it to
make? Can you make Python act like ruby? (yes!) Can you make Ruby act
like Python? (yes!) Can you even get those cool block thingies in Python?
(well you have anonymous functions and if you are really good at tricking
yourself, yes!)
Thanks to all you technical people for hammering out all those tough
technical aspects. This has been a purely spiritual and religious sermon.