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

Learning

  • 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.


个人感受

感觉老爷子是一个聪明(智慧)且非常有激情的人,乐于分享。恨不得在这40分钟内把所有的技术积累、人生经验都能分享给大家。老一辈也有信息过载的焦虑,可能感受到他对现代人对社交平台的过度依赖的担心。中间一大段对tiddlywiki的推荐和Joe把自己的博客主页全部变成tiddlywiki,让我花了2小时在去官网上下载体验了一把,但是给人的感觉是上世纪的东西,我想这也是它不火,特别小众的原因吧。看样子几乎没有人用。官网例子也是几年前。



欢迎来语雀投稿或推荐,精选每周一发布,同步更新在语雀博客园

Erlang/Elixir精选-第5期(20200106)的更多相关文章

  1. Erlang/Elixir精选-第4期(20191223)

    精选文章 A digital symphony - The architecture of API Fortress. 使用Actor模型来支持基于微服务的大规模分布式软件架构.用实例解释了Actor ...

  2. Erlang/Elixir精选-第1期

    第1期(20191202) 文章 A short guide to the structure and internals of the Erlang distributed messaging fa ...

  3. Erlang/Elixir精选-第2期(20191209)

    Spot The Discrepancies with Dialyzer for Erlang. 如何在大型Erlang项目中从零开始一步步践行Dialyzer. Which companies ar ...

  4. Erlang/Elixir精选-第3期(20191216)

    2019年,Erlang社区在应用层上除了aeternity区块链让人印象深刻(Killer App)外,就没有特别出彩的应用出现.在Web,IoT,MessageQueue这些成熟领域,已经有相当成 ...

  5. Erlang/Elixir精选-第6期(20200113)

    精选文章 Implementing languages on the Erlang VM. -Robert Virding. 因为视频没有显示PPT,PPT可以在点击这里下载. leex - lexi ...

  6. Erlang/Elixir精选Q&A

    精选的定位是什么? 已至2019年,Erlang/Elixir中文社区还是一座黑暗森林,每个技术人都怀揣着自己独有的葵花宝典独自摸索,没有一个开放的分享平台,大量优质文章没有得到该有的关注. 与此同时 ...

  7. erlang,elixir安装

    erlang下载地址:https://packages.erlang-solutions.com/erlang/ elixir(precompile版)下载地址:https://github.com/ ...

  8. Skynet Pomelo Erlang Elixir 的认识

    1.skynet pomelo(node.js) elixir(erlang) 周末研究总结 手游这两年发展来看,感觉对实时性要求越来越高,有同事在研究Elixir开发,google得知这东西是基于e ...

  9. Erlang/Elixir: 使用 OpenCV, Python 搭建图片缩略图服务器

    这篇文章是在OSX上测试和运行的的, Ubuntu下的安装和配置请移步到这里 应用程序进程树, 默认 Poolboy 中初始化10个用于处理图片的 Python 工作进程(Worker) 首先安装Op ...

随机推荐

  1. Django 学习 之 模板(html)与配置静态文件

     一.模板(html) 1.模板语法之变量:语法为 {{ }} 在 Django 模板中遍历复杂数据结构的关键是句点字符, 语法:{{ var_name }} var_name 是一个变量名称,需要和 ...

  2. 【JAVA蓝桥杯】基础练习1 十进制转十六进制

    资源限制 时间限制:1.0s   内存限制:512.0MB 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式.它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16 ...

  3. 如何查看python的notebook文件.ipynb

    文章中的ipython notebook和jupyter notebook基本可以互换,不过使用ipython notebook会警告您要使用jupyter notebook.其他没有区别. ---- ...

  4. iOS下JS与OC互相调用

    背景情况: app项目中有几个界面是需要经常变动的(不仅是内容还有UI布局等),比如活动宣传界面就是属于这一类.但是由于AppStore提交审核也是需要时间的,就算审核快,也不至于每次都为了这点事频繁 ...

  5. 详述ThreadLocal

    ThreadLocal的作用和目的:用于实现线程内的数据共享,即对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份数据. 举一个反面例子,当我们使用简单 ...

  6. 学习进度-16 python爬虫

    爬虫是一个程序,这个程序的目的就是为了抓取万维网信息资源,比如你日常使用的谷歌等搜索引擎,搜索结果就全都依赖爬虫来定时获取 从百度可以看出来 爬虫与python关系很紧密, 爬虫的目标对象也很丰富,不 ...

  7. ReentrantReadWriteLock之读写锁判断

    一. 读写锁是怎么实现的? 继承AQS,然后通过将AQS中的state转化为二进制,分为高16位和低16位来区分.高16位表示读状态,低16位为写状态. 二. 解析表示方式(高低16位) 假设此时st ...

  8. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

  9. [经验] HTML页面中子盒子溢出了怎么办

    背景: 在查询数据记录的一个页面上使用bootstar 框架的分页插件作为显示数据表格的工具. 问题: 当查询的范围在一个较短的时间内时, 子元素是乖乖的呆在父元素内部的, 但是一但将查询的时间范围扩 ...

  10. Python集合语法

    a = {1,2,3,4,5,6,7,8,"aa","2"}    b = {2,3,4,5,6,7,8,9,99,7,6,6} v = a.intersect ...