電腦領域中的豆知識

來源:互聯網
上載者:User

標籤:a-out   cat   動態規劃   linux   冷知識   

豆知識,出自日語まめちしき。表示一些邊邊角角的,一般不引人注意的小知識。類似於中文中的冷知識

為什麼( 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

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

電腦領域中的豆知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.