473,432 Members | 1,386 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,432 software developers and data experts.

C++ sucks for games

Hey

Recently, I researched using C++ for game programming and here is what
I found:

C++ game developers spend a lot of their time debugging corrupted
memory. Few, if any, compilers offer completely safe modes.

Unsurprisingly, there is a very high failure rate among projects using
C++ for modern game development.

You can not even change function definitions while the program is
running and see the effects live (the ultimate debugging tool).

Alternatively, you can't execute a small portion of the program
without compiling and linking the whole thing, then bringing your game
into a specific state where your portion of the code is being executed.

The static type system locks you into a certain design, and you can't
*test* new ideas, when they come to you, without redesigning your
whole class hierarchy.

C++ is so inflexible, even those who do use it for games, have to
write their game logic in some other language (usually very slow,
inexpressive and still garbage collected). They also have to interface
the two languages.

C++ lacks higher-order functions. Function objects emulate them
poorly, are slow and a pain to use. Additionally, C++ type system does
not work well with function objects.

C++ programs can not "think" of new code at run-time, and plug that
new code into themselves in compiled form. Not easily, anyway.

C++ coding feels very repetitive, for example, when writing class
accessors, you often have to write const and non-const methods with
completely identical function bodies. Just look at STL.

When programming in C++ you feel like a blind person trying to draw
something. You don't _see_ the data structures that your procedures
will operate on. Lisp programming is much more visual.

Constructors and smart pointers make it hard to tell cheap operations
from expensive ones.

C++ lacks automatic memory management and so it encourages copying
objects around to make manual memory management manageable.
Reference-counting schemes are usually slower than modern garbage
collectors and also less general.

Most important, C++ syntax is irregular, and you often find yourself
typing repetitive patterns again and again - a task easily automated
in languages with simpler syntax. There are even books on C++
patterns, and some C++ experts take pride in being able to execute
those patterns with computer-like precision - something a computer
should be doing to begin with.

C++ programs are slow: even though the compilers are good at
micro-optimizing the code, programmers waste their time writing
repetitive patterns in C++ and debugging memory corruption instead of
looking for better algorithms that are far more important for speed
than silly micro-optimizations.

It's hard to find good programmers for C++ projects, because most of
the good programmers graduated to languages like Lisp or avoided C++
altogether. C++ attracts unimaginative fellows with herd mentality.
For creative projects, you want to avoid them like a plague.

It is my opinion that all of the above makes C++ a very bad choice for
commercial game development.
Jul 22 '05
761 27930
On Fri, 12 Nov 2004 18:01:22 GMT, Wade Humeniuk
<wh**********************************@telus.net> wrote:
Kenneth Tilton wrote:
Well, no, the last bit is exactly the issue, and has not been
established by the Concentration shoot-out.


Speaking of which. I thought I would write one. LispWorks CAPI
Concentration version. Developed and tested on Windows. But should
work (may need some minor mods) on Mac and Linux.

http://www3.telus.net/public/whumeni...entration.lisp

Wade


Nice!
Amazing how short that program was.
Wouldn't have thought to use the WebDings font :)

--
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
Jul 22 '05 #551
On Fri, 12 Nov 2004, Trent Buck wrote:
Quoth Philippa Cowderoy on or about 2004-11-11:
Personally I use [Windows] because ... I
can't be bothered to figure out how to duplicate my desktop setup under X.


You shouldn't duplicate you Windows desktop, you should improve upon it :-)


I'm aware there's more possibility under X, but there's not much beyond
the windows desktop and a rearrangeable taskbar I need. Though I guess
it'd be nice to be able to drop app windows into splitter panes - IIRC
it's Ion I should play about with for that? A big issue for me is
notification from apps that don't have the focus, I effectively run
everything maximised and swap between what may as well be screens.

A friend on IRC's offered to help out when I next feel like booting a *nix
flavour on here, I'll be taking him up on it at some point.

--
fl****@flippac.org
Jul 22 '05 #552
Philippa Cowderoy wrote:
<snip>

I'm aware there's more possibility under X, but there's not much beyond
the windows desktop and a rearrangeable taskbar I need. Though I guess
it'd be nice to be able to drop app windows into splitter panes - IIRC
it's Ion I should play about with for that?

I use Ion3. It allows you to have both non-floating windows split into
frames, and you can also have a more traditional 'floating' desktop as
well, either at the same time or in different workspaces.

.A big issue for me is
notification from apps that don't have the focus, I effectively run
everything maximised and swap between what may as well be screens.


Ion has a tatle bar for each app (which end up looking like 'tabs' when
one has multiple apps open. When a dialog pops up on an app that does
not have focus, the titlebar turns red. that's god enough for me.

Ion is also scriptable in Lua, which should be well known to game
developers. I have a few crazy lua hacks to set up my environment for
lisp hacking to be just the way i like it!

I love ion3, as i never use the rodent, and can't stand windows that
overlap.

drewc
Jul 22 '05 #553
On Fri, 12 Nov 2004 21:59:42 GMT, drewc <dr***@rift.com> wrote:
Philippa Cowderoy wrote:
<snip>
I'm aware there's more possibility under X, but there's not much beyond
the windows desktop and a rearrangeable taskbar I need. Though I guess
it'd be nice to be able to drop app windows into splitter panes - IIRC
it's Ion I should play about with for that?


I use Ion3. It allows you to have both non-floating windows split into
frames, and you can also have a more traditional 'floating' desktop as
well, either at the same time or in different workspaces.

>.A big issue for me is
> notification from apps that don't have the focus, I effectively run
> everything maximised and swap between what may as well be screens.


Ion has a tatle bar for each app (which end up looking like 'tabs' when
one has multiple apps open. When a dialog pops up on an app that does
not have focus, the titlebar turns red. that's god enough for me.

Ion is also scriptable in Lua, which should be well known to game
developers. I have a few crazy lua hacks to set up my environment for
lisp hacking to be just the way i like it!

I love ion3, as i never use the rodent, and can't stand windows that
overlap.

drewc


Funny.. Sounds like my Windows desctop ;)

--
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
Jul 22 '05 #554
Pascal Bourguignon wrote:
...
Either you have to buy Solaris/sparc, a Macintosh, or build yourself
your PC from parts, to avoid the Microsoft tax.


i bought my last two systems from local stores that put them together
according to specs. they charged extra if you wanted windows installed
(the official price, >$200), but were happy to sell you a bare system
without charging for windows

hs
Jul 22 '05 #555
John Thingstad wrote:
Nice!
Amazing how short that program was.
Wouldn't have thought to use the WebDings font :)


I took some time and delivered it as a standalone exe for
windows for those who do not have LWW (even the evaluation
version). Delivery means the lisp image is shaken of uneccessary
functionality before being saved.

http://www3.telus.net/public/whumeniu/concentration.zip

It is a 1.6 MB zip file. The delivery file is included. If
any wants to (and can) deliver a Mac or Linux version, be my guest.
I have lost my icon editor somewhere along the way, so I have
just defaulted the icon to the LW icon.

The actual fsl (compiled lisp file) is 27,133 bytes
The exe size is 4.12 MB. Essentially most of the exe is the
minimal runtime lisp image.

Unzip wherever you like. The executable is concentration.exe

Wade

Jul 22 '05 #556
Also if looking for other LispWorks for Windows Apps see:

http://www.download.com/The-Runner-s...ml?tag=lst-0-1

Its a Runner's Log program I wrote a while ago (as my first Common Lisp program
and an exercise to learn LW and CAPI).
It is a much more complex app than the concentration one.

