[gameprogrammer] Re: Daydreaming, questioning....

  • From: Bob Pendleton <bob@xxxxxxxxxxxxx>
  • To: gameprogrammer@xxxxxxxxxxxxx
  • Date: Mon, 19 Oct 2009 13:18:41 -0500

Thanks to everybody who replied. I haven't replied because I figured I
needed some time to let my fevered imaginings simmer down.

I'm going with the language #4 plus muxing in some of #5.

A bunch of you expressed interest in helping with the stonewolf
programming language. So, I'm going to post my thoughts on the subject
here and see what you folks think about what I want to do.

First off, what am I thinking about, why do I think we need a new
language? There are lots of reasons. Most of them are outside of what
is IMHO the "normal" way of looking at programming languages.

First off, the majority of languages (I almost said *all* but I do not
know *all* languages) were designed around the idea that resources are
scarce. Think about C and C++. C was designed in the '72 and C++ was
designed starting in '79. In '79 I bought 16 kilobytes of ram for my 2
megahertz z80 for $110 which is $327 in 2009 dollars. In '72 I could
not afford to buy 16KB of ram. It was too expensive.

OTOH, a little over a month ago I bought 4 gigabytes of RAM for $50.
That 2009 $50 has the same buying power as $9.68 in '72 and $16.82 in
'79 (we had a lot of inflation during the '70s).

What is my point? Those two languages were designed when a megabyte
was a *huge* amount of memory. In the '70s the hacker slang for a
megabyte of RAM was "moby" as in the great white whale. The basic
assumption forced on language designers was that memory was scarce and
expensive. The same goes for processors. My aging AMD 64 dual core
processor has more computing power than was available from all the
computers on my university campus combined. The computer graphics chip
on my mother board was literally science fiction in the '70s. Top of
the line multimillion dollar graphic displays were used in the 1982
movie "Wrath of Kahn". Right now you can get better graphics
technology for $10 in the discount bin at Goodwill.

Another scarcity assumption drove the complete separation of
C/C++/Java from their libraries. C was designed for embedded systems,
telephone switches, where you could not assume that you would have a
keyboard, or a disk, so all I/O was removed from the language. The
same happened for things like the math library. In the bad old days
only expensive mainframes (multimillion dollar machines) had floating
point hardware. Even some of the biggest supercomputers didn't have a
hardware floating point divider. You kept as much out of the language
as possible because a runtime library couldn't add more than a few
kilobytes to user programs if you expected the programs to fit in
memory. Now days I can have hundreds of megabytes of runtime library
and it won't affect my ability to run a program. In the future I can
have a multigigabyte runtime and not worry about it at all.

Even though languages like Java and C# were designed much later they
carry forward a bunch of the assumptions of scarcity found in older
languages like C and C++.

The result of these assumptions is that programmers have to spend a
great deal of time worrying about things like "does the interface use
and int16 or an int32?". Why should I have to do that? Why not just be
able to use a "number"? Why should I care how it is represented? I
want to break all the assumptions I see built into these languages.
Why did I have to write my net2 library? Why shouldn't a modern
language just support asynchronous network IO the way it supports
doing a floating point divide?

Ok, a bunch of you just went Huh? what about efficiency? Well the way
I see it is we will have at least two levels of programming going on.
Just like we currently do with game engines. One level of programming
worries about making things super efficient so the game runs fast
enough, these are the engine programmers. The other level are the so
called scripters. These are people who actually write the game but
they do it in a language like Lua or Python that is embedded in the
game engine. The scripters don't have to worry so much about the
efficiency of their code because it is all written to use highly
efficient code that already exists. If the scripters need a new
feature they don't usually write it in the scripting language, they
get someone else to write it in a language like C++ and add it as an
interface that they can use.

One way to think of it is to think of a language with all the parts
(and much more) of a game engine built into the language rather than
having a language built into a game engine. I really want a lot more
than that.

What I want is a language that is designed to make use of massive
amounts of memory and hundreds or thousands of hardware threads that
contains all the libraries I am likely to ever need and the ability to
easily integrate libraries I didn't imagine I would ever need.

Yeah, but what about efficiency? Let's define language efficiency as
the amount of your life you have to spend to write a program a
complete program. Or, as the ratio of the number of programs you can
write in a year using different languages. If I can write one major
program a year in C, and 1.5 per year in C++ then I want to be able to
write 10 in Stonewolf. Which would make Stonewolf 10 times more
efficient in terms of my life span than C. (BTW, if Stonewolf actually
lets me get to 3 I would consider it a wonderful achievement.)

