[#33161] Call/CC and Ruby iterators. — olczyk@... (Thaddeus L Olczyk)

Reading about call/cc in Scheme I get the impression that it is very

11 messages 2002/02/05

[#33242] favicon.ico — Dave Thomas <Dave@...>

19 messages 2002/02/06
[#33256] Re: favicon.ico — Leon Torres <leon@...> 2002/02/06

[#33435] Reg: tiny contest: who's faster? (add_a_gram) — grady@... (Steven Grady)

> My current solution works correctly with various inputs.

17 messages 2002/02/08

[#33500] Ruby Embedded Documentation — William Djaja Tjokroaminata <billtj@...>

Hi,

24 messages 2002/02/10
[#33502] Re: Ruby Embedded Documentation — "Lyle Johnson" <ljohnson@...> 2002/02/10

> Now, I am using Ruby on Linux, and I have downloaded Ruby version

[#33615] Name resolution in Ruby — stern@... (Alan Stern)

I've been struggling to understand how name resolution is supposed to

16 messages 2002/02/11

[#33617] choice of HTML templating system — Paul Brannan <paul@...>

I am not a web developer, nor do I pretend to be one.

23 messages 2002/02/11

[#33619] make first letter lowercase — sebi@... (sebi)

hello,

20 messages 2002/02/11
[#33620] Re: [newbie] make first letter lowercase — Tobias Reif <tobiasreif@...> 2002/02/11

sebi wrote:

[#33624] Re: [newbie] make first letter lowercase — "Jeff 'japhy' Pinyan" <jeffp@...> 2002/02/11

On Feb 11, Tobias Reif said:

[#33632] Re: [newbie] make first letter lowercase — Mathieu Bouchard <matju@...> 2002/02/12

[#33731] simple XML parsing (greedy / non-greedy — Ron Jeffries <ronjeffries@...>

Suppose I had this text

14 messages 2002/02/13

[#33743] qualms about respond_to? idiom — David Alan Black <dblack@...>

Hi --

28 messages 2002/02/13
[#33751] Re: qualms about respond_to? idiom — Dave Thomas <Dave@...> 2002/02/13

David Alan Black <dblack@candle.superlink.net> writes:

[#33754] Re: qualms about respond_to? idiom — David Alan Black <dblack@...> 2002/02/13

Hi --

[#33848] "Powered by Ruby" banner — Yuri Leikind <YuriLeikind@...>

Hello Ruby folks,

78 messages 2002/02/14
[#33909] Re: "Powered by Ruby" banner — Leon Torres <leon@...> 2002/02/14

On Thu, 14 Feb 2002, Yuri Leikind wrote:

[#33916] RE: "Powered by Ruby" banner — "Jack Dempsey" <dempsejn@...> 2002/02/15

A modest submission:

[#33929] Re: "Powered by Ruby" banner — yet another bill smith <bigbill.smith@...> 2002/02/15

Kent Dahl wrote:

[#33932] OT Netscape 4.x? was Re: "Powered by Ruby" banner — Chris Gehlker <gehlker@...> 2002/02/15

On 2/15/02 5:54 AM, "yet another bill smith" <bigbill.smith@verizon.net>

[#33933] RE: OT Netscape 4.x? was Re: "Powered by Ruby" banner — "Jack Dempsey" <dempsejn@...> 2002/02/15

i just don't understand why it didn't show up! dhtml/javascript, ok, but a

[#33937] Re: OT Netscape 4.x? was Re: "Powered by Ruby" banner — Chris Gehlker <gehlker@...> 2002/02/15

On 2/15/02 7:16 AM, "Jack Dempsey" <dempsejn@georgetown.edu> wrote:

[#33989] Re: OT OmniWeb [was: Netscape 4.x?] — Sean Russell <ser@...> 2002/02/16

Chris Gehlker wrote:

[#33991] Re: OT OmniWeb [was: Netscape 4.x?] — Rob Partington <rjp@...> 2002/02/16

In message <3c6e5e01_1@spamkiller.newsgroups.com>,

[#33993] Re: OT OmniWeb [was: Netscape 4.x?] — Thomas Hurst <tom.hurst@...> 2002/02/16

* Rob Partington (rjp@browser.org) wrote:

[#33925] Re: "Powered by Ruby" banner — Martin Maciaszek <mmaciaszek@...> 2002/02/15

In article <3C6CFCCA.5AD5CA67@scnsoft.com>, Yuri Leikind wrote:

[#33956] Re: "Powered by Ruby" banner — Leon Torres <leon@...> 2002/02/15

On Fri, 15 Feb 2002, Martin Maciaszek wrote:

[#33851] Ruby and .NET — Patrik Sundberg <ps@...>

I have been reading a bit about .NET for the last couple of days and must say

53 messages 2002/02/14

[#34024] Compiled companion language for Ruby? — Erik Terpstra <erik@...>

Hmmm, seems that my previous post was in a different thread, I'll try

12 messages 2002/02/16

[#34036] The GUI Returns — "Horacio Lopez" <vruz@...>

Hello all,

33 messages 2002/02/17

[#34162] Epic4/Ruby — Thomas Hurst <tom.hurst@...>

Rejoice, for you no longer have to put up with that evil excuse for a

34 messages 2002/02/18

[#34185] Operator overloading and multiple arguments — ptkwt@...1.aracnet.com (Phil Tomson)

I'm trying to overload the '<=' operator in a class in order to use it for

10 messages 2002/02/18

[#34217] Ruby for web development — beripome@... (Billy)

Hi all,

21 messages 2002/02/19

[#34350] FAQ for comp.lang.ruby — "Hal E. Fulton" <hal9000@...>

RUBY NEWSGROUP FAQ -- Welcome to comp.lang.ruby! (Revised 2001-2-18)

15 messages 2002/02/20

[#34375] Setting the Ruby continued — <jostein.berntsen@...>

Hi,

24 messages 2002/02/20
[#34384] Re: Setting the Ruby continued — Paulo Schreiner <paulo@...> 2002/02/20

Also VERY important:

[#34467] recursive require — Ron Jeffries <ronjeffries@...>

I'm having a really odd thing happen with two files that mutually

18 messages 2002/02/21

[#34503] special characters — Tobias Reif <tobiasreif@...>

Hi all,

13 messages 2002/02/22

[#34517] Windows Installer Ruby 166-0 available — Andrew Hunt <andy@...>

16 messages 2002/02/22

[#34597] rdoc/xml questions — Dave Thomas <Dave@...>

24 messages 2002/02/23

[#34631] Object/Memory Management — "Sean O'Dell" <sean@...>

I'm new to Ruby and the community here (I've been learning Ruby for a grand

44 messages 2002/02/23

[#34682] duplicate method name — Ron Jeffries <ronjeffries@...>

I just found a case in a test file where i had two tests of the same

16 messages 2002/02/24
[#34687] Re: duplicate method name — s@... (Stefan Schmiedl) 2002/02/24

Hi Ron.

[#34791] Style Question — Ron Jeffries <ronjeffries@...>

So I'm building this set theory library. The "only" object is supposed

13 messages 2002/02/25

[#34912] RCR?: parallel to until: as_soon_as — Tobias Reif <tobiasreif@...>

Hi,

18 messages 2002/02/26

[#34972] OT A Question on work styles — Chris Gehlker <gehlker@...>

As a Mac baby I just had to step through ruby in GDB *from the command line*

20 messages 2002/02/28

[#35015] Time Comparison — "Sean O'Dell" <sean@...>

I am using the time object to compare times between two files and I'm

21 messages 2002/02/28

Re: Object/Memory Management

From: Sean Middleditch <elanthis@...>
Date: 2002-02-24 21:26:14 UTC
List: ruby-talk #34723
On Sun, 2002-02-24 at 16:02, Sean O'Dell wrote:
> "Sean Middleditch" <elanthis@awesomeplay.com> wrote in message
> >
> > The stack has that one advantage, yes.  There are a number of ways
> > around it (you just mentioned one yourself).  However, the stack is just
> > an ugly hack for bad design.  The stack does *not* in any way guarantee
> > that those objects are cleaned up.  You can leave functions without
> > cleaning up (destroying) objects on the stack.  Errors or exceptions can
> > occur during stack cleanup that you can't catch or deal with.  The order
> > of object destruction is (in many compilers) not guaranteed.  When you
> > have multiple objects that use/reference each other all destroyed on the
> > same fucntion cleanup, you'll start *really* seeing some problems.
> 
> The order of object destruction *is* guaranteed and works correctly on every
> compiler I've worked with since Turbo C++.

Mainsteam compilers, yes.  I suppose not everyone tries to be as
portable as I like to.  ~,^

> 
> I don't have troubles at all with C++ and I've been programming with it
> heavily for 10 years.
> 
> I don't believe the stack in C/C++ is an ugly hack for bad design.  It's
> been a fantastic way to help manage memory.

For simple management of memory, yes, it works very well.  It sits on
the system layer, guaranteeing the memory is freed, and in good speed,
too.

> 
> > I believe you mentioned earlier that you are unsure of your code's error
> > handling and stability, yes?  Well, you have to make some sacrifices
> > (add three lines of code) in order to make that error handling better.
> 
> That was in Perl, not C++.  Perl's error handling is terrible and I have a
> quite a bit of code that I don't trust because I didn't add error checking
> everywhere possible.

Ah, sorry, I must've misread that.  ^,^

> 
> > C++ destructors weren't intended to do anything other than clear up
> > resources - letting them do otherwise is bad C++ design; too many things
> > can go wrong during destructors to let sensitive/complex code run in
> > them.  That's why true destructors don't exist in Ruby... it would make
> > it too easy for Ruby code to cause the interpreter to crash, which
> > should never ever ever happen.  ~,^
> 
> C++ was designed to provide wrappers for resources.  C++ provides for
> object-oriented design.  Resource management is just one of its features.
> There are no official recommendations as to what you use C++ destructors
> for, and I have seen them used for lots of different things with excellent
> results.

Yes, I've used them quite a bit in ways I shouldn't have, either.  The
fact is, the code breaks way too easily.  Especially when you're using
heavily cross-referenced objects, and you have very little control over
when an object goes out of scope.  Then, you have no control over what
order things get destroyed in whatsoever, and you see how trying to do
things like write to files, or call complex procedures, really gets out
of hand very quickly.

> 
> > As I stated above, if your code depends on destructors of objects to do
> > tasks like opening, writing to, and closing a file, in addition to
> > memory cleanup, I'd expect your application would break down very easily
> > if an I/O error occured.
> 
> No, because when exceptions occur, the specification is to unwind the stack,
> not longjmp out.  If I have a file object with an open file and something
> throws an exception, when the file object leaves the try block, its
> destructor will get called allowing the file to be closed properly.

And what happens when its destructor throws an exception, while you're
already handling an exception, in a list of objects all needing their
destructors called, each of which is likely to throw an additional
exception because of a bad file permission somewhere?

Had the objects been close and checked individually, the very first
error could have been caught.  The further attempts (which, depending on
the error and your code, could cause data loss or corruption), would
have been avoided, and the impact not nearly as great.  Not to mention
with finer control, you could have caught the first exception, fixed the
error (reset file permissions, save to an alternate file), and continued
on with the rest of the file saves.

All if you manually called the save method or whatever, instead of
letting the stack make its attempt to do it for you.

> 
> > Ruby is contagious.  Give yourself a week or two, and you'll be dying to
> > write C++ code with blocks passed to functions, or memory leak free..
> >
> > Honestly, the stack method of being lazy and letting the compiler do
> > your cleanup for you shouldn't even be used in C++ programs that require
> > any kind of stability or dependibility.  Ruby simplifies all that so
> > much.  It puts the cleanup back in *your* hands, under your control,
> > where it should have been the whole time.  If you need a file saved, you
> > control when it is done, and how the errors are handled.
> 
> Stability is what C++ is very, very good at.  I program with C++ heavily,
> and all the features you are saying cause problems have actually *solved* a
> lot of problems for myself and everyone I've ever coded with.

Any language that sits that close to the sytem breaks down very quickly
with a system error without extensive error checking and handling.  Ruby
and other high level languages sit way above the system level, and thus
tend to run a lot more reliably (assuming their VM's/interpreters aren't
poorly programmed).

You can make any C or C++ program very, very stable, with very attentive
and careful programming.. exactly what these shortcuts that C++
introduces avoids.  C++ is a great language, so long as you only use the
given features (like stack based object destruction) on objects and data
that the method fits.  You don't perform operations that can fail where
you can't handle the failure, whether you're using C++ stack based
object destructor and exceptions or system call wrappers that don't
check return codes.

> 
> > I'm sorry if I sounded like I was attacking your programming style; I'm
> > not.  It's just that after some 7 years of C++, It's hard-coded into my
> > head which parts of it I steer clear of, and all its numerous
> > short-comings.  I used to like programming in nothing but C++, now I
> > only touch it on projects that are already in C++.  C is even prettier
> > in that it doesn't lend itself to making too many shortcuts, and you
> > avoid "bugs" like stack-based object destruction.  ~,^
> 
> 7 years seems like a long time to have missed so much in C++.  I don't doubt
> you didn't enjoy programming in it.

Oh, I enjoyed it.  Why else did I stick with it for all that time?  Some
tasks just do not, in any way, belong with C++.  Even C isn't great for
many things.

I've found that the majority of applications work best in either very
low-level, fast code (C) or a very high-level, nice OO language (like
Ruby).  C++ is an attempt to get a mixture of the two, sacrificing here
and there to try and get the best of both worlds.

I've found that it tends not to work that nicely.  Stick with the fast,
portable C, or make use of a *real* OO language.  ~,^


> 
>     Sean
> 
> 


In This Thread