Wade
Jul 22 '05 #557
On Fri, 12 Nov 2004, drewc wrote:
Ion has a tatle bar for each app (which end up looking like 'tabs' when
one has multiple apps open. When a dialog pops up on an app that does
not have focus, the titlebar turns red. that's god enough for me.


Is there a decent way of getting an IRC client to turn the titlebar red or
similar on eg receipt of any private message going to a window that
doesn't have focus?

--
fl****@flippac.org
Jul 22 '05 #558
In article <MP************************@news.indigo.ie>,
ge****@DELETETHISindigo.ie says...
[...]
But they don't address the point I was making:

"The time it takes to sling together a few algorithms and produce a
basic pre-designed game is insignificant. Even if Lisp were ten times
more productive in this regard, it wouldn't make any difference. [...]
Productivity in messing around with small programs that are not for
general release is not really an advantage."


Tell me, is your point based on:

a) your extensive experience writing large programs,
b) your extensive experience with Lisp, or perhaps
c) your complete lack of experience with either.
Christer Ericson
Sony Computer Entertainment, Santa Monica
Jul 22 '05 #559
Gerry Quinn <ge****@DELETETHISindigo.ie> wrote in message news:<MP************************@news.indigo.ie>.. .
In article <20*********************@harpo.marx>,
NO************@bigpond.com says...
Quoth Gerry Quinn on or about 2004-11-11:
But this is the thing - you go on about how Lisp is "so much more
productive" but there's no evidence of it! My 'Concentration' clone
(see else-thread) is about the same length as Michael Naunton's and took
about the same time to write.


Someone looking to get flamed might suggest that this is in part because
the program is small -- there is no need for capabilities Lisp provides.

I'm a pretty new to Lisp, but I can immediately an advantage Lisp has
over C/C++: there are demonstrably things that can be expressed in Lisp
but not in C / C++.


But there are no *tasks* fitting that description (hello, Turing-
complete).


Hahaha. In these newsgroups related to advanced programming languages,
there is a law in effect very similar to Godwin's. Namely, as the
thread grows longer, the probability approaches one of someone
invoking Turing equivalence as an argument against statements about
different languages having different expressiveness. The associated
tradition is identical.
Jul 22 '05 #560
Quoth Philippa Cowderoy on or about 2004-11-12:
Personally I use [Windows] because ... I can't be bothered to
figure out how to duplicate my desktop setup under X.

You shouldn't duplicate you Windows desktop, you should improve upon it:-)

Though I guess it'd be nice to be able to drop app windows into
splitter panes - IIRC it's Ion I should play about with for that?


Ion or WMI, or ratpoison or stump (see previous post).

- Ion is the oldest and most featureful, it uses Lua (turing-complete) for
configuration. It is relatively difficult to configure.

- Ratpoison is newer and more minimalist, it uses a simple command set
based on GNU Screen, and it feels a lot like screen / emacs. It
relies on forking to a shell for flow-control.

- WMI is based on Ion and Ratpoison, but it feels like vi rather than
emacs.

- StumpWM is basically ratpoison **written in Common Lisp + CLX**.

I've found ratpoison is quite easy to test new WM ideas in; I wrote a
script to make it do the Exposé thing, for example. Real soon now I'm
going to get StumpWM to load, then it's going to be *really* fun.

-trent
Jul 22 '05 #561
In article <b2*************************@posting.google.com> ,
jc*****@taeus.com says...
Sashank Varma <no**@vanderbilt.edu> wrote in message news:<no************************@news.vanderbilt.e du>...

You have a real problem facing discomfirming evidence.


You seem to have a real problem facing logic. It's true that
well-written programs can produce garbage output (typically when given
bad input). It's also true that this program produces garbage output.


That is rather harsh. As I said earlier, AARON seems to show some
capability in the realm of overall picture composition, which is a
separate issue from the parameterised drawings.

As to whether it is art, my own view is that AARON itself can certainly
be considered a piece of conceptual art, whatever about its works. I
don't think they qualify.

My Brewster screensaver is effectively based on parameterised functions,
and it frequently produces very beautiful images. But I don't consider
them to be art.

Gerry Quinn
http://bindweed.com
Games, Kaleidoscopes, Screensavers

Jul 22 '05 #562
In article <MP************************@news.verizon.net>,
ch**************@NOTplayTHISstationBIT.sony.com says...
In article <MP************************@news.indigo.ie>,
ge****@DELETETHISindigo.ie says...
[...]
But they don't address the point I was making:

"The time it takes to sling together a few algorithms and produce a
basic pre-designed game is insignificant. Even if Lisp were ten times
more productive in this regard, it wouldn't make any difference. [...]
Productivity in messing around with small programs that are not for
general release is not really an advantage."


Tell me, is your point based on:

a) your extensive experience writing large programs,
b) your extensive experience with Lisp, or perhaps
c) your complete lack of experience with either.


It is based on my extensive experience in writing programs that are
large compared to the toy programs being discussed.

Christer, I suggest you back off. I didn't insult you when you made a
fool of yourself on the "Fibonacci Serie : looking for a fast recursive
algorithm" thread on c.g.d.p.algorithms a few weeks ago, even though you
gave the distinct impression of having jumped in simply to seize what
seemed like an opportunity to prove me wrong. [Well, having failed on
algorithmic complexity theory, you DID eventually get me on a spelling
error. Kudos, man.]

If you have something interesting to contribute about the benefits or
otherwise of Lisp for games development, or an argument other than ad
hominem as to why the point I make above is invalid, I am sure we would
all enjoy reading it.

- Gerry Quinn



