[#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 15:57:26 UTC
List: ruby-talk #34709
On Sun, 2002-02-24 at 04:22, Sean O'Dell wrote:
> "Sean Middleditch" <elanthis@awesomeplay.com> wrote in message > On Sat,
> 2002-02-> If you are coming from a C++ background, then why not just define
> a
> > "close" method for your objects?  It can't be any more cumbersome than
> > in C++, in which you would have add to explicitly call delete anyhow.
> 
> Because, generally speaking, I create objects on the stack, which in turn
> dynamically allocate the memory they actually use internally (and free on
> destruction).  I generally don't use new to create objects I use within
> functions because functions don't have reliable cleanup routines.  C++ can
> catch exceptions, but there is no equivalent to "finally" or "ensure."
> Creating the objects on the stack ensures that they get cleaned up properly
> when they go out of scope.  I've had tremendous success with this way of
> doing things.  It's intuitive, it's dependable and best of all you can have
> a bad day coding and still not create anything terribly funky.

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.

Honestly, it doesn't take very much effort at all to add a
c1.close ()
c2.close ()
c3.close ()
in an ensure block or anything - that will guarantee they are closed,
plus give you full exception handling when the saving routine is called.

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.

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.  ~,^

> 
> > It's a choice of: (A) do you want the ease of letting the stack cleanup
> > for you, or (B) do you want the ease of never dealing with memory
> > management, again, ever.
> 
> I'd rather have the stack way of doing things, complete with the automatic
> call to finalize.  It's not just an issue of memory management.  That's part
> of it, but the main thing to me is the encapsulation that the destructor
> provides.  There's more to be done when an object goes out of scope than
> just return memory to the system.  Losing that paradigm is a tough bullet to
> bite, but I am hearing a lot about how great garbage collection is, so I'm
> accepting it for now and I'll just see for myself.  It should be apparent to
> me within a month or two how well this memory management system holds up.

Well, you are trying to code in a C++ way with Ruby.  That would be like
trying to code the Ruby way in C++.  It just won't work right.

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.

> 
> I wouldn't say I have a downright good feeling about this memory/destructor
> thing...but I have learned ways to work around doing what I'm already used
> to doing and I'm trusting all these very smart people not to be leading me
> blind off of a cliff.

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.

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.  ~,^

> 
>     Sean
> 
> 


In This Thread