[Fsf-friends] Need Free software in 11th Class

Pramode C.E. pramode_ce@yahoo.co.in
Thu Aug 25 06:19:19 IST 2005

--- Harish Narayanan <harish@gamebox.net> wrote:

> Not to stir up controversy, but I quite disagree
> with the popular 
> opinion here that C++ is a horrible language for
> introductory computer 
> science. "Struggling with syntax" is a trivial,
> non-objective issue, and 

True - to a very small number of people who have the
maturity, intellectual sophistication (and maybe
experience) to  disentangle the syntax from the wider
canvas of problem solving strategies. You are lucky to
fall into this minority ....

> can be raised about any programming environment. I
> might just as well as 
> say, for example, that "keeping track of all those
> parentheses is hard" 

Of course not - please try using the Dr.Scheme
interactive environment together with the book `How to
Design Programs'. There is enough evidence to prove 
that the best way to introduce programming is to start
off in an `assignment-free' `functional' way laying
emphasis on stuff like recursion, higher order
functions, closures etc and later on introducing state
and `mutation' as advanced techniques.

> when it comes to lambda calculus. I think the bigger
> problem is the 
> clear lack of distinction between concepts or
> algorithms (or pseudo 
> code) and actual implementation, even amongst
> teachers (at least the 
> ones who taught me).

Very true.

> Clearly define a conceptual solution to a problem
> (which is what the 
> syllabus should probably really be about), and most 
> somewhat-well-designed languages will allow for
> relatively painless 
> implementation. 

The language does have a role to play in how 
well (and how easily) you can implement things ...
can you think of teaching the design of a 
backtracking Prolog-like engine or a `metacircular'
evaluator to beginning students in C++? (the classic
CS textbook, `Structure and Interpretation of Computer
Programs' discusses stuff like this - as part of a
common introductory course in computer programming).

>I don't, philosophically or 
> implementation-difficulty-wise, see any difference
> between a Python (for 
> example) program and a modern C++ program (properly
> utilizing STL and 
> what not). Really, you can get just as much done in
> as few lines and 
> it's just as easy to read. You can just as easily
> abstract system 
> specific details and focus on the conceptual problem
> solution.
> But as a bonus, if you want, you also get to get
> your hands dirty with 
> really low level system specific stuff, which most
> of the other 
> alternatives proposed clearly dissuade. 

The modern approach to teaching CS is that we
begin with not any particular `algorithm' or 
implementation details in mind - but with the common
strategies used for tackling the complexitites
in large scale systems design. A language like Scheme,
as presented in SICP, is ideal for this. We then move
forward to lower levels, ultimately understanding the
design of the electronics circuitry on which our code
runs and the subtle interface between hardware and
software as presented so beautifully by Patterson and
Hennessy in their classic book on Computer
Organization. At this level, we will have to throw
away Python/Scheme etc and look at C/assembly.

> I, and many
> people I know, 
> sometimes like to tinker with things beyond these
> sand boxed environments.

Nothing prevents a Python/Scheme hacker from learning
C/assembly - I find all of them highly enjoyable, each
from it's on perspective.

> Harish
> _______________________________________________
> Fsf-friends mailing list
> Fsf-friends@mm.gnu.org.in
> http://mm.gnu.org.in/mailman/listinfo/fsf-friends

Computer Science is no more about
Computers than astronomy is about
           Edsger Dijkstra.



Send a rakhi to your brother, buy gifts and win attractive prizes. Log on to http://in.promos.yahoo.com/rakhi/index.html

More information about the Fsf-friends mailing list