Jul 22 '05 #563
In article <Xrcld.82963$E93.76214@clgrps12>, whumeniu-delete-this-
an*************@telus.net says...
I took some time and delivered it as a standalone exe for
windows for those who do not have LWW (even the evaluation
version). Delivery means the lisp image is shaken of uneccessary
functionality before being saved.

http://www3.telus.net/public/whumeniu/concentration.zip

It is a 1.6 MB zip file. The delivery file is included. If
any wants to (and can) deliver a Mac or Linux version, be my guest.
I have lost my icon editor somewhere along the way, so I have
just defaulted the icon to the LW icon.


Well, that is certainly small enough to make Lisp viable for shareware
authors. And the program beats Michael's and mine for size.

One minor gameplay consideration - it would be nice if clicking on a new
tile aborted the two-second display, which otherwise is a bit
frustrating. But perhaps that only shows I am a bit too old for this
game...

I used WebDings on a game myself once. It's a handy way to get some
cheap and cheerful graphics.

- Gerry Quinn
Jul 22 '05 #564
In article <cf*************************@posting.google.com> ,
ka*@ashi.footprints.net says...
Gerry Quinn <ge****@DELETETHISindigo.ie> wrote in message news:<MP************************@news.indigo.ie>.. .
In article <20*********************@harpo.marx>,
I'm a pretty new to Lisp, but I can immediately an advantage Lisp has
over C/C++: there are demonstrably things that can be expressed in Lisp
but not in C / C++.


But there are no *tasks* fitting that description (hello, Turing-
complete).


Hahaha. In these newsgroups related to advanced programming languages,
there is a law in effect very similar to Godwin's. Namely, as the
thread grows longer, the probability approaches one of someone
invoking Turing equivalence as an argument against statements about
different languages having different expressiveness. The associated
tradition is identical.


But the point I am making is that Turing-completeness implies that all
*tasks* can in fact be expressed without using any singular
expressiveness feature of Lisp. The issue is whether a large proportion
of tasks can be 'naturally' expressed in a form unique to Lisp, and in
no other way. In other words, what tasks 'naturally' require Lisp'd
unique features, and are much harder to express without them?

I don't see why many games should have such a property.

- Gerry Quinn
Jul 22 '05 #565
Quoth Gerry Quinn on or about 2004-11-13:
The issue is whether a large proportion
of tasks can be 'naturally' expressed in a form unique to Lisp, and in
no other way. In other words, what tasks 'naturally' require Lisp'd
unique features, and are much harder to express without them?


