Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Windows8

604 views
Skip to first unread message

visua...@rocketmail.com

unread,
Nov 2, 2012, 11:41:12 AM11/2/12
to mik....@googlemail.com, Di...@bruehlconsult.com
Reading a review on Windows8 tells me that Microsoft now has divided the MS-Computerworld into two parts:
Windows8 for the Consumer-World and Windows7 for the Professionals,
and to make it worse, the Professionals have to deal with two types of hardware: the Intel-line and the ARM - that means different assembler code, or no assembler code any more.

Windows8 is not suited for Professionals until there is a Windows7-App or WindowsXP-App available, because only two Apps can be open at the same time.

The era of windows, where you could open as many windows as you like, is over with Windows8. That's why I wrote Windows8 is for Consumers only.
May be you get multiple windows back if you buy and install a bunch of touch screen monitors.

Interesting is that traditional Windows programs may run, but in case of a crash Windows8 recovers only Windows8 apps - all other apps have to be reinstalled manually. A second option wipes everything off, including your personal settings, and you get a fresh Windows8 again as it was delivered from factory.

May be there is a Windows8 upgrade soon.
It's strange that people don't recognize that Windows8 isn't good for windows anymore.

Sources:

10 Things You Can Get From Windows 8 That Windows 7 Just Doesn't Have
http://www.hrsolutionjournal.com/launchpage.aspx?CID=347277&NUOSID=102246572

Windows 8 launch is a non-event for businesses
http://www.networkworld.com/community/blog/windows-8-launch-non-event-businesses

What about Forth?
Will there ever be a Forth for Windows8?

Brad Eckert

unread,
Nov 2, 2012, 2:12:24 PM11/2/12
to mik....@googlemail.com, Di...@bruehlconsult.com
On Friday, November 2, 2012 8:41:12 AM UTC-7, visua...@rocketmail.com wrote:
>
> What about Forth?
> Will there ever be a Forth for Windows8?

I think Win8 is mostly about copying Apple's closed software distribution model. If you develop an app, you have to distribute it through the app store. This is a hassle for consultants: http://www.techrepublic.com/blog/project-management/what-windows-8-closed-app-distribution-means-for-consultants/5168

I can see why MS wanted to do this, with the constant bombardment of malware against Windows systems. I see it as being akin to the launch of New Coke back in the 80s.

visua...@rocketmail.com

unread,
Nov 6, 2012, 12:05:26 PM11/6/12
to mik....@googlemail.com, Di...@bruehlconsult.com
On Friday, November 2, 2012 11:41:12 AM UTC-4, visua...@rocketmail.com wrote:
> Reading a review on Windows8 tells me that Microsoft now has divided the MS-Computerworld into two parts: Windows8 for the Consumer-World and Windows7 for the Professionals...

Today I read another article on Windows 8 - there it says:

"Windows 8 supports every major and most minor programming languages"

We'll see

"The big challenge is that users are likely to have need to use more than one platform."

That's just what I wrote!

Source:

Windows 8 Changes Are More Than Skin Deep
http://electronicdesign.com/article/embedded/windows-8-skin-deep-74613

Turning to the past to power Windows' future: An in-depth look at WinRT
http://arstechnica.com/features/2012/10/windows-8-and-winrt-everything-old-is-new-again

visua...@rocketmail.com

unread,
Nov 7, 2012, 11:44:18 PM11/7/12
to mik....@googlemail.com, Di...@bruehlconsult.com
WIRED shows how Windows 8 looks like, and looks at Windows 8 from a consumers perspective: http://www.wired.com/gadgetlab/2012/10/the-10-best-features-in-windows-8?pid=3892&viewall=true

Here an excerpt:

Refresh and Reset
... The refresh option is especially useful when you find your PC acting slow or buggy. In a one-click or one-tap move, you can refresh the PC without changing any of your files, Windows Store apps, or personalization settings.
... you will lose any desktop programs since those are not synced with your Windows Account.
Reset, on the other hand, is great for when you want to hand off your old PC to a new owner. If you want to make sure that everything is wiped, this is your go-to button. No more having to delete individual files or go through manufacturer-specific programs to figure it out.

And there are a lot of comments, like this one:

As a life-long Mac user, I find Window's new direction intriguing. They're shaking things up, while at this point, both OSX and iOS are feeling a bit staid...

Source: http://www.wired.com/gadgetlab/2012/10/the-10-best-features-in-windows-8

Jason Damisch

unread,
Nov 12, 2012, 10:10:52 AM11/12/12
to mik....@googlemail.com, Di...@bruehlconsult.com

> "Windows 8 supports every major and most minor programming languages"

Will they bend over backwards to make sure that Forth is not one of them?

Well, I have no burning desire to write Windows 8 programs.

Jason

Jason Damisch

unread,
Nov 12, 2012, 10:15:00 AM11/12/12
to mik....@googlemail.com, Di...@bruehlconsult.com
> Refresh and Reset
> ... The refresh option is especially useful when you find your PC acting
> slow or buggy. In a one-click or one-tap move, you can refresh the PC
> without changing any of your files, Windows Store apps, or personalization
> settings.
> ... you will lose any desktop programs since those are not synced with
> your Windows Account.

Why can't they just write an OS which works correctly most if not all of the time? Could it be that the very idea of garbage collection is fundamentally flawed?

Brad Eckert

unread,
Nov 12, 2012, 10:59:48 AM11/12/12
to mik....@googlemail.com, Di...@bruehlconsult.com
On Monday, November 12, 2012 8:15:00 AM UTC-7, Jason Damisch wrote:
> Why can't they just write an OS which works correctly most if not all of the time? Could it be that the very idea of garbage collection is fundamentally flawed?

Google "software decay". Microsoft's rush to market saddled millions of Windows programmers with a highly complexified API that just got more crufty with time. Software just gets old and dies, unless it's kept on life support.

Stephen Pelc

unread,
Nov 12, 2012, 12:27:07 PM11/12/12
to
On Mon, 12 Nov 2012 07:10:52 -0800 (PST), Jason Damisch
<jasond...@yahoo.com> wrote:

>> "Windows 8 supports every major and most minor programming languages"
>
>Will they bend over backwards to make sure that Forth is not one of them?

VFX apps already run on Windows 8.

Stephen


--
Stephen Pelc, steph...@mpeforth.com
MicroProcessor Engineering Ltd - More Real, Less Time
133 Hill Lane, Southampton SO15 5AF, England
tel: +44 (0)23 8063 1441, fax: +44 (0)23 8033 9691
web: http://www.mpeforth.com - free VFX Forth downloads

Elizabeth D. Rather

unread,
Nov 12, 2012, 12:55:47 PM11/12/12
to
Ding ding ding ding we have a winner. That is why we never use it in
embedded systems that have to run forever without occasional reboots to
fix all the allocation issues. Personally, I don't like it at all,
though I realize there's a need for it in general-purpose OSs.

Cheers,
Elizabeth

--
==================================================
Elizabeth D. Rather (US & Canada) 800-55-FORTH
FORTH Inc. +1 310.999.6784
5959 West Century Blvd. Suite 700
Los Angeles, CA 90045
http://www.forth.com

"Forth-based products and Services for real-time
applications since 1973."
==================================================

Ed

unread,
Nov 14, 2012, 4:04:18 AM11/14/12
to
Elizabeth D. Rather wrote:
> On 11/12/12 5:15 AM, Jason Damisch wrote:
> >> Refresh and Reset
> >> ... The refresh option is especially useful when you find your PC acting
> >> slow or buggy. In a one-click or one-tap move, you can refresh the PC
> >> without changing any of your files, Windows Store apps, or personalization
> >> settings.
> >> ... you will lose any desktop programs since those are not synced with
> >> your Windows Account.
> >
> > Why can't they just write an OS which works correctly most if not all of
> > the time? Could it be that the very idea of garbage collection is
> > fundamentally flawed?
> >
>
> Ding ding ding ding we have a winner. That is why we never use it in
> embedded systems that have to run forever without occasional reboots to
> fix all the allocation issues. Personally, I don't like it at all,
> though I realize there's a need for it in general-purpose OSs.

Does the same apply to ALLOCATE FREE RESIZE ?

I ask this because I've noted a trend where every computer ill seems
to be blamed on "memory leaks". At the same time I note Forthers
are increasingly using dynamic memory in routines - I assume because
it's in ANS and not through any particular need. Should we trust
ALLOCATE FREE RESIZE - or accept that it may not be foolproof?
I won't even mention MARKER :)



Anton Ertl

unread,
Nov 14, 2012, 12:01:48 PM11/14/12
to
"Ed" <inv...@nospam.com> writes:
>Elizabeth D. Rather wrote:
>> On 11/12/12 5:15 AM, Jason Damisch wrote:
>> > Why can't they just write an OS which works correctly most if not all of
>> > the time? Could it be that the very idea of garbage collection is
>> > fundamentally flawed?

Given that most popular OSs don't use GC internally, their correctness
problems are obviously not due to GC.

More generally, the idea of GC is not fundamentally flawed. GC has
some benefits and some limitations.

>> Ding ding ding ding we have a winner. That is why we never use it in
>> embedded systems that have to run forever without occasional reboots to
>> fix all the allocation issues. Personally, I don't like it at all,
>> though I realize there's a need for it in general-purpose OSs.
>
>Does the same apply to ALLOCATE FREE RESIZE ?
>
>I ask this because I've noted a trend where every computer ill seems
>to be blamed on "memory leaks".

Memory leaks are a problem in some long-runnung programs, but most
"ills" I experience are from other kinds of bugs. It's harder to FREE
all dead memory explicity than to eliminate all references to dead
memory, so memory leaks are more common with FREE than with GC.

- 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: http://www.forth200x.org/forth200x.html
EuroForth 2012: http://www.euroforth.org/ef12/

