It's also meant for Internet access and a lot of other embedded and desktop functions, functions that can be very nicely developed on Linux.
As for games, with SDL and Linux, there are lots of nifty existing Linux games and new Linux games that could be cross-compiled for the PS2 without the expense and complexity of licensing the PS2 development kit.
If Python was the result of Lisp and C++ having a baby, Ruby is the result of Perl and Smalltalk having a baby.
The key features of Lisp are the use of a uniform notation for programs and data, a notation that makes it very easy to write syntactic extensions, and full support for functional programming. Python 2.1 now has some limited support for lexical closures, but users almost never extend its syntax. The key feature of Smalltalk is its programming environment. As a language, Smalltalk's main feature is the use of very descriptive method and argument names. Neither of those is shared by Ruby.
Python, Perl, and Ruby are nifty little scripting languages, but don't think for a moment that if you are using them you are using the next generation of Lisp or Smalltalk. The object models of Python, Perl, and Ruby are general but slow and memory intensive, their programming environments are oriented towards scripting, not large system development, and compilation to native code, when it exists at all, is of limited benefit. If the scripting languages ever evolve into something like Lisp or Smalltalk, their object models, syntax, and semantics will have to change dramatically and incompatibly.
I think being able to use a PS2 as a graphical terminal for PC is kind of nice and handy at times.
But rather than some possibly expensive, commercial X server, I wouldn't mind having VNC for the PS2. Not only would that probably be a lot easier to develop, configure and use, it would also work with both Windows and UNIX machines on the back-end.
That's not at all what companies want to do. What they want is a very controlled flow of information: advertising and content with product placement flows from their systems to yours, and payment and usage information flows from your system to theirs. Any content that doesn't pay money to one of the big media conglomerates shouldn't be on the network. You are a consumer, and only that.
And companies seem perfectly capable of enforcing this world, using a variety of strategies: putting "no server" clauses in your access provider's TOS, forcing the world to adopt proprietary and patented content formats for audio and video, and legally going after anybody who writes software that does not fit into their master plan.
If you don't get the hang of Knuth's books (I don't), here are some alternatives that serve both as good introductions and excellent references:
Abelson and Sussman: Structure and Interpretation of Computer Programs. This book covers a lot of ground when it comes to programming, implementation of programming languages, and the use of abstraction in software development.
Cormen, Leiserson, and Rivest's algorithm book is an excellent modern exposition of algorithms and concepts in algorithm development.
Russel and Norvig's "AI -- A Modern Approach" is an excellent textbook covering logic, search, and AI.
Also very relevant to modern computer science are the following books:
Duda, Hart, and Stork's "Pattern Classification" is also a book computer scientists should know, but rarely do.
Strang's "Introduction to Applied Mathematics" covers elementary material in applied math that every scientist (computer or otherwise) should know by heart.
Gershenfeld's "The Nature of Mathematical Modeling" is a neat, if somewhat quirky, book at the intersection of mathematical modeling and computer science.
If you have recommendations of other introductory books with a similar style, say on automata theory, string algorithms, number theory, combinatorics, etc., please do share them.
I'd recommend reading Abelson and Sussman. In their textbook, they seem to manage just fine describing and implementing concepts like co-routines and lexical scoping using Lambda-calculus.
Additionally he wants to very carefully expose what he believes to be a representative architecture for the underlying machine
Trouble is: it's not representative. It may barely approximate what modern RISC machines do, but it will be very different from the multithreaded, VLIW, and parallel machines that are coming into the mainstream.
higher level languages go in and out of vogue too quickly
Most computer scientists have no problem communicating in a Pascal-like pseudo-code, independent of any particular programming language.
It's also meant for Internet access and a lot of other embedded and desktop functions, functions that can be very nicely developed on Linux.
As for games, with SDL and Linux, there are lots of nifty existing Linux games and new Linux games that could be cross-compiled for the PS2 without the expense and complexity of licensing the PS2 development kit.
The key features of Lisp are the use of a uniform notation for programs and data, a notation that makes it very easy to write syntactic extensions, and full support for functional programming. Python 2.1 now has some limited support for lexical closures, but users almost never extend its syntax. The key feature of Smalltalk is its programming environment. As a language, Smalltalk's main feature is the use of very descriptive method and argument names. Neither of those is shared by Ruby.
Python, Perl, and Ruby are nifty little scripting languages, but don't think for a moment that if you are using them you are using the next generation of Lisp or Smalltalk. The object models of Python, Perl, and Ruby are general but slow and memory intensive, their programming environments are oriented towards scripting, not large system development, and compilation to native code, when it exists at all, is of limited benefit. If the scripting languages ever evolve into something like Lisp or Smalltalk, their object models, syntax, and semantics will have to change dramatically and incompatibly.
But rather than some possibly expensive, commercial X server, I wouldn't mind having VNC for the PS2. Not only would that probably be a lot easier to develop, configure and use, it would also work with both Windows and UNIX machines on the back-end.
And companies seem perfectly capable of enforcing this world, using a variety of strategies: putting "no server" clauses in your access provider's TOS, forcing the world to adopt proprietary and patented content formats for audio and video, and legally going after anybody who writes software that does not fit into their master plan.
- Abelson and Sussman: Structure and Interpretation of Computer Programs. This book covers a lot of ground when it comes to programming, implementation of programming languages, and the use of abstraction in software development.
- Cormen, Leiserson, and Rivest's algorithm book is an excellent modern exposition of algorithms and concepts in algorithm development.
- Russel and Norvig's "AI -- A Modern Approach" is an excellent textbook covering logic, search, and AI.
Also very relevant to modern computer science are the following books:- Duda, Hart, and Stork's "Pattern Classification" is also a book computer scientists should know, but rarely do.
- Strang's "Introduction to Applied Mathematics" covers elementary material in applied math that every scientist (computer or otherwise) should know by heart.
- Gershenfeld's "The Nature of Mathematical Modeling" is a neat, if somewhat quirky, book at the intersection of mathematical modeling and computer science.
If you have recommendations of other introductory books with a similar style, say on automata theory, string algorithms, number theory, combinatorics, etc., please do share them.I'd recommend reading Abelson and Sussman. In their textbook, they seem to manage just fine describing and implementing concepts like co-routines and lexical scoping using Lambda-calculus.
Trouble is: it's not representative. It may barely approximate what modern RISC machines do, but it will be very different from the multithreaded, VLIW, and parallel machines that are coming into the mainstream.
higher level languages go in and out of vogue too quickly
Most computer scientists have no problem communicating in a Pascal-like pseudo-code, independent of any particular programming language.