s/require/leverage/. There is a significant difference between X
`requiring' Y and X being able to take advantage of Y. Whether
deliberately or accidentally, you seem to be conflating these two
distinct relations.

I haven't enough experience with lisp to give good examples of tasks
that leverage Lisp extras. I will give some poor examples instead.

I earlier mentioned specialization of flow control structure[0], which
cannot be written correctly in C or C++. Another is return-from, which
can only be approximated in C / C++ with the goto operator.

From any perspective, which is easier to read?:

dotimes (i, 10)
printf ("%d", i);

for (i=0; i<10; ++i)
printf ("%d", i);

-trent
[0] See doseq() in http://144.132.79.25/~twb/src/common/augment.h
Jul 22 '05 #566
On Sat, 13 Nov 2004 13:22:20 -0000, Gerry Quinn
<ge****@DELETETHISindigo.ie> wrote:

But the point I am making is that Turing-completeness implies that all
*tasks* can in fact be expressed without using any singular
expressiveness feature of Lisp. The issue is whether a large proportion
of tasks can be 'naturally' expressed in a form unique to Lisp, and in
no other way. In other words, what tasks 'naturally' require Lisp'd
unique features, and are much harder to express without them?

I don't see why many games should have such a property.

- Gerry Quinn


Ever seen repetitive code.
Lisp macro facility can automate much of this.
Ever spent half the time writing code to
check values and return values?
There reason you can't see it probably lack of experience
and that you don't know what to look for..

Paul Graham's "On Lisp" might give you some ideas.
http://www.paulgraham.com/onlisp.html
similarly
http://www.gigamonkeys.com/book/
shows you some practical examples on applying Lisp to a problem.

Lisp is more than the sum of it's parts.
You have to use it for a while to get the picture.

--
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
Jul 22 '05 #567
Pascal Bourguignon <sp**@mouse-potato.com> wrote in message news:<87************@naiad.informatimago.com>...

[ ... ]
It depends in what universe.

There are: (expt (expt 2 24) (expt 2 22)) 4-Mpixel 24-bit color
pictures. That's about (expt 10 30000000) Since there's only about
(expt 10 17) seconds in the universe (or at most (expt 10 19)), you
just DON'T have sufficient time. That's why you need to be scient
to produce something worth looking at.


While you're math is correct, it's only distantly related to the right
math to do. Basically, your math would be right IF you were talking
about randomly producing one specific output. The problem is that
there are MANY possible 4 megapixel pictures worth looking at. As
such, the correct question has little to do with the total number of
possiblities, and a great deal to do with the _percentage_ that are
worth looking at -- if 90% of the possible outputs qualified as art,
then random generation would typically do the job in a few seconds.
If, OTOH, only one in 2^256 arrangements is worth looking at, then the
chances of producing something interesting before the second law of
thermodynamics has its ultimate triumph are slim indeed.

The fact remains, that regardless of how unlikely it is (and I'll
openly grant that it's extremely unlikely), even the most remote
possibility is still better than none at all.

--
Later,
Jerry.

The universe is a figment of its own imagination.
Jul 22 '05 #568
Gareth McCaughan <ga**************@pobox.com> wrote in message news:<87************@g.mccaughan.ntlworld.com>...

[ ... ]
Well, Harold Cohen was a pretty eminent artist before he
started working on AARON. He's a professor at UCSD. It's
possible that he's "incapable of recognizing art when he
sees it", but it doesn't seem very plausible.


Rather the contrary. IMO, being recognized as an "eminent artist"
among academia (at least at the presnt time) is nearly a guarantee of
exactly the opposite.

The fact is that if my preschool nephew had painted one of these, I'd
consider it fair -- but I definitely expect (and see) better out of
his 9 year-old brother.

--
Later,
Jerry.

The universe is a figment of its own imagination.
Jul 22 '05 #569
jc*****@taeus.com (Jerry Coffin) writes:
Pascal Bourguignon <sp**@mouse-potato.com> wrote in message news:<87************@naiad.informatimago.com>...

[ ... ]
It depends in what universe.

There are: (expt (expt 2 24) (expt 2 22)) 4-Mpixel 24-bit color
pictures. That's about (expt 10 30000000) Since there's only about
(expt 10 17) seconds in the universe (or at most (expt 10 19)), you
just DON'T have sufficient time. That's why you need to be scient
to produce something worth looking at.


While you're math is correct, it's only distantly related to the right
math to do. Basically, your math would be right IF you were talking
about randomly producing one specific output. The problem is that
there are MANY possible 4 megapixel pictures worth looking at. As
such, the correct question has little to do with the total number of
possiblities, and a great deal to do with the _percentage_ that are
worth looking at -- if 90% of the possible outputs qualified as art,
then random generation would typically do the job in a few seconds.
If, OTOH, only one in 2^256 arrangements is worth looking at, then the
chances of producing something interesting before the second law of
thermodynamics has its ultimate triumph are slim indeed.

The fact remains, that regardless of how unlikely it is (and I'll
openly grant that it's extremely unlikely), even the most remote
possibility is still better than none at all.


The number of pictures retained in museums is closer to 1 than to any
number that would invalidate my "math".

--
__Pascal Bourguignon__ http://www.informatimago.com/
The world will now reboot; don't bother saving your artefacts.
Jul 22 '05 #570
Sorry for the delayed followup, but it seems that no one has brought up
a point I consider very important in OOP and have been frustrated by
non-observance of it numerous times.

Svein Ove Aas <sv*******@aas.no> writes:
On the subject of Lisp, though, I'd hope that most Lispers *don't* think
having closing parantheses a long way from their opener is a good thing.
Personally I always try to keep functions below a screenful, so I can see
all of it at once.

I keep telling friends not to do that in C, though, and they keep not
listening to me - even adding vertical whitespace where none is needed - so
I wouldn't be surprised at all if I someday see a 200-line Lisp function.
They probably have better memory than I do.


This is actually bad object-oriented design. Functional decomposition is
essential to having a good, extensible class where you can override just
the functionality you need to override instead of having to
copy-and-paste a massive block of code or an entire class-and-methods
definition just to tweak the way one specific bit of it works.

--
Rahul Jain
rj***@nyct.net
Professional Software Developer, Amateur Quantum Mechanicist
Jul 22 '05 #571
Gerry Quinn wrote:
Well, that is certainly small enough to make Lisp viable for shareware
authors. And the program beats Michael's and mine for size.

One minor gameplay consideration - it would be nice if clicking on a new
tile aborted the two-second display, which otherwise is a bit
frustrating. But perhaps that only shows I am a bit too old for this
game...

I have taken your suggestion and modified it slightly. Guessing is
now a button-1 press. Aborting a line of guessing is pressing button-2
or button-3 anywhere on the board.
(center and right clicks on a right-handed three button mouse).

The concentration game is written such that one can create a game
where one has to match any n tiles (where n >= 2). Its strange playing
match 3 on a 9x6 board. Makes my head hurt. The way the
game is written if 3 tiles need to match one has to get the first
two to match before one is even allowed to select a third tile. Is
this the proper rule for Concentration? (are their official rules?).

(Note: It would be fairly simple to create a delivered game where one
could change to other sized boards in the game, CAPI would allow this to happen
dynamically in the current window.)

I have made the changes and the new zip file is at the same place.

http://www3.telus.net/public/whumeniu/concentration.zip

I used WebDings on a game myself once. It's a handy way to get some
cheap and cheerful graphics.


Seemed like the easiest way to get enough variety in the game.

Wade
Jul 22 '05 #572
Jerry Coffin wrote:

[I said:]
Well, Harold Cohen was a pretty eminent artist before he
started working on AARON. He's a professor at UCSD. It's
possible that he's "incapable of recognizing art when he
sees it", but it doesn't seem very plausible.
Rather the contrary. IMO, being recognized as an "eminent artist"
among academia (at least at the presnt time) is nearly a guarantee of
exactly the opposite.


Not only among academia; also among practising artists.
The fact is that if my preschool nephew had painted one of these, I'd
consider it fair -- but I definitely expect (and see) better out of
his 9 year-old brother.


Clearly you don't care for AARON's alleged art. Neither,
for what it's worth, do I. But I'm not going to claim on
that ground that Cohen is incompetent; in so far as artistic
ability is assessable on any basis other than "well, I
don't like *that*", Cohen is someone whose judgement is
worth respecting.

--
Gareth McCaughan
..sig under construc
Jul 22 '05 #573
jc*****@taeus.com (Jerry Coffin) writes:
Gareth McCaughan <ga**************@pobox.com> wrote in message news:<87************@g.mccaughan.ntlworld.com>...

[ ... ]
Well, Harold Cohen was a pretty eminent artist before he
started working on AARON. He's a professor at UCSD. It's
possible that he's "incapable of recognizing art when he
sees it", but it doesn't seem very plausible.


Rather the contrary. IMO, being recognized as an "eminent artist"
among academia (at least at the presnt time) is nearly a guarantee of
exactly the opposite.

The fact is that if my preschool nephew had painted one of these, I'd
consider it fair -- but I definitely expect (and see) better out of
his 9 year-old brother.


Where the current Aaron excels is in the area of color, which is not
unexpected as that is what Harold Cohen was famous for in the 1960s
(in fact, in one incident a curator who had lost track of Cohen after
he moved to the States recognized a drawing of Aaron's as Cohen's
before the painter was revealed to her). Cohen has never been too
concerned about representation in his work (all it would do is clutter
Aaron's knowledge base with irrelevant details) but with more
fundamental problems of composition (most of his paintings are
actually far less representational than what Aaron does).

I think you (and most other people in this thread, too) could really
benefit from a remedial art class or two.

Vladimir
Jul 22 '05 #574
Gerry Quinn <ge****@DELETETHISindigo.ie> writes:
As to how long it took (and presumably according to the Lisp boosters
his thirty years of work are equivalent to about 150 years of C++), I
don't see that it matters much.


Note that it's almost 40 years now, and for most of those Aaron has
been written in C. Cohen began the current version of Aaron in 1988 (I
think), partly because a colleauge strongly recommended Lisp to him,
and partly because TI gave him an Explorer Lisp machine that he wanted
to get some use out of. Not long after, he was raving about how Lisp
enabled him to finally tackle color, something that he had been
putting off for more than a decade because of the complexity. He was
still finding opportunities for plugging Lisp in a recent talk he gave
at the Tate:

http://www.tate.org.uk/onlineevents/live/cohen.jsp

If you want to learn more about Aaron's history (if for nothing else
than finding something to criticize about Aaron that hasn't been done
to death 20 years ago) pick up a copy of Pamela McCorduck's _Aaron's
Code_.

Vladimir

Jul 22 '05 #575
Vladimir Sedach writes:
Where the current Aaron excels is in the area of color, which
is not unexpected as that is what Harold Cohen was famous for
in the 1960s
I do not long to see the creativity of a human painter through
a computer program as a mere medium for the artist, but rather
to see the creativity of the computer program itself. - At
least when a connection to A.I. is claimed.

To write a good chess program, I suppose, one does not have to
be a good chess player, more a good programmer. An AI chess
program is "opaque", it does not play chess like its author
would do, so one can not see the chess-playing style of its
author "trough it".
(in fact, in one incident a curator who had lost track of Cohen
after he moved to the States recognized a drawing of Aaron's as
Cohen's before the painter was revealed to her).
Possibly, because the program was not capable to develope
something new.
I think you (and most other people in this thread, too) could
really benefit from a remedial art class or two.


Possibly one would learn there that the liberation of art from
merely representing objects has to do with an art work not
being entirely "transparant" - i.e., only representing a part
of the world that can be seen through it -, but being somewhat
"opaque", partially creating a world of its own.

In the same sense, an A.I. program will not just be an
implementation of the style, ideas or thoughts of his creator,
but rather be an open system with an own memory, being able to
interact, evolve and to create something new.

Jul 22 '05 #576
Pascal Bourguignon <sp**@mouse-potato.com> wrote in message news:<87************@thalassa.informatimago.com>.. .

[ ... ]
The number of pictures retained in museums is closer to 1 than to any
number that would invalidate my "math".


So you figure if it's not already in a museum, it can't be art?

By that theory, you've just proven that that program in question can't
possibly create art.

The bottom line is that your math is wrong and your conclusion is
wrong. A positive number, no matter how infinitesimal, is still, by
definition, greater than zero. IOW, no matter how tiny the improvement
might be, it's an improvement nonetheless.

--
Later,
Jerry.

The universe is a figment of its own imagination.
Jul 22 '05 #577
jc*****@taeus.com (Jerry Coffin) writes:
Pascal Bourguignon <sp**@mouse-potato.com> wrote in message news:<87************@thalassa.informatimago.com>.. .

[ ... ]
The number of pictures retained in museums is closer to 1 than to any
number that would invalidate my "math".


So you figure if it's not already in a museum, it can't be art?


Approximately.

(This begs the question of whether a computer can produce art.)

Jul 22 '05 #578
Christopher C. Stacy wrote:
jc*****@taeus.com (Jerry Coffin) writes:
So you figure if it's not already in a museum, it can't be art?


Approximately.

(This begs the question of whether a computer can produce art.)


Sounds more like the question is "what is art?", which is much harder
to define :) Given a narrow view of what art is, certainly a computer
could produce it.

Jeff M.

--
(surf-to "http://www.retrobyte.org/")
Jul 22 '05 #579
Quoth Jeff on or about 2004-11-14:
Sounds more like the question is "what is art?"


Art is anything a collector is prepared to pay for.

-trent
Jul 22 '05 #580
In article <b2*************************@posting.google.com> ,
jc*****@taeus.com says...
Pascal Bourguignon <sp**@mouse-potato.com> wrote in message news:<87************@naiad.informatimago.com>...
There are: (expt (expt 2 24) (expt 2 22)) 4-Mpixel 24-bit color
pictures. That's about (expt 10 30000000) Since there's only about
(expt 10 17) seconds in the universe (or at most (expt 10 19)), you
just DON'T have sufficient time. That's why you need to be scient
to produce something worth looking at.


While you're math is correct, it's only distantly related to the right
math to do. Basically, your math would be right IF you were talking
about randomly producing one specific output. The problem is that
there are MANY possible 4 megapixel pictures worth looking at. As
such, the correct question has little to do with the total number of
possiblities, and a great deal to do with the _percentage_ that are
worth looking at -- if 90% of the possible outputs qualified as art,
then random generation would typically do the job in a few seconds.
If, OTOH, only one in 2^256 arrangements is worth looking at, then the
chances of producing something interesting before the second law of
thermodynamics has its ultimate triumph are slim indeed.


I think the notion that even as many as one in 2^256 could conceivably
be worth looking at indicates a poor feel for the 'law of large
numbers' as applied to cases like this.

For an easier example to analyse, consider the set of all books 4
million characters long. What proportion are worth reading?

- Gerry Quinn



Jul 22 '05 #581
In article <y9uld.168198$9b.133445@edtnps84>, whumeniu-delete-this-
an*************@telus.net says...
Gerry Quinn wrote:
Well, that is certainly small enough to make Lisp viable for shareware
authors. And the program beats Michael's and mine for size.

One minor gameplay consideration - it would be nice if clicking on a new
tile aborted the two-second display, which otherwise is a bit
frustrating. But perhaps that only shows I am a bit too old for this
game...
I have taken your suggestion and modified it slightly. Guessing is
now a button-1 press. Aborting a line of guessing is pressing button-2
or button-3 anywhere on the board.
(center and right clicks on a right-handed three button mouse).


I just have it so that you can cancel a guess with a click. But on
retrospect, in Concentration that is cheating - I put it in
automatically because in most games it is a standard user interface. It
would only work in Concentration if no cards are turned over until all
arer selected.
The concentration game is written such that one can create a game
where one has to match any n tiles (where n >= 2). Its strange playing
match 3 on a 9x6 board. Makes my head hurt. The way the
game is written if 3 tiles need to match one has to get the first
two to match before one is even allowed to select a third tile. Is
this the proper rule for Concentration? (are their official rules?).


I don't know, but that's the rule I came up with also! I find you don't
need to increase the board size - sets of 3 are hard enough on small
boards!

- Gerry Quinn


Jul 22 '05 #582
In article <20*********************@harpo.marx>,
NO************@bigpond.com says...
Quoth Gerry Quinn on or about 2004-11-13:
The issue is whether a large proportion
of tasks can be 'naturally' expressed in a form unique to Lisp, and in
no other way. In other words, what tasks 'naturally' require Lisp'd
unique features, and are much harder to express without them?
s/require/leverage/. There is a significant difference between X
`requiring' Y and X being able to take advantage of Y. Whether
deliberately or accidentally, you seem to be conflating these two
distinct relations.

