Re: [fpc-pascal] More Filter Madness

2011-10-16 Thread Jürgen Hestermann

Alberto Narduzzi schrieb:
 Recursion is for other things, such as expression parsing etc. where 
you don't (and neither possibly can't) actually know how deep may the 
nesting.


Well, I would advice only to use it if you *know* the maximum nesting 
depth. Otherwise it can crash easily.


A good example of stack overflow crashes is a (Pascal) software happened 
in a huge railway signal box in germany (near Hamburg) in 1995 
(http://catless.ncl.ac.uk/Risks/17.02.html#subj3). The software worked 
ok on testing but on go live it crashed with stack overflow because 
suddenly the data amount (and therefore the nesting depth) was 
significantly larger than in the tests. It is much harder to judge the 
stack memory use than the heap use and often the stack is more limited 
than the heap so you run into such issues easier.

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-16 Thread Alberto Narduzzi

Well, I would advice only to use it if you *know* the maximum nesting
depth. Otherwise it can crash easily.


I was not focusing on the problems that could arise using recursion, my 
point simply was that in this case, use of recursion was a no-need.


Of course when using recursion you _MUST_ keep an eye on the stack, but 
then, a good parameter design for the recursive function could help a 
lot. Pointers are a must; while structures/records should be avoided in 
primis, as they are stack-hungry ;-)




A good example of stack overflow crashes is a (Pascal) software happened
in a huge railway signal box in germany (near Hamburg) in 1995
(http://catless.ncl.ac.uk/Risks/17.02.html#subj3). The software worked
ok on testing but on go live it crashed with stack overflow because
suddenly the data amount (and therefore the nesting depth) was
significantly larger than in the tests. It is much harder to judge the
stack memory use than the heap use and often the stack is more limited
than the heap so you run into such issues easier.


I don't know anything in detail about this crash (shit happens, I might 
say) all I can say out of my knowledge is that maybe in that specific 
situation some possible scenarios have been underestimated.
I would ask myself why should you need recursion in that case too... but 
the approaches are different, and subjective, too.
I would have gone through a tree-node solution instead; but that's me, I 
know.
As I say, recursion is primarily for cases where/when you don't/can't 
have any finite states to start with. A railway net, by definition, 
although the possibilities of the shifts may result in a big number of 
trees, _is_ finite. IMHO. Hence, the use of recursion, again, is just a 
nice thing for your software to have, not necessarily the most adequate 
implementation of the human algorithm otherwise behind it.


I found, one day, that the easiest thing to do when you have no idea 
about how to have a computer replacing a human, is just to have as close 
as possible a representation of the human work-flow; then have a 
computer just being able to perform and cross-check it just faster.
BTW, we all know that humans don't have a stack big enough to deal with 
recursion at reasonable speeds... ;-)


Cheers, A.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-15 Thread Jürgen Hestermann

Rich Saunders schrieb:
 On 10/14/11 2:39 AM, Nataraj S Narayan wrote:
 Good candidate for recursive algorithm i think.
 At first glance maybe, but it is actually a horrible candidate. That is
 due to the fact that the number of values is unknown and recursion has a
 built-in limit based on the stack size. So if your logic is recursive it
 will work one day on one file of numbers and not the next on a longer 
file.


Exactly! I often see advices to use recursive function/procedure calls 
because it looks so elegant but actually it can crash quite easily 
(depending on stack size and local variables). Most people don't think 
about this and believe that if it works on a test it will always work. 
But that's delusory.


IMO recursive function calls should only be used if there is a known 
limitation of recursion levels and if that maximum will safely work 
under all circumstances.




 Much better to simply maintain a summed value, read a value, add it to
 the sum, write the current sum, and continue until done.


Yes, in this case it is much better and also much easier.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-15 Thread Alberto Narduzzi

  Good candidate for recursive algorithm i think.
  At first glance maybe, but it is actually a horrible candidate.


IMHO, this is far from being a problem that needs to be solved with 
recursion. Indeed, you don't need recursion at all: you have a file, and 
just need to sum its values till EOF; only you need also to show the 
partial result at each step.
Moreover, since the file has a well known beginning and end, a cycle is 
more than enough.
Recursion is for other things, such as expression parsing etc. where you 
don't (and neither possibly can't) actually know how deep may the nesting.



Just my 2c

Cheers, A.

--
Alberto Narduzzi
ANSware Ltd.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-14 Thread Nataraj S Narayan
Hi

Good candidate for recursive algorithm i think.

regards

Nataraj

On Fri, Oct 14, 2011 at 6:23 AM, Ko Hashiguchi
ko.d.hashigu...@gmail.com wrote:
 Mine is more of a programming problem, rather than one native to Pascal, but
 here goes:

 I have a text file with many Double values. Looking more or less like below,
 but with hundreds of entries...

 1.5
 3.25
 7.54
 10.33
 2.22

 The values listed are only for illustration. What I need to do is read the
 values in the first file and sum them up such that the output file starts
 with the first value, the second entry in the output file is the sum of the
 first AND second values, the third entry in the output file is the sum of
 the first, second and third values of the input file:

 1.5
 4.75   (1.5 + 3.25)
 12.29 (1.5 + 3.25 + 7.54)
 22.62 (1.5 + 3.25 + 7.54 + 10.33)
 24.84 (1.5 + 3.25 + 7.54 + 10.33 + 2.22)

 The process of summing up continues to the end of the file.

 I figure this is a program loop problem, rather than a Pascal problem, but
 it's beyond me. I would greatly appreciate assistance.

 Thank you,
 Ko Hashiguchi


 ___
 fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
 http://lists.freepascal.org/mailman/listinfo/fpc-pascal

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-14 Thread Vincent Snijders
2011/10/14 Ko Hashiguchi ko.d.hashigu...@gmail.com:
 Mine is more of a programming problem, rather than one native to Pascal, but
 here goes:

 I have a text file with many Double values. Looking more or less like below,
 but with hundreds of entries...

 1.5
 3.25
 7.54
 10.33
 2.22

 The values listed are only for illustration. What I need to do is read the
 values in the first file and sum them up such that the output file starts
 with the first value, the second entry in the output file is the sum of the
 first AND second values, the third entry in the output file is the sum of
 the first, second and third values of the input file:

