笔记14 笨办法中折磨人的习题ex23.py,人类语言与计算机语言

开始学习习题23了,但为了那个languages.text的下载,费了老大劲好像还是没有下载全。后来载下来了,那个代码文件录下来,却怎么也不能在ps中执行。检查了无数次,执行了无数次,每次都是最后一行代码中的languages未予定义。今天的一整天奉献给了这个ex23.py,看来只能缴械投降,学一点有关字节串和字符串,有关编码语言标准的东西,也就是人类语言与计算机的东西了。这也很有意义,后面还有大把的练习可以做,来点理论与历史的武装吧。
不过,今天有高手给我回复,好像给了我勇气,右重新检查ex23.py,也许是昨天的路径有误,今天复查后,改正了两个地方,立刻就顺利执行了。
练习ex23.py

在这里插入代码片import sys
script, encoding, error = sys.argvdef main(language_file, encoding, errors):line = language_file.readline()if line:print_line(line, encoding, errors)return main(language_file, encoding, errors)def print_line(line, encoding, errors):next_lang = line.strip()raw_bytes = next_lang.encode(encoding, errors = errors)cooked_string = raw_bytes.decode(encoding, errors = errors)print(raw_bytes, "<===>", cooked_string)languages = open("languages.txt", encoding = "utf-8")main(languages, encoding, error)

Ps中执行后的一部分结果

b'<!DOCTYPE html>' <==> <!DOCTYPE html>
b'<!-- saved from url=(0079)https://github.com/ubarredo/LearnPythonTheHardWay/blob/master/languages.txt#L97 -->' <==> <!-- saved from url=(0079)https://github.com/ubarredo/LearnPythonThe
HardWay/blob/master/languages.txt#L97 -->
b'<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">' <==> <html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
>
b'' <==>
b'<link rel="dns-prefetch" href="https://github.githubassets.com/">' <==> <link rel="dns-prefetch" href="https://github.githubassets.com/">
b'<link rel="dns-prefetch" href="https://avatars0.githubusercontent.com/">' <==> <link rel="dns-prefetch" href="https://avatars0.githubusercontent.com/">
b'<link rel="dns-prefetch" href="https://avatars1.githubusercontent.com/">' <==> <link rel="dns-prefetch" href="https://avatars1.githubusercontent.com/">
b'<link rel="dns-prefetch" href="https://avatars2.githubusercontent.com/">' <==> <link rel="dns-prefetch" href="https://avatars2.githubusercontent.com/">
b'<link rel="dns-prefetch" href="https://avatars3.githubusercontent.com/">' <==> <link rel="dns-prefetch" href="https://avatars3.githubusercontent.com/">
b'<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com/">' <==> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com/">
b'<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">' <==> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
b'' <==>
b'' <==>
b'' <==>
b'<link crossorigin="anonymous" media="all" integrity="sha512-FG+rXqMOivrAjdEQE7tO4BwM1poGmg70hJFTlNSxjX87grtrZ6UnPR8NkzwUHlQEGviu9XuRYeO8zH9YwvZhdg==" rel="stylesheet" href="./LearnPyth
onTheHardWay_languages.txt at master \xc2\xb7 ubarredo_LearnPythonTheHardWay_files/frameworks-146fab5ea30e8afac08dd11013bb4ee0.css">' <==> <link crossorigin="anonymous" media="all" integ
rity="sha512-FG+rXqMOivrAjdEQE7tO4BwM1poGmg70hJFTlNSxjX87grtrZ6UnPR8NkzwUHlQEGviu9XuRYeO8zH9YwvZhdg==" rel="stylesheet" href="./LearnPythonTheHardWay_languages.txt at master · ubarredo_
LearnPythonTheHardWay_files/frameworks-146fab5ea30e8afac08dd11013bb4ee0.css">
b'' <==>
b'<link crossorigin="anonymous" media="all" integrity="sha512-vMKRtbQ9h8VmzccMNdmnlBnTLM9zZar8f9BKU3A5UNRZgr3o2+zXRScLx7V1nd9HupewEuevhEx2D3yuqNpkXw==" rel="stylesheet" href="./LearnPyth
onTheHardWay_languages.txt at master \xc2\xb7 ubarredo_LearnPythonTheHardWay_files/github-bcc291b5b43d87c566cdc70c35d9a794.css">' <==> <link crossorigin="anonymous" media="all" integrity
="sha512-vMKRtbQ9h8VmzccMNdmnlBnTLM9zZar8f9BKU3A5UNRZgr3o2+zXRScLx7V1nd9HupewEuevhEx2D3yuqNpkXw==" rel="stylesheet" href="./LearnPythonTheHardWay_languages.txt at master · ubarredo_Lear
nPythonTheHardWay_files/github-bcc291b5b43d87c566cdc70c35d9a794.css">
b'' <==>
b'' <==>
b'' <==>

