The forgotten ideas in computer science-Joe Armestrong

在2020年的第一期里面,一起回顾2018年Joe的 The forgotten ideas in computer science。在40多分钟里面总结了他精挑的个人最佳List.

Part 1 Motivation

最初只是想想了解计算机科学中那些forgotten ideas,后来变成了想知道Silly ideas,Hot research topics,Bad ideas...然后就想做个人列表排行。

As with our colleges, so with a hundred "modern improvements”; there is an illusion about them; there is not always a positive advance ... Our inventions are wont to be pretty toys, which distract our attention from serious things.
Henry David ThoreauWalden (1854)

How to make a list

  • Collect lots of items easy
  • Assign to lists difficult
  • Shorten the lists to N items (N is small) very difficultThrowing things away is much more difficult than collecting things - but what’s left is better.

Part 2 Things to learn

Essential Guide to CS

  • 80 things in 18 categories(some old, some new, some forgotten)
  • Pix and Mix
  • Not all equally importantI’ll talk about the most important oneslater
  • 2 great papers to read
  • 4 old tools to learn
  • 4 really bad things
  • 3 great books to read
  • 7 reasons why software is difficult now
  • 10 reasons why software was easier back in the day
  • 1 fun programming exercise
  • 8 great machines from the past
  • 3 performance improvements
  • 5+ YouTube videos to watch
  • 6 things not to do
  • 5 sins
  • 4 languages to learn
  • 4 great forgotten ideas
  • 6 areas to research
  • 2 dangers
  • 4 ideas that are obvious now but strange at first
  • 2 fantastic programs to try

2 great papers to read

4 old tools to learn

  • emacs (vi)
  • bash
  • make
  • shell

4 really bad things

  • Lack of Privacy
  • Attempts to manipulate us through social media
  • Vendor Lock in
  • Terms and Conditions

3 great books to read

7 reasons why software is difficult now

  • Fast machines
  • Huge memory
  • Hundreds of PLs
  • Distributed
  • Huge programs
  • No specifications
  • Reuse

10 reasons why software was easier back in the day

  • Small machines
  • Small memory
  • Few languages
  • Not distributed
  • No reuse of code
  • No Xcode etc
  • No GIT.
  • Complete control
  • Did not communicate
  • Understandable in it’s entirety

8 great machines from the past

3 performance improvements

  • Better algorithms ( x 6) (Interpreter -> Compiler)
  • Better Programming language (x50) (Prolog -> C)
  • Better Hardware (x1000 per 10 years)

5+ YouTube videos to watch

6 things not to do

  • Backdoors
  • Violate privacy
  • Put microphones in everybody's houses
  • Hijack our attention system
  • Hijack our social systems
  • Sell crap that we don’t want or need

5 sins

  • Crap documentation
  • Crap website
  • Crap dependencies
  • Crap build instructions
  • Group think

4 languages to learn

  • C
  • Prolog
  • Erlang
  • Javascript

Great forgotten Ideas

Pipes :The output of my program should be the input to your program A | B | C
Text-flows across the boundary, Killed by GUI sand Apps.

Part 3 Important noncomputer science things

learn to write

A program with excellent documentation is not going to go anywhere

3 rules at work

  • If you get a bad boss move immediately do not try to change your boss
  • The relationship comes first (Jane Walerud)
  • Engage with managementjust because they do not understand what you are saying is no reason not to talk to them - and whose fault is it anyway (that they don’t understand you)

7 distractions

  • Open plan offices
  • The latest stuff
  • Twitter/Facebook (social media)
  • Notifications (turn ‘em off)
  • Links (don’t click on them)
  • Ban Scrum etc.
  • We can only do one thing at a time Our brains are terribly bad at context switching

6 ways to get your boss to

  • Do things that gain trust
  • Tell success stories
  • Reduce fear of failure
  • Introduce on a small scale - for a part of the problem
  • Network with Erlang folks
  • Make a prototype at home

1 thing to look for when applying for a new job

Look at their balance sheeta company with a positive cash flow and increasing profits is good to work for - a company that makes a loss is not good to work for

3 general laws

  • Software complexity grows with time (because we build on old stuff)
  • Bad code crowds out good (Gresham’s law) bad money drives out good (clipping)
  • Bad code contaminates good code

Part 4 Important half forgotten BIG ideas

Things can be small

  • Forth OS 24 KB
  • Forth compiler 12KB
  • IBM PC DOS < 640KB
  • USCD Pascal
  • Turbo Pascal
  • Turbo C

The old truths

  • Keep it simple
  • Make it small
  • Make it correct
  • Fight complexity


  • Kids can learn computing
  • OAPs can learn computing
  • Everybody can learn computing It was easy to learn BASIC back in the 80’s sowhy is it more difficult now?

Part 5 What we can do

  • Unbreak the webMake it read/write symmetric
  • Bring computation to the edge network
  • Ensure that all personal data is owned by the individual and not by large corporations
  • Make computing easy again
  • Build Apps so they can communicate with each other

A program that is not secure and cannot be remotely controlled should not be written.




posted @ 2020-01-05 22:36  写着写着就懂了  阅读(213)  评论(0编辑  收藏