Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #15595

Re: Forth as a polarising language

From Bernd Paysan <bernd.paysan@gmx.de>
Newsgroups comp.lang.forth
Subject Re: Forth as a polarising language
Date 2012-09-11 01:07 +0200
Organization 1&1 Internet AG
Message-ID <1651452.CLfWVFRu8b@sunwukong.fritz.box> (permalink)
References (16 earlier) <7xehmax2rm.fsf@ruckus.brouhaha.com> <2370419.WlZCQYq3kg@sunwukong.fritz.box> <7xzk4y8vuu.fsf@ruckus.brouhaha.com> <44911562.uCePkysVEk@sunwukong.fritz.box> <7xa9wy6kqv.fsf@ruckus.brouhaha.com>

Show all headers | View raw


Paul Rubin wrote:

> Bernd Paysan <bernd.paysan@gmx.de> writes:
>>> Yeah, logging helps, and the restart mechanism may be able to
>>> inspect the carcass of the crashed program before restarting....
>> I can see that this sort of thinking makes sense in other languages,
>> where inspecting the program is difficult, but in Forth, no.
> 
> What do you mean about inspecting the program being easier in Forth
> than other languages?

You have an interactive shell.  You have self-inspecting capability like 
SEE.  There are other languages like Lisp with similar self-inspecting 
capabilities, and those tend to not quit on errors, too.  Guile launches 
a debug shell, which is pretty cool, because you are still in the 
context of the program right where it "crashed".

However, in most Algol-like languages, you have nothing, and therefore, 
you can only print a backtrace and quit.

> Right, something like /MOD NIP which is a purely integer operation.
> There's no attempt by Forth to automatically choose between / and
> (e.g.) S>F F/ and it doesn't seem Forth-like to do so.

No, you exactly specify what you want.  There might be some problems 
with / being either floored or symmetric in different implementations...

>>> in Forth I think I'd be happier getting an error message and
>>> backtrace in the event of a mismatch.
>> Yes, you usually do get that.
> 
> I don't remember the backtraces being terribly useful, and often they
> didn't happen at the actual point of the error.  What happens with the
> backtrace when there's user data on the return stack?

The backtrace guesses what is user data, and prints that.

: test 1 >r 2 >r 3 >r 0 @ ;  ok
test 
:2: Invalid memory address
>>>test<<<
Backtrace:
$7FA9FFBBF720 @ 
$3 
$2 
$1 

I find this quite useful.  It tells me that @ failed with an invalid 
memory address, and that there are 3, 2, and 1 pushed on the return 
stack.  I often run my programs with gforth-fast, which doesn't have a 
precise recording of where the crash happend, and then curse me, because 
there, the backtrace is not meaningful - which means I have to rerun 
with the debugging engine, and hope that the same error condition 
arises.

>>> You often have to refactor large chunks of code to get data from one
>>> place to another where there was no path before.
>> A result from the "bury your tool" mentality in other languages.
> 
> I don't understand this.  You're saying it doesn't happen in Forth?

People still can make mistakes in Forth, but our mentality is not to 
bury tools, and therefore, this sort of refactoring isn't necessary that 
often.  Writing a Forth program is about finding good factors.

I think I know what thing you mean, I've found something in that 
direction in Android.  I'm using native activity for Gforth (as Gforth 
isn't implemented in Java, it is an obvious choice).  However, native 
activities don't get reasonable non-ASCII key events.  Why?  Because 
some jerk at Google didn't convert the string that is part of the 
KeyEvent Java object into a C string.  The string is only used for non-
ASCII things.  The whole data starts in a Java object, gets converted to 
a C++ object, and then is accessed by C functions, which presume this 
C++ object is a struct.

Nobody sane would do it that way in Forth, especially not with this 
middle layer in between, which is of no real use.  We hate writing 
"onion code", where you have layers and layers on top of each others, 
and the smell alone makes you cry.

