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 而制作的系统
  • cunix 只能运行在当时的机器上

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

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 年,KernighanRitchie出版了这本书

    • 不厚,很薄
    • 轻松的语言风格
    • 因为 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 不是从来就有的
  • 来自于unixc
  • 虽然我们今天有各种先进的学习手段
  • 最早的高级语言学习是从最早的那张打字机用纸的手写代码起源的

    • 所以输出用的是 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. opencv学习(六)——图像基本操作

    图像基本操作 一.访问和修改像素值 先来理解一下,图像与一般的矩阵或张量有何不同(不考虑图像的格式,元数据等信息).首先,一张图像有自己的属性,宽,高,通道数.其中宽和高是我们肉眼可见的属性,而通道数 ...

  2. Vue.js高效前端开发 • 【Vue列表渲染】

    全部章节 >>>> 文章目录 一.v-for指令 1.v-for指令使用 2.实践练习(待更新) 二.计算属性 1.计算属性创建和使用 2.实践练习(待更新) 三.侦听属性 1 ...

  3. 编写Java程序,以继承和多态思想模拟饲养员喂养不同动物的不同行为

    返回本章节 返回作业目录 需求说明: 以继承和多态思想模拟饲养员喂养不同动物的不同行为 动物园有饲养员和动物,其中动物有老虎.马.猴子.羊.狼等. 饲养员对不同的动物有不同的喂养行为. 实现思路: 以 ...

  4. 物理CPU,物理CPU内核,逻辑CPU概念详解

    1.说明 CPU(Central Processing Unit)是中央处理单元, 本文介绍物理CPU,物理CPU内核,逻辑CPU, 以及他们三者之间的关系, 一个物理CPU可以有1个或者多个物理内核 ...

  5. Azure Terraform(九)GitHub Actions 实现 Infra 资源的自动化部署

    思路浅析 使用 Terraform Code 部署 Azure 基础设施资源是特别受欢迎的,我曾经有写文章分享过利用 Azure DevOps 自动部署 Terraform Code 所描述的 Azu ...

  6. python自动化适应多接口的断言怎么做?

    最近做的接口自动化,遇到了很多模块的接口,返回的断言不太相同,在放在unnitest单元测试框架+ddt数据驱动,做参数时,发现不能只通过一个方式进行断言,那么,要怎么做才能做到适配当前所有接口的断言 ...

  7. ARP解析MAC地址的全过程(ARP的工作机制)

    以太网环境下,同一个网段的主机之间需要互相知道对方的MAC地址,才能访问. TCP/IP协议栈从上层到下层的封装过程中,第三层封装需要知道目的IP,第二层封装需要知道目的MAC. 目的IP一般由用户手 ...

  8. HW防守 | Linux应急响应基础

    最近也是拿到了启明星辰的暑期实习offer,虽然投的是安服,但主要工作是护网,昨天在公众号Timeline Sec上看到有一篇关于护网的文章,所以在这里照着人家写的在总结一下,为将来的工作打点基础. ...

  9. vue 快速入门 系列 —— 模板

    其他章节请看: vue 快速入门 系列 模板 前面提到 vue 中的虚拟 dom 主要做两件事: 提供与真实节点对应的 vNode 新旧 vNode 对比,寻找差异,然后更新视图 ①.vNode 从何 ...

  10. 【Java】单例设计模式

    文章目录 单例设计模式 什么是设计模式 单例设计模式 实现 饿汉式 懒汉式 饿汉式与懒汉式的区别 饿汉式 懒汉式 单例模式的应用场景 单例设计模式 什么是设计模式 设计模式是在大量的实践中总结和理论化 ...