編程是想
❶ 編程是什麼
編程 是個動詞,編程==寫代碼,寫代碼為了什麼? 為了讓計算機干你想要乾的事情,比如,馬化騰想跟別人聊天,於是寫了個聊天軟體,這個軟體就是一堆代碼的集合,這些代碼是什麼?這些代碼是計算機能理解的語言。
那計算能理解的語言是什麼呢? 之前,我們已經了解到,它只能理解2進制,0101010…,你總不能人肉輸一堆二進制給計算機(雖然最原始的計算機就是這么乾的)讓它工作吧,這樣開發速度太慢了。所以最好的辦法就是人輸入簡單的指令,計算機能把指令轉成二進制進行執行,舉例如下:
假如 程序員想讓計算機 播放一首 歌曲 , 只需要輸入指令 ,
open "老男孩.mp3"
play
[ op | rs | rt | address/immediate]
353868decimal
binary
; hello.asm
section .data ;數據段聲明
msg db "Hello, world!",0xA;要輸出的字元串
len equ $ - msg ;字串長度
section .text ;代碼段聲明
global _start ;指定入口函數
_start:;在屏幕上顯示一個字元串
mov edx, len ;參數三:字元串長度
mov ecx, msg ;參數二:要顯示的字元串
mov ebx,1;參數一:文件描述符(stdout)
mov eax,4;系統調用號(sys_write)
int0x80;調用內核功能
;退出程序
mov ebx,0;參數一:退出代碼
mov eax,1;系統調用號(sys_exit)
int0x80;調用內核功能
計算機的CPU接收到這樣的指令後,會把它轉成一堆 只有cpu可以理解的指令,然後再將指令變成各種對應的如下類似二進制
最終cpu 去調用你的硬碟上這首歌,通過音箱播放。
上面cpu那段指令太難理解了,如果讓你天天寫這樣的代碼,大家非得自殺不可。還好,偉大的計算機先驅們,開發了各種編程語言,讓我們只需要通過寫一些簡單的規則,就能操作計算機工作啦。
有哪些編程語言?
編程語言總體分以為機器語言、匯編語言、高級語言,如下
機器語言
由於計算機內部只能接受二進制代碼,因此,用二進制代碼0和1描述的指令稱為機器指令,全部機器指令的集合構成計算機的機器語言,用機器語言編程的程序稱為目標程序。只有目標程序才能被計算機直接識別和執行。但是機器語言編寫的程序無明顯特徵,難以記憶,不便閱讀和書寫,且依賴於具體機種,局限性很大,機器語言屬於低級語言。
用機器語言編寫程序,編程人員要首先熟記所用計算機的全部指令代碼和代碼的涵義。手編程序時,程序員得自己處理每條指令和每一數據的存儲分配和輸入輸出,還得記住編程過程中每步所使用的工作單元處在何種狀態。這是一件十分繁瑣的工作。編寫程序花費的時間往往是實際運行時間的幾十倍或幾百倍。而且,編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯。除了計算機生產廠家的專業人員外,絕大多數的程序員已經不再去學習機器語言了。
機器語言是微處理器理解和使用的,用於控制它的操作二進制代碼。
盡管機器語言好像是很復雜的,然而它是有規律的。
存在著多至100000種機器語言的指令。這意味著不能把這些種類全部列出來。
以下是一些示例:
指令部份的示例
0000 代表 載入(LOAD)
0001 代表 存儲(STORE)
…
暫存器部份的示例
0000 代表暫存器 A
0001 代表暫存器 B
…
存儲器部份的示例
000000000000 代表地址為 0 的存儲器
000000000001 代表地址為 1 的存儲器
000000010000 代表地址為 16 的存儲器
100000000000 代表地址為 2^11 的存儲器
集成示例
0000,0000,000000010000 代表 LOAD A, 16
0000,0001,000000000001 代表 LOAD B, 1
0001,0001,000000010000 代表 STORE B, 16
0001,0001,000000000001 代表 STORE B, 1[1]
匯編語言
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作。例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能夠實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
匯編的hello world,列印一句hello world, 需要寫十多行,也是醉了。
高級語言
高級語言是大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,像最簡單的編程語言PASCAL語言也屬於高級語言。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:
編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行(編譯後生成的可執行文件,是cpu可以理解的2進制的機器碼組成的),使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .obj,也就是OBJ文件)才能執行,只有目標文件而沒有源代碼,修改很不方便。
編譯後程序運行時不需要重新翻譯,直接使用編譯的結果就行了。程序執行效率高,依賴編譯器,跨平台性差些。如C、C++、Delphi等
解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器(想運行,必須先裝上解釋器,就像跟老外說話,必須有翻譯在場),但這種方式比較靈活,可以動態地調整、修改應用程序。如Python、Java、PHP、Ruby等語言。
總結
機器語言
優點是最底層,速度最快,缺點是最復雜,開發效率最低
匯編語言
優點是比較底層,速度最快,缺點是復雜,開發效率最低
高級語言
編譯型語言執行速度快,不依賴語言環境運行,跨平台差
解釋型跨平台好,一份代碼,到處使用,缺點是執行速度慢,依賴解釋器運行
主流編程語言介紹(10分鍾)
世界上的編程語言有600多種,但真正大家主流在使用的最多二三十種,不同的語言有自己的特點和擅長領域,隨著計算機的不斷發展,新語言在不斷誕生,也同時有很多老舊的語言慢慢無人用了。有個權威的語言排名網站,可以看到主流的編程語言是哪些
TIOBE發布編程語言排行榜已經快6年的時光了,在這六年中我們見證了不少語言的起起落落。雖然國內有很多大牛說,關注這語言的排名沒有多少意義。但仍可以看出那些語言日漸興盛,哪些日漸沒落,我們從Objective-C的上升過程中,還是能看到移動設備端,特別是iOS應用開發方面的黃金潛力。
下面介紹下幾個主流的編程語言:
c語言:
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。
C++:
C++是C語言的繼承的擴展,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。C++擅長面向對象程序設計的同時,還可以進行基於過程的程序設計,因而C++就適應的問題規模而論,大小由之。
C++不僅擁有計算機高效運行的實用性特徵,同時還致力於提高大規模程序的編程質量與程序設計語言的問題描述能力。
JAVA:
Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平台(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於個人PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。在全球雲計算和移動互聯網的產業環境下,Java更具備了顯著優勢和廣闊前景。
PHP:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域
Ruby:
Ruby 是開源的,在Web 上免費提供,但需要一個許可證。[4]
Ruby 是一種通用的、解釋的編程語言。
Ruby 是一種真正的面向對象編程語言。
Ruby 是一種類似於 Python 和 Perl 的伺服器端腳本語言。
Ruby 可以用來編寫通用網關介面(CGI)腳本。
Ruby 可以被嵌入到超文本標記語言(HTML)。
Ruby 語法簡單,這使得新的開發人員能夠快速輕松地學習 Ruby
GO:
Go 是一個開源的編程語言,它能讓構造簡單、可靠且高效的軟體變得容易。
Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發布了Go 1穩定版本。現在Go的開發已經是完全開放的,並且擁有一個活躍的社區。
由其擅長並發編程
Python:
Python是一門優秀的綜合語言, Python的宗旨是簡明、優雅、強大,在人工智慧、雲計算、金融分析、大數據開發、WEB開發、自動化運維、測試等方向應用廣泛,已是全球第4大最流行的語言。
❷ 什麼是編程思想,c語言的編程思想是什麼
所有的編程思想都是出自你的.就是你對一個軟體功能利用你學的編程語言開發出來.怎麼用你學的編程語言實現該功能,就用到你的編程思想了.
❸ 編程是幹嘛的
編程是編定程序的中文簡稱,就是讓計算機代為解決某個問題,對某個計算體系規定一定的運算方式,使計算體系按照該計算方式運行,並最終得到相應結果的過程。
說得通俗點,編程就是用人看得懂的語言寫出能夠操控機器來做一些事情的工作,比如說用遙控器控制電視機,這就需要編程,用滑鼠在電腦里移動,電腦里的游戲,電腦里的軟體,汽車飛機里的電子儀表,計算器,等等,這些都需要通過編程來實現,只不過有些是偏向硬體的,比如遙控器,有些是偏想軟體的,比如游戲,就有了所謂的硬體開發,和軟體開發,都屬於編程這個大概念。下面簡單介紹一下編程的幾種語言。
C語言支持結構化編程,也就是說C的程序被編寫成一些分離的函數呼叫(調用)的集合,這些呼叫是自上而下運行,而不像一個單獨的集成塊的代碼使用GOTO 語句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的「空心粉式代碼」代碼要簡單得多。事實上,C仍然具有GOTO語句,不過它的功能被限制了,僅當結構化方案非常復雜時才建議使用。
匯編是第一個計算機語言。匯編語言實際上是你計算機處理器實際運行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如寄存器和堆棧。
❹ 編程是學些什麼東西
編程是學的東西:
1、基本的編程語言
首先,編程所需的基礎也就是語言,選擇一種自己感興趣或者擅長的語言,這里給大家羅列一個語言的分類:Python——一個非常適合初學者的語言,而且當你掌握它的時候它會變得更加強大。被用來開發了許多Web應用、甚至一些游戲。
Java——被無數個項目所使用,從游戲到Web應用再到ATM軟體。HTML——對於任何Web開發者必不可少的起航點。在從事其他一系列Web開發之前掌握好HTML非常重要。C——最古老的語言之一,它已經是非常強大的工具,也是一些更現代的語言的祖先,比如C++,C#和Objective-C。
2、相關編程工具的使用和環境搭建
能只編寫代碼,還要檢驗代碼的結果運行是否正確,也就是某些可以運行結果的軟體我們要有,不過許多的編程語言都要求有被程序員設計來講代碼轉換成機器能理解的語言的編譯器。其他一些語言,比如Python,使用可以立即轉換成程序而不需要編譯。
一些語言有自己的往往包含著代碼編輯器、調試器和/或者翻譯以及調試的IDEs(集成開發環境)。這些程序員在同一個地方去執行任何必要的功能。IDEs可能還包含著包含對象層次結構和目錄的可視化界面。
3、查找bug
要學會習慣編程序的過程中不斷修復錯誤和漏洞,當你在編程時,你總會碰到bug。它們存在程序中,並且可能隨時隨地的出現在程序中的任何一個地方。
漏洞可能會破壞程序,或者只是讓程序不能編譯/運行。捕捉和修復這些錯誤在軟體開發周期中這是一個主要的過程,要早早地習慣於這么做。
4、添加註釋
給自己的代碼加註釋,這是新手學習代碼時最常用的方法,給自己的代碼加註釋,可以讓編碼者搞清楚每段代碼所代表的含義,這樣,即使在大程序中,我們也能熟記各個代碼的含義。
5、學習數學和邏輯
大多編程都涉及了基本的算術運算,但可能你想要學習更先進的概念,寫出復雜的模擬或者演算法級別程序,數學和邏輯將是非常重要的。對於大多數日常編程而言,你並不需要太多先進的數學知識。但學習邏輯,尤其是計算機邏輯,將能幫助你理解處理更先進程序的復雜問題的最好方式。
❺ 什麼叫編程思想
編程思維,是一種高效率解決問題的方式,是「理解問題——找出路徑」的高效思維過程,它由「分解—抽象—模式識別—演算法」四個步驟組成。
1、分解,簡單來說,就是「把復雜的大問題,拆解成更可執行、更好理解的小步驟」,它能鍛煉我們拆解復雜問題的能力。
編程的過程,就是把復雜和龐大的問題「自上而下,逐步拆解,直至理順」。這種思維,在學習和生活叫「分解思想」,在工作中又叫「項目管理」。
具備這種思維的人,做事情是有條不紊並且有耐心的。而分解能力好的孩子,即便面對一道有挑戰的數學題,也能列出清晰的解題步驟,清楚地知道自己每一步的進展,而不是遇到難題時腦子里一團亂麻。
2、編程中最關鍵的就是「抽象思維」能力,它能鍛煉我們聚焦重點,忽略無用信息,並抽取關鍵信息的能力。
編程的世界裡,就包含「子系統、模塊、包、類、方法和語句」等不同層級的抽象,學編程能鍛煉孩子們不斷抽象、聚焦關鍵信息的能力。
抽象思維能力越高的孩子,在大量信息中聚焦關鍵信息的能力會越強,專注力也會更高,自然學習也會更輕松。
3、模式識別,就是「如何找出相似的模式,並高效率解決細分問題」,它能極大鍛煉我們規律整合的能力。善於發現和總結規律的人,常常做事麻利、效率也特別高。
4、演算法,就是根據之前一系列對於問題的理解,設計一步一步的解決路徑,並解決整個問題。
在具體解決問題的過程中,最關鍵的能力有兩個 ——「邏輯思維」和「調試糾錯」。
希望對您有所幫助!
❻ 編程到底是什麼
編程簡單講就是編寫程序代碼,由數字、字母、符號等組合在一起,這些原材料都是免費的,無價值的,但是有規律的編寫出的程序代碼是有價值的,甚至價值不菲,就是這么的神奇
把無價值的一行行數字字母組合,編寫出有價值。的代碼,這些代碼創造的價值可能遠超你的想像,達到上千億甚至上萬億,比如蘋果的IOS電腦系統手機系統。
編程思想就是用計算機來解決人們實際問題的思維方式,即編程思想。
擴展鏈接:
第一、有多少種編程語言?
首先編程語言它不是語言學,它不是真正的語言。它是用以及嚴格的描述方法去解決問題,得出方案。
C - 用於命令式編程
Haskell - 用於函數式編程
Smalltalk - 面向對象編程
Lisp - 元編程(宏命令,code-as-data)
Brainf-u-c-k - 圖靈機 (hexie)
Prolog - 聲明式編程 (古董)
Forth語言 - 堆棧驅動的編程(老古董)
APL - 數組操作代數 (老古董)
大部分人採用上面的的體系的類似語言而進行編程,但他們也有可能在其中混合使用。
而還有另外的四種語言,這些極少人使用,可能你甚至還沒有聽說過!
第二部分,現在最好學習哪些編程語言?它的內容又是什麼?
前端 JS(JavaScript)
當您擴展您的網站時,JavaScript非常實用,因為這種語言可以極大地幫助您為您的網站生成通信。您可以利用JavaScript中的各種樣式框架來構建出色的用戶界面。當你進入網頁開發時,知道關於製作互動式網頁的JavaScript是非常重要的。JavaScript被應用於在網頁上包含動畫,在網頁上載入新鮮的圖像,腳本或對象,以及創建響應速度極快的用戶界面。
後端JVAA和Python
Java是迄今為止世界上最流行的編程語言,也是後端網頁開發中最受歡迎的語言,並且在Android OS上占據了比較高的位置。此外,它與第二大的按需後端語言C#非常相似。Java可用於基於移動智能端的應用程序,企業級用途,創建桌面應用程序以及在平板電腦和智能手機上建立Android應用程序。它語句冗長,但強而有力。
Python也是非常流行的後端語言。當然,它不像Java那樣受歡迎,但仍然很受歡迎,因此市場上有工作。如果你想通過機器學習來擴展你的技能,那麼Python是一個很好的選擇。另外,在我看來,其簡潔的偽代碼語法使編碼變得非常有趣。
最後,其實無論哪種語言,當你開始學習編程時,你就會知道如何變數聲明,如何理解(if, while,…)等字句,數學和邏輯操作數,函數調用,數據結構的使用等等。
❼ 什麼是編程呢,什麼是開發呢
你好,編程就是寫代碼,開發就是想怎麼編程。開發在前,編程在後,我們開發任何一款軟體都需要通過調研、了解用戶需求,再通過程序實現出來達到用戶的需求。下面是部分知識點,希望能幫到你。
1.確保堆棧上至少有 n 個額外空位。如果不能把堆棧擴展到相應的尺寸,函數返回假。失敗的原因包括將把棧擴展到比固定最大尺寸還大 (至少是幾千個元素)或分配內存失敗。 這個函數永遠不會縮小堆棧;
void lua_close (lu a_State *L);
2.銷毀指定 Lua 狀態機中的所有對象 (如果有垃圾收集相關的元方法的話,會調用它們),並且釋放狀態機中使用的所有動態內存。 在一些平台上,你可以不必調用這個函數, 因為當宿主程序結束的時候,所有的資源就自然被釋放掉了。 另一方面,長期運行的程序,比如一個後台程序或是一個網站伺服器, 會創建出多個 Lua 狀態機。那麼就應該在不需要時趕緊關閉它們。
lu a_compare
比較兩個 Lua 值。 當索引 index1 處的值通過 op 和索引 index2 處的值做比較後條件和叢滿足,函數返回 1 。 這個函數遵循 Lua 對應的操作規則(即有可能觸發元方法)。 反之,函數返回 0。 當任何一個索引無效時,函數也會返回 0 。
3.連接棧頂的 n 個值, 然後將這些值出棧,並把結果放在棧頂。如果 n 為 1 ,結果就是那個值放在棧上(即,函數什麼都不做); 如果 n 為 0 ,結果是一個空串。 連接依照 Lua 中通常語義完成()。
lua_
從索引 fromidx 處復制一個值到一個有效索引 toidx 處,覆蓋那裡的原有值。 不會影響其它位置的值。
l ua_createtable
4.創建一張新的空表壓棧。參數 narr 建議了這張表作為序列使用時會指棚嫌有多少個元素;參數 nrec 建議了這張表可能擁有多少序列之外的元素。 Lua 會使用這些建議來預分配這張新表。 如果你知道這張表用途的更多信息,預分配可以提高性能。 否則,你可以使用函數
lua_mp
把函數導出成二進制代碼塊 。 函數接收棧頂的 Lu a 函數做參數, 然後生成它的二進制代碼塊。 若被導出的東西被再次載入, 載入的結果就相當於原來的函數。 當它在產生代碼塊的時候, lua_mp 通過調用函數 writer (r ) 來寫入數據,後面的 data 參數會被傳入 writer 。
5.如果唯手 strip 為真, 二進制代碼塊將不包含該函數的調試信息。
最後一次由 writer 的返回值將作為這個函數的返回值返回; 0 表示沒有錯誤。
該函數不會把 Lua 函數彈出堆棧。
希望能幫到你,謝謝!