​

Hello World!

回忆上次内容

  • python3 的程序是一个 5.3M 的可执行文件

    • python3 里面全都是 cpu 指令
    • 可以执行的那种指令
    • 我们可以把指令对应的汇编找到

      • objdump -d ~/python3 > python3.asm
  • 汇编语句是和当前机器架构的指令集相关的

    • uname -a可以查询指令集
  • 我们执行的过程其实就

    • 系统执行python3这个可执行文件
    • 给了python3一个参数hello.py
    • python3对于hello.py一句句的解释执行
    • 在显示器输出了hello world
    • python3执行完毕
    • 把控制权交回给 shell
  • 这就是我们执行hello world的过程
  • 为什么我们学编程总是从hello world开始呢?

为啥总是Hello World

​

奇怪

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

正在上传…重新上传取消

起源

  • 这一切都要从头说起

    • 目前操作系统的老祖宗 unix
    • 和他对应的编程语言 c
    • 是一切的开始

​

  • 1969 年,由于所在的Multics项目失败
  • 无所事事的两人

    • Kenneth Thompson
    • Dennis Ritchie
  • 希望能在 PDP 机器上继续玩一个游戏

    • 这个游戏是 Multics 下的 star travel
    • 他们想要做一个操作系统 unix
  • 为了制作操作系统

    • 他们创造了 c 语言的编译器
  • 当时

    • c 是他们为了开发 unix 而制作的语言
    • unix 是为了能玩 star travel 而制作的系统
  • c 和 unix 只能运行在当时的机器上

    • 没有文档
    • 没有书籍
    • 甚至没有人知道

hello world!

​

  • 与他们同在 bell 实验室的 Brian Wilson Kernighan

    • 开始写 c 语言的类似于文档说明书的东西

手稿

​

  • 整体的函数叫做 main函数

    • 里面输出函数就叫做 printf函数
  • 不管是main,还是printf都有小括号

    • 小括号 从那个时候就和函数相关
  • 为什么输出字符要用printf来当做函数名呢?

print 来历

  • 刚才那 1974 年的手稿

    • 写在打字机用纸的上面
    • 打字机就是当时的显示器
    • 所以用 print 来表示输出
    • f 的意思是 format 格式
    • printf 是按格式输出
  • printf函数 后面有 小括号

    • 小括号 里面放的是 函数 的 参数
    • print("hello world") 中

      • 函数print 的 参数 是 "hello world"
      • 双引号 引起来意味着hello world 是 字符串
      • 输出的内容就是这个字符串 ("hello world")
  • 从 c语言 开始

    • 最早的入门教学程序都做一个hello world
    • 习惯成自然之后
    • 所有的编程语言第一个例子都是hello world
    • 是一种规矩或者文化

成书

​

  • 1978 年,Kernighan和Ritchie出版了这本书

    • 不厚,很薄
    • 轻松的语言风格
    • 因为 c 的目的就是让人像玩一样编程
    • 而不是记忆各种 cpu 汇编指令
  • 蓬勃发展的计算机技术

    • 使得 c 语言成为系统语言的老大
    • python 的源代码就是用纯 c 编的
    • linux 内核 也是用纯 c 编的
    • 所以c还是非常核心的啊
  • 虽说 python 是用纯 c 编写的

    • 不过 python 一旦出现之后就可以简化好多东西

内置函数

  • 我们可以看到游乐场上来就自带一些函数和模块

​

  • 比如 dir() 这个函数
  • 调用这个函数可以知道当前游乐场载入了哪些模块
  • 比如 builtins 这个模块
  • 这 builtins 里面又有些什么呢?

dir()

  • dir(__builtins__)

​

  • buildins 意思是在里面构建好的

    • 这里面有好多内置的函数
    • 包括我们熟悉的

      • exit()
      • print()
      • dir()
  • 如果我想要查询更详细的信息应该如何呢?

help(__builtins__)

  • help(__builtins__)

​

  • 我们可以查询到__builtins__模块的帮助文件
  • 返回的这些函数和子模块都隶属于 __builtins 这个模块
  • 除了内置的、这些不用引入就可以用的模块之外

    • 还可以引入外部模块

导入模块

import __hello__

​

  • 这个模块可以输出经典的一句话
  • 还可以把新模块导入到游乐场
  • 注意!

    • 导入 __hello__ 模块前后游乐场中的模块增加了

总结

  • hello world 不是从来就有的
  • 来自于unix和c
  • 虽然我们今天有各种先进的学习手段
  • 最早的高级语言学习是从最早的那张打字机用纸的手写代码起源的

    • 所以输出用的是 print 打印
    • 最早输出的是字符串是 "hello world"
    • 这就成了一个迷因
  • 等等!

    • 计算机里面不都是二进制的 0 和 1 吗
    • 哪里来的hello 中的 h 之类的字符呢?
  • 我们下次再说!

​

oeasy教您玩转python - 006 - # hello world的更多相关文章

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

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

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  4. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  5. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  6. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  8. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  9. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. .Net下你不得不看的分表分库解决方案-多字段分片

    .Net下你不得不看的分表分库解决方案-多字段分片 介绍 本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本.零业务代码入侵 ...

  2. (数据科学学习手札133)利用geopandas绘制拓扑着色地图

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们在绘制某些地图时,为了凸显出每个独立的 ...

  3. AI实战分享 | 基于CANN的辅助驾驶应用案例

    摘要:什么是辅助驾驶?简而言之,就是借助汽车对周围环境的自动感知和分析,让驾驶员预先察觉可能发生的危险,有效增加汽车驾驶的舒适性和安全性. 导读:基于昇腾AI异构计算架构CANN的辅助驾驶AI应用实战 ...

  4. Representation Learning with Contrastive Predictive Coding

    目录 概 主要内容 从具有序的数据讲起 Contrastive Predictive Coding (CPC) 图片构建序 Den Oord A V, Li Y, Vinyals O, et al. ...

  5. <学习opencv> opencv 概述及初探

    目录 Opencv3 当前模块 OpenCV 贡献库(opencv_contrib) OpenCV 头文件 旧式C风格头文件 新式C++风格头文件 例程 DEMO1 - 显示图片 DEMO2 - 视频 ...

  6. [算法笔记-题解]问题 A: 例题4-1 一元二次方程求根

    问题 A: 例题4-1 一元二次方程求根 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 12 MB 题目描述 求一元二次方程ax2+bx+c=0的根,三个系数a, b, c ...

  7. 使用子查询获取,使用 all 关键字获取比所有“国内短线游”价格高的线路信息,按照线路类型、线路价格升序显示线路编号、线路名和价格

    查看本章节 查看作业目录 需求说明: 使用子查询获取"国内短线游"及"国内长线游"的线路信息,按照线路类型.线路价格升序显示线路编号.线路名和价格 使用 all ...

  8. 三角网格上的寻路算法Part.1—Dijkstra算法

    背景 最近在研究中产生了这样的需求:在三角网格(Mesh)表示的地形图上给出两个点,求得这两个点之间的地面距离,这条距离又叫做"测地线距离(Geodesic)".计算三角网格模型表 ...

  9. css 文本基础 实战 小米官方卡片案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. golang strings.Split函数

    golang strings.Split函数 https://play.studygolang.com/ package main import ( "fmt" "str ...