Path: csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Alex Newsgroups: comp.lang.forth Subject: Re: Really? Date: Thu, 9 Feb 2017 08:56:24 +0000 Organization: A noiseless patient Spider Lines: 76 Message-ID: References: <1239a88b-a574-401b-9454-50ac7e000049@googlegroups.com> <5899a408.386236853@news.eternal-september.org> <87shnqw989.fsf@nightsong.com> <589a303c.422128955@news.eternal-september.org> <01fb25bd-7975-4ca5-b9e6-1024cb772c7a@googlegroups.com> <1207313c-ffcd-4640-a619-f1424dcf75cc@googlegroups.com> <2bca6ead-46b4-41b3-b40f-fbb550196acb@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Thu, 9 Feb 2017 08:54:37 -0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="5d68ef5498716e3608bb970c44722c4e"; logging-data="29545"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/JFDa2pEsVseFzwpFbXlHDSY3TGtbHGhM=" User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 In-Reply-To: <2bca6ead-46b4-41b3-b40f-fbb550196acb@googlegroups.com> Cancel-Lock: sha1:ALGo1EL0P8TPnJYd1XvIBjoD6h0= Xref: csiph.com comp.lang.forth:54738 On 2/9/2017 06:39, hughaguilar96@gmail.com wrote: > On Wednesday, February 8, 2017 at 6:39:17 PM UTC-7, Elizabeth D. > Rather wrote: >> On 2/8/17 3:43 AM, Alex wrote: >>> Back to Hugh's comments about passing data via global variables >>> making code non-reentrant. >>> >>> : increment ( addr -- ) dup @ 1+ swap ! ; \ increment value at >>> address >>> >>> Even though INCREMENT does not itself refer to global variables >>> and appears at first sight to be reentrant, two tasks using the >>> shared area SHARED invoking SHARED INCREMENT will give >>> inconsistent results when SHARED is fetched. > >> Managing that sort of situation is an elementary application >> design. If you have shared memory space in your application, you >> need very specific rules as to who may change which variables in >> that space and under what circumstances. > > This is the "very specific rule" regarding PAD that Elizabeth Rather > provided in the ANS-Forth document: > > "...is the address of a transient region that can be used to hold > data for intermediate processing." > > ANS-Forth actually has several problems that come from using the same > memory for different things. This has been discussed before: > https://groups.google.com/forum/#!topic/comp.lang.forth/uGAKvs8baQk%5B26-50%5D > > On Friday, December 9, 2016 at 8:11:08 AM UTC-7, hughag...@gmail.com > wrote: >> On Thursday, December 8, 2016 at 11:23:05 PM UTC-7, >> hughag...@gmail.com wrote: >>> ANS-Forth is confusing! I was testing my words under VFX just now >>> and came to this: >>> >>> 12345.6789e engineering ok-2 type 12.345679e32 ok >>> >>> WTF??? Does my code have a bug??? Then I tried this: >>> >>> 12345.6789e engineering type 12.345679e3 ok >>> >>> This works. I realized then that the problem was not in my code, >>> it was in ANS-Forth --- the outer-interpreter uses the same >>> memory location for multiple purposes --- my is >>> using the buffer that <# #> uses, and this buffer gets clobbered >>> by the outer-interpreter before the TYPE gets done on the next >>> line. Yes, your code has a bug, since the behaviour you're describing is covered by the standard. Now, I think the standard is deficient in this area, and that some remedial work is appropriate; but I suspect that it would possibly fall on stony ground and get voted down because of its increased resource requirements. >> >> Actually, what the student will think is that there is a bug in my >> novice-package --- he will abandon the novice-package --- he will >> become a typical ANS-Forth programmer who spends all of his time on >> comp.lang.forth posting code copied directly out of the "Starting >> Forth" book and flinging insults at me. It's a bug, since your word doesn't work. If you had a better software development model for your Forth, like github, you would be able to cope better with bugs and changes to the source; and also count downloads and do issue management. I picked up your novice package recently (What version? Was it the latest? Who knows) where you ship sort source code that you no longer support or maintain. That's not a reputation enhancing move. -- Alex