var
  infile: text;
  outfile: text;
  sum: double;
  value: double;

begin
  assign(infile, ...);
  assign(outfile, ...);
  reset(infile);
  rewrite(outfile);
  sum := 0;
  while not eof(infile) do begin
readln(infile, value);
sum := sum + value'
writeln(outfile, sum);
  end;
end.

Depending on how many numbers you read and the difference between
magnitude of sum and value, you may have to do some extra work for the
numeric stability. but that is for later concern.

Vincent
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-14 Thread Graeme Geldenhuys
On 14/10/2011 08:49, Vincent Snijders wrote:
 
 Depending on how many numbers you read and the difference between
 

The original poster's questions sounds very much like a homework
assignment, which you have no done for him. Naughty!



Regards,
  - Graeme -

-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-14 Thread Ko Hashiguchi
Hello Graeme,

I'm way too old for homework, just to let you know. I'm five months younger
than Steve Jobs and three months older than Bill Gates. Call me an old fart
who just needed the help.

Regards,
Ko Hashiguchi

On Fri, Oct 14, 2011 at 12:04 AM, Graeme Geldenhuys graemeg.li...@gmail.com
 wrote:

 On 14/10/2011 08:49, Vincent Snijders wrote:
 
  Depending on how many numbers you read and the difference between
  

 The original poster's questions sounds very much like a homework
 assignment, which you have no done for him. Naughty!



 Regards,
  - Graeme -

 --
 fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
 http://fpgui.sourceforge.net/

 ___
 fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
 http://lists.freepascal.org/mailman/listinfo/fpc-pascal

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] More Filter Madness

2011-10-14 Thread Vincent Snijders
2011/10/14 Graeme Geldenhuys graemeg.li...@gmail.com:
 On 14/10/2011 08:49, Vincent Snijders wrote:

 Depending on how many numbers you read and the difference between
 

 The original poster's questions sounds very much like a homework
 assignment, which you have no done for him. Naughty!

The thought crossed my mind and therefore I googled Ko Hashiguchi
pascal and found this:
http://free-pascal-general.1045716.n5.nabble.com/Odd-delimited-text-file-length-limitations-td4550913.html

I took the risk...

Vincent
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-14 Thread Graeme Geldenhuys
On 14/10/2011 09:09, Ko Hashiguchi wrote:
 Call me an old fart who just needed the help.

Please accept my apology then.



Regards,
  - Graeme -

-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-14 Thread Ko Hashiguchi
Graeme,

No apology necessary. I am 56 years old, I have to (because of lack of
money) write my own utilities, and I am too old to take up programming as a
profession. But I am NOT too old to program! I just need help every now and
then.

I am the same Ko Hashiguchi who asked for help with delimited ASCII files on
this forum some months ago.

You gentlemen have been very helpful, and I appreciate it!

Ko Hashiguchi

On Fri, Oct 14, 2011 at 12:19 AM, Graeme Geldenhuys graemeg.li...@gmail.com
 wrote:

 On 14/10/2011 09:09, Ko Hashiguchi wrote:
  Call me an old fart who just needed the help.

 Please accept my apology then.



 Regards,
  - Graeme -

 --
 fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
 http://fpgui.sourceforge.net/

 ___
 fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
 http://lists.freepascal.org/mailman/listinfo/fpc-pascal

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] More Filter Madness

2011-10-14 Thread Nataraj S Narayan
Hi

Many of us from south Asian countries in here ought to be in their
middles ages! I am 45.  Since many of us might have started out in our
late twenties in Delphi, natural progression to be here in fpc in our
autumn days of life.

regards

Nataraj

On Fri, Oct 14, 2011 at 8:30 AM, Ko Hashiguchi
ko.d.hashigu...@gmail.com wrote:
 Graeme,

 No apology necessary. I am 56 years old, I have to (because of lack of
 money) write my own utilities, and I am too old to take up programming as a
 profession. But I am NOT too old to program! I just need help every now and
 then.

 I am the same Ko Hashiguchi who asked for help with delimited ASCII files on
 this forum some months ago.

 You gentlemen have been very helpful, and I appreciate it!

 Ko Hashiguchi

 On Fri, Oct 14, 2011 at 12:19 AM, Graeme Geldenhuys
 graemeg.li...@gmail.com wrote:

 On 14/10/2011 09:09, Ko Hashiguchi wrote:
  Call me an old fart who just needed the help.

 Please accept my apology then.



 Regards,
  - Graeme -

 --
 fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
 http://fpgui.sourceforge.net/

 ___
 fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
 http://lists.freepascal.org/mailman/listinfo/fpc-pascal


 ___
 fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
 http://lists.freepascal.org/mailman/listinfo/fpc-pascal

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] More Filter Madness

2011-10-14 Thread Rich Saunders
On 10/14/11 2:39 AM, Nataraj S Narayan wrote:
 Good candidate for recursive algorithm i think.
At first glance maybe, but it is actually a horrible candidate. That is
due to the fact that the number of values is unknown and recursion has a
built-in limit based on the stack size. So if your logic is recursive it
will work one day on one file of numbers and not the next on a longer file.

Much better to simply maintain a summed value, read a value, add it to
the sum, write the current sum, and continue until done.

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal