teletypewriter 历史

回忆上次内容

  • 上次见到了一个真的机械打字机

    • 感受到了蒸汽朋克的时代背景
  • 上上次区分了一些概念
    • terminal终端,电脑连线最终的端点
    • TeleTYpewriter,电传打印机,终端硬件
    • shell,终端硬件基础上的软件壳子
    • Console 控制台,直接连接主机的控制面板
  • 换行和回车是两回事
    • 换行 对应字节0x0A

      • Line-Feed 的意思是水平不动、垂直向上喂纸
      • 所以是feed
    • 回车 对应字节0x0D
      • Carriage-Return
      • 意思是让上图可移动的打印头
        • 好像可移动的四轮马车 Carriage)
      • 垂直不动、水平 到纸张左侧
      • 所以是Return
  • 对于换行和回车,不同层面的理解
    • 电传打字机:两件事,经常一起干,但也可以分别干
    • 不同操作系统
      • unix-like:大家一起简化这个成\n,就步调一致就都好了
      • mac:为了避免麻烦,我和unix-like一致
      • windows:原来我用户多,定什么规矩我说了算,现在我还是随大流吧
    • python 解释器
      • 首先我觉得unix-like做得对
      • 不管在什么系统、什么架构上
      • 我把这个事统一
  • 光说不练假把式
  • 我能看看电传打字机吗?
  • 那这0x0A0x0D谁规定的
  • 来自于什么呢?

发明人

  • 0x0A0x0D

    • 这两个字符 来自于 一套编码
    • 博多码(Baudot code)

  • 为什么 叫做 博多码(Baudot code)呢?

    • 因为 发明这个的人 叫波多

      • Jean-Maurice-Émile Baudot
      • 从农民
      • 到电报操作员
      • 再到法国电报工程师
      • 他收到Hughes的启发
    • 发明了 用一条线路 传输多个bit位

独特的按键和编码

  • 这是 最早 发报电键 的样子

    • 5-bit
    • 白色的
      • 有用
    • 黑色的
      • 是分隔符

  • 可以传输25种信号

    • 具体怎么 分配编码 呢?

Baudot 编码

  • 博多 设计了 编码的方法

    • 后来 他就 申请了法国专利

      • 再后来 申请了英国专利
  • 今天所用 的 波特 这个单位
    • 就是 来源于他

  • 但是 这种编码 只有字母

    • 没有 数字
  • 怎么发 带数目的电报 呢?

挂档

  • 把字符 分类 成两组

    • Letter

      • 字母
    • Figure
      • 数字和符号

  • 通过标志位 进行选择

    • 落实到 档位
    • 选 打字头
      • 由 哪组字模 进行输出
    • 通过 特定字符
      • 切换 字模档位
  • 按一下 0b01000
    • 切换 档位
  • 这种思想 来自于 机械

档位

  • gear 就是 齿轮

    • 来自 挂档

  • 从 蒸汽火车

    • 到 电动汽车

  • 甚至 计算机

    • 这样 一路下来

换挡键

  • 今天的 caps lock 和 shift

    • 种 换挡方式

  • 5bit 这样 就可以

    • 虚拟出 6bit 的效果
    • 但是 需要 一个字符 来切换状态
  • 还需要约定
    • 最初的状态
    • 以及
      • 状态多长时间之后
      • 重置回默认
    • 这些其实是 最早的session(会话)
  • 这种编码最终形成了ITA1编码

键盘

  • 形成了 qwer键盘 的基本布局

    • 有字符、数字、符号
    • 控制字符
      • BELL
      • LINE FEED
      • CAR RET
      • FIGS
      • LTRS

  • 在当时

    • 回车 和 换行

      • 还是两回事
    • 尤其 机械打字机
  • 打字符 速度快
    • 由于 是 机械装置
    • 换行+回车 速度慢
    • 换行时间 不给足的画
      • 下一个字符
      • 位置不确定
  • 往往
    • 多发一些 空(Null)
    • 延迟时间
  • 注意这个空(Null)
    • 不是空格(Space)
    • 空(Null)延迟时间
      • 却不 打印内容
    • 等 carriage return 回来
      • 继续 打印
  • 电传打字机
    • 有 什么经典机型 么?