rickman

unread,
Nov 14, 2012, 4:36:22 PM11/14/12
to
Just like any other area of business, they sell what they think will
sell best, at least in the sense of making them the most money. If they
thought that we would prefer an OS that has fewer features and gives
less trouble, that is what they would sell. But their experience tells
them that what sells cars, food and computers is flash (with a lower
case 'f') color and sound. It's all about the look and feel (again all
lower case). If they don't continually update that to make people think
they are getting something new and different they won't be able to sell
so many and continue to make money.

If someone gives the customers a better alternative, a *real*
alternative that is fully usable by the same people who are currently
buying Windows, then they will switch. Look at all the Linux users!
They don't use Windows because they have an alternative. But for many
who don't know so much about computers and don't *want* to know so much
about computers, Linux is not much of an option... at least in their minds.

I've recently acquired several extra desktop machines. I'm going to
install Linux on one of them and give it a try. Otherwise I will be
needing to buy a new laptop which will be... (ominous sounding music
plays)... Windows 8.

I took a look at some laptops in the store and asked the attendant if
the unusual looking display is just a store display or if that is
Windows 8. He said that is the new Start menu, the entire computer is
"icon" based (wasn't it always?). I didn't see things like "control
panel" or "connect to". I wonder how you make it work...

I like to compare computers to cars. At one time every car had it's own
user interface, all somewhat different. With time they migrated to a
common look and feel to an extent. But it took legislation to mandate
the current PRNDL on automatics and break on the right, gear shift on
the left for motorcycles. I wonder if they will ever legislate computer
interfaces... lol.

Rick

Elizabeth D. Rather

unread,
Nov 14, 2012, 5:12:40 PM11/14/12
to
On 11/14/12 11:36 AM, rickman wrote:
...
> If someone gives the customers a better alternative, a *real*
> alternative that is fully usable by the same people who are currently
> buying Windows, then they will switch. Look at all the Linux users!
> They don't use Windows because they have an alternative. But for many
> who don't know so much about computers and don't *want* to know so much
> about computers, Linux is not much of an option... at least in their minds.

It isn't just a matter of how much you know about computers, it's what
software you need to run. Right now, for instance, the only usable
accounting software is Windows-only. So, even though I love my Mac, it's
set up with dual-boot to Windows so I can run Quickbooks and Quicken
when I need to.

> I've recently acquired several extra desktop machines. I'm going to
> install Linux on one of them and give it a try. Otherwise I will be
> needing to buy a new laptop which will be... (ominous sounding music
> plays)... Windows 8.

It's quite possible to buy a discounted, legal copy of Windows 7. Just
google for it. Win7 was/is a pretty good system (as Windows versions
go). I would recommend continuing with that rather than wrestling with
Win8 for now.

rickman

unread,
Nov 14, 2012, 5:46:31 PM11/14/12
to
On 11/14/2012 5:12 PM, Elizabeth D. Rather wrote:
> On 11/14/12 11:36 AM, rickman wrote:
> ...
>> If someone gives the customers a better alternative, a *real*
>> alternative that is fully usable by the same people who are currently
>> buying Windows, then they will switch. Look at all the Linux users!
>> They don't use Windows because they have an alternative. But for many
>> who don't know so much about computers and don't *want* to know so much
>> about computers, Linux is not much of an option... at least in their
>> minds.
>
> It isn't just a matter of how much you know about computers, it's what
> software you need to run. Right now, for instance, the only usable
> accounting software is Windows-only. So, even though I love my Mac, it's
> set up with dual-boot to Windows so I can run Quickbooks and Quicken
> when I need to.
>
>> I've recently acquired several extra desktop machines. I'm going to
>> install Linux on one of them and give it a try. Otherwise I will be
>> needing to buy a new laptop which will be... (ominous sounding music
>> plays)... Windows 8.
>
> It's quite possible to buy a discounted, legal copy of Windows 7. Just
> google for it. Win7 was/is a pretty good system (as Windows versions
> go). I would recommend continuing with that rather than wrestling with
> Win8 for now.

I guess that is good if you just want the least pain... except that I am
not using Windows 7, so I would still have some pain with that
transition. The real issue is I don't want to pay Microsoft for the
privilege of using their old software on top of paying them the
mandatory fee for buying a computer.

I need a laptop and I would like to be able to buy one without windows.
Turns out that is not an option unless you want to pay someone else a
premium for the privilege.

Rick

Elizabeth D. Rather

unread,
Nov 14, 2012, 6:12:54 PM11/14/12
to
On 11/14/12 12:46 PM, rickman wrote:
> On 11/14/2012 5:12 PM, Elizabeth D. Rather wrote:
...
>> It's quite possible to buy a discounted, legal copy of Windows 7. Just
>> google for it. Win7 was/is a pretty good system (as Windows versions
>> go). I would recommend continuing with that rather than wrestling with
>> Win8 for now.
>
> I guess that is good if you just want the least pain... except that I am
> not using Windows 7, so I would still have some pain with that
> transition. The real issue is I don't want to pay Microsoft for the
> privilege of using their old software on top of paying them the
> mandatory fee for buying a computer.
>
> I need a laptop and I would like to be able to buy one without windows.
> Turns out that is not an option unless you want to pay someone else a
> premium for the privilege.

Try googling 'laptop no os'. Quite a few results, such as this one:
http://www.newegg.com/Product/Product.aspx?Item=N82E16856119067

Paul Rubin

unread,
Nov 14, 2012, 9:12:42 PM11/14/12
to
"Elizabeth D. Rather" <era...@forth.com> writes:
> Try googling 'laptop no os'. Quite a few results, such as this one:
> http://www.newegg.com/Product/Product.aspx?Item=N82E16856119067

Looks nice but I don't think it's a laptop ;-).

There are some nice Chromebooks (OS from the evil Google empire instead
of the evil Microsoft empire) coming out at low prices. Maybe it's
possible to run a standard Linux distro on one.

visua...@rocketmail.com

unread,
Nov 15, 2012, 3:19:10 AM11/15/12
to era...@forth.com, di...@bruehlconsult.com
On Wednesday, November 14, 2012 5:12:42 PM UTC-5, Elizabeth D. Rather wrote:
> ... Right now, for instance, the only usable accounting software is Windows-only. So, even though I love my Mac, it's set up with dual-boot to Windows so I can run Quickbooks and Quicken when I need to.

I can't believe it!

When I started with RSC-Forth in 1984, Mr. Streicher from Rockwell Munich, Germany, told me that he had written a book keeping program within an afternoon.

I am doing all my accounting using my own Forth programs, using original sources (bank statements etc.) as input, I don't have to type in any number. I can't understand that there isn't accounting software written in Forth. Would be so easy. If I would have known that it is possible too make money with accounting programs, I would have written one for other people. My own accounting programs written by myself in Forth I only use once a year to do my taxes, so it is still not a general purpose book keeping program. I know other people who wrote their own book keeping programs because they didn't like what is on the market.


> plays)... Windows 8. It's quite possible to buy a discounted, legal copy of Windows 7. Just google for it. Win7 was/is a pretty good system (as Windows versions go). I would recommend continuing with that rather than wrestling with Win8 for now. Cheers, Elizabeth --

I still use Windows XP, and I do not plan to switch to Windows 7 or 8. I would like to use Linux if there would be a Forth running on Linux as easy to use as Win32Forth.

Cheers,
Dirk.

Elizabeth D. Rather

unread,
Nov 15, 2012, 3:55:00 AM11/15/12
to
Yeah, Chuck and I wrote some accounting programs in Forth early on, and
FORTH, Inc. used one of them until the late 1980's. Peachtree (a major
supplier of PC-based accounting software) wrote their first programs
using MacForth.

But today's reality is that the state-of-the-art is far more complex
than that. The two outfits I do accounting for ($2M/yr and $150,000/yr)
really require a level of support that DIY can't provide, unless I
wanted to spend my waking hours working on it, which I do not!

Albert van der Horst

unread,
Nov 15, 2012, 7:20:14 AM11/15/12
to
In article <4122372d-8762-41a1...@googlegroups.com>,
<visua...@rocketmail.com> wrote:
<SNIP>
>
>I still use Windows XP, and I do not plan to switch to Windows 7 or 8. I
>would like to use Linux if there would be a Forth running on Linux as
>easy to use as Win32Forth.

Win32Forth "easy to use"? What are your criterions?

>
>Cheers,
>Dirk.

Groetjes Albert
--
Albert van der Horst, UTRECHT,THE NETHERLANDS
Economic growth -- being exponential -- ultimately falters.
albert@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst

visua...@rocketmail.com

unread,
Nov 15, 2012, 11:32:29 AM11/15/12
to di...@bruehlconsult.com
On Thursday, November 15, 2012 7:20:46 AM UTC-5, Albert van der Horst wrote:
> > In article <4122372d-8762-41a1-ab2c-c94d425a414bgooglegroups.com>, <visualforth.com> wrote: <SNIP>
> > I still use Windows XP, and I do not plan to switch to Windows 7 or 8.
> > I would like to use Linux if there would be a Forth running on Linux as
> > easy to use as Win32Forth.

> Win32Forth "easy to use"? What are your criterions?

Thanks for asking! I can't explain - that's why I wrote "easy to use" only!

I only can count my past experience.

RSC-Forth was easy to use for me, F-PC was, UR/Forth was, Win32Forth is, and MPE's Forth for their Tiny ARM stamp.

I had difficulties using LMI's Forth for Windows and Swift Forth - I still have evaluation packages of these both on my computer, but I wasn't able to work with these. May be it's a personal thing.

Do you have similar experience? Did you write your own Forth because of problems with other Forth systems?

Cheers,
Dirk.

P.S.: May be I should make a special topic about this!

rickman

