Slashdot Mirror


Tim Sweeney On Programming Languages

Fargo writes "GameSpy posted a six-page essay of Tim Sweeney's entitled "A Critical Look at Programming Languages." Tim Sweeney is, of course, the lead coder for the Unreal game engine (one of the most licensed 3D game engines for the PC.) Juicy quote: "We game developers hold the keys to the future of hardware and software technology... Games were responsible for creating the market which enabled 3dfx and NVidia to mass-product $100 graphics chips which outperform $100,000 Silicon Graphics workstations. In terms of technological progress, we game developers are way more influential than most of us realize." "

523 comments

  1. Re:First by Teufel_Forelle · · Score: 0

    Your not first so dont lie -Your village called their idiot is missing. Teufel_Forelle

  2. I've been waiting all day for this to get posted by FreshView · · Score: 3


    I think Sweeney's got some really, really good ideas here, especially as far as virtual classes. I can see that being very useful in the future. I wonder if there are any languages currently in development that take advantage of any of the features he was talking about.

    I'm fairly new to perl, but It seems to me that perl does SOME of the things he talks about for "language of the future".

    At the very least, I now have a compeling reason to learn UnrealScript.

    --
    -------- "All I want in life's a little bit of love to take the pain away" --Spiritualized
  3. This is good news! by Anonymous Coward · · Score: 0
    Hippy brothers: listen up. Programming languages are good only if they're OPEN SOURCE! So, I encourage you to not use closed-source proprietary programming languages.

    Also, don't buy any video cards until the video card companies make the video cards FREE and only charge money for support. That way, we won't have to pay for video cards! What a great idea!

    1. Re:This is good news! by Anonymous Coward · · Score: 0

      Also, if you implement this kewl tool that I've heard of, called a blackjack, you can open the source on all kinds of people's wallets. Another tool called the jimmy is useful for opening the source on people's houses and vehicles.

    2. Re:This is good news! by Anonymous Coward · · Score: 0

      Shut up you stupid hippy.

  4. Re:Sweeney quote: Microsoft Word by Anonymous Coward · · Score: 0

    Hardware limitations are one of the best ways to force software manufactures to improve their code.

  5. bounds checking by Anonymous Coward · · Score: 0
    On the other hand, experience has shown that array bounds checks are one of the biggest cycle-wasters in modern languages, so this issue must certainly be addressed somewhere.

    Seems like this work could be cut in half by only allowing UNSIGNED integer types as array indexes. But then, I'm still miffed that Java only supports signed integer types... (Need to store a value between 0 and 255? Use a short!)

  6. Re:Concision isn't the issue. by sansbury · · Score: 1
    I'm probably going to get murderd on this, but are you really familiar with the language? I studied it for four years in college and even lived in Beijing for a while.

    That aside, I think there are definitely conceptual things which do not translate well. Subtle differences in the flow, and logic of a language, definitely influence its use and application. Mandarin for instance, never conjugates verbs. Think about the implications of that for a moment...

    -cwk.

  7. Bull by vlax · · Score: 1

    Gimme an example of someone incapable of thinking something because of language.

    I've been in academia. I spent the best years of my life in academia. I know that many disciplines teach the Sapir-Whorf hypothesis as received truth, but it is still wrong, wrong, wrong. Would you believe an English prof if he or she was taking about physics, while a physics prof said that it was incorrect? This is a subject where linguists should be trusted over literature profs and anthropologists.

    Pinker convers the topic briefly in The Language Instinct. A search at linguistlist.org should find several discussions of the issue. I believe Berlin and Kay's book Basic Colour Terms is back in print, if you want to go to he horses mouth.

    1. Re:Bull by jackmott · · Score: 1

      I dont think a slashdot forum is really the place where this topic can be discussed appropriately =)

      but for fun you can consider a person who was never taught a langauge. Do you think there is any way they can ever form some of the higher order concepts that we can?

      I dont personally think that language has a huge impact on how we think, but there are definitely some subtle impacts.



      --
      -I go to Rice, so figure out my email address
  8. NextGeneration?? by X · · Score: 2

    All of what he talks about as "NextGeneration" was all stuff I learned 10 years ago when I first picked up OOP. Back then this stuff was old hat.

    Indeed, time has proven that Framework-based approaches and Meta-Object-Programming are not a silver bullet eithr. They all have trade offs.

    --
    sigs are a waste of space
    1. Re:NextGeneration?? by X · · Score: 2

      The biggest problem with Meta-Object-Programming is that it makes it hard to integrate 3rd party tools. This isn't necessarily a bad thing, but it's a trade off.

      The biggest problem with frameworks is that you're imposing a certain flow of control on developers. Again, this isn't necessarily a bad thing, but it does limit their flexibility. J2EE is a really good example of this. Starting a thread in Java is the most natural thing in the world, but in J2EE you basically can't do it inside of an Enterprise Java Bean. Consequently, the work todo the equivalent is EXTENSIVE to say the least. Now, this isn't a problem for many J2EE projects, but you simply can't be all things to all people.

      --
      sigs are a waste of space
    2. Re:NextGeneration?? by mnf999 · · Score: 1

      ummmm...sorry this is too "meta-blah-blah" to just cut it with me. I need specifics such as, what tools ,where is it hard to integrate, for what kind of meta level approach (Xerox PARC Aspect? EJB?), it's a vague statement so far.

      Also the whole point of the spec in J2EE is to free you from thread development. ;-).

      Again I am seriously looking in Metalevel programming, there are many ways to go about it and the reason I was browsing /. was in hope of people discussing them. If you ask me I am growing increasingly skeptic about the XEROX PARC approach with compilers, but since I implement the EJBoss server I know the limits of XML based parametrisation of the services, the end of the spectrum. It is very powerful and less redundant than PARC stuff. Sorry to ask for your time and real insights here, but I tend to distrust sweeping generalization a la "You would be fools to not take into account the monte carlo reverse simulation of the trans-meta migorifier" but love a good solid argument when I see one. Feel free to take it off line I am very interested in your experience.

      regards

      marc

      --
      The real mnf999 always posts as anonymous coward
    3. Re:NextGeneration?? by mnf999 · · Score: 1

      Please elaborate (as the lead dev of a free framework based approach I am interested ;-)

      --
      The real mnf999 always posts as anonymous coward
  9. Re:He dissed Lisp! by James+Lanfear · · Score: 1

    I was a bit suprised by that one as well. But then I realised that I should be happy that he actually mentioned Lisp, even negatively; AFAICT, most programmer's understanding of the Lisp stops at the parenthesis, and even then they assume it's Scheme (or "that scripting language").

    I'm sure that one day Lisp will once again be recognized for all that it is (hurry up TUNES ;-), but until then it will cast aside as a research project in the minds of most Real World Prgrammers.

  10. Waste of time I think by kazzuya · · Score: 1

    'C' is like math: use it and leave it alone. It's just a notation, it won't make problems any easier. We can only deal with so much abstraction.. C++ already showed how poor humans end up wasting their time trying to get around a language before being able to deal with the actual problem.
    Also game programmers should try to cool off for a minute and realize that they are just devoted coders that happen to work in a popoular field.

    ciaox

  11. Re:"Future Languages" -- YES, YES! by Tom7 · · Score: 1

    > essentially you're 90% of the way there.

    Yes -- you're 90% of the way to the current state of the art with object-oriented languages. ;)

    I guess what I am arguing for (and I think what Tim is, too) is for parametric *types*. Sure, there are lots of casting hacks one can do with C and even java, but these are difficult to support in the long run because there isn't any checking by the compiler. After all, everything gets turned into machine code in the end. In ML, qsort might have the type:

    qsort : 'a vector * ('a * 'a -> Order) -> 'a vector

    The 'a (pronounced alpha) stand for an unknown but specific type -- all the arguments must agree on the type of the thing being sorted. (So we could sort vectors of ints, or vectors of strings, or even vectors of functions, but we have to supply a compatible sorting function).

    The difference isn't much apparent here (you might just document your C code to specify that), but gets hairy quick in big systems -- to the point where the concept isn't used except when it's really the only way to be generic (qsort).

    Static typing and safety also permits compiler optimizations unheard of with traditional languages.

    Here's one concept I don't think is very easily expressed in C, though: function composition. How easy is it to write a function, which takes two functions, and returns a function that is their composition? In ML, that function "o" is just:

    infix o
    fun (f o g) x = f (g x)

    .. this kind of use of higher order functions is pretty hard to do in C (very hard to debug), and, as it turns out, quite useful.

    - Tom 7

  12. Human Language does Restrict. by jelwell · · Score: 4

    As a good example look at the huge problem that GNU has coming up with an english word for "free as in speech" rather than "free as in beer". The bottom line is, there is no good word - if you disagree contact GNU

    This problem creates havoc in trying to explain people the idea behind free software. Sure they understand "freedom" but there is no good adjective that can be used on objects that are normally bought and sold (commodities), in the english language, to describe this freedom. Because of the lack of a word for it, it becomes much more difficult to understand - and truely limits many people into thinking that free software is something other than what it is meant to be.

    Free speech == words that cost no money? If not how do you say it?
    Joseph Elwell.

    1. Re:Human Language does Restrict. by Arandir · · Score: 2

      "...if you disagree contact GNU"

      I have contacted GNU, and so have hundreds of other people. The one word that closest represents what they mean keeps getting rejected. The problem is, they have redefined/appropriated the word "free" for their concept of software, and now they refuse to change it. They continue in the belief that Free Software == Free Speech. This is ludicrous on the face of it. If they truly believe this, why aren't they passing around Constitutional ammendments for ratification? They also continue in their belief that proprietary software "subjugates" and "dominates" the user.

      That not everyone falls for this GNUspeak clearly demonstrates that human language does not limit human thought. That would be like saying sleight-of-hand limits visual acuity.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    2. Re:Human Language does Restrict. by qbwiz · · Score: 1

      I think it's copyleft.

      --
      Ewige Blumenkraft.
    3. Re:Human Language does Restrict. by Arandir · · Score: 2

      Need you ask? It is not the best definition for what RMS means by "free", but then again, neither is "free". It is a word that RMS vociferously denies he has anything to do with. Think about it and you'll figure it out.

      By the way, has anyone other than me observed the inherent contradiction between the following two RMS quotes: "An unambiguously correct term would be better" and "To stop using the word ``free'' now would be a mistake"

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    4. Re:Human Language does Restrict. by Arandir · · Score: 2

      Hardly! BSD, MIT and other unrestricted licenses are not copyleft. Kirk McKusick likes to refer to the BSD schema as copycenter. "Take it down to the copy center and run off as many as you want."

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    5. Re:Human Language does Restrict. by Anonymous Coward · · Score: 0
      In english there is a problem to exprime free software concept using the word "free".
      In polish language we have one word for "zero-cost software" (darmowe oprogramowanie) and another one for "freedom" software (wolne oprogramowanie), but there is another concept conflict on word wolne:
      en. free = pl. wolne = en. slow !

      So imagine a dialog:
      - I use free software.
      - Hmm... I prefere fast one.

    6. Re:Human Language does Restrict. by Arandir · · Score: 2

      "Copyleft stops me from running off as many as I like?"

      That's right. Sticking with the copier analogy, the GPL only let's me make copies on the GNU copier. I am not allowed to make copies on non-GNU compatible copiers. And I can't copy just the binary parts that I want, I have to copy the source parts as well. And I certainly can't collate copies done on different brand copiers into one book.

      Most clauses in the GPL points to instances where sharing code with your friend would be wrong.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    7. Re:Human Language does Restrict. by Amphigory · · Score: 2
      From Frances Bacon (if you don't know who he was, try google -- suffice to say that he was up there with Einstein and Newton):
      For men imagine that their reason governs words, whilst, in fact, words react upon the understanding; and this has rendered philosophy and the sciences sophistical and inactive. Words are generally formed in a popular sense, and define things by those broad lines which are most obvious to the vulgar mind; but when a more acute understanding, or more diligent observation is anxious to vary those lines, and to adapt them more accurately to nature, words oppose it. Hence, the great and solemn disputes of learned men often terminate in controversies about words and names, in regard to which it would be better (imitating the caution of mathematicians) to proceed more advisedly in the first instance, and to bring such disputes toa regular issue by definitions. Such definitions, however, canoot remedy the evil in natural and material objects, because the consist themselves of words, and these words produce other, so that we must necessarily have recourse to particular instances, and their regular series and arrangement, as we shall mention when we come to them mode and scheme of determining notions and axioms.
      --

      That is, language does limit our thought processes and, even worse, the knowledge that we can express. Scary, huh?

      --
      -- Slashdot sucks.
    8. Re:Human Language does Restrict. by MattMann · · Score: 2
      Oh, please! refer back to your post: you didn't say "BSD copier", you said "compared BSD to a copier". By those rules, the GPL could be compared just as easily. Leaving out that you are toying with the word copier the way Stallman toys with the word free, and the rules attach to the documents, not the copier...

      It is still a stupid analogy. This magical BSD copier you love so much lets you collate copies together into one book, yes, but it lets you stop other people from copying that book even on a magical BSD copier? Copiers like that used to sit in the basement of the Kremlin. No wonder Stallman has the urge to scream freedom! Me, I just want to scream that I'm wasting my time talking about this.

      Have an opinion, sure, but I can see the merit in the BSD license. If you can't see the corresponding merit in the GPL, you are not very sharp.

    9. Re:Human Language does Restrict. by cburley · · Score: 2
      By the way, has anyone other than me observed the inherent contradiction between the following two RMS quotes: "An unambiguously correct term would be better" and "To stop using the word ``free'' now would be a mistake"

      Hmm, let's see just how much of an "inherent contradiction" these two quotes are, by substituting for "free" something else:

      "A fire extinguisher would be better"

      versus

      "To stop people evacuating the building now would be a mistake"

      The point being, just because something might be "better" in the abstract does not necessarily mean it's wise to switch to that thing at any given moment during a campaign where the thing proposed as to be discarded is still serving a critical role.

      (No, I don't know whether RMS himself would agree that the statements are not contradictory as he meant them. I'm just pointing out that they aren't inherently contradictory. It's best to ask RMS himself, if you want to know how he wishes those statements to be interpreted.)

      --
      Practice random senselessness and act kind of beautiful.
    10. Re:Human Language does Restrict. by jonnythan · · Score: 1

      what is the word?

    11. Re:Human Language does Restrict. by maphew · · Score: 2
      There are many places I wanted to jump into this thread. I finally chose this one because the subject heading best reflects my own view on this. Language does restrict thought, along with a great many other things. Your physical senses for one. Your past experience for another.

      But the converse is true as well, thought constricts language. A word on it's own is just a symbol, a container to carry a concept from one place to another. Without the concept a word means nothing. Concepts which are already held in the mind have many avenues of escape. If a suitable word does not exist a new one can be fabricated on the spot. Or an old one retrofitted. However if the thought doesn't occur to you, the vehicle won't be appropriated.

      The point I'd like to make is that language does not restrict thought in cases where the thought arose first; a baby has no words, but has no trouble at all communicating that it needs attention.

      Where it get's interesting is when the language is carries a previously unknown or unthought idea. Most of thoughts in my own head during the course of writing this message were not there before. And they wouldn't have arrived there if it weren't for this interesing dialogue happening right now. It's not that I didn't have them, or more accurately, the capacity to have them, it's that I didn't think to think about them. And that's where language gets restrictive, if the language doesn't go there, neither will you. Unless some other conveyor-of-ideas like your eyes or ears bring them to you.

      Personally, I don't think 'restricts' is a big enough word on it's own. It needs more shades of meaning like informs or directs or influences, or some word which combines those ideas. A car restricts your travel to roads (hummers, James Bond & Q aside), it does not let you sail or fly. :)

    12. Re:Human Language does Restrict. by jonnythan · · Score: 1

      Ok, maybe I'm stupid, but I'm not that far into /. or RMS' philosophies or writings or linx zealotry, but I don't know what the word is.

      ..what is it??


    13. Re:Human Language does Restrict. by Arandir · · Score: 2

      The word is...open...

      Big letdown, I know. But it means the same thing as free in the same context. Which is why "Open Source" was chosen.

      And, yes, I realize that "open" can be used in ways that cause confusion (OpenWindows, OpenLook, open the door) but the word "free" has exactly the same problems. Even translated into the "libre" sense only, you can confuse the notion of Free Software with "free speech", "free love", "free verse", "free electron", or even the ridiculous association with "live free or die". Petty revolutionaries use "free" to spur their disciples to murder the landowners so that they can become petty dictators. On the other hand, "open" implies that the source code is open for all to see, participation in the software is open to all, and "open" is opposite of secrecy. If proprietary standards are the opposite of open standards, then what is the opposite of proprietary software?

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    14. Re:Human Language does Restrict. by Anonymous Coward · · Score: 0

      Virtually all of what Newton thought has been shown to be either wrong or of limited use. The same goes for Einstein.

      Note that in the writings of both you will find they were *aware* of this fact. You will find this true of Bacon as well.

      The fact that a learned man of hundreds of years ago expressed an opinion has no bearing on the opinions factualy basis.

    15. Re:Human Language does Restrict. by Arandir · · Score: 2

      Continuing the stupid analogy, the BSDL lets me use ANY copier regardless of brand name.

      And yes, I can see the merit in the GPL. I firmly believe that every free license, even most proprietary ones, have their place. What I object to is the notion that the L/GPL covers all circumstances and all developers, which is a dominant view here on slashtot.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
  13. ignorance by mcc · · Score: 5

    i am shocked by the incredible ignorance displayed in this article, by the way it covers such a tiny division of the programming languages in wide use, and such bad languages at that. This person seems to think that everyone in the world uses obscure, cumbersome languages like C, C++, objective C, java, perl, lisp, PHP, Bash, FORTRAN, Cobol, Forth, smalltalk or some form of assembly. What an isolated world this person must live in! He seems to have some extreme bias toward use of functional programming languages.

    Specically i am very annoyed by the total lack of any discussion of INTERCAL, umlambda, or orthogonal--what i feel to be the most important languages out there, especially for games. None of these were even mentioned! Why would you write an first person shooter in C++ instead of INTERCAL? Why, as far as i'm aware there isn't even opengl available for c-based languages!

    If you don't like these three above for some silly reason, at LEAST use Forth. any language where you can't redefine the value of four is for wimps. Or use Visual Basic-- its usefulness, portability, flexibility and sheer power are unparalleled. (i'm sorry, that last bit was a little over the top, wasn't it?)

    -mcc
    hmm. that reminds me, i need to learn objective c..
    2B OR NOT 2B == FF

    1. Re:ignorance by Anonymous Coward · · Score: 0

      DO COME FROM (first paragraph) has anybody actually used objective C for anything? i know that there are lots of NeXT-heads out there, but everywhere i look (i am job-hunting :) i see that C++ is req'd, but nobody seems to use Objective C. I like Smalltalk and C and I would LOVE to work in Objective C full time rather than C++. (end of message) although i must say that i find the inclusion of intercal in this post to be, ah, interesting, i find that i must also declare that i wish i knew more about objective C. (first paragraph) DO COME FROM (end of message)

    2. Re:ignorance by bentwookie · · Score: 2
      I use it every single day. It's amazing! I almost didn't take the job because I didn't really want to learn it, but it has proven to be very easy and VERY powerful. Find a bug or want to add a feature to the framework you're using? Write a category against it!

      It really shines when you use it with Cocoa (Apple's set of oo frameworks). I thought Steve Job's whole bit about "putting the developer 10 floors above the rest" was stretching it, but I have to admit it's true. I've been able to implement inherently dynamic stuff like drag and drop in a matter of a few hours. That same task is excruciating in MFC. I hope it gets more use now that Apple is betting the farm on it. We need another viable language for large scale apps, since I don't see Java pulling it off.

  14. notzero type by Anonymous Coward · · Score: 0
    So the following code fragment would do what?

    notzero n = 1;

    n--;

    In other words, your just trading divide by zero generating an exception for addition/subtraction generating an exception... not really a big win, is it?

    1. Re:notzero type by gaw · · Score: 1

      In other words, your just trading divide by zero generating an exception for addition/subtraction generating an exception... not really a big win, is it?

      No, you need to understand how types work. The compiler would not allow you to compile this code, because it would know at compile time that you are breaking the invariant. In cases where it couldn't prove that you were doing something bad, it would then insert a runtime check.

    2. Re:notzero type by Tom7 · · Score: 1


      Note: I was arguing for *not* having a 'notzero' type. My example probably needed an extra "ugh!" in it. ;)

      I would suggest having 'n' be an int, and having the compiler figure out when it needed to check if n was zero or not -- making this part of the (visible) type system makes it too complicated for the programmer.


      By the way, in a modern programming language like ML, you needn't even declare your variable types in most cases (as they are inferred by the compiler)!

  15. Re:Concision isn't the issue. by vlax · · Score: 2

    Shi a! Wo shuo henhaode hanyu.

    Actually, my Chinese sucks. :^) I have no idea how to say 'moral hazard' in Chinese. I've studied the language quite a lot, but don't get that much practice.

    I have, however, faced similar enough problems in other langauges to feel confident in my answer. I invite you to look through the linguistics literature if you want a fluent Chinese speaker to pronounce on the issue. I'm sure there is one who has published on the topic.

  16. Re:Sweeney quote: Microsoft Word by dismayed · · Score: 1
    He argues faster machines should not be required, yet he years for more and more abstraction.


    I really don't feel he is arguing that faster machines shouldn't be required, he simply states that they are not required for most applications people are currently using on a day-to-day basis. Knowing this, he is trying to demonstrate how futher abstraction could lower development time and aid in maintenance without any notice on the part of the end user.

  17. Re:SGI workstations vs. cheap 3D cards by Dalroth · · Score: 1

    Give it a year :)

  18. and REAL MEN STILL USE PUNCH CARDS!!! by Anonymous Coward · · Score: 0

    stop pretending ;)

    We can't ALL be John Carmack. It amazes me how much strutting manliness enters the geeky domain of computer programming.

    It's all about getting things done. You can have C/C++ until they pry it from your cold, dead fingers. I'm hacking away with Perl until something better comes along...

  19. Re:One nit to pick by Keith+Russell · · Score: 1

    Much of what Tim says about computer languages shaping thought and design is motivated by a fundamental hacker ethic: Code reuse. Why reinvent the wheel?

    This past year, I've been working on my first real-world production C++ project, and I have learned to truly appreciate templates. I find returning to Visual Basic frustrating now, because it doesn't have a concept of parameterized types. As a result, I find myself yanking code out of the archives, and adapting it for a project-specific class. The result is duplicated code all over the place, even with VB's COM-based Interface/Implementation metaphor. Oh, how I wish I could just say:

    Dim Foo As Collection Of CBar

    Instead, I have to create a specific CBars class that manually implements Collection. Which is a crock because there should be an ICollection interface I can Implement, but that's a whole 'nother rant.

    Of course, when I was writing C code, I always complained that strings were so much easier in VB. Oh, well.

    Keith Russell
    OS != Religion

    --
    This sig intentionally left blank.
  20. Language debate... by Duncan3 · · Score: 2

    Unless computers start doing more then the standard copy/compute/control operations (i.e. when we need to make quantum compilers) the choice of language doesn't make much difference.

    The backward compatability he goes on about in length is nothing new, and can be done in any language, some of them just try to do it automaticly and hide it better then others.

    The only factor that matters is "How fast can we spit out a profitable product with language X".

    Choose your language accordingly.

    --
    - Adam L. Beberg - The Cosm Project - http://www.mithral.com/
    1. Re:Language debate... by Xenophon+Fenderson, · · Score: 1

      Strangely enough, this was just debated in comp.lang.lisp this month (search Deja for a thread with "Transmeta" in the subject). The prevailing opinion seems to be that Lisp on general purpose computers is roughly 1/2 the speed of C or faster (depending on compiler, level of safety, declarations, etc.) but you end up spending orders of magnitude less time coding and debugging, and that special-purpose hardware will do less for Lisp than softer things (like having the GC and the virtual memory manager play well together). Do look the thread up---the arguments are presented in a much clearer fashion than my attempt at a summary.


      Rev. Dr. Xenophon Fenderson, the Carbon(d)ated, KSC, DEATH, SubGenius, mhm21x16
      --
      I'm proud of my Northern Tibetian Heritage
    2. Re:Language debate... by Tom7 · · Score: 1

      Some languages (standard imperative languages) are better for targeting current architectures than others (functional languages).

      It's my own personal (unsubstantiated) guess that with some chip/architecture redesign, functional languages could be about as fast as imperative languages, even without all the fancy optimizations that static typing (and write-once vars, etc.) allow the compiler to make. Right now (unfortunately), functional (stack/environment-based) languages aren't a good match for available architectures (IP/register-based).

      Some research must have gone into this when lisp boxes were popular. Anybody know of any information?

  21. Thanks by DonkPunch · · Score: 1

    I feel better now.

    --

    Save the whales. Feed the hungry. Free the mallocs.
  22. Re:Concision isn't the issue. by Le+douanier · · Score: 2



    If this hypothetical economist wishes to show off his English, or simply because any short Chinese term he might use for 'moral hazard' implies too many unwanted connotations, he may simply plop the English term 'moral hazard' into the language. That's how 'deja vu' started

    What you are saying is that the fact of importing a foreign term in you language is deja vu, oups, I meant already seen ;)

    BTW, I'm French and at first I was telling "already seen" instead if "deja vu" because I didn't knew how to say it, until somebody told me :). Now when I don't know a term I use the French one and one time out of two this is the good one or a close one.

    --
    "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
  23. Re: on perl by Tom7 · · Score: 1

    >It would be a huge mistake for developers to use perl for a large project. Why?

    More importantly: dynamic scope.

    This is an extremely anti-modular misfeature, which is being phased out of the language, but which is still a thorn in the foot of any large system.

  24. Re:Lest they forget Columbine as well.... by mistabobdobalina · · Score: 1

    never seen a tech support guy who got any...

    --
    -- your knees hurt, don't they?
  25. We need a new programming language!!! by Lode · · Score: 1

    It's good to see that people in the industry feel somewhat like I do... After studying some different computer languages at college, I found out that none of them fully satisfied me, and most important, none of them explored the full potential of concepts like object orientation, etc, in a practical way.
    I've been thinking a lot about the concepts that today's programming languages lack, maybe they'll end up in my (how's it called in English?) term paper (or something like that). I was thinking about some things among the lines of what Sweeney wrote, and another detail I always feel that is a key factor in productivity is the syntax. We all can get used to any syntax, as terrible as it can be, but some "traps" of an obscure syntax can be a pain to even an experienced programmer, not to speak of newcomers to a language.
    Maybe this is not the right place to say those things, since the C and UNIX tradition walk hand in hand and I don't exactly feel that C is a great language in terms of syntax...
    Saving keystrokes in expense of readability is a bad, bad thing.
    And I don't believe that the ideal object-oriented language can be an extension of a procedural language, it has to be object-oriented from the bottom up (C++ and Java go down the drain here).
    I really think that we need a new language, maybe it's about time for the development of a new language, this time in the "open-source spirit". Most languages were mostly created by one or two people, what about democratically define a standard for an 'open language' then implement it?
    Would that be possible?

    --

    "I'm looking through you, where did you go?"
  26. Re:One nit to pick by vlax · · Score: 1

    I disagree, but I will conceed that a weakened for of Sapir-Whorf is possible. I don't think people think within the paradigms of a language (in fact, I'm not sure what paradigms a language could have.)

    So, my disagreement with a heavily weakened form of Sapir-Whorf is an opinion, not science.

    If you can think of a good way to test it, many linguists will be interested to hear it. This whole discussion (while fun) is off-topic to the issue of computer languages. I just wanted to put a stop to some inaccurate folk linguistics, just as I would have if someone had said that eskimos have fifty words for snow.

  27. Re:Abstraction is NOT feature/code bloat by SheldonYoung · · Score: 2

    I agree. The cost of hardware is miniscule compared to the cost of software maintenance. I mean, almost insiginificant.

    My machine at work is about $2000. There is a full time person paid at about $40,000 year to support about 25 such machines, and that doesn't count lost productivity due to buggy software, reboots, etc.

    I want a programming language that will let me write:

    DoTheRightThing().

    And I won't care how slow it is.

  28. Re:Orwell by paul.dunne · · Score: 2

    I found, if not the paper then what seems to be a good precis of it, and read it -- (all this and more) -- it's irrelevant to the subject discussed. I am in some difficulty as to why you thought it would be relevant. Proving that some concepts are cross-lingual impinges not at all on the question of whether all are, which lies at the heart of the "does language limit thought" debate.

  29. Re:A motto I adopted quite recently... by Sarah_Serious_Bitch · · Score: 1

    What are you doing with the other 6.25%?

    His arguements PC vs. SGI are absolutely ridiculous. Any idiot can go to sgi.com and get the benchmarks and see that he is completely full of it. TNT was designed for Q3 fps... Its a bad comparison anyways.... an Octane/MXE will outperform any TNT graphics card, any day of the year.

    C++ is my tounge, and I like it! Do seem to spend wayyy too much time on structure, rather than actually programming though. oh well.

    --
    **This message was brought to you by the letters N, T and the number 666**
  30. Fellow ZZT Lover by Esperandi · · Score: 2

    I was 12 or 13 and writing in QuickBASIC (actually bought the compiler and actually sold 2 programs written in it.. paid for itself so I was happy) when I started playing ZZT. Thenn I printed out the programming manual. It was a whole new world. I had never heard of C++ or anything close to object-oriented technology but it all made sense. I truly loved ZZT.

    There is one drawback and you might not want to hear this... ZZT has no throttling function... its basically impossible to run on anything much faster than a 486, everything runs too fast... sigh... I still play text-graphics based games almost daily (been playing Angband and variants for almost 10 years... i will beat one someday!) and ZZT would be a hoot to relive. If you or anyone else reading this knows of a program or some way that I can throttle my 350MHz machine to run this program in a decent manner, I would love to hear of it...

    I wonder if Tim would still have/been able to release the ZZT source... ?

    Esperandi
    Would gladly pay for the ZZT source code and thinks its just fine if they wanna charge for it.

    1. Re:Fellow ZZT Lover by JakeS · · Score: 2

      Moslo.

      It's a nice little cpu-eater that's really simple to use. Something along the lines of "moslo -66 whatever.exe" will slow the cpu by 66% and run your program. It'r pretty prolific on the net, especially on fan sites of old games. Origin even packaged it with the Ultima Collection so folks could play the old Ultima games on their beefy new systems.

      Dunno if it works in dosemu tho.

    2. Re:Fellow ZZT Lover by Esperandi · · Score: 1

      Thanks! if I were a moderator, you'd be +2, Informative ;)

      I don't have to worry about dosemu. Now I just gotta go do some searching for moslo!

      Esperandi
      Going to relive ZZT if he has to go buy a 386/SX33

  31. Re:Sweeney quote: Microsoft Word by gaw · · Score: 1

    His C=A+B argument is a good example. The function which adds an element of A to an element of B incurs overhead because it is a function. If you make special allowances for the list-of cases then you have just undid the abstraction. Yes, optimizers can do good things, but they only work so far.

    Uh, if your compiler and language are reasonably modern, this will incur no overhead whatsover. For example, the compiler will know that all these variables are arrays (or lists) and will generate the correct code to add them. No extra overhead is required over using a for loop instead.

  32. Re:He dissed Lisp! by Anonymous Coward · · Score: 1

    Especially funny. Crash Bandicoot 1,2,3 is largely
    written in Lisp. Sounds like a successful
    "research" topic. ;-)

  33. Re:Java Dosn't suck by Anonymous Coward · · Score: 0

    And I can't imagine that his VM is any faster than Java would have been. My machine runs Q3 fine, but if I load up more than 3 bots, it slows to a crawl from all the VM'd AI.

  34. Re:Orwell by vlax · · Score: 2

    If you redefine cognitive science to include any scientific data about human minds, I'll agree that the only scientific inputs linguistics is getting come from CogSci. But by that definition, most linguists are cognitive scientists.

    I could argue that the data coming from computer science, while helpful, isn't science at all.

    The roots of linguistics aren't descriptive, they're even worse, there philological. Early linguists were interested in literature and historic language change. That's the one thing I have to give Chomsky credit for: establishing linguistics outside of the humanities.

    Linguistics is no longer taught as an art at any respectable school of theoretical linguistics. There are still many universities where they teach what I might risably call applied linguistics but which mostly ought to be a part of the education department. That is a different story, but it also has different goals.

    I spent two semesters in math classes and three in programming labs in order to get my linguistics degree. I spent hours doing SQL queries on usage databases in hopes of getting enough data to do serious statistical analysis to support my hypothesis.

    More recently, it has become harder to be taken seriously as a young linguist without some knowledge of AI methods. (This doesn't apply to the hard-core Chomskyans, who don't believe in AI, as if that made any difference.)

    In short, things are changing in linguistics.

    As for having no feel for science, I have a Bachelor's in Nuclear Physics (from before doing linguistics) and let me point out that my citation of Berlin and Kay is not inappropriate. If the strongest form of Sapir-Whorf were true, this experiment should not have turned out that way. It covers more ground than the neurology of vision processing, since it shows that the mental manipulation of visual signals is independent of the native language of the subject.

    We can reformulate Sapir-Whorf to get around this, but depending on who you read, we are left either with a hypothesis that can't be verified (and is thus not science) or a hypothesis so weak as to be useless.

    Read Pinker on the subject, he puts forward his case against Sapir-Whorf on the basis (in part) of Berlin and Kay as a cognitive scientist.

  35. Re:He dissed Lisp! by James+Lanfear · · Score: 1

    Scheme is a neat little rendition of Lisp that, while better than many more popular languages, simply cannot match the power of 'real' Lisp. (IMO, of course.) While I'm happier with it than, say, C++, I would be very upset if it became the de facto Lisp in the world. Using the names synonymously just adds to the problem.

  36. ROTFL, but... by TheDullBlade · · Score: 2

    Hey! Forth rules!

    If I had to throw away all my nice dev tools and start over from popping in a byte at a time with 8 toggles and an enter key, the first thing I would do is code a Forth interpreter/compiler; even before I wrote an assembler (it's easier).

    The only reason I don't use Forth now is because I've got the entire UNIX dev environment to support me, which is almost as efficient as Forth and gives you some hint of portability.

    But Forth builds good programmers. You learn never to make a mistake, because mistakes eat your machine. You learn to debug your code by eyeball and brainpower, not with any machine aid. You learn to rewrite everything every time, and you learn that this can be faster than reading the docs for a library.

    (BTW, none of this applies to ANS Forth, which is a bad joke from the people who made Ada; Forth is something you should rewrite for every machine you use it on, just ask Chuck)

    Oh, you laugh now, but just you wait until we start writing massively parallel systems and you're begging Chuck to burn a thousand of his 250 MIPS (with a cheap fab) 10k transistor (with video processing!) processors on one chip.

    --
    /.
  37. Re:One nit to pick by astroboy · · Score: 1
    Another nit to pick: the issue of whether or not one's native language restricts what one can think is a philosophical question,

    Um, no. Questions about the interaction between language and cognitive processes are quite squarely linguistic and/or psychological questions. Philosophy typically considers questions of ethics, metaphysics, and epistemology.

  38. Re:Orwell by BJH · · Score: 2


    Speak for yourself, buddy. My linguistics courses were plenty scientific. Perhaps you think that if we don't use numbers, it's not science.

    And Berlin-Kay is in no way only about the purely physical process of converting signals from rods and cones in the eye into nerve signals, as you seem to say. If you've ever read their work and understood it, you'd know that. Or perhaps you think that there's nothing behind the eyes doing the processing that allows you to describe color?

  39. Re:Offtopic about First Posters by Mindwarp · · Score: 1

    I think that they're playing the 'who can get the lowest karma score' game. Let children near computers and look what happens....

    *Sigh*

    --

    --
    The gift of death metal does not smile on the good looking.
  40. BZZZT! The future is not object oriented by rambone · · Score: 1

    There has been a significant amount of research that has demonstrated that OO simply doesn't work as promised. There is a real indication that the future is efficient platforms (linux, Apache, Oracle) with extension languages (perl, python).

  41. Memories.... by tlight · · Score: 1
    Ah... this article brought back great memories... tweaking the vga card registers to get the perfect x-mode... looking over and over again just to make the inner loop of that triangle filler run a few clockticks faster...

    In fifteen years I'll be 40 and most young programmers won't probably even know what Bresenham does or how to optimize a texture mapper (unless they're designing a new 3d card perhaps)...

    It's a shame... I'm getting old and sentimental... ;)

    (that does not mean I don't keep up with new developments ofcourse)

    1. Re:Memories.... by HaKn5La5H · · Score: 1

      Don't worry, some of us are just getting into demo-coding... That's the only place where some people still tweak modex, write bresenham algorithms in assembly, and optomize texture mappers long through the night.

      I know, there are some demo coders out there doing DirectX or GL stuff (what are they thinking...), but the rest of the pack is still doing the same old stuff: under 64K, greatest all-assembly program, fastest shading, etc.

    2. Re:Memories.... by Anonymous Coward · · Score: 0

      Yeah, I'll be 40 in 15 years too, if I can figure out how to back up!

      Tweaking VGA registers? Shit, when I was your age I teaked display output with a soldering iron. Man, you kids just don't know what it feels like to watch hundreds of vamuum tubes power up! Two per bit. Betcha most of you young whippersnappers don't even know what bistable multivibrator is.

      Ok, getting more serious and back on topic, if you learn your math, and learn your hardware, the programing language you use is simply a matter of convienience, you already *think* on the level of the tin. Hardware is the only constraint on output. If you let language define your output you ain't doing it right in the first place.

  42. Re:One nit to pick by WNight · · Score: 2

    Orwell's idea was mainly that with a simplified language you'd have a hard time discussing treasonous thoughts, which you could have.

    Big brother was personified and anyone could want that image to be killed.

    But, explaining that to enough other people to make it happen... That's where it's tough with a newspeak type language. And that was the idea. Keep conspirators alone, and thus unable to conspire.

  43. Agreed, and OO is also on the way out. by rambone · · Score: 1
    OO has been oversold for twenty years. Folks - if it worked, it would be working by now.

    Scripting languages tied to efficient platforms (linux, Apache, Oracle) are the future.

    1. Re:Agreed, and OO is also on the way out. by radish · · Score: 1


      But it does work. It's working right now on my desktop, right in front of my eyes. I am currently working on a project to rip out a load of "scripting languages tied to efficient platforms" and replace the whole lot with Java. Pure joy...it is more flexible, maintainable, faster (!!), more stable. Basically, it's better.

      Perl has it's place (as I'm sure do Python etc. but I have only used Perl) but it's place is SMALL jobs, text & file processing, bits of "glue" around the edges. Not building large scale production quality client/server systems.

      --

      ---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"

  44. A weak Sapir-Whorf does survive... by vlax · · Score: 2

    ...and many even be possible, but it's a very weak form.

    Now, computer languages and human languages are very different matters. It is true that I pick my languages on the basis of what kind of project I have to do, unless the spec requires a specific language. When that happens, I can usually solve the problem, even if it isn't as much fun. If I can solve the problem in a language, I'm have some reason to doubt that the choice of language restricts project choices.

    So, I'll retain my scepticism with regard to computer languages, but it's just scepticism, I may be wrong about the habits of programmers.

  45. Re:Sweeney quote: Microsoft Word by Anonymous Coward · · Score: 0

    No he doesn't. He just says people are primarily buying faster machines for the games. Here's the quote: People don't need to buy new 800 MHz Athlon processors for running Microsoft Word or other business apps, or for web browsing. About two years ago, computers truly became "fast enough" for those applications. Today, it is primarily games which drive sales of faster CPU's and 3D accelerators. This got modded up? It's not a bad argument, but it makes me wonder if anyone (including the moderators) read the article.

  46. One proof point by delmoi · · Score: 1

    Well, I'm not a linguist, so I don't really know. However, I personally don't believe it to be true, I often find myself limited by the English language in my thoughts (like, i'll want to use a word that simply doesn't exist). That, in and of itself doesn't prove anything.

    However, if it were true that we were limited to only thinking in terms we already know, how would new words come about? In order for a new word to arise, and idea needs to come about. Take for example the word cyberspace or doublethink. Both concepts can be expressed in words that existed before them, however those words had to come from somewhere as well. It would certainly be possible to think up an ethereal 'space' inside computers and there data without knowing the actual term that describes it. If it were impossible to think up concepts that cannot be described in words, then why would we need to constantly make up new words?

    [ c h a d o k e r e ]

    --

    ReadThe ReflectionEngine, a cyberpunk style n
    1. Re:One proof point by paul.dunne · · Score: 2

      Yes, I see where you're coming from, but I think the point you are addressing here is more "can new ideas ever develop?", which, if we accept the principle that language limits thought, is co-extensive with the question, "does language evolve/develop?". Well, clearly the answer to the latter question is, "yes". What I was thinking of, was more, whether translation from one language into another doesn't inevitably translate native concepts into different ideas, their nearest equivalents in the target language. See Heideigger for powerful arguments on why this might be the case.

    2. Re:One proof point by Anonymous Coward · · Score: 0

      paul, stop it while you can. you look like an idiot. if you are not a linguist, just shut the fuck up.

  47. oh yeah by ArchieBunker · · Score: 1

    According to SGI's site the IR has a fill rate of 7 Billion pixels/sec. You're $100 tnt2 won't come anywhere near that. More Mhz does not mean a better cpu. Look at he FPU performance of Alpha and MIPS chips, they still crush pentiums. An Onyx with a R10k cpu tears up a seti block in a few hours, how long does you average pIII take? If cheap PC video cards are so good, why do all the major companies still do heavy rendering on SGI's? PC hardware just doesn't scale well enough. If you want raw power the Origin 2000 servers scale to 128 cpus, and even they can be clustered for a total of 1024 cpus.

    --
    Only the State obtains its revenue by coercion. - Murray Rothbard
  48. An article in the same vein from 6 months ago by Junks+Jerzey · · Score: 4

    Saw this at gamasutra.com:

    Toward Programmer Interactivity: Writing Games In Modern Programming Languages

    But I guess this guy isn't as well known as Sweeney :)

    1. Re:An article in the same vein from 6 months ago by Kaufmann · · Score: 2

      Thank you! I've been looking all over for this URL, to illustrate my point - that which the Gamasutra article sees and Tim obviously doesn't: that functional languages are not only extremely useful but conceptually far more advanced than anything that ever came out of New Jersey. I'll write a more complete post about this right away.

      --
      To the editors: your English is as bad as your Perl. Please go back to grade school.
  49. games drive the hardware market by Tim+Pierce · · Score: 3

    Games were responsible for creating the market which enabled 3dfx and NVidia to mass-product $100 graphics chips which outperform $100,000 Silicon Graphics workstations. In terms of technological progress, we game developers are way more influential than most of us realize.

    My father has argued for years that the ``real purpose'' of the personal computer is gaming. Everything else is just an excuse to develop and buy these fabulously expensive toys.

    For a long time, I thought it was a pretty funny joke, but a couple of years ago I realized that he was exactly right in a very real sense. No other market drives the demand for powerful hardware as much as the game market. There are few applications that really demand such high processor speeds or bus clock rates or monster graphics cards, and those applications tend to be special-purpose high-end professional tools like CAD or scientific visualization software. Gaming is an end-user luxury market, and is the chief reason for the constantly increasing bleeding edge of the computer hardware market.

    It's true. The real reason that the personal computer exists is so that we can play games. It's very fortunate that we have been able to construct this multi-billion-dollar industry to hide that fact.

    1. Re:games drive the hardware market by Anonymous Coward · · Score: 0

      Your father was, and continues to be, absolutely right.

      When I first contacted the net way back in the days when it was still military/university territory what was the most popular program running at most terminals? Star Trek. Why did we need to get rid of the tty and replace it with the CRT? To play Star Trek faster! It's a fact, even in business and academia, if it ain't got the games its in a single purpose niche.

      I hate Windows. I love Linux. I'm using Windows right now. Why? Can't get rid of the damn thing, I'm *not* going to give up my games.

      When will Linux become ubiquitous on the desktop? Not one minute before I can play *any* game I want on it. That's the only thing holding it back. Not ease of use, not the fact that it isn't gooey enough, not because it dosn't run Office,no. Granny'll learn ALGOL if she has to to play her favorite game.

      Face it folks, we like to have FUN!

  50. Re:Nonsense. Big languages are on the way out. by Goonie · · Score: 2
    in that cases you throw out the rulebook and make it efficient for the narrow task at hand

    However, "little languages" have a nasty habit of growing into full-fledged programming languages and the compromises that were fine when it was just a quick hack suddenly become ugly, cancerous warts.

    IMHO, Tcl is an excellent example of a "little language" pushed too far. It was originally designed as a glue language for bits of C. The designer never envisiaged anyone writing fully-fledged programs purely in Tcl, and consequently there are some quite large warts lying around.

    --

    Any sufficiently advanced technology is indistinguishable from a rigged demo
    --Andy Finkel (J. Klass?)
  51. Analagous to scientific diciplines.. by Ravensign · · Score: 1
    Upon reflection, perhaps the "One True Language" concept is like insisting that their be one true discipline of science, usually Physics.

    Chemists rely on physical principles to perform Chemistry, only their esoteric semantics and methods make it more efficient for solving the problems they deal with.

    They aren't Physicists and neither are Engineers, Computer Programmers, or Butchers, although "physics" could describe the rules that govern their interaction with their subject matter.

    The uber-language idea may be the same as trying to define all disciplines as inferior or "branches" of Physics, it is inefficient and ineffective to do so. There is too much knowledge and practical art to shove it all under one umbrella.

    Having said that though, I agree with the Tim's endorsement of taking OOP further. Just because there is a place in this world for C, doesn't mean we should stop developing and refining new languages.

    --
    "Sig free in '03!"
  52. Remember your audience. by GoNINzo · · Score: 2
    A large portion of the reading audience of GameSpy will be younger gamers with very little knowledge of Object Oriented Programming. Some with no programming experience, or interest in such programming.

    Also, most will be hardcore gamers, which isn't always the same as hardcore geeks. These people are interested to hear that their hobbies are near the cutting edge of technology. And with the right development cycle, computer gaming has the capability of *always* being near the fore-front of the technological edge.

    Because you all remember when running a phone-book type database was 'cutting edge' on D-Base III, right? `8r)

    Disclaimer: I'm the Unix admin for GSI, running the chat portions.

    --
    Gonzo Granzeau

    --
    Gonzo Granzeau
    "Nothing the god of biomechanics wouldn't let you into heaven for.." -Roy Batty
  53. Re:Orwell by BJH · · Score: 2


    I had a look there, and the only paper to refer to Berlin-Kay gave a very rough overview of it. If you'd actually bothered to read the full paper (as some of us have), you'd know that it is about this very topic.

    Keep your "opinions" to yourself, thank you very much, unless you have some facts to back them up.

  54. Tim Sweeney promulgates a popular myth by Zooko · · Score: 1

    The hypothesis that Tim Sweeney presents as fact in the first paragraph ("When you read about linguistics, the study of human languages (not computer languages), a recurring theme is...") is considered to be a myth by most linguists.

    Sorry I don't know of a web page explaining how Shapir-Whorf (as this hypothesis is called) has been discredited by evidence.

    Zooko

    1. Re:Tim Sweeney promulgates a popular myth by the+eric+conspiracy · · Score: 1

      I have heard similar similar comments that the Shapir-Whorf hypothesis has fallen into disfavor.

      HOWEVER, my own experience is that the English language is a crappy way to think about a lot of problems. Many of the problems I have to solve require the use of complex logical structures (i.e. mathematics) for which there is no direct way to express in English. Without these tools of abstraction THAT DO NOT EXIST IN ENGLISH I would not be able to solve these problems.




  55. Re:One nit to pick by paul.dunne · · Score: 2

    No it isn't! BUT, since you're obviously not intested in genuine debate, I guess "hear endeth the argument". (but one last hint: there's a strong argument for calling all of philosophy since the Vienna School Linguistic Philosophy: but I guess now that you've cleared it all up they can all just go home/roll in their graves (pick an appropriate response).

  56. The Programmer's Stone by kuro5hin · · Score: 1
    In the middle ages, everyone wanted to find the Philosopher's Stone, that was supposed to turn base metals into gold.

    I want to find the Programmer's Stone. The language in which I can write this program:

    while (1) {
    do $everything;
    }

    "We're on a mission from Gahd."
    --The Blues Brothers

    "Moderation is good, in theory."
    -Larry Wall

    --
    There is no K5 cabal.
    I am not the real rusty.
    1. Re:The Programmer's Stone by ddwalker · · Score: 1

      Syntax looks almost like Tcl...except it would be more like:
      while {1} {
      eval $everything
      }
      Just be sure the everything variable has a meaningful script assigned to it...

      (Not sure if the 1 is valid...if it isn't then use true.)

  57. Not necessarily by vlax · · Score: 1

    I know Anna Wierzbicka firmly believes in her Lingua Mentalis (even if I'm sceptical) and she's still taken seriously. If she's right, even weak forms of Sapir-Whorf have to be false.

    It is hard to say with certainty whether a person's language has any impact on how they think, but I have yet to find any concept that can't be understood and manipulated by a sufficiently intelligent speaker of another language. I don't think even the weak form is generally accepted these days, although I admit some linguists are still holding out for a weak form of the hypothesis.

    I have to conceed that a desperately weakened for of Sapir-Whorf may be true, due to the difficulty of distinguishing cultural impact on thought from linguistic impact. But every clear case I know of has failed to show even the weak form.

    1. Re:Not necessarily by BJH · · Score: 1


      Hey, I'm on your side ;)

      The Lingua Mentalis certainly seems to put S-W in the dustbin of linguistic history, but as far as I'm aware, it's only been proposed as the basis for common language structure, not the be-all and end-all of lingual thought. There's still a long way to go before a direct relationship can be proved (?) between lingual thought and actual expression.

    2. Re:Not necessarily by ralphclark · · Score: 2

      I hope you're not suggesting that we all share a common language structure genetically preconfigured in our brains.

      I admit that there will be practical limits to the complexity of utterances, in terms of the number of nested clauses etc., because of the (largely) shared limitations of our brains. But apart from that, grammar evolves within a culture simply according to need.

      If a language is to be complete, some elements *need* to exist - nouns, verbs - just as procedural computer languages must have variables and executable instructions representing sequence and selection between conditions to be useful. And since the physical world is made of objects existing in time and space, acting and being acted upon, it is necessary for grammars to share constructs expressing relative proximity, tense, and who did what to whom. Necessity is the mother of invention, as Plato says. Or, to paraphrase Voltaire - if grammar did not exist it would be necessary to invent it.

      But I see no solid evidence that any specific grammar or metagrammar beyond that is genetically preconfigured in our brains. If you think you have such evidence, then please share it.

      Chomsky never succeedes in providing such evidence. And in the last few months, the most outspoken critic of Chomsky has become Chomsky himself; he's finally abandoned the burgeoning edifice of complexity he's been promoting for the last 50 years and now favours a "minimalist" grammar.

      Ha! Vindicated at last...

      Consciousness is not what it thinks it is
      Thought exists only as an abstraction

    3. Re:Not necessarily by BJH · · Score: 1


      Nah. I chose the wrong word with "structure", and regretted it immediately after sending the comment when I realized some pedantic bastard would probably jump all over me raving about how "universal grammar" doesn't exist ;)
      What I was talking about was a much lower-level correspondence between language and neural structure; i.e., the sort of thing you're never going to find evidence of in natural language structure. I've never gone along with Chomsky's thinking; it's all too artificial and lacking in any real evidence to back it up. If he's abandoned it, I'm happy, but he sure sent the whole linguistic world on a long detour.

    4. Re:Not necessarily by orabidoo · · Score: 2
      huh??? have you even looked at Chomsky's minimalist program? it's very much in the line of his earlier efforts; the model has changed, and been simplified considerably, but it doesn't depart one bit from the idea that the basic structure of language is innate.

      and no, I don't have a personal opinion on it, eiher way. Goverment&Binding (aka Principles&Params in its later versions) came forward enough to predict non-trivial language features that could be checked; I don't think minimalism has gone this far yet.

  58. Re:I've been waiting all day for this to get poste by jacobm · · Score: 2
    Hmm... Java is dynamically typed, and most of the time it isn't "really, truly" compiled. (Unless you count compiling for a VM as "really, truly").


    That was true of the really old java run-time environments, but it hasn't been for a while now. All of the RTEs I know of compile the bytecode to native code before they execute it.

    I know, a minor point.
    --
    -jacob
  59. Re:Nonsense. Big languages are on the way out. by Anonymous Coward · · Score: 0

    C++ isn't the present of programming languages? I guess you're just trying to be "edgy" to get a reply. Okay, I'll reply. You're full of shit. Regardless of what you use, a large number of large corporations presently use C++ to make a large number of applications that they sell a large number of. Ever heard of Microsoft? Yeah, yeah, you try to hedge your bets by saying "no one uses it for object oriented programming" so that you can defend your argument by quibbling over the fine details of the definition of object oriented. But to put it briefly: you're full of shit.

  60. Yes it does. by aheitner · · Score: 1

    It provides no functionality not in C++, doesn't make writing the same program in C++ significantly easier, and is butt-slow to boot.

    Not exactly winning characteristics, eh?

    I don't care if it's faster than when it was introduced. I care it's still way slower than compiled code.

    Do the benchmarks yourself. Write a simple program the same way (same algo/data structure) in C++ and in Java. Run it with the best JITC you can find.

    Do you think gamers who spend big bucks on fast CPUs and killer graphics cards will look kindly on you wasting their money by writing slow code?

    ...

    I don't agree with everything Carmack does.

    But offloading work from compiletime to runtime doesn't seem like a good idea at all if you're working on a system that's pushing the speed envelope already, by very nature.

    1. Re:Yes it does. by rcromwell2 · · Score: 2


      1) Java does make programming easier than C++. It eliminates the need to screw around with stupid #include guards, forward declarations, memory allocation policy, and Java exceptions instantly zero you in on the line of code causing problems, which makes debugging way easier. Java also comes with *WAY* better runtime libraries than ANSI C++.

      2) It's not significantly slower. You made the assertion, you provide the benchmarks with source. I'll optimize your Java benchmark to show you that you don't know what you're talking about.

      3) You don't have a clue as to what you're talking about. Almost all complex games use a runtime interpreted scripting language that is significantly slower than Java in execution speed.

      QuakeC (Quake1), UnrealScript, Tribes Script, Half-Life, etc.

      The reason why this might confuse you, is because you don't understand the optimization principle: 90% of of the CPU is spent in 10% of the code. Switching from interpreted scripts to binary C might yield a 10% framerate increase, big deal.

      On the other hand, with interpreted scripts, you're guaranteed not to be hit by a VIRUS in that free quake module you just downloaded.

      VMs also make it easier for game developers to dynamically test game logic without having to rebuild/relink a library and reboot the Quake server.

      One thing's for sure, Carmack knows alot more than you. And he has a Ferrari.


    2. Re:Yes it does. by Ribo99 · · Score: 1

      Development time is significantly faster.
      You try writing a quick networking implementation in C++. You will be busy debugging that part of the code while the Java programmer puts the finishing touches on his GUI.
      Granted, I would NOT want to write a speed intensive game (or app) like Quake3Arena or UT in Java.
      The biggest reason that Java applications are written is _platform_independence_! Try writing network middleware and web based e-commerence solutions with C++.

      Yes, C++ is NOT faster then Java.

      SPEED ISN'T EVERYTHING!!!

      Thank you and God bless... :)



      ---

      --
      I wear pants.
    3. Re:Yes it does. by Anonymous Coward · · Score: 0

      Lessee: C++ has: - umpteen level pointers - syntactic sugar galore, including templates, operator overloading, procedural functions [i.e. not in a class], no auto memory management, preprocessor directives, optional dynamic binding, and an I/O system that is fundamentally different from every other API in the language. Java has: - no syntactic sugar - what you see is what you get - automatic memory management - automatically de-referenced pointers, only 1 level - A consistent I/O API - Standard dynamic binding & a default class hierarchy to eliminate the need for templates. - Dynamic JIT compilation that can inline code during execution, making this code FASTER than C++ code because it can monitor execution profiles. Which one was easier again? Remember folks: making PEOPLE more productive is a more economical and pleasurable exercise than squeezing an extra nanosecond out of your computer. How primitive.

  61. Re:missing the point by Anonymous Coward · · Score: 0

    I agree whole-heartedly.

    All the features he listed as necessary for next generation languages are common features of functional languages. SML and Lisp have had parametric polymorphism for years. Persistence is so trivial in Lisp that it's a non-issue. Similarly, Lisp's macros set the definitive standard for meta-programming. Furthermore, functional languages like ML, Haskell or Clean set the standard for current type systems (Clean and SML/NJ are not toys).

    In any case, it was interesting to see him basically dismiss Lisp (in particular) as an academic toy. Given the problems it's used to solve, I presume they'll appreciate being reminded of their youth. FWIW, I presume his definition of toy is *not* accepted in the market.

  62. Eiffel? by Esperandi · · Score: 3

    Eiffel is the object oriented language at the forefront of object oriented development. It's not widely used, but whenever a new concept in object oriented computing comes around, Eiffel incorporates it. I don't know enough of Eiffel to know if it supports "virtual classes" yet, but I'm sure if its doesn't that its only a matter of time...

    It does include something that will probably get included in whatever language comes down the pike in the future (and there are ugly hacks that try to do these things in C++ and Java that people actually SELL)... Design By Contract is one, and incremental compilation built into the language is another. The Design By Contract is where the gold is for me (then again I've never made a single change to a program and had to wait 2 hours for a recompile)... once the source code is done in Java and C++, once your classes are frozen and done, you have to write documentation. With Eiffel you just hit the "generate short form" button and it generates an astounding amount of information for your classes, variables types, bounds, everything. And it does it in every format imaginable. Setting hard code-level bounds on variables with a single keyword is golden, setting down the bounds of things being passed into a method and the things going out of it is wonderful.

    Even better is that 99% of these really high level features cause NO code bloat, they're to speed debugging, facilitate actual code reuse, etc.

    How many people do you know in C++ that are actually comfortable and practice the "black box" theory of classes?

    Esperandi

  63. Re:Nonsense. Big languages are on the way out. by mrpotato · · Score: 1

    I guess you fall into the category of people that can't see farther because they can't think differently, like Tim Sweeney said. Probably you are too experienced and too involved in your way of programing that you will not admit that it could get much better. (better anyway than hacking togheter piece of code with perl...)

    Guillaume Germain
    ---------------

    --

    cheers
  64. Re:One nit to pick by mistabobdobalina · · Score: 1

    hmmm...how familiar are you with cognitive science research i.e. metaphor theory, conceptual frameworks etc. lakoff, johnson, and friends. language _definitely_ impacts how we think. not a professional but its just too common-sense not to happen. of course chinese can understand say moral hazard but just like the referenced article was saying, if its not easily done its much less likely to get used.

    --
    -- your knees hurt, don't they?
  65. Re:Almost all apps are written in either C++ or VB by SnakeStu · · Score: 1
    Upon what do you base this language use assertion? Even if we accept (perhaps when we should not) that C++ and VB are predominant, that is entirely different from stating that "almost all" apps are written in them. "Almost all" implies a very high percentage of the total (perhaps 80% or higher), whereas "predominant" simply implies a percentage that is larger relative to other percentages (which could only be 10% if the rest were 1% and 2%, but in which case the term "almost all" obviously could not be applied to 10%).

    Also, of what language relevance is the chosen OS? For example, I use Perl a lot under Windows NT. With the exception of OS-specific scripting languages (e.g., DCL under VMS), no correlation between OS and language choice should necessarily be assumed.

    Perhaps it would be worthwhile for you to define (for yourself, at least) what you mean by application, and also to consider the how difficult it would be to truly determine the usage of languages to develop those applications, without having such a narrow definition of application as to border on unusable. Remember, the stereotypical Y2K step-in programmer worked on COBOL code...

    Journey to Yandol

  66. Re:Sweeney quote: Microsoft Word by craw · · Score: 1
    A recent issue of the Smithsonian magazine had an article about how Intel makes their chips. At the end of the article, the writer talks to Gordon Moore of Moore's Law. Here's a nice quote from him.

    There will always be a need for greater power and speed, Moore added. The software programmers can always use it. "We have a saying, Intel giveth and Microsoft taketh away."

  67. It's a reasonable hypothesis by vlax · · Score: 2

    But, there are alternatives. One is that thought takes place in some kind of lingua mentalis that is the same for everybody and exists only in the mind. I think this is the majority position among linguists (but is by no means universal.)

    There certainly is no evidence that people think in their native language at all, and considerable evidence agsinst the idea. The details would take some time to document and explain.

    Due to the failure of experiment to show any Sapir-Whorf effect, after decades of trying, I feel secure in saying that the hypothesis is, certainly in its strongest form, as without merit as the aether or flogiston in physics.

    As for books, I recommend starting with Pinker's Language Instinct. It contains some things that I don't think are true, but for someone who isn't a linguist these are mostly minor matters. Language Myths (edited by Bauer and Trudgill) is another good one, and The Great Eskimo Vocabulary Hoax by Pullum and McCawley.

    Those are good places to start. If you're looking for something more like an entry level textbook, e-mail me.

    1. Re:It's a reasonable hypothesis by Kaa · · Score: 1

      There certainly is no evidence that people think in their native language at all, and considerable evidence agsinst the idea

      That's weird. I'm bilingual and I know that sometimes I think specifically in one language, sometimes I think in the other one, and sometimes I think in kinda 'mental symbols' that are later verbalized in one of these languages.

      Kaa

      --

      Kaa
      Kaa's Law: In any sufficiently large group of people most are idiots.
  68. Re:Check out Eiffel by Anonymous Coward · · Score: 0
    The second Linux gets a free Eiffel compiler, the world will start to listen.


    http://smalleiffel.loria.fr/

  69. Abstraction vs. layers of abstraction by drivers · · Score: 2

    Abstraction in a language doesn't have to incur slowness. I think you are thinking of "layers of abstraction." Such as "xml running on a regular expression parser running on perl running on java running in an applet running in netscape running on an internal scripting language running on C running on motif running on xlib running on pipes running on linux running on C over tcp running on ip running on ethernet running on linux running on C running on machine language running on a transmeta code morpher running on VLIW on Crusoe."

  70. So high-level: not insightful, more like obvious. by phlake · · Score: 1

    I'm a professional programmer, and I assume that some of you are, too. As programmers, don't we know the difference between hardware, assembly, procedural and OOP? Aren't the descriptions offered in this article more in the "blatantly obvious" category? I was hoping for something more in-depth, I guess. This guy sounds like my boss trying to explain to a client what exactly they're paying for. His "insight" is not new. It's not even interesting. My response? "Well, duh."

  71. Re:One nit to pick by steffl · · Score: 1

    now that you started - how many words for snow do they have? :-)

    erik

    --
    ...all excited, don't know why...
  72. Re:Other reasons to idolize Tim Sweeny by jzig · · Score: 2

    Well, I'm a member of a community that branched off from zzt, based on a zzt-like program called megazeux(which I'd link to if a good site existed). Anyway, one of my fellow members(kevin vance, who I thnk goes by kvance here)is currently working on a gl reimplementation of zzt, and it's really weird :P http://www.linuxstart.com/~kvance/evil.j pg and http://www.linuxstart.com/~kvance/evil2 .jpg show some intruiging screenshots. Anyway, this looks like it may be the thing for you, and there is a port of megazeux for linux coming(eventually) in the future. Hope this whets your zzt in linux appetite. Also, zzt.org is a good source of zzt information if anybody cares.

  73. Re:One nit to pick by astroboy · · Score: 1

    The philosophers I've studied under would be a little disturbed to find out that you've decided that developmental psychology is an appropriate subject for them to study.

  74. Re:One nit to pick by paul.dunne · · Score: 2

    Completely wrong. Try to catch up on some 20th Century philosophy in your free time.

  75. Lakoff, et al by vlax · · Score: 2

    I'm familiar with Lakoff's work on metaphors, but I don't think his work touches on the Sapir-Whorf question. To put it simply, I don't think his work in metaphors qualifies as linguistics.

    Now, I think what he is doing is useful and I'm all for it. I like Lakoff, and his work on categorisation (which is a linguistic topic) was a major influence on me before I traded career for money and became a programmer. However, are his metaphors really linguistic, or rather cultural commodities? None of the metaphors I know him to have described involve word play (eg confusing 'free as in free beer' vs 'free as in freedom'). If I recall what Lakoff was saying, there is no fundamental reason, other than chance and culture, why those same metaphors couldn't exist in Chinese, or Inuit for that matter.

    Common sense can throw you for a loop. Look at quantum mechanics - it's about as counterintuitive as you can get. Always hold out for empiricism.

    1. Re:Lakoff, et al by mistabobdobalina · · Score: 1

      i actually took an intro class from lakoff. anyway, the bottom line with cogsci research is that higher reason and meaning is largely based on a metaphorical understanding of the world which is based on physical schemas and extended upwards via metaphor. the classic approach to linguistics (and everything else in classical western thought) is to an extent superseded by this theory - reason and minds aren't abstract entities operating in a purely theoretical realm but are in fact all higher reason is BOUND to physical reality in terms of using a physical schema set. This is not to say that we can't make things up in our minds however there are many boring sideeffects of the theory that essentially end up in your hypothesis that language doesn't bound understanding being pretty much untrue. i encourage you to give a closer look to these theories, specifically mark johnson's book the body in the mind, and lakoff/johnson's 1991 and 1998 joint works. this is good stuff - if you get into it it will change the way you look at the world...

      --
      -- your knees hurt, don't they?
  76. Abstraction requires you to make tradeoffs. by Anonymous Coward · · Score: 0
    Uh, if your compiler and language are reasonably modern, this will incur no overhead whatsover. For example, the compiler will know that all these variables are arrays (or lists) and will generate the correct code to add them. No extra overhead is required over using a for loop instead.
    By your own statements, abstraction then is a tradeoff between larger programs (i.e. compiler creating a for loop for the abstraction) and slower programs (compiler putting runtime code to figure out what to do with the abstraction, i.e. RTTI). Some of the results of tradeoffs may be insignificant but for code that requires speed, a programmer must know what performance he will expect from what he writes.
    1. Re:Abstraction requires you to make tradeoffs. by gaw · · Score: 1

      By your own statements, abstraction then is a tradeoff between larger programs (i.e. compiler creating a for loop for the abstraction) and slower programs (compiler putting runtime code to figure out what to do with the abstraction, i.e. RTTI). Some of the results of tradeoffs may be insignificant but for code that requires speed, a programmer must know what performance he will expect from what he writes.

      You are missing the point. The point was that there should be a simpler way to express the addition of arrays or lists. If you have to add two lists, making an abstraction such as C = A + B to do so adds no overhead, the computer still has to use the for loop no matter what. It is completely notational.

    2. Re:Abstraction requires you to make tradeoffs. by Anonymous Coward · · Score: 0
      umm... Personally I think the for loop is much more clear. It defines exactly what the behavior is. When i see arraya+arrayb my first thought is that it is concatinateing the arrays as if they where strings, but the for loop makes it clear that you are summing the elements. (although it would be better to put a sentinal value at the end of the array and use a while loop, so the array can be of variable length.)

      This is the same flaw with the idea of haveing a language that is normal english. English is not well defined. I can say one thing, and it can mean several different things.

      As for my choice of language, I currently use perl, c, and sql, but I know pascal, basic, and a bit of C++. I'm currently learning ada, and I think it will superseed c as my current language of choice.

      When proformance is not an issue, and it's a small project, i use perl. Quick and dirty, great for administrative tasks, but when you start designing larger systems, or doing something perl wasn't designed to handle, its highly irritateing. C, on the other hand is really fast, but usually takes a bit longer to write something small.

    3. Re:Abstraction requires you to make tradeoffs. by kulturkritik · · Score: 1

      like he said, this is just notational. You could just as easily express the shorthand C = A + B (sum the values of two lists) as

      C = sum_of_two_lists( A, B )

      (in other words, with a function instead of a possibly ambiguous operator)

      I agree with you, it (the operator syntax) is unclear. But that doesn't mean the concept is flawed. And the point was, if you have some mechanism to sum two lists (whether through an operator syntax or a function), that's better than rewriting a for loop every time you need it, and possibly introducing bugs. Plus, like someone else pointed out, there is more room for compiler optimization, since you know less about the internals of the operation, and the compiler has more "leeway".


      Peter

  77. Java problem by Esperandi · · Score: 1

    It could be used in a game?

    Ever had garbage collection start churning in the middle of a VSync?

    Esperandi

  78. Re:missing the point by Eidolon · · Score: 1

    Indeed. Thanks for making these points.

    A number of commercial Playstation and N64 (!) games were written in a mixture of mostly-Lisp and some-C.

    There have been small, fast Lisp implementations for a long time; it ran just fine on the earliest PCs. Lisp, Forth, and Smalltalk all have been made to run on tiny hardware (Palm, other PDAs just as examples).

    It's always funny to see people write about Java and C++ as "object-oriented" languages, or how object-orientation "doesn't work", etc. If you want to see real OO at work, you have to look at Lisp and/or Smalltalk; even OO dialects of Forth. All of these can be compiled to native code...

  79. Yay! by Anonymous Coward · · Score: 0

    First I agree, but the best part was the extremely rare correct use of, "begs the question." So nice to see it once and a while.

  80. error in "Tim Sweeney promulgates a popular myth" by Zooko · · Score: 1

    Sorry I misspelled "Sapir-Whorf".

    Zooko

  81. Re:Not bad by MacOSNeedsDeath · · Score: 1

    C++ was based on Simula. Read Bjarne Stroustrup's The Design and Evolution of C++.

  82. Re:Check out Eiffel by Anonymous Coward · · Score: 0

    SmallEiffel is making good progress. I don't
    have the URL at hand.

  83. Re:One nit to pick by paul.dunne · · Score: 2
    I have the strangest feeling that the statements

    The days of philosophy's monopoly over the mind are long past, and philosophy is better because of it.

    and

    I use windows. Sorry.

    are somehow related.

  84. Two by vlax · · Score: 1

    It depends on what you mean by 'word' (and what you mean by 'snow') but in the Inuktitut spoken in Iqaluit, I remember only two root words for snow. It think one of them was "qaniit" (or maybe "qanik"?) and the other one was "aput" (or maybe just "apu"?).

    There were other words that made references to snow and ice, but so do far more than two words in English.

    Also, remember that Inuktitut uses a lot more morphology than English. In theory, Inuktitut could be said to have an effectively infinite number of words for snow, since sometimes complex sentences are turned into single, long words - but in that sense, Inuktitut also has an infinite number of words for 'coffee.'

  85. Ever heard of "Turing Completeness" by Brecker · · Score: 1

    The Turing machine is the benchmark for logical completeness. When you write a language, it is either Turing complete, or it is not. If you have Turing completeness, then you have a "complete" language, that you can essentially make do whatever you want.

    It is quite important to realize that this does not mean that YOU can do whatever you want, however. If you don't believe me, try recoding the linux kernel in assembly. The speed benefits will be amazing. Waste of time? Because you are incapable of formulating the complete logic system necessary to build a kernel. Assembly certainly has the power to tell the computer to do ANYTHING. You simply don't have the mental or time resource to command it properly in this case.

    I'll comment less on the connection to human languages. There is a certainly a similarity, but I will leave it to those who claim to know linguists to debate this.

    1. Re:Ever heard of "Turing Completeness" by orabidoo · · Score: 1

      hey, Unlambda is Turing-complete... how about we rewrite the Linux kernel in that? :)

  86. Re:He's got some interesting ideas by Esperandi · · Score: 1

    "How many thousands of lines of code would you have to write in C++ just to get this functionality? "

    Well, none if you use MFC, this is built in...

    BTW, Eiffel is great, I have to learn it, I'm glad to see someone else is watching it!

    Esperandi

  87. Your post is contrary evidence by vlax · · Score: 3

    You speak English (I assume you're unilingual, if not, imagine the many folks on /. who are) yet you can clearly understand the difference between 'free as in speech' vs. 'free as in free beer.'

    Your language has obviously not restricted your ability to think in this respect. Someone, somewhere, once upon a time, explained what they meant by 'free software' and now you have no trouble thinking clearly about it. The lack of a simple translation has no impact on your ability to think.

    1. Re:Your post is contrary evidence by Hard_Code · · Score: 2

      "yet you can clearly understand the difference between 'free as in speech' vs. 'free as in free beer.'"

      That's because we have the concept of freedom as in liberty...we overload the word 'free' with this other meaning. If we did not have 'liberty'/'freedom', then we'd be SOL.

      I do believe language shapes perception. Take some African tribes - they don't have any words to describe ownership...because all property is communal. I'd like to see you walk up to their village and attempt to describe ownership to them. My guess is that it will be very difficult because their perception since they were born has been influenced by their language.

      Likewise some Native American languages interchange parts of nature for their attributes. 'Grass' and 'green' are the same word, as are 'blue' and 'sky'. Yes, I'm sure Native Americans internally realize the difference between a color and a physical object, but their perception of the world, or frame of reference, is slightly different. Instead of 'chief' you have 'one-who-does-good' - think about how different that is from the perception of government as a hierarchy.

      Jazilla.org - the Java Mozilla

      --

      It's 10 PM. Do you know if you're un-American?
    2. Re:Your post is contrary evidence by elegant7x · · Score: 1

      "Freedom" had to be defined somewhere, by someone, at some time. All words can be broken down in to simple primitives, that can be learned by Visual/Tactile/etc association. If that wasn't the case, how the hell would you know what it meant?

      Amber Yuan (--ell7)

      --

      "and dear god does this website suck now." -- CmdrTaco
    3. Re:Your post is contrary evidence by Krilomir · · Score: 1

      The fact that he NEEDS and explanation before he knows what they meant by 'free software' (or 'free beer') just shows how restricted a language can be. If there were a word for free software, no one would be in doubt.

      Of course he knows what is meant by free software - most ./ readers does. But still there are people who could misunderstand what is meant. That wouldn't happen with a word for it. It doesn't limit ones ability to think, but it limits our ability to express us clear. Sometimes, we need a whole sentences... sometimes a word will do (like the new English word 'slahdoted' :)

      Of course our ability to think isn't restricted by our language... our language just makes something harder if we don't have the right word. The same with programming language.

  88. Check out Eiffel by Esperandi · · Score: 1

    "In my opinion, bounds should NOT be part of the type system, but should be inferred by the compiler as optimizations (to remove dynamic checks where possible). It is very difficult for the programmer to do these kinds of analyses. (Imagine a notzero type of integer, and division is function type (int * notzero) -> int!) On the other hand, experience has shown that array bounds checks are one of the biggest cycle-wasters in modern languages, so this issue must certainly be addressed somewhere. "

    You would find Eiffel very interesting, you ought to check it out!

    Esperandi
    The second Linux gets a free Eiffel compiler, the world will start to listen.

    1. Re:Check out Eiffel by Tom7 · · Score: 1


      My taste leans towards functional languages, but I've heard some good things about Eiffel and will check it out. =)

      - Tom 7

  89. What kind of language Tim is native speaker of? by Anonymous Coward · · Score: 0

    Which "limits him" to talk about functional languages?

    1. Re:What kind of language Tim is native speaker of? by Tom7 · · Score: 1


      He was talking about object oriented languages, as far as I could tell.

  90. Re:Concision isn't the issue. by Daniel · · Score: 2

    The main implication that occurs to me is that verbs aren't conjugated, and you probably need helper verbs for different tenses (or are expected to just pick it up from context)
    Daniel

    --
    Hurry up and jump on the individualist bandwagon!
  91. Inheritance, Demeter's Law and Design Patterns by exa · · Score: 1

    Correct. But that's not how we're supposed to design right? If you do a deep tree inheritance tree, then you're probably lost in it. That indicates, to my experience, just a bad design.

    Fat classes subclassing over and over again. Like MFC. That sure doesn't work. The whole point of OO is to make things comprehensible and expressive.
    Then I think we should stick to design principles such as Demeter's Law which says you shouldn't do any *far*, that is involving much indirection, they've formalized it, and calls, and furthermore no class should include more than n methods. Say 7 if you'd like to make a reference to 7+-2 law of perception. That's called Adaptive Programming, probably you've heard it though, it works considerably well.

    Design patterns also work out. Personally I use the same patterns in radically differing projects. And surprisingly different than GOF implementations. I take C++ features such as template specializations and generic functions to be most useful for a concrete implementation of patterns, for instance singleton, or adaptor patterns... Writing compilers and interpreters also work well I guess, that is compilers / interpreters that your system uses to translate things into native language (such as C++)

    --
    --exa--
  92. Re: on perl by Anonymous Coward · · Score: 0

    Eiffel big on perfomance? Thats a joke. Its a really nifty language, but it makes Java look like a speed demon in comparison.

  93. Re:One nit to pick by BJH · · Score: 1


    We are talking about Sapir-Whorfe, right? The influence of language on thought? (What there is of it, anyway.) I'll make it clear for you: This is not philosophy.

    As for the shortness of my comment, you seem to have a personal vendetta against linguistics, so I didn't think you'd take any notice of any arguments, no matter how reasonable. It appears I was right.

  94. Re:Intersting opinion by Anonymous Coward · · Score: 0

    I'm currently setting up a live masturbation web cam. I'll spam slashdot when I get it done so you'll know :-) btw lililililillililililil in Natalie Portmans pants!!!!

  95. Re:Verifiability by the+eric+conspiracy · · Score: 2

    If there is a concept which is unexpressible in another language, I would like to see it.

    Expressibility is not strong enough. You can express quantum chromodynamics in English, but you sure as shit can't use English to solve problems in quantum chromodynamics.

  96. Re:One nit to pick by James+Lanfear · · Score: 1

    that the realm of philosophy is those areas that haven't proven amenable to scientific investigation

    Hmm, that's not actually what I was thinking. I'm not sure if I would even draw a line between the two, considering how fluid science has become, and how 'scientific' philosophy has become. Psychology, after all, is barely even a science if we take physics as a prototype, and physics itself is becoming more like a branch of philosophy all the time. (Witness quantum mechanics, which was formulated as an epistemological theory.) It might be more rewarding to place philosophy in the same catagory as mathematics, hovering between science and the arts, but serving as a backbone for the former (and in this case, the latter as well).

    a statement ammenable to scientific proof

    Agreed. To the best of my knowledge, cogpsy and linguistics supports that intuition as well--there are certainly statements that can be made in, e.g., Japanese, that I'll never be able to fully comprehend, or even begin to understand. On top of that, language almost certainly can't be formalized, so we can expect it to remain a 'dirty' field. This is not to say that one couldn't come up with a crufty-but-workable way of translating the term, though.

    the theory that language and thought are a one-to-one transformation.

    Once again I agree. Taking the Language of Thought literally would simply be insane, and is a position that, AFAIK, is very unpopular.

    Circling back around to the beginning of this thread, while I agree that language restricts what can be expressed and, because language is so intwined with thought, what one can think about easily, I don't believe it follows that there are thoughts that people in culture A can have that those in culture B cannot simply because their languages are different. (Hopefully B can't express "run-on sentence" either. ;-) Culture B may have a helluva time wrapping their brains around A's subtle ganulations of social-emotional states (to pick an example at random), but I don't believe we can a priori comclude than B can't experience subtle social emotions. They may not even realise they can--sinse they lack the concept with which to express their experience--but it doesn't seem contradictory to say that they can still have those thoughts.

    OTOH, the opposite doesn't seem contradictory either. Time to call in the scientists, methinks.

  97. Re:Concision isn't the issue. by Anonymous Coward · · Score: 0

    I think you are pretty correct. Working ina department that is over 50% chinese. I would say that there are definate ideas that don't translate. A good example: the issue about the brother of the UnaBomber turning him in. One of the Chinese folks said that would never ever happen in China for it would bring too much shame to the family! I was astonished. When it was pointed out that the UnaBomber was a murder, it made no consequence to the person whatsoever.

    Turning in a murder VS. family honor?

    Definatly a conceptual difference!

  98. Re:Nonsense. Big languages are on the way out. by Arandir · · Score: 2

    Object oriented programming *works*. Even the Gnomies who rag on KDE because C++ use OO-like constructs in their "pure" C code and brag about their Python wrapper.

    But you yourself use OO. Just look at your post. You write "mini-languages ... to express a class of GUI widgets".

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  99. Correction by exa · · Score: 1

    No "and" before "calls". I meant "any *far* calls" Sorry.

    --
    --exa--
  100. Re:He dissed Lisp! by James+Lanfear · · Score: 1

    Sorry, I'm in a hurry to get to dinner, so I'll just use TUNES review: go here and read "Cons" (ironic, eh?). If it's not there, add "no decent object system" (AFAIK).

  101. I stand corrected by maynard · · Score: 1

    I'll look into that card, thanks to all of you!

  102. C'est vrai by vlax · · Score: 1

    C'est clair que l'anglais a emprunté pas mal de mots du francais, mais la question, c'est s'il a emprunté les sens qui y sont liés.

    Borrowing words happens. Germans call computers "Komputer", but it doesn't mean that until German had a word for "computer," Germans were incapable of thinking about computers. As soon as the first German was introduced to a computer (perhaps even earlier) the concept became thinkable, even if he (probably he not she) had to borrow a word to say it.

    1. Re:C'est vrai by spacey · · Score: 1

      You're jumping between concepts here. There are concepts with a material form: a computer (i.e. the one I'm typing on) which can be realized and included in the lexicon of the speaker by, as you state, "the first german [speaker] being introduced to one". There's also the abstract concept of a computer which exists without an introduction.

      Can you say some more about the latter's existance and (or limitations to understanding the existance of) in the native speaker without the introduction to the former, except as concepts and abstractions, within the language?

      -Peter

      --
      == Just my opinion(s)
  103. I don't write a language for just one thing. by TheDullBlade · · Score: 2

    "Why did you not write a separate mini-language for each of the GUI widgets?"

    What kind of idiot would write a language he is only going to make one statement in? I am not against solving the problems that OOP is meant to solve, it is the methods that do not work.

    When I write a mini-language, it is to parse many simple and concise descriptions of a group of similar things. A group of similar things can be described as a class.

    In an OOP language, there is a formal way of expressing things that fit into a class (in the general sense; the formal OO and C++ terms "class" have different meanings from each other and from this general English one). This formal method is often excessively verbose, inadequately expressive, inefficient, and generally a pain in the ass.

    So the reason I don't really like the majority of the elaborations on C syntax in C++ is that they are trying to create a single comprehensive method of expressing the infinite possibilities of variations on a theme. Learning this method takes too much effort (hence the oft repeated complaint "nobody knows all of C++"), using it takes too much overhead (both in programmer effort and in inefficiency of the final product), and it doesn't even make a good fit half the time.

    --
    /.
  104. Tim Sweeney Contradicts Himself by Anonymous Coward · · Score: 0

    I greatly respect Tim's recent article on programming languages, because leading game developers do hold great influential power in the software industry. However, I found Tim's article, "A Critical Look at Programming Languages" to be very interesting, yet flawed. The reason that his article is flawed stems from one of his opening disclaimers: "You will also notice an entire category of languages missing, the functional languages represented by Lisp, Haskell, and Miranda; they are interesting research topics, but we're sticking to languages with ample applicability to shipping applications and games. This article is about practice, not theory." In this statement, he makes a claim that his article is concerned with "practice", not theory, and he also implies with this statement, that functional programming languages are more theory than they are practical programming languages. This message is not meant to knock anyone, and it is especially not supposed to knock Tim Sweeney. I dig Tim's games, and I respect him as a fellow programmer. I am writing this addition/correction mainly because Tim said, 'In writing this, my goal is to get programmers thinking and talking about this topic, and partly to "sew the seeds of discontent.'" I will help sew the seeds the best I can... Hopefully it will help bring about good changes. Now, back to Tim's statement that he is "concerned with practice, not theory". Tim's entire article leads up to the theory of what the next big programming language will/should have. The entire construct of his article contradicts this statement in his opening disclaimer. Not only that, but he goes on to name cool things for the "next big programming language". One of these crucial attributes of the "next big programming language", according to Tim, is, "The notion of function calling (in this case, calling the '+' function) needs to be higher-order; it needs to be able to operate over elements of an arbitrary domain. In this case, the domain is pairwise elements of an array. But this concept is radically more general -- it can support (warning: scary technical terms) function composition and the monadic combinators of Haskell", but wait a second Tim!!! Hold on here. Higher-order functions are a fundamental concept in modern functional programming. What about your practice over theory bit? Another strange thing is how Tim goes onto describe many other features that are seen in modern logic constraint based programming languages, such as defining relationships between objects. Logic constraint programming is another category of languages that Tim neglected to mention. Yes, I am not a good writer. Sorry. Hopefully you got some info out of my rant. I will close with my claim of the next big thing as far as programming languages go. It's a language called "Mozart-Oz". It contains all of the neat features that Tim described for the next generation of programming languages. It is an object oriented, functional, logic constraint programming language. The language, virtual machine, and APIs are the fruit of over a decade of research! It is all available under an open source license, which is BSD-like. The Mozart SDK also comes with tons of tutorials and documentation. If anyone is interested in programming in a real language that exists now, a language that fits the mold of Tim's prediction of the next big thing... head on over to: www.mozart-oz.org, and download the Mozart SDK... see for yourself.

  105. ironic by Anonymous Coward · · Score: 0

    I found it quite ironic that he dissed lisp, then the first great new "feature" he looks forward to is mapcar.

  106. Re:One nit to pick by paul.dunne · · Score: 2

    Don't pay any attention to the actual comment I posted, wilya now? Too difficult, I guess. Like I say, if you want to argue, I'm here (although delayed a few days sometimes); if you don't, then... what can I say? Sorry if I've misunderstood you, but you don't seem to want to argue; you merely restate you case in increasingly-incoherent terms.

  107. Mozart-Oz, the next generation language by Anonymous Coward · · Score: 0

    www.mozart-oz.org

    1. Re:Mozart-Oz, the next generation language by rambone · · Score: 1

      i see this url everywhere now - who is paying you people ?

  108. Re:ANDOVER GET YOUR SHIT TOGETHER!!!! by Anonymous Coward · · Score: 0

    OH OH OH!!!! This is natalie portman, oh man Rob just gave me the most amazing orgasm!!! I love linux, No daddy I won'tsuck you tonight NO NO NO!!!!
    sorry anyway I love slashdot and I want to suck the penis of all ACs!!!

  109. Re:Sweeney quote: Microsoft Word by browser_war_pow · · Score: 1

    I don't know about him, but I believe in technology for technology's sake. Thomas Jefferson believed that the more advanced and educated a society got the more equal and democratic it would become.

  110. Re:Orwell by clearcache · · Score: 1

    Off the topic of linguistics, but on the topic of Orwell:

    Some would argue that 1984 was "borrowed" from an earlier work by the Russian author, Yevgeny Zamyatin, entitled "We" written 1919-1920. It's an incredible read that some have claimed is artistically superior to 1984 and Huxley's Brave New World. If you enjoyed 1984, pick up 'We' and give it a shot.

    ...actually, this is somewhat on the topic of linguistics. I believe that the creative process that goes into the formation of a novel (or the reformation of an existing theme from another language) proves the point that the human mind can shape abstract concepts into concrete terms. A talented author has a more developed linguistic skill-set for accomplishing this task. While more complex than the creation of a single word, I believe the leap from descriptive-word to descriptive-sentence to paragraph to essay to novel is a valid leap in this case.

  111. Can you say Dylan? by jolonf · · Score: 1
    1. Re:Can you say Dylan? by Anonymous Coward · · Score: 0

      Alright... another Dylan fan! The few... the proud. If you do Windows development, check out Functional Objects implemention of Dylan for Windows: http://www.functionalobjects.com/ The compiler and development is written entirely in Dylan. What is Dylan? To quote myself, "Dylan is an advanced, object-oriented, dynamic language which supports the rapid development of programs. When needed, the programmer can later optimize [his or her] programs for more efficient execution by supplying type information to the compiler. Nearly all entities in Dylan (including functions, classes, and basic data types such as integers) are first class objects. Additionally Dylan supports multiple inheritance, polymorphism, multiple dispatch, keyword arguments, object introspection, and many other advanced features... "

  112. No way to get source, but not for usual reasons by Esperandi · · Score: 1

    Its not copyrights or anything, but according to the official ZZT webpage (www.epicgames.com/zzt.htm) Tim lost the code in a crash! Damn!

    Esperandi

  113. Re:Orwell by ralphclark · · Score: 2

    Paul's right; the Berlin and Kay paper is about human vision processing and not about the manipulation of abstract conceptual structures. The two could hardly be farther apart. But this is the problem with linguistics in general - it's roots are in a descriptive field much like botany or zoology. These two became modern "hard" sciences only with the advent of biophysics, genetics and molecular biology.

    Linguistics is still waiting to cross that threshhold. Its only truly scientific inputs are from computer science and cognitive science, and both of these are still relatively new. Linguistics is still taught more like an arts subject like anything else, a bit like psychology used to be.

    This affects both the type of students attracted to the field, and their subsequent education. As a result, the majority of linguistics students have a relatively poor understanding of (and no instinctive feel for) science as a result. Your inappropriate citation of the Berlin and Kay study is a good example of this.

    Consciousness is not what it thinks it is
    Thought exists only as an abstraction

  114. Re:Intersting opinion by Anonymous Coward · · Score: 0

    Dude, you rool!

  115. note the ambiguity. by MattMann · · Score: 2
    you can clearly understand the difference between 'free as in speech' vs. 'free as in free beer.'

    I totally agree with what you meant, and the guy you were responding to should note what you said.

    That said, I feel compelled to point out that "free as in speech" is still ambiguous in conveying the sofware concepts: "open" source, and GPL-user vs BSD-vendor freedoms of redistribution. It's easy to conceive of paid source you can't redistribute, free object you can, and source you are free to redistribute as object, and object whose source you are entitled to see.

  116. Some questions by dosky · · Score: 1

    Apparently I don't understand a few things. Could someone explain virtual classes a little more? I can't see why you would need to subclass the entire game engine, and then extend the Actor class... why don't you just add the new variable right into the Actor class to begin with? There would be no cut-and-pasting of code there, at least not with the language I use. You'd get the new variable in Actor and all subclasses of Actor. And, you would immediately get that variable in every existing instance of Actor, and instances of Actor's subclasses as well. In fact, it would even work if the game was running at the time.

  117. Mozart is awesome by Anonymous Coward · · Score: 0

    No kidding, Mozart is awesome!

  118. Re:subclassing by Effugas · · Score: 2

    Corrinne:

    Well, you just answered my unspoken question of "Man, I wonder how much of a pain in the ass is it when after twenty something years of learning you're still asked questions about some thing that you've had since before you were born."

    Now I know :-)

    QOTD: "Isn't it ironic they ask a Playmate to describe Linux? And they ask a female coder "how is it like to be a woman"?

    A couple (real) questions sprung to mind, incidentally:

    compiler internally generating and maintaining a virtual table of a lot of NULLs

    Could you elaborate a bit more on why architectures involving derived classes create wasteful indexes of information? I'm unfamiliar with compiler design, and am curious where this generation comes from.

    But then any subclassed class, which becomes someone else's base class, becomes less modifyable. Thus, in a way, a base-d class loses power.

    Basically, an object in such a class is constrained by the "contractual expectations" embedded within the parent class. There are certain properties/functions which the class is expected to support, and failure will ensue if such functionality is not implemented.

    But does this burden disappear at all when the coder must explicitly know to provide a predefined degree of functionality? Doesn't having a base class enforce a minimum degree of functionality on derived classes, thus preventing situations where the programmer forgets to add some property and chaos ensues?

    It is more difficult to document and comprehend such a deep weaving web.

    So what can be done to make deep weaving webs more understandable? I did some experimentation with the autodocumentation system Genitor a while back, but what have you seen, either implemented or theoretical, that would make deep webs feasable for human comprehension?

    That, of course, leads into a more disturbing concept: Could the human ability to comprehend complex logical relationships be considered a bottleneck that needs to be progressively abstracted as time goes on? Could this pose serious problems for software and hardware design as time progresses? Does it already?

    Just interested in what you think.

    Yours Truly,

    Dan Kaminsky
    DoxPara Research
    http://www.doxpara.com

  119. Re:eiffel is proprietary, C and C++ are open. simp by Anonymous Coward · · Score: 0

    eiffel's not necessarily proprietary. a group
    in france is writing the smalleiffel compiler. . .
    makin' pretty good progress as well.

  120. Re:True by bko · · Score: 1

    But, wouldn't choice of language affect time and price of projects?

    E.g. would you accept, say $1000 as a fair price on your time for a simple web server in C?

    How about as a price for a web server written in assembly?

    What about a program that took a text file, found all of the instances of an arbitrary regular expression, and printed those lines? How much time would that take you?

    If you were to implement that in assembly, C, perl, or if you could call grep or a function out the POSIX regex code, that would influence your time estimate, right?

    I think the point that Tim was really trying to make is more pragmatic than "there are unthinkable things in assembly language, or C, or C++", but more of "certain things may be impractical, time-consuming, or error prone in this or that language, so I will attempt to restructure the requirements to avoid that problem", or conversely, "certain things may be so simple or easy to do that I will do them this way, and this will have these other nice side effects".

    For example, if it were to take you 6 years to write a game in such and so a way, I suspect many game companies would either cancel or cut the project, because economically they wouldn't be able to support 6 years of development without a product, and by the time they had gotten 3 years in, the industry may have made another radical turn.

    So if there was some language development which were to give them an order of magnitude of improvement in production speed (not that I believe that the next language development will do that, but think about the transition from digital logic to assembly, which probably did), then 6 years -> 3/5th year -> 7-8 months, which probably is within the realm of a "conceivable" (economically feasable) development cycle.

    So, in the practical, economic/time POV, there remains the hope that a language will give you more leverage, and that will bring things that were outside of the realm of practicality (not possibility) into range.

    I realize that your beef is mostly with Sapir-Whorf, but I think that this is more of what the author was trying to get at.

  121. use of the term class does not imply OO by TheDullBlade · · Score: 1

    Class is an English word with many meanings.

    Besides, inclusion of OO concepts where appropriate is beneficial, I don't dispute that. Pure OO enforced by the language is a pain in the ass.

    --
    /.
    1. Re:use of the term class does not imply OO by Arandir · · Score: 2

      Why did you not write a separate mini-language for each of the GUI widgets? Don't answer, I'll guess instead. It's because those widgets have a lot of properties in common so using a single interface to them made sense. Now this isn't an accurate definition of OO, but it's the basic kernel of the OO idea.

      I will agree with you that enforced OO is a pain in the ass, particularly when you aren't working with objects (I really hate those books that tell you to "find" your objects in the problem before you start coding). However, your post was dissing all of OO, and C++ in particular, for no apparent reason other than its age or the fact that you didn't write it.

      The advantages of OO programming do not require a OO language. In fact, most modern programmers probably use them on a day to day basis, just as they similarly use structured and functional concepts.

      Abstraction => integer, widget, file
      Encapsulation => source file, module
      Derivation => a button is a widget
      Polymorphism => I sort numbers and words the same way.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
  122. Wishlist for programming language by Tero+Pulkkinen · · Score: 2
    Too bad the author ignored functional languages completely.

    Anyway, My wishlist for next popular language:
    • Layered architecture
    • Functional core
    • Component hype
    • Lambda calculus made easy
    • Hindley-Milner type system
    • Proper tutorial on abstractions and complexity
    • Concurrency
    • Only dependencies restrict execution order
    • Top-Down + Bottom-up process
    • Binary compability
    • User friendly(tm) open-source GUI library
    --
    1) The ostrich algorithm, 2) Detection, 3) Prevention, 4) Avoidance
  123. There is nothing wrong with abstraction.. by Weezul · · Score: 2

    He argues faster machines should not be required, yet he years for more and more abstraction.

    Actually, abstraction eventually traslates into faster code. Who would want to work out all the optimisations gcc dose in ams? It would take you a lot of work just to figure out what gcc dose in 1 second.

    Simillarly, functional langauges will eventually allow the compiler to generate code which takes advantage of opimizations which a human could not reasonably do. Example: some experements with structured self-modifing code (i.e. functions which write optimized functions) have achived massive improvments in preformance (factor of 10 for Henery Masslin's Sethisis microkernel; this can be done by object oriented lanagues too).

    Currently, it is easier to speed up the hardware, but when we start hitting the theoretical limits we will need to switch to compiler optimisations for speed improvment.. and imperitive langauges are considered to be something of a dead end for optimisation.

    Jeff

    --
    The Christian religion has been and still is the principal enemy of moral progress in the world. -- Bertrand Russell
  124. Re:A motto I adopted quite recently... by Anonymous Coward · · Score: 0
    His arguements PC vs. SGI are absolutely ridiculous. Any idiot can go to sgi.com and get the benchmarks and see that he is completely full of it. TNT was designed for Q3 fps... Its a bad comparison anyways.... an Octane/MXE will outperform any TNT graphics card, any day of the year.

    Oh, I dunno. We use Octanes at work, and they're really not that good these days. On the other hand, maybe we're just pushing a lot of polys. :)

    On another note, we just did some performance tests of an Octane vs. an HP Visual Workstation (or whatever the hell they're called). The HP actually kicked the Octane's butt in terms of framerate. :-b

  125. True by vlax · · Score: 1

    I can write a toy language that is incapable of doing certain things.

    However, assuming C is Turing complete (since I can write a Turing machine in C, I assume it must by definition be complete), I should be able to do anything in it. There is, therefore, no logical reason why choice of language should influence choice of projects. Now, as you pointed out, that doesn't mean I would want to write the Linux kernel in assembly - but it doesn't mean that if I had only assembly language to work with, the idea of the Linux kernel would never occur to me. (This is all hypothetical - I don't write kernels and I doubt I personally would ever write one, in C or any other language. That has nothing to do with the choice of language, it's an admission of my own limited experience and skill.)

    However, I'll conceed that empirical analysis of programmers' habits could prove me wrong. There may be influences that I don't see. That's why I expressed scepticism about the conclusion (as far as computer languages go) not hostility (as I have with regard to the same conclusion about human languages.)

    1. Re:True by James+Lanfear · · Score: 1

      True enough. The analogy does break down if you look at the languages closely. However, my point was that no matter how the languages differ--in any respect--they must be equivalent if they are Turing complete. The details, or even gross structures, may be utterly dissimilar, but computation, taken abstractly, requires that they be the same on some primordial level. 'Turing completeness' is such an abstract idea (classical particles in physics have been demonstrated to be Turing complete) that from a concrete language standpoint it's nearly meaningless, thus my comment about having to remind myself. Nevertheless, it's there, and makes excellent analogy fodder.

      Human languages are considerably different, so much so that I think the analogy would do more harm here. However, I believe that basic thrust--that human thought, semantics, may be the same regardless of how deep or shallow the syntactic differences may be--holds up quite well, and if I'm reading you correctly, you seem to agree. As it turns out human languages are probably more alike than they are different, which makes me think a better analogy would be, e.g., Classic C vs. ANSI C, or Lisp 1.5 vs. MacLisp vs. Common Lisp. Using C and Lisp was probably too strong.

    2. Re:True by MattMann · · Score: 2
      I like the way you think, made for a clear and easy read, but I can't buy the analogy. The differences between C and Lisp are the types and semantics of the primitive data types.

      With human languages the semantics and primitive data types turn out to be the same. We can see it across the specturm of linguistic categories, particularly if we look at special cases: rhyming, alliteration, stuttering, aphasia (e.g. forgetting the words for different emotions), synonym, homophone, babytalk, ... all of these things exist the same regardless of language. When you look closely, the apparent differences are simply syntactic.

    3. Re:True by James+Lanfear · · Score: 1

      I'm not sure which side to come down on here. To the best of my knowledge most (real) programming languages are Turing complete. The should, logically, have equal power.

      However, languages differ so radically in expressiveness that I often have to remind myself about Turing. To take a classic example, Lisp allows you write functions that return functions, and to define functions within other functions. C allows neither. (Though people don't give function pointers enough credit.) Logically this shouldn't make any difference on an abstract reading of programming; you can certainly get the same results in either language. But it very definitely does affect how you program and think about programming.

      Why is this relevant? As I wrote that it occurred to me that this may reflect on state of human languages. Lisp and C are like night and day, and there are things that can be expressed in Lisp that are simply impossible in C. However, we know that the languages are have equivalent expressive power; they are both equally Turning complete. So the apparent difference in their power is just that, an apparent difference. Practically speaking, Lisp hackers don't think about programming in the same was as C hackers, but is a statement about the hackers, not computing, or programming.

      So, my question is, can we extend this analogy to human languages? Could all human languages be effectively equal in expressiveness, but the apparent differences so dense as to mask this fact? The barrier would not that the languages are unequal but that our view of how we use them is distorted, that that view does not reflect the facts of the language. Unique syntax conflicting with identical semantics and all that.

      I realize I'm dangerously close to the point where people begin taking their analogies literally, but given the focus on computing in cogsci it seems inevitable that this question would come up eventually. (In other words, it's not my fault, cogsci made me do it! ;-)

    4. Re:True by John+Allsup · · Score: 1

      Turing completeness does NOT imply that languages are equally powerful. Any program written for, say, turing complete language A, may be emulated by a program written in turing complete language B, Given sufficient memory and time in which to perform the computation. Similarly for the other way round.

      If you want an example, try writing a decent fast fourier transform, or a 3d image manupulation system in TeX (which alas is also turing complete)

      in short, turing completeness implies that the language is equivalent if you have a potentially infinitely large memory and a potentially infinitely fast processor
      John

      --
      John_Chalisque
  126. Abstraction & speed by Uksi · · Score: 1
    I see quite a number of posts criticizing abstraction and all those "advanced" languages for not providing enough speed.

    No, I'm not going to say that speed becomes decreasingly important as computing technology becomes faster.

    This reminds me of the C vs C++ situation years ago. A few C programmers were complaining that the same program written in C++ runs three times as slow, naming the "damned abstraction" as the cause. The true cause, however, was the programmers' incompetence (used pass-by-value instead of pass-by-reference a number of times, kept using post-(in|de)crement for complex classes, etc) and the compilers' immaturity (only recent C++ compilers have truly advanced optimization techniques that look beyond assembly optimization level).

    When you abstract something, amongst other things, you move gory details from the hands of the programmer to the tool. What this means is that not only "implementation-of-abstraction" details move from the programmer to the programming language & the compiler, but also optimization moves from the programmer to the compiler.

    For example, take C++'s virtal functions. Any savvy C++ programmers knows how these virtual functions are really implemented in most compilers. Any experienced C programmer can whip out a struct with virtual-table-like "virtual functions", which, if optimized by him/her to death, may end up being slightly faster than the same thing in C++. A point here would be that the same thing in C++ ends up to be pretty damn fast without the programmer having to do any sort of optimization.

    That is not the main point however. The main point is that the computer technology evolves all the time. Programming languages have evolved, through abstraction, from machine-instruction-level to procedural to object-oriented. The task of nitty-gritty optimization has evolved from trivial assembler-level optimization to complex optimization that must know how the program behaves to properly optimize it (e.g. must know the scope of an object, etc.) The optimization itself became more abstract!

    Thus, as things evolve, the optimization "layer" will move along with the abstraction layer (from the programmer to the tool). We also have intelligent systems that optimize the program while it's running (an example here would be the Crusoe processor, although it's not that complex of such an optimizer), using special techniques that modify the code being ran to make the program run fastest for whatever task it's currently doing *now* (I'm not going to go in detail what sort of things can be done).

    Therefore, I don't worry about performance at all. Give me a well-thought-out language that abstracts better, hides more redundant/gory detail from me and makes me more productive and I'll use it. I'll use it without much concern for speed because I know that if I use the features correctly, the speed will keep up.

    Note that no optimizer can optimize bad design. With assembler and C, both good and bad designs were just as fast. With C++, bad design begins to reflect on the program's performance. With whatever higher-level languages may come, I'm sure that the gap in performance between good design and stupid/bad/not-well-thought-out design will continually increase.

    Off the tank now.

  127. Re:Backgrounder: A=B+C for all types by Animats · · Score: 2
    It's amazing and terrifying what people are doing with C++ templates today. Basically, some people discovered that you can force the template mechanism to instantiate templates recursively, and in this way get iteration at compile time. This makes general computation at compile time possible, although in an incredibly slow and awkward way.

    Debugging this stuff is hell. You can't watch the expansion process at compile time, and most debuggers don't provide much help stepping through the output of something like this.

    LISP started to develop cruft like this just before it tanked. (Anybody remember the MIT Loop Macro?) It's an indication that something is terribly wrong with the language and nobody knows how to stop it.

  128. Good article - but not groundbreaking by chazR · · Score: 3

    As I read it he says:

    Programming models change every ten years
    Indisputable
    They seem to change for the better
    Yup. So far.
    C++ is not a bad language, but it's too big
    Damn right.
    But I think he dismisses the STL architecture too readily. It is an amazingly good abstraction, easy to extend (not that you need to often) and avoids being too object-oriented (which would have made it ridiculous)
    Java is a good language, but it's slow
    Yup. Again
    UnrealScript rocks (but not enough)
    Never used it. However good it is, can I model a telecomms network with it?

    I also I think he skipped a bit to briefly over the 'Groups of Objects' technologies (patterns etc).

    The fundamental problem is that we don't think in terms of 'language' (human or computer). We think with ideas. Computers 'think' with binary operations. I suspect that the reason so many people find computers difficult and scary is that they don't know how to translate their ideas into terms the computer will 'understand'

    As an example, I get paid to develop software. Mostly I do architecture rather than programming. When I am designing a system I use paper, pens and whiteboards. When I try and transfer the design to an 'electronic' format, I struggle. The tools don't exist. Why not? The tools I use are very good, but I find it difficult to express my ideas with a screen, mouse and keyboard. I spend too much time second-guessing the tool programmer, thinking 'How would the programmer have expected me to this?' - I shouldn't have to concern myself with this (mostly I don't - I shout for the tools programmer to show me how to do it)

    To end this tedious rant:

    Yes, we need to rethink programming models constantly

    No, there is 'No Silver Bullet'

    Human/computer interaction systems are a disgrace to us all. Please will somebody make a computer as easy to use as a pencil and paper. I'll help.





    1. Re:Good article - but not groundbreaking by chazR · · Score: 2

      No, I don't expect a computer to turn me into Picasso.
      I expect it to let me express my ideas as clearly as I can on paper. And I haven't got a computer that will do that yet. Do you want to help build one?

    2. Re:Good article - but not groundbreaking by Zach+Baker · · Score: 2
      UnrealScript rocks (but not enough)
      Never used it. However good it is, can I model a telecomms network with it?

      Not necessarily, thank God. We've been programming games using languages for programming communications networks for long enough, thank you very much.

    3. Re:Good article - but not groundbreaking by Anonymous Coward · · Score: 0

      As easy as pen and paper? So, you can draw like Picasso? Didn't think so. Face it, nothing that can do a higher order function is easy to use at its highest level. I've seen plenty of people who can't even use a toaster properly, some of them use it so badly they end up in the ER. Computers will get as simple to use as a toaster only when they can only be used to make toast. Computer programers will then be payed minimum wage and look forward to getting the *good* job working the fryer at Mickey Dee's.

  129. Re:One nit to pick by BJH · · Score: 1


    Yeah. Whatever.

    Sheesh.

  130. Re:Orwell by ralphclark · · Score: 2

    If you redefine cognitive science to include any scientific data about human minds, I'll agree that the only scientific inputs linguistics is getting come from CogSci. But by that definition, most linguists are cognitive scientists.

    I'd have to disagree there. Cognitive Science is a fairly well-defined (if multidisciplinary) field and it relies heavily on neuroanatomical studies. I contend that in CogSci, a psychological theory (including anything in Linguistics) without neuroanatomical evidence to support it, is just pure speculation.

    I could argue that the data coming from computer science, while helpful, isn't science at all.

    It'd be a weak argument. Computer science really is a science, in the sense that it is a study of the behaviour of real systems - both physical ones and abstract ones. It allows us to put the math into motion, so to speak. It comprises both theory and practical experimentation; results can be numerically quantified, predicted by theory and verified by experiment. There is no meaningful definition of "science" I know of, which doesn't include Computer Science. Maybe you're still thinking more in terms of the old notion of "Natural Philosophy".

    More recently, it has become harder to be taken seriously as a young linguist without some knowledge of AI methods. (This doesn't apply to the hard-core Chomskyans, who don't believe in AI, as if that made any difference.)

    That's truly excellent news. About time! I believe Chomsky is vastly overrated. It's probably because he had the whole field of theoretical linguistics mostly to himself for so long.

    ...[mini-resume]...

    The science credentials you claim are certainly more than adequate. I'm glad to see that science is creeping into the curriculum in some places at least. Perhaps you're talking about Linguistics as currently taught in the US? Not that it should make much difference - but my most direct experience of the field comes from my sister who's now doing her Master's at the University of York in the UK. From what she tells me, the field is still mainly about descriptive theories which provide very little in the way of testable predictions. That, in my book, is not science.

    my citation of Berlin and Kay is not inappropriate. If the strongest form of Sapir-Whorf were true, this experiment should not have turned out that way. It covers more ground than the neurology of vision processing, since it shows that the mental manipulation of visual signals is independent of the native language of the subject.

    I won't argue with that; vision is much older than language and all the neurology involved is highly specialised and mostly physically remote and separate from the associative cortex and other structures (Broca's, Wernicke's) involved in language processing and abstract reasoning. I agree that language doesn't shape vision at least on a low level. It is silly to advance a theory that *every* single aspect of our experience is constrained by language. Nothing is ever so simple or clear cut in complex emergent systems like human minds. But even a misconstrued "Strong" Whorf hypothesis doesn't claim any such thing. And I don't believe anyone here is supporting the strong form (I might like to, but I wouldn't dare ;o)

    I said your citation was inappropriate because I believed you were advancing it in support of the idea that language does not even partially constrain abstract thought. I hold that reports about the experience of simple visual stimuli are too limited in scope to have much to say on that subject. In any case, Berlin and Kay's conclusions in Basic Color Terms have been effectively disputed (and I for one fail to see how their results are supposed to *disprove* the dependence of subtle colour perception upon language), and Sapir and Whorf have been unjustly denounced most likely for sociopolitical reasons. It's just not done, these days, to suggest that culture or ethnicity could possibly have any deterministic effect on behaviour. Bah.

    Still, thanks for the flame-free argument. I always enjoy debate when it's conducted on a civilised level. Kudos to you for that.

    Consciousness is not what it thinks it is
    Thought exists only as an abstraction

  131. It's not the language, it's the libraries.... by desdemona · · Score: 1

    For example, Delphi uses Object Pascal, which is pretty much of a kludge of a language - but the Visual Component Library is very well designed, and makes business apps (not games, admittedly) easy to do.... Java has some excellent libraries (e.g. the Collections framework which is near what Sweeny was describing) and some very poor ones (i/o comes to mind). Choose the language according to the libraries available, not what could be implemented in it.

  132. Re:One nit to pick by James+Lanfear · · Score: 1

    I was wondering when someone would point that out.

    I use Windows for my dialup, because my Unix boxen don't like my ISP and my family doesn't like Unix. The comment was most aimed at the resulting quoting problem.

    As for philosophy, to be honest you'd have to have suffered some severe head trauma to believe that philosphy can hold a monopoly on the mind. It most certainly can contribute a great deal--that is, in fact, my job at the moment--but we have to make room for neuroscience and psychology (the latter having been a branch of philosophy until recently, if that makes you feel better). The result of this cooperation is progress, both in science and philosophy; progress which, for some reason, seems to disturb some philosophers. I am not one of them, however, and I stand by my statement.

  133. Re:One nit to pick by vectro · · Score: 1

    Well, last time I checked, USA law dosen't have much to say about free speech vs. free beer, aside from that the author can do whatever he or she is so inclined.

    Mostly the free speech/free beer thing is Richard Stallman's invention. And unfortunately, I don't have my french-english dictionary on-hand, but at the very least, libre is much closer to what we mean when we say free software than is gratis.

    The point here is that both terms (free software and open source) are confusing to the public in general, as well as companies like sun. The fact that there is no seperate word to connotate 'free as in speech', allows, for example, microsoft to call IE Free Software.

  134. Re:One nit to pick by WNight · · Score: 2

    Sorry, but you're wrong.

    Philosophy is a study of the non-technical, that which can't be measured. The idea of philosophy is to examine what the limits of knowledge are, not the specific knowledge.

    If you can test something, it's no longer philosophy.

    If you can devise a test to see if people can't conceptualize an idea without a word for it, then it becomes a testable theory.

    I myself think the theory is bunk. A society might not have 'war' in their vocabulary, but they'd understand how something bigger can move something smaller, perhaps hurting the smaller thing in the process. This can easily be extrapolated up to war. They may not understand why you'd go to war, but understanding of the basic concept wouldn't escape them.

    If 20th century philosophers have moved into the realms of the testable, then they're not philosophizing.

  135. Re:No, but the Geforce is getting closer by pbleisch · · Score: 1

    Getting closer in speed, but not really in featureset.

    There are a number of features that SGIs have that would be very useful:

    * Higher resolution color depth. i.e. >8 bits per component.
    * Better support for more (or less) than 3 or 4 components per pixel. (luminance, luminance-alpha, 16bit alpha, etc...)
    * Full support for the GL pixel pipeline.
    * Full support for GL 1.2 imaging extensions.
    * Better stress/framerate scalability. Part of this is a software issue, part of it is a hardware issue.
    * Better support for performance profiling registers.
    * Better support for multi-buffer and multi-pipe rendering.
    * Better digital video support (the SGI media buffer).

    The point is that SGI wasn't just good at fast graphics hardware, they were good at fast, feature complete graphics systems. PC 3D people haven't figured that out because they were too busy letting someone else (OGLARB or MSD3D) innovate the hardware-software interface. I hope that someone in the PC 3D industry steps up an actually innovates on the software/interface side of things. NVIDIA is starting to do this, but they still don't have it down quite yet. Maybe the SGI/NVIDIA settlement will help this out.

  136. Re:Who says,,, by John+Carmack · · Score: 3

    An Nvidia GeForce/quadro kicks the crap out of a $100k+ SGI reality engine on just about any test you could devise.

    The reality engine is quite a few years old, and its follow on, the infinite reality and IR2 still have some honest advantages. You can scale them with enough raster boards so that they have more fill rate, and they do have some other important features like configurable multisample anti-aliasing and 48 bit color.

    Even now, lots of applications can be compiled on both platforms and just run much better on WinNT+nvidia than on the best sgi platform available. Having a 700mhz+ main processor helps, irrespective of the graphics card.

    Some people still have a knee-jerk reaction that claims that "real applications" still run better on the high end hardware, and there are indeed some examples, but the argument bears a whole lot of resemblence to the ones put forth by the last defenders of ECL vector supercomputers.

    Most people's applications don't show advantages on high end SGI hardware.

    The big issue is the pace of progress -- SGI aimed for a new graphics family every three years with a speed bump in between. The PC vendors aim for a new generation every year with a speed bump at six months.

    John Carmack

  137. Re:One nit to pick by Anonymous Coward · · Score: 0
    Read Steve Pinker's book, The Language Instinct

    Pinker is a big name psycholinuist at MIT and his book documents lots of reasons that I don't remember as to why Spiro-Whorf is totally wrong

  138. Eiffel by Anonymous Coward · · Score: 0
    Eiffel is one of the top real Object Oriented languages availble today. Bertrand Meyers's breathtaking and monumental book Object Oriented Software Construction lays out a systematic rational for what the requirements are for an object oriented language. Eiffel is a language implemented to meet those requirements. Support for concepts such as ``Design by Contract'' insure that software implemented in Eiffel is correct. Garbage collection, multiple inheritance, preconditions, postconditions, class invariants are other features that contribute to robust software development under Eiffel.

    GNU's implementation is called SmallEiffel and runs on Linux and many other operating systems. Bertrand Meyer's ISE Eiffel which offers the ease of Delphi development is available for Windows and Linux. It is a gem. A great resource for those interested in Eiffel is the online Eiffel Liberty Journal. In my opinion there are very few languages which offer direct support for quality software engineering. Ada, Sather, and Eiffel would certainly be near the top of my list.

  139. Re:He dissed Lisp! by dne · · Score: 1

    Scheme is Lisp.

  140. Okay, find another case by vlax · · Score: 2

    If color, which is obviously expressed differently across langauges, does not affect perception of color or mental processing of colours in the abstract, tell me what test will show that a concept can't be manipulated, or whose processing is in some way affected, by a person's langauge.

    Having worked with the people responsible for making phone books in Inuktitut, and Bible translators for languages that don't even have a word for 'cross', I submit that the relative ease with which ideas and documents are translated and communicated across language groups is pretty damning evidence agsinst that idea.

    Can you find a contrary case?

  141. Actually it is not entirely notational by tilly · · Score: 2

    The for loop is explicitly sequential. The notation is not. If dealing with operations with potential side-effects this notation actually contains a promise that you don't have to worry about side-effects - which allows the compiler to generate more parallel code. This in turn can be optimized to be done with vector operations, or (in a different problem domain) across chips.

    In other words the for loop is a barrier to optimization since in order to observe certain classes of optimizations the compiler has to figure out your code (and verify - for instance - whether the value of i has to wind up being calculated.)

    Cheers,
    Ben

    --
    My usual seat in the cluetrain is at A HREF="http://pub4.ezboard.com/biwethey.ht
  142. Re:He dissed Lisp! by Jacobian · · Score: 1


    He obviously has never used lisp, or he would know that all the things he wants in a language are already present in lisp.

    Actually a mix of ML and lisp in my opinion would be really handy... (with lisp syntax of course :)

  143. Re:I've been waiting all day for this to get poste by Anonymous Coward · · Score: 0

    Yeah, I guess "really, truly" wasn't all that clear. I meant the kind of compilation that you can't do when every type is resolved at runtime. Some definition that includes "javac"!

  144. I suggest Mr. Sweeney change jobs... by jnuxoll · · Score: 1

    ...and try working at a compiler company. I spent 6 years at Borland learning the real process behind developing new languages. I think he would greatly benefit from it - as would any compiler company that was lucky enough to procure his services! Hey Tim - go make the next language. I'll try it out.

  145. Re:Functional languages by thantos · · Score: 1

    The fact that all of the things that Tim says are coming in the next decade are available and possible /now/ in the set of languages he dismisses so casually in the first decade really told me everything I needed to know about his mindset going in.

    "I can't be bothered to learn these Ivory Tower languages, so I'll just say I reviewed and discarded them as 'not good enough.'"

    Pretty frustrating to me, especially when you recognize that the OCaml and GHC compilers (for OCAML and Haskell, respectively) have been known to create faster binaries than C on analogous algorithms. This leaves aside the whole field of /better algorithms/ that can be expressed and realized with the functiuonal languages.


    --
    -- Riding the Winds of Fires Lit in Ancient Days
  146. Re:Orwell by dennisp · · Score: 2

    I think what some people here are grasping for is the correlation between lack of word for an abstract concept in a language and ignorance to that abstract concept. Coining a word allows for efficiency in calling up meaning. However, to actually understand the word, you must understand the concept.

    Orwell describes a people who are brought up into ignorance leading to a particular mindset. Their coining of new terms to efficiently describe the abstract concepts they came into contact with is only a result of understanding that concept. Ignorance, not language, was what held them back.

  147. GNU Eiffel by bartok · · Score: 1

    Here's a link to the GNU Eiffel Compiler. It looks great! + it includes an Eiffel to C copiler. I think I read somewhere that emacs supports it by default if your source files are *.e

  148. subclassing by Corrinne+Yu · · Score: 4

    Good meaty informative writing.

    Subclassing can yield a lot of power to re-usability.

    There are many caveats to subclassing implementation though.

    Inheritance brings with it all the baggage of your chains of base classes. As much as you attempt to virtualize, thus yielding flexibility, you are still:
    a. compiler internally generating and maintaining a virtual table of a lot of NULLs
    b. the skeletal structure of the existing virtual functions or data members still define, and thus confine, your derived classes

    You may gain the power to saving code from subclassing.

    But then any subclassed class, which becomes someone else's base class, becomes less modifyable. Thus, in a way, a base-d class loses power.

    For portability, ease of use, ease of understanding, anything which is a base class (something *any* subclass derives from) become not only self-consistent, but remain having to be concerned of intentional and unintentional behaviors (and optimization) of all of its derived classes.

    A change to a base class A propagates all its changes, all its decrease in speed, all its complexity, down the chain to all its children.

    Such "a complicated web we weave" makes *most* of the engine code difficult to modify and ungrade and re-use. Since changing most classes, since most of them are base classes, have too many performance or behavorial ramifications and penalties to the rest of the code.

    Part of encapsulation is minimization interaction or effect of one set of code to another.

    "Uncareful" or "deep" web of derivation in classes can turn encapsulation upside down.

    Low level classes intended to hide or encapsulate behaviors, end up being the "weakest chain" that breaks in performance when too many vital classes are derived from them.

    It is more difficult to document and comprehend such a deep weaving web.

    Sometimes non-class, single interface, "flat" non-classing languages would and can ease both encapsulation, or maintainability.

    To be fair to our poor DNF coders Chris, Nick and Tim, virtual class or no, it is a lot more than 4 lines of code to make magical DukeNukem.Actor's. :)

    // OT to the "chick" thing

    An example of "chick-divisive news" being harmful to women: the same site (GameSpy) requested an interview of me that I turned down.

    Why?

    Because the interview questions are / would be along the lines of "How is like to be a woman programmer?" "How is like to be a woman developing games?" "What insights would you have for women in game developement?" "What insights would you have for games for women?"

    How in the world would I know or can speak for 50% of world population?

    A Tim Sweeney, even a Seamus Blackley (Trespasser lead), never have to face questions like that.

    They can discuss math, code, game, science, language.

    But a woman would always be gender first, knowledge second. It shall always be more informative to know "how is it like to be a woman" from me than any knowledge I can or cnanot share with others.

    The day when /. and others stop posting chick-gender-divisive articles. The moment sites stop posting essays and insights and editorials by women about women for women. The day when men and women coders are human coders.

    Is the day when sites and interviewers will stop asking human coders like me "How is it like to be a woman?" and start asking me questions I know the answers to.

    P.S. Isn't it ironic they ask a Playmate to describe Linux? And they ask a female coder "how is it like to be a woman"?

    1. Re:subclassing by Corrinne+Yu · · Score: 2

      "compiler internally generating and maintaining a virtual table of a lot of NULLs
      Could you elaborate a bit more on why architectures involving derived classes create wasteful indexes of information? I'm unfamiliar with compiler design, and am curious where this generation comes from."

      -- The way most OO compilers keep track of object functionality being able to be "virtalized" is that even though in your code it is virtualized, in machine code it needs to keep an internal look up table to point to the right data memebers / function pointers by context.

      -- Most implementations of instantiaion of any object derived from classes with virtual members involve *each* instantiation have its own sizable (size dependent on number of virtual members) table to allow for contextual retrieval.

      "But does this burden disappear at all when the coder must explicitly know to provide a predefined degree of functionality? Doesn't having a base class enforce a minimum degree of functionality on derived classes, thus preventing situations where the programmer forgets to add some property and chaos ensues?"

      -- This involves the foresight of know all possible future derivation (or variations of such derivation) before implementation, before debugging, before "base class usage."

      -- It is a chick and egg thing. While it is *possible* to be such a forward thinking and insightful coder, it is at best *very difficult*.

      -- In most cases, it is a code base class, derive children, amend base class, derive more children, amend base class further ... derive children, must amend base class again, but wait that would affect my other children like this.

      -- This is theoretically prevented by "thinking ahead about your base class" before you either code your base class nor your child.

      -- Therefore, how *well* this works out comes back to the Goedel system of how "simple" your base class is.

      -- The more powerful your base class, the more mathematically infeasible it is for you to design a non-breaking-base class.

      "So what can be done to make deep weaving webs more understandable?"

      -- Documentation will always be a challenge, and certain data structures like subclassing presents even greater challenge.

      -- When something is flat (which of course has its own set of problems), its "structure" mimics that of "human language" which is also linear / verbal / mono-directional.

      -- (Yes, conversation goes both ways. But most "comments" and "documentation" are one-way conversation. We *all* know the best documentation is a living polite lucide programmer who continually has 2-way communication with user.)

      -- So, given human language comment and documentation *is* mono-directional, is linear, is flat, it is easier to map similar system to similar system.

      -- It is thus easier to explicit document and comment linear C (non-base class referencing) code than OO code (which as well as you can describe its current behavior, you must reference back to its base class behavior to gain true understanding).

      -- Yes, again, a completely intuitive base class that requires no documentation and comment of its interaction and effect with its derived children in anyway can solve this problem.

      -- Unfortuantely there are very few real base classes besides a few obvious math primitive examples.




    2. Re:subclassing by cstaylor · · Score: 1
      > >-- It is thus easier to explicit document and comment linear C (non-base class referencing) code than OO code (which as well as you can describe its current behavior, you must reference back to its base class behavior to gain true understanding).

      C'mon... how about "Macro Tricks in 21 days" cowboy coding coming from C programming wanna-bes? _That_ is unreadable code. Yes, you can make your C work in an object-oriented fashion, but if you want OO, then code in an OO language (or spend forever wondering why the build crashes because that junior programmer down the hall is still referencing a member variable you blew out days ago in your struct).

      Finding the perfect base class is baloney anyways. What you want are contracts, not implementation, and mix-in base classes work great for that (or interfaces if you code in Java).

      -Chris

    3. Re:subclassing by Corrinne+Yu · · Score: 1

      1. We agree OO is implementable in C (even assembly, I had written object-oriented assembly before, seriously) and C++.
      2. So the real question comes down to "protection."

      // protection

      Your point is that C doesn't have a nasty mean sentry standing in the way, saying "You can't do that bro."

      And that OO languages / C++ do. "Hey buddy, I am private, stay off my turf."

      You, my friend, are underestimating the ingenuity of the evil-programming-user! :)

      If someone really wants to muck with their prissy private member, he can just do a cast on this pointer (heh, I have seen people do that a "LOT"! :) ), and voila, all your protection is for naught.

      OO is a discipline for both the implementer, and the user. Just because some languages "put up some verifications for cheats" don't make them foolproof against malicious bad users ... there are many malicious bad users. :)

      OO as a concept should be divorced and distilled from language implementation. When you tell the whole team to do OO, you should let them know:

      1. just because you are using C doesn't mean you can get away with "this mess"
      2. just because your file module is named .cpp, just because your code has these class { tokens in them, if you do evil things like cast this pointer to get to private members ... you are still evil ... you still should be flogged!

      That or the bad mean evil creator of the class that so oppress you such that the only you can use his darn class is to access a private.

      Heh, I tried to be funny (failed!).

      You get my point. Bad code in OO language with "protection." Good code possible in assembly.

      It is all in the state of mind, in the will of programmers.

      // contracts

      What you say about contracts is perfect. And pretty much what I said just right now.

      A "base" class doesn't do any encapsulation for you.

      It is cooperation with implementer and user.

      I contend this cooperation can be equally easy accomplished in C / linear language,

      than in OO languages that "guard you from bad practices through syntaxes."

      If team developers cooperate -- derivation and encapsulation happens, whatever the language.

      If team developers sabotage (I shall stick everything private so none of you can get at anything MWAHHAHAHAHAH! I shall cast my this pointer and loot your protected treasures dry MWAHAHAHHHAHAHAH!) then you can be using "PERFECT OO LANGUAGE FROM GOD HIMSELF" and you'd be messed up.



    4. Re:subclassing by cstaylor · · Score: 1
      You don't even have to do casting... just do something like this:

      SomeClass* some_obj = ...; memset(some_obj,NULL,sizeof(some_obj));

      Which would wipe out anything... this is a problem will languages like C/C++, where they are just putting a pretty face on assembler.

      Now, try and get around the class verifier in JDK 1.2... that will be a much harder task.

      My response is: Why give a monkey a gun? Programmers with lots of experience will know what to do, but junior programmers (I bet you were a junior programmer once... try to think back... :D) are more likely to run amok without a little hand-holding. The fact that in C I can do:

      char some_buf[512];

      memset(some_buf,NULL,513);

      and the execution is "undetermined", meaning that I could have wiped out something important on the stack but I won't know it until something crashes later is a big problem. I don't think you want to waste hours picking through dumps just to find that "Willy the Intern" blew it because C is an unfriendly place.

      -Chris

      Yes, the C code is contrived, but you get my idea.

  149. Doh! (link is here) by bartok · · Score: 1

    http://smalleiffel.loria.fr/

  150. Re:One nit to pick by BJH · · Score: 1


    Why don't you try and catch up on some 20th-century linguistics? It's all in there.

  151. INTERCAL... by Speare · · Score: 2

    From one of the INTERCAL enthusiasts' webpages:

    • Abandon All Sanity, Ye Who Enter Here

      So, you think you've seen it all, eh?

      OK. You've coded in C. You've hacked in LISP. Fortran and BASIC hold no terrors for you. You write Emacs modes for fun. You eat assemblers for breakfast. You're fluent in half a dozen languages nobody but a handful of übergeeks have ever heard of. You grok TECO. Possibly you even know COBOL.

      Maybe you're ready for the ultimate challenge...INTERCAL.

      INTERCAL. The language designed to be Turing-complete but as fundamentally unlike any existing language as possible. Expressions that look like line noise. Control constracts that will make you gasp, make you laugh, and possibly make you hurl. Data structures? We don't need no steenking data structures!

      INTERCAL. Designed very early one May morning in 1972 by by two hackers who are still trying to live it down. Initially implemented on an IBM 360 running batch SPITBOL. Described by a manual that circulated for years after the short life of the first implementation, reducing strong men to tears (of laughter). Revived in 1990 by the C-INTERCAL compiler, and now the center of an international community of technomasochists.

    This is an excerpt of a program that does ROT-13, written in INTERCAL. Being a non-INTERCAL developer, I chose what seemed to be a representative sample of the code.

    • (10) PLEASE DON'T GIVE UP
      (1) DO .2 <- '?.1$#64'~'#0$#65535'
      DO .2 <- '&"'.1~.2'~'"?'?.2~.2'$#32768"~"#0$#65535"'"$".2~. 2"'~#1
      DO .3 <- '?#91$.1'~'#0$#65535'
      DO .3 <- '&"'#91~.3'~'"?'?.3~.3'$#32768"~"#0$#65535"'"$".3~ .3"'~#1
      DO (11) NEXT
      DO (2) NEXT
      DO (12) NEXT
      (11) DO (13) NEXT
      PLEASE FORGET #1
      DO (12) NEXT
      (13) DO (14) NEXT
      PLEASE FORGET #2
      DO (12) NEXT
      (14) DO STASH .1
      DO .1 <- .3
      DO (1000) NEXT
      DO .1 <- .3
      DO .2 <- #1

    And so on.

    Yeah, I can see how writing Space Invaders or Quake bots or a MUD would be MUCH better in this language.

    :)
    --
    [ .sig file not found ]
  152. naughty of me by Corrinne+Yu · · Score: 1

    I am sick of my annoyed posts too. I found a way to shut up.

    I blocked all news a couple of days ago.

    I shall never see any annoying chick news (and all tech news too) and thus never respond to anything that annoys me.

    I am continually locking out things that annoy me, that goad me to post dorky posts. Every time an item causes me to post dork, I block the entire category.

    Eventually either I would never see anything that annoys me, and never responds with dork.

    Or /. would be blank.

    Either way, CY dork posts will quickly go away. I will be happier. Many like you will be happier. (And I think /. loads faster. :) )

  153. Re:Sweeney quote: Microsoft Word by WNight · · Score: 2

    Abstraction can slow things down, but it can also speed things up.

    Not everyone here is an asm guru. I know enough that I could easily write a memset routine for x86 and a few other platforms, but I can't guarantee that it'll be as fast as the library code.

    Ditto with, for example, complex numbers. I can (in c++) declare n, i and j as complex numbers, set them, and say n = i * j. I could do the same with structures holding the real and imaginary, or parallel arrays. And theoretically, I could do it faster, if I coded it in ASM. But, the abstract level lets a programmer who majored in math do the actual code, probably squeezing out a few extra cycles by knowing shortcuts, and guarding against any special cases (div by zero type things) that I may not know about.

    Abstraction also lets the compiler use the computer to its fullest. I could code vector manipulation, for a 3d engine, in asm, and even if it was provably the fastest code, that wouldn't do me any good with a new cpu. If I write it in C, or better, something more abstract where I can hand off whole matrices, the compiler will (ideally) know the the target CPU has Altivec, or 3dnow, or perhaps some higher-level FPU capable of whole matrix ops. By writing code that attains some reasonable fraction of the best speed, say 90% or so, you write code that attains that speed on all architectures, and uses new features with only a recompile. Hand code the routine in ASM and you only gain 10% or so, which might be important in a critical loop, but you lock yourself into having to recode it later, to get the same speed. And that means having to be an expert on all the target architectures.

    And then, there's the argument that you can always give away abstraction, writing some critical code in ASM, if needed. You can't go the other way and use inheritance in ASM (or in typical assemblers.)

    Languages that restrict you, that prevent you from being specific when you know something the compiler doesn't, are bad. That's why nobody uses Pascal. But the ideal language lets you ignore all the finicky details until you decide otherwise, it doesn't require anything either way.

  154. Re:One nit to pick by paul.dunne · · Score: 2
    Nope. That's YOUR definition of philosophy, which is of course (somewhat ironically) informed by a particular philosophical outlook.

    "If you can devise a test to see if people can't conceptualize an idea without a word for it, then it becomes a testable theory."

    Have you, or has anyone else, devised such a generic test? If not, then you are rather hoist on your own petard, are you not?

  155. Lisp is not for games? by foof · · Score: 1

    Abuse (a great game) was written almost entirely in Lisp. I can't think of other examples, but there's no reason there couldn't be more games written in Lisp. As ancient as it is, Lisp (and a lot of the other functional languages he dismisses) has a lot of advantages over even his proprosed "C++ with templates done right." Like lambda expressions, which let you make up new functions on the fly (very handy for AI).

    And what about Python? Why does everyone ignore Python for Java, when Python is such a cleaner design, and easier to use. And not subject to the whims of a single company.

    Furthermore, Lisp and Python are interpreted, which means you can generate and load extra code at run-time. Data files can have program chunks, and it becomes easier not only to create new data packs, but to add new features into that data while still using the original engine. Plus advanced users can have scriptable config files and preferences, and have much better ability to do things like bind a key to a complex set of actions.

    I think he ignores these, and other languages, because they are slow. But you don't need to write the whole application in these languages. If you code the graphics and other intense aspects of the game in C, you can make those into a module for your higher-level language of choice, thus getting the best of both speed and flexibility. This is the way things are done now, with most games being all C with optimized bits of assembly, just at a higher level. The logical progression is not to extend new ides to C, but to write a language that expresses those ideas truly naturally, and use that except where speed is important.

    It seems that in his history of languages, Sweeney fell victim to his own observed inability to switch languages. He still thinks in terms of C. I would agree with the progression from circuits to assembly to C, but the next logical step is most certainly not C++. That's the equivalent of an assembly programmer realizing the concept of funtions and data types, and building a whole suite of assembly macros to implement this concept. It works, but it's a hack. And Java is a hack on a hack with many other problems as well (but that way lies religious issues). No, the succesor in this model to C would be Simula or Smalltalk. And these languages are already more powerful than his proposed next generation language. The object oriented concept supported parametric polymorphism and virtual classes from the start, and it just wasn't implemented properly in C++. If you really want to know what the next generation of languages is, you need to look outside the box, and think of something genuinely new, which is of course genuinely difficult. But I hope that whoever comes up with it first won't hack it onto the current most popular language, but will keep it pure.

    --
    foof - Lisper, Smalltalker, and all around poor speaker.

    1. Re:Lisp is not for games? by Junks+Jerzey · · Score: 2

      Abuse (a great game) was written almost entirely in Lisp. I can't think of other examples, but there's no reason there couldn't be more games written in Lisp.

      Be careful, even the author of that game readily admits that it's not "almost entirely" written in Lisp. A custom Lisp is used as the scripting language, but there's a whole lot more C code than Lisp code in the game. It's something like 85% C and 15% Lisp.

  156. Re:Who says,,, by pbleisch · · Score: 1
    Most people's applications don't show advantages on high end SGI hardware.



    But you would agree that a number of features available on SGIs would be useful, no? (I listed some on my wish list elsewhere in this discussion... like higher color depth in the pixel/texel pipeline, etc...)



    I've always liked SGIs for the featureset more than the performance. Even an SGI maximum impact (which barely accelerated texturing) was more useful than a Voodoo2 (which was the PC3D I had at the time). Similarly, an O2 has features that would be great on a GeForce based card like the media buffer. However, my TNT2 based PC can outperform my O2 on a number of applications that I use everyday.



    Most PC3D is designed toward the boxcopy and the software side of the IHVs solution is lost in marketing somewhere.

  157. Re:One nit to pick by BJH · · Score: 1


    Well, the "weak" Sapir-Whorf is generally accepted to be true in some form, just nowhere near as dramatically as in the "strong" S-W. But even so, saying "language influences thought" is like saying "gravity pulls on stuff"; it's right, but it doesn't explain anything that you didn't already know.

  158. [OT] Re:He dissed Lisp! by auntfloyd · · Score: 1


    No, Scheme is a member of the Lisp family, just like Common Lisp and GOOL (Game Object-oriented Lisp), which was used in Crash Bandicoot.

    ~~~~~~~~~
    auntfloyd

  159. Depends on the language by cstaylor · · Score: 1
    In C++, most implementations I've seen generate a single VTBL per class. So, unless you are making lots o' classes in your applications, 4-bytes (the size of the VTBL pointer for a class, no matter what the depth of inheritance) per instance isn't too bad.

    Interface inheritance is better, using empty base classes with pure virtual functions. You can mix those in and get those method contracts matched properly.

    Or give up C++ and program in Java, where you don't have these nasty compiler problems. ;)

    -Chris

  160. Re:One nit to pick by Anonymous Coward · · Score: 0

    shut the fuck up already, you pedantic piece of shit.

  161. Re:Other reasons to idolize Tim Sweeny by InkDancer · · Score: 1

    Looks likes someone has solved GNU's problem of free (as in beer) and free (as in speech). Simply append each use of the word 'free' with either 'beer' or 'speech' and voila! No confusion.


    Next, I would like some beer, for free(beer).

  162. Re:Hopefully this will be the end of C and Java by Arcanix · · Score: 1

    I love C++, the next language will have to be a LOT better for me to go learn a new one ;)

  163. Re:Some Thoughts by cjon · · Score: 1
    > in C++ and other OO languages functions can be virtulized (without you realizing it)

    Um, not if you're even a semi-decent C++ programmer. One of the problems with from a flexibility POV is that C++ doesn't make virtual functions unless you tell it to... this is precisely to avoid the "extra layers of indirection" if you're not using them.

    The single level of indirection (due to the vtable lookup) is there with C or C++ if you're using polymorphism. The cost is minimal unless it causes a cache miss.

    > using all your latest multiple inheritance, operator overloading etc. my be easier to develop and debug

    Or it might not since C++ has such a bad version of parametric polymorphism.

    > all that extra function call overhead and indiretion

    Templates and operator overloading don't have any overhead... (well, templates have space overhead which can lead to extra cache misses, etc...)

    BTW: Kim Bruce's work on statically typing and avoiding dynamic type-checks is worth looking at in this regard.

  164. Hrm, that sounds like a bad Idea by elegant7x · · Score: 1

    Do, whatever you like. But If youre ebarased by your posts it might simply be a better idea to control your keyboard then to limit your mind... But, that's just me :)

    Amber Yuan (--ell7)

    --

    "and dear god does this website suck now." -- CmdrTaco
  165. Eiffel is not proprietary. You are simple. by Esperandi · · Score: 1

    I don't know why you think Eiffel is proprietary.... its portable as all get out and there are dozens of different compilers for different platforms including an Open Source GPL one someone replied to you about....

    Esperandi
    Put down the crack pipe son...

  166. Re:One nit to pick by Anonymous Coward · · Score: 0

    Hey... what do ya expect! Guy codes games and has no formal education. So basically he knows jack shit.

    Those game dudes think they know shit just coz they can code hardware accelerated games.

    Let me reitterate this... you know Jack Shit Mr. Swiney.

    AC

  167. Re:Virtual classes? You can do it already in C++/J by spacey · · Score: 2

    I don't think you quite get it. Take a look at what Objective-C does, and take a look at Common Lisp The Language, and read the section on CLOS in the appendicies.

    Objective-C's ability to delegate procedures to other classes achieves a lot of the "virtual classes" concept. You can also selectively override parts of a class as he describes in virtual classes in objective-c.

    The Common Lisp Object System (CLOS) and it's MetaObject Protocol (MOP) allow you to do what's described with a virtual class, and more (so much more that it's a bit intimidating to think about it).

    CLOS implements object heirarchies as a list, and instead of only thinking of procedures that can be applied based on type, it has a set of rules that determines which procedure in a list (think an array of function pointers) will be applied in a given situation based on a set of rules. Sounds like C++ or Java.

    The MOP, however, lets you define that behavior - you can specify that the object system will change it's behavior when you need it to.

    So, it's been done and proven, but it's still "academic" from his point of view (ignoring the implementation of next/openstep, and the fact that LISP machines did do a lot of work at one point, and lisp still does stuff... it's just not mainstream. Too bad...)

    -Peter

    --
    == Just my opinion(s)
  168. Re:One nit to pick by James+Lanfear · · Score: 1

    I doubt it. Too much of Japanese--or most languages for that matter--are tied up the culture, in the way you learn, etc. While I could certainly learn to use the language correctly, I wouldn't really understand the meaning of the words in the same way as a native speaker. Saying that kami are kinda like gods but not quite may allow me to use the word in conversation, but it doesn't mean that I'll really understand what they are. That difference has nothing to do with language and everything to do with culture.

  169. Gamers by jchawk · · Score: 1

    It all comes down to this simple fact: "I quake therefore I am". It's wonderful to that your average gamer by playing video games on the computer is helping to full new technology. Or maybe this is just a way to justify droping $200 on a new video card everytime the new version of quake is released. I dunno : )

    1. Re:Gamers by Euphorea · · Score: 2
      Hey, why not get a new graphics card everytime a new version of Quake comes out? The more you see, the better you can frag, right? Unfortunatly not... because your nice graphics card(s) may be getting you over 64fps, but when your ping is > 350 you know that you are going to be having some difficulties....

      Gulp, Sploosh.....

  170. Re:I've been waiting all day for this to get poste by Jogorun · · Score: 3

    Sweeney gave some good unspoken advice, That is to say, keep learning new languages. Check out "The Pragmatic Programmer" [2000 Hunt, Thomas.] You can find it in any good bookstore.

    The book has some useful advice on the practice of programming. Things like "How not to be stuck programming in a dead language." (I'm paraphrasing), and it expands upon the concepts that Sweeney mentioned, like orthogonality.

    Just a little extra material, if you bought the gospel the Sweeney was preaching. Otherwise...

    --
    Comments from a deranged lunatic who thinks he's cleaver.
  171. Sweeney quote: Microsoft Word by cje · · Score: 4
    Towards the end of the article, Sweeney says:

    "People don't need to buy new 800 MHz Athlon processors for running Microsoft Word .."
    Well, not this release, anyway ..
    --
    We're going down, in a spiral to the ground
    1. Re:Sweeney quote: Microsoft Word by Anonymous Coward · · Score: 0

      Hey, this Sweeney guy is my kind of scum.

      He wants the fastest for himself but everybody
      else should not have anything as good as his.

      I RULE WITH A HEAVY FIST!

    2. Re:Sweeney quote: Microsoft Word by Why2K · · Score: 1
      You should not have to upgrade your box just to type letters...

      Upgrade what? A 486DX2/66 8MB with Windows 3.1 and WinWord 2.0 works great for typing letters. Why do you assume that you should be able to continue to upgrade the software but not the hardware.

      Most software adds new features so that it can take advantage of new hardware, so it seems foolish to complain about the difficulty of upgrading one or the other independantly.

      I know it's cool to bash Microsoft here, but this is not limited to them. Try running KDE on your old 486 with 8MB of RAM. New hardware makes new applications possible.

    3. Re:Sweeney quote: Microsoft Word by GregWebb · · Score: 2
      Because it may be easier than the alternative, or produce faster programs. Given that, why not? A language should make is easy to follow good programing guidelines, but it shouldn't force you to do anything. The compiler/language are a tool, and if that tool doesn't best fit the job, use something else. Ideally the language will have extensions to let you easily use something else for parts instead of having to write a completely external module.
      I must admit I can't see how coding something in Assembler could be regarded as simpler than doing the same in Pascal - and allowing for that possibility makes compilation much harder, as you have to make sure that the hardcoded section doesn't muck up everything else, which is going to slow it all down a bit.

      As a general principle though, I agree. There's plenty of things which could be more easily accomplished in (for example) Miranda or Prolog, much as I may dislike them :) So an interface for this is certainly a good idea. I admit I haven't a clue how easy this is in general - not something I've needed - but I'm guessing it should be possible with Delphi.
      For example, write a rot13 filter... A trivial app. But, if you ended up needed to pipe a big file through it, a badly programmed inner loop could cause problems.
      But how cack-handed could a compiler make this? I mean, it's not like this has all that many lines of ANY code in it.

      I see your point absolutely, but I just can't see that this is the case.
      It's been a while since I've used Pascal but I remember having to call a function to turn characters into numbers...
      Which is a good thing! Y'see, this is all to do with the typing which makes error trapping so much easier it's silly.

      You and I both know that when the compiler actually gets down to it, it just throws that function call away and does it directly. But by requiring the user to do it that way - hardly onerous - it makes for more reliable code that's easier to bugfix, as a VERY common error - incorrect type assignments - is trapped. Good Thing.
      IMHO nearly everything written could use a little optimizing. Just because we've got fast computers is no reason to waste cycles, especially since with multitasking, every cycle wasted is one stolen from another app. And with d.net and seti@home, conceivably every cycle can be used.
      But think cost-benefit. Most of the time the cost of rewriting in assembler and then hand-optimising would be better spent on more testing - which would enhance the use experience far more.

      Ther's also then the issue that modern CPU design means that the assembler that runs the fastest is rarely that which looks the fastest to us... Compilers (when written properly) know what's sensible to pump out and what isn't. For us to try and remember all those rules would just get silly.
      And, as for the comment about nobody using Pascal... I meant, nobody that I see. Delphi (visual pascal basically) gets some use, but mainly for prototyping of one-off jobs. Everything I see is in C/C++ for speed/portability, Java/Perl for extreme portability and ease of coding, or VB because the coder is clueless. I realize some people do use Pascal, but nowhere near as many as use other languages.
      Unfortunately I have to agree with you there :(

      I can see that C/C++ is good for some jobs, but its present ubiquity seems undeserved to me. And a likely contributing factor to code instability as (IME, anyway) it's far harder to debug than Pascal. Java's basically a cleaned up C++ from what I see so not a lot better, Perl is rather specialised to say the least :) And VB should be shot. Silly idea.

      I accept I'm a stick-in-the-mud here, but Delphi really is a wonderful tool. No harder than VB - in many ways easier, it would appear - and with almost all the power of VC++. Plus with the gloriously easy debugging :) Wish it was used more...

      Greg
      --

      Greg

      (Inside a nuclear plant)
      Aaaarrrggh! Run! The canary has mutated!

    4. Re:Sweeney quote: Microsoft Word by Anonymous Coward · · Score: 0

      I have Windows 95 with Office 2000 installed on my 486DX2-50 laptop. It has a 1.4 GB hard drive and 28 megs of RAM. I wouldn't say it's adequate for producing PowerPoint presentations, but it's a reasonably snappy enough Word Processor and spreadsheet for portable use.

      But continue to believe whatever you want to hear from people who haven't even tried Office 2000.

    5. Re:Sweeney quote: Microsoft Word by delmoi · · Score: 1

      Nope, only a 300mhz PII/k6.

      MS was actualy out saying that word2k would require a hardware upgrade. Its pretty sluggish on my 400mhz k6ii even.

      I dont see how MS can keep this up, and I wonder what there going to do when we eventualy hit a brick wall with speed.

      You should not have to upgrade your box just to type letters...

      [ c h a d o k e r e ]

      --

      ReadThe ReflectionEngine, a cyberpunk style n
    6. Re:Sweeney quote: Microsoft Word by ddwalker · · Score: 1

      Boy I sure miss the days of Word 2.0...when you could put the whole application (minus the useless fluff that only tech writers use) on a 3 1/2 inch floppy...

    7. Re:Sweeney quote: Microsoft Word by SheldonYoung · · Score: 5

      Tim paints himself into an interesting corner. He argues faster machines should not be required, yet he years for more and more abstraction.

      Abstraction is great for design and programming speed, and not good for executable speed. It's the trade off we make, and one of the biggest reasons applications are bigger and slower and better than ever.

      His C=A+B argument is a good example. The function which adds an element of A to an element of B incurs overhead because it is a function. If you make special allowances for the list-of cases then you have just undid the abstraction. Yes, optimizers can do good things, but they only work so far.

    8. Re:Sweeney quote: Microsoft Word by gorilla · · Score: 2
      The problem I have is that 80% of features are never used by most people.

      If you look at a good design, you can add features without slowing down the main system. For example, in Unix, you can add a new foobar program, which you can now use in pipelines (ps -ef | foobar | more). If you never use foobar, it doesn't slow you down.

      Obviously MS Word is not a good design.

    9. Re:Sweeney quote: Microsoft Word by GregWebb · · Score: 2
      Languages that restrict you, that prevent you from being specific when you know something the compiler doesn't, are bad. That's why nobody uses Pascal.
      You really think? Oh well...

      Seriously, how often is that an issue? If you're writing a kernel module, sure. If you're writing a 3D engine, sure. But what percentage of code is actually speed-critical? Pretty low. And what other reason is there to do this, assuming we're not having to work round a whopping great compiler bug?

      I like Pascal BECAUSE it's simple. I don't have to worry about stuff I don't actually need to control - what always slows me down in C - and there's so much error trapping that bugfixing is lovely and easy. YOU try corrupting memory with Pascal :)

      I'm happy enough to accept that I'm in a minority here, but I've never understood why. It's so rare that Pascal can't do what I want that it's not worth thinking about. Whereas the number of silly things I've had to do to get C code to work properly are crazy, because it's so finicky.

      This may well have been a relevant issue across the board 20 years ago, but I'm typing this on a decidedly aged P100. Turning in, what, 150-ish MIPS? At this level of basic CPU performance, most apps just aren't time-critical. So why should I want to dip out of the nice, easy to work with world of Pascal into assembler. To reduce my productivity and reliability?

      Greg
      --

      Greg

      (Inside a nuclear plant)
      Aaaarrrggh! Run! The canary has mutated!

    10. Re:Sweeney quote: Microsoft Word by costas · · Score: 2

      I am bothered by this argument. All day I use a language that allows n-D array addition in the equivalent of C=A+B. There are more parameters in there than immediately apparent. E.g. what do you do if A(i,j) is undefined while B(i,j) has data? do you add 0 to B(i,j)? do you keep the result undefined, as that position may be non-sensical for the result? What do you add across? In the applications I use, we end up replicating native concepts like the above, in ANSI-C to get the performance we need.

      I love the idea of a next-generation language like the author describes. But, in my experience, we're sitting in that grey period between technologies, where the old technology (C++, Java) is showing its 'stretchmarks' while the new generation (?) isn't ready for prime-time yet.

      engineers never lie; we just approximate the truth.

    11. Re:Sweeney quote: Microsoft Word by Hard_Code · · Score: 2

      He argues faster machines are not required for anything but /games/. Which is why he says that game coders are the ones who have the unique opportunity to define the next generation of languages.

      It is obvious we are now approaching a point in which performance is not the bottleneck. Up until now, everything has been designed for performance...now that Moore's law pretty much guarantees decent performance no matter what, it is no longer a bottleneck. The bottlenecks now are programming time, maintanence, portability, mobility, compatibility, etc. The history of languages has been one of tradeoffs. The next trade-off will perhaps be a sacrifice in performance, which will allow us an entirely new dimension with which to program to achieve the above goals. However, the performance bottleneck has always assumed that humans were the best optimizers, so tried to allow humans to get as close to the code as possible. This is not necessarily true any more. Who really explicitly specifies parallelism in thier programs today? Another layer of abstraction might actually /afford/ us better performance, because we, as humans, no longer have the responsibility of dictating the optimizations...the optimizations can be made where they are apparent, under those layers.

      Look at it this way: nobody uses DOS and Windows 2.0 on a blazing Athlon. New speed allows us new opportunities to do powerful stuff. That DOS or Windows 2.0 is blazing fast on new hardware doesn't mean a thing, because it now has no use, things with overwhelmingly more power have been developed. I think we will need another generation of languages to exploit Moore's law to deliver a whole new generation of powerful software. As he suggests, there are dimensions we haven't really explored yet.

      Jazilla.org - the Java Mozilla

      --

      It's 10 PM. Do you know if you're un-American?
    12. Re:Sweeney quote: Microsoft Word by John+Allsup · · Score: 1
      Instead of C=A+B, try
      D=A+B+C
      where A,B,C,D are n*n matrices for which a typical compiler (even modern ones!) will compute A+B, store it in an intermediate array, D', say, and then compute D=D'+C. Doing D=A+B+C is quicker, but requires the knowledge that (mathematical) arrays are being dealt with -- this is the benefit of abstraction. and consider
      x=det(A*B*C)
      how many otimisers will notice that you can evaluate the matrix determinants and then multiply? (this is especially useful when the matrices are sparse). The morale: what a compiler doesn't know, it cannot be expected to figure out by brute computational force (that's why humans still do the research :-) ).
      John
      --
      John_Chalisque
    13. Re:Sweeney quote: Microsoft Word by Tekhir · · Score: 1

      Well, at work I use PII 350's and Office seems kinda of slow for me. Espcially when it draws the toolbars. I'm glad I don't use it at home.

    14. Re:Sweeney quote: Microsoft Word by WNight · · Score: 2
      And what other reason is there to do this, assuming we're not having to work round a whopping great compiler bug?


      Because it may be easier than the alternative, or produce faster programs. Given that, why not? A language should make is easy to follow good programing guidelines, but it shouldn't force you to do anything. The compiler/language are a tool, and if that tool doesn't best fit the job, use something else. Ideally the language will have extensions to let you easily use something else for parts instead of having to write a completely external module.

      Seriously, how often is that an issue? If you're writing a kernel module, sure. If you're writing a 3D engine, sure. But what percentage of code is actually speed-critical? Pretty low.


      Of what I write, nearly 100%. Not the whole thing, of course, but nearly everything has some speed critical routines in it.

      For example, write a rot13 filter... A trivial app. But, if you ended up needed to pipe a big file through it, a badly programmed inner loop could cause problems.

      A decent API will let you instruct the filesystem on how best to optimize for your application. Reads every few K are more efficient than reads every character. And reading data into a memory buffer then working with it from there will be faster than calling a read function for every character.

      Perhaps the conversion is taking too much time, precalculate a transformation array and use that, with the raw characters as array offsets. It's been a while since I've used Pascal but I remember having to call a function to turn characters into numbers...

      And this is in a trivial application. Often a minute or two of coding, just picking algorithms you couldn't reasonably accomplish if locked into language constraints, will chop execution time significantly.

      IMHO nearly everything written could use a little optimizing. Just because we've got fast computers is no reason to waste cycles, especially since with multitasking, every cycle wasted is one stolen from another app. And with d.net and seti@home, conceivably every cycle can be used.

      And, as for the comment about nobody using Pascal... I meant, nobody that I see. Delphi (visual pascal basically) gets some use, but mainly for prototyping of one-off jobs. Everything I see is in C/C++ for speed/portability, Java/Perl for extreme portability and ease of coding, or VB because the coder is clueless. I realize some people do use Pascal, but nowhere near as many as use other languages.

  172. Score 9, Informative by Esperandi · · Score: 1

    Thanks man, this is great! I had read there were no free compilers available somewhere and just took that as truth, and this thing has been around since 95!

    The reason why I said the world would listen when it was available for Linux even though I don't use it was because I figured software workshops making huge applications are just getting started for Linux and Eiffel is MADE for huge projects with large teams that need to compile down to extremely efficient executables. In win32 I assume most development teams are too entrenched in whatever they're using already to switch over to something like Eiffel (its not a bad thing, it would simplycost too much in retraining and the benefits would take too long to realize, it wouldn't be sensible)

    Esperandi
    Everyone, go to the link this man posted and learn Eiffel!

    1. Re:Score 9, Informative by Tom7 · · Score: 1


      But the whole program analysis concerns an error (as I see it) in the direction of subtyping on derived classes -- a feature which doesn't seem to have to do with the precondition/postcondition stuff which is left out of the release code.

      Maybe I misunderstand, but doesn't this mean you can't fully type-check a module?

    2. Re:Score 9, Informative by Tom7 · · Score: 1


      Actually, I just checked out Eiffel. Better than java. The fact that it has its subtyping on function arguments in the wrong direction is a little worrisome, though. Whole-program analysis needed to ensure type safety? Hmm...

    3. Re:Score 9, Informative by Esperandi · · Score: 1

      Whole-program analysis at COMPILE-TIME... not run-time! That's the beauty of Eiffel, 99% of the super high level extremely cool features are never compiled! they're for debugging and such, once you're done with testing, the stuff isn't compiled in. because of how Eiffel is designed, this will never result in errors slipping through the cracks either...

      Esperandi

  173. ZZT engine workalikes by Kev+Vance · · Score: 3

    Yes, we've been working on ZZT engine workalikes for some time now. I've done a good bit of work on the subject. In my document The ZZT File Format, I have a lot of detailed information for anyone interested in working with ZZT files.

    I've also been working on various other ZZT projects. I see JZig has pointed out my attempts at combining OpenGL and ZZT (he missed a picture). I dunno how well this will work out due to performance issues -- it's a lot more polygons than you think in those ZZT screens :) Part of this has been my ever-evolving libzzt, which is almost working now.

    If you're interested in helping development (or any other slashdaughters for that matter), I could eventually clean this stuff up and put it up on sourceforge...

    The other ZZT clone project of note is ZZT++, a C++ reimplementation of ZZT. It's very DOS centric, but the source is GPLd, so it doesn't have to stay that way. See zzt.org for general ZZT info and news (or trap.cx/zarchive since zzt.org seems not to be resolving)

    That enough ZZT info for you? :)
    - k e v

    --
    F0 07 C7 C8
    1. Re:ZZT engine workalikes by Pascal+Q.+Porcupine · · Score: 2

      I love you.
      ---
      "'Is not a quine' is not a quine" is a quine.

      --
      "'Is not a quine' is not a quine" is a quine.
      Quine "quine?
  174. Sweeney is a bit detached from reality by ChaosDiscord · · Score: 2
    Sweeney seems so intent on proving his point that he seems a bit detached from reality. Almost... academic. This makes it hard for me to take his point seriously. Let's move through his article:

    This is a really profound realization, that your language has such power to expand--or limit--your horizons, and define which concepts you are able to think about fluently, and which ideas are not easily ponderable.
    Several other posts show that liguists in fact generally disagree with this argument. It doesn't seem to hold up well in real world programming either. I've seen very complex programs written entirely in assembly language. (Some people continue to write significant applications this way.). I certainly see object oriented programming on a day to day based in C (curses, the Win32 API (particularly the GUI bits), stdio, and the code I work on for a living). I've meet hard core C only programmers who vilify C++, then go on to write gloriously easy to read object orient code.

    Of course, in his portrayal of C as being an ancient, out of date language, he goes so far as to claim:

    Yes, you could develop user interfaces in C, but they were extremely kludgy in those early days, and didn't become mainstream until the advent of object-orientation and GUI class hierarchies.
    Apparently Microsoft Windows and Mac OS weren't "mainstream" enough for Tim. (I won't argue that they're kludgy... that's a whole different problem.)

    Skipping over brief discussions of hardwiring games and assembly, we come to C. He discusses slow adoptation of C by game programmers, then holds DOOM as a turning point of some sort:

    When id Software released DOOM, they surprised much of the industry by having no reliance on assembly code--despite excellent game performance, and by successfully cross-developing the game (in NeXTstep and DOS), then successfully porting it to an astounding variety of platforms.
    While DOOM didn't rely on assembly to run, it relied on assembly to run at acceptable speeds on mainstream computers. In addition, usage of C and C's contemporaries was already well entrenched in the game industry by that point.

    I'll gloss the section on C++. I think he's getting overworked about the failings of C++. Many, many projects continue to work in C++ just fine without collapsing. I think he's a bit arrogant for lump UnrealScript into the mix. He filtered out Pascal and other C contemporaries to presumably keep his list simple, then lumps in a fairly specialized pet language.

    Getting the future we get to the good parts. He wants to discuss "parametric polymorphism." He handwaves away C++'s templates with:

    Unfortunately, the C++ language bastardizes this concept in its support for "templates" (C++ lingo for the same concept), a terribly hacked and inadequate feature which, unfortunately, leads programmers to believe that parametricity is just a flawed concept--just like object orientation looked like a flawed concept to C programmers.
    Again, he ignores the many people who find that templates (especially the STL) provides many of the features he wants without introducing the ambiguity he does (more in a moment). He also ignores the C programmers who have been programming in object oriented styles for years. Oh well.

    Anyway, we get to his list of things he wants for "'parametric polymorphism' in its full glory." (His extra quotes, not mine. Read into what you will.) First we wants an "open world evolution of source code and binaries." I read this as, he wants to be able to change various bits (containers, algorithms, other bits) without breaking compatibility. Why templates fail as a "link-time feature" is beyond me. I manage to "evolve" my template containers and algorithms without breaking anything just fine. Sure, I can break things, but I fail to see how any language can stop me from breaking things.

    He wants "functions references bound to specific objects." I can't figure this one out. I certainly can stick function pointers in objects. Perhaps he means closure, which is easily done with function objects (an object which looks and acts suspiciously like a function). (This is slightly inelegant in C++, but certainly not an "enormous amount of 'duct tape'".

    He also wants his polymorphic types to support bounds and constraints (simple enough), and "higher-order function calling" (No guess).

    He then dwells on an example. He's got three integer arrays A, B, and C. He wants to add the each element in B and C and place the result in the corresponding element in A. He seems deeply bothered that C++ doesn't look at "A = B + C" and "do the right thing." He seems to ignore other, reasonable interpretations of B + C. Perhaps it means concatenate the arrays, or add all of the elements in B and C into a single number and put it into A[0]?

    Looking at things this way, the beginning C programmer who naively tries "C=A+B" is showing more ingenuity and insight into programming than the experienced C programmer who knows why that doesn't work.
    Looking at things this way, Tim Sweeney naively assumes that everyone can agree what + means in the situation.

    Ultimately he appears to be looking for a general way to work on sets in this sort of way. It's a darn shame he hasn't looked at the STL recently, since tools like for_each() provide a solid, general basis for running over a single array, and a for_each like function running over two containers isn't very hard to write.

    Moving on, we find:

    What if the modeler built several pieces of trees -- branches, roots, and leaves; and the programmer wrote code to hook them together...? The forest could be infinitely larger and more realistic due to each tree being unique."
    Why this isn't possible (and already being worked on just fine) in C++ (or even, god forbid, C), is beyond me.

    His discussion on virtual classes and frameworks is interesting. Somehow I'm not feeling a compelling calling for virtual classes, but it's interesting.

    His discussion on how wonderful UnrealScript is particularly interesting. He wants the various "good bits" of Java (binary interoperability, security), plus a few more (language supported serialization that automatically is backward compatible). This sounds nice and all, but he quietly ignores speed issues. Given that Unreal shipped with framerates regularly below 10fps on systems that were "up to date" when it shipped, I suspect he doesn't care. Like the Java advocates say, "A slight speed hit is okay, since computers keep getting faster." Of course, the "slight" speed hit generally turns out to be at least cutting your speed in half, it isn't okay. I'd certainly notice Word getting 50% slower, and I darn well want to run by games with as many graphical bells and whistles on as possible. Oh well.

  175. Re:Virtual classes? You can do it already in C++/J by Jogorun · · Score: 1

    No, his virtual class "crap" isn't fluff, just a poor choice of words. I have done classes in C, so I KNOW you can do virtual classes in C++/Java. Just not without TONS of comments. The whole idea is to make a programming language where comments are unnecessary.

    --
    Comments from a deranged lunatic who thinks he's cleaver.
  176. Re:Tim Sweeney, he's a good guy. by sludg-o · · Score: 1

    I saw "Tim Sweeney" and spent half an hour trying to think of ZZT. Thanks. I played World of ZZT to no end back in the day when you could get shareware mailed to your house on 5.25 floppies. If you let your shareware postage subscription run out, you can download all those old ZZT games at zzt.org

  177. Re:Java by cstaylor · · Score: 1
    Garbage collection probably isn't your problem (unless you are polluting the heap with too many new objects). All of the good VMs use generational garbage collection (where long-living objects don't get bothered very often unless the heap is getting full).

    The two toughest performance problems in Java are math (but C doesn't do a great job either, unless you explicitly walk the matricies in the right direction) and graphics (because all of the graphics bitblt crap goes on in user space instead of in the kernel like all of the other Win32 applications). As for good books on VMs in general, collecting dust on my bookshelf is the Ronald Mak book "Writing Compilers and Interpreters". Might be worth a look (but don't quote me-- I bought it on a whim).

  178. Virtual Classes in Java, C++, etc. by GreyMouser · · Score: 1

    While the author is quite correct that there is a need to move towards a higher layer of abstraction that simply "classes", he neglects to consider that such constructs already exist in many languages.

    Consider his model/view example (which by the way neglects the importance of a third controller class). Suppose you wrote a framework that manipulated Models and Views, and you wanted to allow extension.

    This is a perfect situation for applying the AbstractFactory design pattern. (See Design Patterns, Elements of Reusable Object Oriented Design for more information). Essentially, here is the solution in Java:

    public interface ModelViewFactory {
    public Model createModel();
    public View createView();
    }

    public class SpreadsheetModelViewFactory {
    public Model createModel() {
    return new SpreadsheetModel();
    }
    public View createView() {
    return new SpreadsheetView();
    }
    }

    Now let's consider the DukeNukeEmEngine example in Java:

    public class DukeNukeEmEngineFactory extends UnrealEngineFactory {
    public Actor createActor() {
    return new UnrealEngineActor() {
    private Object newVariable;
    };
    }
    }

    Viola, we have now added a new variable to hundreds of thousands of actors in the system. Regarding persistence, it is very easy to develop frameworks using introspection to easily support forward/backward compatibility.

    Now let me pose a challenge to Tim: suppose I wanted to write SuperEngine which took some of the best features of two different implementations of Engine? For example suppose I want DukeNukeEm.Actor, and Quake.Map? In Java, I can easily write:

    public class SuperEngineFactory implements EngineFactory {
    public Actor createActor() {
    return _dukeNukeEm.createActor();
    }
    public Map createMap() {
    return _quake.createMap();
    }
    private EngineFactory _dukeNukeEm = new DukeNukeEmFactory();
    private EngineFactory _quake = new QuakeFactory();
    }

    While the article does raise some interesting points, it also shamelessly plugs UnrealScript, a vertical language particularly tailored towards a game engine, touting features that could easily be be built into many existing languages.

    In truth, there is no such thing as a perfect language and new features will continue to evolve over time. However let's not forget that specialization comes at the cost of generalization. When was the last time you heard someone wanting to write a spreadsheet in UnrealScript?

    My .012 cents...



  179. Re:He dissed Lisp! by James+Lanfear · · Score: 1

    Don't get me wrong, I have no problem with Scheme per se, and many of implementations are excellent. I'd take any of the Lisp dialects over most other languages. I just don't think that Scheme is the best Lisp has the offer; the same goes for Common Lisp, EuLisp or any of the other current standards. Looking at some of the more arcane versions (I'm trying to find BC Smith's {2,3}-Lisp at the moment), I can see a lot of room for improvement (or perfection; whatever).

    Anyhoo, it wasn't my intention to start a language war, so I'm just going to shut up now.

  180. Re:Hopefully this will be the end of C and Java by LRJ · · Score: 1

    VB is considered a 'higher level' language and I have yet to see it run on anything other than Winblows.

    --
    LRJ
  181. Re:FIRST SAUSAGE FEST! by Anonymous Coward · · Score: 0

    You left out Fortran and LISP.

  182. He dissed Lisp! by auntfloyd · · Score: 1


    Maybe he should look at http://www.franz.com/apps/gd.main.html for a sample of what's being done with this "research topic"

    ~~~~~~~~~
    auntfloyd

    1. Re:He dissed Lisp! by auntfloyd · · Score: 1


      Well, Poplog includes tools for Common Lisp, SML, Prolog, and POP-11, all of which can be combined and work together. It's available for both Unix (including Unix) and Windows, although the Windows version is not as good.

      This probably isn't what you're looking for, but it allows you to combine Lisp and ML.

      ~~~~~~~~~
      auntfloyd

    2. Re:He dissed Lisp! by jacobm · · Score: 2

      The TUNES review basically says "the standard sucks because it doesn't standardize half the things that are really necessary." Yep. However, that doesn't mean that there aren't Scheme implementations that do a good job of filling in the gaps. In particular, Rice University's PLT group puts out a Scheme environment, DrScheme, that has everything that TUNES complains about and more (including a good object system). DrScheme is on the short list of Scheme environments to be using. True, it's not standard, and that's a problem. However, it's fairly well-documented (with a graphical help browser, no less, that doubles as a minimal HTML renderer), and it's supported by some of the most prominent Schemers around (in fact, members of the PLT run schemers.org, what TUNES calls the "number one page about Scheme"). They're accessable, too- if you think it can't do something you want to do, post to comp.lang.scheme and one of the maintainers will tell you that you're wrong with a degree of politeness proportional that in your original message =).

      Of course, I go to Rice, and I know the people who maintain DrScheme, so I'm biased. However, having programmed in it for two years, I can tell you that if you can't do something in DrScheme, that's because you shouldn't be allowed to do it at all.

      --
      -jacob
    3. Re:He dissed Lisp! by Anonymous Coward · · Score: 0

      Well. Have you been been paid for programming both in Common Lisp (ANSI standard) and Scheme?
      I have. 3 years Scheme and 5 years CL.

      Guess what. Scheme is _small_ lisp variation with some ideas taken from Algol. It has IMHO sacrified many powerful lispy ideas for easy to learn simplicity. Advantage of Scheme is that it is easy to learn fast. Disadvantages is that with small language you get big programs and those Scheme libraries (you need lots of libraries) are not as well designed as Common Lisp language.

      With Common Lisp there is much bigger learning curve. But after that curve you are on the top of the hill!!! CLOS, MOP, reader macros, macros, compiler macros .... Whoooohaaa!

      And think about Commonn Lisp implementations! Allegro, Lispworks, CMUCL ... You get fast native machine code. Much faster than Java.

    4. Re:He dissed Lisp! by Anonymous Coward · · Score: 0

      And what pray-tell is wrong with Scheme? Scheme is an excellent Lisp-like language. Some would even call the two different dialects of the same language. Confusing the two is not at all the same as confusing JavaScript and Java.

    5. Re:He dissed Lisp! by Phil-14 · · Score: 1

      I know I'm late to the thread, but I just thought I'd ask, didn't Abuse have a lisp interpreter embedded in it? (Of course, so does Sawmill, which I'm using, and various versions of emacs, which I use, but that's besides the point; I wanted to mention a use of lisp in a game, in hopes it would be relevant.


      I know it's not modern, but I think abuse was a very good game for its time.


      Oh well.


      --
      (currently testing something about signatures here)
    6. Re:He dissed Lisp! by Anonymous Coward · · Score: 0

      Yes. Seeing the scripts coming with it really warmed my heart. YAULRWBYALIP [Yet Another Useless Language Review Written By Yet Another Lisp-Illiterate Programmer]

  183. Re:Abstraction is NOT feature/code bloat by Anonymous Coward · · Score: 0

    >And I won't care how slow it is. Ahhh, the difference between a support person and an end user who want all data instantly.

  184. Re:Hopefully this will be the end of C and Java by dvdeug · · Score: 1

    I'm working on a compiler for a programming language - Modula 3 - which made size (50 pages) a design goal. I don't have the foggest whether many things are legal or not. I understand that Pascal had many problems because the PUMR didn't explain things. Usually a thin book is just "we didn't bother getting into details because (a) we didn't want to or (b) we know all the details and don't realize we're leaving them out of the standard."

  185. Who says,,, by Anonymous Coward · · Score: 0

    that $100 graphics chips outperform $100k Silicon Graphics workstations? Stop smoking that crack, boy.

    This is another example of that free-market/technology boosterism that spews from the mouths of those that least understand technology but think they know everything.

    1. Re:Who says,,, by jackmott · · Score: 1

      yeah
      sweeny doesnt know anything about technology

      word

      =)

      Actually, though he clearly exaggerates quite a bit, the latest Nvidia consumer chip (the GeoForce) does compare to the more expensive thousand dollar offerings. Nvidia is marketing a 64 meg version of the Geoforce for exactly those purposes, replacing those 'overpriced' graphics workstations. I think they may be targeting linux specifically too, which should be nice.

      remember, VOLUME brings PRICE DOWN. With lots of 13 year olds buying graphics accelerators, the price drops, and with id and a few other forcing the chip makers to fully implement openGL, your going to get some stuff that compares to the big SGIs for much much less.

      fun fun fun =)

      --
      -I go to Rice, so figure out my email address
  186. Re:I've been waiting all day for this to get poste by Anonymous Coward · · Score: 0

    The languages that Sweeney mentioned at the beginning of the essay but said he wasn't going to mention because they weren't "mainstream" enough, such as Lisp, Haskell (and logic languages like Prolog and Mercury), have been doing all these things for a long time. Some of them (Common Lisp for example) have extremely developed and powerful compilers. In an earlier essay, Sweeney mentioned that the "mainstream" programming world lags behind the "academic" programming world by quite a bit. Maybe they're so slow to catch on for the same reason someone at work I know refuses to use a reasonable shell and hit tab to complete filenames rather than laboriously cut and paste everything. And there's lots of serious mainstream use of at least Common Lisp.

    There are a lot of really cool, really powerful languages out there *right* *now*, and they might require you to fundamentally change your method of thinking. Perhaps there is resistance to this because it's like having to learn programming all over again, but I *like* doing that.

    perl is mostly a rehash of C, awk, shell, and random other stuff. It was designed to be "practical" which seems to be synonymous with "backward looking". Not that perl would be a bad language if it had a reasonable syntax, but it doesn't, so I guess there's nothing really to recommend it, other than ubiquity. python does a pretty good job of being "practical", I think.

    If you're actually interested in languages, and ways to think about programming rather than writing the same old app the same old way, learn eiffel, haskell, scheme, mercury, etc. Even if you don't wind up using most of them very much, you won't regret broadening your mind.

  187. Java by Corrinne+Yu · · Score: 2

    Java has its own performance based problems for performance critical sections of my code.

    Are there versions of Java or implementations of Java in which only user explicitly specific garbage collection?

    A Java machine arbitrarily deciding when and how to garbage collect when I want to maintain network connection or something like this does not appear helpful.

    Garbage collection-less Java would of course not have this problem for me.

    1. Re:Java by X · · Score: 2

      Good JVM's do incremental GC, which should prevent you from experiencing any noticable delays from GC. Java2 also allows you to use references to influence the GC routine. Finally, good JVM's run the GC in a seperate thread. Most of the time GC's will happen when the system is otherwise idle.

      The truth is it's all in the VM, and Java, because of it's youth, has largely been populated by poor VM's.

      --
      sigs are a waste of space
  188. Re:One nit to pick by paul.dunne · · Score: 2

    I actually agree with the gist of your post (as I interpret it), that is, that the realm of philosophy is those areas that haven't proven amenable to scientific investigation. Ironically, some philosophers would consider the very idea non-sensical -- oh well, there's nowt stranger than folk! My main point is, I don't concede that such a general proposition as "there can never be a proposition in language A that is not fully-translatable into language B" a statement ammenable to scientific proof. I find my empirical experience, plus the arguments of such philosopers as Heideigger, rather argues the opposite. Perhaps it is easy for those who belong to the dominant language/ideology combine on Earth right now to accede to the theory that language and thought are a one-to-one transformation. Speaking as an Irishman, my history seems to prove the opposite.

  189. I think not. by Anonymous Coward · · Score: 0

    There is no way in hell that a $100 chip from 3DFX or Nvidia out-performs a $100,000 SGI, for that price you are looking at an Onyx2 system or and VERY max'd out Octane (maybe even a down payment on an Origin2000) which outperform those PC chips hundreds of times over. Not to mention their very optimized software; which is comming to Linux :)

  190. Re:Concision isn't the issue. by Butt · · Score: 1

    vlax worte: That 5% was a concession to the handful of linguists (mostly anthropologists) who still take some portion of Sapir-Whorf seriously.

    Give it a rest. Add the ethnographers, media theorists, cultural theorists, historians of science, etc. etc. etc. and together they far outnumber the hard linguists. As Daniel Chandler notes, there is a "broad acceptance" within academia of a weak version of the Sapir-Whorf hypothesis.

    See: http://www.aber.ac.uk/~dgc/whorf.html

    A lot of geeks resist the idea that language constrains reality because they can't bear the thought of their world being C++. :-7

    Danny

  191. Human Language does Restrict. by MattMann · · Score: 2
    ... refer to the BSD schema as copycenter. "Take it down to the copy center and run off as many as you want."

    Copyleft stops me from running off as many as I like?

  192. Re:One nit to pick by Anonymous Coward · · Score: 0

    Now that's what I call an argument.

  193. Re:Not bad by aeonek · · Score: 1

    I was under the impression that smalltalk was a basis for extending C to "C with classes" and then subsequently to C++.

    You're almost right!

    Objective-C is like C with Smalltalk's object model, that's probably what you've heard of ("C with classes"). C++ is different, and uses an object model similar to that of Simula. An OO purist will tell you that it's not really object-oriented, but that's more of a religious issue.

    --
    "Bernoulli was wrong. X proves that you can fill a vacuum, yet still it sucks." - Dennis Ritchie
  194. Functional Assumptions and Openness by Effugas · · Score: 3

    There's an interesting aspect of openness going on here: Education, and a slow but steady ramping up of the "coolness" of highly technical skills.

    Medicine is cool because you can save lives. Acting is cool because lots of people enjoy your work. Programming, over time, will become more and more cachet as A) It remains difficult to master but simple to begin(something neither medicine nor acting can ever approach), B) Budding programmers realize the value of an audience interested in what they personally have to say, to teach, and to create, and C) The end result is frantic appreciation from either businesses(Linux developers) or the 14-30 gaming crowd(Game programmers).

    Appreciation is a good thing.

    About Sweeney's paper(truly excellent, incidentally), a couple things come to mind. He talks about the concept that "C=A+B" should be equivalent to C[n]=A[n]+B[n] -- in other words, take the first value of the A array, add it to the first value of the B array, and then put that in the first element of the C array. After all, that's what C=A+B obviously means, right?

    I don't know about that. Perl thinks C=A+B would expand to "C is the A list with the B list tacked on at the end". The add is one dimensional, not two dimensional--the two lists are glued together, not mixed into a sum. I think that's rather logical.

    And what of another perfectly logical explanation? Maybe C is meant to be a single integer. Now you take all the ints in A, and all the ints in B, add 'em all up, and put 'em in that C value.

    Perhaps we need more punctuation, more symbols to describe the differences--we could have +, ++, +-+, +++ATH...that's the solution Perl found, and it's Perl's biggest albatross--too much dense punctuation.

    Perl without Punctuation is like Programming Without Caffeine.

    Of course, as long as you know there's something you don't understand, you can look it up. But if you think you know what C=A+B is "obviously" doing, when in reality it's doing something completely and utterly different, you're going to have a much harder time debugging your code. Not knowing what's broken is possibly the single most expensive debugging scenario possible, by any measure.

    Stop for a second and ponder the power of such a concept -- with about four lines of code, you've sub-classed a 150,000 line game engine and added a new feature that will propagate to several hundred classes in that framework.

    This sounds really, really cool, but...

    How predictable can a system where this occurs be? Would we map destinations of modified code? Don't you usually get problems when new features are bolted onto old architectures when really the old methods need to be wholly rewritten?

    Of course, these are problems that have stricken *every* advance in language design...there's always the optimization that becomes impossible as you go up the ladder.

    The most desirable approach is to have language-level security, where the compiler can usually tell you "that's not allowed" rather than determining security violations at runtime--that approach allows the maximum amount of optimization compared to the brute-force kernel transitions of operating system security.

    Sweeney's awesome, and I respect him highly, but this is probably the biggest error of the entire piece.

    Yes, it'd be nice to be notified *as the programmer* that your code violates a security constraint--in fact, it'd be beautiful, because then you'd have line-level notification of where your code is misbehaving in ways that would compromise the security of the host machine. (The concept of "Buffer Overflow Waiting To Happen on Line 12431" just appeals to me.) But, um, that presumes that the programmer doesn't *want* their to be a buffer overflow, or a kernel backdoor, or whatnot. Put all security in the compiler, and a malicious entity will simply compile the code on their compromised OS, move the binary over to a target machine, and grab themselves a rootshell.

    Clearly, this isn't an optimal scenario.

    Now, you do have situations like the JIT compilers for Java Bytecodes that go to some length to verify the validity of a bytecode before compiling it, and may(I'm not sure, and this probably varies by implementation) lock off entire branches of functionality through the compiler. But that's different--the code must pass through the compiler *on the host machine* to be converted to machine language. In effect, the end binary is a combined product of the bytecode and the host-controlled compiler. If the system designer wishes to have a userspace process handle extensive security analysis before passing a binary off to be executed, that's one thing. Trusting binaries from arbitrary compilers is quite another!!

    And, it remains the unfortunate truth that there are more professional Cobol programmers than C programmers, more C++ programmers than Java programmers, and for many years there will be more Java programmers than there are followers of the successor language.

    I've been thinking about this, and as languages have gotten "cooler", I think there's something to be said about a loss of stability. I don't think anybody is surprised if a COBOL based billing system doesn't go down for a year; I also doubt most people are surprised if a Java applet manages to trash their web browser within a period of minutes.

    Something's wrong there.

    Maybe the reason there are still COBOL programmers around is that few C, C++, or Java based systems could remain acceptably reliable after 25 years?

    In terms of technological progress, we game developers are way more influential than most of us realize.

    I noticed. I've been saying this for years: John Carmack is damn near personally responsible for Intel's dominance. Had Quake not been so perfectly tuned for Intel's Pentium processors--and thus so amazingly unoptimized for AMD's and Cyrix's competing x86 processors--Intel would have taken severe hits in either market share or year end profits over the last five years. For all the talk about the genius of Andy Grove--and don't get me wrong, I'd probably bungee jump off the Grand Canyon for a chance to have dinner with the man--it was John Carmack's low level pipeline optimizations and hyperusage of the floating point capabilities of the Pentium architecture that directed quite literally billions of dollars of purchasing decisions away from AMD and Cyrix into the waiting arms of Intel.

    3Dfx's long term dominance in the 3D market was a similar scenario--the fact that Unreal hasn't played all that well on anything *but* a 3Dfx card until rather recently played no small part in their dominance.

    game developers are in a unique position, by virtue of starting projects anew every 2-3 years, to "short circuit" the process and radically accelerate the adoption of cool new technology.

    The best language in the world ain't going anywhere without top notch compilers that the gaming industry isn't going to write. This, more than anything else, is the biggest problem that game developers have if they want to choose new languages. A handful of games a while back were written in Java, using Asymmetrix's Java Flash Compiler(amazingly cool tech, really. You could recompile the code of a running app, and *it wouldn't stop running*. Then you could actually compile and release x86 binaries of your code. Never made it to Java 1.1 *siiiigh*)...none of 'em did all that well.

    There's another issue to consider--game developers are truly writing less and less of the low level code. This is a good thing--who wants to write Yet Another Sound Mixing routine when you can just toss another wave at the sound device--but it does create some constraints against spawning new languages. It didn't used to be that hard to change languages--you were rewriting everything, after all. Now, you're talking about every single game shipping rife with dependancies on external sound libs, 3D rendering drivers, input systems, socket code...

    Yes, there's always translation layers, but that kills half the gain.

    Tim, if there's one question in this entire piece that I'd like you to reply to, it'd be this:

    Network effects--the fact that a given standard gets exponentially more valuable as others share in that standard--have essentially locked TCP/IP as the internetworking protocol of choice for the foreseeable future, to the point where even upstart additions such as IPv6 and IPSec are finding acceptance to be a difficult task.

    Could the same fate befall any new kinds of advanced programming languages, the identities of which were notably and painfully absent from your essay?

    Yours Truly,

    Dan Kaminsky
    DoxPara Research
    http://www.doxpara.com

    1. Re:Functional Assumptions and Openness by Anonymous Coward · · Score: 0

      ... it was John Carmack's low level pipeline optimizations and hyperusage of the floating point capabilities of the Pentium architecture...
      I was under the impression that this was Michael Abrash's area of expertise...

    2. Re:Functional Assumptions and Openness by Effugas · · Score: 2

      ... it was John Carmack's low level pipeline optimizations and hyperusage of the floating point capabilities of the Pentium architecture...
      I was under the impression that this was Michael Abrash's area of expertise...


      *Slap* Totally forgot about Abrash. My apologies.

      Nonetheless, I seem to remember Carmack being quite talkative about making sure both pipelines in the Pentium were processing *something* at any given time. I remember seeing some of Intel's tools for pipeline analysis at Software Development '97 and going "Damnit, iD did this stuff *by hand*".

      Anyone remember exactly how the programmatic load was distributed at iD? Abrash deserves his due :-)

      Yours Truly,

      Dan Kaminsky
      DoxPara Research
      http://www.doxpara.com

    3. Re:Functional Assumptions and Openness by Hortensia+Patel · · Score: 1
      with about four lines of code, you've sub-classed a 150,000 line game engine and added a new feature that will propagate to several hundred classes in that framework.

      I did think Tim was overstating the "simplicity" of this, just as I think he was unfairly dissing the C++ template mechanism. You could get something a lot like this "virtual classes" behaviour by specializing a GameEngine template for (among other things) an Actor class of your choice. The STL does this kind of thing with iterator and allocator classes for the various collections.

      The other thing he didn't mention is that C++'s template mechanism had performance as a MAJOR design goal. A good implementation of the STL can be every bit as fast as a hand-tuned C algorithm. There's even experimental template work going on which can beat FORTRAN at some number-crunching tasks. I don't see functional languages doing this anytime soon. Sure, the extra flexibility of functional languages is nice, but if you don't need that flexibility _at runtime_, why pay for it at runtime?

      I don't honestly think that C++ templates are all that broken. The biggest beef I have is that compiler support for them is so unfriendly - all those 20-line error messages, blech.

    4. Re:Functional Assumptions and Openness by brucehoult · · Score: 1
      About Sweeney's paper(truly excellent, incidentally), a couple things come to mind. He talks about the concept that "C=A+B" should be equivalent to C[n]=A[n]+B[n] -- in other words, take the first value of the A array, add it to the first value of the B array, and then put that in the first element of the C array. After all, that's what C=A+B obviously means, right?

      This is exactly correct. There is no one "intuitive" meaning to "C=A+B" that beats out all others.

      Fortunately, plenty of programming languages give you all the power to express any of the possible meanings concisely, without having to write lots of loops. I'll use Dylan for my examples, but you could as well use Scheme or SmallTalk. define variable B = #[1, 2, 3, 4]; define variable C = #[1, 10, 100, 1000]; ? map(\+, B, C); ==> #[2, 12, 103, 1004]

      I don't know about that. Perl thinks C=A+B would expand to "C is the A list with the B list tacked on at the end". The add is one dimensional, not two dimensional--the two lists are glued together, not mixed into a sum. I think that's rather logical.

      ? concatenate(B, C); ==> #[1, 2, 3, 4, 1, 10, 100, 1000]

      And what of another perfectly logical explanation? Maybe C is meant to be a single integer. Now you take all the ints in A, and all the ints in B, add 'em all up, and put 'em in that C value.

      Lots of ways to do this one...

      ? reduce(\+, 0, map(\+, B, C)); ==> 1121 ? reduce(\+, 0, B) + reduce(\+, 0, C); ==> 1121 ? apply(\+, map(curry(reduce, \+, 0), list(B, C))); ==> 1121 ? reduce(\+, 0, concatenate(B, C)); ==> 1121

      Of course, this ambiguity of what a simple "+" does isn't limited to "+". What might someone mean by "*"? C[n]=A[n]*B[n]? Dot product? Cross product? Multiply all the elements together? All are equally valid.

      The solution isn't lots and lots of specialised operators. It's having easy ways to combine the operators we already have.

      Some of the above examples might look inefficient, but in fact using a modern compiler they all compile down to the same simple loops that you would otherwise write by hand.

  195. Responding to Offtopic by Anonymous Coward · · Score: 1
    Both parts of your post were well worth reading, but my question comes on the offtopic part.

    I think you're rightfully angered, but it flat boggles my mind you're working at 3drealms - Duke3D was arguably one of the most sexist/mysogonistic games that gained wide appeal. I also can't help remembering stumbling upon a E3 picture page of one of the 3drealms owners which consisted of not much more than "Me with this boothbabe", zoomed in pictures of T&A, etc.

    Facing frustration with just the general gaming world, it's this outsiders view is that 3Drealms would be one of the last places to work expecting to be treated as a human rather than a female. It'd be interesting to hear a response!

  196. Re: on perl by Doug+McNaught · · Score: 2
    More importantly: dynamic scope.

    This is an extremely anti-modular misfeature, which is being phased out of the language, but which is still a thorn in the foot of any large system.

    Absolutely agree--I have had to work with large systems in Perl that use dynamic scope intensively, and it's horrible.

    You seem to be implying, though, that this is a reason not to start a big project in Perl today. I disagree. If your coding standards (for large projects you do have coding standards, I hope) mandate use strict and discourage use vars (in other words use my variables for everything), it's no worse than C or C++, and has an object system that I rather like.

    -Doug

  197. Re:Concision isn't the issue. by BJH · · Score: 1


    Um...that has about zero to do with Sapir-Whorf. You're way too far into the realm of cultural anthropology for it to be applicable.

  198. Re:One nit to pick by WNight · · Score: 2

    The 'problem' is that english is too slippery, and is defined by usage. 'Free' means, liberty, and also, unpriced. That's because we've collectively added to it over time. It means both, depending on context. It's not that english doesn't have a word for 'free as in speech' but that it doesn't have a word exclusively for it.

    German doesn't have a short root word for a lot of things, it has compound words that are like our phrases. To complain that english doesn't have a short work for every concept is like complaining that german has long words.

    If 'free as in speech' is what you mean to say, then say it. Or say 'legally unencumbered', or 'unrestricted copying', etc. Find a phrase that explains exactly what you're trying to say.

    I'd hazard a guess that 'libre' in french doesn't mean 'free as in speech, under USA law'. It probably means 'allowed to exercise it's rights' or something similar, which would lead a purist to ask what rights software has. More correct would be 'available for use in exercising your rights' which illustrates that the software is available for you to use in any way to exercise any of your rights, but which is still a bit vague in defining what rights you think people have.

  199. [OT] Re:He dissed Lisp! by dne · · Score: 1

    Sure, this was exactly my point. Or rather: Common Lisp is not the only Lisp language.

  200. Re:C = A + B. No problem in Blitz++ by Anonymous Coward · · Score: 0

    seriously. . . hello. . . . does nobody really understand available c++ libes?

  201. Re:One nit to pick by elegant7x · · Score: 1

    --there are certainly statements that can be made in, e.g., Japanese, that I'll never be able to fully comprehend, or even begin to understand.

    Well, what if you were to learn Japanese? Would that solve your problem. Japanese would have to be taught to you in English, therefore any Japanese concept could be understood by a native English speaker.

    I've thought about that in the past, and wondered if there was anything that someone couldn't learn if they spent enough time studying a language, and I concluded that there wasn't. This is because a language has to be learned in the first place. We might learn more slowly then a baby, but we are still capable of learning. Whenever you have a word with subtle connotations, its always possible that even another person near you does not have the same. For a long time I was using a denotation of "hyperbole" that was completely incorrect, for example.

    Amber Yuan (--ell7)

    --

    "and dear god does this website suck now." -- CmdrTaco
  202. VM by Corrinne+Yu · · Score: 1

    Heh, it's fun to go OT.
    In some ways it seems difficult (at least for me :) ) to design good VM, and implement good VM.
    What are the best way choose decent op codes for VM?
    What are some caveats to VM implementation?
    What are some tricks to coding good VM's?
    Do understand my VM making ability to limited to the brute-force big look up table of code to execution. There *must* be a more intelligent way of putting a VM together by professionals than the way I hack them together. :)
    Thanks for any VM information you would have.

    1. Re:VM by X · · Score: 2

      If you wanna look at the source of a good JVM you can always look at Sun's if you don't mind agreeing to SCSL. If you'd rather not be chained, then I'd suggest grabbing the VM from Transvirtual. It's not perfect, but it's not bad.

      Other good VM's for other languages: Squeak and CMU Lisp (not really a VM in some ways). E-mail me if you want pointers.

      --
      sigs are a waste of space
  203. SGI workstations vs. cheap 3D cards by Captain+Zion · · Score: 4
    Games were responsible for creating the market which enabled 3dfx and NVidia to mass-product $100 graphics chips which outperform $100,000 Silicon Graphics workstations.
    That's right, but for games. Many of the nice features you can find in an SGI box are not implemented in the cheap cards, like an accumulation buffer, or layers. In many cards the stencil buffer is missing. I'm currently working with OpenGL robot dynamics simulation with a high-end PC and a TNT2 card, and I would trade it for an O2 anytime.
    1. Re:SGI workstations vs. cheap 3D cards by Doctor+Bob · · Score: 2

      You know, I appreciate the innovation and development that goes into consumer graphics boards. Hell, my dissertation was based on the assumption that "soon all computers will be as powerful as the RumptyRump BFG 9000."

      But

      We've had a word for statements like "$100 graphics chips which outperform $100,000 Silicon Graphics workstations" for about 20 years now: it's "troll."

      For clarity, I've worked with $200+K SGIs that are now selling used for very low prices (and that's a good thing). With all the extra stuff, the machine on my desk went for $60K (SGI Octane). Would I replace it with an "equivalent" PC-based product? Don't be absurd.

      For those responding with "hey, why not?", look up "crossbar switch", "gigaflop", "multiprocessor" and "multiple asynchronous data sources."

      PCs are not workstations - and that's okay! Right now, I'm typing from my home machine: a Pentium-based PC with an NVidia card. Am I most effective from this machine? No. Is it okay for home use (slashdot, web surf, games, games, games and a bit a surplus work)? Sure.

      Am I worth more to my employer banging on big iron (as opposed to something with "$100 graphics chips")? Apparently so.... $-)

      --
      -- Doctor Bob
    2. Re:SGI workstations vs. cheap 3D cards by jackmott · · Score: 1

      the TNT2 has the stencil buffer

      the next 3dfx chip has an accumulation buffer

      and the GeoForce and savage 2000 both have geometry processors and do lighting in hardware.

      they are rapdidly approaching the big boys, and price is remaining constant, with the top of the line cards hovering around 250-300 at any given moment =) rule!

      --
      -I go to Rice, so figure out my email address
  204. Overhead isn't in implementation, its in detection by Fnord · · Score: 1

    No...the overhead isn't in the fact that the for loop is used. The overhead is in the fact that in a language like this guy describes, A and B aren't necesarily always arrays. They may be normal integers. And the compiler doesn't know, this is determined at runtime. If the compiler did know then most of the benifit of the logic model in this new language is useless, all it is is a typing shortcut (ala myInt++ as apposed to myInt = myInt +1....just a convenience thing). Since this is runtime determined, the code generated by this compiler ether uses a for loop whether you need it or not, wasting cycles on the vast majority of additions which are single numbers, or it determines whether it needs the for loop before hand with an if statement, wasting cycles all around. Abstraction does have a price.

  205. Take his C++ comments with a grain of salt by Broccolist · · Score: 1

    C programmers that feel turned off from C++ by that article, don't be. Though he took a different approach from most C++-bashers (oh no! it's "bloated"!), it looks like he hasn't kept track of recent developments in C++. Templates are not the primitive feature they were in '94 and today, actually solve many of the problems he talks about.

    First of all, he talks at length about having to make a loop to add the contents of 2 arrays. He suggests we should allow a construct such as "array3 = array1 + array2". Yes, the loop is annoying and error-prone. But his idea is seriously flawed! The problem is ambiguity. With such a construct, what exactly do we add? All the elements? The first element? There is no correct answer and such a construct can only lead to confusion.

    Also, it does not provide a general enough solution. What if I want to add only half the elements in the array? I will have to write a loop anyway, thus the feature is too feeble.
    So, I presume he didn't mean that literally.

    C++ provides standard library components to solve exactly that sort of problem. With something like for_each(), I could've done that in a single line, without a loop, and what's more I could've chosen to add only half the elements in the array.

    Oh, and by the way, with operator overloading it would be easy (but dumb, as stated earlier) to overload operator+() to add the contents of those arrays together.

    And C++ already provides almost direct support for his "virtual class" concept. Simply create another inheritance hierarchy for the "virtual class", parralel to the first, with virtual functions used to read/write to its members. Although it means a bit more syntax, in the long wrong this will be a _good thing_ because you might find out you need to extend the parralel hierarchy separately from the original. Frankly I don't feel that this aspect of C++ needs any change at all.

    The committee that standardized C++ includes many of the best language designers in the industry. I've found that C++ elegantly solves every problem I could throw at it. Before you clamor for new features, think about whether what you want to do can already be done by combining existing features of the language.


    Broccolist

  206. Re:A motto I adopted quite recently... by Dog-Cow · · Score: 1

    On another note, we just did some performance tests of an Octane vs. an HP Visual Workstation (or whatever the hell they're called). The HP actually kicked the Octane's butt in terms of framerate. :-b

    I work for Ford, and am involved somewhat with the Unix workstation benchmarking. I can't give out any numbers, but Ford won't buy any new SGIs. Way too slow compared to HP and Sun. A PC with a decent high-end card (Like a Wildcat or HP's FX6) can get into the ballpark of an HP C3000, but there's no way a GeForce could do the same.

  207. YOu are ignorant of late binding by Anonymous Coward · · Score: 0

    "I wince just thinking about the compile times that programs from such a language would take. " Hey, bud, dynamic binding makes it so that you don't have to recompile the original class that you sub-classed. So, you only have to wait for roughly four lines of code to parse. Yeah, that is still fast, even on a P166

  208. example programming language by Anonymous Coward · · Score: 0

    Mozart, a programming language that's parametrically polymorphic. http://www.mozart-oz.org/

  209. Damn Europeans! by Nick+Mitchell · · Score: 1

    I think imperative languages are considered to be something of a dead end of optimization only by people who spell optimization with an "s" instead of a "z".

    :)
    Your American Imperative Optimizer,
    nick

    1. Re:Damn Europeans! by John+Allsup · · Score: 1

      Why don't you spell Europeanz with a z while you're at it -- it makes the same sound :-)
      John

      --
      John_Chalisque
  210. Functional languages by Kaufmann · · Score: 3

    (Also posted to GameSpy's forum)

    I'd like to see Tim explain just how it is that functional languages are confined to the realm of theory, considering the infinity of real-world applications in which they have been used since Lisp's inception in the late 1950's. (You do remember that Lisp is one of the oldest programming languages still in use, don't you?) Even more so when you consider the roots of the thing that Tim touts as one of the next big things: "parametric polymorphism", which is nothing but a (poor) adaptation to the imperative paradigm of a subset of Haskell's type system.

    Perhaps this is a matter of taste, but I tend to dislike strawmen, especially when attempted by this kind of engineer, who, for some reason, seem to have a dislike of anyone who even sounds like a computer scientist (the keyword here being "scientist"). Face it, Tim: simply sweeping all which doesn't conform to the New Jersey mindframe under a blanket of "purely theoretical languages that have no use in the real world" won't make it true. The fact is that, as long as we're discussing what programming will be like in the future, functional languages are far beyond the state-of-the-art from New Jersey. (Even other game developers recognize this, as evidenced in a mid-1999 article on Gama Sutra about Haskell and other languages in gaming.)

    For a glimpse of the real future of programming (as well as computing in general), I suggest the TUNES project, of which I am a member.

    (By the way, Tim would have you believe that C was the very first structured programming language. I laughed especially hard when I read that part of the article.)

    --
    To the editors: your English is as bad as your Perl. Please go back to grade school.
    1. Re:Functional languages by Tom7 · · Score: 1


      > ... are far beyond the state-of-the-art from New Jersey.

      Hey, don't forget that the excellent SML/nj compiler hails from New Jersey. ;)

      - Tom 7

    2. Re:Functional languages by drnomad · · Score: 1
      I don't really get what this Tunes is about, but I do know that functional languages like Haskell, Miranda, Amanda, Kleisly and others will see future soon.

      Tim is right in one thing:

      C++ still is the old C, with some add ons (that's where the ++ operator in C++ comes from).

      C++ nowadays should be used to build new languages and lift the generation level.

      For fast programming 3GL (so this means Java too!) will be dead, 4GL (for SQL and all) will survive longer, 5GL nobody ever uses as Prolog is a very tough language.

    3. Re:Functional languages by Kaufmann · · Score: 2

      Damn, you're right!!! Stupid me! :P

      OTOH, I've yet to meet someone who, at the mention of New Jersey, thinks of SML/NJ (as opposed to Bell Labs)...

      --
      To the editors: your English is as bad as your Perl. Please go back to grade school.
  211. Tim's example = "factory method" design pattern by StrawberryFrog · · Score: 1

    Virtual class var? That's just the Factory method design pattern. (see the Gang of 4 Design patterns book) - "Define an interface for creating an object, but let subclsses decide wich class to instantiate".

    You can implement this in C++, Java, Delphi etc, so what's the big deal?

    --

    My Karma: ran over your Dogma
    StrawberryFrog

  212. kami by elegant7x · · Score: 1

    If you can't exspress the idea of Kami in 1,000 words of english (or 1,000 words of japanes, for that matter.) then its probably not a consept that All japanese hold in common. Now, it may not be worth your time, but could still be done.

    Sure, there might be huge amount of sublties in the language, but if there are those probably vary from person to person anyway. Remember, if its posible for a little japanese kid to learn what that word means, it should be posible for you as well.

    Amber Yuan (--ell7)

    --

    "and dear god does this website suck now." -- CmdrTaco
    1. Re:kami by James+Lanfear · · Score: 1

      (In a hurry, no spellchecking, no well considered arguments....)

      1,000 words of english...then its probably not a consept that All japanese hold in common.

      This is very off-topic and somewhat spurious, but express the idea of blue in 1000 words or less. If you can't most people are probably colorblind. There's a problem in there somewhere....

      Anyway, back on track. I'm not saying you can't express it, I saying that on a semantic level it won't be the same. I could probably descibe kami in a few dozen words, but then my knowledge of kami would be of the concept represented by a few dozen English words, not the single Japanese word and the centuries of cultural baggage it carries with it. That baggage counts, even for little kids.

      Here's another example: imagine a ball, roughly a foot in diameter, made up even sized pentagonal or hexagonal panels, colored black or white according to a consistent pattern. Now imagine a {soccer,football} ball. It's just not the same experience if you have any idea what soccer is, let alone if you play. The explanation would be identical, but the meaning would be tremendously different for an Englishman versus, well, an averge American, let alone a Pygmi. (They don't play, do they?) To put it poorly, someone who's never experienced soccer has never experienced soccer.

      those probably vary from person to person anyway

      Right, except I'm saying that many of them are cultural, rather than individual.

      posible for a little japanese kid to learn what that word means, it should be posible for you as well.

      Not at all. First, he's a Japanese kid, immearsed in Japan's culture in a way I can never imagine. Second, no matter how much I practice, my first language will get in the way, as will my Northwest upbringing. As I said above, those Japanese words may very well be nothing but pointers to English words and American meanings in my mind.

      Incidentally, the reason I chose Japanese was that I read a few months ago a paper on just this subject. The example there was a word, which I can't remember, naturally, the means, roughly, a sort of joyous deference to an other's will, somewhat like how very small children feel around there mothers. Except that this is how grown men feel around their bosses. Intellectually I could understand the idea (or rather, I could understand the underlying logic in a very abstract way), but the point of the paper was that most Westerners simply can't get a feel for the what is being expressed with that word. In English, the feeling would translate to 'toadying' or something similar, which is mostly correct, but with the opposite connotation. Western culture simply doesn't include this idea, even though the language can probably express it. Thus the term is expressible, but effectively meaningless.

    2. Re:kami by orabidoo · · Score: 2
      I think that you've very well summed up what's wrong with the popular idea that "your language determines your thoughts": that the real determination comes from your cultural exposure, not directly from the language and its words. The key to understanding 'kami' (whatever that may be) is to participate in Japanese culture, not specifically to speak Japanese. The main thing that gets linguists upset is to see nonsense claims like "this or that language will let you think more clearly and logically". An extreme of this kind of claim is Korzybski's General Semantics; or, in the SF field, S.R Delany's Babel 17.

      The one "nit to pick" with Tim Sweeney's article about programming languages is that his parallel to "linguistics" refers exactly to this kind of claim, citing it as a "well known fact in linguistics", while among the cognitive linguistic community, it is considered more like a "well known misconception".

  213. One nit to pick by vlax · · Score: 5

    The first few paragraphs about human language - basically the idea that your language restricts what and how you can think - is about 95% false.

    It's called the Sapir-Whorf hypothesis (although there's some debate as to whether either Sapir of Whorf had anything to do about it) and is not widely held to be true among linguists. It occaisionally comes up in the literature, mostly to trash it.

    Therefore, it is not a recurring theme in any literature about linguistics written by actual linguists of the last 30 years.

    As for the contention that programming languages limit what kinds of programs we write, I am sceptical, but not so dismissive. Certainly I hate writting code to do lots of complicated string handling in C, prefering perl or java for the job. However, by building my functions carefully I can do it in C, and in fact have. I would balk at doing the same kinds of programs in assembly language.

    That, however, seems mostly to be a question of finding the right tool for the job. If the next generation of languages allows me to abstract these differences and use one language with different toolkits (in principle I suppose this is possible with today's languages), I'm all for it.

    1. Re:One nit to pick by elegant7x · · Score: 1

      This is a good point. Another one is Free Software or Open Source. Namely, there is no word like french libre to connotate free speech, not free beer.

      But, it proves the exact opposite thing. I mean, you could hardly say that the idea of Free Software is imposible for an english speaker to comprehend could you?

      The consept, like any consept, can be described by multiple words, or by makeing a new one such as the phrase "Open Source" or OSS.

      Amber Yuan (--ell7)

      --

      "and dear god does this website suck now." -- CmdrTaco
    2. Re:One nit to pick by paul.dunne · · Score: 2

      Another nit to pick: the issue of whether or not one's native language restricts what one can think is a philosophical question, so whether linguists agree or disagree with the "Sapir-Whorf hypothesis" is neither here nor there. After all, one can respect Einstein's contributions to physics without feeling bound thereby to give any great credence to his philosophical outlook. The reverse also applies.

    3. Re:One nit to pick by WNight · · Score: 2

      My point was that there is no word, in any language, that will adequately do it. English borrows more words, and is more dynamic than most, so is worst when it comes to finding a specific word with only one meaning, but all languages were created this way (by the speakers, over time) and all have context sensitive meaning.

      You can either define a word to mean 'free as in speech', xyzzy, for instance, or you can use a phrase of arbitrary precision.

      'Libre' might be closer to the ideal than 'free', but both are inaccurate, differing only in degree.

      If you use 'libre' to mean 'free as in speech', then MS could call IE 'libre' because you're able to 'speak' with it, without them holding the rights, etc. Any word or short phrase you find will be too generic for nit pickers.

      Unfortunately, there are less short words than long ones, so the short ones get more use, and pick up more meanings. It might seem short words should be more precise, but they are in fact the least so.

    4. Re:One nit to pick by square · · Score: 1

      95% false? that leaves 5% of a language untranslatable to another!

      I would not go so far as saying a language "restricts" particular thoughts, but I'm sure that some concepts can be more concisely expressed in some languages more than others. For example, I do not know if the phrase "Moral hazard" has any simple translation in chinese or thai, without going through a lengthy explanation AND WITH an example. Try the same with "Deja vu": English speakers eventually borrow the phrase.

      I do agree that the issues are mostly a question of finding the right tool for the job.

      HFF

    5. Re:One nit to pick by WNight · · Score: 2
      If it's mine, you can call me Meriam Webster.

      Have you, or has anyone else, devised such a generic test? If not, then you are rather hoist on your own petard, are you not?


      I'd say not.

      Perfect proof requires omniscience. I can't prove something true in all cases, because I can't identify all cases, let alone test them.

      But, to be a valid theory, you must be able to disprove it, as in the theory must state something testable, such that if the test returns certain results, the theory is proven to be incorrect.

      The proposal was "concepts that don't have words in a language can't be thought of by speakers of that language." (Assuming they speak only that language.)

      This is a valid theory because all you have to do to disprove it is find a concept for which there is not a word in some language, yet describe it well enough using other words that a speaker of that language understands you.

      You then took this, and threw it back at me reversed. You want me to prove that there are no cases in which the theory could ever be right, not simply to show that there are some cases where it's wrong.

      As I said, proof of such a thing is a logical impossibility. If you were a philosopher, or had studied it, you would realize this.

      Thus, what you're proposing isn't a valid theory because it can't be disproved.


      Now, if it was a suggestion, initially, that it was harder for people to conceptualize ideas for which they don't have convenient words, then I would agree. There wouldn't be a blanket statement of what is not possible. It wouldn't need to be a logically rigorous as a formal theory.

      This is like me saying "what goes up, tends to come down," instead of "what goes up ALWAYS comes down." For the first to be true, I just have to show that it's often true, and a useful guide. For the second to be true, there would have to be no cases of anything going up that didn't come down. The first rocket flight that left something on the moon would have been counter-proof.
    6. Re:One nit to pick by AndyGuy · · Score: 1

      But note that in the book newsspeak was constantly being updated as people adapted to it and began expressing there ideas in it. If the news papers can say the enemy is double-ungood then I can say the leader is double-ungood.

    7. Re:One nit to pick by elegant7x · · Score: 1

      This whole discussion (while fun) is off-topic to the issue of computer languages. I

      Yeh, but its a hell of a lot more intresting :)


      Amber Yuan (--ell7)

      --

      "and dear god does this website suck now." -- CmdrTaco
    8. Re:One nit to pick by elegant7x · · Score: 1

      There is a finite ammount of what I am capable of expressing with English This is completly untrue. Well, Other then by the amount of time you can spend speaking in your lifetime, you are not limited. It may take longer to exspress somthing in english, then in say, chinese, but you can still do it.

      Amber Yuan (--ell7)

      --

      "and dear god does this website suck now." -- CmdrTaco
    9. Re:One nit to pick by delmoi · · Score: 1

      Another nit to pick: the issue of whether or not one's native language restricts what one can think is a philosophical question,

      No it isn't. This is exactly the field linguists study. Sure, you could say somthing like 'creationism/Evolution' is a philosophical question, and on one level it is. But there is no reason why a biologiest can't give you the correct sciantific answer.

      [ c h a d o k e r e ]

      --

      ReadThe ReflectionEngine, a cyberpunk style n
    10. Re:One nit to pick by Chalst · · Score: 2

      The idea attacked by (most) linguists is that some natural languages
      are in principal incapable of expressing ideas that are commonplace in
      other languages. The weaker idea that it is easier to say certain
      things in one language than in other languages is not at all
      controversial, and it is this second idea that Tim makes use of in
      his article.

    11. Re:One nit to pick by hypergeek · · Score: 1
      [Snip!]
      [T]he idea that your language restricts what and how you can think - is about 95% false.

      I dunno... Orwell's newspeak/doublethink combination in 1984 made a helluva lot of sense to me.

      And even if flaws in the language don't absolutely prohibit you from thinking of a concept, they can make it prohibitively difficult, compared to someone whose language already contains said idea, who may take that concept for granted.

      [Snippity-snip!]

      [The choice of language], however, seems mostly to be a question of finding the right tool for the job.

      *Cough, cough*

      The choice of language can be critical, as improvisation can be impossible if the tool you choose is horribly inadequate.

      Now, if you'll excuse me, I'll go chop down the mightiest tree in the forest... with a herring!

      -Hypr Geeque

      --
      Stay up hacking each weekend. Sleep is for the week.
    12. Re:One nit to pick by orabidoo · · Score: 2

      hey, I've heard the "50 words for snow" crap coming out of an actual linguistics teacher (introduction to semantics). blah.

    13. Re:One nit to pick by Anonymous Coward · · Score: 0

      No, that's abuse. Argument is down the hall.

      Stupid git!

    14. Re:One nit to pick by vectro · · Score: 3

      This is a good point. Another one is Free Software or Open Source. Namely, there is no word like french libre to connotate free speech, not free beer.

    15. Re:One nit to pick by James+Lanfear · · Score: 1

      No, it's a cognitive science question, and a fairly important one at that. Cognitive linguistics and psychology posed the question and provided the answer. The days of philosophy's monopoly over the mind are long past, and philosophy is better because of it.

    16. Re:One nit to pick by Anonymous Coward · · Score: 0

      The Sapir-Whorf hypothesis has been shown, at least in some cases, to be true. More info here.

    17. Re:One nit to pick by jackmott · · Score: 1

      I'm not sure that what linguists think in general has any influence on what the truth actually is =)

      as one currently wrapped warmly in the womb of academia, I can gaurantee that in many disciplines, the idea that language directs what and how we think to some degree is VERY much alive =o and of course open to debate.

      --
      -I go to Rice, so figure out my email address
    18. Re:One nit to pick by frohike · · Score: 2

      I've seen this debate going around a lot, and I know that my opinion probably doesn't matter for much by itself, but I'll interject it anyway. I'm not a linguistic researcher, just someone who has done many years of people watching on this subject. I tend to find that while language doesn't enforce thought patterns, it does tend to heavily influence them. A lot of people I know do think strictly inside the paradigm of English, but I know many people who can think about things not expressable in English without a LOT of wordage (most programmers). And so as Tim Sweeney said, it's a practical consideration rather than a theoretical one.

      Just food for thought...

    19. Re:One nit to pick by Anonymous Coward · · Score: 0

      Cut down a tree with a herring? It can't be done!

    20. Re:One nit to pick by mmakunas · · Score: 1

      I said:
      There is a finite ammount of what I am capable of expressing with English

      Then you said:
      This is completly untrue. Well, Other then by the amount of time you can spend speaking in your lifetime, you are not limited. It may take longer to exspress somthing in english, then in say, chinese, but you can still do it.

      What I meant was that I personally have a limit to what I can express. The set of what I can express is a subset of what is expressable in English since English is my only language and I do not have perfect comand of it (nor does anyone, probably).


    21. Re:One nit to pick by mmakunas · · Score: 1

      As for the contention that programming languages limit what kinds of programs we write, I am sceptical, but not so dismissive. Certainly I hate writting code to do lots of complicated string handling in C, prefering perl or java for the job. However, by building my functions carefully I can do it in C, and in fact have. I would balk at doing the same kinds of programs in assembly language

      But just like it is a lot easier to do string handling in Java than it is in assembly, certain ideas are easier to express in certain languages. So won't that effect the way people think? Maybe an API analogy would be better. Basically when I talk to you I want your brain to think something. I accomplish that via speaking English. There is a finite ammount of what I am capable of expressing with English just like there is a finite amount of what you can do with an API. Some things may be possible but too difficult to be worth doing so you compromise.


      So that I can actually make more sense on this topic, can you recomend some good books to read on the subject of linguistics?

    22. Re:One nit to pick by paul.dunne · · Score: 2

      The biologist can indeed give a correct scientific answer, if you accept the philosophical underpinnings of the scientist's approach to the problem. Indeed, "correct scientific answer" begs the question, since "correct scientific answer" is defined in terms that are dependent on the philosophy underlying the scientific world view. However, I don't see how this translates to the problem addressed. How exactly have linguists addressed and solved this problem? What experiments have been performed that have disproved the thesis that language does set a limit to what one thinks, for instance? And has any experiment been performed which proves the opposite? A lot of "linguistic science" is closely related to "social science", that is, it is pseudo-science. At any rate, whether the language one speaks limits what one can think is not within the field that linguistics studies: the scientific study of language and its structure relates not at all to the philosophical question of whether or no what particular language one speaks forms and limits one's thoughts.

  214. Re:Orwell by ralphclark · · Score: 2

    Perhaps you think that if we don't use numbers, it's not science.

    I can't think offhand of any cases where this wouldn't be at least partly true. Science is about hypothesis, experiment and measurement.

    perhaps you think that there's nothing behind the eyes doing the processing that allows you to describe color

    No! You miss my point. An assertion about the role of language in the reporting of direct visual experiences says nothing about its role in abstract reasoning. Which is where the real controversy lies. Does our language guide and inform our mental habits - I think it does.

    If science is infiltrating the linguistics field in some institutions now, I'm glad to hear it.

    Consciousness is not what it thinks it is
    Thought exists only as an abstraction

  215. Re:I've been waiting all day for this to get poste by Anonymous Coward · · Score: 0

    Virtual classes... Isn't that just a fancy way of implementing the Factory pattern, or possibly the Strategy pattern?

  216. Virtual classes? You can do it already in C++/Java by Anonymous Coward · · Score: 0

    It's called the State Pattern. Read a copy of Design Patterns and take a gander. His virtual class crap is just fluff.

  217. Re:I've been waiting all day for this to get poste by Anonymous Coward · · Score: 1

    Most of the things he talked about seemed to be from the object-oriented point of view. I don't know too much about Perl OO stuff, but I hear it's like Python's. Python has many of the advantages that he talks about, but it also has some disadvantages for what he's talking about. You would never write a game engine in Perl or Python. If you did, you would write lots of it in C, which would ruin most of the advantages he's talking about anyway. With dynamic lookup of methods and what-not, you get the flexibility he's talking about, but you pay for it in speed big time. Java and C++ aren't less flexible than Python and Perl because they suck; they're (really, truly) compiled languages, which makes them faster than dynamically typed languages. I guess a lot of his hopes will rely on fun stuff with compiler technology, won't it?

  218. Re:Other reasons to idolize Tim Sweeny by Pascal+Q.+Porcupine · · Score: 2
    Oh, man, that is so *cool*... too bad the 3D block graphics kinda ruin the better 3D graphics to be represented as colored ASCII art. :) I'd much rather see something that just makes proper use of 2D graphics... xterm et al are likely out of the question, since DOS ASCII is such a vastly different encoding from anything used in most modern terminals, but graphic tile rendering could easily enhance the quality of ZZT, much like xnethack/gtknethack.

    Oh, zzt.org is pretty cool too. PlanetQuake meets ZZT. I like. :) (How long do you think it'll take for some PlanetQuake junkie to "discover" ZZT like when Scorched Earth suddenly became the ultra-trendy Quake scene kr4d-31337 g4m3 0f th3 m0nth? :)
    ---
    "'Is not a quine' is not a quine" is a quine.

    --
    "'Is not a quine' is not a quine" is a quine.
    Quine "quine?
  219. C = A + B. No problem in Blitz++ by Anonymous Coward · · Score: 0

    Take a look at Blitz++. It does everything his article claims C++ can't.

  220. Influence by Anonymous Coward · · Score: 0

    I would say it's the kids who buy the games that have more influence than people realize.

  221. He comes across as not knowing C++ very well by BeanThere · · Score: 1

    I'm not saying he doesnt. In fact, I'm sure he knows C++ pretty well. But maybe he just doesn't explain himself very well, because he comes across as not understanding how to do various things in C++. He dismisses C++ out of hand as being 'unable to do' various things that are in fact incredibly easy to do in C++, and do them in a very general way (as he seems to describe) (e.g. C=A+B on arrays, and in fact on anything you like if you combine this with template classes and maybe a mixin if you're inclined to do things like that.) Maybe I just don't get what sort of amazing generality he is referring to.

    He didnt explain very well at all what is so "flawed" about C++'s parametric class (templates) implementation. Instead he came across as sounding like he maybe once read through a chapter in a book on template classes and then never bothered to try them out.

    Now, I have a lot of respect for Tim Sweeney, and I know he is extremely competent and I know he knows what he is talking about. He just doesn't explain himself too well. Instead of explaining technically his problems with C++ he comes across as someone who just has a bias against it.

    1. Re:He comes across as not knowing C++ very well by Anonymous Coward · · Score: 0

      C++ templates are at their core kinda like macros. At compile time C++ templates get expaneded into a bunch of mangled code. What you really don't want to do with parametric polymorphism is rewrite code - but that is exactly what templates do. So yes it is nice to have the compiler generate all coping and pasting for you, but it is faking it because at runtime you can't destinguish between having written all the copies yourself or having used a template. What it also means is that code using template code needs to be recompiled when a real parametric polymorphism implementation wouldn't. This limits templates usability. This is what Tim means when he says it is a link-time feature

  222. Reinventing the wheel by Anonymous Coward · · Score: 0
    Right in the beginning he excludes functional languages. Bad mistake. They deliver just what he asks for which is really a delta calculus. After all object orientation is nothing but algebra. Though not really necessary there are even OO functional languages like OCAML. Someone already wrote a doom clone in it.

    Due to the high level of abstraction, compiler optimizations are a field of research. However, that's a price you pay for every step up the ladder.

    Reminds me of "aspect oriented programming", look in functional languages, there it is. This phenomenon results from the desire to stick to C\C++ while having all the fancy stuff. Let go, welcome to the brave new world. :) Any language developed in order to what he asks for needs a solid theoretic base in mathematics and will end up as a functional language.

    You can say functional languages are way out there, but how long did it take the masses to adopt full scale OO development?

    And to break some bubbles, game developers are not on the front of software technology, that's still CS, not a matter how fast you can draw polygons.

  223. Re:Where to find this Unrealscript language? by Anonymous Coward · · Score: 0

    Just look into the Unreal/UnreaTournament game. Open the UnrealEd. There you can look at the classtree. UnrealScript is the language of the Unreal Engine. You can not use it for anything else then enhanching the Unreal game. (But this is very easy)

  224. defintion of philosophy by elegant7x · · Score: 1

    See how much the definition of one word changes from person to person even in the same language? two the two of you the word means different thing. Words really have only (and can have only) generalized meanings between any two people. Those generalized meanings can be transferred to other languages. You may not get all the subtleties, but there is no guarantee that the guy next to you carries the same subtleties anyway.

    Have you, or has anyone else, devised such a generic test? If not, then you are rather hoist on your own petard, are you not?

    Well, I haven't but I'm sure the linguists wouldn't be saying that it wasn't true if they didn't have anything to back it up.


    Amber Yuan (--ell7)

    --

    "and dear god does this website suck now." -- CmdrTaco
  225. Please back up your bold statements .. by BeanThere · · Score: 1

    "Few people use C++ for object oriented programming"

    Perhaps I'm the clueless one here, but this flies in the face of everything I know about the current state of the software development industry. Perhaps I might be more inclined to listen to your point if you could back this up by providing me with a reference to the source of your information; otherwise I might be inclined to irrationally believe that you boldly made that up simply because it is your own opinion.

    The rest of your post makes a fair point, use the best language for the job.

  226. No surprise by Zach+Baker · · Score: 2
    I was casting around for a scripting language to use in a game I was working on about a year ago. I took a look at Python, but it didn't seem embeddable enough at the time (I suppose the situation has improved). The number one candidate was actually JavaScript... seriously! The only real problem was that it was a little too slow, but not horribly so. Otherwise it had some great features:
    • First and most important of all, it has a good mechanism for exposing C functions to scripts. This is crucial.
    • You can strip out just about EVERYTHING, even text functions if you want. Great if you have to target a PSX or N64.
    • Similarly, you can save memory since you're able to compile script text, then throw the text away and keep the bytecodes.
    • A flexible syntax that could be used like C or as a line-based language, in scripts, on a command line, or in a config file.
    • Garbage collection and a fixed heap size.
    • Debugging support, which is often forgotten but important.
    However, the script <--> C++ interface, though simple and mostly effective, was still fairly primitive and certainly not on the level of UnrealScript (which BTW just totally rocks the party, I hope we can see more of it soon). I would really like to see more scripting languages which bind as tightly with a C++ framework like UnrealScript does, for instance parsing C++ header files instead of depending on an interface to be defined elsewhere. I think just about every program should take advantage of a glue language, and the better the interface, the better the gluing. =^)

    I also checked out ICI (cool), saw whether Perl could be cut down to size (not easily, but it would be worthwhile), TinyScheme (sure is!), and Small (very cool!). Now that there's more attention to large-scale, reusable game scripting (take a look at a new project, GODL) I think we should expect that good games will have a good scripting language behind them.

  227. It's what you're influencing... by Shadowlion · · Score: 1

    But there's a difference in what you influence. Influencing technology changes (which is what Sweeney is talking about here) is a completely different matter than influencing human psychology.

  228. Eiffel Resources and Links by Anonymous Coward · · Score: 0
    Eiffel is one of the top real Object Oriented languages availble today. Bertrand Meyers's breathtaking and monumental book Object Oriented Software Construction lays out a systematic rational for what the requirements are for an object oriented language. Eiffel is a language implemented to meet those requirements. Support for concepts such as ``Design by Contract'' insure that software implemented in Eiffel is correct. Garbage collection, multiple inheritance, preconditions, postconditions, class invariants are other features that contribute to robust software development under Eiffel.

    GNU's implementation is called SmallEiffel and runs on Linux and many other operating systems. Bertrand Meyer's ISE Eiffel which offers the ease of Delphi development is available for Windows and Linux. It is a gem. A great resource for those interested in Eiffel is the online Eiffel Liberty Journal.

  229. Re:tim sweeney is pretty ignorant. You are right by Anonymous Coward · · Score: 0

    The man has a point. Everything he discussed can be done with an appropriate application of design patterns.

  230. Re:I've been waiting all day for this to get poste by Anonymous Coward · · Score: 0

    Maybe look at www.alice.org. Kinda a cool.

  231. Not bad by chadmulligan · · Score: 3
    Quite a good article in fact. I've never programmed in UnrealScript and little in Java, but I agree with the author's conclusions about C++. I've not had the time to analyze his "virtual class" concept thoroughly, but I'd like to point out that very similar mechanisms have already existed two decades ago in SmallTalk - and are in daily use in Objective C, which is in several respects just SmallTalk with C syntax.

    When I started out in programming 31 years ago [mumbled the old geezer ;-)] I bought Jean Sammet's classic book "Programmi ng Languages:History and Fundamentals", a two-inch thick thing with not overly detailed descriptions of nearly a hundred programming languages. I've actually managed to work in over a dozen of those, as well as several modern ones, and about 20 assembly "languages" - it's been a while since I counted those separately, as nowadays one thinks of a single Assembly language with trivial variations for each CPU or MPU. Nearly all of those languages are extinct, I suppose. Remember, for instance, the Algol 68 disaster? An evolutionary dead-end which advanced compiler theory a lot, but has no descendants today... I could go on for a couple of pages, but will spare you.

    That said, I think the author's conclusions are valid for his chosen field - games for desktop computers. In embedded systems, C++ or even C is a perfectly valid way to go, since one usually has either the whole source avaliable and compiling/linking together, or one has reasonably static library components. And in the smaller MPU/MCU universe, one is back in the olden days of 8K code space, 128 bytes of RAM, and bit-twiddling to save space or time...

    Regarding the non-games desktop arena, I definitely think that some evolution of NeXTstep (aka Apple's Cocoa) will point the way for the next 10 years. I'm starting to learn that now, the learning curve is a little steep, but it's very powerful stuff.

    1. Re:Not bad by Anonymous Coward · · Score: 0
      Well, yes smalltalk has had this (as far as I know,
      as I don't know a thing about smalltalk other than
      what I have heard). I was under the impression that smalltalk was a basis
      for extending C to "C with classes" and then
      subsequently to C++.

      maybe I'm crazy
      maybe I'm diminished.

      i'd log in, but i can't spell my user name
      (Ollingouhahou or something... :)

  232. Re:Concision isn't the issue. by Rogain · · Score: 1

    Is that a problem in the language itself or the speakers level of knowledge? Can a stone-age tribalist think about things his language might not have words/concepts for or experience with? He has no term for a rocket, spacesuit, oxygen, vacume, etc, but he could imagine a realistic trip to the moon. His level of technical detail might be sketchy, but so was such descriptions by early science fiction writers.

    --
    The current Slashdot moderation system is made by gay communists!
  233. Re: on perl by Tom7 · · Score: 1


    > ... it's no worse than C or C++, and has an
    > object system that I rather like.

    In terms of scalability for large projects this is true. I was just pointing out what seems to me to be the biggest problem with perl (historically, and to a lesser degree, today).

    To me (and I've written big programs under both paradigms), "coding standards" which are enforced by the compiler (ie type system) are much, much more valuable than coding standards which are mandated by agreement, or even by assertions in code. (But don't fall into the trap of thinking that powerful type systems simply restrict the programmer ... quite the opposite).

    - Tom 7

  234. thought != language, natural or formal by MattMann · · Score: 5
    I knew that article was off to a bad start when he didn't refer to "natural" and "formal" languages by their official names. But this early post got it mostly right, but lacked examples so too many people got distracted by that obscure philosophical discussion. Here are some examples that I think make the points vlax was attempting.

    Sapir-Whorf is wrong. It is very easy to see that language does not determine what or how you think:

    • When you can't remember a word, you know exactly what you want to say, you just can't get to the word
    • People who suffer from aphasic brain damage often lose entire vocabularies (all the colors, for example) but they don't lose the ability to see and think about the concepts
    • Deaf people don't learn their native" language, and yet, they can think perfectly clearly, and
    • deaf Frenchmen are just as clearly "French" as other Frenchmen (tant pis? :)

    Russians have no word for fun? I doubt it! But, if they don't, it means they have no sense of fun. But in that case it's the culture influencing the language, not vice versa. English had no word for chic, but we knew/learned the concept so we borrowed a word from French. Our culture considers French culture to be chic and so do the French. But that's why they had a word for it: that's the culture talking. Eskimos have 32 words for snow (myth, I know) because they need them to succintly describe the snow they encounter. English could add those too, if it needed them, just like cross country skiers quickly learn the names of the different waxes they need to use. It's pretty overwhelming: thinking takes place underneath the veneer of language.

    programming languages need not limit what kinds of programs we write

    This "string handling in C" counterexample is a small one. Full object-oriented programming is easily accessible in C. When you typedef a struct (let's use "Shape" as the example), include an array "data member" (hint: call it vtable) which is pointers to functions. Use NewShape() instead of malloc to create one, and have NewShape initialize the vtable with pointers to functions like PrintShape. Create a "circle" struct, and have NewCircle first call NewShape, then depending on how you initialize its vtable, you can have inheritance, virtuals, polymorphism, etc. There are small syntactic differences: instead of circle.PrintObj(), use PrintObj(circle), though you could use C's awkward function pointer syntax. Passing the obj as an arg is what C++ does underneath anyway. if you think that this is not OOP, you need to learn to think abstractly. There are some differences of course: this way lacks destructors (like Java) but it can solve the multiple inheritance "problem" by being explicit about the semantics.

    the weakness of the analysis in the article can be seen in the table. Look across the columns... object-object-object? That axis has little to distinguish it. Most of what he says is not outright wrong, can even be insightful, but still so much is severely lacking. For example, I understand his "procedural" programming paradigm and why he is tempted to lump fortran and C together, and yet fortran can't conveniently be object oriented in the way that I describe for C.

    1. Re:thought != language, natural or formal by SimonK · · Score: 4

      Full object-oriented programming is easily accessible in C

      I take issue with the word 'easily'. You might think this is nit-picking, this seems to have missed the point of the article. Noone disputes that you *can* implement a framework for OO programming in C, just as you *can* implement a framework for 'true' procedural programming in old Fortran (newer versions have re-entract procedures, pointers etc, and are therefore capable of everything C is). Similarly you can write code in Java or C++ to produce the effects of parametric polymorphism or virtual classes. Would you actually want to use it ? Didn't think so.

      Language choice doesn't constrain what you can do directly. All languages are Turing complete after all. It just makes some things easier and some things harder. Java vs C++ is an excellent example. Its possible in Java in simulate the effects of multiple inheritance, but rarely done because it requires so much typing.

      Adding features to language of the kind suggested in the article increases what is loosely called their 'expressive power' and thus makes programming a higher level and in some ways simpler activity.

      Sapir-Worff is indeed wrong, *but* there can be no dispute that choice of natural language makes it easier or harder to communicate certain things. The same is true of formal languages, no ?

    2. Re:thought != language, natural or formal by Hard_Code · · Score: 4

      Exactly...people are beating up Tim for no reason.
      He /explicitly/ stated he was making a distinction between what is /possible/ and what is /practical/. While OO might be /possible/ in C, it is only really /practical/ in C++. Same with assembly.

      "Sapir-Worff is indeed wrong, *but* there can be no dispute that choice of natural language makes it easier or harder to communicate certain things. The same is true of formal languages, no?"

      Right...the previous poster and others, keep saying that language "doesn't determine what or how you think". They pick adults and then run some tests on them, and find that, lo and behold, they /can/ actually think about concepts without the words. Another poster says that it is merely /culture/ influencing /language/. If one knew anything about child development or anthropology, they'd know that culture and language are intimately intertwined. Culture affects language, which in turn affects culture. The amalgam of those can influence how you think, or at least with what /frame of reference/ you view the world.

      Jazilla.org - the Java Mozilla

      --

      It's 10 PM. Do you know if you're un-American?
    3. Re:thought != language, natural or formal by Nevyn · · Score: 1
      > Exactly...people are beating up Tim for no reason.
      > He /explicitly/ stated he was making a distinction
      > between what is /possible/ and what is /practical/.
      > While OO might be /possible/ in C, it is only really
      > /practical/ in C++. Same with assembly.
      This just isn't true though, sure multiple inheritence is a lot harder in C but single inheritence is just as easy and is used in gtk and the linux kernel. Some people here, and tim, are missing the fact that in a massively parrallel development environment (like most OSS teams). Having code like...
      char a[30], b[20], c[10];

      a = b + c;

      Do something isn't such a hot idea, as it means no one else will have any idea what the code does.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    4. Re:thought != language, natural or formal by Hard_Code · · Score: 2

      "Some people here, and tim, are missing the
      fact that in a massively parrallel development environment (like most OSS teams). Having code
      like...
      char a[30], b[20], c[10];

      a = b + c;

      Do something isn't such a hot idea, as it means no one else will have any idea what the code does."

      On the contrary, I think specifically in cases of parallel programming, a concise statement like that is desireable. The compiler will figure out just how it can optimize that statement for multiple CPUs. If the programmer is forced to do manual optimization, the whole operation will end up either done entirely serially (awfull), or the code will be unnecessarily cluttered with manual code for specifying parrallelism. That is something a layer of abstraction can best handle.

      Jazilla.org - the Java Mozilla

      --

      It's 10 PM. Do you know if you're un-American?
  235. Ignorance is bliss? by LarsWestergren · · Score: 1
    Interesting article, and a very interesting Slashdot discussion. But something gets to me -

    Ok, when I got to my first OO class, we read an article that basically said "If you know how to do procedural programming, you are ruined. You will now be stuck in old ways of thinking and be unable to grasp OO concepts that three year olds will intuitivly understand."

    And now this - Java is soon dead, all hail the next generation languages. Damn, I'm 25 and still studying, but already I'm senile and obsolete.

    But come to think if it, maybe there is a chance for me. I'm a really crappy programmer no matter what the language (VB, Java, C++, Prolog). I mean, after "Hello World" I'm pretty much lost. So maybe there is hope. ;-)



    ************************************************ ***

    --

    Being bitter is drinking poison and hoping someone else will die

  236. Re:Lest they forget Columbine as well.... by Rombuu · · Score: 1

    Look up in the sky... its a bird... its a plane, no its Take-a-quote-out-of-context guy!


    --

    DrLunch.com The site that tells you what's for lunch!
  237. He's got some interesting ideas by aheitner · · Score: 4

    But I don't necessarily agree with him.

    He never once considers (as far as I could tell in my admittedly hasty reading) speed issues for more advanced languages. There are plenty of fancy languages out there, but C/C++ is still the choice for power without sacraficing speed.

    That said, I think more powerful constructs are very important, and I've seen several of them implemented in C++, with very positive effects.

    Persistance can make managing of not only game objects (i.e. saved games become trivial) but resources very simple, since a resource file (standard formats like TGA or DXF, or your own internal formats) are just simple methods of persisting data. If your data all lives on disk in its "dead" state, it's very easy to organize and bring up what you want out of a database. It's possible to build very intelligent tools, too -- for example, developing the art and changing the game constants on top of a database that detects when you change something and loads it into the running game. Again, I've seen this system implemented in C++.

    Along those lines, tools will become increasingly important as games get more complex. If you're going to run a massively-multiplayer RPG on the internet (à la Ultima Online, Everquest, etc) you need to have a crew of people there continously creating new art, models, and code, and they need to have an efficient way of doing it. Metadata about the objects in your game can let older chunks of code learn about and manipulate these objects as they are added. You can also do a lot of this in C++; the framework may be painful but once implemented there's no reason for it to be hard to use.

    ....

    This is all well and good, but I still see a fundamental disconnect between language designers and practical programmers. Language designers are seeking elegant representations for cases that are complex in current practical languages (i.e. the mythical everpresent C/C++), but they aren't usually building "real" programs (the kind of programs you use every day) in them. There are other languages that are very practical, such as Python, or practical in theory, such as Java, but they're not particularly appropriate for games -- they're ungodly slow.

    Perhaps it is time for a new language that balances hopefully a cleaner organization than C++ (perhaps dropping or at least heavily restructuring some of the more hopeless features like crazy dynamic casts and this chimaerical exception handling) but maintains the speed inherent in the language. It seems to me that game programmers are largely using a fairly safe subset of C++ anyhow; the representation changes in the language should make it easier to do the things we can now do with difficulty in C++, not make the impossible difficult. After all, that seems to be what Stroustrup was doing when he first wrote the first versions of C++ back in the early 80s.

    ....

    You don't have to agree (except that Java sucks) and I'm not dissing PERL (but it will still never be a game language). Just my $0.02

    1. Re:He's got some interesting ideas by Anonymous Coward · · Score: 0

      He never once considers (as far as I could tell in my admittedly hasty reading) speed issues for more advanced languages. There are plenty of fancy languages out there, but C/C++ is still the choice for power without sacraficing speed.

      there is already language that are near to the speed of c/c++ but with more power (see OCaml for exemple, it's even faster than c for some application, and in general no more than 8% slower) better typing system enable better optimisation by compiler
    2. Re:He's got some interesting ideas by elegant7x · · Score: 1

      Well, none if you use MFC, this is built in...

      Heh, of course you never use pointers in your C++, right?

      Amber Yuan (--ell7)

      --

      "and dear god does this website suck now." -- CmdrTaco
    3. Re:He's got some interesting ideas by Hard_Code · · Score: 2

      "(except that Java sucks)"

      Actually Java already manifests some of the features Tim would like to see. Java already has introspection, which is really the basis for the other features, and "parametric polymorphism", or genericity, was proposed quite a while ago via the Community Process (I think), and there is already a third-party implementation ("Pizza" compiler). I'm not sure what the state of the proposal was, but I think Sun is seriously considering it.

      Yes Java runs in a VM and because of that it is slow. But remember - Java is just a language spec. I think Java is a wonderful language. There is no reason somebody can't make a native compiler for Java and have immediately portable Java code (the Java language spec is platform-agnostic). If Transmeta has a Java version of their code-morphing software, I think that's great.

      Jazilla.org - the Java Mozilla

      --

      It's 10 PM. Do you know if you're un-American?
    4. Re:He's got some interesting ideas by Anonymous Coward · · Score: 0

      On the subject of using C++ to create more powerful tools. It of course has been done, but have you seen how much incredibly easier it is to do in other languages?? Say you want to store a map for use later in Java, you add two words to your code:

      implements Serializable

      BOOM, you can now store and send this object anywhere (over the net also of course) with absolutley no effort! How many thousands of lines of code would you have to write in C++ just to get this functionality? Not even mentioning cross-platform compatibility!

      "the framework may be painful but once implemented there's no reason for it to be hard to use."
      Not completely true! C++ is an unstable language, no matter how smooth your design is. Say some A&S major passes in a pointer to your framework and deletes it when not supposed to? Errors like this don't happen in higher level languages.

      Here is a link to info about Eiffel. A high level language which has the performance of C.
      http://www.elj.com/eiffel/bm/


      "ou don't have to agree (except that Java sucks) and I'm not dissing PERL (but it will still never be a game language)"
      Those two points I most definitely agree with :)

  238. of languages by Anonymous Coward · · Score: 0
    Is it just me or is he learning about functional programming? I had profs who claimed it would be the only thing that mattered from now in 30 years, because of the mathematical basis I'm inclined to find some truth in that. Compilers can do amazing things to functional code, combine that with object modeling and you have a mean paradigm for pumping out large systems.


    I think he misses some points though. C++ wasn't supposed to provide binary compatibility, ANDF was the project of that era that was and it was amiserable failure. C++ biggest failure was that it didn't provide source compatibility between compilers and it still doesn't in some cases. Being tied to a compiler is far worse than being tied to one form of object code. I think C and C++ will be around for a very long time though, in proper hands both are very powerful tools. The trick is knowing how much of it to actually use.


    The key, the big thing that's going on, the beautiful thing about now is variety. There isn't and never will be a silver bullet language. It's foolish to think so. A few years back, before java and the web made perl hip, it was C or C++, period. Now you have more options, to better pick the tool for your task. If you're aimed at linux, you've got tremendous options for picking a language to use, you can realistically write scheme or lisp and expect it to be runnable on a wide range of systems. That's the whole thing that was missed for so long, pick the tool for the job.


    in the 1980's it was a big rift between Pascal, BASIC and C. Pascal and it's Wirthian siblings (Modula-2, Modula-3 (sort of), Oberon, and Ada) are beautiful languages that can excel at certain things, particularly large scale projects, but other factors have made them less popular. By the 1990s it was a joke to put Pascal on your resume because it almost had a negative connotation. Selection is coming back and that's the big thing.

  239. eiffel is proprietary, C and C++ are open. simple. by Anonymous Coward · · Score: 0

    thats the reason eiffel is not popular, its quite simple.

  240. "Future Languages" -- YES, YES! by Tom7 · · Score: 2

    I love this! I think the linux community should embrace programming language reform, for we are smarter than Visual C++, and we are smarter than the marketing giants who have been pushing it (and Java, etc.) down our throats.

    This article is obviously the product of a good hacker who's just discovered the miracles of advanced programming languages. I think he gets carried away on the ideas of document/view (sounds like MFC to me, ugh), but his heart is in the right direction!

    By the way, Standard ML has been doing "parametric polymorphism" (or parametric types) right for almost 30 years. Not to mention higher order functions and safe static typing. ML 2000 will add subtypig and objects to this. (Just a personal favorite, but ML might be a good starting point for someone interested in advanced languages).

    Other comments:

    In my opinion, bounds should NOT be part of the type system, but should be inferred by the compiler as optimizations (to remove dynamic checks where possible). It is very difficult for the programmer to do these kinds of analyses. (Imagine a notzero type of integer, and division is function type (int * notzero) -> int!) On the other hand, experience has shown that array bounds checks are one of the biggest cycle-wasters in modern languages, so this issue must certainly be addressed somewhere.

    I've mentioned this before, but certain advanced languages also allow proofs of their safety to be generated and then checked by the client (PCC = proof carrying code). This allows for bare-metal code to be downloaded and executed without any security concerns (the user need only trust a proof-checker which is very simple [about 60 lines of C]), rather than a whole sandboxing system and interpreter (Java). Check out

    http://foxnet.cs.cmu.edu/afs/cs.cmu.edu/project/ fox/mosaic/people/petel/papers/pcc/pcc.htm l

    Yes, I am a Programming Language snob. ;)

    1. Re:"Future Languages" -- YES, YES! by john@iastate.edu · · Score: 2
      He (and you) have some good points. But, it's not like you can't do this things in other languages. One could argue that:

      void qsort(void * A, size_t N, size_t S, int (*compareFunc)(void *, void *));

      is parametric polymorphism!

      Hopefully, it doesn't take the average programmer of the dread/dead 'non-OO' langauges long to learn that you don't write N functions which, for example, traverse binary trees, or lists, or whatever other container you dream up -- you write 1 which, like qsort, takes a 'worker function'.

      So now you have a set of functions to traverse containers (list, trees, whatevers) and a set of functions that do operations on 'objects' (OK structs) and you combine them -- voila, essentially you're 90% of the way there.

      It's perfectly OK to 'think in perl/java/c++' and write in C :)

      --
      Shut up, be happy. The conveniences you demanded are now mandatory. -- Jello Biafra
  241. short answer :) by Corrinne+Yu · · Score: 1

    http://slashdot.org/comments.pl?sid=00/01/25/15023 8&cid=290

    The short answer is coding at 3DR is more fun than:
    people making bizarre generalizations about people they don't know
    1. you said something == you think you are important
    2. you want to talk (and ask about, and learn) about math/code / you say things I don't understand / you say things I can't discuss with == you think you are important / smart
    3. you work at game companies that I "kind of" heard of before :) == you think you are important == you think you are famous
    4. you have "struggles" with being annoyed by "gender related things" / you are easily goaded or piqued into responding to dorky situations == you are not getting over yourself

    Duke the game, boothbabe, zoomed angles, just pale by comparison. :)


  242. Re:Orwell by BJH · · Score: 1


    No! You miss my point. An assertion about the role of language in the reporting of direct visual experiences says nothing about its role in abstract reasoning. Which is where the real controversy lies. Does our language guide and inform our mental habits - I think it does.

    Your two statements contradict each other. If you refute the influence of the reporting of a particular phenomenon, you must also, by definition, refute the influence of language on thought. There is no such thing as a "direct visual experience"; it all passes through the brain. You're drawing a very artificial line between concrete and abstract thought.

  243. Some Thoughts by Anonymous Coward · · Score: 3

    I had a look at this document expecting to find loads of stuff to to contradict but instead I find a well writen article and my respect for Tim Sweeney growing. It's all to common particuarly with games programmers for these kinds of documents to be little more than a grind stone for a given set of ideas. Most of what is said concerning the development of programming languages is easy to agree with although the type of language construct he is talking about may be a little far of than he realizes.

    For a long time their has been the argument of which weather or not C++ is slower than C, in reality C++ is slower in some situations, in others it is no diffrent from C. In 'C' a variable is a variable and a function call is a function call, in C++ and other OO languages functions can be virtulized (without you realizing it) createing extra layers of indirection. A 50k line peice of software using all your latest multiple inheritance, operator overloading etc. my be easier to develop and debug debug next to the 200k line pure 'C' version, but there is a good chance all that extra function call overhead and indiretion will total up into a signifcant performance hit. Aside from applications like games where processor load is high and performance is near the top of priority list language discisions become a little more vague. Richard Matthias makes a convincing argument in favour of laguages like Visual Basic in this article. In games however, as the article correctly states performance is the key, the kind of functionality Tim is looking for is going to produce even indirection etc. That's not to say it won't happen, after all one of the things I have noticed in the latest generation of x86 processors is that indirection and function all overhead seem to be less of a performance drag.

    Most of the other things we deal with like the hardware accelerators, processors and development tools have changed radicly in the last 5 years but we are still using the same programing laguages, so prehaps it is time for the language department to catch up.

  244. Linguistics and Programming Languages by exa · · Score: 1

    Quite a fishy introduction to languages, and a hacker's take of PLs. Not to dismiss anyway. There's a deep relationship between linguistics theories and PL, which haven't been uncovered.

    In that the PL is the LoT for programming, it's not a concise statement. But surely a better language *helps* you think better. This is arguably why language gets you live by successfully in a society, it will hinder you within common sense since lexicon is meant to capture an upper layer onthology of the world.

    Then, the programming cliches and paradigms are to be known within the language. Indeed, "A library is a language, and vica versa", that is functionality and approach is what a PL grants, and so does a good library. That's why noone can be said to know ISO C++ without knowledge of standard library. Well, that might be the case for the author; the standard C++ is efficient, in fact it strikes a better balance of efficency / abstraction than ANSI C. Else, both are TM specifications, and are equivalent in power. Though not equivalent in expressive power as shown by advocates of object-calculus (including some of the current SIGPLAN chairmans I suppose ;) )

    However, there is surely a next generation of programming languages. But that might lie further ahead than mere parametric polymorphism, though it is definitely the next thing to exploit. Perhaps Ada9x will take over our lives; ahh, if only it weren't that complex. As the prospective author of a new programming language, I'd see that his claims on the completeness of object models are doubtful. The thing is, it is not clear whether this is the correct or the complete model which we employ. In particular, any system which *allows* side effects is undesirable, also the current systems do not seem to be very orthogonal. Too restricted for a free exploration of possibilities, most language features are glue-ware, and bad imitations of Algol6x, Simula and Smaltalk. Only Lisp and Prolog, still are original, but neither are good for general purpose programming (flames, I can take them). Still, OO is the way to go, and C++ makes it realizable.

    One possibility, of course, an exact implementation of pattern languages. (I'm not allowed to go into details ;) An example is the Demeter project, an Adaptive Programming suite. As for Java, I have nothing to say, that's not the future. Or if it is, I don't wanna be a part of it. I'd rather become a peaceful fisher, in a beatiful seaside village.

    Another note would be related to compiler/interpreter technology. For a next generation of PLs, a next generation of somewhat "smart" compilers will be required. In fact, I'd envision that the compiler/interpreter sits at the heart of the system. The operating system, and all other applications share the same language subsystem... That is my vision, of course, and Java has no place in this vision! So I don't dream of a JavaOS, which would surely be a terrible thing to taste. Also, this has nothing to do with the Chomskyan tradition, no autonomy of syntax or nothing... I don't think that it's the syntax that makes things intelligent or creative, it is surely the machine's operation, and "programme" in that sense, which would have to be described by an expressive language that's all... Or okay ;) we are talking about different syntax-es here: narrow syntax is so incapable (in my view), that it wouldn't account for a language of thought. Well, well, whatever. Even for a good implementation of "parametric polymorphism", the compiler architectures would have to take a quantum leap. So that's probably what we should try to do first (gcc won't help, gcc won't help, gcc won't help, gcc won't help, gcc won't help, kill the bison, gcc won't help...)

    Comments?


    --
    --exa--
  245. Re:Concision isn't the issue. by MattMann · · Score: 2
    I'm French and at first I was telling "already seen" instead if "deja vu" because I didn't knew how to say it, until somebody told me

    Thanks, that's funny! Have you ever heard of Yogi Berra, an American baseball player? He's famous for saying things like: "It's deja vu all over again!" Deja vu encore! Perhaps there's a funnier way to translate it?

  246. Re:Doesn't java do what he wants anyway? by number6 · · Score: 1

    It does compile (and run), and the Duke.Actor inherits the fields from the Unreal.Actor class. The purpose of the main() is to show that all the fields in Unreal.Actor can be accessed via the extended Duke.Actor class.

    --
    I'm a number, not a free man!
  247. hmm.. Guess irony/sarcasm isn't found in Taiwan by Anonymous Coward · · Score: 0

    Maybe it's a cantonese thing? Who knows. Keep posting, CY.

  248. hmm.. Guess irony/sarcasm isn't found in Taiwan by Anonymous Coward · · Score: 0

    Maybe it's a cantonese thing? Who knows.

    Keep posting, CY.

  249. Re: on perl by Anonymous Coward · · Score: 0

    what?! have you done any benchmarking with http://smalleiffel.loria.fr/ ? it's *fast*, *much* faster than any Java JIT. I haven't checked it against gcj, but I'll bet it's not far off.

  250. Deja vu. Your post is contrary evidence. Again. by MattMann · · Score: 2
    That's because we have the concept of freedom as in liberty.

    Yes, we have those concepts. You are unfortunately arguing against yourself. You didn't say "we have those words", because they are just words. You said "concepts" as in ideas and thoughts: you can understand these ideas in the face of imprecise words, and Africans and Native Americans can understand those concepts also with different words.

    I'd like to see you walk up to their village and attempt to describe ownership to them.

    But according to your argument, language influences thought. So, all we'd need to do is teach them the words, right? That should be easy... but it's wrong.

    Grass and green... blue and sky... Instead of 'chief' you have 'one-who-does-good' - think about how different that is from the perception of government as a hierarchy.

    Yes, but we have orange oranges. And yellow cowards. Do you think you are influenced by those word/colors? I don't think Native Americans are either. We also have New York... think how different it is from old York, which did not pop into your head till I mentioned it. Words, language... they've nothing to do with thoughts but rather with communication.

    By the way, this is all taught in linguistics classes, it's standard science, shoulders of giants, etc. By the way, it just occurred to me that I'm a native American, but I'm just not a Native American. When spoken aloud (the true definition of language anyway, but that's another whole can of worms) you can't tell the difference: the language is not the idea.

  251. Yeah whatever by Anonymous Coward · · Score: 1

    This is more nonsense propaganda by the PC Manufacturer/Microsoft coalition. Using false benchmarks and bogus statistics, they attempt to claim that lame PC cards outperform real SGI hardware.

    You obviously don't know jack about graphics, PC or SGI.

  252. back to the future (and open source, with content) by alan_knight · · Score: 1

    Apologies for the empty post. Hopefully someone will moderate it into oblivion.

    Reading this article it really struck me how much he's ignoring. He waxes eloquent about parametric polymorphism, but ignores the languages that do the best job on it (primarily functional). He also spends a lot of time asking for features that (at least mostly) exist in well-known, and well-used languages, that even have open source implementations. My particular example is Squeak (http://www.squeak.org), an open source Smalltalk implementation. There are others, and lots of them have been mentioned

    Let's see about his wishlist

    an open world so that source and binaries don't need to be changed to use new types. Check. The reference source of generic libraries for things like collections. Sorted list was written once 20 years ago and re-used for all types ever since.

    function references bound to objects. Check. Blocks, aka closures. Incredibly powerful, and around for years in languages like LISP and Smalltalk.

    higher order functions. Check. Basically the same thing.

    simple, natural syntax. Check. His specific example was the APL-like ability to use + on collections. That's something they recently added to Squeak, without having to change anything fundamental in the system

    polymorphic types with bounds, constraints, and proper variance relationships fo parameters. He doesn't talk about this in the rest of the article, and I don't really know what it means, so I can't comment.

    introspection. The development environment is written in itself. You can introspect anything any which way you want.

    built-in security, preferably enforced by the compiler. That's missing, partly because it's pretty hard to combine compile-time security with rich introspection and simple syntax. Security is supposed to get in the way

    binary portability. Check. Runs on practically anything, including handhelds.

    It even copied that garbage collection idea from Java.

    Perhaps the languages of the future just require people to notice what's already there.

  253. Big Brother is doubleplussungood by elegant7x · · Score: 1

    "This isn't to say that someone wouldn't be able to thing something like 'Big Brother is ungood', that would be something that would be inherently a silly and nonsensical idea to a party member ... The person would only be able to think in vague ideas" --Appendix to 1984(emphasis mine)

    Sorry, that's a paraphrase, I loaned my copy of '84 to someone just yesterday. But you'll notice that Orwell didn't say that crime think would be impossible, only that it would impossible to communicate

    Amber Yuan (--ell7)

    --

    "and dear god does this website suck now." -- CmdrTaco
  254. A New Law by eric.t.f.bat · · Score: 2
    I propose the following as a complement to Godwin's Law:

    As a SlashDot discussion grows longer, the probability that it will become a discussion of the Gnu Public License or the US Constitution approaches one.

    : Fruitbat :

    --
    I have discovered a truly remarkable .sig block which this margin is too small to conta
  255. Object Pascal has done this by Dave+Fiddes · · Score: 1

    Object Pascal achieves what you request.

    - It removes the little used features and arcane characters.
    - Has excellent, easy to use, _reliable_ exception handling.
    - Has *strong* typing for improved productivity.
    - Compiles quickly to code of comparable quality to C++.

    Unfortunately the language has been hijacked by Borland/Inprise with it's proprietary (but excellent) implementation. Also no sane programmer would use Pascal because it makes your code easy to read and of course, as far as jobs are concerned, obsurity = security ;)

    Let the holy war commence...

  256. YES!! by Uberminky · · Score: 1

    Come, my brother, we must join ranks and revive the wonder that is Forth! Today, the TI-85. Tomorrow, THE WORLD!!!! I mean seriously... Ok so you have to write in reverse Polish notation... It's so darn COOL tho... It makes you truly *understand* what is going on under the hood... It's so *powerful*, and yet so incredibly *simple*... We'll show them all. ;)


    --

    The streets shall flow with the blood of the Guberminky.

  257. Explaining virtual classes by harmonica · · Score: 2

    Hi, I really tried to understand Tim's example of virtual classes with model/view and spreadsheets, unfortunately I didn't get it:

    This seems like a good design, but it doesn't work well: all the functions in SpreadsheetModel have types indicating they work with an arbitrary View subclass, and vice-versa.

    Could someone please explain to me what he means? If the types are not specific enough, maybe the whole design is wrong?! I'd be grateful for an answer...

  258. About LISP and OO by TimoT · · Score: 1

    Yes, he dissed lisp. Typical ignorance of a mainstream programmer (BTW most LISPs are not strictly FPLs). He also seems to believe the OO gospel from Meyer, GOF, the three amigos and many others. Most of the OO "truths" like "OO offers better reusability" can only be understood in the narrow context of mainstream languages. The marketing clauses have been stated so many times that most people accept them as the truth. Using objects (mainstreamly) forces people to think at a coarser level of abstraction in terms of who tells who to do what. This actually works very well, but the marketing has taken it way out of proportion and nowadays this seems be accepted as the only way to do it. For some applications using a different mindset like streams of data transformed by computational nodes might be more appropriate. It actually doesn't matter as long as it is efficient in modeling the domain and easy to implement in a programming language. It should also be noted that the very concept of object is not defined properly.

    The very thing he is talking about, basically building abstractions to express the domain, is at the very root of LISP culture and has been for a long time. In the LISP world this is usually referred to as "building the language toward the problem".

    This is actually what most OO people are doing. They are implementing classes that are domain abstractions and then expressing the solution in the formalized language of domain concepts they just built. Often they have to resort to patterns, because of the deficiencies of the language. The patterns don't usually have a meaning in the problem domain, but are only formalized hacks to get around a problem in the language. Some of the problems are caused by the dominant message-passing model of OO and implementation in static languages. This is not to say that patterns are bad, on the contrary, they are very important when developing in a language that needs them or when they actually have a meaning in the problem domain.

    The LISP approach to this problem is not to bend around the problem, but to build the suitable constructs into the language to express the solution. Knowing the beauty of the language it is sad that it seems to be doomed to remain the language of the future indefinitely. Maybe this is because the people don't see the language from the parens.

  259. Tim Sweeney, he's a good guy. by TheZ · · Score: 1

    A while ago, Tim Sweeney made a small game, which had a level editor in it. It was called ZZT, and had a built-in programming language (called ZZT-OOP), it spawned a few clones, and gathered a massive underground community.

    --
    -FweE-
  260. Re:contrived by cstaylor · · Score: 1
    The first time I saw you use 'OT', I thought you meant you were working overtime... :)

    Yeah, but those allocators won't save you at the point-of-failure:

    memset(ptr,NULL,n);

    They only kick in when:

    • Memory is freed
    • If you hit a guard page (if your OS supports it and you've put that into place with your heap allocator)
    Why not just take away the ability to tweak memory like that? Besides performance numbers, what benefits are there for accessing memory directly (unless you're writing device drivers).

    The only thing I can think of is taking advantage of OS specific operations (like memory-mapped files and completion ports in NT).

    -Chris

  261. Get over your gender! by Anonymous Coward · · Score: 0

    Ok, Crash, this is the last straw. Every piece of writing I ever read of yours has at least 50% of its content describing how great you are. Christ! Would you do us all a favor and shut-the-hell-up?!?! You are NOT special because you are a female. You are NOT special because you are a coder. You are NOT special because you are a female coder.

  262. Some comments on his importance of game developers by be-fan · · Score: 3

    Tim has a point on a few things, but notably about how important game developers are to the PC. Although he is a little bit in left field with his $100 graphics chip vs. $100K SGI, he is close. Without gaming and its inevitable push, 3D on the PC would not have happened. Sure there were proffessional OpenGL cards before gaming cards came out, but how did they perform, and where would they be today? It is proven that consumer technology moves significantly faster than corporate and high end technology. I seriously doubt that the high end OpenGL cards on the PC, such as the Intergraph Wildcat 4000, would be as fast as they are without the competition from consumer cards. (Face it, would you want to release an OpenGL card for $2K when a 3Dfx was a quarter the performance, but only $200?) The proof is this. The Quadro GPU is faster than a wildcat at about half the price. Why? Because it is based on the lightning fast GeForce consumer card. Do you really think that Intergraph is going to sit on its ass, or are they going to develop a card that blows it away?Secondly, gaming has pushed the processor and multimedia subsystems to increadible levels. All the technologies that make a PC competitive with a low or mid end SGI, such as AGP, PCI, SDRAM, the new intel multimedia hub, SSE, 3DNow!, etc, are mostley pushed by gaming. (Yes, SDRAM is a gaming technology. It features much lower latency than FPM. Latency really isn't important in image editing or word processing, but is critical in games. Same thing for PCI. ISA graphics cards were plenty fast for word processing.) You can trace gaming's influence even farther than these reletivly new technologies. I seriously doubt that PCs would ever have been seen as a multimedia machine (a term that got coined in the early 486 days.) without gaming. They were the first "multimedia" apps out on PCs and the ones that continued to push technology. The fact that they pushed technology is also important. Do you need a 800 MHz athlon to word process, watch movies, or even photo editing ?(I mean cleaning up old pics, etc.) But you do need it to play quake. So while other technologies have come onto the PC because of its increasing power, the PC would not have that power if games had not pushed it there. (or it would have been much slower to come around.) Of course everyone benifits from that power. The PII was designed to play games (and to a lesser extent to do multimedia), but it still make a damn good server. I often see on slashdot, though people who think that games aren't "real" apps. Or that a server is a "real" computer. I've heard people say things along the lines of, "who needs games on Linux, go out and do some REAL work." Well, sorry to bust your bubble but games got the PC where it is, and all the gamers, everyone who has ever used a multimedia application, all the people who used to have to buy a $20K SGI to do their graphics work but now can buy a $3000 PC, and yes, even all the sysadmins who saved $15000 by not having to buy a SUN, owe game developers.

    --
    A deep unwavering belief is a sure sign you're missing something...
  263. Backgrounder: A=B+C for all types by the+way · · Score: 1

    What a great article! There's a lot to get through there, so I thought I'd add a bit of extra info about one bit I know well.

    Tim mentions how much more clear it is to use direct assignment (A=B+C) for all types (including lists) than having to worry about the details of the specific classes. This issue is part of the study of generic programming. This is generally quite easy to do with functional languages (e.g. have a look at some Mathematica programs to see what I mean).

    A lot of effort is going into making this available in C++, with a particularly success being achieved by the STL. The STL gets over the problem of speed through using templates, which (as Tim mentions) are dealt with at compile time rather than run time. Although Tim apparently has no time for templates, they certainly achieve good results in the STL.

    Those of you with their thinking hats on will be wondering "but what happens if I write A=B+C+D?". The STL would create two loops and two memory copies, since it thinks of it as ((B+C)+D). Some very interesting work to avoid this problem is being implemented in class libraries such as POOMA and Blitz++ which implement the fiendishly clever concept of expression templates to actually create and traverse a parse tree of the expression at compile time. Of course, this can lead to very long compilation times. An amazing side effect of this approach is that if you never actually use a value in A (having assigned B+C to it), then it will never get evaluated (e.g. the classes use 'lazy evaluation').

    If you're interested in trying out some of these ideas in a strongly typed language, it's worth looking at C++. You'll need a good compiler though--if you're using GCC make sure it's the latest version, or for better results still try KAI C++. If you're a complete newcomer try out a functional language--I particularly recommend Mathematica, although you can use the functional concepts in Python (e.g. Map()) and Perl to make a start.

    1. Re:Backgrounder: A=B+C for all types by the+way · · Score: 1

      It's amazing and terrifying what people are doing with C++ templates today. Basically, some people discovered that you can force the template mechanism to instantiate templates recursively, and in this way get iteration at compile time. This makes general computation at compile time possible, although in an incredibly slow and awkward way

      I agree with all of your comments. However, at this stage I am not aware of a 'better way'. You either do the work at compile time (in which case compilation is slow and debugging difficult) or run time (in which case performance suffers with each extra layer of abstraction).

      Is that a fundamental compromise? Are there any languages the negotiate it better?

      A lot of people would say that the speed issue due to increased abstraction is unimportant with today's powerful computers. However, I do a lot of work with optimisation (GAs, neural nets, LP, etc) where every bit of speed really helps. Furthermore, adding layers of abstraction often increases run time exponentially, so it has to be carefully controlled.

  264. interesting... by samantha · · Score: 1

    But he blew it dismissing lisp and its derivatives early in the conversation. Most of the features that he wants have been explored in such languages to a much greater degree than anywhere else. The lisp languages lost the race a while back but I think we are in for a bit of a resurgence from scheme. Most folks don't even realize that compiled lisp out of the better envirionments is faster than java, nearly as fast as C.


    The basic notion that language determines or limits thought in programming is crystal clear to anyone who has stretched the boundary of a few languages very often. The limitations of existhing languages are also obvious to those who push the boundaries looking for more expressive power and elegance.

    The real question is not whether we need better languages and tools. The real question is what sort of process will really give them to us and make their use ubiquitous. The language/tools market is typically a hard place to build a successful business, especially to connect with early funding. This is one place where I believe Open Source is probably the only way the tools will be ubiquitous enough and evolve fast enough. Proprietary attempts have largely failed in this area. Anyone ever notice that many of our everyday programming tools haven't really changed or improved very much in nearly two decades? And no, it is not because they are so wonderful as they are.

    I do like the virtual class concept and I've run into plenty of cases where it would have been real handy.

    Relatively transparent persistence can be added to any language for which sufficient metadata is either directly present in the runtime environment, is derivable from the compile time environment or is programmatically created by defining a routine per class that one wishes to have persistent instances of. I've have built many such things and am working on a refinement that will soon be open-sourced. More to come. Building persistence into the language only solves part of the problem and only for users of that language and a particular form of data storage (generally). Actually there are a set of common problems that are data source type, vendor and language independent that should be and can be addressed. Specific language and database plugins can then be added to this central core as needed. An in-language "persistence solution" typically does not touch complex object graph persistence where objects must be reachable along multiple paths and not just relative to a single root. Nor do such approaches deal with object and object/relational concerns such as transactions, concurrency, queries, distributed data sources, schema evolution and so on. But as I said, more on this subject later.


  265. Where to find this Unrealscript language? by Anonymous Coward · · Score: 0

    Is it Open Source?

  266. Neener Neener by Foogle. · · Score: 1

    I is stupid and fatty!!!!
    Haha!!!

    -------------------------
    "I shake the Devil's hand all the time!! He's my personal bitch!"
    - They Might Be Losers

  267. Uhhh, AGP 3DFX III ain't no SGI by maynard · · Score: 3
    Let's be clear, Tom Sweeny's got my money for Unreal Tournament... and it plays in Linux on my cheap-ass Voodoo II card wonderfully. UT is plenty fun. But to compare even a high end AGP 3Dfx or NVIDIA card against serious SGI iron is just plain wrong. He's got a point that the newer 3D cards are good... they finally support 32 bit color (earlier 3Dfx cards like mine only support 16bit), they're reasonably fast... but they don't hardware acclerate anything but pushing pixels out to the display. Here's what Steve Baker wrote on the FlightGear Hardware Requirements page for a simple overview of the differences between high end 3D acceleration and what we're using on our PC's. I quote:
    "The important thing to think about when considering the performance of 3D cards is that the present generation of consumer-level boards only speed up the
    pixel-pushing side of things.

    When you are drawing graphics in 3D, there are generally a hierarchy of things to do:

    1.Stuff you do per-frame (like reading the mouse, doing flight dynamics)
    2.Stuff you do per-object (like coarse culling, level-of-detail)
    3.Stuff you do per-polygon or per-vertex (like rotate/translate/clip/illuminate)
    4.Stuff you do per-pixel (shading, texturing, Z-buffering, alpha-blend)

    On a $1M full-scale flight simulator visual system, you do step (1) in the main CPU, and the hardware takes care of (2), (3) and (4)

    On a $100k SGI workstation, you do (1) and (2) and the hardware takes care of (3) and (4)

    On a $200 PC 3D card, you (or your OpenGL library software - which runs on the main CPU) do (1), (2) and (3) and the hardware takes care of (4).

    On a machine without 3D hardware, the main CPU has to do everything."
    Now, I'm nitpicking. It's a cool article from a cool guy, who just made a minor exaggeration. Oh, and Flightgear is one Free Software (GPL) project you want to track... if you've got even a cheap-ass 3D accelerator (like me), and are into flight simulators, this is one cool project! :-)
    1. Re:Uhhh, AGP 3DFX III ain't no SGI by Anonymous Coward · · Score: 0

      But doesn't GeForce do part of (3)? (Transform & Lighting)

    2. Re:Uhhh, AGP 3DFX III ain't no SGI by jackmott · · Score: 1

      the latest nvidia chipset, the GeForce, takes care of 3 and 4

      as does the Savage 2000 by the way.

      so, like he said..

      --
      -I go to Rice, so figure out my email address
    3. Re:Uhhh, AGP 3DFX III ain't no SGI by Murphy(c) · · Score: 1

      I sure ain't no 3D Guru, but wouldn't you say that nVidia's GeForce T&L is a step in the SGI direction ?
      Putting Vertex Transform and Dynamic Lightning in hardware is (in you're example anyway) pretty much what the SGI does in hardware...


      Murphy
      Nitpicking to the end... :)

  268. Re:oh yeah OFFTOPIC... quote by Hazard+Class · · Score: 1

    I love that quote. Where's it from? Mind if I "license" it? [grin]

    --


    Game Over Man! --Aliens
  269. Re: mangled answer by Anonymous Coward · · Score: 0
    Just in case it's not clear, the AC that posted the comment you referred to is not me (the only reason I can think of you continued to respond to it here). The reason I didn't log in for this discussion is because I moderated it (your post in fact) and that's verboten.

    Would have been interesting to see an answer. You're pointing fingers (with justification I'd say) at techie/game sites for propogating gender-divisive stories/issues, but your company is probably the worst as far as propogating gender stereotypes and "gender divisiveness" in the games industry today. From the way 3DRs owners present their image publically, it seems the issue is a little deeper than marketing.

    It seems like you're worsening/continuing the attitude that you're so miffed about. The games industry isn't going to respect women coders until it respects women, period. If you think sites like gamespy are going to interview a female who coded a game that stereotypes/arguably degrades women and NOT be focused gender related questions, you're drawing lines that don't fit. Don't get me wrong, I think you're rant was right on, but it seems to me you might consider your role in the situation a bit more before you start pointing fingers everywhere else. Perhaps you have a good answer for all this, but it seems like you're stuck in a Paradox to me.

    Finally - ever read threads on these boards related to Quake/Id/Carmack? "Oh Carmack thinks he's so smart because he took some algorithms developed in the 80s and made a game. Whoopie". Your rant implied you were worthy of a long technical discussion that gamespy should have done. Do that, someone will take it as ego puffing, and you get bash. Point out whatever reason you got dissed (valid or not) and someone will dismiss it and bash you. It doesn't matter who you are or where you work. Welcome to virtually anonymous communcation, it's nothing to worry about.

    Good luck!

  270. *eat at joes* by Anonymous Coward · · Score: 0

    *eat at joes*

  271. Re:Lest they forget Columbine as well.... by FreshView · · Score: 1

    All I can say is that this better be a joke.

    --
    -------- "All I want in life's a little bit of love to take the pain away" --Spiritualized
  272. sweeny.sourceforge.net by Anonymous Coward · · Score: 0

    show us the code or get out of the way... everyone has their great ideas for a great new language... let's see you implement yours.

    1. Re:sweeny.sourceforge.net by Anonymous Coward · · Score: 0

      Hmmm...does he stand to make more money by devoting his time to Unreal 2 or an new open-source programming language? I think I can guess which is a higher priority.

    2. Re:sweeny.sourceforge.net by elegant7x · · Score: 1

      let's see you implement yours.

      You mean like unrealscript?
      idiot.


      Amber Yuan (--ell7)

      --

      "and dear god does this website suck now." -- CmdrTaco
  273. Re:Nonsense. Big languages are on the way out. by Ribo99 · · Score: 1
    Java was a bad idea that should be forgotten as quickly as possible.

    Do not make blanket statements like that with out explaining your reasoning.


    ---

    --
    I wear pants.
  274. Hopefully this will be the end of C and Java by Anonymous Coward · · Score: 0

    These dated languages are simply no longer needed for powerful game development. C level performance and high level power is available NOW in several languages, Eiffel for one.

    Ridding ourselves of these dated languages will also increase developer productivity and also the quality and reliability of software.

    And remember, when working at a higher level, the program has no ties whatsoever to a specific OS.

    Rather than putting forth huge amounts of effort in making a program cross-platform compatible, developers should use a language that does it for them.

    1. Re:Hopefully this will be the end of C and Java by Detritus · · Score: 2
      C is not going to disappear for a very long time, no matter how wonderful the language fad of the year is. A huge amount of time and money has been invested in C. Among the professional programmers that I work with, C is the one language that almost everyone knows. It is also the only language that is available on most processors and operating systems.

      FORTRAN was old when I wrote my first computer programs, many years ago. Even though its popularity has waned, I still know programmers and scientists who write everything in FORTRAN.

      I'm sure that some new language will eventually replace C and C++. That day is likely to be decades away. People forget how long it took for C to become a popular programming language. See Dennis Ritchie's paper on the history of C.

      As a side rant, whatever happened to languages that could be completely described in a thin book such as Niklaus Wirth's "Pascal - User Manual and Report" and Kernighan and Ritchie's "The C Programming Language". Too many languages and operating systems have become unmanageable waste dumps of "features".

      --
      Mea navis aericumbens anguillis abundat
    2. Re:Hopefully this will be the end of C and Java by Anonymous Coward · · Score: 0

      One very good reason why you're a long way to seeing a game written in Eiffel (or any other language than C/C++/ASM) is that most developpers also target consoles (Dreamcast, Playstation , ...). Now console development kits barely supports the standard C library (tip to all game programmers who want to write portable code... WRAP EVERYTHING! long is not 32 bits on all platforms, strchr will not necessarily work, fopen is never implemented, and I won't even talk about cout[but nobody uses that] ) and console processor speed is reduced compared to PCs and they don't have as much memory (most higher level languages produce bigger code and internal data structures ). Assembly is still very common in console projects, especially when you have opportunities to do some crazy optimisations. So unless the language is proprietary (UnrealScript) you a long way from seeing it in a console.

    3. Re:Hopefully this will be the end of C and Java by jackmott · · Score: 1

      I think you understate the undertaking that would be writing something like Quake3 or Unreal in Eiffel.

      is it all set up to handle openGl? can it be ported to linux/mac/pc no problem?

      is it REALLY as fast?

      etc. etc.

      --
      -I go to Rice, so figure out my email address
    4. Re:Hopefully this will be the end of C and Java by Anonymous Coward · · Score: 0

      Eiffel rocks and all that, but every implementation I've seen compiles to ANSI C.

  275. the new school by jon_c · · Score: 1
    While working at MS I got to check out something their working on at research, IP. Intentional Programming. it's sort of like current programming taken to the next level of abstraction. It's also what Charles Simonyi (a.k.a father of Hungarian notation) it working on...

    on another tip, the validity of compiled languages in most application scenarios is diminishing. With the web becoming the user interface of choice almost all programming will be done in script, on the client and the server. The only place for compiled code will be for the OS and server type applications. This doesn't leave much room for a barrage of compiled languages.

    -Jon

    --
    this is my sig.
  276. Python! by anonymous+cowpie · · Score: 1

    Python will do everything Sweeny dreams about, and makes it seem quite natural. And it's here today. So there.

  277. Re:I've been waiting all day for this to get poste by Tom7 · · Score: 1


    Hmm... Java is dynamically typed, and most of the time it isn't "really, truly" compiled. (Unless you count compiling for a VM as "really, truly").

    Lots of the stuff does rely on compiler technology advancing, but it really is. One important issue is that stronger type systems are required to make compilers much better than they already are (every C/C++ compiler I know of "black-boxes" function calls completely, meaning that since there's too much link-time voodoo, they can't optimize into function calls at all). In other words, compiler technology is not likely to improve much unless we abandon current paradigms in favor of statically-typed languages.

    - Tom 7

  278. Object of Desire by petergun · · Score: 1

    I'm glad Tim wrote this, I certainly began thinking about items mentioned.

    I started with Object Oriented programing by buying a NeXT and beating my head against the ideas of Objective-C. I learned the hard way that C=A+B is what I wanted, but then it wasn't possible...

    Or was it. Unlike C++, Objective-C, a strange descendent of Smalltalk and C, did allow me to write a set of very clean abstarctions to do exactly C=A+B, where A,B&C are arrays.

    Why? Objective-C is run-time bound, therefore programs can be extended after compilation.

    Today, Apple plays down the impact of Objective-C in their Mac OS X documentation. It was the crown jewel at NeXT and the reason Carmack and Co built Doom on the platform. The programming tools were better (and most copied) then anywhere.

    And yes, there was a penalty in speed for all this "late binding" and abstraction. On my 25Mhz NeXT, that was alright for the sheer simplicity of design.

    With the proliferation of Mhz today, you would think that we could just adopt the same things and run with it? Naw, Tim also pointed out a strong failure of the programming community: Once a language is deemed "unpopular", no matter what it is giid for, it is discarded.

    That's fine, maybe PR is all that a language really needed. Heck, if you can write UT or Quake3 with it ... it must be good.

  279. Re:Namco by cstaylor · · Score: 1
    Voldo??? Lizardman can beat Voldo anyday. :D

    -Chris

    In terms of looks, XiangHua is my favorite, followed by Yoshimitsu

  280. memset by Corrinne+Yu · · Score: 1

    My engine code doesn't have memset, my friend.
    I call C_Zero_Memory.

    (I also have C_Fill_Memory for those necessary moments.)

    So, yes, it can assert at C_Zero_Memory, on the stack, at the point of failure. :)

    BTW. C stands for Common as in Common functions. It does not stand for Corrinne.

    P.S. A corollary is C_Zero_Memory is (and can be)platform optimized. Internally for windows, C_Zero_Memory calls ZeroMemory.

    1. Re:memset by cstaylor · · Score: 1
      So what happens when one of your wizzy programmers *does* use memset? I understand what you're saying... every single serious C project I worked on had their own memory methods (most of cryptography programming I did used libraries that wouldn't let you touch the keys directly... and they made sure to zero out the memory when they were finished with the algorithm).

      The point I'm making is that you can obfuscate with "my engine code APIs", but unless you do serious code reviews, untrained programmers can and will make mistakes.

      So, companies using these assembler-with-plastic-surgery languages have two options:

      1. Only hire expensive, brainy employees
      2. Engage in weekly code review sessions where problems like "oops, I used memset" or "wait, I didn't set that to NULL... oops" are removed

      -Chris

      Of course... you could always #undef memset and redefine it as your Corrinne_Zero_Memory routine. Man, talk about ego... naming your APIs after yourself... :)

  281. Doesn't java do what he wants anyway? by number6 · · Score: 1

    To quote his article:

    > To add a new variable to the actor class, you
    > wouldn't edit our code, you'd simply subclass
    > the entire engine, with a declaration like
    > "class DukeNukemEngine extends UnrealEngine".
    > Then you'd extend the DukeNukemEngine.Actor
    > class and add your new variable to the
    > subclass -- just the variable, no cutting and
    > pasting of other code.

    Now, unless I'm missing something, the following
    Java 1.2 code does what he wants:

    Unreal.java
    -----------
    public class Unreal {
    String world = null;

    public class Actor {
    int strength;
    int dexterity;
    int health;
    }

    public class Walls {
    int x;
    int y;
    }

    Unreal() {
    world = "Unreal World";
    }

    Unreal(String name) {
    world = name;
    }
    }

    Duke.java
    ---------
    public class Duke extends Unreal {

    public class Actor extends Unreal.Actor {
    int magic;
    }

    Actor myActor;

    Duke(String name) {
    world = "Duke "+name;

    myActor = new Actor();
    myActor.magic = 4;
    myActor.strength = 6;
    }

    public static void
    main(String args[]) {
    Duke game = new Duke("Dead World");

    System.out.println(game.world);
    System.out.println(game.myActor.strength);
    System.out.println(game.myActor.magic);
    }
    }

    The Duke class has added a magic field to the
    Actor subclass, and can use all of the fields
    in the Unreal.Actor subclass as well.

    --
    I'm a number, not a free man!
    1. Re:Doesn't java do what he wants anyway? by Chrismo · · Score: 1

      Don't think so. Now Duke has two Actor fields: Duke.Actor and Unreal.Actor. Java won't 'override' the inherited Unreal.Actor with Duke.Actor. I don't think this would compile since it wouldn't be able to differentiate between Actors.

  282. Re:Concision isn't the issue. by Le+douanier · · Score: 1


    Have you ever heard of Yogi Berra, an American baseball player?

    Not at all, but I don't know a lot of French soccer player so I am less likely to know American Baseball players.

    He's famous for saying things like: "It's deja vu all over again!" Deja vu encore! Perhaps there's a funnier way to translate it?

    I can't think of any funny way to translate it but I think that "It's deja vu all over again!" is better said in English,I can't find a good way to translate it back in French, maybe "C'est du deja vu deja vu" (it's a "deja vu" deja vu) but this isn't really funny

    By the way, I think that what made me think of using "deja vu" instead of "already seen" was Neo in Matrix, when he talks about the black cat, I probably encountered it b4 but hadn't integrated in the English I used at the time.

    --
    "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
  283. Re:Namco by Anonymous Coward · · Score: 0
    In terms of looks, XiangHua is my favorite, followed by Yoshimitsu

    XiangHua followed by Yoshimitsu?????

    When I picked my Soul Caliber character, I based it soley on how scantily clad the character was, not by the overall looks.

    My personal favorite is Sophitia. She rocks! She can easily defeat that Rubberized chicken thing they call Voldo, and that stupid overgrown bluebelly lizard thing they call LizardMan.

  284. Re:eiffel is proprietary, C and C++ are open. simp by Zorikin · · Score: 1

    # apt-get install smalleiffel
    Reading Package Lists... Done
    Building Dependency Tree... Done
    The following NEW packages will be installed:
    smalleiffel
    0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 1143kB of archives. After unpacking 5130kB will be used.
    Get:1 http://http.us.debian.org potato/main smalleiffel 1.8.0.78-3 [1143kB]
    Fetched 1143kB in 6s (164kB/s)
    Selecting previously deselected package smalleiffel.
    (Reading database ... 37192 files and directories currently installed.)
    Unpacking smalleiffel (from .../smalleiffel_1.8.0.78-3_i386.deb) ...
    Setting up smalleiffel (1.8.0.78-3) ...
    Building HTML index of the Eiffel class library...
    ... HTML build completed

    Whoops, there goes Debian again, giving out proprietary software.

  285. You have nothing! by Anonymous Coward · · Score: 0
    Lizardman is the king of all Soul Caliber characters!

    "Beware of Lizardman....." :: echos into the distance ::

    1. Re:You have nothing! by Anonymous Coward · · Score: 0

      RYU: Is this where I can get walk throughs for King's Quest 8? I am stuck at the Blue Lizard.

  286. Re:Orwell by ralphclark · · Score: 2

    I think you overestimate the involvement of conscious mental activity in colour classification. Colour perception is really a preconscious phenomenon.

    It has been known since Young and Helmholtz in the 19th century that the division of the spectrum into perceived bands of colour is completely determined by genetically determined neural wiring and retinal pigments. And lower animals endowed with colour vision are able to classify colour stimuli - without any equipment for language or abstract reasoning. Bees have colour vision extending into the ultraviolet. But most scientists wouldn't contend that bees must think about what they see in order to recognise flower petals.

    In the Berlin-Kay experiment the subjects placed their marks on the diagram according to eg. their perception of "red" and "blue". It's hardly possible to consciously analyze such a basic perceptual experience. It can only be done on "feel". In that limited sense we hardly differ from the bees.

    Consciousness is not what it thinks it is
    Thought exists only as an abstraction

  287. Re:Verifiability by Anonymous Coward · · Score: 0

    There are some terms that cannot be satisfactorily expressed in another language. For example, there is no satisfactory spanish substitiution for the word "loomed". There are spanish words meaning "to stand over", but none that conveys the same sense of menace as the word loomed.

  288. Re:1st! by Jburkholder · · Score: 1

    I've noticed this trend of 1st posters being loggen in rather than AC. What is that all about? Make moderators waste 2 points instead of 1 to make it -1?

    (way offtopic, better mark it down quick!)

  289. Re:Offtopic about First Posters by Anonymous Coward · · Score: 0

    /.why log in to first post? Anyone can claim to
    /.be an AC...but there is only one TheWall (or
    /. melvin, or dammitjim, Meept!, etc.). What
    /. claim to fame do you have if your name
    /. isnt on it?

    just another /. moron? as i've exponded many times, AC are not necessarily anonymous nor cowards. I simply refuse to register as a /. moron.

    The thing about /. is that at first they are unix weenies in their idiosyncratic funny ways but as the site becomes popular, stupid & halfassed attitudes become the mores and norms of the vast majority of /. readers who are just another sophomoric teenager waiting to get out of school. All opinions but no content.

    Xah
    xah@best.com
    http://www.best.com/~xah

  290. Re:Verifiability by John+Allsup · · Score: 1

    You should take note of how recently the number zero and the equals (and plus etc.) symbols were invented, and what the Greek/Arabic mathematicians did without them.
    John

    --
    John_Chalisque
  291. Other reasons to idolize Tim Sweeny by Pascal+Q.+Porcupine · · Score: 5
    I think it's safe to say that quite a few CS geeks have been brought up to more modern programming practices thanks to Tim Sweeny's earlier work, most notably ZZT. ZZT wasn't much of a game on its own; where it shined was the fact you could extend it by writing your own games, since it included an object-oriented message-passing trivially-multi-tasking scripting language of its own, including a rather cool IDE. I learned quite a bit of high-level programming stuff simply by toying with this rather low-level interface; I learned about message-passing, parallel processing, deadlock-avoidance, and object-oriented programming in general thanks to sitting in front of my old 286 with Hercules monochrome into the wee hours of the night. I even learned about bad interface design by playing a lot of other peoples' games which assumed that I had a color display.

    I personally think UnrealScript is a sweet language, and I can't wait for Unreal binaries for Linux (so that I can finally play and create with Unreal, which I purchased so long ago). Even if I never get around to that, the principles behind it are what drive my thoughts for a 3D MUCK system I'm working on in what passes for my spare time.

    Back in the "good old days" when Epic Megagames was Potomac Computer Systems, I exchanged snailmail with him all the time. Every now and then I'd send him some program I was working on, and he'd send me a beta of whatever game he was working on (I was probably one of the first people on the planet to have, and beat, the first episode of Jill of the Jungle); one time he even gave me the registered version of ZZT. I still have that around somewhere, though it's kinda hard to use it since it's on a 5.25" disk. :)

    In any case, I just wanted to publically express my thanks to him here. Once upon a time I emailed him directly and he was obviously very busy (Unreal was "about to come out;" this was a couple years before it finally did :) and I doubt he's gotten any less busy nowadays.

    I wonder if there's been any thought of writing a portable ZZT engine clone... anyone know of any good ZZT game archives? (Yeah, I know ZZT itself is free(beer) now, and would be free(speech) if the source code weren't lost... I'm too lazy to get dosemu working again though. :)
    ---
    "'Is not a quine' is not a quine" is a quine.

    --
    "'Is not a quine' is not a quine" is a quine.
    Quine "quine?
  292. A motto I adopted quite recently... by mattbee · · Score: 1

    When programming, I try to keep 50% of my concentration on the job at hand, 25% on how I'm doing it, 12.5% on how I'm thinking about how I'm doing it, 6.25% on how I'm thinking about how I'm thinking about... etc. ad nauseam.

    The article is great though, really bringing some of that horrible Computer Science stuff out into the open. I think most programmers who haven't been formally trained eventually start banging their heads against brick walls. But their problems are often well-served by these sorts of accessible and pragmagic articles on theory.

    Though I agree wholeheartedly with what Tim says, it's perfectly possible to sit at your keyboard wondering about your approach to a program, deciding that a C++ / Apache / carrier pigeon hybrid solution might involve a bodge and there must be a better way of doing things. And then you've got a deadline looming (or a life to be getting on with), panic, write the whole thing in COBOL and have done with it.

    --
    Matthew @ Bytemark Hosting
  293. Good things in unlikely places by Lerc · · Score: 1

    Many of the things that Tim Sweeney is after appear in Delphi.

    I use Delphi as my language of choice. Many people challange me on this because most of the things I do isn't in the area of bulding guis from drag and drop controls. But Although that is a cool feature of Delphi it is not the reason I use it over C++. The language underneath is extremely well constructed.

    Apart from the object orientation of the pacsal there are key new features.

    there is Published Properties for Run time type information which is just plain cool. But other things are things like...

    var

    Wibble : Procedure; // good old procedure variable

    Gleep : procedure of object; // Delphi
    enhancement.

    Procedures of object let you call methods of instances of objects.

    next

    type

    tFrogClass = Class of tFrog;

    var

    AFrog : tFrogClass

    AFrog is a variable that refers to a type of object, not an instance of an object.


    Parametric polymorphism is not supported yet. But the bones of the creature are there.

    Imagine

    MyFrogList:=tList.Create(tFrog);

    The parameter of the contructor would be of type tFrogClass;

    (Note - much of what is below is not actually in Delphi, I'm just pointing out possibilities for logical extentions)

    There are two possible ways to do Parametric Polymorphism (PP from now). You could create a type staticly
    or Dynamicly.

    Staticly would be akin to C templates. I think Dynamically would be More flexable, essentially Static PP would provide more compiler errors. Dynamic would have to throw exceptions.

    Static PP would accept things like

    type

    tFroglist := class(tList) with tFrog;

    var

    MyFrogList : tFroglist;

    begin

    MyFrogList:=tFrogList.Create;

    Here a new type is constructed which would enable the compiler to do type checking on all items bing passed to and from that type.

    Dynamic PP would accept things like

    var

    MyFrogList : tlist;
    MyCar : tCar;

    begin

    MyFrogList:=tList.Create(tFrog);

    MyFrogList.Add(MyCar);

    Here a cetain degree of Compiler type checking could be done. A smart compiler should be able to spot that a tCar cannot be passed to the list.
    The comiler would have to track all assignments to MyFrogList to ensure that no other objects of type list have been assigned. Tricky but not impossible.

    Run time type checking would still have to be used if there is any chance of the compile time type checking missing anything.

    Run time Type Checking would Cerainly be needed for something like the following

    type

    tClassOfAnything : class of tObject;

    var

    MyFrogList : tlist;
    ListType : tClassOfAnything;

    begin

    ListType := tFrog;
    MyFrogList:=tList.Create(ListType);

    At the moment only one extra language feature would be required to support PP. A few more to make it nice.

    You need to control function return types to be the class of the object used.

    for instance Function tList.GetItem(index : integer) one of ContainerType;

    This gets interesting because the return type is the contents of a variable of type Class of something.

    Essentially the construct 'One of thing' is a type of checked type.

    Similarly you could also provide the system for a parameter

    Procedure tList.Add(NewItem :one of ContainerType);

    I'm relativly certain that something like this will happen eventually. Borland have always extended their pascal to support new language features.

    I'm also quite confident that what they do to add this functionality will be much better than any design I could come up with.

    --
    -- That which does not kill us has made its last mistake.
  294. Re:Orwell by BJH · · Score: 1


    People are not bees.

    But let's just agree to disagree, OK?

  295. Take a look at Sather: www.gnu.org/software/sather by Anonymous Coward · · Score: 0

    This language has recently been turned into a GNU open source project, and solves the worst of the problems of languages such as Java, C++, and even Eiffel. (I consider Sather to be a nicer language than Eiffel.) The problem is that it needs to be brought up to production quality, in terms of tools and compiler availability. Volunteers? Cheers, Ken the Anonymous Coward

  296. Re:Sweeney right. TNT2 *smokes* any SGI card by Sarah_Serious_Bitch · · Score: 1

    An Octane/MXE card leaves a TNT for dead.

    I'd use IRIX 6.5, if I had the chance, every day over anything else. It scales very well, if done properly. An R12000 makes a PIII look like pretty pathetic. I think any rational person knows that.

    *puke* SGI and Sun will be in the business for a while yet. Pixar, for one. All those lovely Sun machines :o)

    SGI is dead? Sorry, their ccNUMA architecture will mean that they are very relevant and will outperform virtually anyone in supercomputing performance. Their SV1 series, well, second to none.

    http://www.sgi.com/octane/techspecs.html if you need some reminding of the octane performance. It walks all over any shitty peeeceeeeee.

    imho, SGI has done more for high end graphics than pretty much anyone else.

    --
    **This message was brought to you by the letters N, T and the number 666**
  297. Verifiability by vlax · · Score: 2

    If there is a concept which is unexpressible in another language, I would like to see it. Some things are not convienient or easy to translate, some can only be accurately conveyed with some longer explanation, but if an idea is unthinkable in another language - if in any way language (not culture) affects perception - this difference should be measurable.

    That makes it no longer philosophy. When the hypothesis has measurable effects, it's science.

    Berlin and Kay tried to resolve this problem in the 60's, using colour terms to see if people's perceptions of colour depended on major categories of colour in their language, and came to exactly the opposite conclusion.

    1. Re:Verifiability by fornix · · Score: 1
      you sure as shit can't use English to solve problems in quantum chromodynamics.

      Why not? There is a mapping that relates english words to the symbols and mathematical operations used to calculate quantum states. Just replace all the notation with the english equivolents and you're doing QCD in english. QED?

  298. Nonsense. Big languages are on the way out. by TheDullBlade · · Score: 4

    Few people use C++ for object oriented programming. Java was a bad idea that should be forgotten as quickly as possible. UnrealScript is a special purpose language for a game; in that cases you throw out the rulebook and make it efficient for the narrow task at hand.

    The ideas in C++ and Java have been around for a long time, they've just been hyped relatively recently. They are neither the present nor the future of programming languages; they are the past: the idea of the One True Language. The present is a babel of special purpose languages, as is the future. The only difference in the future is that they will be easier to tie together.

    Certainly there will be more attempts to build the One True Language, but they will fall as short of the goal as did Standard C++, Java, and Ada, and blend into the background noise.

    My personal favorite programming method is to generate C (well, C++ using struct methods to shorten function names) code with Perl (while it has other uses, it stands out for me as the best quick-hack text processing language out there). If you can't express it readably with the language you've got, express it in a mess generated with readable code in another language. Perl is handy because you can dump a whole other text file into it's midst with the $var = <<'END_OF_C'; syntax.

    You just use make to run the Perl script (I use the extension p2c) and redirect the output into a .c file.

    I don't stick to one language when another does the job better, a typical small "C" project of mine involves 3 or 4 languages, while a large project of mine might involve a dozen or more mini-languages I wrote to express a class of GUI widgets or text-parsing details. You might want to try it, I find it very efficient.

    --
    /.
  299. Re:tim sweeney is pretty ignorant. by Tom7 · · Score: 1


    >

    Nobody says implementing a generic list class or sorter in Java is difficult -- but implementing these in a strict language with parametric types (ie ML) is much, much, easier, and much, much more elegant (ie, no downcasting or runtime tag checks!). I suggest trying out an advanced language before making claims like this -- Tim is defininitely on the right track.

    - Tom 7

  300. Re: Lizard by Anonymous Coward · · Score: 0

    Taki is the super number one best player. She throw opponent out of arena many times. She is followed only by Sophia, who uses cheating sword move. Remove half of health, one hit. All others no good. -any cwrd

  301. Re:Gratis? by Krilomir · · Score: 1

    I thought 'gratis' was a part of the English language. I Danish (and other languages) it means "something you don't have to pay for". Well, and least it's what it means today. I'm not sure about what it's orignal meaning was. Perhaps you should borrow this word for the GNU.

  302. Re: Lizard by Anonymous Coward · · Score: 0

    Taki is my 2nd favorite. She used to be my 1st favorite until I truly learned Voldo.
    Sophia is a "good" fighter in a cheesy cheaty way.

    Taki is so darn fast that sometimes it feels cheaty with her too. She can get her attacks out faster than all the other characters.

  303. I am half serious by Corrinne+Yu · · Score: 1

    I am half serious. It is factual I have blocked all news. Reading chick troll news, and reading subsequent ignorant generalizations, get me riled up for no good end.

    I know as well as a lot of AC posters that my writing does not and cannot change the world to a more enlightened place. Maybe my code can, after I spend more time on it.

    If I keep getting indignant, I'd turn into a John Katz. :)


  304. Lisp is NOT interpreted by Xenophon+Fenderson, · · Score: 1

    Lisp has had a compiler since the MacLisp Days Of Yore(tm), circa the 1960s. Most modern Lisp implementations are purely compiled. That's right: "Just In Time" and "Incremental" compilation have been features in most Lisp products for at least the past twenty(!) years.


    Rev. Dr. Xenophon Fenderson, the Carbon(d)ated, KSC, DEATH, SubGenius, mhm21x16
    --
    I'm proud of my Northern Tibetian Heritage
  305. Re:well, you know what they say... by elegant7x · · Score: 1

    it was a joke

    Amber Yuan (--ell7)

    --

    "and dear god does this website suck now." -- CmdrTaco
  306. you think too much. by Anonymous Coward · · Score: 0
    no one can make you angry except yourself. if you choose to get angry because of what someone says, then you have made a choice.

    computers won't change the world into "a more enlightened place". they just homogonize culture and push down the masses, making them yet another tool for the man. games are the worst, because they fool the tools into thinking 'hey, i'm having fun', but in reality they just waste time. if you want to change the world, coding isn't the answer.

    join the peace corps and make a real difference.

    1. Re:you think too much. by Corrinne+Yu · · Score: 1

      Yes, I think too much.
      And au contraire.

      As I am coding and thinking through networking in a completely new light, I come to see the parallels of communication and mis-communication in RL, I come to finally understanding the intertwining relationships of "insightful", "perception", "classy" and "privacy." I come to understand God is a priori to infrastructure of culture and creation of man.

      *One* insight from this is when person A appears to be insightful or classy to group B, and when person C appears to be stupid or tacky to same group B.

      It is not necessarily that A is more insightful or classy.

      Such Group B reception (client deciphering of message packet) is merely indicating audience comfort, appropriateness of language, message, and context, and describing its comfort level with assignment of values *like* insightful, classy, or stupid, or tacky.

      Precisely because of this insight I have arrived, I recognize my recent understanding of network server client technology cum God as a priori is completely incorrect for audience / client receiver slashdot.

      It shall be incorrectly interpreted as techno-elitist, techno-babble, obscure erudition, soft-philosophy all at the same time. It shall be misinterpreted as hot air blowing, and not true contemplation, enlightenment, or technology breakthrough.

      No, what this audience, and what generic news readers want to read, is some easy to digest pop psych views on "I am an empowered woman and I can be anything I want. Girls rock and rulez! I can underwater basketweave and dance on my tiptoe at the same time. I have choices to wear red skirt with green stockings if I want to."

      Thereby I shared it with appropriate audience, which turns out only to be 1 human being in this whole world.

      There is too much I think, that I try to comprehend, that I gain to understand from coding, that shall not be sharable to most people in this world.

      No, not because I am smart.

      But because I tend to think and contemplate things of zero interest to anyone.

      Go flame at the utter pretentiousness of this post. :) It *is* the wrong audience, and I tried so hard not to mention a single thing (and I still haven't :) ) of my thoughts on this.






  307. Matlab Unreal by Amadawn · · Score: 1

    Tim, you seem to like adding arrays, so I think you should write his next engine in Matlab. Your program would be crossplatform then!

  308. Re: on perl by Anonymous Coward · · Score: 1

    It would be a huge mistake for developers to use perl for a large project. Why?

    Firstly, it has hideous syntax. Most perl programs are so difficult to read, you will see a comment for every line of code. It also was not even designed to be an OO language, it's OO aspects were hacked on, just as with Basic and C++. Perl has its uses. It can manipulate text very well and is good for short programs, but not software.


    As for languages that could be useful for what Tim describes, how about Eiffel? It is language very big on performance and robustness. There are also very good development environments for it and several very important projects have been comleted using it. Here is a link describing its many benefits and comparing it to C++:

    http://www.elj.com/eiffel/bm/

  309. Re:Orwell by ralphclark · · Score: 2

    I see no contradiction here.

    If you ask someone to classify a colour, there is very little abstract reasoning taking place! In any case, the reporting of which I speak was really non-verbal - the subjects in the Berlin-Kay "Basic Color Terms" experiment only had to put a dot in the middle of each perceived colour region and draw around its boundaries. Neither speaking, nor verbal nor abstract reasoning, was necessary. Are we talking about the same experiment or not?

    Consciousness is not what it thinks it is
    Thought exists only as an abstraction

  310. Really sad by Anonymous Coward · · Score: 0

    You know, this was one of the more interesting and thought-provoking essays I've read in a while. Even if you ignore his questionable assumptions, you're left with some interesting ideas about "what's coming next".

    It's a pity that that the replies I'm reading right now are mostly "My language rules. Your language sucks."

    Oh sorry, I just remembered that I was reading Slashdot. Carry on with your silly language flames....

  311. Re:Functional languages have been there, done that by cjon · · Score: 1
    I'd just like to note that Sweeney seems much less disdainful of functional langauages if you read his article on the unreal technology page where he specifically lauds Haskell.

    He does seem somewhat less than willing to look at the advantages of functional languages in the article (maybe he doesn't realize Haskell is a functional language?).

  312. Proper parametric polymorphism by C+A+S+S+I+E+L · · Score: 2
    There are perhaps a dozen languages using Milner-Hindley polymorphism (which is essentially what he has in mind - see this func tional programming intro) or later variants which get round some of the semantic drawbacks. I've implemented a few of them, so I'm pretty familiar with the typing semantics. Unfortunately, OO-style subclassing doesn't fit that well with type parameterisation - people (like Luca Cardelli ) have been attacking this problem for years.

    Oh: "Language of the Future"? This kind of typechecking dates back to the late 1970's.

    (Btw. does anyone else see "functional" above? Some problem with SlashDot's breaking of long URL's?)

  313. missing the point by 10am-bedtime · · Score: 1
    ummm, every "new" feature brought up has been included in some LISP or another for the last 30 years. and as for application domain: AI, game theory, etc -- where do you think that stuff came from? rather ironic that the author completely dismisses functional languages.

    as for practical aspects, game development requires performance, and now that you can compile LISP (and other languages), the only excuse for not using LISP is willful ignorance.

    an interesting thing to note is that circuits are exactly like functions, and many EDA tools are written using some LISP dialect. the future of programming involves conflating hardware and software design into "design", and realizing an implementation on the fly (what's the difference between a scripting language and reconfigurable hardware?).

    in conclusion, i think the author misses the point entirely.

    --thi

  314. I hate everyone on Slashdot other than you. by Anonymous Coward · · Score: 0

    You're okay.

    Everyone else needs work.

  315. Modular programming is best. by MrCynical · · Score: 1

    I find it amusing the fanaticism involved around programming languages. Usually I program in the "modular" form (non-OOP), but it seems the OOP crowd has somehow missed out. They seem to think you can't write efficient, easy to maintain systems without OOP to hold your hand through the process.

    I write complex billing systems for large corporations using COBOL and don't believe OOP would improve the process. The complexity involved with the OOP model outweighs the benefits, especially in regards to maintainability. Aren't subroutines that can be called from ANY module, essentially inheritance through modularity? In addition, this method doesn't have the code bloat associated with OOP. Why declare variables of type object (X), which could have 50 properties (subroutines), when all I need to reference are 10 of them? Simply call the 10 subroutines directly, from anywhere. The way I see it, OOP came about to try to force weak programmers to follow a structured approach. Which admittedly, the modular method is weak at enforcing. However, you can write some real crap using either.

    I work with a Visual Basic group that interfaces with our system to work service orders from the service technician's trucks. They use "modern" tools and we use "dinosaur" mainframe tools. However, we still manage to finish before them most of the time, with fewer errors. Curious.

    People give COBOL a bad rap, but for what it is used for, it would be hard to replace. I pity the company that embraced C/C++ as their batch processing language. COBOL is better suited for those tasks. It is also easier to maintain and more self-documenting than any other language.

    My personal favorite language is Pascal or Object Pascal under Delphi. I would use it for any task. If you haven't already tried it, give it a look. It smokes C/C++ for readability and runs just as fast. Delphi also has all those nice OOP characteristics people like these days.

    --Scott

    --
    --Scott 8-}
  316. True Enough. by In-Doge · · Score: 1

    I've always believed that video games are the best programs that you can use to test the performance boundaries of your PC. Where the average spreadsheet application or word processor would run on almost any old system, it usually takes the top of the line powerhouse to run the newer, cutting-edge games of the time.

    It's all about pushing the envelope. *grin*

  317. truth is, sweeney would probably agree with you by delmoi · · Score: 1

    The man is an MS whore, And I'm not just trolling here. He's constantly saying that DirectX is easier then OpenGL. Why? because Microsoft helped him port Unreal (written in Glide) and they had to pay people to rewrite the Glide code to GL. Sweeny didn't do any of the work himself.

    Even more surprising are his opinions on the Microsoft Case. He has actually said "If Microsoft hadn't been allowed to integrate TCP/IP and Internet Explorer, there would be no Unreal Tournament". I understand the TCP/IP, but I don't see what having an embedded browser has to do with a game... Could be that Sweeney's just on crack though...

    [ c h a d o k e r e ]

    --

    ReadThe ReflectionEngine, a cyberpunk style n
  318. well, you know what they say... by elegant7x · · Score: 1

    strong typing is for those with weak minds...

    Amber Yuan (--ell7)

    --

    "and dear god does this website suck now." -- CmdrTaco
    1. Re:well, you know what they say... by Tom7 · · Score: 1


      Well, I'm not sure who says that, or why, but it's certainly not true. In fact, "strong" (I assume you mean "static") typing is about the only thing which programming language researchers study these days. Why? Static type systems are more flexible and more interesting than dynamic ones, and allow for more advanced compiler techniques.

      I'd be happy to try to educate (argue with) you, but since your quip holds nothing of substance, I don't know where to begin.

  319. Re:Java Dosn't suck by barryp · · Score: 1

    Been there, done that..check it out at:

    http://www.planetquake.com/q2java

    It's plenty fast, and does a whole slew of things that would be a real PITA to try and code in C (internationalization, security, dynamic loading of gamecode - so you can switch mods on-the-fly, and lots more).

  320. Keys to the future? by Anonymous Coward · · Score: 0

    We game developers hold the keys to the future of hardware and software technology... Games were responsible for creating the market which enabled 3dfx and NVidia to mass-product $100 graphics chips which outperform $100,000 Silicon Graphics workstations. How is creating games that require better hardware influencing anything in a good way? Should I be thanking bloated software makers for the Athlon?

  321. Re:1st! by Sarah_Serious_Bitch · · Score: 1

    My karma is already down to -4.

    I've actually got nothing better to do right now. Work is sloooooooooooow.

    --
    **This message was brought to you by the letters N, T and the number 666**
  322. loopback adapter by Anonymous Coward · · Score: 0
    ...that goes for the sender as well. anger breeds more anger, unless someone puts a stop to it.

    packets may fly where they may, but why not just drop the runts before they enter the stack?

    1. Re:loopback adapter by Corrinne+Yu · · Score: 1

      Loopback: yes, this is what I understood about prejudice.

      Prejudice begets greater prejudice. That is the true evil of prejudice.

      Not the whole black man makes less per white man dollar thing.

      When one man is prejudiced against, he spreads and propagates the hatred, anger ... yes, the "close-minded lack of comprehension" onto another.

      This is the greatest and truest reasons why prejudice in all named and unnamed forms should be stopped.

      In fact prejudice without a name (i.e., misconcpetions of Free-BSD) are even more harmful than widely known prejudice (like racial).

      Without a name, it creeps surreptitiously like a meme into a mind, and quietly spreads itself like a virus.

  323. Thanks .. by BeanThere · · Score: 1

    Makes more sense now .. sounds a bit like Smalltalk, my experience with which was that it was very slow.

    I can't imagine that sort of thing not having so much overhead that you can't really write a game with it. But I guess part of his point is that hardware is getting faster and faster, and pretty soon I suppose game programmers (and in fact many other programmers) will want to use something like that.

  324. prejudiced against bigotry by Anonymous Coward · · Score: 0

    can you tell me what the difference is between those who are prejudiced against what you believe, and your own prejudice against those you don't?

  325. Re:eiffel is proprietary, C and C++ are open. simp by Celfi · · Score: 1

    ROTFL!

  326. difference by Corrinne+Yu · · Score: 1

    Easy.

    The difference is that (despite the huge waste of my time :) because to high noise to signal ratio) I continually give devil's advocate benefit of doubt.

    Though I do have to admit to my human frailty of "preferring society and companionship of intelligent men" by "my highly personal *prejudiced* standard of intelligence and insight."

    (i.e., One man has full right to prefer bimbo over an ugly woman. I have full right to prefer social company of intelligent men by my narrow definitions. :) )

    I seldom assumes any flaming *idiot* as incapable of intelligent thought, just misguided and closing his mind to greater understanding and enjoyment.


  327. Re:One meta-nit to pick by orabidoo · · Score: 1

    oh yeah, programming languages is a S-W field if there ever was one. hey, to me, everything's starting to look like a hashref :)

  328. OO's deep dependencies and alternatives by porttikivi · · Score: 1

    Corinne's post explained one of the reasons that I have always disliked inheritance, and preferred flat C like modularization.

    The other reason is that somehow OO concepts have remained too fancy to use in a constrained way, thus being a dangerous source of ill-handled unnecessary complexity in practice.

    Here I'd like to point out my favourite environment: Bell Labs Plan 9 / Inferno. I think it was mostly the main architect of the system Rob Pike, who kept to the design principle, that OO the traditional way was mostly harmful.

    Pike and friends made a radicallly simple design choice. The Limbo programming language used in Inferno did not have inheritance. The idea was to keep fine grained module dependencies within one conceptual framework: exported functions, types, ADT's and variables, much like in Modula-2 originally.

    But they recognized the need to modify existing funtionality of larger scale functionality without changing existing code statically. So they invented this ingenious mechanism for OS level objects and inheritance: synthetic or procedural file hierarchies, per process name spaces and stacking of these objects to inherit each other in a cotrolled way.

    So in Inferno and Plan 9 you can program your objects in any language that you want, be it OO or not, and then "stack" them dynamically, even distributed on the net, producing exactly the effect of inheritance.

    Inheritance is a great mechanism when used with care and constrain, preferably between a few easily manageable high level concepts. It is bad, if it is used as an ubiquitous low level programming concept cluttering all your code with strange propagating dependencies.

    --
    Anssi Porttikivi / app@iki.fi
  329. OT: Full Rights by Anonymous Coward · · Score: 0

    Yes, but does one have full right to prefer bimbo over "ugly woman" in a business sense when determining who should be hired? I don't know.

    I guess there is some room for the person/company's views on who would be the best fit for the position. If it was a position where appearances had an effect (ie: ratings/revenue) then good-looking/ugly would be an acceptable criteria, even if it is all in the eye of the beholder.
    Same goes for intellectual criteria. Should a company be allowed to discriminate based on their "views" of intelligence? Intelligence is really not as easily defined as a lot of people seem to believe. Intelligence is fuzzy at best. Just like beauty.

    Personal life is a different matter. People generally tend to use prejudice as a negative term for personal preferences that they do not agree with. Which sounds better?
    A) I am prejudiced.
    B) I have personal preferences./I have standards.

    A significant part of the population (dare I say most?) will not admit to A but admit B. Those who openly admit to A get set upon as if they were a guest on Jerry Springer.

    Of course, I'm probably preaching to the converted here. :)

    AC

  330. email by Corrinne+Yu · · Score: 1

    eh ... that's why I posted the question ... you put up your web site, but not your email. :)

    I did your Java VM project on your web site.

  331. Re:I've been waiting all day for this to get poste by dekko · · Score: 1

    > You would never write a game engine in Perl or Python.

    Well, I can vouch that there is actually a major project in development that is using Python for all of its game logic. Not for the graphics engine, networking, and other performace-critical subsystems, of course, but the *game* itself is coded in Python.

    Unfortunately I'm under NDA with said company, and I'm not 100% certain that they would appreciate me revealing details. Just trust me ;-), it's a company you are familiar with and a title you've almost certainly heard of.

    My understanding is that they are quite happy with Python. It's elegant and simple enough for designers to use, its performance is "good enough," and it's easy to integrate with C/C++. Custom scripting languages are always incredibly labor intensive and rarely live up to expectations, Perl is unreadable gobbledygook, C and C++ are too low-level and too powerful (aka dangerous). Java would probably be a close contender, but still I'd say Python is easier to learn and use. I don't know anything about Eiffel nor whether they considered it as an alternative.

    While working on graphics engines for other projects, I've used Python to code testbeds, benchmarks, and simulations. The speed of the compiled bytecode is more than adequate for such high-level control.

  332. Show me the proof by Anonymous Coward · · Score: 0

    why would someone choose your position over another one? is there some logical argument that I could follow that would show me that your position is superior? what makes "the social company of intelligent men" better than running in the company of wolves, are they the same thing, or are you presenting your subjective tastes as flamebait?

  333. Re:Orwell by BJH · · Score: 1


    Um... you're doing it again. You state:

    Neither speaking, nor verbal nor abstract reasoning, was necessary.

    Obviously, by reporting the color (even in the form used by B-K), the respondents have to classify it in some way. That is thought, and at least in some aspects abstract (whatever definition you want to give that term). How can it not be? There's no direct link between your retinas and your writing hand that allows it to do something like what was required in the B-K tests, without first undergoing some form of reasoning.

    The B-K tests reached the conclusion that there's a gradual development from a two-color system to a three-color, etc., and that that development is generally the same across all cultures - but it doesn't mean that there's no thought involved in the process. It just means that the thought processes reached similar conclusions in each case.

  334. Almost all apps are written in either C++ or VB... by Anonymous Coward · · Score: 0

    Sorry, but it's true - sad as it may be. Remember 99% of computer users are not on Linux

  335. std::valarray ? by Anonymous Coward · · Score: 0

    std::valarray C,A,B; C = A+B; or am I whacked outa my mind?

    1. Re:std::valarray ? by John+Allsup · · Score: 1

      For a more complicated example then, let A,B,C be large (say 10000*10000) sparse matrices and work out det(A,B,C). Letting decisions as to how to implement this be left to the compiler and library authors is a good idea. (the standard library won't know the various reduction rules, or even that det(AB)=det(A)det(B) for square matrices...)
      John

      --
      John_Chalisque
  336. "Abuse" game used lisp? But he misses the point. by Anonymous Coward · · Score: 0

    I thought I saw lisp being used somewhere in that game..

    Anyway, abstraction for the sake of abstraction is missing the main point.

    What most programmers do is make decisions on what decisions the computer is going to make.

    If you want really want things easier, then the idea is to reduce the number of trivial or rare decisions encountered, and make it "obvious", this is a tall task as there are so many situations and they keep changing.

    But in a way a programming language is a type of "decision decompresser". You change one input bit and lots of different output bits get changed depending on your input bits.

    I doubt there will ever be a "best decompresser", it's just like compression software.

    Dreaming of a do everything command is not very useful. Sure you could have compression software where 1 = complete works of Shakespeare and 0 = "Hello World".

    What you could aim for is the 'deflate/zip' of the programming language world. e.g. zip is very good for most text documents, executables, clip art. And not too terrible for photos ;). Of course if you go for lossy programming you could get better 'compression' but lose substantial control.

    There will always be a degree of work as long as you make decisions.

    Cheerio,
    Link.

  337. That's a good point by Anonymous Coward · · Score: 0

    As much as I love my well-worn copy of "The C Programming Language", I'm not sure that I could write a compiler based on it.

    The real question is not how many pages the K&R book has, but how many pages are in the ANSI C standard. I suspect that it's quite a bit longer.

  338. "The Language Of The Future" by pb · · Score: 1

    This was a good technical article with some interesting ideas, and I'm proud to see it on Slashdot.

    I think the reason that functional languages are left out of the evaluation is that they are "research", and as such tend to have more of the features that will be in "The Language Of The Future", which will be whatever is worthy to finally replace C/C++ as the development language of the future, and do a good job.

    I've been learning Scheme lately, and the design of the language encourages a lot of flexibility and reuse. Since the data types are numbers and symbols (which are atoms), and lists, (and S-expressions and functions...) all you can really do is recursive list manipulation. But that turns out to be a lot. (and you can build code from data, too) Some of these concepts will take off and be successful, and others won't, but it will be interesting to see what the future holds...
    ---
    pb Reply or e-mail; don't vaguely moderate.

    --
    pb Reply or e-mail; don't vaguely moderate.
  339. Concision isn't the issue. by vlax · · Score: 4

    That 5% was a concession to the handful of linguists (mostly anthropologists) who still take some portion of Sapir-Whorf seriously. In some very weakened form, the idea is still possible, but the strongest form is either unverifiable (and thus has no place in linguistic science) or has already been falsified (as the Berlin and Kay studies, among others, ultimately showed.)

    A unilingual Chinese speaker is capable of understanding the notion of 'moral hazard' and can use it as well as an anglophone. Speaking Chinese is not a barrier to comprehension.

    Should a Chinese economist wish to discuss the problem of 'moral hazards' in a paper in Chinese, this person will quickly find or devise a term for it and continue without difficulty, at most having to explain the notion at the beginning of the paper. The same is true of most anglophones, the majority of whom probably do not understand the term moral hazard intuitively (at least in the sense that I understand it - primarily as a term in economics) and would require that same explanation.

    If this hypothetical economist wishes to show off his English, or simply because any short Chinese term he might use for 'moral hazard' implies too many unwanted connotations, he may simply plop the English term 'moral hazard' into the language. That's how 'deja vu' started. There is no reason why 'deja vu' can't be said using other terms in English - the concept no doubt existed for anglophones before the French term became current.

    1. Re:Concision isn't the issue. by Anonymous Coward · · Score: 0

      Is this so astonishing? It's very similar to the western notion of 'ratting' on your mates...

      Though, maybe not.
      In Ireland certainly, there is a special stigma conferred to 'informers', the idea that it isn't really the done thing to shop your fellow man to the police (depends on the severity of the crime, of course). I am told though that in England, people will fall over themselves to report you to the police for any transgression.

      (Hmm, just read over my post and realised it is riddled with vernacular. Never mind, illustrates the point of this thread nicely!)

  340. Java Dosn't suck by delmoi · · Score: 1

    You stated in your post that you felt that java was good 'in theory' but that for practical purposes it was simply to slow. While this was true when java first came out, the speed has been icreasing quite a bit. There are other things that make java a bit slow, but I think realisticaly It could be used in a game. Carmak was even considering using it for plug-in moduals, but decided to implement his own dynamicaly compiled language (based on ansi-c) beacuse he wanted more control of the VM.

    [ c h a d o k e r e ]

    --

    ReadThe ReflectionEngine, a cyberpunk style n
  341. Functional languages have been there, done that by Morgaine · · Score: 2

    I think Tim Sweeney is not being entirely genuine and even-handed in his treatment of what has gone before and what needs to be newly invented. Early on he mentions functional languages, naming LISP, Haskell and Miranda explicitly, but without any useful examination he dismisses them as irrelevant ("theory", instead of "practice"). Yet then, in the remainder of his essay, he effectively makes a very sound case for bringing in precisely those high-powered features that make functional languages as powerful as they indeed are.

    LISP users have been doing all the clever things he mentions not just for years but for *decades*. To a significant extent, more modern functional languages (LISP is partly functional, partly imperative, and partly various other flavours) effectively just put syntactic sugar around LISP concepts to make functional programming more palatable to the parenthesis-challanged.

    Continual development in programming languages is not only useful but essential for progress, but to dismiss the work carried out by a whole genre of computing isn't particularly helpful.

    --
    "The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
  342. Whorf Asserted! by HiThere · · Score: 1

    If they don't properly understand the --- I'm going to upgrade it to a theory --- then that means that they don't understand it, not that it's wrong.

    Human thought happens in various modes. Some of it is visual modeling, some of it is evaluations along the pleasure-pain axis, some of it is kinetic/goinometric simulations (useful esp. in judging, e.g., how heavy something is). And some of it is formal reasoning/verbal communication. This last form is highly restricted by the language(s) of the person who is thinking. The prior modes of thought are not so restricted. All of the thinking can be used in analogical modes, which basically means using one mode of thought to draw links between sections of models in another mode of thought.

    But each mode of thought has some special area in which it is supreme. The mode of formal reasoning/verbal communication has it's areas of unique applicability, and adjacent (note-a spatial / visual metaphor) areas of thought in which it is better than any of the other modes. These areas are profoundly influenced by the language(s) that are spoken/understood. And in these areas the Whorf Theory is valid.

    N.B.: This doesn't mean that there is no way around the obstruction. It merely means that such thoughts take longer to form, and so will be thought less often. And communicated less often. And will not be available in emergency situations (i.e., under time pressure).

    This is perfectly analogous to programming languages. Different languages are adapted to different tasks. Practically all of them are complete languages, but one would, perhaps, not write a compiler in Visual Basic. One would, perhaps, prefer Fortran for Numerical Analysis (part of that is history...it's already been done, so all I need to do is link to previously written code, and then slap in a few extra features). One might prefer to write a GUI interface in TCL or Java rather than in assembler. etc.

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
  343. Re:One meta-nit to pick by chadmulligan · · Score: 2
    It's called the Sapir-Whorf hypothesis (although there's some debate as to whether either Sapir of Whorf had anything to do about it) and is not widely held to be true among linguists.

    In its original, somewhat radical form, Sapir-Whorf is obsolete, but from my linguist friends (I'm only an amateur, myself) I hear a weakened concept of it survives. I speak four Indo-European languages (and understand a few more), and there are many concepts which aren't easily translatable from one to the other; or at least can't be expressed without a lengthy explanation. So any given language doesn't necessarily limit what and how you can think, but it channels what you try to communicate into its own well-worn grooves.

    Regarding programming languages, I'd say Sapir-Whorf is applicable in many circumstances. Once you learn, say, C++ templates, you can use them to solve certain classes of problems very easily, and this leads you to visualize a complex system in a different way. For several years I programmed a Burroughs 6700-series mainframe in a modified Algol, which had very powerful string find, search and replace commands - which actually mapped directly to the hardware - and this actually led me to work in a wholly different way from the way I did things before.

    So a programming language channels your thinking and often even leads to the well-known syndrome of "To he who owns a hammer, the whole world looks like a nail". Yes, you could write a compiler in Object COBOL (known to its victims as "POST INCREMENT COBOL BY ONE"), but please don't ask me to...

    If the next generation of languages allows me to abstract these differences and use one language with different toolkits (in principle I suppose this is possible with today's languages), I'm all for it.

    Historically all such attempts have either failed outright, or not been popular - witness the Ada language, which tried to be all things to all people. As long as we're limited to writing programs, or parts of programs, in text form I doubt we're going to see this. And 100% visual languages (like ProGraph) won't see wide acceptance until we get better gestural input devices.

  344. moderate that up by ArchieBunker · · Score: 1

    most consumer video cards are designed to get the max fps in games, lets see that tnt2 against a permedia3 card in 3dsmax. Of course quake will run slower on an expensive SGI, they didn't design an expensive computer for games, they designed it to do real work. 3d modelling, realtime simulations, not q3.

    --
    Only the State obtains its revenue by coercion. - Murray Rothbard
  345. Performance vs Elegance by Stickerboy · · Score: 3
    Something Tim Sweeney seems to have left out of the discussion of next-generation language concepts is real-world performance concerns. He mentions it briefly: "C++ failed to deliver binary platform-independence, and Java failed to deliver high performance."

    Does he not see that binary platform-independence in Java led directly to its performance problems? Even with hacks like JIT compilers, performance of bytecode lags well behind binaries compiled from Java. This is just one of many examples that illustrates a common principle: at every level of language advancement, there's going to be some performance tradeoff.

    The best example of how this affects programmers is the Quake 1 engine. Released before mainstream hardware acceleration, the most processor-intensive routines in the engine are written in assembler, and just about every possible performance/elegance conflict is resolved with performance in mind. The result? We all played Quake with 35 fps on a Pentium 166 in 320x200 software mode. In the newly released source code, rewriting the assembler in C drops performance by close to half. With today's machines its not a problem, but back then I don't think anyone would have enjoyed playing Quake too much with sub-20 fps.

    But then he goes on to lay out what he sees as the major shortcomings of current generation languages, which really comes down to:
    • The distinction between primitives and objects (especially the lack of easy manipulation of objects a la primitives), and
    • The lack of uber-classes.
    Let's go back to the article: "Stop for a second and ponder the power of such a concept -- with about four lines of code, you've sub-classed a 150,000 line game engine and added a new feature that will propagate to several hundred classes in that framework. Besides that, it just seems beautifully high-level to be able to express such a concept with a single statement "class DukeNukemEngine extends UnrealEngine"."

    I wince just thinking about the compile times that programs from such a language would take. Throw in a requirement for the language to be binary platform-independent, and who needs Microsoft to spur hardware upgrades?

    Tim Sweeney identifies social inertia as the main cause of reluctance to adopt next-generation languages, but a concern with just as much importance in developers' minds is performance, like the development of Quake 1 shows. Until near-infinite processing power and/or bandwidth is accessible to consumers, it will continue to hold back advancement in such a manner. What else can I say? Tim Sweeney is a man ahead of the times.
    --
    Light a fire for a man and he'll be warm for a day. Light a man on fire and he'll be warm for the rest of his life.
  346. Offtopic about First Posters by TheWall · · Score: 1

    Why do people log in and First Post rather than AC the first post? No its not to waste moderators points, I can care less what the moderators do with them. Ever since the karma thing I've had to wade through the muck anyways. I used to browse -1 but sometimes I'd browse normal with a highlight threshold of +2, now with karma many people are +2 for no reason, causing their message to slow down my download time and making me click links to hear someone do a me too.

    Anywho I'm babbling here. To the point, why log in to first post? Anyone can claim to be an AC...but there is only one TheWall (or melvin, or dammitjim, Meept!, etc.). What claim to fame do you have if your name isnt on it?

  347. etc. by Corrinne+Yu · · Score: 2

    // 3DR

    The following is personal standpoint of course, and not representative of my current coding game project, or my company.

    1. If you look deeper (I did), I start to think of George / 3DR as stealth feminists. :)

    Of course, if I actually say that to George, I'd pissed him off big time. :)

    They hired a "human coder" only because they need him/her. They need his/her code.

    There are many companies that: "Hey, we should hire a woman to get more press. To improve our image."

    But only 3DR: "We should hire this HUMAN because he/she is one of the best / most knowledgeable."

    2. Duke

    I like Duke for a long time before people start to tell me it is sexist.

    Enjoying pornography, puns, bad jokes, is not demeaning to women.

    Unless I think of myself as a pixlelated sprite stripper in the game.

    Unless I think Duke represents (or is meant to) in any way the real world (then I may as well believe in Everquest and we are all elves and dwarfs).

    Then, maybe I'd have some problems.

    There is a "huge divide" of 1 make-belief world I (and most sane players) understand to be make-belief.

    And sincere Katz-like genuinely concerned people believing seriously in "the reality that men and women are different."

    Katz (sorry Katz) wasn't making a joke when he writes all those articles. He really believes in them.

    Being a HUMAN who plays and enjoys games for many years, I have a very solid grasp on:
    a. game -> fantasy
    b. real world

    When I choose to be Voldo in Soul Caliber, and not Xiao-Yu. I think to myself:

    Voldo have a lot of sneaky feights that I can confuse a lot of players so that they don't even know where I am coming

    not

    I think of myself more like a male homosexual perverted Italian sex slave masochist, than a Chinese female acrobat

    Note to newbie gamers: If you start applying real life prejudices to gaming, you are going to suck. It is like the movie "Matrix." Play with the "rules of the games", not your perception of reality.

    You are welcome to email me off-line for further discussion on the above.

    // "finally" etc.

    It appears we are on the same page.

    The issues are a lot less across gender divides.

    It is a lot more on the true meaning of prejudices. Prejudices of all kinds.

    Over-generalizations of a lot of human beings (male and female) that people don't know about.

    What I battle is true prejudice, and I don't care if I am doing it for a man, or for a woman (or for myself, or my enemy, or for my friend).

    Whenever I see someone makes 1 erroneous generalization (thus prejudice in the real meaning of the word), I have a nasty irrepresible need to right a wrong. :) This gets me in unnecessary trouble.

    My view is prejudice, and over-generalization is not only annoying or unfair.

    It perpetuates ignorance. It stifles progress to greater understanding or knowledge.

    The particular Carmack bashing human should for example cease to gain greater insight in Quake rasterization implementation. The ones who see woman first and knowledge source second will cease learn more in math or code.

    So thus I act locally to battle every minute pointless instance of true prejudice, of over-generalization.

    You had heard of the movement of "random act of kindess"?

    It would be nice if there is a:
    1. "random act of enlightenment"
    2. "random act against misinformation / over-generalization / true prejudice"




  348. Columbine by Corrinne+Yu · · Score: 1

    Adden:

    If one believes

    lack of a female virtual game character in one game causes or deepens sexism

    one game's inclusion of a virtual female game character improves one's feminism

    then one may as well believe Doom causes Columbine.


  349. Re:I've been waiting all day for this to get poste by Edward+Kmett · · Score: 1
    Yes, it is. My favorite pattern for implementing the 'virtual classes' concept follows. (Then again because it relies on langua ge specific features like templates, isn't it really an idiom? oh well, one of these days I'll get anal retentively correct in my pattern-speak)

    class Renderer {
    public:
    virtual Texture * loadTexture(const char * name, blah blah blah);
    };

    class Texture {
    public:
    virtual ~Texture() {}
    virtual void makeCurrent()=0;
    };
    and implementing the linking back behind the scenes for each one, or getting fancy and making a couple of templates used to bui ld boilerplate links. (I seem to recall that being used in the FSM example in C++ Gems) I.E. if you're too lazy to write linkin g code for each new implementation (not to mention want to avoid repetitive strain injury and bugs from duplicated code you can then go ahead and write a couple of templates like

    template <class Baseclass, class Renderer> class TextureTemplate : public Baseclass {
    private:
    Renderer * m_renderer;
    public:
    TextureTemplate(Renderer & rend, const char * name, blah blah blah) : m_ren derer(&rend), Baseclass(name,blah,blah,blah) { }
    ~TextureTemplate() {
    m_renderer->unr egisterTexture(this);
    }
    void makeCurrent() {
    m_renderer->mak eCurrent(this);
    }
    };

    template <class Baseclass, class TextureBase> class RendererTemplate : public Baseclass {
    public:
    typedef TextureTemplate<TextureBase> MyTexture;
    Texture * loadTexture(const char * name, blah blah blah) {
    return new MyTexture(this,name, blah blah blah)
    }
    };
    then for each class you want to use the public interface for and templated implementations of the behind the scenes ties you ca n do something like

    class GLRendererImpl : public Renderer {
    public: void makeCurrent(GLTextureImpl & texture) {
    ... do gl texture stuff here ...
    }
    };

    class GLTextureImpl : public Texture {
    public: GLTextureImpl(const char * name, blah blah blah) {
    load up texture using opengl...
    }
    virtual ~GLTextureImpl() {}
    };
    typedef TextureTemplate<GLTextureImpl> GLTexture;
    typedef RendererTemplate<GLRendererImpl> GLRenderer;

    the templates are initially a fair chunk of work, and the pattern density of the above code is pretty dense, but the approach c an be amazingly versatile and cuts down considerably on duplicated code, note that the derived classes only have to focus on their specific implementation, the generalities are taken care of by the template implementations and no typecasting is required anywhere in the system, so there is no worries about accidentally passing say a Directx7Texture object to the GlideRenderer.

    The gains don't really start to show until you've got 5-6 implementations in place however.

    All of the above code has been slapped together off the cuff and is probably laden with errors and formatting problems from try ing to type it into a slashdot comment box so try to follow my intent vs. my syntax.

    P.S. Formatting this was a BITCH, is there a reason why Slashdot doesn't allow the tag? I.E. kept munging my &amp; type chars back into real chars so i had to switch browsers, paste back and forth to vi to regexp things into html-munged form. Hrmmf.

    --
    Sanity is a sandbox. I prefer the swings.
  350. Re:I've been waiting all day for this to get poste by Edward+Kmett · · Score: 1
    In my haste i screwed up the typedefs they should be

    typedef TextureTemplate<GLTextureImpl, GLRendererImpl> GLTexture;
    typedef RendererTemplate<GLRendererImpl, GLTextureImpl> GLRenderer;
    thats why i get for writing this stuff off the top of my head.

    --
    Sanity is a sandbox. I prefer the swings.
  351. No, but the Geforce is getting closer by roystgnr · · Score: 3

    Take a look at the GeForce - it does (3) and (4) just like those SGI workstations, and on a $200 (or $300 depending on things like RAM bandwidth) PC 3D card. No, it's not up to $100k SGI workstation standards, but it's getting closer. Nvidia's Quadro (which isn't much more than a souped-up Geforce) isn't a gamer's card, and SGI is working with Nvidia on future PC accelerators IIRC. Take a look at Anandtech's Quadro DDR review and see what you can get on a PC for under $1000.

  352. Orwell by vlax · · Score: 2

    I like reading Orwell - certainly I don't mean to dis the guy - but with regard to newspeak, he was just dead wrong. Since he was writing fiction, and since most of modern linguistics didn't exist at the time (and even if it had he probably wouldn't have known anything about it), I don't take it as a big deal.

    I direct you to the Berlin and Kay study of colours, the perfect, near completely culture-neutral, test of this hypothesis. Finding a relevant URL will take some time, and I have code to write, so I assure you if you look at their papers for 1969 you will find the one in question.

  353. GUI development == C++? by delmoi · · Score: 1

    For example, some GUI's were developed in C, even though I call them an advancement of C++. I'm just being practical here.

    That's an odd statement. The first commercial GUI, the Mac OS was written in Pascal, as was windows (initially, some win32 functions even use the PASCAL calling thing, IIRC). The Xerox parc stuff was done in Smalltalk

    OOP gives us an easy way to deal with GUIs, but They are not dependant in any way on it.

    [ c h a d o k e r e ]

    --

    ReadThe ReflectionEngine, a cyberpunk style n
  354. Abstraction is NOT feature/code bloat by Anonymous Coward · · Score: 1

    Word is a pig because of feature and code bloat, not becase abstraction is slow or bloated.

    Abstraction will always be a little slower (and that amount may vary tremendously based upon your circumstances).

    However, processor speeds double every 18 months. Programmer productivity MAY have doubled in the last 25 YEARS.

    Conclusion? Abstraction makes things easier for the programmer, so the programmer can work better magic. YAY ABSTRACT!!!!

    JAAC
    Just Another Anonymous Coward

  355. Namco by Corrinne+Yu · · Score: 1

    Looks like I amalgamated 2 cool Namco games into one. Voldo is in Soul Caliber. Xiao-Yu is in Tekken.

    So the analogy would be I'd rather play Voldo than Ivy (who looks cool :) ) cuz Ivy's "mid" range attacks suck. It is distance attack. Or close attack. Then there are these huge gaps in distances where she has no fighting wherewithal.

    Voldo can slink into and out of a lot of situations.

  356. First Post on APL by Anonymous Coward · · Score: 0

    Honestly, with all the obscure languages fliting about the place am I really the only old timer here who simply adores APL?

    Using the specific example of A+B APL has to be the clear winner because it's the exact kind of problem that it's optimizied for.

    Why would I want to use anything else?

  357. contrived by Corrinne+Yu · · Score: 1

    Going way OT :)

    That's why the 1st module I ever write and put in a new project is memory and heap allocators, full of overrun magic numbers, underrun magic numbers, freed data tokens.

    You do some memset like this ...
    big giant assertions go boom. :)






  358. Re:I've been waiting all day for this to get poste by cjon · · Score: 1
    Of course, none of the ideas are Sweeney's as he makes clear on the Unreal Technology page in his update called Engine R&D Notes posted on Nov 30, 1999, at 3:20 AM.

    The closest thing to what is being described in terms of a non-experimental/non-academic language seems to me to be either Haskell or BETA. Haskell is free and available for Linux, Beta is also free and comes with an extensive development environment (called Mjølner) and it is also available for Linux (yay!). Both of these langauges are very interesting.

    Most of the other systems that implement new ideas are experimental and not available AFAIK, but papers describing them are available.

    Some good papers to look at are:

    • Kim Bruce's Papers: pretty much everything he lists under research is related to this thread.
    • Luca Cardelli's Papers: most of the stuff that relates is under Types and Semantics, but the other catagories have worthwhile stuff too.
    • Phillip Wadler has so many fascinating papers on so many interesting topics that I'm just gonna link to his main page... what else can I do?

    These are good starting points. For more places to look see my list of language bookmarks , especially under people & projects (or specific languages).

  359. Lisp? Not used for games and applications? by Nill · · Score: 1

    Excuse me... I seem to think that Crash Bandicoot is a game.... and that Autocad is an application... I must be mistaken... Sorry for my stupidity.