On Tue, Oct 20, 2009 at 7:22 AM, Charlie Lobo <charlie.lobo@xxxxxxxxx> wrote: > I'd also look into this newfangled OO thing people talk about. > Agents seem to be a pretty reasonable way to think of parallelism, and the > issues of a typing system that doesn't give preference to native types seems > reasonable. I agree completely. Bob Pendleton > > On Tue, Oct 20, 2009 at 3:29 AM, Paulo Pinto <pjmlp@xxxxxxxxxxxxx> wrote: >> >> Mostly Scala and F#, but with an eye on Haskell as well. >> >> I work on IT, and these are the languages that might eventually win the >> hearts of some programmers. >> >> Personally I would like that Scala gets ahead, specially because I am a >> Java/Python programmer by >> day. >> >> But the ML syntax has a special place on my heart, which leads me then to >> F# and Haskell, because >> my university used to have lots of classes that required the use of Caml, >> which made the syntax stick to >> my brain. Not sure if that is so positive. :) >> >> So regardless of what some people might think of Microsoft, and their >> dubious actions from time to time, >> I do appreciate the effort they are doing with F# and Haskell to make >> functional programming more mainstream. >> >> Cheers, >> Paulo >> >> On Tue, Oct 20, 2009 at 3:15 AM, Bob Pendleton <bob@xxxxxxxxxxxxx> wrote: >>> >>> On Mon, Oct 19, 2009 at 3:33 PM, Paulo Pinto <pjmlp@xxxxxxxxxxxxx> wrote: >>> > Hi Bob, >>> > >>> > those sound really nice ideas. >>> > >>> > I tend to think that many people still live on the stone age of >>> > computing by >>> > restraining themselves to C or >>> > similar languages. >>> > >>> > I rather get myself productive in a higher level language and only >>> > recode in >>> > low level language like C, the >>> > application parts that really need it. Sometimes the speed of the >>> > application is good enough and no part >>> > gets rewritten. >>> > >>> > Personally I am spending my hobby programming time with functional >>> > languages, that are seeing a renaissance >>> > with the availability of multi-core. >>> >>> Interesting. Which ones? I played with several back in the early '80s. >>> And if you count Lisp among them then I was doing Lisp going back to >>> the early '70s. The fact is that most of my best ideas are stolen >>> directly from functional languages, the concept of actors, and good >>> old communicating sequential processes. The rest are based on watching >>> humans, from second graders to post docs, from newbies to seasoned >>> software engineers, trying to write code without going nuts. >>> >>> Bob Pendleton >>> >>> > >>> > Good luck for your project, you have quite a few nice ideas. >>> > >>> > Paulo >>> > >>> > On Mon, Oct 19, 2009 at 8:36 PM, Alan Wolfe <alan.wolfe@xxxxxxxxx> >>> > wrote: >>> >> >>> >> "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" >>> >> >>> >> "I want message passing and >>> >> multithreading to be so intrinsic in the language that you get them >>> >> without even thinking about it." >>> >> >>> >> Honestly i was thinking "great, yet another language!" when i started >>> >> reading but your ideas are interesting and i think there's some good >>> >> potential here (: >>> >> On Mon, Oct 19, 2009 at 11:18 AM, Bob Pendleton <bob@xxxxxxxxxxxxx> >>> >> wrote: >>> >>> >>> >>> 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 >>> >>> >>> >>> >>> >> >>> > >>> > >>> >>> >>> >>> -- >>> +----------------------------------------------------------- >>> + Bob Pendleton: writer and programmer >>> + email: Bob@xxxxxxxxxxxxx >>> + web: www.TheGrumpyProgrammer.com >>> >>> --------------------- >>> 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