unread,
Nov 15, 2012, 1:55:27 PM11/15/12
to
On 11/14/2012 6:12 PM, Elizabeth D. Rather wrote:
> On 11/14/12 12:46 PM, rickman wrote:
>> On 11/14/2012 5:12 PM, Elizabeth D. Rather wrote:
> ...
>>> It's quite possible to buy a discounted, legal copy of Windows 7. Just
>>> google for it. Win7 was/is a pretty good system (as Windows versions
>>> go). I would recommend continuing with that rather than wrestling with
>>> Win8 for now.
>>
>> I guess that is good if you just want the least pain... except that I am
>> not using Windows 7, so I would still have some pain with that
>> transition. The real issue is I don't want to pay Microsoft for the
>> privilege of using their old software on top of paying them the
>> mandatory fee for buying a computer.
>>
>> I need a laptop and I would like to be able to buy one without windows.
>> Turns out that is not an option unless you want to pay someone else a
>> premium for the privilege.
>
> Try googling 'laptop no os'. Quite a few results, such as this one:
> http://www.newegg.com/Product/Product.aspx?Item=N82E16856119067
>
> Cheers,
> Elizabeth
>

I'm not sure what you mean. This isn't a laptop. When I did the
suggested search I didn't find much. I've done this search before and I
find none of the linux machine vendors are very competitive on price.
I'll look again and see what I find. Thanks.

Rick

RR

unread,
Nov 15, 2012, 7:03:17 PM11/15/12
to
Companies like http://www.xoticpc.com will custom build with ubuntu and perhaps other linux distributions.

rickman

unread,
Nov 15, 2012, 9:54:32 PM11/15/12
to
On 11/15/2012 7:03 PM, RR wrote:
> Companies like http://www.xoticpc.com will custom build with ubuntu and perhaps other linux distributions.
>

Custom is great, but can I afford it? That's the problem. I paid $550
for my current laptop with a 17" screen. I can get a much better PC now
for around $600 to $750 with 8 MB of RAM and a decent CPU. I haven't
seen anything like that for under $1000 with Linux and some of them are
over $2000!

Rick

RR

unread,
Nov 15, 2012, 10:26:37 PM11/15/12
to

Paul Rubin

unread,
Nov 15, 2012, 10:27:58 PM11/15/12
to
rickman <gnu...@gmail.com> writes:
> haven't seen anything like that for under $1000 with Linux and some of
> them are over $2000!

Dell has a few, all rather low end:

http://www.dell.com/us/business/p/laptops#!facets=80770~0~1791343&p=1

They used to have some nicer ones. I still use an old Lenovo Thinkpad
that came with Suse Linux though I actually run Fedora on it. It was
great to buy a laptop without Windows.

Web searching "linux laptop" finds a bunch of other nice machines,
though they tend to be as expensive as (or more than) windows machines
with the same hardware.

ken...@cix.compulink.co.uk

unread,
Nov 16, 2012, 5:51:48 AM11/16/12
to
In article <50a4ddfe$0$3204$e4fe...@dreader36.news.xs4all.nl>,
alb...@spenarnc.xs4all.nl (Albert van der Horst) wrote:

> Win32Forth "easy to use"? What are your criterions?

Well I would say a form designer and a toolbox. WinForth comes with
both though of course not on the same scale as a commercial Windows
development language like Delphi or Visual Basic. Windows calling
conventions are a pain and having an environment that can do a lot of
the foundation for you makes life easier. I have no idea if there is
anything similar for Linux but the number of different desk tops
available can not make things easy.

Ken Young

Stephen Pelc

unread,
Nov 16, 2012, 8:46:32 AM11/16/12
to
On Fri, 16 Nov 2012 04:51:48 -0600, ken...@cix.compulink.co.uk wrote:

>Windows calling
>conventions are a pain and having an environment that can do a lot of
>the foundation for you makes life easier.

All the major Forths can make API calls, e.g. in VFX Forth the
code below is basically a copy and paste from the API documentation.

Extern: HANDLE PASCAL CreateAcceleratorTable(
LPACCEL lpaccl, int cEntries
);

>I have no idea if there is
>anything similar for Linux but the number of different desk tops
>available can not make things easy.

VFX Forth can use GTK+ and Glade, which can also be used on Windows
and OS X.

visua...@rocketmail.com

unread,
Nov 16, 2012, 11:12:33 AM11/16/12
to
On Friday, November 16, 2012 5:51:49 AM UTC-5, ken...@cix.compulink.co.uk wrote:
> Well I would say a form designer and a toolbox. WinForth comes with both though of course not on the same scale as a commercial Windows development language like Delphi or Visual Basic... Ken Young

Take a look at visualFORTH!

www.visualFORTH.org

Bernd Paysan

unread,
Nov 16, 2012, 11:45:56 AM11/16/12
to
Paul Rubin wrote:
> Web searching "linux laptop" finds a bunch of other nice machines,
> though they tend to be as expensive as (or more than) windows machines
> with the same hardware.

Most OEMs have a contract with Microsoft that goes "per machine sold",
regardless if it's sold with or without Windows. Some taiwanese OEMs
did or do sell low-end machines with their own Linux (Acer e.g.),
apparently circumventing something in Microsoft's contract, but you have
to install your own Ubuntu, Mint, OpenSuSE or Fedora, because Acer's
Linux is really bad.

Asus tried the same when they started their netbook line, and the
consequence was that Microsoft lowered the price for Windows XP on a
netbook to mere $3 - if all units are going to be sold with Windows.
AFAIK, they even undercut the pirated Windows in China ;-).

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

Paul Rubin

unread,
Nov 16, 2012, 12:10:24 PM11/16/12
to
Bernd Paysan <bernd....@gmx.de> writes:
> Most OEMs have a contract with Microsoft that goes "per machine sold",

I can tell you I bought a Lenovo-branded Thinkpad in 2008 or so (I'm
still using it) with SuSE Linux that really did cost nontrivially less
(I don't remember the amount, but closer to $100 than to $0) than the
same hardware with Windows.

In the case where the hardware manufacturer (Foxconn, Compal, etc.) is
separate from the retail brand (e.g. Dell sells a lot of Compal gear, or
did), I'd have expected that the retail brand supplies the OS, and
therefore the Linux laptop specialty places really aren't buying
Windows, but they still have to charge more for the laptops because they
have less buying power and have to pay more for the hardware. If the
hardware manufacturers are having to license Windows, that's annoying :(.

> to install your own Ubuntu, Mint, OpenSuSE or Fedora, because Acer's
> Linux is really bad.

Yeah, I'm used to that, I didn't run SuSE either (replaced it
immediately with Ubuntu, later switched to Fedora).

> Asus tried the same when they started their netbook line, and the
> consequence was that Microsoft lowered the price for Windows XP on a
> netbook to mere $3 - if all units are going to be sold with Windows.
> AFAIK, they even undercut the pirated Windows in China ;-).

Now there is something called a Chromebook which I think is basically a
netbook running Android. I'd like to know if there are any impediments
to running a regular Linux distro instead.

Andy Valencia

