Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[oeasy]python0010_hello_world_unix_c历史迷因

[oeasy]python0010_hello_world_unix_c历史迷因

原创
作者头像
oeasy
发布于 2022-11-04 11:14:13
发布于 2022-11-04 11:14:13
80000
代码可运行
举报
运行总次数:0
代码可运行

Hello World!

回忆上次内容

  • 我们这次设置了断点
  • 设置断点的目的是更快地调试
  • 调试的目的是去除 ​​bug​
  • 别害怕 ​​bug​
  • 一步步地总能找到 ​​bug​
  • 这就是程序员基本功
  • 调试 ​​debug​
  • 这个bug虫子🕷是有历史渊源的
  • 编程也是有历史迷因的
  • 为什么写程序都从hello world开始?🤔

为啥总是​​Hello World​

编辑

奇怪🧐

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

编辑

  • 为什么呢?🤔

起源

  • 这一切都要从头说起
  • ​linux​​ 操作系统的老祖宗 ​​unix​
  • 和 ​​unix​​ 对应的编程语言 ​​c​

编辑

  • 那是一切开始的地方

两人

  • 1969 年,由于所在 ​​at&t​​ 贝尔实验室的 ​​Multics​​ 项目失败

编辑

  • 无所事事的两人
  • ​Kenneth Thompson​
  • ​Dennis Ritchie​

编辑

游戏

  • 希望能在 PDP 机器上继续玩一个游戏
  • 这个游戏是 ​​Multics​​ 下的 ​​star travel​

编辑

  • 为了玩这个游戏
  • 他们想要做一个操作系统 ​​unix​
  • 为了制作操作系统
  • 他们创造了 ​​c​​ 语言的编译器

编辑

  • 当时
  • ​c​​ 是他们为了开发 ​​unix​​ 而制作的语言
  • ​unix​​ 是为了能玩 ​​star travel​​ 而制作的系统

hello world!

  • ​c​​ 和 ​​unix​​ 只能运行在当时的机器上
  • 没有文档
  • 没有书籍
  • 甚至没有人知道

编辑

  • 与他们同在 bell 实验室的 ​​Brian Wilson Kernighan​​ a.k.a ​​bwk​
  • 开始写 c 语言的类似于文档说明书的东西

手稿

  • 主体的函数叫做 ​​main​​函数
  • 里面输出函数叫做 ​​printf​​函数

编辑

  • 不管是​​main​​函数,还是​​printf​​函数都有​​小括号​
  • ​小括号​​ 从那个时候就和函数相关
  • 为什么输出字符要用​​printf​​来当做函数名呢?

print 来历

  • 1974 年的手稿😱
  • 写在打字机用纸的上面
  • 侧面的空洞是向上送纸用的
  • 是不是很像胶片

编辑

  • 打字机就是当时的显示器
  • 所以用 ​​print​​ 来表示输出
  • ​f​​ 的意思是 ​​format​​ 格式
  • ​printf​​ 是按格式输出

细节

  • ​printf函数​​ 后面有 ​​小括号​
  • ​小括号​​ 里面放的是 ​​函数​​ 的 ​​参数​
  • ​print("hello world")​​ 中
  • ​函数print​​ 的 ​​参数​​ 是 ​​"hello world"​
  • ​双引号​​ 引起来意味着​​hello world​​ 是 ​​字符串​
  • 输出的内容就是这个字符串 ​​("hello world")​
  • 小括号和双引号的风格延续到了 ​​python​

编辑

  • 从 ​​c语言​​ 开始
  • 最早的入门教学程序都做一个​​hello world​
  • 习惯成自然之后
  • 所有的编程语言第一个例子都是​​hello world​
  • 是一种规矩或者文化
  • 这个梗一直流传到今天
  • 除了时间因素之外
  • 还有一个重要的原因

成书

  • 有了教材就有更多人学
  • 有更多人学就有更多人参与其中

编辑

  • 正反馈在逐渐成型

教材风格

  • 1978 年,​​Kernighan​​和​​Ritchie​​出版了这本书
  • 不厚,很薄
  • 轻松的语言风格
  • 因为 ​​c​​ 的目的就是让人像玩一样编程
  • 而不是记忆各种 cpu 汇编指令
  • 蓬勃发展的计算机技术
  • 使得 ​​c​​ 语言成为系统语言的老大
  • ​python​​ 的源代码就是用纯 c 编的
  • ​linux​​ 内核 也是用纯 c 编的
  • 所以​​c​​还是非常核心的啊
  • 虽说 ​​python​​ 是用纯 ​​c​​ 编写的
  • 不过 ​​python​​ 一旦出现之后就可以简化好多东西
  • 比如我们的游乐场里面有很多的函数和模块
  • 我们为什么能认识print?
  • 而不认识pront?

编辑

内置函数

  • dir()
  • 可以看到游乐场上来就自带的模块

