my personal opinion is that computers are very much like pen and paper ((un)fortunately, the current technology still requires use of pen and paper -- computer screens and input devices just do not have large enough resolutions to be just as nice as pen and paper for sketching solutions or charts or graphics).
As for open software for math (high school or not) I would recommend scheme (the lisp dialect). It is easy to teach students how to write programs for symbolic differentiation and lots of other simple, interesting things (linear algebra stuff, finding zeros for a function -- there are many examples even in Structure And Interpretation Of Computer Programs, and many more can be found quite easily).
It is a language which complements nicely the pen and paper approach -- you do your initial solution on paper then try to do the tedious calculations on a computer, with a program you've written yourself -- hey, if you know enough math to do it yourself you'd better know how to program it:))
The opinion that one learns a lot by explaining things to one's peers is pretty popular. Well, programming is "explaining to someone else" taken to an extreme. Why not use it as an educational tool?
So I guess computers ought to be just as useful as pen and paper, if used properly.
Well, I'm no kernel hacker, but I guess this could help speed up the debug cycle for the kernel in some instances.
It could also be a trap (it runs well compiled with tcc but fails misteriously when compiled and optimized with gcc).
TCC is a very fast C compiler and it is very nice for development (I used it as a backend to the SmartEiffel Eiffel compiler, it greatly speeds up compiling - waiting for GCC every time was a nuissance) and I guess Fabrice Bellard likes to experiment.
I guess nobody (including Bellard) believes TCC is any good for delivered apps (it doesn't optimize etc.) but it can provide a huge boost to edit-compile-debug cycles.
So yes, TCC is very cool, but not useful for the general public.
Now I understand those Microsoft studies about Linux TCO. The TCO just went up, it seems. Boy, these Microsoft guys know the future! Wonder why they don't see the exploits coming...
Well, I mostly agree, but there is one catch here: if I exercise late in the evening (as in less than 2 hrs before going to sleep) I seem to have trouble sleeping. I've also heard people saying that exercising early in the morning may be bad for the heart (it has to switch quickly from resting to effort). So I guess a good time for exercising is something like 6-8pm if you plan to go bed around 10-11pm.
One more thing: I've had trouble sleeping because I was dehydrated. Drinking something like half a liter of water helped (sometimes 3 quarters of a liter - YMMV, of course).
have you read Structure And Interpretation Of Computer Programs (SICP) by Abelson, Sussman and Sussman (it's available online, as an MIT *introductory* CS course)?
They use Scheme as their programming language and, in the space of ~600 pages they go from "let's write an expression in Lisp/Scheme" to "let's write a Scheme compiler". Lisp/Scheme uses GC. When they write the compiler, they provide a simple implementation of a GC in the pseudo-assembly they compile to. It's possible to use a language with GC and know *extremely* well what's going on under the hood. And they use a language with a GC to be able to teach sophisticated topics, like logic programming and symbolic differentiation.
I also read Kageyama's book on Go, and ever since I wondered what are the fundamentals of CS. I think many of them are described in SICP, and the most important ones are procedure abstraction and data abstraction.
Also, computers are about automatizing automatizable tasks in a manner that can be "proven" to be "correct". GC is an automatization of memory reclamation which works well (although not "correctly" in some cases because of the environment -- programs with GC have to interact with libs that may fool the GC). It has drawbacks, yes, but then everything else has.
Attention to detail? Yes, but remember that you have to automatize/abstract/detect patterns of data/behaviour, otherwise we'd be stuck with machine code -- no one would have invented a programming language in the first place.
Hi,
:))
:))
my personal opinion is that computers are very much like pen and paper ((un)fortunately, the current technology still requires use of pen and paper -- computer screens and input devices just do not have large enough resolutions to be just as nice as pen and paper for sketching solutions or charts or graphics).
As for open software for math (high school or not) I would recommend scheme (the lisp dialect). It is easy to teach students how to write programs for symbolic differentiation and lots of other simple, interesting things (linear algebra stuff, finding zeros for a function -- there are many examples even in Structure And Interpretation Of Computer Programs, and many more can be found quite easily).
It is a language which complements nicely the pen and paper approach -- you do your initial solution on paper then try to do the tedious calculations on a computer, with a program you've written yourself -- hey, if you know enough math to do it yourself you'd better know how to program it
The opinion that one learns a lot by explaining things to one's peers is pretty popular. Well, programming is "explaining to someone else" taken to an extreme. Why not use it as an educational tool?
So I guess computers ought to be just as useful as pen and paper, if used properly.
Or maybe I'm just a Lisp/Scheme zealot
Miron
Well, I'm no kernel hacker, but I guess this could help speed up the debug cycle for the kernel in some instances.
It could also be a trap (it runs well compiled with tcc but fails misteriously when compiled and optimized with gcc).
TCC is a very fast C compiler and it is very nice for development (I used it as a backend to the SmartEiffel Eiffel compiler, it greatly speeds up compiling - waiting for GCC every time was a nuissance) and I guess Fabrice Bellard likes to experiment.
I guess nobody (including Bellard) believes TCC is any good for delivered apps (it doesn't optimize etc.) but it can provide a huge boost to edit-compile-debug cycles.
So yes, TCC is very cool, but not useful for the general public.
Now I understand those Microsoft studies about Linux TCO. The TCO just went up, it seems. Boy, these Microsoft guys know the future! Wonder why they don't see the exploits coming ...
Well, I mostly agree, but there is one catch here: if I exercise late in the evening (as in less than 2 hrs before going to sleep) I seem to have trouble sleeping. I've also heard people saying that exercising early in the morning may be bad for the heart (it has to switch quickly from resting to effort). So I guess a good time for exercising is something like 6-8pm if you plan to go bed around 10-11pm.
One more thing: I've had trouble sleeping because I was dehydrated. Drinking something like half a liter of water helped (sometimes 3 quarters of a liter - YMMV, of course).
well, if someone manages to make a mess out of a 2d desktop, imagine what they can do in a 3d environment :)
I don't keep a tidy room, and sometimes it's difficult to locate stuff. During those moments I sometimes wish my room was 2d.
besides, it's easy to keep a desktop tidy. task oriented folders sound like a simple enough idea.
bmac,
have you read Structure And Interpretation Of Computer Programs (SICP) by Abelson, Sussman and Sussman (it's available online, as an MIT *introductory* CS course)?
They use Scheme as their programming language and, in the space of ~600 pages they go from "let's write an expression in Lisp/Scheme" to "let's write a Scheme compiler". Lisp/Scheme uses GC. When they write the compiler, they provide a simple implementation of a GC in the pseudo-assembly they compile to. It's possible to use a language with GC and know *extremely* well what's going on under the hood. And they use a language with a GC to be able to teach sophisticated topics, like logic programming and symbolic differentiation.
I also read Kageyama's book on Go, and ever since I wondered what are the fundamentals of CS. I think many of them are described in SICP, and the most important ones are procedure abstraction and data abstraction.
Also, computers are about automatizing automatizable tasks in a manner that can be "proven" to be "correct". GC is an automatization of memory reclamation which works well (although not "correctly" in some cases because of the environment -- programs with GC have to interact with libs that may fool the GC). It has drawbacks, yes, but then everything else has.
Attention to detail? Yes, but remember that you have to automatize/abstract/detect patterns of data/behaviour, otherwise we'd be stuck with machine code -- no one would have invented a programming language in the first place.
Just my 2 cents.