unread,
Nov 16, 2012, 1:06:03 PM11/16/12
to
Bernd Paysan <bernd....@gmx.de> writes:
> > Most OEMs have a contract with Microsoft that goes "per machine sold",
> I can tell you I bought a Lenovo-branded Thinkpad in 2008 or so (I'm
> still using it) with SuSE Linux that really did cost nontrivially less
> (I don't remember the amount, but closer to $100 than to $0) than the
> same hardware with Windows.

If saving money is really the goal, buy a used laptop on eBay, download
a Linux install CD ISO (I mostly use Ubuntu here) and tread Linux onto
the laptop yourself. A refurb unit from the manufacturer like:

http://www.ebay.com/itm/Acer-Aspire-One-10-1-Netbook-N2600-1-6GHz-Dual-core-1GB-320GB-AOD270-1606-/261128547509?pt=Laptops_Nov05&hash=item3ccc796cb5

is $190. That's quite a lot of portable computing for the price!

Installing Linux has become quite straightforward; I've been especially
impressed by the Ubuntu install process. For this Acer, you'll need a
USB thumb drive or else a USB CD drive. That should add like another $10
if you're one of the few remaining people on the planet without a USB
thumb drive....

Andy Valencia
Home page: http://www.vsta.org/andy/
To contact me: http://www.vsta.org/contact/andy.html

Paul Rubin

unread,
Nov 16, 2012, 2:09:18 PM11/16/12
to
Andy Valencia <van...@vsta.org> writes:
> If saving money is really the goal,

I think the goal also extends to avoiding donating money to Microsoft
given that the laptop won't be running Microsoft software.

> http://www.ebay.com/itm/Acer-Aspire-One-10-1-Netbook
> is $190. That's quite a lot of portable computing for the price!

You can get a brand new netbook for just a little more than that, so I'd
avoid the refurb. But a netbook is not really a good development
machine. Rick had mentioned wanting a 17" screen. I.e. it's a desktop
replacement rather than something to take around everywhere.

> Installing Linux has become quite straightforward; I've been
> especially impressed by the Ubuntu install process.

Lately I'm staying away from Ubuntu which has become too commercial and
Windows-ish IMHO. I'm using Fedora on laptops and Debian on servers.
Installation of both of those is also pretty easy. Debian was hard to
install in the distant past, so I avoided it for a long time after some
early bad experiences, but at least the current stuff installs pretty
easily.

Sp...@controlq.com

unread,
Nov 16, 2012, 3:18:16 PM11/16/12
to
On Fri, 16 Nov 2012, Paul Rubin wrote:

> Date: Fri, 16 Nov 2012 11:09:18 -0800
> From: Paul Rubin <no.e...@nospam.invalid>
> Newsgroups: comp.lang.forth
> Subject: Re: Windows8
I agree with Ubuntu becoming too ... icky, but Debian seems to work well,
and for a notebook, I've recently installed OpenSuse (12.2??), and it
works very well indeed.

Bernd Paysan

unread,
Nov 16, 2012, 4:34:30 PM11/16/12
to
Paul Rubin wrote:
> In the case where the hardware manufacturer (Foxconn, Compal, etc.) is
> separate from the retail brand (e.g. Dell sells a lot of Compal gear,
> or did), I'd have expected that the retail brand supplies the OS, and
> therefore the Linux laptop specialty places really aren't buying
> Windows, but they still have to charge more for the laptops because
> they
> have less buying power and have to pay more for the hardware. If the
> hardware manufacturers are having to license Windows, that's annoying
> :(.

Yes, it is. And all the discussion more than 10 years ago about
splitting up Microsoft would have better spent to "debundle" the license
from the boxes, especially the "all units shipped".

If your rebate was closer to $100, this probably was a business laptop -
these often enough sell to companies which already have a company-wide
Microsoft license, and don't want to pay twice. Then, the Windows
license is a big deal, because it's only for a minority of the buyers.
hina ;-).

> Now there is something called a Chromebook which I think is basically
> a netbook running Android. I'd like to know if there are any
> impediments to running a regular Linux distro instead.

No, seems to be a no-brainer to install Ubuntu on it:

http://www.tgdaily.com/mobility-features/67014-samsungs-arm-powered-
chromebook-runs-ubuntu

Ed

unread,
Nov 17, 2012, 7:14:19 PM11/17/12
to
Anton Ertl wrote:
> "Ed" <inv...@nospam.com> writes:
> >Elizabeth D. Rather wrote:
> >> On 11/12/12 5:15 AM, Jason Damisch wrote:
> >> > Why can't they just write an OS which works correctly most if not all of
> >> > the time? Could it be that the very idea of garbage collection is
> >> > fundamentally flawed?
>
> Given that most popular OSs don't use GC internally, their correctness
> problems are obviously not due to GC.
>
> More generally, the idea of GC is not fundamentally flawed. GC has
> some benefits and some limitations.
>
> >> Ding ding ding ding we have a winner. That is why we never use it in
> >> embedded systems that have to run forever without occasional reboots to
> >> fix all the allocation issues. Personally, I don't like it at all,
> >> though I realize there's a need for it in general-purpose OSs.
> >
> >Does the same apply to ALLOCATE FREE RESIZE ?
> >
> >I ask this because I've noted a trend where every computer ill seems
> >to be blamed on "memory leaks".
>
> Memory leaks are a problem in some long-runnung programs, but most
> "ills" I experience are from other kinds of bugs. It's harder to FREE
> all dead memory explicity than to eliminate all references to dead
> memory, so memory leaks are more common with FREE than with GC.

Are you saying there is an inherent flaw in FREE - or simply a failure
on the part of programmers to FREE memory? i.e. is dead memory
avoidable or inevitable? Elizabeth's comment above sounds a note
of warning but it's unclear whether she's talking about GC specifically
or dynamic memory generally.

If dynamic memory can only be relied upon to work when there is
an abundance of memory, then it begs the question why use it.




Anton Ertl

unread,
Nov 19, 2012, 9:25:05 AM11/19/12
to
"Ed" <inv...@nospam.com> writes:
>Anton Ertl wrote:
>> Memory leaks are a problem in some long-runnung programs, but most
>> "ills" I experience are from other kinds of bugs. It's harder to FREE
>> all dead memory explicity than to eliminate all references to dead
>> memory, so memory leaks are more common with FREE than with GC.
>
>Are you saying there is an inherent flaw in FREE - or simply a failure
>on the part of programmers to FREE memory? i.e. is dead memory
>avoidable or inevitable?

In theory it's avoidable and memory leaks (as well as other
FREE-related bygs) are a failure on the part of the programmer.

However, FREE is an error-prone feature, so you might also say that
it's an inherent flaw in FREE.

There is also the problem of external fragmentation (unallocated
pieces of memory that are too small to be useful for allocation),
which is pretty inherent in FREE, but I think it's more a theoretical
than a practical problem. For some implementations of ALLOCATE/FREE
it may also be a practical problem, but that's not inherent in the
concept of ALLOCATE/FREE.

>If dynamic memory can only be relied upon to work when there is
>an abundance of memory, then it begs the question why use it.

Well, it depends on the application. In many cases I just allocate
(with ALLOCATE or ALLOT, whatever is convenient), and never free it.
For libraries where I don't know how it is used, I FREE ALLOCATEd
memory, so that the library is more generally useful. For some
applications, limiting oneself to using ALLOT is appropriate. Horses
for courses.

Elizabeth D. Rather

unread,
Nov 19, 2012, 1:09:26 PM11/19/12
to
On 11/19/12 4:25 AM, Anton Ertl wrote:
...
>> If dynamic memory can only be relied upon to work when there is
>> an abundance of memory, then it begs the question why use it.
>
> Well, it depends on the application. In many cases I just allocate
> (with ALLOCATE or ALLOT, whatever is convenient), and never free it.
> For libraries where I don't know how it is used, I FREE ALLOCATEd
> memory, so that the library is more generally useful. For some
> applications, limiting oneself to using ALLOT is appropriate. Horses
> for courses.

If you're not going to bother to FREE ALLOCATEd space, why are you using
ALLOCATE? Why not just ALLOT? Using ALLOT means you have full control
over your memory map.

Doug Hoffman

unread,
Nov 19, 2012, 4:21:38 PM11/19/12
to
On 11/17/12 7:14 PM, Ed wrote:

> Are you saying there is an inherent flaw in FREE - or simply a failure
> on the part of programmers to FREE memory?

As others have indicated that would be a failure on the part of the
programmer to FREE memory.

> i.e. is dead memory avoidable or inevitable?

Quite avoidable, certainly.

> If dynamic memory can only be relied upon to work when there is
> an abundance of memory, then it begs the question why use it.

It can be relied on to work. Use ALLOCATEd memory for dynamic needs.
Strings are a good example. Consider:

: foo'
string+ >heap locals| s |
s" ABCd" s !: ." the character " 0 s at: emit
." is the first character of " s p:
s" EFG" s add: cr s p: ." after adding EFG"
false to case-sensitive?
s" cde" s search: if s delete: then cr s p:
." is what's left after a search and delete for cde "
s <free ;

foo'
the character A is the first character of ABCd
ABCdEFG after adding EFG
ABFG is what's left after a search and delete for cde ok

The (itself temporary) string will expand and shrink automatically
without concern for string buffer sizes and so forth. The case
insensitive search involves some behind-the-scenes automatic memory
allocation and freeing as well. The above example has no memory leak
and uses ALLOCATE FREE RESIZE quite a bit.

-Doug

p.s., about 30 lines of support code needed, not counting the string class

Paul Rubin

unread,
Nov 19, 2012, 4:46:22 PM11/19/12
to
Doug Hoffman <glid...@gmail.com> writes:
> As others have indicated that would be a failure on the part of the
> programmer to FREE memory.

Calling it a programmer "failure" is kind of an incomplete description.
To FREE memory you first have to know that the memory is no longer in
use, which can require careful bookkeeping in the program if the memory
is (e.g.) shared between multiple objects.

That bookkeeping is error-prone to start with, and it expands programmer
effort (i.e. development budget) even when it works. If you have the
machine resources to take a moderate efficiency hit in the running
program, and if you're using dynamic memory in any more than trivial
way, GC can be quite a big win for programmer productivity. FREE seems
to have gone out of style even in C++, which now (C++11) prefers
reference-counted pointers that are handled sort of invisibly by the
standard library, for heap-allocated data.

Doug Hoffman

unread,
Nov 19, 2012, 5:05:29 PM11/19/12
to
Could you show where in my example that the bookkeeping gets to be error
prone? Or would you consider it a trivial example? If trivial, that
trviality is sure darn useful.

-Doug

source: http://soton.mpeforth.com/flag/fms/microFMS.f

Elizabeth D. Rather

unread,
Nov 19, 2012, 5:14:05 PM11/19/12
to
That allocation is used and freed within a limited context. As Paul
points out, in some programs buffers may be used in multiple places in a
large program. It requires meticulous program design to FREE such a
buffer in the right place without conflict among all the uses.

Of course, my argument would be that it is only safe to use an ALLOCATEd
buffer temporarily and locally, and any memory space that has to be a
resource in multiple places in a large program should be permanently
ALLOTted for security.

Paul Rubin

unread,
Nov 19, 2012, 5:30:52 PM11/19/12
to
"Elizabeth D. Rather" <era...@forth.com> writes:
> Of course, my argument would be that it is only safe to use an
> ALLOCATEd buffer temporarily and locally, and any memory space that
> has to be a resource in multiple places in a large program should be
> permanently ALLOTted for security.

Why would you ALLOT if permanently if you're only going to need it
temporarily? That's a memory leak. If you're processing a lot of data,
you'll eventually run out of memory that way.

Paul Rubin

unread,
Nov 19, 2012, 5:42:11 PM11/19/12
to
Doug Hoffman <glid...@gmail.com> writes:
> Could you show where in my example that the bookkeeping gets to be
> error prone? Or would you consider it a trivial example? If trivial,
> that trviality is sure darn useful.

Well, I was speaking generally rather than toward your specific example,
and I don't really understand your example, but I think it involves
dynamically allocating a string buffer so the string can be resized.

Let's say the string is someone's name ("Joe Smith") and Joe is a member
of a club so his name is on the club's membership list, so you have to
keep that string allocated as long as Joe stays a member. But if his
membership lapses, he is taken off the membership list, so maybe you
want to FREE the memory when that happens. On the other hand, perhaps
Joe won the Member of the Month award in November 2003, so Joe's name is
also on the "November members of the month" list which is a permanent
list, so in that case you better NOT free the memory just because Joe is
no longer a member. Start adding some indexed data structures sharing
fields that might or might not contain Joe, structures that are
themselves being created and deleted on the fly, and you can see how the
bookkeeping can get weird.

