Skip to content

Latest commit

 

History

History
272 lines (192 loc) · 6.72 KB

014-87385-hello_world的由来_unix时代_multics.sy.md

File metadata and controls

272 lines (192 loc) · 6.72 KB
show version enable_checker
step
1.0
true

Hello World!

回忆上次内容

  • 上次 设置了 断点
    • 断点 可以把代码
      • 切成一段一段的
      • 可以 更快地调试
    • 调试的目的 是 去除 bug
  • 别害怕 bug
    • 一步步 总能找到 bug
    • 这 就是 程序员基本功
      • 调试 debug
      • 这个bug虫子🕷
        • 是有历史渊源的
  • 为什么写程序
    • 从hello world开始?🤔

为啥总是 Hello World

图片描述

  • 各种语言都从 Hello World 开始

奇怪🧐

  • 不论学习 什么编程语言
    • 总是从 Hello World 开始

图片描述

  • 那我们来看看
    • c语言hello world的故事

c语言

  • linux系统的老祖宗是 unix

图片描述

  • unix对应的编程语言 c语言

出现

  • 1960年
    • Dartmouth 出现另一种分时系统
    • 可以让主机同时面对多个终端
    • 以非独占的方式进行使用

图片描述

  • 贝尔实验室、通用电气、MIT 心动了
    • 想要制作类似的操作系统

multics

  • 计划的系统叫做multics

图片描述

  • multics很注重多
    • 多用户
    • 多任务
    • 多层次
    • 多则惑
  • 1969 年
    • 发生金融动荡
    • 这个商业项目由于进度不可控
    • 最终被裁撤

multics模拟器

图片描述

两人

  • 项目组被裁撤后
    • 无所事事的两人
      • Kenneth Thompson
      • Dennis Ritchie

图片描述

  • 他俩曾在 multics项目专用主机Ge635上
    • 自制游戏了 《space travel》
  • 这下子主机没有了
    • 游戏也没法玩了

图片描述

新的希望

  • Thompson希望能搞到一个PDP系列主机

    • 好继续玩star travel
  • 他写报告 申请买一个PDP-10

    • 大概需要12万美元
    • 结果是请求被驳回

图片描述

  • Thompson 发现了意外之喜

unix

  • Thompson 在实验室角落发现
    • 有一台几乎全新的PDP-7
      • 1964年生产的

图片描述

  • Thompson 利用multics中积累的经验
    • 三周做了 一个操作系统 unix
    • 但是 新系统上 怎么做应用 呢?

c语言

  • ThompsonRitchie
    • 创造了
      • c语言
      • c语言的 编译器

图片描述

  • 当时
    • c 是他们为了开发 unix应用
      • 而制作的语言
    • unix 是为了 能玩star travel
      • 制作的系统
  • 后来 实验室
    • 新买了一台 PDP-11
    • 他们把unix移植到了PDP-11上

hello world!

  • cunix 运行 PDP-11 上
    • 没有 文档
    • 没有 书籍
    • 甚至 没有人 知道

图片描述

  • Ritchie 在ACM通讯上
    • 写了一篇文章

文章

  • Ritchie于1974年7月的 the Communications of the ACM发表
  • 这是UNIX与外界的首次接触
    • 结果引起了学术界的广泛兴趣并对其源码索取
  • Unix第五版就以“仅用于教育目的”的协议
    • 提供给各大学教学用
    • 成为当时操作系统课程中的范例教材

图片描述

  • 各大学公司开始通过Unix源码对Unix进行了各种各样的改进和扩展
    • Unix开始广泛流行

图片描述

  • 在当时的环境中
    • 对于教科书的要求非常迫切
  • 与二人同在 bell实验室的
    • Brian Wilson Kernighan
    • a.k.a bwk
      • 开始和Ritchie一起
        • 写 c语言的说明书

手稿

  • 主函数 叫做 main函数
    • 里面输出函数 叫做 printf函数
      • 输出的内容就是
        • Hello, world!
        • 这句hello,world!他们也是引用的

图片描述

  • 不管是main函数
    • 还是printf函数
      • 都有小括号
      • 小括号 从那个时候 就和函数相关
  • 为什么 输出字符
    • 要用printf 来当函数名 呢?

print 来历

  • 1974 年的手稿😱
  • 写在 打字机用纸上面
  • 侧面的孔洞 是向上送纸用的
    • 是不是 很机械 很像胶片

图片描述

  • 打字机 就是
    • 当时的显示器
  • 所以用 print来表示输出
    • f的意思是 format格式
    • printf是 按格式输出

细节

  • printf函数 后面有小括号
    • 小括号里面放的是 函数参数
    • print("hello world")
      • print函数参数"hello world"
  • 双引号 引起来意味着
    • hello world字符串
    • 输出的内容就是
      • 这个字符串 "hello world"

图片描述

  • 小括号 和 双引号的风格
    • 延续到了python

成书

图片描述

入门

  • c语言开始
    • 最早的入门教学
      • 都是hello world
      • 习惯成自然之后
        • 所有的编程语言第一个例子都是hello world

图片描述

  • 是一种文化

出处

  • hello world 出现在
    • 原书13页

图片描述

  • 都说计算机科技日新月异
    • hello world这个梗
      • 为什么能一直流传到今天?

总结

  • hello world 不是 从来就有的

    • 来自于 unixc
    • 最初是Thompson的个人项目
    • 后来逐步发展成了操作系统的源头
  • 最早的 高级语言学习

    • 是从那张打字机用纸的手写代码 起源的
  • 输出用的函数名print(打印)

    • 也是 从那个时候来的

图片描述

  • 最早输出的是字符串 是 "hello world"
    • 也是 从那个时候来的
    • 这就成了一个梗
    • 都说计算机科技日新月异
      • hello world这个梗
        • 为什么能一直流传到今天?🤔
  • 我们下次再说!👋