Live data from Hacker News

Programming as a Way of Thinking

blogs.scientificamerican.com

11–20 of 133 posts

Re: Programming as a Way of Thinking

#11
Opinion is not fact. Given this is Scientific American should we expect something, say, more scientific?

Let's put this under the heading, "One Size Does Not Fit All".

The underlying assumption of this opinion is that there is only one model to teach too.

In the modern era we really need to take into account our differences.

In this case, functional versus procedural programming.

1. Write this in a Lisp as functional.

2. Present the functional form as human readable as the given procedural.

3. Conduct a study and gather the data.

4. Present the findings.

My experience has taught me that there is subset of the human population who think more naturally in functional programming.

But if one model is insufficient? then why would two be?

What languages are yet to be invented to meet the needs of the millions of daily programmers?

It is time for experimental science to be conducted given the millions of people involved.

The path has already been laid out with Usability research that is entirely experimental.

It is time to do the hard science on usability of claims of functional and procedural programming languages.

It is time to put to rest opinion and one size fits all.

Re: Programming as a Way of Thinking

#12
post #9

The author focuses on the algorithmic and computational aspects of programming. Yet, nowadays programming is much more than this beautiful classical view on programming. Programming is more about describing a complex system by taking into account such aspects as concurrency, cross-cutting concerns, asynchronous events, transactionality, distributed computations etc.

That is not surprising, as this is not an article about programming in general, but about using programming for teaching in other areas.

I would, however, welcome the companion article, "Thinking as a Way of Programming", to balance the prevalent notion that testing is the only way that matters.

Re: Programming as a Way of Thinking

#13
In the beginning of 80s there was a concept called "Programming is the second literacy" [1] introduced by Soviet computer scientist A.P. Ershov. Nowadays it's obvious that there is a huge demand in special programming tools not only for professional programmers (C++, Java..), but for domain experts who use algorithms too (Python, DSLs..).

There is a popular objection that "not everyone should be able to code". But it depends on the "to code" definition. A good example here is with game designers. They may not know how to do low-level coding, work with 3d math or use C++ templates. But still for a really good game designer it's very important to have algorithmic thinking and they need to have a tool for testing their algorithmic ideas on the computer.

As for Python, there is an issue: it's hard to find examples of good style of Python programming (I think only few of us actually learnt Python with help of textbook). Some time ago I was happy to find notes by Peter Norvig about Python and about comparing Python and Lisp. His code is very elegant, see, for example: http://norvig.com/python-lisp.html

[1] http://www.sciencedirect.com/science/article/pii/01656074819...

Re: Programming as a Way of Thinking

#14

In the beginning of 80s there was a concept called "Programming is the second literacy" [1] introduced by Soviet computer scientist A.P. Ershov. Nowadays it's obvious that there is a huge demand in special programming tools not only for professional programmers (C++, Java..), but for domain experts who use algorithms too (Python, DSLs..). There is a popular objection that "not everyone should be able to code". But it…

>it's hard to find examples of good style of Python programming

I've never really bought that this matters so much as long as you just write sensibly in general. How many python users really make sure to do everything a "pythonic" way?

Re: Programming as a Way of Thinking

#15
The canonical, award winning version of these ideas is described in Ken Iverson's seminal 1979 paper 'Notation as a tool of thought'[0] - highly recommended to anyone who finds the ideas discussed interesting (even if they find the scientific american article lacking ... because it is)

[0] http://www.jsoftware.com/papers/tot.htm

Re: Programming as a Way of Thinking

#16

I had a math teacher at my high school who used python and SAGE to teach us pre-calculus as well as programming, computational thinking and some mathematical logic. He was an absolute genius and I wouldn't be where I was if it wasn't for him - unfortunately the school saw him as a threat to the standard model of teaching and drove him insane before he just quit. I hope he's doing ok.

Did anyone else, other students, find his methods effective?

Re: Programming as a Way of Thinking

#17

In the beginning of 80s there was a concept called "Programming is the second literacy" [1] introduced by Soviet computer scientist A.P. Ershov. Nowadays it's obvious that there is a huge demand in special programming tools not only for professional programmers (C++, Java..), but for domain experts who use algorithms too (Python, DSLs..). There is a popular objection that "not everyone should be able to code". But it…

>it's hard to find examples of good style of Python programming I've never really bought that this matters so much as long as you just write sensibly in general. How many python users really make sure to do everything a "pythonic" way?

I think, it depends on how you use Python.

1. "Executable pseudocode", almost a toy language to explain few algorithms in your article.

2. Sysadmin tool. Replacement for shell, a way to write quick throwaway scripts.

3. "A modern Lisp". Universal language for implementing AI algorithms, DSLs etc.

I, personally, use 3rd variant. I write quite big programs in Python, for example I made few compilers in it. That's why code quality is important for me here.

Re: Programming as a Way of Thinking

#18
post #10
post #6

> Programming has changed. In first generation languages like FORTRAN and C, the burden was on programmers to translate high-level concepts into code. With modern programming languages—I’ll use Python as an example—we use functions, objects, modules, and libraries to extend the language... This is the first paragraph. I understand that it's just setting the stage, but it makes so little sense by itself that I had to…

Yeah, that was an odd start, given that Dr. Downey is a Professor of Computer Science. Even a charitable suggestion that he was looking to keep things as understandable as possible for a wide audience doesn't seem to give much defense. I think he was trying to articulate how much more expressive/extensive programming languages and libraries (and tools?) have gotten over the years, so that a student can get to do some…

What has changed its the modules and libraries, which has exploded in availability.

The actual programming method haven't changed much since the dawn of Unix, or perhaps Lisp - although it took a while to spread.

Re: Programming as a Way of Thinking

#19
post #10
post #6

> Programming has changed. In first generation languages like FORTRAN and C, the burden was on programmers to translate high-level concepts into code. With modern programming languages—I’ll use Python as an example—we use functions, objects, modules, and libraries to extend the language... This is the first paragraph. I understand that it's just setting the stage, but it makes so little sense by itself that I had to…

Yeah, that was an odd start, given that Dr. Downey is a Professor of Computer Science. Even a charitable suggestion that he was looking to keep things as understandable as possible for a wide audience doesn't seem to give much defense. I think he was trying to articulate how much more expressive/extensive programming languages and libraries (and tools?) have gotten over the years, so that a student can get to do some…

[deleted]

Re: Programming as a Way of Thinking

#20

I had a math teacher at my high school who used python and SAGE to teach us pre-calculus as well as programming, computational thinking and some mathematical logic. He was an absolute genius and I wouldn't be where I was if it wasn't for him - unfortunately the school saw him as a threat to the standard model of teaching and drove him insane before he just quit. I hope he's doing ok.

I've had thoughts like this, using sci-py to teach kids how to hack math. Our education system is kind of sad face.
Post reply on HN