What you want is an automated way of tracking the references to Joe, so
you can free the memory once it's no longer needed, without having to
manually remember what lists Joe might or might not be on. This is
basically what GC is. If you've never used it and you deal with dynamic
data, give it a try; programming becomes ever so much easier.

I think in the embedded realm, it's probably less of an issue, because
there's less dynamic data involved in that sort of code.

Doug Hoffman

unread,
Nov 19, 2012, 5:44:34 PM11/19/12
to
On 11/19/12 5:14 PM, Elizabeth D. Rather wrote:
> On 11/19/12 12:05 PM, Doug Hoffman wrote:
>> On 11/19/12 4:46 PM, Paul Rubin wrote:
>>> Doug Hoffman <glid...@gmail.com> writes:
>>>> As others have indicated that would be a failure on the part of the
>>>> programmer to FREE memory.
>>>
>>> Calling it a programmer "failure" is kind of an incomplete description.
>>> To FREE memory you first have to know that the memory is no longer in
>>> use, which can require careful bookkeeping in the program if the memory
>>> is (e.g.) shared between multiple objects.
>>>
>>> That bookkeeping is error-prone to start with, and it expands programmer
>>> effort (i.e. development budget) even when it works. If you have the
>>> machine resources to take a moderate efficiency hit in the running
>>> program, and if you're using dynamic memory in any more than trivial
>>> way, GC can be quite a big win for programmer productivity. FREE seems
>>> to have gone out of style even in C++, which now (C++11) prefers
>>> reference-counted pointers that are handled sort of invisibly by the
>>> standard library, for heap-allocated data.
>>
>> Could you show where in my example that the bookkeeping gets to be error
>> prone? Or would you consider it a trivial example? If trivial, that
>> trviality is sure darn useful.
>
> That allocation is used and freed within a limited context.

Yes. That's a smart and useful way to use it.

> As Paul
> points out, in some programs buffers may be used in multiple places in a
> large program.

And I would call that living dangerously by choice. Maybe. Depends on
the details which I don't see.

> It requires meticulous program design to FREE such a
> buffer in the right place without conflict among all the uses.

OK. Maybe. If one chooses to live dangerously then meticulous care is
probably then a requirement and is perhaps more prone to error. Again,
depends on the specifics which I don't see. But no where does this
condemn ALLOCATE RESIZE FREE, IMO.

-Doug

Paul Rubin

unread,
Nov 19, 2012, 5:52:50 PM11/19/12
to
Doug Hoffman <glid...@gmail.com> writes:
>> As Paul points out, in some programs buffers may be used in multiple
>> places in a large program.
> And I would call that living dangerously by choice. Maybe. Depends
> on the details which I don't see.

What alternative are you proposing? If the data is needed in multiple
places, you either have to share it, or copy it all over the place,
causing program slowdown and memory bloat.

> If one chooses to live dangerously then meticulous care
> is probably then a requirement and is perhaps more prone to error.

That is also a route not to travel. If the pattern of allocation is
complicated enough that you start wanting a computer to keep track of
it, then why not do exactly that, and let the computer keep track of it
so you don't have to? Use the Force, Luke. The power of garbage
collection is within you. ;-)

Elizabeth D. Rather

unread,
Nov 19, 2012, 5:53:14 PM11/19/12
to
It really depends on various design issues in the application. But in
many cases, PAD can be used as a temporary buffer. If this is something
that's going to happen repeatedly (e.g. every time you process a
transaction) you can ALLOT appropriate buffers and reuse them for every
transaction.

Doug Hoffman

unread,
Nov 19, 2012, 5:56:02 PM11/19/12
to
On 11/19/12 5:42 PM, Paul Rubin wrote:
> Doug Hoffman <glid...@gmail.com> writes:
>> Could you show where in my example that the bookkeeping gets to be
>> error prone? Or would you consider it a trivial example? If trivial,
>> that trviality is sure darn useful.
>
> Well, I was speaking generally rather than toward your specific example,

Apparently. My example has no leaks. Period.

> and I don't really understand your example, but I think it involves
> dynamically allocating a string buffer so the string can be resized.

You understand.

> Let's say the string is someone's name ...

Who there. You are building a house of cards and in a way that I would
never consider. When I allocate a dynamic object I make *sure* that the
overall program *always* has a path to free that object's memory and
*only* when appropriate. What you described begs for possibly copying
the data before freeing the original's memory, which is an entirely safe
thing to do.

It all may boil down to the complexity one is attempting to use. For my
purposes GC has never seemed necessary.

-Doug

Elizabeth D. Rather

unread,
Nov 19, 2012, 5:58:59 PM11/19/12
to
On 11/19/12 12:42 PM, Paul Rubin wrote:
> Doug Hoffman <glid...@gmail.com> writes:
>> Could you show where in my example that the bookkeeping gets to be
>> error prone? Or would you consider it a trivial example? If trivial,
>> that trviality is sure darn useful.
>
> Well, I was speaking generally rather than toward your specific example,
> and I don't really understand your example, but I think it involves
> dynamically allocating a string buffer so the string can be resized.

That's the kind of situation that PAD is ideal for.

> Let's say the string is someone's name ("Joe Smith") and Joe is a member
> of a club so his name is on the club's membership list, so you have to
> keep that string allocated as long as Joe stays a member. But if his
> membership lapses, he is taken off the membership list, so maybe you
> want to FREE the memory when that happens. On the other hand, perhaps
> Joe won the Member of the Month award in November 2003, so Joe's name is
> also on the "November members of the month" list which is a permanent
> list, so in that case you better NOT free the memory just because Joe is
> no longer a member. Start adding some indexed data structures sharing
> fields that might or might not contain Joe, structures that are
> themselves being created and deleted on the fly, and you can see how the
> bookkeeping can get weird.

That kind of data needs to be stored in a file, surely?

> What you want is an automated way of tracking the references to Joe, so
> you can free the memory once it's no longer needed, without having to
> manually remember what lists Joe might or might not be on. This is
> basically what GC is. If you've never used it and you deal with dynamic
> data, give it a try; programming becomes ever so much easier.
>
> I think in the embedded realm, it's probably less of an issue, because
> there's less dynamic data involved in that sort of code.

Well, many instruments are doing repeated data acquisition, but one
allots permanent buffers for that purpose. The data comes in, it gets
some preliminary processing in the buffer, and it gets stored on disk or
flash. Then the buffer gets reused. If it's high-speed data acquisition
such that you must be acquiring data while older data is being
processed, you can use a circular buffer list. Lots of strategies,
depending on the need.

Paul Rubin

unread,
Nov 19, 2012, 6:14:16 PM11/19/12
to
Doug Hoffman <glid...@gmail.com> writes:
>> Well, I was speaking generally rather than toward your specific example,
> Apparently. My example has no leaks. Period.

As Elizabeth mentioned, your example (freeing the memory after doing
just a few operations) could have been done with PAD or ALLOT instead of
ALLOCATE. In a more typical case, when you create a string, it's for
some other part of the program to use, so the place that creates it
doesn't know when it will be freed.

>> Let's say the string is someone's name ...
> What you described begs for possibly copying the data before freeing
> the original's memory, which is an entirely safe thing to do.

That's the old-fashioned C++ approach, and part of the reason people
complain about C++ programs being slow and memory hogs ;-). You also
need complexity in each of your containers to free the memory of objects
inside the container when the container is freed, etc. What happened to
factoring? GC puts all the freeing in one place.

> It all may boil down to the complexity one is attempting to use. For
> my purposes GC has never seemed necessary.

Even in the cases where you got by without it, maybe it could have saved
you some effort if you had used it.

Doug Hoffman

unread,
Nov 19, 2012, 6:45:41 PM11/19/12
to
On 11/19/12 6:14 PM, Paul Rubin wrote:
> Doug Hoffman <glid...@gmail.com> writes:
>>> Well, I was speaking generally rather than toward your specific example,
>> Apparently. My example has no leaks. Period.
>
> ... your example (freeing the memory after doing
> just a few operations) could have been done with PAD or ALLOT instead of
> ALLOCATE.

No. That requires knowing in advance how large the string may grow.
That string could grow to 1 meg or larger, no problem. Same code
snippet style. PAD won't do. What size for ALLOT should I select at
compile time?


> In a more typical case, when you create a string, it's for
> some other part of the program to use, so the place that creates it
> doesn't know when it will be freed.

Why not? Either wait until it is copied, written to disk, or the
program is ended by the user before freeing.



>>> Let's say the string is someone's name ...
>> What you described begs for possibly copying the data before freeing
>> the original's memory, which is an entirely safe thing to do.
>
> That's the old-fashioned C++ approach, and part of the reason people
> complain about C++ programs being slow and memory hogs ;-).

A Forth GC implementation must have a memory and speed hit of its own.
You're not likely to convince me to use GC because the problems I solve
don't require it.

Perhaps others who have used Forth and GC could comment on what GC code
they use and how that has worked out for them. I've read negative
comments about that.

-Doug

Doug Hoffman

unread,
Nov 19, 2012, 7:01:47 PM11/19/12
to
On 11/19/12 6:14 PM, Paul Rubin wrote:
> Doug Hoffman <glid...@gmail.com> writes:
>>> Well, I was speaking generally rather than toward your specific example,
>> Apparently. My example has no leaks. Period.
>
> ... your example (freeing the memory after doing
> just a few operations) could have been done with PAD or ALLOT instead of
> ALLOCATE.

