導航:首頁 > 編程知識 > 如何把編程語言比喻成某種工具

如何把編程語言比喻成某種工具

發布時間:2023-03-31 09:34:02

A. 編程語言和編程工具各是什麼

哈哈,你這個理解有誤。

這些說起來很復雜,牽扯到很多東西,所以我只好說一種最淺顯的意思吧,希望你看懂之後再深思,就應該會明白了。

編程語言,可以用我們和外國人對話時候使用外語一個道理。我們是要用一種對方能聽的懂的話,表達自己的意思。
計算機語言也是這個意思,就是我們用它能聽懂的話,讓他明白你的意思。

編程語言和工具是密不可分的,因為雖然市面上有各種計算機編程語言,但是他們都是一個原理,也就是翻譯。

編程工具,把我們認識的編程語言翻譯成機器碼,告訴計算機,然後再把計算機的回饋轉換成我們看得懂的東西,呈現在你的眼前。

其實就好比一個兩個人,A只會說漢語,B只會說法語,這時候就需要一個精通中法兩種語言的人來翻譯了。這個翻譯,也就是編程工具。

B. 「語言只是工具,編程思維才是最重要的」,我信你個鬼

還記得我剛學編程那會兒,時不時會在網上看到或者親耳聽到一句話:「語言只是工具,編程思維才是最重要的」。我對此深信不疑。我現在想說:「你這個悶虧糟老頭子壞得很,我信你個鬼!」。這句話本身是沒有錯的,但是對一個初祥灶學者而言,這句話並不是那麼合適,至於為什麼?我講講我的理解吧。

我剛上大學那會兒,很崇拜那些編程很厲害的學長或者某些有編程經驗的同學,所以我把他們所說的「語言只是工具,編程思維才是最重要的」這句話作為我學習路上的指導!所以我並沒有刻意地學習某一門編程語言,而是接觸了很多很多語言,也一直在思考什麼才是編程思維,過程中著重體會各個編程語言中的編程思想,結果發現思維越來越混亂了。

我相信很多學習編程的同學都會遇到一個問題:同時學習幾門編程語言時,很容易把語法搞混了。可能我在寫Java的時候用到了PHP的語法,寫C++的時候卻寫成了Python的語句。慢慢地,心裡就會比較煩躁。到底什麼是編程思維呢:數據結構、演算法還是經驗?其實語言與語言之間的區別還是很大的,數據結構之間的差別也很大,比如編程語言中的函數形參和實參之間的關系,到底是傳值還是傳引用呢?

Python的傳遞規則是:可變類型(list,dict)等參數是傳引用,而不可變類型如元祖、字元串傳的則是值,傳引用也要考慮是淺拷貝還是深拷貝。而C++則可以自己控制到底是傳值、傳引用還是傳指針。思來想去,就這么一個函數傳參的問題,Java、Python、PHP、Golang、C++就各不相同。

試想,不同的編程語言在這么小的點上都有那麼多不同,我們要想掌握所有編程語言中的編程思想和語法是多麼困難啊。那麼「語言只是工具,編程思維才是最重要的」這句話究竟有沒有道理呢?其實這句話說得是很好的,但是不適用於所有人。只有你在某一門編程語言(技術)中進行了深耕,對其有了一定的理解之後,才能很好地利用這句話。

這句話的意思並不是「重視編程思維,看輕編程語言」,它講的是「觸類旁通」。當你對一門編程語言有了較深的理解之後,在學習其他編程語言的時候就可以借鑒你較為熟悉的編程語言中蘊含的編程思想。這樣就能更快地上手新技術。

但其實,很少有人能同時對多門編程語言做到精通或熟悉。

剛開始學習編程的時候,我們一定要先選定一門編程語言作為主航道,然後再學習其對應的數據結構,用其實現演算法,並做一些項目。如果只是學會了語法,就算能用這門編程語言刷幾道題,並不算是真的會這門語言。

我們在學習的路上不能貪多,在我看來:作為初學者,同樣是一年的時間,我寧願去學習一門編程語言,也不願拿12個月分別學習12門編程語言。雖然從表面看來,會很多編程語言的同學和誰都能談上幾句,知識面廣,但是真的到了做項目,需要用到一些比較深刻知識的時候,他肚子裡面是沒有什麼墨水的。

現在各個公司招聘,不也要求應聘者能有自己最擅長的一門技術么?

大家除了要定好自己的主航道,在選擇方向的時候也要格外慎重。雖然現在談論「A語言好還是B語言好」這種話題會顯得特別不專業,有時還會被很多人噴,但是不同技術的發展前景確實是不一樣的。某些語言有其獨特的生態,可以對應到一個技術螞宴神棧,其就業前景和發展前景相較其他語言就會不一樣。比如,如果你想從事大數據相關的行業,Java就一定是比PHP好的。最好不要因為某一門技術簡單而去選擇它,也不要單憑別人的看法而去跟風學習一些技術,最好還是自己做好調研,結合興趣點和技術的發展前景去選擇,這樣的效果可能會更好。

「語言只是工具,編程思維才是最重要的」這句話對於初學者而言,就像「適量鹽,適量糖,適量生抽」對不會做飯的人一樣,沒有意義。你這個糟老頭子壞得很,我信你個鬼!

C. 「編程」是什麼意思