ASR-33

  • ASR-33是当时的一代机皇

    • Automatic Send-Receive

  • 可以看到 当时的io设备

    • 纸带 存储
    • 打印纸 标准输出流
    • 打字机键盘 标准输入流
  • 为什么 当初 收发电报的 电传打字机
  • 会和 电子计算机 结合得 这么紧密 呢?

unix时代

  • 昂贵的 主机时代

    • PDP-7 小型机

      • 72000美元
    • GE-45
      • 1000万美元
  • 这就是 开发multics的 时代背景

  • 项目失败后

    • 无所事事的两人

      • Kenneth Thompson
      • Dennis Ritchie
    • 希望能在 PDP 机器上继续玩star travel
  • 于是 制作了 unixc
    • 目标是 分时 多用户系统

      • 分时

        • 意味着 各个进程
        • 可以 分享 硬件资源
      • 多用户
        • 意味着 要给 每个用户
        • 配置 一个 终端
  • 每个 用户 都要有
    • 显示器
    • 键盘

价格

  • 当时 所有的计算机设备

    • 价格 都非常昂贵
    • 显示器 别想了
    • 而且 键盘和主机 是 集成在一起
    • 没有独立的键盘

  • 最后

    • 找到 ASR33电传打字机
    • 电传打字机 的 用途
      • 是 收发电报
  • 但是
    • 也可以 作为

      • 人与计算机 的 接口
    • 而且 价格低廉
  • 编码 也随着
    • 机器 的 进化
    • 不断 进化

编码的进化

  • 在 ITA1 的基础上

    • 编码 进化
  • 类型 还是 三类
    • 字符
    • 符号包括数字
    • 控制字符

  • 特殊字符

    • ascii时代
    • 还有吗?
    • 比如bel?
  • 除了 \n\r 之外
    • 还有 什么控制字符 呢?
    • 黑暗森林 的 神秘面纱
      • 感觉 就要 揭开 了呢!

总结

  • 我们回顾了5bit-Baudot博多码的来历
  • 从 莫尔斯码 到 博多码
    • 原来

      • 人 来 收发电报
    • 现在
      • 机器 来 收发电报
    • 输入方式
      • 从 电键
      • 改成 键盘
    • 输出方式
      • 从 纸带
      • 变成 打印纸张
  • 后来
    • 电传打字机ASR-33
    • 成为 初代 经典终端
  • 除了 \n\r 之外
    • 还有 什么 特殊字符 吗?
  • 蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython
  • 视频->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy

[oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear的更多相关文章

  1. 字符输出流_Writer类&FileWriter类介绍和字符输出流的基本使用_写出单个字符到文件

    java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性的成员方法: - void write(int c) 写入单个字符 - void write(char[] ...

  2. 字符输出流_Writer类&FileWrite类介绍和字符输出流的基本使用_写出单个字符到文件

    字符输出流_Writer类&FileWrite类介绍 java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性抽象方法: void write(int c) ...

  3. SQL Server判断某个字段是否包含中文/英文字符/数字

    原文:SQL Server判断某个字段是否包含中文/英文字符/数字 因最近在清理系统中的脏数据,需要查询某个字段是否包含中文/英文字符/数字的数据, 比较简单,仅以此篇博客做一个简单总结,方便以后查阅 ...

  4. C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等

    C#.Java实现按字节截取字符串,字符串中包含中文汉字和英文字符数字标点符号等. 在实际项目应用过程中,尤其是在web开发时可能遇到的比较多,就以我的(JiYF笨小孩管理系统)为例,再发布文章时候, ...

  5. 实时竞价RTB广告平台_传漾科技_中国领先的智能数字营销引擎

    实时竞价RTB广告平台_传漾科技_中国领先的智能数字营销引擎 Programmatic Framework™ 传漾程序化购买框架

  6. 计算机二级-C语言-字符数字转化为整型数字。形参与实参类型相一致。double类型的使用。

    //函数fun功能:将a和b所指的两个字符串分别转化成面值相同的整数,并进行相加作为函数值返回,规定只含有9个以下数字字符. //重难点:字符数字转化为整型数字. #include <stdio ...

  7. python开发_tkinter_菜单选项中英文切换_菜单选项不可用操作_博主推荐

    我使用的python版本为:3.3.2 如果你对python中tkinter模块的菜单操作不是很了解,你可以看看: python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推 ...

  8. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  9. C语言第八次博客作业--字符数组

    一.PTA实验作业 题目1:查验身份证 1. 本题PTA提交列表 2. 设计思路 定义i,flag=1,z,m[11],a[19] 输入次数n for i=1 to n+1 gets(a) 加权求和在 ...

  10. C语言博客作业--字符数组

    一.PTA实验作业 题目1:统计一行文本的单词个数 1. 本题PTA提交列表 2. 设计思路 Begin 定义字符型变量ch,pre=' ': 定义整型变量count://用来记录单词个数 count ...

随机推荐

  1. Java基础 韩顺平老师的 常用类 的部分笔记

    459,八大Wrapper类 包装类的分类 1) 针对八种基本数据类型相应的引用类型-包装类 2) 有了类的特点, 就可以调用类中的方法. 460,装箱和拆箱 package com.hspedu.W ...

  2. TypeScript入门介绍

    目录 TypeScript入门介绍 什么是 TypeScript? 发展历史 优缺点 应用场景 开发工具 环境依赖 编程IDE vs调试 构建工具/工程化 步骤汇总 第一个项目 TypeScript入 ...

  3. gin+MySQL简单实现数据库查询

    利用 gin 项目搭建一个简易的后端系统. 一个简易的 HTTP 响应接口 首先在 go 工作区的终端输入这条指令: go get -u github.com/gin-gonic/gin 将 gin ...

  4. 解读注意力机制原理,教你使用Python实现深度学习模型

    本文分享自华为云社区<使用Python实现深度学习模型:注意力机制(Attention)>,作者:Echo_Wish. 在深度学习的世界里,注意力机制(Attention Mechanis ...

  5. Android 13 - Media框架(14)- OpenMax(二)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将来解析 media.codec 这个 HIDL service 究竟提供了什么服务,服务是如何启动的. 1.main 函数 我们先来看 ...

  6. C# || 批量翻译工具 || 百度翻译api || 读取.cs文件内容 || 正则表达式筛选文件

    背景: 我们项目一开始的所有提示都是中文,后来要做国际化.发现项目中的带双引号的中文居然有 2.3 w 多条!!!简直让人欲哭无泪... 如果使用人工改的话,首先不说正确率了.光是效率都是难难难.所以 ...

  7. 算法学习笔记(35): CMD Tree

    对于 CMD Tree 的理解 原文:# 一种轻量级平衡树 这,EXSGT,感觉很像支持分裂 WBLT,但是相对来说思路很简单. 首先,在原文中说了: 能以均摊 \(\Theta(\log n)\) ...

  8. xv6 的锁机制

    LOCK 公众号:Rand_cs 锁,大家应该很熟悉了,用来避免竞争,实现同步.本文以 xv6 为例来讲解锁本身是怎么实现的,废话不多说,先来看一些需要了解的概念: 一些概念 公共资源:顾名思义就是被 ...

  9. 带你了解磁盘驱动程序(xv6)

    磁盘驱动程序 本文来聊聊磁盘驱动程序,驱动程序是硬件的接口,操作系统通过这个接口来控制硬件工作,所以驱动程序就好比是硬件和系统之间的桥梁.这是百科上给出的解释,可能看起来还是云里雾里,我来做做注解. ...

  10. 极限科技(INFINI labs)荣获中国信通院大数据“星河”标杆案例

    12 月 6 日,由中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织的 2023 大数据"星河(Galaxy)"案例评选结果正式公示. ...