I haven't enough experience with lisp to give good examples of tasks
that leverage Lisp extras. I will give some poor examples instead.

I earlier mentioned specialization of flow control structure[0], which
cannot be written correctly in C or C++. Another is return-from, which
can only be approximated in C / C++ with the goto operator.


The thing is, these are language features, and don't address the
question above - what problems really need them? As for augment.h, it
seems to be an attempt to create macros to extend C. If you do have a
problem that needs a functional language, I think you would be better
off using one rather than abusing C!
From any perspective, which is easier to read?:

dotimes (i, 10)
printf ("%d", i);

for (i=0; i<10; ++i)
printf ("%d", i);
For me, the second is easier, because of familiarity. But I donlt think
the first has any natural advantages to someone unfamiliar with either
language. They may ask "What's a dotime - some kind of dot?". printf()
is of course a C grotesquerie.

The easiest language to read for a naive reader would IMO be BASIC:

for i = 0 to 10
print i
next i
- Gerry Quinn
-trent
[0] See doseq() in http://144.132.79.25/~twb/src/common/augment.h

Jul 22 '05 #583

"Gerry Quinn" <ge****@DELETETHISindigo.ie> wrote in message
news:MP************************@news.indigo.ie...
From any perspective, which is easier to read?:

dotimes (i, 10)
printf ("%d", i);

