The design seems similar to the (sadly no longer available) Trackman Marble FX from logitech. It's a trackball with an oversized ball and ergonomically positions buttons. Very comfortable. I'm hoarding three of them and will continue to use them with all my future computers. Fortunately, since the motion sensor is optical, it's very easy to clean, and so I expect mine to last approximately forever
For a decidedly non-Disney (it was one of a very
few number of Studio Ghibli movies that Disney declined to distribute worldwide), check out
Grave of the Fireflies. One word of warning, however: don't watch this movie if you're feeling even slightly depressed.
Girls do not like doing anything that involves concentrating on one single thing for long periods. They like to switch from one thought to another, and keep many balls up in the air at one time.
The fact is, the nature of the subject, and anything else requiring in-depth knowledge, will not appeal to most girls, just like armed robbery doesn't appeal to most girls.
That's bollocks.
Wander by your friendly neighborhood math department some time and take a look at the
male/female ratio there. At least at the schools
that I've been to, the math departments seem to
sport something like a 60%:40% male:female ratio.
Everything else really doesn't have the value-add
to make it worth driving out to a mega-plex to be
surrounded by the same people you see on Cops
and Girls Gone Wild.
...a handful of scientists and
antisocial grad students...
I find it interesting that people on/. seem to think that grad students
are somehow less sociable than the average computer
geek.
Actually, as I look around at my particular
institution, I would have to say, that on the whole, of my friends who have achieved a BS in
Comp Sci, those who've gone on to graduate
school are no more antisocial than the rest.
In fact, a lot of the grad students I know
are far more normal than the average
undergrad computer geek.
I think people overlook one of the keys
to successful academic career: the
importance of being able to
communicate your work effectively to others.
Being good at coding, maths, etc is also
necessery, but can almost be secondary.
If noone understands your work, it doesn't
matter how good it is. So if you're
antisocial, you learn to deal with it and
work on inter-personal skills. Otherwise
you subvert your own work.
If you are feeling masochistic, you can try
David Madore's Unlambda
programming language.
It is built around (in its basic form) the S and K
combinators. Of course for all the Schemers out
there, David is nice enough to include a form of
call/cc for maximum obscurity.
This is by far my most favorite of the painful
programming languages.
You should check out OCaml. It is a modern functional programming language. It has parametric polymorphism, as well as subtyping polymorphism and dynamic dispatch, is garbage collected, features an advanced module system to
help you structure code, and ports are available for all the usual
platforms.
In addition, OCaml interfaces well with Gtk (including using Glade to design GUIs),
has database libraries, as well as all many other
libraries that one would expect.
OCaml can be either compiled to a portable bytecode, or directly to machine code. It compiles to very efficient code, and it is popular
folklore that it can easily match C in terms of
execution speed in many circumstances.
The language is at a good point in its evolution
right now to be used in commercial circumstances.
It has been around long enough that it is well-understood and a lot of useful libraries are available, and its compiler is very robust, but at the same time it is not so old that a lot of the really new and interesting developments in language design haven't made their way into it. Although I prefer Haskell for small one-off programs, I would use OCaml for large projects.
Another language which has had great success in industry (especially telecom equipment, as it was developed at Ericsson to write million-line switching software) is Erlang. Although I have
not used it myself, its proponents swear by it as the best tradeoff between elegant PL theory, and the reality of writing large software.
You will note that my recommendations all have
a functional programming slant to them, and this
is only due to my own preferences. I have not
kept up with developments in OO language design,
and so I cannot recommend one readily.
If I may step on a soapbox for a moment, however, I would like to say that especially for
the design of large systems, a strongly-typed
modern funcitonal programming language with
a good module system is a very good solution, to
rival OO Design Patterns. As modern type systems
allow you to express very precise invariants
about your modules' behavior, they can be used to help many programmers together write large pieces of code that can then be checked at compile time to behave in a consistent manner. This can save both development time and money. Those are good things.
Knuth continues to use MIX (and the new MMIX) and MIXAL in TAOCP for this reason; once you know how the computer works, and which algorithms are the proper ones to use, your choice of high-level language often becomes irrelevent. Just a choice of style.
But you miss the point of this discussion and Knuth's motivation in using MIX (and MMIX). Nowhere in TAOCP does Knuth advocate MIX as a first programming language. TAOCP is in no way an introductory textbook, and it is almost exactly the opposite of what a student exposed to CS for the first time needs.
The reason that Knuth uses MIX as his implementation language (note also, that all algorithms are presented also as informal text, and as pseudo-code) is because Knuth wants to reason explicitly (and very thoroughly) about the efficiency of his algorithms, as a result, using a language cluttered with high-level constructs would make it difficult to do exact calculations.
In most day-to-day programming, a big-O analysis of your code is sufficient (90-10 rule: 90% of your running time is in 10 percent of your code... so you shouldn't be extremely picky about optimizing all your code on a first pass... just optimize the critical path once you identify it), and the sort of rigor that Knuth goes through is not as necessery (but it's wonderful to be able to look it up in TAOCP).
In addition, Knuth uses MIX as opposed to some
existing language because he knows (see the introductory chapters on MIX in volume 1) that a language-du-jour would almost certainly make his book unreadable in a few generations, so he goes through an extra step of defining his own consise language in which to reason about costs.
(But there is no silver bullet, apparently: a few decades later (ie now), he's in the process of changing to a language that is more in line with
what todays computer scientists and programmers
can understand (assembly languages on RISCy architectures versus assembly on mainframes)).
The first thing people should learn is how to reason about programs and data. Learning C will teach you about the internal structure of a computer (which is certainly necessery for a well rounded computer programmer or computer scientist), but it will not teach you to write beautiful programs. By using a language that is very high level and expressive enough to describe your problem domain in a rigorous manner, instead of concentrating on details of memory management, and other low-level details, beginning students will have a better understanding of programming.
I would disagree with the statement that AP Computer Science should teach students about low-level workings of a computer. Instead, the AP
has always been about teaching a kind of rigorous
thinking that can be honed through programming. To that end, I think that the work of Felleisen, et al (see http://www.htdp.org/) to bring Scheme to young students is wonderful. Though personally, I think that a static-typing approach is more useful. I say, teach AP CS in a language like SML or OCaml.
Say what you will about the ability for Emacs to be customized, it is still simply an application. Certainly the same is true of VI. Both Gnome and KDE are foundations by which applications are to be built around and on top of. This is not a subtle difference.
You are completely mistaken about the Nature of Emacs. It is most definitely an application framework. What with FSF Emacs21 coming out soon (well... relatively soon, anyway; it's a 17-year old project, so the time-scale is a bit different), we will have a GUI web browser; a mail reader, a news reader, an ICQ clone, an AIM clone, a bash replacement, and a bunch of editors
all withing one uniform environment.
With a uniform scripting mechanism, on top.
All this KDE/Gnome/Windows nonsense is a far
cry from the One True Editor.
(Now if only emacs would subsume ssh, X, and the
linux kernel, then we'd really be rockin')
The article makes a comment, which is meant to be negative, but which is, in my opinion the single greatest thing to be said about any science fiction movie that triest to be more than just another special-effects ladden no-plot waster of my time and money. They say that it reminded them of 2001: A Spacy Oddyssey.
Both ST:TMP and 2001 are wonderful wonderful films,
sadly misunderstood by most people.
With latex, you are still worried about laying out your document, I was under the impression that the next big thing was to worry about describing your document
That is incorrect. You are confusing TeX
(which is, to a large extent, a type-setting
programming language), and LaTeX which is
a document description language implemented on
top of TeX. In LaTeX I only describe the logical
structure of my content, and leave the presentation details to so-called "document classes" ("article", "thesis", "book", "slides", etc) which take care of margins, font sizes and
weights, and other trivialities.
Actually... that's also how I write my HTML.
A good mix of HTML+CSS2 is remarkably like using
LaTeX. And as you point out, once we move to
something as general as XSLT (which allows for
pretty much arbitrary transformation of XML for
presentation purposes), at least the spirit of
the LaTeX experience, if not the syntax, will
carry over onto the WWW.
It would be far better if people concentrated on creating new, innovative, software rather than simply maintaining age-old software.
I disagree with this for two reasons:
Code reuse is good. Rather than reinventing the wheel, it's beneficial to at least look at other's wheel-like designs.
People will work on a project if it scratches an itch that they have. And just because the original author is no longer there to scratch the itch doesn't mean others don't want it scratched.
I agree with many other posters who've suggested that perhaps C++ is not the optimal language for teaching complete novices. And apparently so do quite a few smart people at Rice. That's why they wrote How To Design Programs. It's a rather good beginner text, IMO.
Well, I'm sure you all know that if you search for "More evil than Satan" on Google, you will get this place as the top hit. But did you know that searching for The best porn on the Internet will list these guys as the top hit, and their friends as the third hit. Well it amused me, in any case.
welloytty asks: >But how is this any better than linux?
Well, it isn't really, but they've got Sun's name attached to it, and i'm sure most managers have seen the "dot com people" commercials, which, at the moment is more mindshare than redhat can claim.
So how long do you think before they perfect running NetWare under Xen?
The design seems similar to the (sadly no longer available) Trackman Marble FX from logitech. It's a trackball with an oversized ball and ergonomically positions buttons. Very comfortable. I'm hoarding three of them and will continue to use them with all my future computers. Fortunately, since the motion sensor is optical, it's very easy to clean, and so I expect mine to last approximately forever
It sounds much more reasonable if you rot13 it: QPegXN.
Doesn't that just have a nice high-tech ring to it?
For a decidedly non-Disney (it was one of a very few number of Studio Ghibli movies that Disney declined to distribute worldwide), check out Grave of the Fireflies. One word of warning, however: don't watch this movie if you're feeling even slightly depressed.
*yawn* So have we re-invented Common Lisp yet?
That's bollocks.
Wander by your friendly neighborhood math department some time and take a look at the male/female ratio there. At least at the schools that I've been to, the math departments seem to sport something like a 60%:40% male:female ratio.
... is the Rocky Horror Picture Show.
Everything else really doesn't have the value-add to make it worth driving out to a mega-plex to be surrounded by the same people you see on Cops and Girls Gone Wild.
I find it interesting that people on /. seem to think that grad students
are somehow less sociable than the average computer
geek.
Actually, as I look around at my particular institution, I would have to say, that on the whole, of my friends who have achieved a BS in Comp Sci, those who've gone on to graduate school are no more antisocial than the rest.
In fact, a lot of the grad students I know are far more normal than the average undergrad computer geek.
I think people overlook one of the keys to successful academic career: the importance of being able to communicate your work effectively to others. Being good at coding, maths, etc is also necessery, but can almost be secondary. If noone understands your work, it doesn't matter how good it is. So if you're antisocial, you learn to deal with it and work on inter-personal skills. Otherwise you subvert your own work.
If you are feeling masochistic, you can try David Madore's Unlambda programming language. It is built around (in its basic form) the S and K combinators. Of course for all the Schemers out there, David is nice enough to include a form of call/cc for maximum obscurity. This is by far my most favorite of the painful programming languages.
You should check out OCaml. It is a modern functional programming language. It has parametric polymorphism, as well as subtyping polymorphism and dynamic dispatch, is garbage collected, features an advanced module system to help you structure code, and ports are available for all the usual platforms.
In addition, OCaml interfaces well with Gtk (including using Glade to design GUIs), has database libraries, as well as all many other libraries that one would expect.
OCaml can be either compiled to a portable bytecode, or directly to machine code. It compiles to very efficient code, and it is popular folklore that it can easily match C in terms of execution speed in many circumstances.
The language is at a good point in its evolution right now to be used in commercial circumstances. It has been around long enough that it is well-understood and a lot of useful libraries are available, and its compiler is very robust, but at the same time it is not so old that a lot of the really new and interesting developments in language design haven't made their way into it. Although I prefer Haskell for small one-off programs, I would use OCaml for large projects.
Another language which has had great success in industry (especially telecom equipment, as it was developed at Ericsson to write million-line switching software) is Erlang. Although I have not used it myself, its proponents swear by it as the best tradeoff between elegant PL theory, and the reality of writing large software.
You will note that my recommendations all have a functional programming slant to them, and this is only due to my own preferences. I have not kept up with developments in OO language design, and so I cannot recommend one readily.
If I may step on a soapbox for a moment, however, I would like to say that especially for the design of large systems, a strongly-typed modern funcitonal programming language with a good module system is a very good solution, to rival OO Design Patterns. As modern type systems allow you to express very precise invariants about your modules' behavior, they can be used to help many programmers together write large pieces of code that can then be checked at compile time to behave in a consistent manner. This can save both development time and money. Those are good things.
Well... which open-source company that used to make a GNOME file manager went bankrupt around this spring?
But you miss the point of this discussion and Knuth's motivation in using MIX (and MMIX). Nowhere in TAOCP does Knuth advocate MIX as a first programming language. TAOCP is in no way an introductory textbook, and it is almost exactly the opposite of what a student exposed to CS for the first time needs.
The reason that Knuth uses MIX as his implementation language (note also, that all algorithms are presented also as informal text, and as pseudo-code) is because Knuth wants to reason explicitly (and very thoroughly) about the efficiency of his algorithms, as a result, using a language cluttered with high-level constructs would make it difficult to do exact calculations.
In most day-to-day programming, a big-O analysis of your code is sufficient (90-10 rule: 90% of your running time is in 10 percent of your code... so you shouldn't be extremely picky about optimizing all your code on a first pass... just optimize the critical path once you identify it), and the sort of rigor that Knuth goes through is not as necessery (but it's wonderful to be able to look it up in TAOCP).
In addition, Knuth uses MIX as opposed to some existing language because he knows (see the introductory chapters on MIX in volume 1) that a language-du-jour would almost certainly make his book unreadable in a few generations, so he goes through an extra step of defining his own consise language in which to reason about costs.
(But there is no silver bullet, apparently: a few decades later (ie now), he's in the process of changing to a language that is more in line with what todays computer scientists and programmers can understand (assembly languages on RISCy architectures versus assembly on mainframes)).
The first thing people should learn is how to reason about programs and data. Learning C will teach you about the internal structure of a computer (which is certainly necessery for a well rounded computer programmer or computer scientist), but it will not teach you to write beautiful programs. By using a language that is very high level and expressive enough to describe your problem domain in a rigorous manner, instead of concentrating on details of memory management, and other low-level details, beginning students will have a better understanding of programming.
I would disagree with the statement that AP Computer Science should teach students about low-level workings of a computer. Instead, the AP has always been about teaching a kind of rigorous thinking that can be honed through programming. To that end, I think that the work of Felleisen, et al (see http://www.htdp.org/) to bring Scheme to young students is wonderful. Though personally, I think that a static-typing approach is more useful. I say, teach AP CS in a language like SML or OCaml.
You are completely mistaken about the Nature of Emacs. It is most definitely an application framework. What with FSF Emacs21 coming out soon (well... relatively soon, anyway; it's a 17-year old project, so the time-scale is a bit different), we will have a GUI web browser; a mail reader, a news reader, an ICQ clone, an AIM clone, a bash replacement, and a bunch of editors all withing one uniform environment.
With a uniform scripting mechanism, on top.
All this KDE/Gnome/Windows nonsense is a far cry from the One True Editor.
(Now if only emacs would subsume ssh, X, and the linux kernel, then we'd really be rockin')
The darn things turn up everywhere, don't they? :-)
It's always great to see theoretical work evolve from recreational activities.
The article makes a comment, which is meant to be negative, but which is, in my opinion the single greatest thing to be said about any science fiction movie that triest to be more than just another special-effects ladden no-plot waster of my time and money. They say that it reminded them of 2001: A Spacy Oddyssey.
Both ST:TMP and 2001 are wonderful wonderful films,
sadly misunderstood by most people.
That is incorrect. You are confusing TeX (which is, to a large extent, a type-setting programming language), and LaTeX which is a document description language implemented on top of TeX. In LaTeX I only describe the logical structure of my content, and leave the presentation details to so-called "document classes" ("article", "thesis", "book", "slides", etc) which take care of margins, font sizes and weights, and other trivialities.
Actually... that's also how I write my HTML. A good mix of HTML+CSS2 is remarkably like using LaTeX. And as you point out, once we move to something as general as XSLT (which allows for pretty much arbitrary transformation of XML for presentation purposes), at least the spirit of the LaTeX experience, if not the syntax, will carry over onto the WWW.
... and 1.2 will be themable too!
- Code reuse is good. Rather than reinventing the wheel, it's beneficial to at least look at other's wheel-like designs.
- People will work on a project if it scratches an itch that they have. And just because the original author is no longer there to scratch the itch doesn't mean others don't want it scratched.
Just my $0.02I agree with many other posters who've suggested that perhaps C++ is not the optimal language for teaching complete novices. And apparently so do quite a few smart people at Rice. That's why they wrote How To Design Programs. It's a rather good beginner text, IMO.
Well, I'm sure you all know that if you search for "More evil than Satan" on Google, you will get this place as the top hit. But did you know that searching for The best porn on the Internet will list these guys as the top hit, and their friends as the third hit. Well it amused me, in any case.
welloytty asks:
>But how is this any better than linux?
Well, it isn't really, but they've got Sun's name attached to it, and i'm sure most managers have seen the "dot com people" commercials, which, at the moment is more mindshare than redhat can claim.
The BBC is running a special report here