算是把这个ex23做通了,让人轻松了很多。
继续谈谈语言。
我们人类集体创造了自然语言,几乎是无数种的自然语言。自然,最为流行的就是那些人口基数大,使用范围广,或者影响力大的自然语言,例如英、法、德、西班牙、葡萄牙、日本、俄罗斯语,还有中文等自然语言。
科学的诞生,又使得很多学科都有一些属于学科范围内的专业术语。这样,在自然语言的基础上又有了许多专业性的人工语言,逻辑学就有自己的人工语言。由英国人布尔和德国人弗雷格开创的现代逻辑,就是一套属于自己学科的人工语言描述的,例如命题逻辑的语言,谓词逻辑的语言等等。
计算机的奠基人之一,诺依曼曾说过一句话,称人脑的语言不是数学的语言,这个人脑的语言应该指的就是自然语言,它不数学,应该也不逻辑。但因为有人工语言的出现,大概也就把自然语言不大合逻辑的特性给克服了一些。
而当真正的计算机在20世纪的40年代产生之后,计算机,其实应该称电子计算机,也称诺伊曼结构的计算机,也就有了自己的语言。这个语言如今称作计算机语言,或者称编程语言。
编程语言历史不过半个多世纪,但也像自然语言一样,多种多样,千姿百态。似乎是,具有自身语言的计算机也确实和人类有得一拼,计算机有了自己的语言之后,仿佛就越来越把它自身人造的特征造得和人越来越近,于是就有了机器人,有了人工智能。且在很多领域超越自然人,这些机器,现在既是人类的帮手,也有可能成为威胁自然人的异类。
至少,那些有智慧的机器人,对于自然人的就业就是一个很大的威胁。好在机器人还是需要自然人的编程才会工作,所以一个既有自然语言能力,又有机器语言能力的人,大概有更强有力的生存竞争物竞天择的本领。这个随议很是有趣,但非本文主题,我们还是转到计算机的编程语言中来吧。
自然语言好像不用分层,最多也只有一个模糊的文雅粗俗之分,断没有底层高级之分。计算机则至少有两个层次的语言,一个是在存储层面的,如同人脑的记忆机构一样;一个是计算机操作层面的,大概和人使用自然语言相似。存储层面的计算机语言,就是所谓的机器语言或者汇编语言(assemble language)。这种语言实际上是布尔逻辑值在机器上的使用,是人把计算机当作一个电子机器,有启动和停机两种基本操作模式,这大概也是计算机称作电子计算机的原因吧。
如同教材所言:
它们(指计算机)根本上就是一个巨大的开关阵列。计算机用电来触发这些开关的开启或关闭。用1表示开,用0表示关。
计算机然后用0和1来编码出无数的数字,因为数字的进位有各种制式,其中的八进位制式是最常用,并且是最经济的。于是在上世纪的50年代,产生了计算机语言的第一个约定ASCII(American Standard Code for Information Interchange用于信息交换的美国标准编码)。
这个约定构成了计算机的底层语言,我们由此就可以把8个位(bit)编码一个字符。这就产生了两个计算机语言的术语,一个是字符(character),一个是字节(byte)。
但这个约定只满足欧美文字的需要,随着计算机在全世界的逐渐普及。同时也因为信息技术在上个世纪下半叶的迅猛发展,不仅是欧美语言,更多的信息源成为计算机的处理对象。美国人再一次意识到,他们应该提出一种标准方案来展示世界上所有语言的所有字符,为这个全球化的目的,Unicode诞生了,1991年出现满足这个目的的万国码Unicode(universal encoding),它可以用32位来编码字符。这样的容量扩充,可以装得下全世界所有的语言,用教材的话说:再装一堆外星人语言也不是不够。
不过,32位是四个字节,它对文本的构造和传输会是一个巨大浪费。十多年之后,又是美国人,把这个标准进一步提升,由Ken Thompson和Rob Pike,1983年图灵奖得主,共同推出了新的编码传输标准。这就是UTF-8(8-bit Unicode Transformation Format)。
Ken Thompson照片

Rob Pike照片

于是我们就有了另外一个有关编码的约定,一种压缩编码的方式,它针对常见字符使用8位,需要的时候再去使用16位或者32位。我们所学的这个python语言,运用的就是这个UTF-8标准。
运用这个utf-8标准,我们在计算机上可以做两个方向上的工作。一个方向是解剖输出,一个方向是解剖代码。这两方面的工作,我好像还是刚刚接触,只浅显地知道教材告诉我的两个专业术语。一个是解码字符串,英文名:decode bytes,这个解码字符串是要求主体把字节串转成字符串“from byte to string”。另一个是编码字符串,英文名:encode strings,这个编码字符串是要求主体把字符串转换成字节串。
大概是,一个是把字符串从计算机底层输出,另一个则是把字符串变成字节串存储到计算机之中吧。2020/04/15

