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. 【计组】《计算机组成与体系结构性能设计》William Stallings 第2部分 计算机系统 第3章 计算机功能和互连的顶层视图

    关键词 address bus 地址总线 asynchronous timing 异步时序 bus 总线 bus arbitration 总线仲裁 bus width 总线宽度 centralized ...

  2. uniapp中使用animate.css4.1.1动画库在小程序中不生效解决办法

    找到源码animate.css修改以下代码 :root { --animate-duration: 1s; --animate-delay: 1s; --animate-repeat: 1; } // ...

  3. Zookeeper基础教程(五):C#实现Zookeeper分布式锁

    分布式锁 互联网初期,我们系统一般都是单点部署,也就是在一台服务器完成系统的部署,后期随着用户量的增加,服务器的压力也越来越大,响应速度越来越慢,甚至出现服务器崩溃的情况. 为解决服务器压力太大,响应 ...

  4. zabbix5.0监控安全配置全过程

    第一部分,安装 此安装配置为yum方式安装zabbix5.0 系统版本:CentOS Linux release 7.5.1804 (Core) zabbix版本:rpm -qa | grep zab ...

  5. 从Base64编码转换为图片文件

    package luckyclient.utils;import java.io.FileInputStream;import java.io.FileOutputStream;import java ...

  6. spring cloud --- 使用 actuator 热更新【刷新】单机配置文件

    1.前言 分布式微服务想要热更新配置文件,还需要 消息中间件 配合使用 ,一般使用 rabbitMQ 或 Kafka ,这里不解释 . 这篇随笔 只讲解 底层的 单机热更新配置文件 2.环境 spri ...

  7. ubuntu 18.04 安装mongodb并设为开机自启动

    导入包管理系统使用的公钥 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB4 ...

  8. vue备用

    handleCheck (item) { if (item.isChecked) { this.checkData.push(item.id) this.checkData = _.uniqWith( ...

  9. android入门--环境搭建

    运行环境 windows 7 下载地址 环境下载 最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是windows7的笔记本,也就只能到Windows中搭建 ...

  10. Sentry 企业级数据安全解决方案 - Relay 操作指南

    内容整理自官方文档 本篇回顾了我们在自托管外部使用 Relay 时的操作指南,即在您的硬件上运行的 Relay 并将事件转发到 sentry.io. 系列 Sentry 企业级数据安全解决方案 - R ...