Actually there was more freeing and allocating going on because an
uncased search was implemented where two copies of strings were created
and converted to all upper case for comparison (not the only way to do
it, just convenient). Couldn't re-use PAD for those operations.
Pre-allotting has the same problems mentioned before.

Not to argue the details of how to best use strings for a specific
problem, that's not the issue. The point is highly dynamic routines
using ALLOCATE RESIZE FREE are not at all difficult to write while
confidently avoiding memory leaks and other potential dynamic memory
problems. I find other aspects of programming to be much more
challenging than using ALLOCATE RESIZE FREE.

-Doug

Elizabeth D. Rather

unread,
Nov 19, 2012, 7:18:13 PM11/19/12
to
On 11/19/12 1:45 PM, Doug Hoffman wrote:
> On 11/19/12 6:14 PM, Paul Rubin wrote:
>> Doug Hoffman <glid...@gmail.com> writes:
>>>> Well, I was speaking generally rather than toward your specific
>>>> example,
>>> Apparently. My example has no leaks. Period.
>>
>> ... your example (freeing the memory after doing
>> just a few operations) could have been done with PAD or ALLOT instead of
>> ALLOCATE.
>
> No. That requires knowing in advance how large the string may grow.
> That string could grow to 1 meg or larger, no problem. Same code
> snippet style. PAD won't do. What size for ALLOT should I select at
> compile time?

Depends. How do you find out how long your string is? PAD can be quite
large on some systems, although of course that becomes a dependency
issue. But, then, if you need to process multi-Mb strings you have a
dependency issue anyway.

>> In a more typical case, when you create a string, it's for
>> some other part of the program to use, so the place that creates it
>> doesn't know when it will be freed.
>
> Why not? Either wait until it is copied, written to disk, or the
> program is ended by the user before freeing.

His point is how does the creation code know the string has been copied,
etc.?

>>>> Let's say the string is someone's name ...
>>> What you described begs for possibly copying the data before freeing
>>> the original's memory, which is an entirely safe thing to do.
>>
>> That's the old-fashioned C++ approach, and part of the reason people
>> complain about C++ programs being slow and memory hogs ;-).
>
> A Forth GC implementation must have a memory and speed hit of its own.
> You're not likely to convince me to use GC because the problems I solve
> don't require it.
>
> Perhaps others who have used Forth and GC could comment on what GC code
> they use and how that has worked out for them. I've read negative
> comments about that.

Can't help you there, I avoid GC like the plague!

Paul Rubin

unread,
Nov 19, 2012, 7:18:58 PM11/19/12
to
Doug Hoffman <glid...@gmail.com> writes:
> A Forth GC implementation must have a memory and speed hit of its
> own. You're not likely to convince me to use GC because the problems I
> solve don't require it.

The only Forth GC that I know of is Anton's, which is a Boehm-style
conservative collector that scans the entire heap for anything that
might be a pointer, so its speed hit per collection is O(N) in the total
size of the strings. Its space hit is small, maybe a bit or a cell in
each allocated object regardless of object size (not sure). Your
copying approach is potentially much worse, like O(N*K) where K is the
number of copies made, and K could potentially itself be O(N), making
the whole thing O(N**2); and it is both a speed hit and a space hit of
that magnitude. Whether the speed hit is worse depends of course on
collection frequency.

