Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Forth > Re: Elegant cod...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 39 of 58 Topic 4000 of 4325
Post > Topic >>

Re: Elegant code Was: Re: what kind of non microconroller app are

by Jonah Thomas <jethomas5@[EMAIL PROTECTED] > Apr 21, 2008 at 10:33 AM

Gerry <gerry@[EMAIL PROTECTED]
> wrote:
> Jonah Thomas <jethom...@[EMAIL PROTECTED]
> wrote:

: CHECK-STRING5 ( xt ca len -- xt ca' len' )
=A0 =A03DUP 1- 0< IF=20
     2DROP
   ELSE
=A0 =A0 =A0SWAP EXECUTE IF 1 /STRING RECURSE THEN
   THEN ;

> Personally I think you're worrying unnecessarily, your first attempt
> looks OK to me. When working with strings I often end up with a
> BEGIN... WHILE...WHILE...REPEAT...THEN structure. The only thing that
> grates is the THEN. I think it looks more complicated because of the
> way you've laid it out.

A loop with mutiple WHILEs is inherently complex. And the results are
separated from the code that creates them. I don't want to do that when
there's a better way. This particular time it turned out that a pretty
simple tail-recursion worked. So I want to try tail-recursion and
recursion before I try a loop with multiple WHILEs.=20
=20
> Incidentally if you have a Forth that handles multiple local
> declarations( I think GForth does) you can simplify your last attempt
> by getting rid of the TO's e.g.
>=20
> : GOOD-STRING2 { ca len xt }
>    ca len
>    BEGIN
>       { ca' len' }
>       len' 0 >
>    WHILE
>       ca' xt EXECUTE
>    WHILE
>       ca' len' 1 /STRING
>    REPEAT
>    THEN
>    ca len len' -
> ;
>
> Untested but I don't see why it wouldn't work, but probably isn't
> F200X compliant. It also shows my preferred layout.

I like to indent to show the nesting. Every now and then I start to make
an error that this catches. I figure that if I'm making errors then my
code is too complicated -- but how do you simplify a loop with multiple
exits? I think it's kind of simpler to use EXIT . You know the stack
state when you do EXIT is just what you'll get when your definition is
done. You don't have to depend on code somewhere else to do the right
thing. But sometimes that isn't simpler after all.

I made an error even with my simple tail-recursion code. I changed
something and forgot about the case where the string was empty. The code
that handled that was down at the bottom.

I'm better off if my habits make it easier to avoid errors. Try the
simplest way first. Do things that let me concentrate on one part at a
time without having to think about how it affects code somewhere else,
apart from the stack.

I liked multiple WHILEs when I first saw them. They were technically
good, and they made it easy to do multiple tests. But maybe it made it
easier to write things in  complicated ways.

It would be good if the layout of the language encouraged good coding
habits. When I started using Forth it had some things that strongly
discouraged some bad coding habits. Code went into 1K blocks which
discouraged routines longer than 16 lines of 64 characters. There were
no tools to help debug complicated routines, which discouraged big
complicated routines. The overhead for factoring was small, so there was
no particular advantage to putting in .S and ." statements to show what
was happening inside the code, as opposed to making each section be its
own routine that could be tested in isolation.=20

It encouraged adequate coding habits by breaking when people used bad
habits. Of course, a lot of people who tried it decided that it didn't
work rather than find out how to make it work.

So I'm starting to see multiple WHILE kind of like I see PICK though
less so. I like to have it available in case I get into a jam that needs
it. But if I need it, that's a hint that maybe I've already made a
mistake, I've painted myself into a corner where I need PICK to get out.
 




 58 Posts in Topic:
