Erlang/Elixir精选-第5期(20200106)
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
- a plea for lean software - niklaus wirth
- the emperor's old clothes- acm turing award lecture - tony hoare
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
- algorithms+data structures=programs
- the mythical man-month(人月神话)
- how to win friends and influence people(人性的弱点-卡内基)
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
- the computer revolution has not happened yetalan kay
- computers for cynicsted nelson
- free is a lie (aaron balkan)
- how a handful of tech companies control billions of minds every day tristan harris (ted-talk)
- matt might - winning the war on error: solving halting problem, curing cancer - code mesh 2017
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
- linda tuple spaces
- boyer–moore string search algorithm
- flow-based programming
- project xanadu
- unix pipelines
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小时在去官网上下载体验了一把,但是给人的感觉是上世纪的东西,我想这也是它不火,特别小众的原因吧。看样子几乎没有人用。官网例子也是几年前。
投稿或推荐,精选每周一发布,同步更新在,。