>> Simulation passes can take quite a while, VHDL is not a fast language
>> (slow compiles, slow runs).
> 
> Hmm, ok.  I wonder why compiles intended to run a simulator are slow:
> are they slower than, say, C++ compilations for the same amount of
> source text?  ( Joke: http://xkcd.com/303/ )

I don't have current figures at hand.  The last time I touched VHDL was 
more than 10 years ago.  Verilog was considerably faster.

> Slow simulations I can understand, but that argues for more error
> checks at compile time.

No, this is that fallacy.  The error checks at compile time don't find 
the logical errors you make, and especially with a proper set of types 
in your HDL, you aren't prone to type errors.  After all, the only thing 
you can do in real hardware are bits and vectors of bits, which are 
treated as variable sized integers (two's complement).  Verilog checks 
if you make size mismatches, that's all.  And that's also sufficient.

You don't have any complicated types in an HDL.

>> Some people back then had statistics that Verilog was about 3 times
>> as productive than VHDL.
> 
> Wow, that's interesting, I had thought they were pretty comparable,
> with mostly stylistic differences.

I introduced Verilog to my coworkers shortly after I started at Mikron, 
now 14 years ago.  We had a legacy project running, and once we finished 
that, they all switched over to Verilog, and were quite happy.  From a 
10000ft point of view, they seem to be pretty similar.  But you don't 
programm hardware at 10000ft height.  You program it lying flat on the 
floor.

>> With my FGPA stuff, I often end up doing as much as possible in Forth
>> on the b16 instead of writing new HDL code,
> 
> This makes sense, and probably saves hardware a lot of the time, if
> the b16 code is in a RAM block re-using the b16 logic, instead of
> using up CLB's.

Indeed.  IMHO the most valuabe layer of abstraction when programming 
hardware is the instruction pattern.  Implement the different operations 
you want to do as instructions, and then write the program using these 
instructions.  A lot of hardware developer have no software background, 
and use the state machine abstraction instead.  It is a guarantee for 
horribly long code, many, many gates, and awful bugs (the typical bug of 
a state machine is the "stuck" bug: it enters a state, but the exit 
event never happens).

-- 
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://bernd-paysan.de/

Back to comp.lang.forth | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-08-29 23:00 -0700
  Re: Article Mark Wills <markrobertwills@yahoo.co.uk> - 2012-08-30 01:47 -0700
    Re: Article anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-08-30 12:13 +0000
  Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-08-30 11:31 -0400
    Missing from USENET - was [Re: Article] Richard Owlett <rowlett@pcnetinc.com> - 2012-08-30 10:37 -0500
      Missing from USENET - was [Re: Article] Mark Wills <markrobertwills@yahoo.co.uk> - 2012-08-30 10:30 -0700
  Re: Article hughaguilar96@yahoo.com - 2012-08-30 19:56 -0700
    Re: Article awegel@arcor.de (Alex Wegel) - 2012-08-31 12:35 +0200
  Re: Article "Greg Bailey" <greg@greenarraychips.com> - 2012-08-31 17:51 -0700
    Re: Article Whammo <sidciavic@gmail.com> - 2012-08-31 18:22 -0700
    Re: Article Mark Wills <forthfreak@gmail.com> - 2012-09-01 01:04 -0700
      Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-02 16:18 -0700
    Re: Article Alex McDonald <blog@rivadpm.com> - 2012-09-01 01:48 -0700
    Re: Article rickman <gnuarm@gmail.com> - 2012-09-02 18:38 -0400
    Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-02 16:59 -0700
    Re: Article Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-09-03 13:07 -0500
      Re: Article Alex McDonald <blog@rivadpm.com> - 2012-09-03 14:25 -0700
      Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-04 17:04 -0700
        Re: Article Ron Aaron <rambamist@gmail.com> - 2012-09-05 06:23 +0300
    Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-03 18:17 -0400
      Re: Article "Elizabeth D. Rather" <erather@forth.com> - 2012-09-03 12:37 -1000
        Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-04 04:48 -0400
          Re: Article Alex McDonald <blog@rivadpm.com> - 2012-09-04 03:39 -0700
            Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 02:48 -0400
          Re: Article awegel@arcor.de (Alex Wegel) - 2012-09-04 13:18 +0200
            Re: Article Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-04 16:03 +0200
              Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 03:29 -0400
            Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 03:24 -0400
          Re: Article John Passaniti <john.passaniti@gmail.com> - 2012-09-04 08:12 -0700
            Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 16:06 -0400
          Re: Article Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-09-04 11:35 -0500
            Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 02:40 -0400
              Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-05 13:28 -0700
          Re: Article "Elizabeth D. Rather" <erather@forth.com> - 2012-09-04 08:32 -1000
            Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 02:22 -0400
              Re: Article John Passaniti <john.passaniti@gmail.com> - 2012-09-05 10:08 -0700
                Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 16:07 -0400
                Re: Article John Passaniti <john.passaniti@gmail.com> - 2012-09-05 13:39 -0700
              Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-05 13:35 -0700
            Re: Article "Ed" <invalid@nospam.com> - 2012-09-07 17:24 +1000
            Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-07 05:28 -0400
              Re: Article Mark Wills <markrobertwills@yahoo.co.uk> - 2012-09-07 03:28 -0700
              Re: Article Ron Aaron <rambamist@gmail.com> - 2012-09-07 13:31 +0300
                Re: Article jacko <jackokring@gmail.com> - 2012-09-07 06:33 -0700
                Re: Article Howerd <howerdo@yahoo.co.uk> - 2012-09-07 09:06 -0700
              Re: Article Howerd <howerdo@yahoo.co.uk> - 2012-09-07 09:03 -0700
        Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-04 16:45 -0700
      Re: Article John Passaniti <john.passaniti@gmail.com> - 2012-09-03 21:38 -0700
        Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 02:51 -0400
          Re: Article John Passaniti <john.passaniti@gmail.com> - 2012-09-05 10:49 -0700
            Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 16:20 -0400
        Re: Article "Rod Pemberton" <do_not_have@notemailnot.cmm> - 2012-09-05 16:06 -0400
          Re: Article John Passaniti <john.passaniti@gmail.com> - 2012-09-05 13:32 -0700
            Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-05 13:50 -0700
              Re: Article John Passaniti <john.passaniti@gmail.com> - 2012-09-05 22:34 -0700
                Re: Forth as a polarising language Paul Rubin <no.email@nospam.invalid> - 2012-09-07 14:05 -0700
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-08 01:53 +0200
                Re: Forth as a polarising language Paul Rubin <no.email@nospam.invalid> - 2012-09-07 18:22 -0700
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-09 00:08 +0200
                Re: Forth as a polarising language Paul Rubin <no.email@nospam.invalid> - 2012-09-08 17:34 -0700
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-09 15:57 +0200
                Re: Forth as a polarising language Mark Wills <markrobertwills@yahoo.co.uk> - 2012-09-09 08:12 -0700
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-09 22:07 +0200
                Re: Forth as a polarising language Paul Rubin <no.email@nospam.invalid> - 2012-09-09 15:14 -0700
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-10 01:52 +0200
                Re: Forth as a polarising language Paul Rubin <no.email@nospam.invalid> - 2012-09-09 19:17 -0700
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-10 15:01 +0200
                Re: Forth as a polarising language Paul Rubin <no.email@nospam.invalid> - 2012-09-10 07:00 -0700
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-11 01:07 +0200
                Re: Forth as a polarising language Paul Rubin <no.email@nospam.invalid> - 2012-09-10 18:47 -0700
                Re: Forth as a polarising language Elizabeth D Rather <erather@forth.com> - 2012-09-10 16:08 -1000
                Re: Forth as a polarising language anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-09-11 07:51 +0000
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-11 19:24 +0200
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-11 21:40 +0200
                Re: Forth as a polarising language "Elizabeth D. Rather" <erather@forth.com> - 2012-09-09 14:58 -1000
                Re: Forth as a polarising language Paul Rubin <no.email@nospam.invalid> - 2012-09-09 18:24 -0700
                Re: Forth as a polarising language Anonymous <nobody@remailer.paranoici.org> - 2012-09-09 13:42 +0000
                Re: Forth as a polarising language mhx@iae.nl (Marcel Hendrix) - 2012-09-08 10:34 +0200
                Re: Forth as a polarising language Doug Hoffman <glidedog@gmail.com> - 2012-09-08 07:06 -0400
                Re: Forth as a polarising language mhx@iae.nl (Marcel Hendrix) - 2012-09-08 16:14 +0200
                DEFER (was: Forth as a polarising language) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-09-08 16:47 +0000
                Re: Forth as a polarising language Doug Hoffman <glidedog@gmail.com> - 2012-09-09 04:22 -0400
                OOP (was: Forth as a polarising language) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-09-08 11:38 +0000
                Re: OOP Doug Hoffman <glidedog@gmail.com> - 2012-09-08 08:19 -0400
                Re: OOP mhx@iae.nl (Marcel Hendrix) - 2012-09-08 16:41 +0200
                Re: OOP Doug Hoffman <glidedog@gmail.com> - 2012-09-09 04:24 -0400
                Re: Forth as a polarising language mhx@iae.nl (Marcel Hendrix) - 2012-09-09 12:03 +0200
                Re: Forth as a polarising language "A. K." <akk@nospam.org> - 2012-09-09 13:20 +0200
                Re: Forth as a polarising language Doug Hoffman <glidedog@gmail.com> - 2012-09-10 08:33 -0400
                Re: OOP mhx@iae.nl (Marcel Hendrix) - 2012-09-08 16:54 +0200
                Re: OOP Doug Hoffman <glidedog@gmail.com> - 2012-09-09 04:12 -0400
                OOP (was: Forth as a polarising language) mhx@iae.nl (Marcel Hendrix) - 2012-09-08 16:28 +0200
                Re: OOP (was: Forth as a polarising language) mhx@iae.nl (Marcel Hendrix) - 2012-09-08 16:56 +0200
                Re: OOP (was: Forth as a polarising language) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-09-08 15:00 +0000
                Re: OOP (was: Forth as a polarising language) Roger Ivie <rivie@ridgenet.net> - 2012-09-08 11:56 -0500
                Re: OOP Doug Hoffman <glidedog@gmail.com> - 2012-09-09 04:20 -0400
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-09 00:15 +0200
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-09 00:50 +0200
                Re: Forth as a polarising language mhx@iae.nl (Marcel Hendrix) - 2012-09-09 03:12 +0200
                Re: Forth as a polarising language Bernd Paysan <bernd.paysan@gmx.de> - 2012-09-09 16:01 +0200
                Re: Forth as a polarising language "Elizabeth D. Rather" <erather@forth.com> - 2012-09-09 14:54 -1000
                [OT] Newsreader problem - was [Re: Forth as a polarising language] Richard Owlett <rowlett@pcnetinc.com> - 2012-09-10 06:33 -0500
                Re: [OT] Newsreader problem - was [Re: Forth as a polarising language] Doug Hoffman <glidedog@gmail.com> - 2012-09-10 08:16 -0400
                Re: [OT] Newsreader problem - was [Re: Forth as a polarising language] Doug Hoffman <glidedog@gmail.com> - 2012-09-10 08:28 -0400
                Re: [OT] Newsreader problem - was [Re: Forth as a polarising language] anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2012-09-10 12:43 +0000
                Re: [OT] Newsreader problem - was [Re: Forth as a polarising language] Doug Hoffman <glidedog@gmail.com> - 2012-09-10 09:24 -0400
                Re: [OT] Newsreader problem - was [Re: Forth as a polarising language] Richard Owlett <rowlett@pcnetinc.com> - 2012-09-10 08:12 -0500
                Re: [OT] Newsreader problem - was [Re: Forth as a polarising language] Doug Hoffman <glidedog@gmail.com> - 2012-09-10 09:32 -0400
                Re: [OT] Newsreader problem - was [Re: Forth as a polarising language] "Elizabeth D. Rather" <erather@forth.com> - 2012-09-10 07:40 -1000
                Re: [OT] Newsreader problem - was [Re: Forth as a polarising language] Richard Owlett <rowlett@pcnetinc.com> - 2012-09-10 14:42 -0500
                Re: Forth as a polarising language Doug Hoffman <glidedog@gmail.com> - 2012-09-10 07:59 -0400
                Re: Forth as a polarising language rickman <gnuarm@gmail.com> - 2012-09-10 12:27 -0400
                Re: Forth as a polarising language "Elizabeth D. Rather" <erather@forth.com> - 2012-09-10 07:44 -1000
                Re: Forth as a polarising language rickman <gnuarm@gmail.com> - 2012-09-10 12:30 -0400
            Re: Article "Ed" <invalid@nospam.com> - 2012-09-09 14:13 +1000
              Re: Article John Passaniti <john.passaniti@gmail.com> - 2012-09-11 11:26 -0700
                Re: Article "Paul E. Bennett" <Paul_E.Bennett@topmail.co.uk> - 2012-09-11 21:02 +0100
                Re: Article vandys@vsta.org - 2012-09-11 20:37 +0000
                Re: Article "Ed" <invalid@nospam.com> - 2012-09-12 20:01 +1000
              Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-11 16:50 -0700
                Re: Article Mark Wills <forthfreak@gmail.com> - 2012-09-12 00:45 -0700
                Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-12 18:44 -0700
                Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-12 20:26 -0700
                Re: Article "Ed" <invalid@nospam.com> - 2012-09-12 20:47 +1000
    Re: Article Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-09-06 19:28 -0700
      Re: Article John Passaniti <john.passaniti@gmail.com> - 2012-09-07 09:57 -0700

csiph-web