豆知识,出自日语
まめちしき
。表示一些边边角角的,一般不引人注意的小知识。类似于中文中的冷知识。
为什么(Linux下)C语言编译后的可执行文件的默认名称是a.out?
在Linux中,使用gcc编译C源码,在不使用-o选项指定名称的情况下,默认生成的可执行文件的名称是a.out。
很多人可能认为a是字母表的第一个字母,代表英文字母表中的a,或希腊字母表中的α。其实所谓的a.out的含义是assembler output,即汇编器输出。
了解编译过程的我们应该大都知道,汇编器的输出是目标文件(.o为后缀的文件),并不是可执行文件。目标文件经链接以后才是可执行二进制文件(比如a.out)。
究其原因是因为在Unix系统诞生的PDP-7机器上,还并未出现链接器。链接工作是在汇编操作之前完成的,然后经汇编器直接生成可执行文件。后来人们才发明了链接器,剥离了链接操作,并在汇编之后工作。但是命名习惯被得以保留。
另外一个关于a.out的有趣故事是这样的:
在UNIX的早期历史中,想在系统上玩游戏的人通常把游戏作为a.out来运行,以避免被系统管理员抓到,因此一些UNIX系统每晚会定期删除所有名为a.out的文件
依据
- 《C专家编程》 6.1节
- 《Beginning Linux Programing》1.2.3节
Linux中的目录/usr真的是user(用户)的缩写吗?
很多人认为/usr目录是user的缩写,我们知道Windows中C盘里面由个Users目录,里面存放的是每个用户的子目录。但是Linux中,与之对应的是/home目录啊,并非/user目录。
其实现代Unix系统中,/usr目录的含义是User System Resources,代表着多用户共享的系统资源,包括二进制,文档,库等等。每个用户都能使用。
其实最早/usr的含义确实是user,那时候/usr的目录结构与现在不同,就像现在的/home目录一样。彼时/usr/jelly和现在的/home/jelly是同一个意思,表示用户jelly的家目录。不过再后来引入了/home目录之后,就不能认作是user的缩写了。
依据
http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html
In the original Unix implementations, /usr was where the home directories of the users were placed (that is to say, /usr/someone was then the directory now known as /home/someone). In current Unices, /usr is where user-land programs and data (as opposed to ‘system land’ programs and data) are. The name hasn’t changed, but it’s meaning has narrowed and lengthened from “everything user related” to “user usable programs and data”. As such, some people may now refer to this directory as meaning ‘User System Resources’ and not ‘user’ as was originally intended.
你知道Linux中cat命令的名称由来吗?
我们应该都用过cat命令来显示文件,但是这个命令为什么叫cat呢?稍微有点经验的Unix用户就会知道cat命令的真实用法是组合文件。
的确,cat命令可以将多个文件显示到标准输出,通过重定向可以实现多个文件的合并。
cat file1 file2 > file3
你可能就认为cat这个命令是英文单词concatenate(联系连接)的缩写了。这样理解或许不错,却并非真实的情况。
cat缩写自一个古老的单词catanate,其含义是to join a chain,它源于拉丁文catena,是chain(锁链)的意思。
依据
《Unix&Linux大学教程》 16.8节(末尾)
动态规划的英文原文为什么是Dynamic Programming?
Dynamic Programming在中国被称之为动态规划,但是Programming本身并无规划之意,但是翻译成编程又完全不对。因为这是一种数学思想。
关于这个术语的历史是这样的,当时Richard Bellman在空军的RAND部门任职,他的顶头上司很讨厌部门里面搞research(研究),甚至在他面前不能说research这个单词。数学研究更是不被允许。而Bellman当时在做的事情正是一种数学研究,为了不让上司发现,他只好在项目名称上做文章,取了一个Dynamic Programming的名称。这样对于他的研究别人就几乎摸不着头脑了。
依据
https://en.wikipedia.org/wiki/Dynamic_programming#History
版权声明:本文为博主原创文章,未经博主允许不得转载。