笔记14 笨办法中折磨人的习题ex23.py,人类语言与计算机语言相关推荐

  1. 笔记25 笨办法习题35分支和函数路线图

    笔记25 笨办法习题35分支和函数路线图 这似乎是前面ex31游戏的一个延续,这么长的脚本录下来了,用ps执行,很快就纠正若干字码错误,顺利执行完毕.我先试着把这个代码的思路做个整理,理解各个指令的基 ...

  2. 【读书笔记】Python编程-基础知识和案例讲解,“笨办法”学Python 3_2020.02.15

    [概述] --书名:"笨办法"学Python 3 --作者:泽德 A.肖 --日期:2020年02月15日 --大事件记录: 截至2月14日24时,据31个省(自治区.直辖市)和新 ...

  3. python实现中撤销上一步的代码mac_一个“MacBook”新手的Python“笨办法”自学之旅 #第六章:常用的简易Python命令、符号、代码、格式化字符串...

    第六章:常用的简易Python命令.符号.代码.字符串 <"笨办法"学Python>这本书中,确实用了较多篇幅来介绍Python的一些常用简单的命令.符号.代码和字符串 ...

  4. 笨办法学习python 学习笔记习题26

    笨办法学习python 学习笔记习题26 修改后如下: print("你多大了?", end=' ') age = input() print("你多高?", ...

  5. 高收益的笨办法:暴破在Windows提权中的应用

    千辛万苦拿下的 webshell 不是 www-data 用户就是 networkservice 权限,要想拓展攻击面.扩大战果,提权,是必经之路,也是后渗透阶段成功的关键.windows 提权,我常 ...

  6. 笨办法学python3_月底送书!入门Python都在学的“笨办法”,出进阶篇了!

    你们知道吗?每10个将Python作为自己的入门语言的程序员里,就有8个是读着<"笨办法"学Python>的书成长的!这位拥有近20年的编程和写作经验的IT书籍作家-- ...

  7. Go语言开发学习笔记(持续更新中)

    Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...

  8. 笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解

    笔记37 笨办法学python练习43面向对象OOP的游戏代码(二)代码的反复理解 连续贴着这个练习43的代码折腾了整整两天,把那些英文文本翻译为中文文本,重新装进这个代码之中.本想一段一段的运行,发 ...

  9. 笔记36 笨办法学python练习43面向对象OOP的文字理解(一)

    笔记36 笨办法学python练习43面向对象OOP的文字理解(一) 先仔细看了本练习的文本,感到一个笔记写不下来这个复杂的练习过程,那就先把文字理解的部分先来完成,再用一篇笔记来完成代码的理解. 一 ...

最新文章

  1. 遭遇错误:ORA-01031
  2. Leaflet中获取两个地理坐标点之间的距离
  3. pca 和lda区别
  4. html引入jquery_jQuery
  5. 阻止事件冒泡两种方式:event.stopPropagation();和return false;
  6. lnmp基于fastcgi实现nginx_php_mysql的分离_LNMP基于FastCGI实现Nginx,PHP,MySQL的分离
  7. 【JavaScript】百度地图API快速上手
  8. Spring 声明式事务应该怎么学?
  9. jquery控制span的display属性为 none
  10. 简单理解JavaScript中的闭包
  11. 02在Windows Server 2008R2上面将客户端加入域
  12. 隐马尔科夫模型HMM学习最佳范例
  13. VScode中SVN插件详细配置【官网】
  14. HEVC与AVC的区别与联系(十二),Android面试题集锦在这里
  15. 嗅探器c语言源码,自己做的嗅探器
  16. c++笔记(class)练手项目:暗网杀手排名系统
  17. sklearn使用入门
  18. C - 一只小蜜蜂...
  19. 基于java jsp的大学教室管理系统
  20. centos6.5下搭建IHE

热门文章

  1. 详述Google针对Android平板App发布的十大开发准则
  2. 基金被套高位,可以通过做T降低持仓成本并盈利吗?
  3. eclipse 中Java导入外部项目报Description Type Target runtime Apache Tomcat v8.5 is not defined.
  4. 聚观早报|苹果版余额宝四天吸金69亿;​微软拟推出私有版ChatGPT
  5. JQuery-下拉菜单列表
  6. C语言中P2=~(1左移i)是什么意思?
  7. taro做项目html写在哪里,用Taro写一个微信小程序(一)——开始一个项目
  8. 网易游戏笔试题(1) 20171209
  9. 基于Django简单实现一个员工管理系统
  10. VMware虚拟机安装Linux系统