On Aug 31, 2017, at 1:51 PM, Clem Cole <clemc@ccc.com> wrote:



On Thu, Aug 31, 2017 at 4:37 PM, William Cheswick <ches@cheswick.com> wrote:
I wrote a plotter driver for the CDC in Pascal.  Brian’s comments were apt: drivers aren’t quite the same as a filter, even a Knuthian-style program.

I thought the world would end up using some post-Pascal, strongly typed language.  Maybe Oberon or Modula would fix things.  (I don’t think any of a decade’s worth of Pascal programs I wrote ever had a buffer overflow vulnerability.)

​ditto, Pascal and Mod-II and Mod-III were pretty slick.   They were a little wordy compared to C, but I admit the programs we wrote in them "just worked" and I can not think any security issues in any that we wrote.

"Just working" and no security issues is something that was/is harder in C (and C++). We continue to pay an enormous cost due to the prevalence of C/C++ programs. May be security was not a big concern in 1983 but buggy programs were already a big issue....


I look to the likes of go and rust to get us back on track.  C is a pretty good assembly language.

​+1

But Ches, that leaves the open question of what to teach?   My daughter loves it and that's what college taught her, but I cringe when I look at what she and her peeps do with Python.   To me that's more like shell scripting.   Maybe its my inner curmudgeon showing.

IMHO every programmer should learn (and learn well)
a) assembly language. pick one processor architecture. C is not low level enough. This really teaches you the nuts and bolts of how computers actually work.
b) Scheme. This really teaches you prototyping, conceptualizing, experimenting etc. And there are lots of books that use Scheme to teach you programming. Still my goto language for fun!
c) Some newly popular/upcoming compiled language. Go or Rust or Nim or Julia or Erlang or Haskell...

Rationale: a) is bottom up. b) is top down. c) is getting things done. This way they get a broad spectrum programming skill set.

and may be
d) javascript / C++ / Cobol / Java / C -- whatever the market currently desperately wants

I have not seen anything like Clancy's "Oh Pascal" book in the key of Go, much less Brinch Hansen's "Java for Everyone" ​which I still think are two of the best teaching text out there.

FWIW: I was able to bootstrap 3 highschool grads just with the Kergighan, Donovan Go programming book. With some mentoring in 7 weeks they wrote a car driving simulator (random road map, traffic signals, random number of cars, stopping at lights, waiting to safely turn right or left, zoomable openGL view). They had some prior experience with C/C++ and one knew openGL as well. They actually produced far more code than the our team of regular employees!

Go ecosystem quite well engineered and a joy to use. What newbies need is a "duolingo" for programming!