編程
這是每個游戲編程FAQ里都有的問題。這個問題每星期都會在游戲開發論壇上被問上好幾次。這是個很好的問題,但是,沒人能給出簡單的答案。在某些應用程序中,總有一些計算機語言優於其他語言。下面是幾種用於編寫游戲的主要編程語言的介紹及其優缺點。希望這篇文章能幫助你做出決定。
1、C語言
如果說FORTRAN和COBOL是第一代高級編譯語言,那麼C語言就是它們的孫子輩。C語言是Dennis
Ritchie在七十年代創建的,它功能更強大且與ALGOL保持更連續的繼承性,而ALGOL則是COBOL和FORTRAN的結構化繼承者。C語言被設計成一個比它的前輩更精巧、更簡單的版本,它適於編寫系統級的程序,比如操作系統。在此之前,操作系統是使用匯編語言編寫的,而且不可移植。C語言是第一個使得系統級代碼移植成為可能的編程語言。
C語言支持結構化編程,也就是說C的程序被編寫成一些分離的函數呼叫(調用)的集合,這些呼叫是自上而下運行,而不像一個單獨的集成塊的代碼使用GOTO語句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的「空心粉式代碼」代碼要簡單得多。事實上,C仍然具有GOTO語句,不過它的功能被限制了,僅當結構化方案非常復雜時才建議使用。
正由於它的系統編程根源,將C和匯編語言進行結合是相當容易的。函數調用介面非常簡單,而且匯編語言指令還能內嵌到C代碼中,所以,不需要連接獨立的匯編模塊。
優點:有益於編寫小而快的程序。很容易與匯編語言結合。具有很高的標准化,因此其他平台上的各版本非常相似。
缺點:不容易支持面向對象技術。語法有時會非常難以理解,並造成濫用。
移植性:C語言的核心以及ANSI函數調用都具有移植性,但僅限於流程式控制制、內存管理和簡單的文件處理。其他的東西都跟平台有關。比如說,為Windows和Mac開發可移植的程序,用戶界面部分就需要用到與系統相關的函數調用。這一般意味著你必須寫兩次用戶界面代碼,不過還好有一些庫可以減輕工作量。
用C語言編寫的游戲:非常非常多。
資料:C語言的經典著作是《The
C
Programming
Language》,它經過多次修改,已經擴展到最初的三倍大,但它仍然是介紹C的優秀書本。一本極好的教程是《The
Waite
Group's
C
Primer
Plus》。
2、C++
C++語言是具有面向對象特性的C語言的繼承者。面向對象編程,或稱OOP是結構化編程的下一步。OO程序由對象組成,其中的對象是數據和函數離散集合。有許多可用的對象庫存在,這使得編程簡單得只需要將一些程序「建築材料」堆在一起(至少理論上是這樣)。比如說,有很多的GUI和資料庫的庫實現為對象的集合。
C++總是辯論的主題,尤其是在游戲開發論壇里。有幾項C++的功能,比如虛擬函數,為函數呼叫的決策制定增加了一個額外層次,批評家很快指出C++程序將變得比相同功能的C程序來得大和慢。C++的擁護者則認為,用C寫出與虛擬函數等價的代碼同樣會增加開支。這將是一個還在進行,而且不可能很快得出結論的爭論。
我認為,C++的額外開支只是使用更好的語言的小付出。同樣的爭論發生在六十年代高級程序語言如COBOL和FORTRAN開始取代匯編成為語言所選的時候。批評家正確的指出使用高級語言編寫的程序天生就比手寫的匯編語言來得慢,而且必然如此。而高級語言支持者認為這么點小小的性能損失是值得的,因為COBOL和FORTRAN程序更容易編寫和維護。
優點:組織大型程序時比C語言好得多。很好的支持面向對象機制。通用數據結構,如鏈表和可增長的陣列組成的庫減輕了由於處理低層細節的負擔。
缺點:非常大而復雜。與C語言一樣存在語法濫用問題。比C慢。大多數編譯器沒有把整個語言正確的實現。
移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數可移植性用戶界面庫都使用C++對象實現。
使用C++編寫的游戲:非常非常多。大多數的商業游戲是使用C或C++編寫的。
資料:最新版的《The
C++
Programming
Language》非常好。作為教程,有兩個陣營,一個假定你知道C,另外一個假定你不知道。到目前為止,最好的C++教程是《Who's
Afraid
of
C++》,如果你已經熟知C,那麼試一下《Teach
Yourself
C++》。
3、我該學習C++或是該從C開始
我不喜歡這種說法,但它是繼「我該使用哪門語言」之後最經常被問及的問題。很不幸,不存在標准答案。你可以自學C並使用它來寫程序,從而節省一大堆的時間,不過使用這種方法有兩個弊端:
你將錯過那些面向對象的知識,因為它可能在你的游戲中使得數據建模更有效率的東西。
最大的商業游戲,包括第一人稱射擊游戲很多並沒有使用C++。但是,這些程序的作者即使使用老的C的格式,他們通常堅持使用面向對象編程技術。如果你只想學C,至少要自學OO(面向對象)編程技術。OO是模擬(游戲)的完美方法,如果你不學習OO,你將不得不「辛苦」的工作。
4、匯編語言
顯然,匯編是第一個計算機語言。匯編語言實際上是你計算機處理器實際運行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如寄存器和堆棧。如果你要找的是類英語且有相關的自我說明的語言,這不是你想要的。
確切的說,任何你能在其他語言里做到的事情,匯編都能做,只是不那麼簡單
-
這是當然,就像說你既可以開車到某個地方,也可以走路去,只是難易之分。話雖不錯,但是新技術讓東西變得更易於使用。
總的來說,匯編語言不會在游戲中單獨應用。游戲使用匯編主要是使用它那些能提高性能的零零碎碎的部分。比如說,毀滅戰士整體使用C來編寫,有幾段繪圖程序使用匯編。這些程序每秒鍾要調用數千次,因此,盡可能的簡潔將有助於提高游戲的性能。而從C里調用匯編寫的函數是相當簡單的,因此同時使用兩種語言不成問題。
特別注意:語言的名字叫「匯編」。把匯編語言翻譯成真實的機器碼的工具叫「匯編程序」。把這門語言叫做「匯編程序」這種用詞不當相當普遍,因此,請從這門語言的正確稱呼作為起點出發。
優點:最小、最快的語言。匯編高手能編寫出比任何其他語言能實現的快得多的程序。你將是利用處理器最新功能的第一人,因為你能直接使用它們。
缺點:難學、語法晦澀、堅持效率,造成大量額外代碼
-
不適於心臟虛弱者。
移植性:接近零。因為這門語言是為一種單獨的處理器設計的,根本沒移植性可言。如果使用了某個特殊處理器的擴展功能,你的代碼甚至無法移植到其他同類型的處理器上(比如,AMD的3DNow指令是無法移植到其它奔騰系列的處理器上的)。
使用匯編編寫的游戲:我不知道有什麼商業游戲是完全用匯編開發的。不過有些游戲使用匯編完成多數對時間要求苛刻的部分。
資料:如果你正在找一門匯編語言的文檔,你主要要找晶元的文檔。網路上如Intel、AMD、Motorola等有一些關於它們的處理器的資料。對於書籍而言,《Assembly
Language:
Step-By-Step》是很值得學習的。
5、Pascal語言
Pascal語言是由Nicolas
Wirth在七十年代早期設計的,因為他對於FORTRAN和COBOL沒有強制訓練學生的結構化編程感到很失望,「空心粉式代碼」變成了規范,而當時的語言又不反對它。Pascal被設計來強行使用結構化編程。最初的Pascal被嚴格設計成教學之用,最終,大量的擁護者促使它闖入了商業編程中。當Borland發布IBM
PC上的
Turbo
Pascal時,Pascal輝煌一時。集成的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal編程了為MS-DOS編寫小程序的首選語言。
然而時日不久,C編譯器變得更快,並具有優秀的內置編輯器和調試器。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉向了為Windows
編寫程序的C++。Turbo
Pascal很快被人遺忘。
最後,在1996年,Borland發布了它的「Visual
Basic殺手」-
Delphi。它是一種快速的帶華麗用戶界面的
Pascal編譯器。由於不懈努力,它很快贏得了一大群愛好者。
基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔操作符。這既是好事又是壞事。雖然很難寫出難以理解的「聰明」代碼,它同時也使得一些低級操作,如位操作變得困難起來。
優點:易學、平台相關的運行(Delphi)非常好。
缺點:「世界潮流」面向對象的Pascal繼承者(Mola、Oberon)尚未成功。語言標准不被編譯器開發者認同。專利權。
移植性:很差。語言的功能由於平台的轉變而轉變,沒有移植性工具包來處理平台相關的功能。
使用Pascal編寫的游戲:幾個。DirectX的Delphi組件使得游戲場所變大了。
資料:查找跟Delphi有關的資料,請訪問:Inprise
Delphi
page。
6、Visual
Basic
哈,BASIC。回到八十年代的石器時代,它是程序初學者的第一個語言。最初的BASIC形式,雖然易於學習,卻是可怕的無組織化,它義無反顧的使用了GOTO充斥的「空心粉式代碼」。當回憶起BASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。
快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型編程環境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder編程環境的許可權,並把它作為Visual
Basci
1.0發布,其用戶界面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結構化了,行號也被去除。實際上,這門語言與那些內置於TRS-80、Apple
II及Atari里的舊的ROM
BASIC相比,更像是帶Basic風格動詞的Pascal。
經過六個版本,Visual
Basic變得非常漂亮。用戶界面發生了許多變化,但依然保留著「把代碼關聯到用戶界面」的主旨。這使得它在與即時編譯結合時變成了一個快速原型的優異環境。
優點:整潔的編輯環境。易學、即時編譯導致簡單、迅速的原型。大量可用的插件。雖然有第三方的DirectX插件,DirectX
7已准備提供Visual
Basic的支持。
缺點:程序很大,而且運行時需要幾個巨大的運行時動態連接庫。雖然表單型和對話框型的程序很容易完成,要編寫好的圖形程序卻比較難。調用Windows的API程序非常笨拙,因為VB的數據結構沒能很好的映射到C中。有OO功能,但卻不是完全的面向對象。專利權。
移植性:非常差。因為Visual
Basic是微軟的產品,你自然就被局限在他們實現它的平台上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程序轉變成Java。
使用Visual
Basic編寫的游戲:一些。有很多使用VB編寫的共享游戲,還有一些是商業性的。
資料:微軟的VB頁面有一些信息。
7、Java
Java是由Sun最初設計用於嵌入程序的可移植性「小C++」。在網頁上運行小程序的想法著實吸引了不少人的目光,於是,這門語言迅速崛起。事實證明,Java不僅僅適於在網頁上內嵌動畫
-
它是一門極好的完全的軟體編程的小語言。「虛擬機」機制、垃圾回收以及沒有指針等使它很容易實現不易崩潰且不會泄漏資源的可靠程序。
雖然不是C++的正式續篇,Java從C++
中借用了大量的語法。它丟棄了很多C++的復雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向對象編程,要在Java里寫非面向對象的程序就像要在Pascal里寫「空心粉式代碼」一樣困難。
優點:二進制碼可移植到其他平台。程序可以在網頁中運行。內含的類庫非常標准且極其健壯。自動分配合垃圾回收避免程序中資源泄漏。網上數量巨大的代碼常式。
缺點:使用一個「虛擬機」來運行可移植的位元組碼而非本地機器碼,程序將比真正編譯器慢。有很多技術(例如「即時」編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經過慎重考慮,雖然被正式廢除,但為了保持向後兼容不得不保留。越高級的技術,造成處理低級的機器功能越困難,Sun為這門語言增加新的「受祝福」功能的速度實在太慢。
移植性:最好的,但仍未達到它本應達到的水平。低級代碼具有非常高的可移植性,但是,很多UI及新功能在某些平台上不穩定。
使用Java編寫的游戲:網頁上有大量小的Applet,但僅有一些是商業性的。有幾個商業游戲使用Java作為內部腳本語言。
資料:Sun的官方Java頁面有一些好的信息。IBM也有一個非常好的Java頁面。JavaLobby是一個關於Java新聞的最好去處。
8、創作工具
上面所提及的編程語言涵蓋了大多數的商業游戲。但是也有一個例外,這個大游戲由於它的缺席而變得突出。
「神秘島」。沒錯,賣得最好的商業游戲不是使用以上任何一門語言編的,雖然有人說「神秘島」99%是使用
3D建模工具製作的,其根本的編程邏輯是在HyperCard里完成的。
多數創作工具有點像Visual
Basic,只是它們工作在更高的層次上。大多數工具使用一些拖拉式的流程圖來模擬流程式控制制。很多內置解釋的程序語言,但是這些語言都無法像上面所說的單獨的語言那樣健壯。
優點:快速原型
-
如果你的游戲符合工具製作的主旨,你或許能使你的游戲跑得比使用其他語言快。在很多情況下,你可以創造一個不需要任何代碼的簡單游戲。使用插件程序,如Shockware及IconAuthor播放器,你可以在網頁上發布很多創作工具生成的程序。
缺點:專利權,至於將增加什麼功能,你將受到工具製造者的支配。你必須考慮這些工具是否能滿足你游戲的需要,因為有很多事情是那些創作工具無法完成的。某些工具會產生臃腫得可怕的程序。
移植性:因為創作工具是具有專利權的,你的移植性以他們提供的功能息息相關。有些系統,如Director可以在幾種平台上創作和運行,有些工具則在某一平台上創作,在多種平台上運行,還有的是僅能在單一平台上創作和運行。
使用創作工具編寫的游戲:「神秘島」和其他一些同類型的探險游戲。所有的Shockwave游戲都在網路上。
資料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、易語言
★全中文支持,無需跨越英語門檻。★全可視化編程,支持所見即所得程序界面設計和程序流程編碼。★中文語句快速錄入。提供多種內嵌專用輸入法,徹底解決中文語句輸入速度慢的問題。★代碼即文檔。自動規范強制代碼格式轉換,任何人編寫的任何程序源代碼格式均統一。★參數引導技術,方便程序語句參數錄入。★無定義類關鍵字。所有程序定義部分均採用表格填表方式,用戶無需記憶此類關鍵字及其使用格式。★命令格式統一。所有程序語句調用格式完全一致。★語法格式自動檢查。自動檢查並提示所輸入語句的語法格式是否正確,且可自動添加各類名稱。★全程提示與幫助。滑鼠停留立即顯示相關項目提示。編程時提示語法格式,調試時提示變數當前內容,隨時按下F1鍵可得到與當前主題相關詳細幫助等。★名稱自動管理。用戶修改任一名稱定義,其它所有包含該名稱的程序代碼均自動修正。★集成化開發環境。集界面設計、代碼編寫、調試分析、編譯打包等於一體。★學習資源豐富。詳細的幫助文件、數十兆的知識庫、數萬用戶的網上論壇、教材已出版發行……
10、結論
你可能希望得到一個關於「我該使用哪種語言」這個問題的更標準的結論。非常不幸,沒有一個對所有應用程序都最佳的解決方案。C適於快而小的程序,但不支持面向對象的編程。C++完全支持面向對象,但是非常復雜。Visual
Basic與Delphi易學,但不可移植且有專利權。Java有很多簡潔的功能,但是慢。創作工具可以以最快的速度產生你的程序,但是僅對某一些類型的程序起作用。最好的方法是決定你要寫什麼樣的游戲,並選擇對你的游戲支持最好的語言。「試用三十天」的做法成為工業標準是件好事情。

D. 編程,程序,資料庫,都是什麼意思最好能給個比喻.還有一些網站功能,請高手補充.多謝,回答好的加分

編程: 可以理解為一種技能,比方 走路-> 人需要學習 -> 學會走路,你就擁有了一個走路的技能。
程序: 是編程的整體體現,比方 你會了走路 說話 肢體動作 這樣一系列的功能組成了一個完整的程序。
資料庫: 可以理解為 人的大腦 存儲數據用的,需迅辯磨要對數據進行 增刪改查而已。
網站功能: 就是上邊所說的一系列的動作,來完成一些具體的操作,比方,登錄,注冊,支付等,一個網站就是通過多畝斗個灶飢功能組合起來的。
希望可以幫到你

E. 有什麼工具可以偽裝編程語言

解決方法:
一.加花指令。可以通過OD之類的軟體修改你的軟體的入口地址,加上花指令就可以了。下面是搜索到的常用花指令,直接復制過來的可能有重復。你可以試試,如果不夠或不準確的話,你也可以自己搜索以下,當然你會匯編的話也可以寫。
1.偽裝vc++5.0代碼:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 111111 -\___
PUSH 111111 -/ 在這段代碼中類似這樣的操作數可以亂填
MOV EAX,Dword PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
nop
jmp 原入口地址

************************************************************************
2.胡亂跳轉代碼:
push ebp
mov ebp,esp
inc ecx
push edx
ADD ESP,-6C
nop
pop edx
dec ecx
pop ebp
ADD ESP,6C
inc ecx
loop somewhere /跳轉到上面那段代碼地址去!

somewhere:
nop /"胡亂"跳轉的開始...
jmp 下一個jmp的地址 /在附近隨意跳
jmp ... /...
jmp 原入口地址 /跳到原始oep

************************************************************************
3.偽裝c++代碼:
push eax
mov ebp,esp
push -1
push 111111
push 111111
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
nop
nop
jmp 原入口地址

************************************************************************
4.偽裝Microsoft Visual C++ 6.0代碼:

PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
SUB ESP,1
PUSH EBX
PUSH ESI
PUSH EDI
POP EAX
POP EAX
nop
POP EAX
nop
ADD ESP,1
POP EAX
MOV DWORD PTR FS:[0],EAX
POP EAX
POP EAX
nop
POP EAX
nop
POP EAX
MOV EBP,EAX
JMP 原入口地址

************************************************************************
5.偽裝防殺精靈一號防殺代碼:
push ebp
mov ebp,esp
push -1
push 666666
push 888888
mov eax,dword ptr fs:[0]
nop
mov dword ptr fs:[0],esp
nop
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 原入口地址

************************************************************************
6.偽裝防殺精靈二號防殺代碼:
push ebp
mov ebp,esp
push -1
push 0
push 0
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
sub esp,68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp,68
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 原入口地址

************************************************************************
7.偽裝木馬綵衣(無限復活袍)代碼:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ 在這段代碼中類似這樣的操作數可以亂填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /這條指令可以不要!
jo 原入口地址
jno 原入口地址
call 下一地址

************************************************************************
8.偽裝木馬綵衣(蝦米披風)代碼:
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loop somewhere /跳轉到下面那段代碼地址去!

someshere:
nop /"胡亂"跳轉的開始...
jmp 下一個jmp的地址 /在附近隨意跳
jmp ... /...
jmp 原入口的地址 /跳到原始oep

************************************************************************
9.偽裝花花添加器(神話)代碼:-----------根據C++改
nop
nop
nop
mov ebp,esp
push -1
push 111111
push 222222
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
mov eax,原入口地址
push eax
retn

************************************************************************
10.偽裝花花添加器(無極)代碼:
nop
mov ebp, esp
push -1
push 0A2C2A
push 0D9038
mov eax, fs:[0]
push eax
mov fs:[0], esp
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口地址
jmp eax

************************************************************************
11.偽裝花花添加器(金剛)代碼:--------根據VC++5.0改
nop
nop
mov ebp, esp
push -1
push 415448
push 4021A8
mov eax, fs:[0]
push eax
mov fs:[0], esp
add esp, -6C
push ebx
push esi
push edi
add [eax], al
mov eax,原入口地址
jmp eax

************************************************************************
12.偽裝花花添加器(殺破浪)代碼:
nop
mov ebp, esp
push -1
push 0
push 0
mov eax, fs:[0]
push eax
mov fs:[0], esp
sub esp, 68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp, 68
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口地址
jmp eax

************************************************************************
12.偽裝花花添加器(痴情大聖)代碼:
nop
..........省略N行nop
nop
push ebp
mov ebp, esp
add esp, -0C
add esp, 0C
mov eax, 原入口地址
push eax
retn

************************************************************************
13.偽裝花花添加器(如果*愛)代碼:
nop
........省略N行nop
nop
push ebp
mov ebp, esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
mov eax, 原入口地址
jmp eax

************************************************************************
14.偽裝PEtite 2.2 -> Ian Luck代碼:
mov eax,0040E000
push 004153F3
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
pushfw
pushad
push eax
xor ebx,ebx
pop eax
popad
popfw
pop dword ptr fs:[0]
pop eax
jmp 原入口地址 '執行到程序的原有OEP

************************************************************************
15.無效PE文件代碼:
push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
MOV DWORD PTR FS:[0],EAX \
POP EAX |
POP EAX \
MOV DWORD PTR FS:[0],EAX |(注意了。。花指令)
POP EAX /
POP EAX |
MOV DWORD PTR FS:[0],EAX /
loop 原入口地址

************************************************************************
16.偽裝防殺精靈終極防殺代碼:
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
jmp 原入口地址

************************************************************************
17.偽裝木馬綵衣(金色魚錦衣)花代碼
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
mov eax,原入口地址
push eax
retn

************************************************************************
18.
在mov ebp,eax
後面加上
PUSH EAX
POP EAX

************************************************************************
19.偽裝UPX花指令代碼:

pushad
mov esi,m.0044D000
lea edi,dword ptr ds:[esi+FFFB4000]
push edi
or ebp,FFFFFFFF
jmp short m.00477F2A

************************************************************************
20.
push ebp
mov ebp,esp
inc ecx
push edx
pop edx
dec ecx
pop ebp
inc ecx
jmp 原入口

21、
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loop A1地址
nop
nop

A1:push ebp
mov ebp,esp
jo 原入口
jno 原入口

************************************************************************
【深層】偽裝 WCRT Library (Visual C++) DLL Method 1 -> Jibz
黑吧代碼 + 匯編代碼:
使用黑吧粘貼以下代碼:

55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59

粘貼完畢後,再添加2行匯編語句:

jmp 原入口地址 '執行到程序的原有OEP

retn 0C
************************************************************************

發布幾個不常見的花指令

B1 01 mov cl,1
2C 90 sub al,90
95 xchg eax,ebp
4D dec ebp
65:42 inc edx
40 inc eax
20C4 and ah,al
8350 06 6E adc dword ptr ds:[eax+6],6E
226A E4 and ch,byte ptr ds:[edx-1C]
E8 B15FBC5B call 入口點

55 push ebp
8BEC mov ebp,esp
51 push ecx
53 push ebx
8BD8 mov ebx,eax
8BC3 mov eax,ebx
04 9F add al,9F
2C 1A sub al,1A
73 03 jnb 入口點

JMP SHORT test.00414FB5 (EB 01)
NOP
JMP SHORT test.00414FB8 (EB 01)
NOP
JMP SHORT test.00414FBB (EB 01)
NOP
JMP test. (EB 01)

90=c4

PUSH EBP
MOVE EBP,ESP
inc ecx
push eax
pop eax
push edx
pop edx
dec ecx
sub eax,-2
ADD ESP,68
DEC eax
DEC eax
SUB ESP,68
JPE 入口
JPO 入口
2008-6-13 11:30 dazy
花指令合集(0608)

【深層】偽裝 PEtite 2.2 -> Ian Luck 匯編代碼:
============================
偽裝代碼部分:
============================

mov eax,0040E000
push 004153F3
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
pushfw
pushad
push eax
xor ebx,ebx
pop eax
popad
popfw
pop dword ptr fs:[0]
pop eax
jmp XXXXXXXX '執行到程序的原有OEP

============================

【深層】偽裝 WCRT Library (Visual C++) DLL Method 1 -> Jibz 二進制代碼 + 匯編代碼:
============================
偽裝代碼部分:
============================

使用二進制粘貼以下代碼:

55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59

粘貼完畢後,再添加2行匯編語句:

jmp XXXXXXXX '執行到程序的原有OEP
retn 0C

1。偽裝 vc

VC++程序的入口代碼:
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ 在這段代碼中類似這樣的操作數可以亂填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /這條指令可以不要!
jmp 跳轉到程序原來的入口點

******************************************************************************************

2。跳轉

somewhere:
nop /"胡亂"跳轉的開始...
jmp 下一個jmp的地址 /在附近隨意跳
jmp ... /...
jmp 原入口的地址 /跳到原始oep

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
新入口: push ebp
mov ebp,esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
loop somewhere /跳轉到上面那段代碼地址去!

3. 偽裝 C
融合
把A的代碼換成B的
push ebp
mov ebp,esp
push -1
push 111111
push 222222
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 老入口

4. c ++
push ebp
mov ebp,esp
push -1
push 111111
push 222222
mov eax,fs:[0]
push eax
mov fs:[0],esp
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax

5.Microsoft Visual C++ 6.0
PUSH -1
PUSH 0
PUSH 0
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
SUB ESP,68
PUSH EBX
PUSH ESI
PUSH EDI
POP EAX
POP EAX
POP EAX
ADD ESP,68
POP EAX
MOV DWORD PTR FS:[0],EAX
POP EAX
POP EAX
POP EAX
POP EAX
MOV EBP,EAX
JMP 原入口

6.
在mov ebp,eax
後面加上
PUSH EAX
POP EAX

7:
防殺精靈一號防殺代碼:
push ebp
mov ebp,esp
push -1
push 666666
push 888888
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 入口

8:
防殺精靈二號防殺代碼:
push ebp
mov ebp,esp
push -1
push 0
push 0
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
sub esp,68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp,68
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
jmp 入口

9.
防殺精靈終極防殺代碼
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
jmp入口

10:
木馬綵衣(金色魚錦衣)花代碼
push ebp
mov ebp,esp
add esp,-0C
add esp,0C
mov eax,原入口
push eax
retn

11:
木馬綵衣(蝦米披風)花代碼
push ebp
nop
nop
mov ebp,esp
inc ecx
nop
push edx
nop
nop
pop edx
nop
pop ebp
inc ecx
loopd /跳轉到下面那段代碼地址去!

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
nop /"胡亂"跳轉的開始...
jmp 下一個jmp的地址 /在附近隨意跳
jmp ... /...
jmp 原入口的地址 /跳到原始oep

12.
VC++5.0代碼(木馬綵衣無限復活袍):
PUSH EBP
MOV EBP,ESP
PUSH -1
push 415448 -\___
PUSH 4021A8 -/ 在這段代碼中類似這樣的操作數可以亂填
MOV EAX,DWORD PTR FS:[0]
PUSH EAX
MOV DWORD PTR FS:[0],ESP
ADD ESP,-6C
PUSH EBX
PUSH ESI
PUSH EDI
ADD BYTE PTR DS:[EAX],AL /這條指令可以不要!
jo 00401000 /原入口
jno 00401000 /原入口
db 0e8h /花代碼

xxxxxx: nop \
/|\ POP EAX |看了,其實這兩部分就是花指令
| POP EAX |
| POP EAX /
| JMP yyyyyy (跳回舊入口點:00100016DB )
|
|
| push ebp <-新入口點:
| mov ebp,esp
| inc ecx
| push edx
| nop
| pop edx
| dec ecx
| pop ebp
| inc ecx
| MOV DWORD PTR FS:[0],EAX \
| POP EAX |
| POP EAX \
| MOV DWORD PTR FS:[0],EAX |(注意了。。花指令)
| POP EAX /
| POP EAX |
| MOV DWORD PTR FS:[0],EAX /
| loop xxxxxx (這里我向上跳~地址也是自己選的~~)
|_________________++++++(轉到地址:100036c3 往回跳)

--------------------------------------------------------------
代碼如下: 神話
nop
nop
nop
mov ebp,esp
push -1
push 111111
push 222222
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
pop eax
mov dword ptr fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax
mov eax,原入口
push eax
retn

代碼如下: 無極
nop
mov ebp, esp
push -1
push 0A2C2A
push 0D9038
mov eax, fs:[0]
push eax
mov fs:[0], esp
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口
jmp eax

代碼如下: 金剛
nop
nop
mov ebp, esp
push -1
push 415448
push 4021A8
mov eax, fs:[0]
push eax
mov fs:[0], esp
add esp, -6C
push ebx
push esi
push edi
add [eax], al
mov eax,原入口
jmp eax

代碼如下: 殺破浪
nop
mov ebp, esp
push -1
push 0
push 0
mov eax, fs:[0]
push eax
mov fs:[0], esp
sub esp, 68
push ebx
push esi
push edi
pop eax
pop eax
pop eax
add esp, 68
pop eax
mov fs:[0], eax
pop eax
pop eax
pop eax
pop eax
mov ebp, eax
mov eax, 原入口
jmp eax

代碼如下: 痴情大聖
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebp
mov ebp, esp
add esp, -0C
add esp, 0C
mov eax, 原入口
push eax
retn

代碼如下: 如果*愛
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebp
mov ebp, esp
inc ecx
push edx
nop
pop edx
dec ecx
pop ebp
inc ecx
mov eax, 原入口
jmp eax

--------------------------------------------------------
灰鴿子萬能文件捆綁器 VIP2005 -> 葛軍 *

push ebp
mov ebp,esp
add esp,-124
push ebx
push esi
push edi
xor eax,eax
mov dword ptr ss:[ebp-124],eax
jmp 入口

----------------------------------------------------------
PUSH EBP
MOV EBP,ESP
MOV EAX,0
PUSH EAX
CALL 下個指令 ↓
POP EAX
SUB EAX,0
MOV ECX,0
MOV EDX,0
MOV ESI,0
MOV EDI,0
MOV EBP,0
ADD EBP,EAX
POP EAX
POP EAX
POP EAX
POP EAX
POP EBP
PUSH 入口點
RETN
----------------------------------------------------------------
//Borland Delphi 6.0 - 7.0

PUSH EBP
MOV EBP,ESP
MOV ECX,6
PUSH 0 下面那個跳到這里
PUSH 0
DEC ECX
JNZ 往回跳
PUSH EBX
PUSH ESI
PUSH EDI
POP EDI
POP ESI
POP EBX
JMP 入口點
-----------------------------------------------------------------
push ebp
mov ebp,esp
inc edx
nop
pop edx
dec ecx
pop ebp
inc ecx
jmp 入口點
-----------------------------------------------------------------
push ebp
mov ebp,esp
push ebx
mov ebx,dword ptr ss:[ebp+8]
push esi
mov esi,dword ptr ss:[ebp+C]
push edi
mov edi,dword ptr ss:[ebp+10]
test esi,esi
jmp 入口
-----------------------------------------------------------------
0046D4BA pop eax
0046D4BB sub eax,7D
0046D4C0 push eax
0046D4C1 C3 retn
0046D4C2 call 0046D4BA

-------------------------------------------------------------------
偽裝VC7。0花

最近抓的偽裝VC7。0的花,很短
//---------------------------------
push 70
push 123456(數字隨便)
call A(A為地址)
xor ebx,ebx

A地址:retn
2008-6-13 11:30 dazy
1.POP 0
POP 0

2.PUSH ebp
pop ebp

3.nop ----一般插在中間

4.jmp 一下jmp的地址

jmp ...

5.add esp,1 ----數字可以改變
sub esp,1

6. add esp,1
add esp,-1

7.sub esp,1
sub esp,-1

8.push esi
push edi

9.inc ecx
dec ecx

10 sub eax,-2
dec eax
dec eax

11.(該免殺花指令經典,壓縮可運行,免卡巴)
push ebp
mov ebp,esp
pop esp
jmp 原入口點地址-

jmp XXXXXX等價於:

PUSH XXXXXX
RETN

12. 免殺卡巴的花指令:

push ebx
push ebx
push ebx
pop ebx
pop ebx
pop ebx
jmp 跳到下一個地址
add esp,1
add esp,-1
push 入口點地址
retn

*************
12.(同上)
push ebp

push esp
pop ebp

pop esp
jmp 原入口點地址

13.最新的一段萬能免殺花指令:
push ebp
push esp
pop ebp
add esp,-0C
add esp,0C
push eax
jmp入口

14.免殺花指令

push ebp
mov ebp,esp
add esp,-0C
add esp,0C
push eax
mov eax,入口地址
jmp eax
nop

15.
jmp 改成:Jg(大於轉移),JL(小於轉移)
或改成:jb(小於轉移),jnb(大於或等於轉移)

16.寫過卡巴花指令的跳不要直接用jmp來跳,不然,要被直接殺

jmp ---直接被殺
改成
jb
jnb

或改成:
push 入口地址
retn

或改成:

mov eax,入口地址
jmp eax

17.一段免殺卡巴的花指令:
push ebx
push ebx
pop ebx
pop ebx
add esp,1
add esp,-1
push 入口地址
retn

二。可以通過加殼工具,讓別人識別不出來你用什麼編寫的。加殼工具分壓縮殼和加密殼。我就不再列出了。

注意:因為有的人做木馬或病毒通過加花或加殼來實現免殺。所以有的是會被殺毒軟體認為是木馬或病毒。

F. 請用有趣的比喻解釋什麼叫軟體什麼叫編程(說的很好的,給高分)

打個比方,你買個電腦,不裝系統,什麼也幹不了
操作系統就是軟體的一種,其他各種軟體要在操作系統上運行,如WINXP。
軟體是怎麼來的?軟體工程師通過編程做出來的,編程也是要用軟體的。比如VC。

你看的電子元件是不是叫可編程邏輯器件,這個元件裡面可以儲存通過編程得到的程序。

U盤是存儲軟體和文件的,內存是暫時存儲的,用來和CPU傳輸數據用的。

打的夠多的,雖然不專業,但是看著給點分吧。不明白就網路看看就行

最後補充一個 最早的編程是不用軟體的。
是用機器語言,就是010111000這么一個一個敲的。雞蛋出來了 哦也

G. C語言入門什麼是編程語言

學習編程語言之前,首先要搞清楚「編程語言」這個概念。

很小的時候,父母就教我們開口說話,也教我們如何理解別人講話的意思。經過長時間的熏陶和自我學習,我們竟然在不知不覺中學會了說話,同時也能聽彎和懂其他小朋友說話的意思了,我們開始向父母要零花錢買零食和玩具、被欺負了向父母傾訴……

我們說的是漢語,是「中國語言」,只要把我們的需求告訴父母,父母就會滿足,我們用「中國語言」來控制父母,讓父母做我們喜歡的事情。

「中國語言」有固定的格式,每個漢字代表的意思不同,我們必須正確的表達,父母才能理解我們的意思。例如讓父母給我們10元零花錢,我們會說「媽媽給我10塊錢吧,我要買小汽車」。如果我們說「10元給我汽車小零花錢媽媽」,或者「媽媽給我10億人民幣,我要買F-22」,媽媽就會覺得奇怪,聽不懂我們的意思,或者理解錯誤,責備我們。

我們通過有固定格式和固定詞彙的「語言」來控制他人,讓他人為我們做事情。語言有很多種,包括漢語、英語、法語、韓語等,雖然他們的詞彙和格式都不一樣,但是可以達到同樣的目的,我們可以選擇任意一種語言去控制他人。

同樣,我們也可以通過」語言「來控制計算機,讓計算機為我們做事情,這樣的語言就叫做編程語言(Programming Language)。

編程語言也有固定的格式和詞彙,我們必須經過學習才會使用,才能控制計算機。

編程語言有很多種,常用的有C語言、C++、Java、C#、PHP、JavaScript等,每種語言都有自己擅長的方面,例如:

C語言和C++主要用於PC軟體開發、底層開發、單片機和嵌入式系統;

Java和C#不但可以用來開發軟體,還可以用來開發網站後台程序;

PHP主要用來開發網站後台程序;

JavaScript 主要負責網站的前端工作(現在也有公司使用 Node.js 開發網站後台)。

可以將不同的編程語言比喻成各國語言,為了表達同一個意思,可能使用不同的語句。例如,表達「世界你好」的意思:

漢語:世界你好;

英語:Hello World

法語:Bonjour tout le monde

在編程語言中,同樣的操作也可能使用不同的語句。例如,在屏幕上顯示「XX電子社區」:

C語言:puts("XX電子社區");

PHP:echo "XX電子社區";

Java:System.out.println("XX電子社區");

編程語言類似於人類語言,由直觀的詞彙組成,我們很容易就能理解它的.意思,例如在C語言中,我們使用puts這個詞讓計算機在屏幕上顯示出文字;puts 是 output string(輸出字元串)的縮寫。

使用 puts 在屏幕上顯示「XX電子社區」:

puts("XX電子社區");我們把要顯示的內容放在("和")之間,並且在最後要有;。你必須要這樣寫,這是固定的格式。

激搭總結:編程語言是用來控制計算機的一系列指令(Instruction),它有固定的格式和詞彙(不同編程語言的格式和詞彙不一樣),必須遵守,否則就會出錯,達不到我們的目的。

C語言(C Language)是編程語言的一種,學習C語言,主要是學習它的格式和詞彙。下面是一個C語言的完整例子,它會讓計算機在屏幕上顯示」XX電子社區「。

這個例子主要演示C語言的一些固有格式和詞彙,看不懂的讀者不必深究,也不必問為什麼是這樣,後續我們會逐步給大家講解。

#include

int main(){

puts("XX電子社區");

return 0;

}

這些具有特定含義的詞彙、語句,按照特定的格式組織在一起,就構成了源代碼(Source Code),也稱源碼或代碼(Code)。

那麼,C語言肯定規定了源代碼中每個詞彙、語句的含義,也規定了它們該如何組織在一起,這就是語法(Syntax)。它與我們學習英語時所說的「語法」類似,都規定了如何將特定的詞彙和句子組織明鬧拿成能聽懂的語言。

編寫源代碼的過程就叫做編程(Program)。從事編程工作的人叫程序員(Programmer)。程序員也很幽默,喜歡自嘲,經常說自己的工作辛苦,地位低,像農民一樣,所以稱自己是」碼農「,就是寫代碼的農民。也有人自嘲稱是」程序猿「。

H. 程序設計 的比喻

程序設計

就像廚師做菜...

從柴米油鹽 一直到上層的工具 最斗羨檔上層的就是廚師

廚師面對的是一樣樣工具(可理解為操作系統應用程序介面,也可以理解為別人製作的框架...),這些工具是別人根空亂據更底層的介面 製作出來的...
更底層的是什麼..是鋼鐵--->鍋碗瓢盆
是種子--->糧食,肥料

.......

而編程 就是用別人做好的這些工具,,鍋碗瓢盆,柴米油鹽來操作 制定出一定的操作次序...

鍋碗瓢盆是工具,柴米油鹽是數據...

程序員就是用工具 將數據經過一定處理 最後派腔完成一個作品

I. 編程 到底是什麼詳細解釋

我認為樓上的食譜的比喻不是很恰當。
因為食譜是一種工作流,描述的是先干什麼後干什麼以畝芹襲及所用的迅兄資源和時間,而程序除了可以被看成一種工作流之外,還可以被看成一種生成工作流的邏輯描述,也就是說,除了要安排好食譜中的步驟,還要知道食材和步驟的邏輯關系,比如是先炒後燉還是先燉後炒,是先放油鹽醬醋還是後放油鹽醬醋,什麼東西和什麼東西不能放一起等等。這些是通過編程和程序中的邏輯判斷來實現的,這種邏輯判斷在食譜中是沒有首源的(例如,食譜中是不會出現"如果炒糊了就放點糖"這樣的描述的)。因此,食譜只是單純的流程描述,編程和程序是比食譜更高級和復雜的概念。

其實,編程用大白話來說,就是如何控制計算機利用各種硬體資源來處理數據和信息。因此,編程分為幾個層級。最底層是直接與硬體打交道的,用來控制硬體的執行,一般是匯編編程;最上面的是軟體編程,直接處理數據和信息,編寫的程序直接面向程序的使用者;在他們之間的是操作系統級編程,用來建立連接底層和上層的橋梁。每一層就不展開說了,否則都夠寫幾本書了。
大多數程序員都屬於軟體編程這個層級的,其他的程序員一般都必須非常了解他們使用的硬體,因為他們的程序就是要操作這些硬體的。
說完了編程的分類,再來說說編程到底干什麼。我也來比喻一下,我把編程比喻成教育,計算機就是小孩,綜合起來就是教計算機做什麼以及怎麼做,也就是教育小孩做事情,而編程寫出來的程序,就是一種行為規范。
比如,我要教小孩過馬路,那麼我告訴他一個過馬路的行為規范:"先向左看,如果沒車過來就走到路中央,如果有車就等車過去;到了路中央向右看,如果沒車就過去,如果有車就等一等。"
我把這個過馬路的"行為規范"(程序)告訴我的"小孩"(計算機),他就能嚴格照著去執行。
這個比喻不恰當的地方,就是我的"小孩"的學習能力實在有限,他只會照著我寫好的"行為規范"去做,我沒寫的他就不知道怎麼做了。但是,將來的"小孩"肯定會增強自己的學習能力,通過"行為規范"來產生新的"行為規范",並且新的"教育方法"(編程方法)也在不斷的被研究著。

J. 如果把編程比喻成蓋房子。

我覺得比喻相當不恰當。如果確實這么比喻,那我願意住面向過程的房子。
首先,房屋的整體性很強,你把它分割開來考慮和計算本身就很困難,如果是胡亂分割,那還不如不分割。
其次,面向過程和工具的關系也搞不清楚,我不明白為什麼面向過程就是統一工具。

實際斗州上,面向對象和面空渣蔽向過程各自有各自的優勢。很多事情自有適合的方式,不恰當的比喻會使得問題越來越復雜。

有些典型的問題是可以多個方面去考慮的,比如象棋:
A:如果從面向過程去說,那應當是,輪流移動上來考慮,即你做了一個動作以後,對方會怎樣。
B:梁猜如果從面向對象上來說,每一個棋盤上的子都是一個對象,他們都有自己的移動方式,在每一個特定的棋局中,有存在很多對它造成威脅的勢力和它可以威脅到的棋子。……

使用面向對象的方式,會使得很多很復雜的問題有一個比較簡單的解決方法。但是實際上,問題的復雜程度不會因為你的思考方式的改變而改變,復雜程度本身是不變的。因此,面向對象並不能改變軟體本身的復雜性。

閱讀全文

與如何把編程語言比喻成某種工具相關的資料

熱點內容
快播tv 瀏覽:786
免費恐怖鬼片 瀏覽:695
鬼片恐怖片大全免費觀看 瀏覽:762
適合在網上看的視頻 瀏覽:556
都市修真林峰 瀏覽:271
鴨子相關影視 瀏覽:889
文件名一行顯示 瀏覽:312
javapdf轉換excel 瀏覽:633
穿越恐怖電影世界玩各種女主 瀏覽:507
再外國男男電影 瀏覽:457
粵語網站 瀏覽:508
養生搞笑程序員 瀏覽:756
dnf升級無盡還是換荒古 瀏覽:255
pdf單片機庫文件 瀏覽:341
蛇片帶點顏色的電影 瀏覽:482
中越戰電影大全百度雲 瀏覽:227
倆人鑽大象肚子里是什麼電影 瀏覽:583
搶佔大數據發展制高點 瀏覽:683
零售業大數據分析對象 瀏覽:449
攻是軍人受是農村人 瀏覽:734

友情鏈接