首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Node Tips

Node Tips

作者头像
数媒派
发布于 2022-12-01 07:11:50
发布于 2022-12-01 07:11:50
28800
代码可运行
举报
文章被收录于专栏:产品优化产品优化
运行总次数: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 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Ground-Fusion:一种对Corner-case具有鲁棒性的低成本地面SLAM系统
文章:Ground-Fusion: A Low-cost Ground SLAM System Robust to Corner Cases
点云PCL博主
2024/03/19
5250
Ground-Fusion:一种对Corner-case具有鲁棒性的低成本地面SLAM系统
RailLoMer-V:适用于铁轨系统的多传感器融合SLAM(RAL 2022)
监测铁路安全运营需要精确的轨道车辆定位和长期的铁路环境。国内现行铁道系统的定位策略仍以轨旁系统为主,不仅实时性和准确率都差,而且需要大量的前期投资和后续维护。
3D视觉工坊
2023/04/29
6470
RailLoMer-V:适用于铁轨系统的多传感器融合SLAM(RAL 2022)
利用显著地面特征进行配送机器人定位的鲁棒方法
论文:Salience-guided Ground Factor for Robust Localization of Delivery Robots in Complex Urban Environments
一点人工一点智能
2024/05/27
2150
利用显著地面特征进行配送机器人定位的鲁棒方法
Point-LIO:鲁棒高带宽激光惯性里程计
标题:Point-LIO: Robust High-Bandwidth LiDAR-Inertial Odometry
3D视觉工坊
2023/04/30
1.1K0
Point-LIO:鲁棒高带宽激光惯性里程计
移动机器人轮式里程计
如果你拥有一辆马车,你知道你马车轮子的周长,并且你安装了一种装置可以统计车轮转了多少圏数。你从A地一到达B地,便可以计算出A到B的路程,换句话说:你知道自己行走了多远的路程。
全栈程序员站长
2022/07/02
1.1K0
移动机器人轮式里程计
移动机器人视觉里程计综述与研究展望
摘 要: 移动机器人基于激光和视觉SLAM导航可实现环境的智能感知和非固定路径行走,其中视觉SLAM导航是指机器人利用视觉系统实现自主定位与地图创建,其优势为结构简单、成本低,信息量丰富。而视觉里程计作为移动机器人视觉SLAM导航的前端,能为机器人自主导航提供廉价、可靠的位姿估计。本文对移动机器人视觉里程计的概念与发展历程进行了简述,总结了实现视觉里程计的不同方法并分别对比了其优缺点,同时也分析了视觉里程计在移动机器人领域的应用以及未来研究展望。
用户9868602
2022/09/02
8020
移动机器人视觉里程计综述与研究展望
Adaptive-LIO:通过环境自适应提升 LiDAR 惯性里程计的鲁棒性和精度
文章:Adaptive-LIO: Enhancing Robustness and Precision through Environmental Adaptation in LiDAR Inertial Odometry
点云PCL博主
2025/03/17
2450
Adaptive-LIO:通过环境自适应提升 LiDAR 惯性里程计的鲁棒性和精度
用于机器人定位和建图的增强型 LiDAR-惯性 SLAM 系统
粒子滤波也是一个十分经典的算法,它与卡尔曼滤波的不同之处在于卡尔曼滤波假设概率分布是高斯分布,然后在计算后验概率(pdf)时,利用正态分布的性质,可以计算出来;而粒子滤波的后验概率分布是通过蒙特卡洛方法采样得到的。蒙特卡洛方法很清楚的一点是采样的粒子越多,概率分布越准确,但是计算速度会下降。也就是说如何分布你的有限个数的采样粒子来得到更为准确的后验概率分布是粒子滤波一直在做的事情。在本文中粒子滤波的改善一个是局部采样,另一个是采样时更好的概率分布来得到更精确的后验概率。在闭环检测这里则是应用了深度学习的方法。具体实现可以随笔者一起看下面的文章。
3D视觉工坊
2023/04/29
5640
用于机器人定位和建图的增强型 LiDAR-惯性 SLAM 系统
通过迭代地标匹配实现人形足球机器人的快速鲁棒定位
论文链接:https://export.arxiv.org/pdf/2503.11020
一点人工一点智能
2025/04/13
1020
通过迭代地标匹配实现人形足球机器人的快速鲁棒定位
LOCUS 2.0:基于激光雷达的鲁棒且高效的3D实时建图
文章:LOCUS 2.0: Robust and Computationally Efficient Lidar Odometry for Real-Time 3D Mapping
点云PCL博主
2022/12/27
1K0
LOCUS 2.0:基于激光雷达的鲁棒且高效的3D实时建图
机器人相关学术速递[9.8]
【1】 Optimal Stroke Learning with Policy Gradient Approach for Robotic Table Tennis 标题:基于策略梯度法的机器人乒乓球最优击球学习 链接:https://arxiv.org/abs/2109.03100
公众号-arXiv每日学术速递
2021/09/16
3990
基于3D激光雷达的SLAM算法研究现状与发展趋势
SLAM算法是移动机器人实现自主移动的关键环节。激光雷达(LiDAR)具有测距精度高、不易受外部干扰和地图构建直观方便等优点,广泛应用于大型复杂室内外场景地图的构建。随着3D激光器的应用与普及,国内外学者围绕基于3D激光雷达的SLAM算法的研究已取得丰硕的成果。
一点人工一点智能
2023/08/25
3.7K0
基于3D激光雷达的SLAM算法研究现状与发展趋势
基于3D激光雷达的SLAM算法研究现状与发展趋势
SLAM算法是移动机器人实现自主移动的关键环节。激光雷达(LiDAR)具有测距精度高、不易受外部干扰和地图构建直观方便等优点,广泛应用于大型复杂室内外场景地图的构建。随着3D激光器的应用与普及,国内外学者围绕基于3D激光雷达的SLAM算法的研究已取得丰硕的成果。
一点人工一点智能
2023/04/26
1.8K0
基于3D激光雷达的SLAM算法研究现状与发展趋势
在毫米波雷达里程计中是否需要扫描帧匹配?
文章:Do we need scan-matching in radar odometry?
点云PCL博主
2023/11/22
4090
在毫米波雷达里程计中是否需要扫描帧匹配?
DLL: 一种直接法的激光雷达定位方案
文章:DLL: Direct LIDAR Localization. A map-based localization approach for aerial robots
点云PCL博主
2022/01/27
4740
DLL: 一种直接法的激光雷达定位方案
八种常用激光雷达和视觉SLAM算法的评估与比较
文章:Evaluation and comparison of eight popular Lidar and Visual SLAM algorithms
点云PCL博主
2022/12/27
3.8K0
八种常用激光雷达和视觉SLAM算法的评估与比较
实时自动驾驶车辆定位技术概述
实时、准确和鲁棒的定位对于自动驾驶汽车(AVs)实现安全、高效驾驶至关重要,而实时性能对于AVs及时实现其当前位置以进行决策至关重要。迄今为止,没有一篇综述文章定量比较了基于各种硬件平台和编程语言的不同定位技术之间的实时性能,并分析了定位方法、实时性能和准确性之间的关系。因此,本文讨论了最先进的定位技术,并分析了它们在AV应用中的整体性能。
一点人工一点智能
2023/02/18
2K0
实时自动驾驶车辆定位技术概述
导航系统中里程计研究综述
文章:A Survey on Odometry for Autonomous Navigation Systems
3D视觉工坊
2020/12/11
1.2K0
导航系统中里程计研究综述
无人水面艇自主回收中的导航定位技术分析
无人水面艇(USV)是一种集环境感知、路径规划、导航控制功能为一体的无人水面平台,通过搭载相应任务载荷,能够执行不同的任务,尤适用于各种危险、重复及其他不适于有人船艇执行的任务场景。但因其体量小、携带能源有限,一般由母船携带并通过收放装置投送至特定的海域执行相应任务。
一点人工一点智能
2023/05/25
9910
无人水面艇自主回收中的导航定位技术分析
LIR-LIVO:一种轻量级、鲁棒的激光雷达/视觉/惯性里程计,具备对光照变化具有适应性的深度特征
文章:LIR-LIVO: A Lightweight,Robust LiDAR/Vision/Inertial Odometry with Illumination-Resilient Deep Features
点云PCL博主
2025/03/07
2630
LIR-LIVO:一种轻量级、鲁棒的激光雷达/视觉/惯性里程计,具备对光照变化具有适应性的深度特征
推荐阅读
相关推荐
Ground-Fusion:一种对Corner-case具有鲁棒性的低成本地面SLAM系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验