編程庫比喻
⑴ 如果把編程比喻成蓋房子。
我覺得比喻相當不恰當。如果確實這么比喻,那我願意住面向過程的房子。
首先,房屋的整體性很強,你把它分割開來考慮和計算本身就很困難,如果是胡亂分割,那還不如不分割。
其次,面向過程和工具的關系也搞不清楚,我不明白為什麼面向過程就是統一工具。
實際上,面向對象和面向過程各自有各自的優勢。很多事情自有適合的方式,不恰當的比喻會使得問題越來越復雜。
有些典型的問題是可以多個方面去考慮的,比如象棋:
A:如果從面向過程去說,那應當是,輪流移動上來考慮,即你做了一個動作以後,對方會怎樣。
B:如果從面向對象上來說,每一個棋盤上的子都是一個對象,他們都有自己的移動方式,在每一個特定的棋局中,有存在很多對它造成威脅的勢力和它可以威脅到的棋子。……
使用面向對象的方式,會使得很多很復雜的問題有一個比較簡單的解決方法。但是實際上,問題的復雜程度不會因為你的思考方式的改變而改變,復雜程度本身是不變的。因此,面向對象並不能改變軟體本身的復雜性。
⑵ 編程中庫是什麼意思
例如:#incluede "stdio.h" 這個頭文件,就是庫的意思
庫,也就是裡面定義了很多的函數、欄位等等
補充:編程就是讓計算機為解決某個問題而使用某種程序設計語言編寫程序代碼,並最終得到相應結果的過程。
為了使計算機能夠理解人的意圖,人類就必須要將需解決的問題的思路、方法、和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算機之間交流的過程就是編程。
編程:設計具備邏輯流動作用的一種"可控體系"【注:編程不一定是針對計算機程序而言的,針對具備邏輯計算力的體系,都可以算編程】
例子:①比如編寫一段代碼程序②編寫一個控制設備體系
⑶ 程序設計 的比喻
程序設計
就像廚師做菜...
從柴米油鹽 一直到上層的工具 最上層的就是廚師
廚師面對的是一樣樣工具(可理解為操作系統應用程序介面,也可以理解為別人製作的框架...),這些工具是別人根據更底層的介面 製作出來的...
更底層的是什麼..是鋼鐵--->鍋碗瓢盆
是種子--->糧食,肥料
.......
而編程 就是用別人做好的這些工具,,鍋碗瓢盆,柴米油鹽來操作 制定出一定的操作次序...
鍋碗瓢盆是工具,柴米油鹽是數據...
程序員就是用工具 將數據經過一定處理 最後完成一個作品
⑷ 百戰程序員:編程語言到底有多少種
這個有很多種的,下面講解寫常遇到的。把編程語言比喻成車:
Ada 是輛丑到極點但是永遠不會出故障的坦克。
C 是輛賽車,它能跑得超乎想像得快,不過每跑個 50 英里就會拋錨。
Cobol 號稱是輛車,不過沒有哪個有自尊心的駕駛員肯承認曾經開過。
C# 是輛競爭模式的家庭旅行車。一旦你開過它,你就不會再用其他競品廠商的產品了。
C++ 是輛大馬力版本的 C 型賽車,它額外提供了成打的特性,而且每跑 250 英里才會拋錨,不過當它真出問題的時候,沒有人能找到究竟是哪兒壞了。
Eiffel 是輛內置了法國口音駕駛說明的汽車。他會幫你快速地找到錯誤並從中學到東西,不過你要是敢跟他爭論的話,他會罵你然後把你從車里扔出去。[來自 Daniel Prager ,稍有修改]
Erlang 是一個車隊,它們會互相協作把你送到任何你想去的地方。想要每隻腳各自操縱一輛車還是需要一些練習的,不過一旦學會了之後你就可以駕駛著它們通往其他方式難以企及的地方了。還有,你用了那麼多輛車,所以就算有幾輛壞掉也沒什麼可擔心的。
Forth 是你親手用套件組裝出來的車。你這輛車不論長相還是功能都沒必要和別人的一樣。不過,Forth 型號的車只能倒著走。
[Digg.com 網站上的評論,來自 256byteram(我忍不住要把它加上):]
FORTH LOVE IF HONK THEN !(譯註:抱歉我實在不知道這句話是啥意思……)
Fortran 是輛非常原始的車。它能跑得很快,前提是你要始終在完全筆直的道路上開。據說學開 Fortran 型汽車會導致你再也沒法學開其他型號的汽車了。
Java
Java 是輛家庭旅行車。它駕駛起來很容易,開起來速度也不會太快,不至於傷到你自己。
版本1:Haskell是輛設計極端優雅漂亮的車,傳聞它能開到非常極端的地形中去。當你試圖駕駛它的時候,它並不是真的沿著道路在前進的;實際上,它是不斷把自己和道路進行復制,每次成功復制之後,車在路上都會比上一次更遠一點。應該還是有可能按照傳統的方式來駕駛它的,不過你的數學能力不足以找出這個辦法來。
版本2:Haskell 並不是輛真的車,它是一個抽象的機器,能夠詳細地告訴你駕駛這個過程應該是什麼樣子的,如果你願意的話。你必須把這個抽象的機器放到另一台實際的機器裡面才能開動它,別問這個實際的機器是怎麼運行的。還有一種方法,你可以用多台抽象的機器造出另一台抽象的機器,然後把它交給那台實際的機器,這樣就能一個接一個地完成你的旅途了。[Monadic 的版本]
版本1:Lisp 看起來像一輛車,不過經過足夠的改裝,就能把它變成非常有效的一架飛機或一艘潛艇。
版本2:一開始它看起來一點兒都不像一輛車,不過時不時地你也能看到有人在開著它轉悠。終於有一天你決定多了解一下它,然後你意識到它其實是一輛能造出更多汽車的汽車。你把這個發現告訴了朋友,不過他們都大笑著說這些車看起來太奇怪了。至今你仍在車庫里留著一輛,期待著哪天能把它開上路去。[來自 Paul Tanimoto]
Mathematica是輛設計得很好的車,它從 Lisp 型汽車那裡借鑒了大量的東西,卻連一點兒應得的贊揚都不給它。它能通過方程計算出到達目的地最高效的路徑,只不過這要花上一大筆錢。
是輛設計給新手用的短途旅行車,通常都是開往那些 Mathmatica 型汽車常去的地方。在那些地方這車開起來非常舒服,不過只要你偏離了路線,哪怕只有一點點,它就會變得非常難以駕馭,以致於很多勢利的司機根本就不承認它是一輛車。
Ocaml 是輛非常性感的歐洲車。它不像 C 那麼快,但它從不出故障,所以結果你反而會花更短的時間到達目的地。不過因為這是法國,所有的控制裝置都不在它們平時該在的地方。
Perl 應該是輛挺酷的車,不過駕駛員手冊卻難以理解。另外,就算你能找到方法去駕駛一輛 Perl 型號的車,你也開不起來別人的 Perl 型汽車。
PHP 是輛熱狗車(Oscar Mayer Wienermobile),它非常古怪、又難以駕馭,但是所有人卻還是想開它。[來自 digg.com 網站的 CosmicJustice]
版本1:Prolog 是全自動的:你告訴它你的目的地是什麼樣子的,然後剩下的駕駛工作它就全搞定了。[Paul Graham附加的:]不過,大多數情況下,確認目的地所花的工夫,和你直接開過去也差不多了。
版本2:Prolog 這輛車上裝了一個獨特的試錯型 GPS 系統。在通往目的地的路上,它會一直往前開,如果走到死胡同了,它就調頭回來再試試別的路,如此不斷往復,一直到目的地為止。[我忘了是誰建議的這一條]
Python 是輛非常棒的給初學者用的車,就算沒有駕照也能開。除非你想開得超級快,或者想開去很危險的地方,否則你可能永遠都用不到別的車。
Ruby 這輛車是因為一次 Perl、Python 和 Smalltalk 三車相撞事故產生的。一個日本的機師找到了這些車的碎片然後拼成了一輛車,很多司機都覺得這比那三輛車加在一起還要好。不過也有些司機會發牢騷說 Ruby 型汽車的好多控制器都是重復的、甚至有三份,而這些重復的控制器在某些特別的情況下又稍有不同,這會讓這車開起來更麻煩。據傳說重新設計的工作已經在進行中了。
Smalltalk 是輛小型汽車,原本是設計給那些打算學駕駛的人用的,不過因為它設計得太棒了,即使那些有經驗的老司機都喜歡開它。它速度並沒有很快,不過你可以把它的任何一個零部件拿下來改造改造,讓它更符合你的期待。古怪的事情是,你其實並沒有真正地駕駛它,你只是發了條消息讓它去什麼地方,然後它要麼就開過去了,要麼就告訴你它不懂你在說啥。
版本1:匯編就只是個發動機。你得自己把車子造出來,還得在它跑的時候手動給它加油。不過只要你足夠小心,它就能像來自地獄的蝙蝠(a bat out of hell)一樣飛速前進。
版本2:匯編:你自己就是那輛車。
如果編程語言是種武器:
C 語言是 M1 式加蘭德步槍,很老但可靠。
C++是雙截棍,揮舞起來很強悍,很吸引人,但需要你多年的磨練來掌握,很多人希望改用別的武器。
Java 是 M240 通用彈夾式自動機槍,有時它的彈夾是圓的,但有時候不是,如果不是,當你開火時,會遇到 NullPointerException 問題,槍就會爆炸,你被炸死。
Scala 是 M240 通用機槍的變種,但它的使用手冊是用一種看不懂的方言寫的,很多人懷疑那隻是一些夢話。
JavaScript 是一把寶劍,但沒有劍柄。
Go 語言是一種自製的「if err != nil」發令槍,每一次發射後,你都必須要檢查它是否真的發射了。
Rust 語言是一種 3D 列印出的槍。將來也許真的能派上用場。
bash 是一個十分礙手的錘子,你掄起它時會發現所有東西看起來都像釘子,尤其是你的指頭。
Ruby 是一把外嵌紅寶石的寶刀,人們使用它通常是因為看起來很炫。
PHP 是水管子,你通常會把它的一段接到汽車的排氣管,另一端插進車窗里,然後你坐進車里,開動引擎。
Mathematica 是一種地球低軌道粒子大炮,它也許能夠干出很神奇的事情,但只有付得起費用的人才能使用它。
C#是一種強悍的激光大炮,架在一頭驢子上,如果從驢子上卸下來,它好像就發不出激光。
Prolog 語言是一種人工智慧武器,你告訴它要做什麼,它會照做不誤,但之後,它會弄幾個終結者出來,燒掉你的房子。
Lisp 語言是一把剃須刀,有很多款式。只有尋求刺激和危險的人才會使用它。
希望可以幫到您,謝謝!
⑸ 在學習編程語言時常說的庫是什麼意思
很多語言中都有「庫」這個概念,即「library」。最簡單的理解方式就是:「庫」就是別人已經編寫好的程序集或者源文件,可以被其它程序引用,從而達到「寫一次,用多次」的目的。
「庫」一般都是為了某個特殊目的開發的。打個比方,一雙鞋子是怎麼造出來的?有的人專門生產鞋帶,有的造鞋底,有的做布料,還有的專門設計商標,或許還有一些人設計包裝盒,如果你能獲得這些東西,你就可以把他們組合起來,然後加入你自己的設計,做一雙你自己的鞋子。但是,布料不僅僅可以用來做鞋子,同理,商標也可以用來印刷廣告,而不僅僅是貼在鞋子上,包裝盒可以不用來裝鞋子,而是包裝其它東西。用相同的原料,你做出了一雙鞋子,別人有可能做出了一條褲子。
這就是「庫」,很多程序都用了相同的「庫」,但是開發出了完全不一樣的程序,使用「庫」,可以避免重新編寫別人已經開發出來的程序,把這些「庫」加到你自己的程序中,可以節省很多時間,同時保證了穩定性,因為大家都用這些「庫」,大部分毛病早就被挑光了,而你自己再重新寫一個程序有可能漏洞百出,又花了時間,得不償失。
有些「庫」是可以增強功能的,而有些「庫」則是完成你的程序必須的。前者比如說最經典的C語言,引入stdio.h頭文件,就引入了「庫」中的一個功能:你可以使用printf函數了;後者比如說Windows編程中的windows.h頭文件,幾乎所有Windows程序都會用到這個來和系統底層進行交流。
⑹ 編程 到底是什麼詳細解釋
我認為樓上的食譜的比喻不是很恰當。
因為食譜是一種工作流,描述的是先干什麼後干什麼以及所用的資源和時間,而程序除了可以被看成一種工作流之外,還可以被看成一種生成工作流的邏輯描述,也就是說,除了要安排好食譜中的步驟,還要知道食材和步驟的邏輯關系,比如是先炒後燉還是先燉後炒,是先放油鹽醬醋還是後放油鹽醬醋,什麼東西和什麼東西不能放一起等等。這些是通過編程和程序中的邏輯判斷來實現的,這種邏輯判斷在食譜中是沒有的(例如,食譜中是不會出現"如果炒糊了就放點糖"這樣的描述的)。因此,食譜只是單純的流程描述,編程和程序是比食譜更高級和復雜的概念。
其實,編程用大白話來說,就是如何控制計算機利用各種硬體資源來處理數據和信息。因此,編程分為幾個層級。最底層是直接與硬體打交道的,用來控制硬體的執行,一般是匯編編程;最上面的是軟體編程,直接處理數據和信息,編寫的程序直接面向程序的使用者;在他們之間的是操作系統級編程,用來建立連接底層和上層的橋梁。每一層就不展開說了,否則都夠寫幾本書了。
大多數程序員都屬於軟體編程這個層級的,其他的程序員一般都必須非常了解他們使用的硬體,因為他們的程序就是要操作這些硬體的。
說完了編程的分類,再來說說編程到底干什麼。我也來比喻一下,我把編程比喻成教育,計算機就是小孩,綜合起來就是教計算機做什麼以及怎麼做,也就是教育小孩做事情,而編程寫出來的程序,就是一種行為規范。
比如,我要教小孩過馬路,那麼我告訴他一個過馬路的行為規范:"先向左看,如果沒車過來就走到路中央,如果有車就等車過去;到了路中央向右看,如果沒車就過去,如果有車就等一等。"
我把這個過馬路的"行為規范"(程序)告訴我的"小孩"(計算機),他就能嚴格照著去執行。
這個比喻不恰當的地方,就是我的"小孩"的學習能力實在有限,他只會照著我寫好的"行為規范"去做,我沒寫的他就不知道怎麼做了。但是,將來的"小孩"肯定會增強自己的學習能力,通過"行為規范"來產生新的"行為規范",並且新的"教育方法"(編程方法)也在不斷的被研究著。