for (i=0; i<10; ++i)
printf ("%d", i);


For me, the second is easier, because of familiarity. But I donlt think
the first has any natural advantages to someone unfamiliar with either
language. They may ask "What's a dotime - some kind of dot?". printf()
is of course a C grotesquerie.

The easiest language to read for a naive reader would IMO be BASIC:

for i = 0 to 10
print i
next i


Well you could also write
(loop for i from 0 to 10 do
(print i))
Jul 22 '05 #584
Quoth Gerry Quinn on or about 2004-11-14:
The thing is, these are language features, and don't address the
question above - what problems really need them?
I think we are debating different things. I contend[0] that, for at
least some tasks, a solution can be expressed more readily and succintly
by an experienced Lisp programmer in Lisp than an experienced C/C++
programmer in C/C++. You counter this by pointing out that solutions
can still be expressed in C/C++.

I am not disputing this. I have agreed and continue to agree with you
on this point. But as other denizens have pointed out, this is akin to
saying that all turing-complete languages are equal, simply because they
are turing-complete. I think this is a rather monochromatic view to
adopt, but until your demonstrate the ability to grade languages more
finely I see no pupose in continuing this discussion.
As for augment.h, it
seems to be an attempt to create macros to extend C. If you do have a
problem that needs a functional language, I think you would be better
off using one rather than abusing C!
I don't always get a to choose which language I use :-(

And I don't see it as abuse. I'm merely extending C upwards to the
algorithm in my head at the same time as I extend my algorithm down to
C. A dotimes loop is closer than a for loop to 'do { X } Y times',
which is how I think about some loops.

In that respect, dotimes() is to for() what for() is to while(), since
'for (I;P;M) B' is congruent to 'I; while (P) { B; M; }'.

(Oh, and C is just as functional as Lisp. The lack of memory manglement
and destructors simply makes it more difficult :-)
printf() is of course a C grotesquerie.


Lisp's (format) isn't much better.

-trent

[0] Please note that this is an article of faith; I feel I do not have
sufficient empirical evidence to assert it as fact.
Jul 22 '05 #585
Gerry Quinn wrote:
In article <20*********************@harpo.marx>,
NO************@bigpond.com says...
From any perspective, which is easier to read?:

dotimes (i, 10)
printf ("%d", i);

for (i=0; i<10; ++i)
printf ("%d", i);

For me, the second is easier, because of familiarity. But I donlt think
the first has any natural advantages to someone unfamiliar with either
language. They may ask "What's a dotime - some kind of dot?". printf()
is of course a C grotesquerie.


Additionally, you can't tell whether the loop variable ranges 1 to 10 or
0 to 9 using 'dotimes'.
The easiest language to read for a naive reader would IMO be BASIC:

for i = 0 to 10
print i
next i


I was going to point out that Fortran at least has the numbers 0 and 9
in the code which corresponds to the C for loop to print out the numbers
0 to 9:

do 100 i = 0, 9
write (*, *) i
100 continue

but I checked and so would the Basic one.
Pete
Jul 22 '05 #586
Gerry Quinn wrote:


I don't know, but that's the rule I came up with also! I find you don't
need to increase the board size - sets of 3 are hard enough on small
boards!


Actually I added new games in the Game Menu of various sizes yesterday evening.
(Its in the new concentration.zip)
The biggest selection from the game menu is New 8x9 Match 4.
My 11 year old son played it last night. He actually found it funner at the
more difficult levels. Took him about 15 miuntes for the biggest game.
(He was very thankful for the abort button presses)

Wade
Jul 22 '05 #587
Quoth Pete Kirkham on or about 2004-11-14:
dotimes (i, 10)
printf ("%d", i);


Additionally, you can't tell whether the loop variable ranges 1 to 10 or
0 to 9 using 'dotimes'.


Unless a) you read the header; b) you read the documentation; or c) you
knew I borrowed it from Lisp :-)

....but point taken.

-trent

Jul 22 '05 #588
Gerry Quinn <ge****@DELETETHISindigo.ie> wrote in message news:<MP************************@news.indigo.ie>.. .

[ ... ]
If, OTOH, only one in 2^256 arrangements is worth looking at, then the
chances of producing something interesting before the second law of
thermodynamics has its ultimate triumph are slim indeed.


I think the notion that even as many as one in 2^256 could conceivably
be worth looking at indicates a poor feel for the 'law of large
numbers' as applied to cases like this.


What part of "second law of thermodynamics has its ultimate triumph"
didn't you understand? The _ultimate_ triumph of the second law of
thermodynamics is when all the energy in the universe reaches
equilibrium...

IOW, when I cited 2^256, it was intended as a constrast, not as
something that was conceivably worth searching -- rather the contrary,
I cited it as something that was obviously ridiculous to even
consider.

As far as cases like this go, the basic problem is somewhat similar to
breaking encryption by exhausting the key-space. If you honestly care
about whether I have a feel for the subject matter, feel free to read
through my old posts on sci.crypt -- and even if you don't care much
about my feel for things, some of it is worth reading in its own right
-- darned little of it though... :-)

--
Later,
Jerry.

The universe is a figment of its own imagination.
Jul 22 '05 #589
Trent Buck <NO************@bigpond.com> wrote in message news:<20*********************@harpo.marx>...

[ ... ]
I think we are debating different things. I contend[0] that, for at
least some tasks, a solution can be expressed more readily and succintly
by an experienced Lisp programmer in Lisp than an experienced C/C++
programmer in C/C++.