I also want to get as far away from C based syntax as I can without
creating something worse. I want control structures that can be
automatically converted into high level parallel code. I want to make
executable code a true full fledged data type so it is easy to
replicate it across a "cloud" and to make it part of a class in a
database. I want unicode to be built in from the beginning and not
tacked on as an after thought. I want message passing and
multithreading to be so intrinsic in the language that you get them
without even thinking about it.

So, that is what I want, what do you think?

Ok, I thought I would start out with a fevered rant and see what kind
of a reaction I get. I have actually been writing a speculative
specification in fits and starts for 5 or 6 years. I'm holding off on
posting any of that because I want to get other people thinking about
all this without tainting your imaginations.

Currently I'm messing around with what I call plumbing code just
trying to see what I can do to make it fit into a Unicode world. I
haven't found a suitable parser generator, I'm real picky about error
reporting and recovery, so I'm planning to just do a hand coded
recursive descent parser. And, I'm committed to using C++ as the
implementation language. Lots of good reasons for using C++. The best
one being that C++ makes a great extension language for Stonewolf.

Bob Pendleton


On Fri, Sep 18, 2009 at 1:36 PM, Sami Näätänen <sn.ml@xxxxxxxxxxxxxxx> wrote:
> On Thursday 17 September 2009 20:00:59 Bob Pendleton wrote:
>> Ok, so I'm sitting here thinking about what I am going to work on
>> next. Right now I am finishing up work on atomic ops for SDL 1.3 and I
>> have promised to work on multiple device handling for SDL 1.3 on
>> Linux. (it is sort of messed up right now.) But, that won't take a lot
>> of time, I hope, so I'm thinking about new projects. So, I thought I
>> would ask what you folks thought about some ideas and see if maybe
>> y'all could make some suggestions?
>>
>> In no particular order....
>>
>> 1) Write the space war game I always wanted to write. Yeah, that one,
>> or is it three? No, I think there are least 20 games in that bag.
>>
>> 2) Write yet another 3D drawing/layout program. This would be the kind
>> of program you need for drawing 3D items and doing level layout and
>> design. Trouble is there are a million of these. Reason for doing it:
>> I've never seen one that took less than *months* to learn to use. Or,
>> they only run on Windows or Mac so I've never tried them :-).
>>
>> 3) Build a planet sim so you can create game worlds without having to
>> do it by hand. This one popped out while I was thinking about #1. I
>> spent a lot of time learning just how hard it is to subdivide a
>> sphere. Spheres are really nasty.
>>
>> 4) Stonewolf, the programming language:  I have started at least 8
>> times to develop a language designed for multimedia apps whose design
>> is aimed at the future, not the past. Designed for 64 bit address
>> spaces, terabyte disks, and hundreds of cores. I have settled on the
>> name, Stonewolf. Two things that a language needs are a cool name and
>> a developer with a beard. Seriously, look it up. All the cool
>> languages were developed by people with beards. The name is important
>> too. Consider that three of the greatest languages in the history of
>> computing, Lisp, Scheme, and Smalltalk, were all pretty much killed by
>> their names. No real programmer wants to spend all day lisping,
>> scheming, or making smalltalk.
>>
>> 5) Spend the time meditating, reading sutras, and practicing Kung Fu.
>> At least I would feel a lot better :-)
>>
>> Except for #5, I would, of course, blog writing and otherwise make
>> lots of noise about what I was doing.
>>
>> Comments? Flames?
>
> Well I would do 4th first.
> Then use it to do 1st and give the first try for the language (As a proof that
> it is complete).
> Now it is time to do the 2nd and 3th in parallel using Stonewolf of course.
>
> Oh and mux some 5 to the whole period to balance everything.
>
> PS. I would like to help as much as I can manage in that language design and
> development.
>
> ---------------------
> To unsubscribe go to http://gameprogrammer.com/mailinglist.html
>
>
>



-- 
+-----------------------------------------------------------
+ Bob Pendleton: writer and programmer
+ email: Bob@xxxxxxxxxxxxx
+ web: www.TheGrumpyProgrammer.com

---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html


Other related posts: