Large Language Models and The End of Programming – CS50 Tech Talk with Dr. Matt Welsh

Here’s an interesting talk about how we won’t need programmers very soon: Large Language Models and The End of Programming – CS50 Tech Talk with Dr. Matt Welsh.

If refers to the following books:

Joe Armstrong – Keynote: The Forgotten Ideas in Computer Science – Code BEAM SF 2018

I watched Joe Armstrong – Keynote: The Forgotten Ideas in Computer Science – Code BEAM SF 2018. I made the mistake of starting my notes as I went along with the video. If I had have watched the video first I probably wouldn’t have made the notes. Anyway. Sunk cost. Here ’tis.

Two papers to read:

  1. A Plea for Lean Software by Niklaus Wirth
  2. The emperor’s old clothes by Tony Hoare

Four old tools to learn:

  1. emacs (vi)
  2. bash
  3. make
  4. shell

Four really bad things:

  1. Lack of privacy
  2. Attempts to manipulate us through social media
  3. Vendor lock-in
  4. Terms and conditions

Three great books to read:

  1. Algorithms + Data Structures = Programs by Niklaus Wirth (PDF)
  2. The Mythical Man-Month by Fred Brooks (PDF)
  3. How to Win Friends and Influence People by Dale Carnegie (PDF)

Seven reasons why software is difficult now:

  1. Fast machines
  2. Huge memory
  3. Hundreds of PLs
  4. Distributed
  5. Huge programs
  6. No specifications
  7. Reuse

One fun programming exercise:

  1. META II a syntax-oriented compiler writing language (PDF)

8 great machines from the past:

  1. Baby SSEM
  2. PDP11
  3. Vax 11/750
  4. Cray 1
  5. IBM PC
  6. Raspberry Pi
  7. iPhone/iPad
  8. Nvidia Tesla P100

3 performance improvements:

  1. Better algorithms (x6) (Interpreter -> Compiler)
  2. Better programming language (x50) (Prolog -> C)
  3. Better hardware (x1000 per 10 years)

5 YouTube videos to watch:

  1. Alan Kay at OOPSLA 1997 – The computer revolution hasnt happened yet
  2. Ted Nelson — Computers for Cynics [full version]
  3. Free is a Lie
  4. How a handful of tech companies control billions of minds every day | Tristan Harris
  5. Matt Might – Winning the War on Error Solving the Halting Problem and Curing Cancer

6 things not to do:

  1. Backdoors
  2. Violate privacy
  3. Put microphones in everybody’s houses
  4. Hijack our attention system
  5. Hijack our social systems
  6. Sell crap that we don’t want or need

5 sins:

  1. Crap documentation
  2. Crap website
  3. Crap dependencies
  4. Crap build instructions
  5. Group think

4 languages to learn:

  1. C
  2. Prolog
  3. Erlang
  4. Javascript

4 great forgotten ideas:

  1. Linda Tuple Spaces – David Gelernter and Nicholas Carriero
  2. Flow based programming – John Paul Morrison
  3. Xanadu – Ted Nelson
  4. Unix pipes

6 areas to research:

  1. Robotics
  2. AI
  3. Programmer productivity
  4. Energy efficiency
  5. Precision medicine
  6. Security

2 dangers:

  1. Group think
  2. Bubble think

4 ideas that are obvious now but strange at first:

  1. Indentation
  2. Versioning
  3. Hypertext across machine boundaries
  4. Pipes

2 fantastic programs to try:

  1. TiddlyWiki
  2. Sonic Pi

7 distractions:

  1. Open plan offices
  2. The latest stuff
  3. Twitter/Facebook (social media)
  4. Notifications (turn ’em off)
  5. Links (don’t click on them)
  6. Ban Scrum etc
  7. We can only do one thing at a time; our brains are terribly bad at context switching

3 general laws:

  1. Software complexity grows with time (because we build on old stuff)
  2. Bad code crowds out good (Gresham’s law)
  3. Bad code contaminates good code

3 laws of physics:

  1. A computation can only take place when the data and the program are at the same point in spacetime -=> get all the data + program to the same place (can be client or server or someplace in-between) (problem – easy to move data – difficult to move programs) This is why PHP is good :-)
  2. Causality – Effect follows cause. We don’t know how stuff is we know how it was (the last time it told us)
  3. 2nd law of thermodynamics – Entropy (disorder) always increases

6 common problems:

  1. Does not know how to delete files – when the system runs out of space they buy a new computer
  2. No idea of what MBytes, Mbits, Bits/sec, quad cores, etc means
  3. If the app doesn’t work immediately gives up
  4. Does not search for fixes – or does and does not understand the answers
  5. Does not want to try the latest things
  6. Uses a method that works (not the best) – e.g. to copy a file open it and then save it with a new name

5 more problems:

  1. The UI changes
  2. Passwords
  3. Stuff doesn’t work
  4. Terms & Conditions
  5. non-reproducible errors

Things can be small:

  1. Forth OS 24KB
  2. Forth compiler 12KB
  3. IBM PC DOS < 640KB
  4. USCD Pascal
  5. Turbo Pascal
  6. Turbo C

The old truths:

  1. Keep it simple
  2. Make it small
  3. Make it correct
  4. Fight complexity

Web is broken:

  1. It’s not symmetric; users read data but write very little
  2. Can every page be changed?
  3. Can I make new data by combining fragments from other data in a flexible manner? No.
  4. The Web is dominated by a small number of companies (Amazon, Apple, Google, Facebook) using huge data centers, it should be controlled from the edge network.
  5. The original vision was a Web controlled by “citizen programmers” (Search for Ted Nelson talks)

HTML and HTTP have several problems:

  1. Non symmetric
  2. Easy to read/difficult to write
  3. Pages get lost (disappear)
  4. Links are wrong (404-problem)
  5. Re-use, attribution, IP rights, payments is a mess
  6. Controlled by a very small number of companies