Especially if we restrict both to the base language (i.e. without
using add-on libraries) this would be almost impossible to dispute --
just for an obvious example, a program to multiply two 60-digit
numbers is clearly simpler in Lisp than in C or C++.

The same is true in the other direction as well though -- solutions to
some problems are clearly easier in C or C++ than in Lisp (e.g. many
typical engineering problems).

Unfortunately most people don't write things that fall so obviously
into an area where Lisp provides such obvious advantages -- I'm
reasonably certain my bank balance hasn't involved any 60-digit
numbers recently! :-)

Many of the examples cited by the Lispers in this thread have the same
problem. At least to me, even if we all agreed that what a computer
produced really was art, it would miss the point.

The relevance of an example program having been written in a
particular langauge depends on the problem it solves being relevant to
the problems I'm likely to want to solve. Writing a program that does
"art" (even assuming we all agreed it was art) means little to me,
because I can see little relationship between the kinds of things it
probably does and the kinds of things I want to do.

The same is true in the other direction as well, though I think the C
and C++ advocates have been a bit more sensible (or at least
restrained) in what they cite, even though obvious examples in this
direction are much more relevant (and therefore compelling) to the
kinds of things I happen to do. Nearly all of us (on both sides of the
fence) run OSes written in C, post to an Internet that runs almost
entirely on code written in C, etc. At least for the problems I happen
to enjoy solving, those examples are far more relevant. If I had a
choice between creating a drastically better art program or a
drastically better router, I'd do the router (in fact, I sort of
already am...)

Now, that's NOT meant as a commentary on the fundamental capabilities
of the languages themselves, only on the examples that have been given
in this thread. I'm well aware that if I wanted to badly enough, I
could write the software for a router in Lisp. I believe, however,
that for this particular pursuit, Lisp would present more shortcomings
than advantages. Some of the Lisp advocates seem to believe (or at
least want others to believe) that Lisp always provides advnatages
with no weaknesses, an idea with which I disagree.

Another basic point that I think a lot of people miss is that in the
end, most of us ultimately program for enjoyment -- yes, my regular
job has something about "software" in the title, but if I didn't enjoy
programming, I'd find a different job. I believe I've mentioned
previously in this thread that I've written Lisp off and on for over
20 years, and implemented Lisp a few times as well. For better or
worse, Lisp just doesn't suit me very well -- I'm glad I studied it,
and I think my programs are better for having done so, but the fact of
the matter is that as far as real enjoyment goes, my first Lisp
interpreter (written in 8080 assembly language) was simply a lot more
fun than any of the coding I've ever done IN Lisp.

I'm the first to admit, however, the people differ from each other as
well -- the fact that I enjoy one thing more than another doesn't
imply that somebody else will do the same. A person's choice of
programming language is, to a large extent, a reflection of their own
personality. This is why the statement above about their being
problems that are easier to solve in Lisp more or less misses the
point. The real question is whether I (or whoever) find those
particular problems interesting to solve, and whether I find it
interesting to solve them in the way(s) that Lisp supports. In my
case, the answer is generally no. Others obviously disagree -- and
more power to them, IMO.

Unfortunately, at least to most appearances, most Lisp advocates have
a rather different sentiment: specifically that eveybody must
acknowledge that Lisp is the ultimate answer to all possible
programming problems. IMO, they're welcome to believe that if they
want, but the need they seem to feel to carry their crusade to the
rest of the world is annoying at best, and downright anti-social most
of the time -- on the order of somebody with whom every conversation
inevitably turns into an argument in which peace can only be restored
if everybody else acknowledges the superiority of their particular
political or religious views.

--
Later,
Jerry.

The universe is a figment of its own imagination.
Jul 22 '05 #590
Pete Kirkham <pe***************@cafemosaic.co.uk> wrote in message news:<41**********************@news-text.dial.pipex.com>...
Gerry Quinn wrote:
In article <20*********************@harpo.marx>,
NO************@bigpond.com says...
From any perspective, which is easier to read?:

dotimes (i, 10)
printf ("%d", i);

for (i=0; i<10; ++i)
printf ("%d", i);

For me, the second is easier, because of familiarity. But I donlt think
the first has any natural advantages to someone unfamiliar with either
language. They may ask "What's a dotime - some kind of dot?". printf()
is of course a C grotesquerie.


Additionally, you can't tell whether the loop variable ranges 1 to 10 or
0 to 9 using 'dotimes'.
The easiest language to read for a naive reader would IMO be BASIC:

for i = 0 to 10
print i
next i


I was going to point out that Fortran at least has the numbers 0 and 9
in the code which corresponds to the C for loop to print out the numbers
0 to 9:

do 100 i = 0, 9
write (*, *) i
100 continue


Since the 1990 standard you can terminate the do loop in Fortran with
enddo, rather than a numbered line with continue. Most Fortran 77
compilers offered this extension. The simplest solution in Fortran is
to use an implied do loop,

write (*,"(10(i6,/))") (i,i=0,9)

where the "/" in the repeat edit descriptor "(10(i6,/))" says to print
each 'i' on a new line. Fortran rules!
Jul 22 '05 #591
In article <MP************************@news.indigo.ie>,
ge****@DELETETHISindigo.ie says...
In article <MP************************@news.verizon.net>,
ch**************@NOTplayTHISstationBIT.sony.com says...
In article <MP************************@news.indigo.ie>,
ge****@DELETETHISindigo.ie says...
[...]
But they don't address the point I was making:

"The time it takes to sling together a few algorithms and produce a
basic pre-designed game is insignificant. Even if Lisp were ten times
more productive in this regard, it wouldn't make any difference. [...]
Productivity in messing around with small programs that are not for
general release is not really an advantage."


Tell me, is your point based on:

a) your extensive experience writing large programs,
b) your extensive experience with Lisp, or perhaps
c) your complete lack of experience with either.


It is based on my extensive experience in writing programs that are
large compared to the toy programs being discussed.

Christer, I suggest you back off.


No, seriously, do you have any experience whatsoever with
either large programs or Lisp? If not, what grounds do
you have for making this point?

Christer Ericson
Sony Computer Entertainment, Santa Monica
Jul 22 '05 #592
"John Thingstad" <jo************@chello.no> writes:
This is becoming a battle of words.
What does expressiveness really mean?
Turing complete, terse, succinct are easier to get a grip on.


Terse, succinct, and expressive are all nearly synonymous to me in
this context.