A more advanced GC usually doesn't scan the heap, but instead just
traces the pointers and copies the live data, so it's basically O(M) in
the live data size at each collection, where M is often much smaller
than N. With this type of GC, allocation is similar to ALLOT (i.e. it
just bumps a pointer) and freeing most objects takes zero time (since
the GC doesn't touch dead objects). GC is often faster than traditional
allocate/free for that reason.

> Perhaps others who have used Forth and GC could comment on what GC
> code they use and how that has worked out for them. I've read
> negative comments about that.

I'd be interested in hearing experiences too. I think GC is not really
a perfect fit for Forth, but it does exist and apparently gets used
sometimes. I think for the sorts of problems that benefit a lot from
relying heavily on GC, Forth itself may not be that good a fit. Forth
with GC is sort of an in-between area and I was surprised to find out
about it.

Bernd Paysan

unread,
Nov 19, 2012, 8:23:10 PM11/19/12
to
Paul Rubin wrote:
> What you want is an automated way of tracking the references to Joe,
> so you can free the memory once it's no longer needed, without having
> to manually remember what lists Joe might or might not be on. This is
> basically what GC is. If you've never used it and you deal with
> dynamic data, give it a try; programming becomes ever so much easier.

Programming becomes much easier, because you no longer care. There are
at least two widely used techniques to allow the "no longer care" way,
one is GC, the other is automatic reference counting. There are pro's
and con's for both. Objective-C (as used in iOS) is probably the most
widely known example of automatic reference counting, the advantage is
that all memory allocation and freeing is synchronous with the program,
and thus predictable. A GC run is not predictable, and one reason why
Android is perceived as "lagging" are the GC runs.

You however *can* have real-time GCs, but probably not in Java.
However, real-time GCs do some things which are quite similar to
reference counting, they do need to know what actually is a reference,
and do need special extra operations for assigning a reference.

A GC run is also polluting the cache, as it looks through a significant
portion of the memory of an application. You don't want that on a
modern CPU, you want spacial and temporal locality. An implicit, but
synchronous freeing of the parts you don't need any longer *right when
you stop needing them* is giving you that.

I'm for automatic memory deallocation, as it reduces the burden of the
programmer, but IMHO, reference counting is the more Forthy way. GC is
the Lisp way.

Anton Ertl

unread,
Nov 20, 2012, 4:55:52 AM11/20/12
to
"Elizabeth D. Rather" <era...@forth.com> writes:
>On 11/19/12 4:25 AM, Anton Ertl wrote:
>> Well, it depends on the application. In many cases I just allocate
>> (with ALLOCATE or ALLOT, whatever is convenient), and never free it.
>> For libraries where I don't know how it is used, I FREE ALLOCATEd
>> memory, so that the library is more generally useful. For some
>> applications, limiting oneself to using ALLOT is appropriate. Horses
>> for courses.
>
>If you're not going to bother to FREE ALLOCATEd space, why are you using
>ALLOCATE? Why not just ALLOT?

SwiftForth i386-Linux 3.2.1 28-Dec-2009
100000000 allocate throw ok
. -248688632 ok

SwiftForth i386-Linux 3.2.1 28-Dec-2009
100000000 allot Dictionary full

Mark Wills

unread,
Nov 20, 2012, 5:13:27 AM11/20/12
to
On Nov 19, 10:42 pm, Paul Rubin <no.em...@nospam.invalid> wrote:
Surely the solution is for the object representing Joe to know when
*it* can safely destroy *itself*? This implies (at least to me) some
sort of reference counting in the Joe object. But at least everything
is centralised within Joe, rather than scattered about around the
application program.

This is how the GC object in .Net works. It doesn't destroy anything.
It's asks the objects themselves to destroy themselves if they can
(all objects have a "die" method). In .net though there's also some
magic going on behind the scenes; objects (somehow) know when they're
no longer in scope and will kill themselves when the GC touches them.
I.e. they can still kill themselves correctly, even if not explictly
set to nothing or sent a .die message.

Anton Ertl

unread,
Nov 20, 2012, 5:48:31 AM11/20/12
to
Bernd Paysan <bernd....@gmx.de> writes:
>Objective-C (as used in iOS) is probably the most
>widely known example of automatic reference counting, the advantage is
>that all memory allocation and freeing is synchronous with the program,
>and thus predictable. A GC run is not predictable, and one reason why
>Android is perceived as "lagging" are the GC runs.

Overwriting a reference can cause an arbitrarily long lag (consider
freeing the last reference to a large interlinked data structure,
e.g. a large tree). Yes, one could use techniques like those used by
real-time GC to distribute that lag.

>A GC run is also polluting the cache, as it looks through a significant
>portion of the memory of an application. You don't want that on a
>modern CPU, you want spacial and temporal locality.

GC is pretty good on spatial locality, especially copying GC.
Reference counting is not so good on spatial locality, but may be good
on temporal locality; and for cache pollution it's much worse: it
dirties (writes to) the referenced cache line every time a reference
is copied or overwritten, which means that lots of cache lines become
dirty and have to be written back to main memory later.

>I'm for automatic memory deallocation, as it reduces the burden of the
>programmer, but IMHO, reference counting is the more Forthy way.

I don't see that at all. A DUP of an address will increase the
reference count and thus become an expensive operation. Also, given
the lack of type checking in Forth, how do you know that the DUP
duplicates an address and not just something that looks like one?

Conservative garbage collection fits ok into Forth. If you want it
more Forthy, I think the way to go is to be less automatic. You still
want to avoid the problems of ALLOCATE and FREE, though. One
promising approach is region-based allocation, but I have yet to see
that promise turned into a useful region allocation library for Forth.

Alex McDonald

unread,
Nov 20, 2012, 10:56:17 AM11/20/12
to
On Nov 20, 10:48 am, an...@mips.complang.tuwien.ac.at (Anton Ertl)
wrote:

>
> Conservative garbage collection fits ok into Forth.  If you want it
> more Forthy, I think the way to go is to be less automatic.  You still
> want to avoid the problems of ALLOCATE and FREE, though.  One
> promising approach is region-based allocation, but I have yet to see
> that promise turned into a useful region allocation library for Forth.

Any references or papers?

Paul Rubin

unread,
Nov 20, 2012, 11:57:40 AM11/20/12
to
Mark Wills <forth...@gmail.com> writes:
> Surely the solution is for the object representing Joe to know when
> *it* can safely destroy *itself*? This implies (at least to me) some
> sort of reference counting in the Joe object. But at least everything
> is centralised within Joe, rather than scattered about around the
> application program.

How can the object know when a new reference is created, other than by
scattering refcount increments all over the program? As Anton says, you
even have to increment the refcount after a DUP of the address.

> This is how the GC object in .Net works. It doesn't destroy anything.
> It's asks the objects themselves to destroy themselves if they can
> (all objects have a "die" method).

That's called a "finalizer" or "destructor" and such things can be
called by a GC, though there are pitfalls.

> In .net though there's also some magic going on behind the scenes;
> objects (somehow) know when they're no longer in scope and will kill
> themselves when the GC touches them. I.e. they can still kill
> themselves correctly, even if not explictly set to nothing or sent a
> .die message.

That doesn't sound like magic, if .net uses ref counting. The compiler
just generates some code to decrement the object's refcount when it
leaves scope. C++ and Python also do that. They can't outright kill
the object because some pointer to it might have been created while the
object was in scope. Alternatively the compiler could (sometimes)
statically notice if no pointers to the object have been created, and
kill the object on scope exit in that case, or even kill the object when
the last pointer to it goes out of scope. I think these type of schemes
are examples of "region inference".

David N. Williams

unread,
Nov 20, 2012, 4:56:33 PM11/20/12
to
On 11/20/12 11:57 AM, Paul Rubin wrote:
> Mark Wills <forth...@gmail.com> writes:
>> Surely the solution is for the object representing Joe to know when
>> *it* can safely destroy *itself*? This implies (at least to me) some
>> sort of reference counting in the Joe object. But at least everything
>> is centralised within Joe, rather than scattered about around the
>> application program.
>
> How can the object know when a new reference is created, other than by
> scattering refcount increments all over the program? As Anton says, you
> even have to increment the refcount after a DUP of the address.

Maybe it's worth mentioning that BDUP, QDUP, MFDUP, and RFDUP
for multiprecision stacks, and $DUP for the dstring stack, don't
suffer from this problem with the respective garbage collectors
used in forth-gmpfr and dstrings:

http://www.umich.edu/~williams/archive/forth/gmpfr/
http://www.umich.edu/~williams/archive/forth/strings/

They're designed so that only dropping the deepest references on
the stacks causes an object to be marked as garbage, unless
there's a reference held in a variable of the corresponding
type, whereupon storing into the variable is what causes
marking.

They all use the same mark and sweep model, which AFAIU is
inadequate for the kind garbage collection being considered
here. But the bookkeeping is fairly efficient for objects the
size of multiprecision arithmetic or dynamic string types.

-- David

Anton Ertl

unread,
Nov 21, 2012, 10:03:15 AM11/21/12
to
Alex McDonald <bl...@rivadpm.com> writes:
>On Nov 20, 10:48=A0am, an...@mips.complang.tuwien.ac.at (Anton Ertl)
>wrote:
>> =A0One
>> promising approach is region-based allocation, but I have yet to see
>> that promise turned into a useful region allocation library for Forth.
>
>Any references or papers?

http://en.wikipedia.org/wiki/Region-based_memory_management

visua...@rocketmail.com

unread,
Nov 21, 2012, 8:48:42 PM11/21/12
to mik....@googlemail.com, Di...@bruehlconsult.com
On Tuesday, November 6, 2012 12:05:27 PM UTC-5, visua...@rocketmail.com wrote:
> "The big challenge is that users are likely to have need to use more than one platform."

Here some confirmation:

William Wong wrote about
"KDE, Windows 8 And The Changing User Interface"

"I use a wide variety of operating systems in the lab from Linux to Windows. In general, switching between systems used to require a minor adjustment to adapt to the user interface for each one. That was a couple years ago. These days the variety can be confusing and Microsoft's new Windows 8 has a new user interface too...
Windows 8 was more of a shock when I tried out the beta awhile back. The Start screen is made up of tiles that are easy to click on. It is great for a touch interface on devices like tablets and smart phones. There is even the usual Windows desktop behind it but even there it lacks a Start button...
So how are you faring with all these new user interfaces? Are you finding it as frustrating as I do having to learn a new UI just to make use of the latest operating systems? The problem we all encounter is that new software and updated software is targeting the latest operating system."

Source: http://electronicdesign.com/blog/altembedded-6/embedded/kde-windows-8-changing-user-interface-74676

His remark "The problem we all encounter is that new software and updated software is targeting the latest operating system" is a chance: we don't have to target the latest operating system. Looks like we are doing a favor to a lot of people when our software is still working on Windows XP. We should do this as a unique selling point.

When recognizing that Windows 7 sometimes doesn't like TI's LaunchPad drivers, and Windows 7 tells me with a popup "The best driver software for your device is already installed - Windows has determined the driver software for your device is up to date", I decided to ignore this ignorance and stay with Windows XP for flashing 4E4th onto the LaunchPad - with 4E4th running on the target, only a Terminal or a Terminal emulator is needed to work with it.

Hugh Aguilar

unread,
Nov 23, 2012, 8:58:40 AM11/23/12
to
On Nov 20, 3:48 am, an...@mips.complang.tuwien.ac.at (Anton Ertl)
wrote:
> Bernd Paysan <bernd.pay...@gmx.de> writes:
> >I'm for automatic memory deallocation, as it reduces the burden of the
> >programmer, but IMHO, reference counting is the more Forthy way.
>
> I don't see that at all.  A DUP of an address will increase the
> reference count and thus become an expensive operation.  Also, given
> the lack of type checking in Forth, how do you know that the DUP
> duplicates an address and not just something that looks like one?

I agree with Anton --- this isn't going to work in Forth because the
data on the stack doesn't have any tags to tell us what it is ---
there is no way to distinguish between integers and addresses or
anything else.

If you want data with tags, then use Scheme or Factor or some such
language. Those are good languages for desktop-computer programming.
Forth is for micro-controller programming and only incidentally also
runs on desktop-computers --- therefore Forth doesn't have the
niceties of Scheme etc., but only has what works on micro-controllers.

> Conservative garbage collection fits ok into Forth.  If you want it
> more Forthy, I think the way to go is to be less automatic.  You still
> want to avoid the problems of ALLOCATE and FREE, though.  One
> promising approach is region-based allocation, but I have yet to see
> that promise turned into a useful region allocation library for Forth.

I'm not planning on supporting GC in Straight Forth --- I might have
something along the lines of this region-based allocation though.

In regard to closures, I have heard it suggested (over on
comp.lang.asm.x86 or alt.lang.asm by BGB) that they be stored in the
heap and GC'd. I will do something similar in Straight Forth. In this
case, it is easy to know if they are still in scope or not (when the
function that created them dies, they all die). This isn't the entire
closure function --- that is compiled into the dictionary just like
any function --- this is only the small piece of code that calls the
closure and gives it the pointer to the parent function's local
variables. They don't have to be stored on the heap (BGB is only doing
that because he has a heap and GC already, because he is writing a
scripting language), but they can be stored on the locals' stack along
with the locals. That is my thinking anyway --- I haven't yet
implemented this --- I'm still working on low-level stuff.

I think that Elizabeth Rather's idea of using PAD is very bad. There
is too much chance that you will be using PAD and will call a sub-
function that also uses PAD, and you will get your data overwritten.
Simplistic ideas like this may work in her novice class where all of
the programs written are small enough to fit on the chalkboard, but
your code has to be more robust than that if you expect to write
actual programs. This isn't the 1970s anymore.

Marcel Hendrix

unread,
Nov 25, 2012, 3:56:24 AM11/25/12
to
an...@mips.complang.tuwien.ac.at (Anton Ertl) writes:
> "Elizabeth D. Rather" <era...@forth.com> writes:
>>On 11/19/12 4:25 AM, Anton Ertl wrote:
>> Well, it depends on the application. In many cases I just allocate
>>> (with ALLOCATE or ALLOT, whatever is convenient), and never free it.
>>> For libraries where I don't know how it is used, I FREE ALLOCATEd
>>> memory, so that the library is more generally useful. For some
>>> applications, limiting oneself to using ALLOT is appropriate. Horses
>>> for courses.
>>
>>If you're not going to bother to FREE ALLOCATEd space, why are you using
>>ALLOCATE? Why not just ALLOT?
>
>SwiftForth i386-Linux 3.2.1 28-Dec-2009
>100000000 allocate throw ok
>. -248688632 ok
>
>SwiftForth i386-Linux 3.2.1 28-Dec-2009
>100000000 allot Dictionary full

What about (untested)

: ALLOT DUP UNUSED U> IF 2* ALLOCATE THROW DP ! ELSE ALLOT ENDIF ;

Does this work for the existing Forth implementations?

gForth needs a small amount of work:

Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
: ALLOT DUP UNUSED U> IF 2* ALLOCATE THROW DP ! ELSE ALLOT ENDIF ; redefined allot with ALLOT ok
unused . 3980094 ok
8000000 allot ok
dp ? 2108882952 ok
here 80 dump
7DB30008: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30018: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30028: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30038: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30048: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
ok
unused ?
:6: Invalid memory address
unused >>>?<<<
Backtrace:
here 80 dump
7DB30008: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30018: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30028: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30038: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30048: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
ok
s" hello" here place ok
here 80 dump
7DB30008: 05 68 65 6C 6C 6F 00 00 - 00 00 00 00 00 00 00 00 .hello..........
7DB30018: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30028: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30038: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
7DB30048: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
ok
: .hello cr ." Hello, world!" ;
:10: Dictionary overflow
: >>>.hello<<< cr ." Hello, world!" ;
Backtrace:
$7EBA5F6C throw
$7EBA5FE0 allot
$7EBA62CC ,
$7EBA6338 header,
$7EBA7958 header

-marcel

Marcel Hendrix

unread,
Nov 25, 2012, 4:20:32 AM11/25/12
to
Mark Wills <forth...@gmail.com> writes Re: Windows8
In iForth you can have CREATE .. FORGET> .. DOES> .. , where FORGET>
is your (optional) ".die method". It is triggered by FORGET being
executed. You can 'force' a FORGET> part on any word with <xt>
IS-FORGET> name (e.g. for vectorizing words or BYE). As long as you
don't do anything silly directly from the command line, any action
can be properly undone or cleaned up.