what kind of non microconroller app are done in forth?
gavino <gavcomedy@[EMA  2008-04-16 15:31:12 
Re: what kind of non microconroller app are done in forth?
pablo reda <pabloreda@  2008-04-16 15:57:50 
Re: what kind of non microconroller app are done in forth?
gavino <gavcomedy@[EMA  2008-04-16 16:13:28 
Re: what kind of non microconroller app are done in forth?
stephenXXX@[EMAIL PROTECT  2008-04-17 09:26:43 
Re: what kind of non microconroller app are done in forth?
pablo reda <pabloreda@  2008-04-17 06:28:26 
Re: what kind of non microconroller app are done in forth?
gavino <gavcomedy@[EMA  2008-04-18 10:11:10 
Re: what kind of non microconroller app are done in forth?
gavino <gavcomedy@[EMA  2008-04-18 10:12:04 
Re: what kind of non microconroller app are done in forth?
Elizabeth D Rather <er  2008-04-18 08:49:22 
Re: what kind of non microconroller app are done in forth?
Helmar <helmwo@[EMAIL   2008-04-18 11:10:45 
Re: what kind of non microconroller app are done in forth?
pablo reda <pabloreda@  2008-04-18 12:04:14 
Re: what kind of non microconroller app are done in forth?
gavino <gavcomedy@[EMA  2008-04-18 16:22:53 
Re: what kind of non microconroller app are done in forth?
gavino <gavcomedy@[EMA  2008-04-18 16:24:09 
Re: what kind of non microconroller app are done in forth?
Elizabeth D Rather <er  2008-04-18 20:47:50 
Re: what kind of non microconroller app are done in forth?
jennifer.spykerman@[EMAIL  2008-04-19 04:15:42 
Re: what kind of non microconroller app are done in forth?
Duke Normandin <dukeof  2008-04-19 14:20:53 
Re: what kind of non microconroller app are done in forth?
Robert Spykerman <robe  2008-04-19 17:07:15 
Re: what kind of non microconroller app are done in forth?
Duke Normandin <dukeof  2008-04-20 02:50:54 
Re: what kind of non microconroller app are done in forth?
Elizabeth D Rather <er  2008-04-19 21:48:07 
Re: what kind of non microconroller app are done in forth?
Jonah Thomas <jethomas  2008-04-19 10:40:11 
Re: what kind of non microconroller app are done in forth?
Thomas Pornin <pornin@  2008-04-20 07:11:54 
Re: what kind of non microconroller app are done in forth?
Bruce McFarling <agila  2008-04-19 09:33:55 
Re: what kind of non microconroller app are done in forth?
Bruce McFarling <agila  2008-04-19 09:37:25 
Re: what kind of non microconroller app are done in forth?
Guy Macon <http://www.  2008-04-19 17:47:45 
Re: what kind of non microconroller app are done in forth?
Jonah Thomas <jethomas  2008-04-19 14:31:39 
Re: what kind of non microconroller app are done in forth?
Bruce McFarling <agila  2008-04-19 15:04:48 
Re: what kind of non microconroller app are done in forth?
Albert van der Horst <  2008-04-20 13:43:04 
Re: what kind of non microconroller app are done in forth?
Bruce McFarling <agila  2008-04-19 15:21:12 
Re: what kind of non microconroller app are done in forth?
Gerry <gerry@[EMAIL PR  2008-04-20 01:50:08 
Re: what kind of non microconroller app are done in forth?
Jonah Thomas <jethomas  2008-04-20 08:23:50 
Re: what kind of non microconroller app are done in forth?
Gerry <gerry@[EMAIL PR  2008-04-20 08:12:11 
Elegant code Was: Re: what kind of non microconroller app are d
Jonah Thomas <jethomas  2008-04-21 01:58:43 
Re: Elegant code
Josh Grams <josh@[EMAI  2008-04-21 11:56:34 
Re: Elegant code Was: Re: what kind of non microconroller app a
"David N. Williams&q  2008-04-21 12:12:22 
Re: Elegant code Was: Re: what kind of non microconroller app a
mhx@[EMAIL PROTECTED] (M  2008-04-21 19:57:21 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Gerry <gerry@[EMAIL PR  2008-04-21 02:15:31 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Gerry <gerry@[EMAIL PR  2008-04-21 03:53:49 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Jonah Thomas <jethomas  2008-04-21 09:04:09 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Elizabeth D Rather <er  2008-04-21 07:42:01 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Jonah Thomas <jethomas  2008-04-21 10:33:13 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Bruce McFarling <agila  2008-04-21 08:22:03 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Gerry <gerry@[EMAIL PR  2008-04-21 09:45:27 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Gerry <gerry@[EMAIL PR  2008-04-22 02:20:59 
Re: Elegant code Was: Re: what kind of non microconroller app ar
John Passaniti <nntp@[  2008-04-22 17:22:35 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Elizabeth D Rather <er  2008-04-22 14:16:18 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Ian Osgood <iano@[EMAI  2008-04-22 10:00:09 
Re: Elegant code Was: Re: what kind of non microconroller app ar
John Passaniti <nntp@[  2008-04-22 17:36:41 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Gerry <gerry@[EMAIL PR  2008-04-22 22:59:42 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Alex McDonald <blog@[E  2008-04-23 01:00:52 
Re: Elegant code Was: Re: what kind of non microconroller app ar
stephenXXX@[EMAIL PROTECT  2008-04-23 10:07:15 
C interface (was: Elegant code)
anton@[EMAIL PROTECTED]   2008-04-23 20:04:07 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Gerry <gerry@[EMAIL PR  2008-04-23 03:20:05 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Alex McDonald <blog@[E  2008-04-23 04:09:54 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Alex McDonald <blog@[E  2008-04-23 04:14:57 
Re: Elegant code Was: Re: what kind of non microconroller app ar
Jonah Thomas <jethomas  2008-04-23 10:11:34 
Re: Elegant code Was: Re: what kind of non microconroller app ar
John Passaniti <nntp@[  2008-04-23 20:56:59 
Re: what kind of non microconroller app are done in forth?
gavino <gavcomedy@[EMA  2008-04-29 00:16:19 
Re: what kind of non microconroller app are done in forth?
Elizabeth D Rather <er  2008-04-28 21:47:07 
Re: what kind of non microconroller app are done in forth?
Robert Spykerman <robe  2008-04-29 04:32:49 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Nov 22 16:51:31 CST 2008.