There is another issue. In Perl, for example, you can write very
terse code thanks to all the funky one character variables and stuff.
Reading it afterwards can be problematic though. I suspect there is
a point where code can be too concise so that the effort to read and
understand it is higher than for slightly more verbose code.

How densely packed do you want your ideas? Saving typing is good.
Being able to read the code six months later is also good.

I've found that Lisp tempts me into writing particularly descriptive
names for symbols mostly thanks to the simple legality of the -
character in a symbol name. This is not super terse, but it can be
darn readable if the name is well choosen. Even with the long names,
functions can still be quite short. It seems like a paradox but Lisp
makes it reasonable to do.

--
An ideal world is left as an excercise to the reader.
--- Paul Graham, On Lisp 8.1
Jul 22 '05 #593
Quoth David Steuber on or about 2004-11-14:
There is another issue. In Perl, for example, you can write very
terse code thanks to all the funky one character variables and stuff.


Someone once observed that if you count keystrokes instead of
characters, Perl isn't particularly amazing in this respect -- you hit
the shift key a lot.

Incidentally, parens don't need shift on my keyboard :-)

-t
Jul 22 '05 #594
Thank you. That was an EXCELLENT article; in fact it's very nearly the
article I would like to have written, were I articulate enough.
-t
Jul 22 '05 #595
On 14 Nov 2004 21:36:12 -0500, David Steuber <da***@david-steuber.com>
wrote:
"John Thingstad" <jo************@chello.no> writes:
I've found that Lisp tempts me into writing particularly descriptive
names for symbols mostly thanks to the simple legality of the -
character in a symbol name. This is not super terse, but it can be
darn readable if the name is well choosen. Even with the long names,
functions can still be quite short. It seems like a paradox but Lisp
makes it reasonable to do.


Some languages like Pascal need to have code expressed a certain way to
even work.
You typically spend a lot of time finding that way.
Turbo Pascal (this was a long time ago..) got around many of the
limitations of Pascal by putting strange squiggles in comments
that altered the behaviour of code.
In comparison programming in C was a relief.
Suddenly the problem was't how to express a problem but rather
which method to choose.
I would then say that C is more *expressive* than Pascal.
Similarly I feel that Smalltalk fits like a straight jacket.
If forces you to convolute the problem to fit the language.
Again you spend your time battling the language rather
than working the problem.
Lisp is 'loose and free'. I can program in the paradigm of choice.
That would depend on the problem and my taste.
I have plenty of option's of how to express the problem.
So Lisp is more *expressive* than Smalltalk.

Succinct is accurate and to the point.
No messing about like them Turbo Pascal squiggles.

The less time you spend combating the language the
more time you have to focus on the problem.
There is a direct link to productivity I think.

--
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
Jul 22 '05 #596
jc*****@taeus.com (Jerry Coffin) writes:
The same is true in the other direction as well though -- solutions
to some problems are clearly easier in C or C++ than in Lisp
(e.g. many typical engineering problems).
I know of two kinds of programs that are easier to write in C than
Lisp: Those that mainly interface with the very C-centric operating
systems/environments, and some casese of special-purpose
number-crunching programs where the "portable assembly"-mode of C can
provide decent performance reasonably well (so, the program as such
isn't easier to write, but getting the expected performance is). Other
than this, I know of no such "typical engineering problems".
Unfortunately most people don't write things that fall so obviously
into an area where Lisp provides such obvious advantages -- I'm
reasonably certain my bank balance hasn't involved any 60-digit
numbers recently! :-)
Let's say your bank balance is represented as an integer number of
1/100 units of some currency. In 32-bit C, you'd be able to represent
some 40 million. It'd be an interesting event to see Bill Gates come
deposit his money and you explain to him that unfortunately "the
integer wrapped around, so we can only tell you your balance modulo 40
million". And what when you need to calculate the bank's accumulated
deposits? Or the average of this over the last three decades? Would
you try to ensure that 64-bit integers are used throughout and cross
your fingers that nothing unforeseen happens?
[..] At least for the problems I happen to enjoy solving, those
examples are far more relevant. If I had a choice between creating a
drastically better art program or a drastically better router, I'd
do the router (in fact, I sort of already am...)


Funnily enough, I happen to have written a sort-of ethernet switch in
Lisp :)

--
Frode Vatvedt Fjeld
Jul 22 '05 #597
"John Thingstad" <jo************@chello.no> wrote in message news:<op**************@mjolner.upc.no>...
On Fri, 12 Nov 2004 15:34:14 GMT, William Bland
<ne*****@abstractnonsense.com> wrote:
On Fri, 12 Nov 2004 13:44:01 +0000, Gerry Quinn wrote:
In article <20*********************@harpo.marx>,
NO************@bigpond.com says...
I'm a pretty new to Lisp, but I can immediately an advantage Lisp has
over C/C++: there are demonstrably things that can be expressed in Lisp
but not in C / C++.

But there are no *tasks* fitting that description (hello, Turing-
complete).

- Gerry Quinn


If you think Turing completeness means that all languages are equal in
expressive power, go program in BrainFuck.

Cheers,
Bill.


One might add that McCarthy's incentive to create LISP (yeah, old style)
was inspired by the awkwardness of expressing proofs using the Turing
machine as a model..

This is becoming a battle of words.
What does expressiveness really mean?
Turing complete, terse, succinct are easier to get a grip on.


Expressiveness is the degree to which you don't have to tell the
computer *how*, only *what*.

Usually, that also leads to terseness, because the what is usually
shorter than the how.
Jul 22 '05 #598
On Sun, 14 Nov 2004 11:22:34 GMT, Trent Buck <NO************@bigpond.com>
wrote:
printf() is of course a C grotesquerie.


Lisp's (format) isn't much better.

-trent

[0] Please note that this is an article of faith; I feel I do not have
sufficient empirical evidence to assert it as fact.


The big win in Lisp is on manipulation of complex data structures and
operations on them.

C's advantages is the closeness to the operating system and hardware.
C++ is pretty much the same.

You'r examples seem to be missing the key issues.

--
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
Jul 22 '05 #599
Appologies for digging up this rather old thread, but I'd not read
comp.games.development.programming.misc for a wee while and the title of
this thread just made me laugh out loud.

It's like standing in front of the pyramids and saying "Stones suck for
construction". Jeez, C++ may have some flaws (lots, even), but it's
done kinda okay in the game development stakes ;o)

Jul 22 '05 #600

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

39
by: Peter Lewerin | last post by:
peter.lewerin@swipnet.se (Peter Lewerin) wrote > There is a paradigm > difference between CLOS and non-OOP Lisp code, but the language is the > same, and it's quite possible to mix the two. ...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.