编辑

  • 比如 dir() 这个函数
  • dir的意思是directory 文档目录
  • 这里列出的是已经导入模块的目录
  • 调用这个函数可以知道当前游乐场载入了哪些模块
  • 比如 ​​__builtins__​​ 这个模块
  • 这 ​​__builtins__​​ 里面又有些什么呢?

dir()

  • ​dir(__builtins__)​
  • 注意前后都是两个下划线

编辑

  • ​__builtins__​​ 意思是在里面构建好的
  • 这里面有好多内置的函数
  • 包括我们熟悉的
  • exit()
  • print()
  • dir()
  • help()
  • 为什么print直接就能用
  • 因为他在默认的这个​​__builtins__​​模块中

编辑

  • 如果我想要查询print函数更详细的信息应该如何呢?

help(print)

  • 什么不会就help什么
  • ​help(print)​
  • 把函数名作为参数传进去

编辑

  • 类似的还可以查询
  • help(quit)
  • help(dir)
  • help(help)
  • 如果我想要查询__builtins__模块更详细的信息应该如何呢?

​help(__builtins__)​

  • ​help(__builtins__)​
  • 注意内置模块builtins左右各有两个下划线

编辑

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

导入外部模块

  • 就像我们上次导入ast一样
  • 这次我们导入的是​​__hello__​
  • 注意hello两边都有两个下划线
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import __hello__
  • import
  • port是港口 来自于海洋文化
  • import 是进口 是导入
  • export 是出口 是导出
  • import 后面接空格
  • 然后是被导入的外部模块名称 ​​__hello__​
  • ​hello​​左右也是两个下划线
  • 把​​__hello__​​模块导入到游乐场
  • 可以输出经典的一句话
  • 注意!
  • 导入 ​​__hello__​​ 模块前后游乐场中的模块增加了

正在上传…重新上传取消

  • 想要深入了解 ​​__hello__​​ 应该怎么办呢?

什么不会就help什么

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
help(__hello__)

编辑