In addition to this, words can also subscribe to init (bootup) and
exit (BYE) chains.

-marcel


Bernd Paysan

unread,
Nov 25, 2012, 10:46:53 AM11/25/12
to
Marcel Hendrix wrote:
> unused ?
> :6: Invalid memory address
> unused >>>?<<<

Unused returns a value, not an address. But then, of course you can't
just set dp to some region and expect unused and the dictionary full
check to work.

usable-dictionary-end

is a deferred word that does return the actual end of the dictionary.
Use that if you want to use allocate to get more dictionary.

Doug Hoffman

unread,
Nov 26, 2012, 11:44:47 AM11/26/12
to
On 11/19/12 5:52 PM, Paul Rubin wrote:

> If the pattern of allocation is
> complicated enough that you start wanting a computer to keep track of
> it, then why not do exactly that, and let the computer keep track of it
> so you don't have to? Use the Force, Luke. The power of garbage
> collection is within you. ;-)

OK. Believing in giving different approaches a serious try, I have
spent some time with a (Anton Ertl's) GC package. First let me
complement Anton on what appears to be a solid and functional extension.
In short I was pleasantly surprised at how well the GC works and have
softened my personal opinion of the GC approach. I will consider it for
future projects.

However, I did experience some "issues". Granted, these issues surfaced
when attempting to convert non-trivial previously written code that used
ALLOCATE RESIZE FREE. Had the code been written from the start with GC
in mind I expect it would have been much easier.

The "issues" (these are not bugs, just details that require care when
converting code to GC):

- I have written Forth object extensions and the usual complaint has
been they are too large. So as a follow up I have written a
"minimalist" objects extension. It uses ALLOCATE RESIZE FREE for
dynamic objects and is pretty small (about 30 lins of code). In order
to use GC with it one must first load the GC code which is about 5 times
the size of the objects package. This doesn't bother me but some might
not like it. Perhaps if GC were part of the ANS standard and most
mainstream Forths had it already loaded in the kernel or whatever this
would not cause anyone heartache.

- One must manually take care of a "GC resize". Not a huge deal, but it
does slow things down. Not sure how to write dynamically resizable
entities without a resize function.

- 0 ALLOC will crash if done more than once without resizing ( 0
ALLOCATE will not). So one cannot just replace ALLOCATE with ALLOC.
Probably best to avoid 0 alloc altogether.

- Often, when "cleaning up" data such as when closing a file, at the
same time one uses FREE one also might be resetting variables to 0 or
some other initial state. My code does this a lot. So eliminating
"free" type methods or routines must be done with care to make sure that
one is not also eliminating data state resetting.


Again, none of the above is a condemnation of GC. But when converting
to GC it is not a trivial process and quite a bit of care must be taken.

Thanks for the thoughtful explanations. I will consider GC in future
projects where I see the need and a good fit.

-Doug

Paul Rubin

unread,
Nov 26, 2012, 2:44:21 PM11/26/12
to
Doug Hoffman <glid...@gmail.com> writes:
> I have spent some time with a (Anton Ertl's) GC package... In short I
> was pleasantly surprised at how well the GC works and have softened my
> personal opinion of the GC approach.

Oh my, I had forgotten where the documentation for Anton's package was,
so I typed "Ertl garbage collection" into a search engine, and the first
hit led to this:

http://www.3000toys.com/catalog/item_detail.aspx?itemfind=ERTL39464

> I have written a "minimalist" objects extension. It ... is pretty
> small (about 30 lins of code). In order to use GC with it one must
> first load the GC code which is about 5 times the size of the objects
> package. This doesn't bother me but some might not like it.

I think in small or memory-constrained systems, there are few enough
heap objects that manually managing them isn't so bad; and at the same
time, the GC approach has enough memory cost that you don't want to use
it anyway. (The memory used by the GC itself is quite small, but
between GC runs there will be piled-up dead objects occupying memory
while they wait for collection). In larger systems where GC helps more,
150 lines of GC code doesn't seem like a big deal if the programmer
doesn't have to think about it too much after loading it.

> Perhaps if GC were part of the ANS standard and most mainstream Forths
> had it already loaded in the kernel or whatever this would not cause
> anyone heartache.

That would be interesting. I'm not privacy to the workings of the
standardization committee so I can only guess at the sorts of
conniptions that might greet such a proposal ;-).

> - One must manually take care of a "GC resize". Not a huge deal, but
> it does slow things down. Not sure how to write dynamically resizable
> entities without a resize function.

You mean you want something like an extensible array inside an object?
Yeah, if it has to stay contiguous then you have to allocate a new
larger block and copy the data. Alternatively you could allocate in
segments (or a tree structure) and have your lookup function navigate
appropriately.

> - 0 ALLOC will crash if done more than once without resizing

That sounds like a bug to me, but I haven't used the package yet.

> - Often, when "cleaning up" data such as when closing a file, at the
> same time one uses FREE one also might be resetting variables to 0 or
> some other initial state.

Some GC's allow attaching finalization code to objects, that gets called
when the object is collected, but I think that approach wouldn't work
with conservative GC, and for resources like file descriptors is too
leaky even with precise GC. So yeah, GC helps with memory management
but other sorts of resources still need manual attention ;).

> Thanks for the thoughtful explanations. I will consider GC in future
> projects where I see the need and a good fit.

Excellent, the next step is to get you using Lisp ;-).

Doug Hoffman

unread,
Nov 28, 2012, 6:35:05 AM11/28/12
to
On 11/26/12 2:44 PM, Paul Rubin wrote:
> Doug Hoffman <glid...@gmail.com> writes:

>> - One must manually take care of a "GC resize". Not a huge deal, but
>> it does slow things down. Not sure how to write dynamically resizable
>> entities without a resize function.
>
> You mean you want something like an extensible array inside an object?

Yes. Extensible strings as well (an array of chars if you will).


>> - 0 ALLOC will crash if done more than once without resizing
>
> That sounds like a bug to me

I don't think so. If we are just bumping a pointer then I would expect
two 0 alloc's to return the same value, which it does. Actually, with
the assert level set to 3 (recommended for debugging I think) a 0 alloc
will not be allowed.

-Doug

the_gavino_himself

unread,
Nov 29, 2012, 3:16:26 AM11/29/12
to mik....@googlemail.com, Di...@bruehlconsult.com
On Friday, November 2, 2012 8:41:12 AM UTC-7, visua...@rocketmail.com wrote:
> Reading a review on Windows8 tells me that Microsoft now has divided the MS-Computerworld into two parts:
>
> Windows8 for the Consumer-World and Windows7 for the Professionals,
>
> and to make it worse, the Professionals have to deal with two types of hardware: the Intel-line and the ARM - that means different assembler code, or no assembler code any more.
>
>
>
> Windows8 is not suited for Professionals until there is a Windows7-App or WindowsXP-App available, because only two Apps can be open at the same time.
>
>
>
> The era of windows, where you could open as many windows as you like, is over with Windows8. That's why I wrote Windows8 is for Consumers only.
>
> May be you get multiple windows back if you buy and install a bunch of touch screen monitors.
>
>
>
> Interesting is that traditional Windows programs may run, but in case of a crash Windows8 recovers only Windows8 apps - all other apps have to be reinstalled manually. A second option wipes everything off, including your personal settings, and you get a fresh Windows8 again as it was delivered from factory.
>
>
>
> May be there is a Windows8 upgrade soon.
>
> It's strange that people don't recognize that Windows8 isn't good for windows anymore.
>
>
>
> Sources:
>
>
>
> 10 Things You Can Get From Windows 8 That Windows 7 Just Doesn't Have
>
> http://www.hrsolutionjournal.com/launchpage.aspx?CID=347277&NUOSID=102246572
>
>
>
> Windows 8 launch is a non-event for businesses
>
> http://www.networkworld.com/community/blog/windows-8-launch-non-event-businesses
>
>
>
> What about Forth?
>
> Will there ever be a Forth for Windows8?

I hate win8. Full screen out of desktop when I open a pdf and I have to ctl-tab out of it? why not have it appear in the desktop model with a window and a taskbar icon? you bastards. I still can't switch off the small pic preview of every icon on the taskbar? ff uu!!

PS I would move to archlinux but I love myth2 and baldurs gate 1-6

Paul Rubin

unread,
Nov 29, 2012, 2:58:00 PM11/29/12
to
Doug Hoffman <glid...@gmail.com> writes:
> I don't think so. If we are just bumping a pointer then I would
> expect two 0 alloc's to return the same value, which it does.

I don't think Anton's GC allocs by bumping a pointer--it's a different
style of GC that does that. I don't see any obvious problem with
returning the same value for two 0-length allocs. It could be special
cased (there would only have to be one such object) or it could be
marked and potentially reclaimed like any other GC'd object.

Albert van der Horst

unread,
Nov 29, 2012, 8:46:39 PM11/29/12
to
In article <7x1ufcd...@ruckus.brouhaha.com>,
I see a problem, if both are placeholder for something to REALLOC.

Groetjes Albert
--
Albert van der Horst, UTRECHT,THE NETHERLANDS
Economic growth -- being exponential -- ultimately falters.
albert@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst

Paul Rubin

unread,
Nov 30, 2012, 12:14:13 AM11/30/12
to
alb...@spenarnc.xs4all.nl (Albert van der Horst) writes:
> I see a problem, if both are placeholder for something to REALLOC.

Anton's GC doesn't have REALLOC and I've never heard of a GC that has
it. You can of course use an extra pointer and a separate block where
the resizeable data is, and Anton's GC document says how to do this.
0 new messages