編程學底層
A. 程序語言底層是怎麼實現的
你好, 對於你的問題:
1、C++和java都是面向對象編程語言(OOP),介面是OOP的一個特色,而函數是任何編程語言無論是面向過程還是面向對象都有的。
2、關於語句底層如何實現,你應該看過編程教材的第一章,一般在書籍開頭都會介紹程序時有何而來,在你編寫完程序代碼後,都會經過編譯、鏈接這個過程,這些就是將你的代碼進行轉換並最終生成可執行程序的過程,這些由IDE(開發工具)和編譯器(如Java的JDK)來共同完成,內部的細節是自動完成的。
3、要了解底層代碼實現,建議你去學習「編譯原理」這門知識
4、要學習控制CPU和內存存儲,建議去學習「計算機操作系統」這門知識(不是如何使用操作系統,是如何設計操作系統)
PS:除非你是非常喜歡或者就想做底層開發(如操作系統開發),一般應用程序開發只要學好相應的語言和類庫即可!
有其他問題歡迎咨詢!
B. 怎麼系統的自學網路編程(底層協議)
用java來實現網路編程是很容易的,可以作為網路編程的入門。使用C++和winsock相對復雜一些。
總之看實際需要了。
你好初學網路編程者可以從以下幾個步驟開展:
1)下載一個可以互動的學習工具,通過這個與這個工具互動,我們可以及時的學到每個api的結果如果。
對於有c/c++或java基礎的朋友通過一兩個禮拜的時間就可以上手了,另外個人建議初學者可以學習dive into python。
2)掌握網路編程中會用到的幾個基本概念和內涵,比如IP地址,port號,socket等
3)記住和消化網路編程C/S模型,把server和client端編程的常用模式理解和消化
4)花幾天時間學習socket api集,api集可以分為下面幾大類:創建 socket bind listen accept收發 read/recv/recvfrom write/send/sendto關閉 close shutdown參數 getsockopt/setsockopt地址 gethostbyaddr getaddrbyhost,...在學習這些api時候,可以先關注在函數功能,參數意義上
5)結合python互動平台,實踐socket api的用法,比如socket函數怎麼使用,bind怎麼使用等等。在互動過程中,我們可以變換參數,看看調用結果如何。比如,創建一個tcp socket的語法如下:socket(AF_INET,SOCK_STREAM)創建一個udp socket的語法如下:socket(AF_INET,SOCK_DGRAM)
6)學習socket server端編程實現簡單規約比如echo,time等,然後通過cmd中的telnet來測試。
7)學習I/O模型,比如阻塞、非阻塞和反應式(select,poll,WaitForMultipleObject)等
8)學習Richard Stevens的《Unix網路編程》,深入學習其中的api原理以及服務端設計原理,並通過代碼編寫。
9)下載高性能網路編程框架twisted,筆者強烈推薦,它將使你的網路編程效率提高10倍以上。
10)學習設計模式、操作系統知識比如線程、進程、同步等。
C. 請問編程中的 上層 和 底層 是什麼意思 比如有人說 "游戲用JAVA或c#做上層,用匯編或c/
上層(或者是表層)、中間層和底層沒有嚴格意義上的定義,在不同的項目中需要結合具體需求來具體分析。
一般來說,表層就是指展現給用戶看的部分;而底層就是系統的最核心的部分。一般我們認為,越接接硬體的編程就越底層。
比如,一個在線通訊軟體(QQ這種),表層就是窗口啊、菜單啊、按鈕啊這些玩意兒;中間層是業務邏輯部分,就是你點擊這些按鈕會產生相應的什麼事件,進行了什麼操作;底層就是Socket網路通信了。當然,我這里這三層是大致劃分的,實際開發中比這個要更具體詳細。
再比如,拿題主說的游戲舉例子,表層就是各種游戲的界面了;底層就是游戲引擎了。底層幹嘛?接收你的滑鼠鍵盤響應信號、操作顯卡在顯示器指定位置生成各種二維的三維的圖像、控制音效卡輸出音頻等等等等。
至於編程語言問題,這就牽扯到低級語言和高級語言的問題了。一般來講低級語言和高級語言區別在於:
高級語言:實現效率高,執行效率低,對硬體的可控性弱,目標代碼大,可維護性好,可移植性好。
低級語言:實現效率低,執行效率高,對硬體的可控性強,目標代碼小,可維護性差,可移植性差。
越低級的語言,形式上越接近機器指令(匯編語言就是與機器指令一一對應的)。而越高級的語言,一條語句對應的指令數越多,其中原因就是高級語言對底層操作進行了抽象和封裝,使編寫程序的過程更符合人類的思維習慣,並且極大了簡化了人力勞動。也就是說你用高級語言寫一句,會被轉換成許多底層操作,大部分的工作交給了負責轉換的機器(即編譯器),從而人力得到了解放。因為機器就是用來為人類提供便利的,所以說高級語言的出現是計算機發展的必然結果。(參考:http://blog.csdn.net/guoxiaoqian8028/article/details/9103151)這就產生了執行效率的問題。
所以說用 C/C++ 這類語言更適合寫游戲引擎。游戲嘛,必定是要求響應速度極高的,總不能按完鍵盤了等100毫秒才響應,生成個三維地圖電腦卡半天。但一般不會游戲的所有部分都用 C/C++ 來完成,為什麼?上面說了,可維護性差、可移植性差。這時候就需要用面向對象這種「高級語言」出馬了。
至於題主提到的「不同語言之間的互通」,建議題主理解一下「介面」(不是面向對象里的「介面類型」)的概念。
泛泛而談,希望對題主有所幫助。
D. 什麼是底層編程
用命令行開發,沒有IDE環境,沒有框架,所有的結構演算法都要自己來寫,並且對程序的效率和內存利用要求較高,比如在unix下開發驅動程序。
而非底層的簡單多了,比如打開C#,直接就拉出一個窗體來,這要是寫代碼要寫很多的。