Skip to content

Latest commit

 

History

History
182 lines (139 loc) · 4.47 KB

288-900624-[趣味拓展]换行符的迷因_BCPL_安徒生童话_c语言_可移植.sy.md

File metadata and controls

182 lines (139 loc) · 4.47 KB
show version enable_checker
step
1.0
true

换行字符 来源

回忆上次内容

  • \n 就是 换行符
  • 换行符
    • 序号是
      • (1010)2进制
      • (10)10进制
      • (0a)16进制
    • 英文是
      • LF
        • 意思是Line Feed
  • 可以在《安德森仙话》的文本中
    • 总共324890个字符
    • 可以找到 每个字符对应的 字节形态
  • 其中 6206个"\n"字符
    • 对应着 字节b"\x0a"

图片描述

  • 《安德森仙话》 这书的名字
    • 好像听起来有点耳熟?🤔

《安徒生童话》

  • 这本书 后来被翻译成

    • 《安徒生童话》
  • 书里面有 很多耳熟能详的故事

    • 《皇帝的新装》
    • 《海的女儿》
    • 《丑小鸭》
    • 《红舞鞋》
    • 《卖火柴的小女孩》
    • 《拇指姑娘》

图片描述

  • 在 安徒生 所处的时代(1805-1875)
    • 丹麦 仍是 君主专制主义社会
      • 19世纪 20年代经济衰退
      • 工业化、电气化逐渐渗入社会组织当中
  • 童话用儿童视角透视复杂生活
    • 万物有灵
    • 风趣幽默

翻译

  • Jean Hersholt
    • 将160个故事 从丹麦文 翻译成 英文
  • 刘半农 1914年
    • 翻译了《皇帝的新衣》
  • 叶君健 1944年到1949年
    • 翻译了 安徒生童话 全集

图片描述

  • 互联网时代
    • 英文版安徒生童话 被谷腾堡项目 所收录

落实

  • ASCII编码
    • 是用0和1来表示字符的
  • 如下图所示
    • 文字是蓝色的
    • 字节是黑色的

图片描述

  • 为什么python会用\n

    • 来表示换行(Line-Feed)呢?
  • 这还要从编写python的

    • c语言 说起
  • c语言 中的 \n

    • 来自于什么呢?

追溯历史

  • c语言
    • 来自于 B语言
  • 1969年
    • B语言 就运行在bell实验室PDP-8
    • B语言 是 里奇和汤普逊 最早开发 unix的语言
  • 1971年
    • 里奇和汤普逊开始对于 B语言 进行改造
    • 在新买的 PDP-11
      • B语言B语言 写扩展
        • 称之为 NewB
  • 1973年
    • NewB 基本主体完成
      • 改名叫 c语言

图片描述

  • 他们用 手头的编译器和c语言
    • PDP-11 重写了一个 Unix Kernel

portable 可移植

  • 机器语言 和 汇编语言

    • 本来不具有 移植性
    • 就像 x86的二进制程序
      • 不能 直接运行 在arm上
    • 需要 移植
  • c语言 程序却可以

    • 很多架构 的处理器上 编译运行
  • 只要 该架构的处理器

    • 有对应的 c语言编译器和库
    • 就能顺利 将c语言源程序
      • 编译成 针对该处理器架构 的 二进制程序
    • 甚至能实现 跨平台编译
      • 也就是 交叉编译
  • 这就是 c语言

    • 在当时 能够发展的原因

图片描述

  • c语言 源自 B语言
    • B语言 也不是 凭空出现的
  • B语言
    • 源自 什么 呢?

Basic Combined Programming Language(BCPL)

  • B语言 源自
    • BCPL(Basic Combined Programming Language)
    • BCPL
  • 1967 年
    • 由剑桥大学的 Matin Richards 制作
    • BCPL 被牛津大学用做
      • OS6操作系统 上面 的 开发工具

图片描述

进入Unix

  • 最早 BCPL 语言
    • 就有个类似于l(ine)f(eed)的符号
    • 这是 关于换行符表示法 最早的记录

图片描述

  • 当时的换行符
    • 什么样 呢?

BCPL的换行符

  • 当时的换行符长成这样
    • !*n

图片描述

  • 上述程序的目标是
    • 输出 hello,world
    • 然后 再来个 回车
  • 所以hello world
    • 并不是 c语言的首创
    • 而是 从 c语言的爷爷 bcpl那时候 就有了
  • 从bcpl时代
    • Hello World
      • 就已经作为迷因(meme)
        • 开始传播

总结

  • \n换行符 的字节形态 是 (0a)16进制

图片描述

  • 我们可以用换行符
    • 给文本做个画框吗?🤔
  • 我们下次再说!👋