There has been a large Retro computer resurgence over the last few years. In particular the Amiga computer where there is a lot of energy in Amiga due to retro, emulators, other hardware FPGA etc. an example being...
http://www.apollo-computer.com/
I have moved jforth.org back to a more basic, uncluttered, 3.2/4.1 transitional site for Amiga Browsers, removing excess tags, fixed many issues.
I also want to support Forth programming and hopefully bring in more people to learn and appreciate Forth, thus expanding the number of Forth programmers.
Anyone interested in playing with JForth and helping, even if it's only on an occasional basis ?
Every little helps.
Regards and best wishes...Martin.
I have read that there was a fast-programming contest in which everybody was given
specs for a program, and the first person with a completed program won. Somebody was using JForth and winning, mostly due to JForth having the traditional
interactive Forth development, and JForth having libraries of general-purpose code.
On 19/05/2023 9:04 am, Hugh Aguilar wrote:
I have read that there was a fast-programming contest in which everybody was given
specs for a program, and the first person with a completed program won.
Somebody was using JForth and winning, mostly due to JForth having the traditional
interactive Forth development, and JForth having libraries of general-purpose code.
Perhaps this:
https://archive.org/details/Forth_Dimension_Volume_10_Number_5/page/n25/mode/2up
...
Also, Mike and Phil used JForth to win $1000 in the "World's Fastest Programmer" Contest at
Embedded Systems Conference, Anaheim, CA in 1988.
Everyone used Forth but they used an Amiga.
Before the contest they were told to prepare code to read and write to a standard parallel port."
http://www.jforth.org/JF-History.html
If I'm correct Forth wasn't that ubiquitous and used on the Amiga
(neither on Atari ST), as it was on PC. Or even on the modest C-64.
So the above was rather an exception than the rule.
From what I remember Amiga was always rather „C-oriented”.
From what I remember Amiga was always rather =E2=80=9EC-oriented=E2=80=9D.
...
So the difference is that C went with compiler-tracked types and
automatic scaling, while Forth stayed without compiler-tracked or run-time-tracked types, and instead requires manual scaling and using type-specific access and computation words.
On 20/05/2023 2:05 am, Anton Ertl wrote:
...
So the difference is that C went with compiler-tracked types and
automatic scaling, while Forth stayed without compiler-tracked or
run-time-tracked types, and instead requires manual scaling and using
type-specific access and computation words.
ISTM C and Forth had different goals. One is your traditional compiler- >oriented abstracted language in which the user doesn't much care what
comes out the end. The other is closer to a macro assembler in which the >user expects to get what he wrote.
Portability (through type declaration)
may be well a goal for the former but less important (if at all) for the >latter as it's machine-oriented. Portability in Forth for the sake of >competitiveness with C being an afterthought, it shows.
dxforth <dxf...@gmail.com> writes:in
On 20/05/2023 2:05 am, Anton Ertl wrote:
...
So the difference is that C went with compiler-tracked types and
automatic scaling, while Forth stayed without compiler-tracked or
run-time-tracked types, and instead requires manual scaling and using
type-specific access and computation words.
ISTM C and Forth had different goals. One is your traditional compiler- >oriented abstracted language in which the user doesn't much care what >comes out the end. The other is closer to a macro assembler in which the >user expects to get what he wrote.I don't think that the goals were much different. Both started around
1970 and targeted the minicomputers at the time (such as the PDP-11),
and therefore had to deal with the same limitations. Both languages
were close to the machine and started out from a point where the (predecessor) language only had to deal with machine words, and then
had to cope with byte-addressed machines. C programmers used to know
and still mostly know what happens on the machine about as much as
Forth programmers; and given that C compiled to native code at the
start, with a rather simple compiler, while Forth compiled to threaded
code, C is closer to a macro assembler (although both are not very
close).
Portability (through type declaration)Portability is a requirement for people who use different machines,
may be well a goal for the former but less important (if at all) for the >latter as it's machine-oriented. Portability in Forth for the sake of >competitiveness with C being an afterthought, it shows.
and want to run their programs across them. Not all C programmers
have that requirement, and not all Forth programmers have it, either.
OTOH, a number of Forth programmers have that requirement, and it has nothing to do per se with "competetiveness with C", just like Forth
does not have the word "+" "for the sake of competetiveness with C".
Compiler-tracked types were C's solution to the problem of porting B
idioms like "a[i]" to byte-addressed machines, as discussed earlier.
In the Forth world the transition to byte-addressed machines still
happened when Forth was Chuck Moore's personal language, and
apparently he preferred to rewrite the Forth code to use 2* 2+
etc. rather than adding compiler-tracked types to Forth or going
through the contortions that BCPL went through (I don't know exactly
what they are, but the results in the AmigaDOS API did not look
pretty).
One interesting consequence is that Forth is more portable in my
experience than C. The availability of a compiler-tracked type system seduced the C people to add more and more types (long, short, long
long, and types like int16_t int_least16_t int_fast16_t intptr_t
size_t off_t etc., with different relations between these types on
different platforms, and even on the same platform (e.g., off_t is
32-bit or 64-bit on 32-bit Unix depending on whether and how the macro _FILE_OFFSET_BITS is defined). As a result, you have lots of
different types in a program, with the interactions between them
depending on the actual sizes; while it's possible to write the code
to achieve the intended result, there are so many different types
around and so many interactions that it's easy to overlook some
interactions (and the fact that the syntax mostly hides the type
conversions going on does not help), resulting in a portability bug.
By contrast, in Forth we only few integer types (cells, doubles, and,
only in memory, chars), and when you use a cell where a double is
expected, you notice the mistake in testing independent of whether the
cell size is 16 bits, 32 bits, or 64 bits.
- anton
--
M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html New standard: https://forth-standard.org/
EuroForth 2022: https://euro.theforth.net
dxforth <dxforth@gmail.com> writes:
...
Portability (through type declaration)
may be well a goal for the former but less important (if at all) for the
latter as it's machine-oriented. Portability in Forth for the sake of
competitiveness with C being an afterthought, it shows.
Portability is a requirement for people who use different machines,
and want to run their programs across them.
I occasionally want to write a lot of 'C', and the more interesting
the program, the larger the struggle with types and macro's [..]
A big advantage of 'C' is that there are no Forth-like surprises
(granted, in 2000+ source files some bisons and yaccs can hide).
With Forth, the author(s) may decide to redefine a kernel word
or (silently) use a non-standard extension
dxforth <dxf...@gmail.com> writes:
On 20/05/2023 2:05 am, Anton Ertl wrote:
...
So the difference is that C went with compiler-tracked types and
automatic scaling, while Forth stayed without compiler-tracked or
run-time-tracked types, and instead requires manual scaling and using
type-specific access and computation words.
ISTM C and Forth had different goals. One is your traditional compiler- >oriented abstracted language in which the user doesn't much care what
comes out the end. The other is closer to a macro assembler in which the >user expects to get what he wrote.
I don't think that the goals were much different. Both started around
1970 and targeted the minicomputers at the time (such as the PDP-11),
and therefore had to deal with the same limitations. Both languages
were close to the machine and started out from a point where the (predecessor) language only had to deal with machine words, and then
had to cope with byte-addressed machines. C programmers used to know
and still mostly know what happens on the machine about as much as
Forth programmers; and given that C compiled to native code at the
start, with a rather simple compiler, while Forth compiled to threaded
code, C is closer to a macro assembler (although both are not very
close).
A big advantage of 'C' is that there are no Forth-like surprises
(granted, in 2000+ source files some bisons and yaccs can hide).
With Forth, the author(s) may decide to redefine a kernel word
or (silently) use a non-standard extension (I certainly will do that
myself).
Portability (through type declaration)
may be well a goal for the former but less important (if at all) for the >latter as it's machine-oriented. Portability in Forth for the sake of >competitiveness with C being an afterthought, it shows.
Portability is a requirement for people who use different machines,
and want to run their programs across them. Not all C programmers
have that requirement, and not all Forth programmers have it, either.
OTOH, a number of Forth programmers have that requirement, and it has nothing to do per se with "competetiveness with C", just like Forth
does not have the word "+" "for the sake of competetiveness with C".
Portability is important for all programmers. This allows them to avoid vendor lock-in.
Portability is what the vendors hate and fear more than anything,
A viable Forth standard, if we ever get one, will be designed by Forth programmers,
and this will be done despite every effort by the Forth compiler vendors to prevent it.
This is just DXforth's endless stream of drivel in which he hates
Actually lack of portability means more work — therefore
increased demand — for the programmers… someone has
to „port” the particular program for the other system, correct?
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 475 |
Nodes: | 16 (2 / 14) |
Uptime: | 18:20:37 |
Calls: | 9,487 |
Calls today: | 6 |
Files: | 13,617 |
Messages: | 6,121,091 |