| Deutsch English Français Italiano |
|
<nnd$69b409f3$40dbcfe7@0069f67429321524> View for Bookmarking (what is this?) Look up another Usenet article |
Date: Sun, 27 Apr 2025 18:16:22 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: "The Best Programming Language for the End of the World" Newsgroups: comp.lang.forth References: <87bjtn2hct.fsf@gmail.com> <nnd$63e5382c$3fdcafbf@3f3b7214bd28514c> <nnd$6dfb43f9$1f045d73@735b02f46e71c0a3> <nnd$7772d25c$1baf7e22@e877e04d3a33b727> <nnd$7b77f132$00d02253@0069f67429321524> Content-Language: en-US From: Hans Bezemer <the.beez.speaks@gmail.com> In-Reply-To: <nnd$7b77f132$00d02253@0069f67429321524> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Message-ID: <nnd$69b409f3$40dbcfe7@0069f67429321524> Organization: KPN B.V. Path: ...!news.misty.com!weretis.net!feeder9.news.weretis.net!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!feed.abavia.com!abe005.abavia.com!abp004.abavia.com!news.kpn.nl!not-for-mail Lines: 106 Injection-Date: Sun, 27 Apr 2025 18:16:22 +0200 Injection-Info: news.kpn.nl; mail-complaints-to="abuse@kpn.com" Bytes: 5580 On 27-04-2025 16:30, albert@spenarnc.xs4all.nl wrote: > In article <nnd$7772d25c$1baf7e22@e877e04d3a33b727>, > Hans Bezemer <the.beez.speaks@gmail.com> wrote: >> On 27-04-2025 14:02, albert@spenarnc.xs4all.nl wrote: >>> In article <nnd$63e5382c$3fdcafbf@3f3b7214bd28514c>, >>> Hans Bezemer <the.beez.speaks@gmail.com> wrote: >>>> On 27-04-2025 08:21, dxf wrote: >>>>> On 26/04/2025 9:07 pm, albert@spenarnc.xs4all.nl wrote: >>>>>> In article <b73cd7a7ab393f51bfaa18a9171086732bcc0bdf@i2pn2.org>, >>>>>> dxf <dxforth@gmail.com> wrote: >>>>>>> On 26/04/2025 2:34 am, Hans Bezemer wrote: >>>>>>>> ... >>>>>>>> Yeah, I have helped to make a proposal for PLACE and +PLACE - which never even made it to the voting stage. >>>>>>> >>>>>>> It's a nice symmetry. OTOH the remaining vendors use APPEND and why should they change? >>>>>>> >>>>>> >>>>>> $+! was even earlier. It predates the IBM PC XT. >>>>>> (Osborne, CP/M) >>>>> >>>>> Even PLACE was new back then! >>>>> >>>>> String stacks often had $+ or equiv. Somehow I never took to them. >>>>> Not enough applications that warranted the effort? >>>> >>>> Let's face it - the string support was notoriously bad in Forth. People >>>> openly complained about that. >>> >>> You must get rid of two ideas that are in the basic/lisp/c world. >>> >>> 1. You don't need dynamic strings. Just keep track of where you left them. >>> [ If you really need them, don't do circular buffer or string stacks. >>> Interface to the memory wordset (ALLOCATE c.s). ] >>> >>> 2. Zero ended strings is a stupid 60's c-cludge. Copying that into Forth is >>> beyond .. . They can't accomodate zero byte in strings, They cannot >>> accomodate multiple byte characters. >>> >>> If you fetch a string, you have a "c-addr count". Forth can have 2 items >>> on the stack you know. >>> >>> So In my CP/M day I get by with $! $@ $+! and $C+! . >>> I made a program playing a text adventure game with that. >>> >>> Groetjes Albert >>> >>> >>> >>>> >>>> Hans Bezemer >> >> >> -- 2. Zero ended strings is a stupid 60's c-cludge. Copying that into >> Forth is beyond .. . They can't accomodate zero byte in strings, They >> cannot accomodate multiple byte characters. >> >> Well, the "club" has killed that one, so it bears no longer any >> significance. FYI: I was not in favor of this proposition, it reeked >> extremely Forth-83: >> >> "Since then, in 2016 the Forth-200x committee in favour of eliminating >> ambiguous conditions has decided to require “1 CHARS = 1” thus making >> systems that have other character sizes than on not compliant to >> _future_ Forth-200x standards [2][3]. Requesting standard systems to >> have byte size characters limit counted strings to the known maximal >> length of 255 characters." > > No. That applies to a string stored in memory. > A beneficial principle is to disambiguate the type of parameters > passed around. > So `WORD requiring a byte count in front of the characters in memory is > a mistake. So in my core strings are exclusively passed as (addr length) > and length can be 63 bit. So a I have `GET-FILE: > > (sc -- addr len) Get the content of file name sc (string constant). > Errors are thrown. > > Also in my core dictionary entries are identified as one address called > "dea". > No "name token", because it may not have a name filled in. > Not "execution token", because the execution behaviour can be changed > by changing the code field content. > Not a "word" because what is a word without a name? > [This was triggered by the horror of n fields in transputer Forth and > n*n conversions between these fields. (data field >>> forget field ...). > Never looked back. > Through jonesforth most Forth's created nowadays sport a uniform > dea (CDFLN) , because jones borrowed this compelling idea from ciforth, > and is hard to abandon, once it takes hold. ] Gee. And me thinking PLACE and +PLACE were all about strings in memory. My mistake. Of course it's all about "strings in memory". Since when has Forth to do with strings on file? There are a million possible text file formats.. If I wanna read an UTF-16 or UTF-32 from disk I could store the whole shebang in the integer segment - and fake 64-bit characters. It'll work fine. Sure, I gotta make some new library to process those files, but so what? And BTW, It's time to discard WORD. Horrible abomination. A relic from the past. Hans Bezemer