目录
3.JavaScript的“undefined”与“null”
20.Don't Repeat Yourself (DRY)
1.ASCII中的“Hello, World!”
在ASCII码中,“Hello, World!”的首字母"H"对应的十进制值是72,而整个字符串在内存中占用的空间比你想象的要多一点,因为它通常会以null字符('\0')结尾,这是C语言和其他许多语言中的字符串标准。
2.Python的缩进规则
Python是唯一一种使用缩进来区分代码块的主流编程语言。这意味着在其他语言中常见的括号或关键字(如begin/end)在Python中是不需要的。
3.JavaScript的“undefined”与“null”
在JavaScript中,“undefined”和“null”都表示某种形式的“无”,但它们是不同的。“undefined”通常意味着变量被声明了但没有赋值,而“null”则是一种可以被赋给变量的值,表示“没有任何对象”。
4.C++中的“this”指针
在C++中,类成员函数隐含地接收一个额外的参数,即“this”指针,它指向调用该方法的对象。这在底层实现上很有用,但在大多数情况下,程序员不需要直接使用它。
Java的自动装箱和拆箱: Java自JDK 5.0起引入了自动装箱和拆箱特性,使得基本数据类型和它们对应的包装类之间可以自动转换,简化了代码编写。
5.PHP的魔术方法
PHP中有许多“魔术方法”,如__construct(), __destruct(), __toString(), __call(), __get(), __set()等,这些方法可以在特定的情况下自动调用,为类提供了强大的动态功能。
Ruby的块(Block)和Proc: Ruby中的块和Proc是处理代码片段的强大工具,它们可以作为参数传递给方法,并在适当的时候执行,这在函数式编程中非常有用。
6.Go语言的并发模型
Go语言的并发模型基于CSP(Communicating Sequential Processes),使用goroutines和channels来实现轻量级的线程和通信,使得并发编程更加简单和高效。
这些冷知识展示了不同编程语言的独特特性和设计哲学,对于深入理解编程语言和提升编程技巧都有帮助。
7.最早的编程“虫子”
计算机中的“bug”一词起源于Grace Hopper在1947年发现的一只实际的飞蛾卡在哈佛大学的Mark II计算机继电器中,她幽默地将这称为第一个“计算机虫子”。
8.Hello, World! 的起源
这个编程入门传统可以追溯到1974年的贝尔实验室,Brian Kernighan在他的《Programming in C: A Tutorial》一书中首次使用了"hello, world"作为示例程序。
9.goto 语句争议
Edsger Dijkstra在1968年发表了一篇名为《Go To Statement Considered Harmful》的论文,引发了关于在现代编程中是否应该避免使用goto语句的广泛讨论。
10.Python 的命名
Guido van Rossum创造了Python语言,并以BBC的喜剧小品《Monty Python's Flying Circus》为灵感命名,而不是爬行动物。
11.隐藏的彩蛋
许多编程语言的编译器或解释器中都隐藏有复活节彩蛋,比如在某些版本的Python中输入import this,会显示The Zen of Python(Python之禅)。
import this
12.最古老的编程语言
许多人认为FORTRAN(公式翻译器)是第一种高级编程语言,它于1957年由IBM的约翰·巴科斯开发。但实际上,更早的一种叫做Plankalkül的语言是由康拉德·楚泽在1940年代设计的,但由于二战的原因,直到1970年代才被正式发表。
13.空格 vs 制表符之争
在编程社区中,使用空格还是制表符进行代码缩进一直是一个备受争议的话题,甚至引发了著名的“大圣战”(Space vs Tab War),这体现了编程文化中对代码规范和可读性的重视。比尔盖茨说:“更喜欢用Tab,因为我想让column排成一行。对于某些Word文档,我用Tab,如此,当我想要修改部分内容,需要返回并编辑时,Tab显然更容易操作。”
14.JavaScript 的误解
尽管名称相似,但JavaScript与Java语言实际上并没有太大关联,它们的设计目的、语法结构和应用领域都有所不同。JavaScript最初被命名为Mocha,后来改为LiveScript,最终为了营销考虑改名为JavaScript。
15.神奇的Fibonacci
斐波那契数列是编程练习中的一个经典题目,除了递归实现外,还可以通过动态规划、矩阵快速幂等高级算法优化性能,展现了不同算法效率的对比。
16.编译器与解释器
编译型语言(如C、C++)将源代码一次性转换为机器语言执行文件,而解释型语言(如Python、JavaScript)则是边解释边执行,每执行一次都要翻译一次。各有优缺点,比如编译型语言运行速度快,解释型语言更灵活,易于跨平台。不过,这种区分在现代语言中变得模糊,比如Java虚拟机(JVM)既包含编译也包含解释过程。
17.10进制不是唯一
计算机内部处理数据时实际上是以二进制(0和1)进行的。此外,不同的应用场景还可能使用八进制、十六进制等基数系统,例如在表示颜色代码或内存地址时常用十六进制。
18.注释的妙用:
在一些编程语言中,如Python,你可以通过在注释中使用特定格式来生成文档,这被称为文档字符串(docstrings)。IDE和文档生成工具可以自动读取这些注释,生成帮助文档。
19.条件语句的多样
虽然大多数编程语言都有if-else结构,但有些语言提供了更有趣的条件表达方式。例如,Ruby中的ternary operator(条件运算符)可以写成condition ? true_expression : false_expression,而Swift支持更复杂的switch语句,它可以处理范围、元组等多种情况。
20.Don't Repeat Yourself (DRY)
这是软件工程中的一条重要原则,鼓励程序员避免编写重复的代码。通过使用函数、类、模块或模板等技术来提高代码的复用性,减少错误和维护成本。
21.摩尔斯电码与二进制的联系
萨缪尔·莫尔斯发明的摩尔斯电码使用两种状态(点和划)来表示字母,这与计算机中使用的二进制(0和1)有着概念上的相似之处,都是利用基本的符号组合来表达复杂的信息。
22.鸭子类型
这是一个来自动态类型语言的概念,指的是“如果它走起来像鸭子,叫起来也像鸭子,那么它就是鸭子”。在编程中,这意味着不关心对象的具体类型,而关注它能否响应特定的消息或方法调用。
23.第一个计算机程序
Ada Lovelace,通常被认为是世界上第一位程序员,她在19世纪为查尔斯·巴贝奇的分析机编写了算法,这被认为是史上第一个计算机程序,尽管当时的机器并未实际运行这些程序。
24.汇编语言的起源
最早的编程语言并非高级语言,而是与机器语言相近的汇编语言。汇编语言通过助记符代替机器语言中的二进制或十六进制指令,使得编写程序变得更加直观易读,但仍然保留了对硬件的直接控制。
25.大语言模型的运行成本
训练大语言模型的成本极高。除了需要大量的GPU或TPU计算资源外,还需要庞大的电费和冷却系统。据估计,训练一次GPT-3可能花费数百万美元。
26.大语言模型知识的泛化
尽管大模型在许多任务上表现出色,但它们并不真正理解知识,而是通过模式匹配和统计关联来生成文本。这意味着它们可能会产生看似合理但实际上错误的信息。
27.大语言模型的黑盒性质
大模型往往被视为黑盒,因为它们的内部工作原理复杂且难以解释,这限制了它们在需要高度透明度领域的应用。
结语
这些冷知识不仅增添了编程世界的趣味性,也反映了编程语言和技术发展的历史和文化。
标签:知识,语言,编程语言,Python,模型,编程,JavaScript From: https://blog.csdn.net/a_pjx_z/article/details/140655668