总结

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[oeasy]python069_当前作用域都有些什么_列表dir_函数_builtins
oeasy
2025/02/24
1100
[oeasy]python069_当前作用域都有些什么_列表dir_函数_builtins
[oeasy]python058_一句话让python崩了
电子排版领域 The underscore is not the same character as the dash character, although one convention for text news wires is to use an underscore when an em-dash or en-dash is desired, or when other non-standard characters such as bullets would be appropriate. A series of underscores [like -___ ] may be used to create a blank to be filled in on a form, although the resulting blank may have tiny gaps between each individual underscore. It is also sometimes used to create a horizontal line; other symbols with similar graphemes, such as hyphens and dashes, are also used for this purpose.
oeasy
2025/01/08
1060
[oeasy]python058_一句话让python崩了
[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量
from math import pi as math_pi from my_file import pi as my_pi print(locals())
oeasy
2025/03/12
1430
[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量
[oeasy]python0011_ 字符序号_ordinal_ord
​序号(ordinal)回忆上次内容​hello world​​ 不是从来就有的来自于​​unix​​和​​c​​虽然我们今天有各种先进的学习手段最早的高级语言学习是从最早的那张打字机用纸的手写代码起源的输出用的函数名是 ​​print​​ 打印也是从那个时候来的最早输出的是字符串是 ​​"hello world"​也是从那个时候来的这就成了一个迷因等等!计算机里面不都是二进制的 0 和 1 吗哪里来的​​hello​​ 中的 ​​h​​ 之类的字符呢?🤔​编辑字符本质#进入python3解释器pyth
oeasy
2022/11/07
5410
[oeasy]python0011_ 字符序号_ordinal_ord
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
057如何删除print函数_dunder_builtins_系统内建模块9 播放 · 0 赞同视频
oeasy
2025/01/06
970
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
[oeasy]python0024_ 输出时间_time_模块_module_函数_function
​输出时间回忆上次内容​print​​函数有个默认的 ​​end参数​​​end参数​​ 的值可以是任意字符串​​end参数​​ 的值会输出到结尾位置​​end参数​​ 的默认值是 ​​\n​​如果​​end​​是空串(​​end=""​​)意味着输出后不自动换行我可以手动在输出字符串的末尾加上换行符(​​\n​​)这样的话我不但可以控制输出时结尾是否换行还能控制具体在哪里换行我还想输出点别的比如说当前⏰时间?🤔搜索代码​编辑百度​​python3 输出时间​​抄写代码​编辑​#​​号 后面的都是注
oeasy
2022/12/03
9350
[oeasy]python0024_ 输出时间_time_模块_module_函数_function
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt # 读取文件 with open('/usr/lib/python3.8/LICENSE.txt') as file: text = file.read() # 使用jieba进行中文分词 words = ' '.join(jieba.cut(text)) # 生成词云 wordcloud = WordCloud(font_path='/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', # 指定中文字体路径 width=800, height=600, background_color='white').generate(words) # 使用matplotlib展示词云 plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') plt.show()
oeasy
2025/03/01
2070
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines
换行回车回忆上次内容区分概念 terminal终端 主机网络中 最终的 端点TeleTYpewriter 电传打印机终端硬件shell 终端硬件基础上的 软件壳子Console 控制台 主机旁边 的 控制面板存储文件 的 时候 我 在文件里 打了回车\n系统 将0x0a存入字节 进文件换行 自动就有 回车功能 了吗?🤔回忆一下 被忽略的 \r\r \r 也是一个 ascii字符 \是 转义字符\r是 转义序列 什么是 转义 呢? 转义转义 转化含义把原来 两个字符 : \和r转化为 \r 这样一个字符 没错
oeasy
2023/01/07
3.9K0
[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines
[oeasy]python053_学编程为什么从hello_world_开始
[趣味拓展]为什么学编程都要从hello_world_开始_HelloWorld的由来_程序员的浪漫 回忆上次内容
oeasy
2024/12/18
1160
[oeasy]python053_学编程为什么从hello_world_开始
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
oeasy
2024/12/20
740
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
[oeasy]教您玩转python - 0002 - 你好世界(hello world!)
蓝桥云课:oeasy 教您玩转 python_Python - 蓝桥云课 github:GitHub - overmind1980/oeasy-python-tutorial: 良心的 Python 教程,面向零基础初学者简明易懂的 Python3 入门基础课程。在linux+vim生产力环境下,从浅入深,从简单程序学到网络爬虫。可以配合蓝桥云上实验环境操作。 gitee:oeasy教您玩转python教程: 面向零基础初学者的简明易懂的 Python3 入门课程,对没有编程经验的同学也非常友好。在vim下从浅入深,逐步学习。从基础入门学习到爬虫。 作者:oeasy
oeasy
2022/09/29
1.4K0
[oeasy]教您玩转python - 0002 - 你好世界(hello world!)
[oeasy]python086方法_method_函数_function_区别
[oeasy]python086方法_method_函数_function_区别 回忆
oeasy
2025/04/10
810
[oeasy]python086方法_method_函数_function_区别
[oeasy]python0020换行字符_feed_line_lf_反斜杠n_B语言_安徒生童话
Basic Combined Programming Language(BCPL)
oeasy
2022/11/25
1.1K0
[oeasy]python0020换行字符_feed_line_lf_反斜杠n_B语言_安徒生童话
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
055_python编程_容易出现的问题_函数名的重新赋值_print_int0 播放 · 0 赞同视频
oeasy
2024/12/29
1200
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
[oeasy]python065python报错怎么办_try_试着来_except_发现异常
a = input("How many apples do you have:") weight = a * 2 print("You have ",weight, "kg apples.")
oeasy
2025/02/11
760
[oeasy]python065python报错怎么办_try_试着来_except_发现异常
[oeasy]python0072_修改字体前景颜色_foreground_color_font
修改颜色回忆上次内容m 可以改变字体样式 0-9 之间设置的都是字体效果0 重置为默认1 变亮2 变暗3 斜体4 下划线5 慢闪6 快闪7 前景背景互换8 隐藏9 中划线叠加效果 \33[1;3moeasy;分割取消效果 21 取消 122 取消 223 取消 3一直到 290 是全部取消,回到默认最后发现 真的可以 设置颜色???👁颜色是重要的不同颜色 可以提示出 信息重要性的级别颜色本身也是信息 OFF_INT = 2147483647ERROR_INT = 40000WARN_INT = 3000
oeasy
2023/02/03
9060
[oeasy]python0072_修改字体前景颜色_foreground_color_font
[oeasy]python0136_接收输入_input函数_字符串_str
添加输入提示 name = input("what is your name:")
oeasy
2023/04/22
4170
[oeasy]python0136_接收输入_input函数_字符串_str
[oeasy]python0144_try的完全体_否则_else_最终_finally
try的完全体 回忆上次内容 上次细化了主控程序(main.py) 导入(get_fruits.py)处理(process.py)输出(output.py)使用了 try 结构 tryexcept发现异常就报错输入部分的错误 应该在 输入部分来报具体怎么报呢?🤔完善输入 输入的时候 应该包括 对于输入内容的验证于是 再修改代码​添加图片注释,不超过 140 字(可选)输入代码 分成了 输入 a输入 b运行结果 如果 输入错误数据 会在get_fruits.py中报错​添加图片注释,不超过 140
oeasy
2023/04/30
1970
[oeasy]python0144_try的完全体_否则_else_最终_finally
[oeasy]python0032_ 火星文字幕_os_操作系统的作用_time_sleep_延迟
oeasy
2024/09/02
1000
[oeasy]python0032_ 火星文字幕_os_操作系统的作用_time_sleep_延迟
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
oeasy
2024/09/23
1370
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
推荐阅读
相关推荐
[oeasy]python069_当前作用域都有些什么_列表dir_函数_builtins
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验