Ⅰ 編程是幹嘛的
編程字面上的意思就是編寫程序了,像你使用的APP,電腦手機系統,都是以計算機語言進行編寫的,所以說編程就是通過計算機語言或代碼,來完成軟體或程序的編寫。
Ⅱ 請問什麼叫硬編碼,它和普通編碼有什麼區別
硬編碼是將數據直接嵌入到程序或其他可執行對象的源代碼中的軟體開發實踐,與從外部獲取數據或在運行時生成數據不同。
硬編碼數據通常只能通過編輯源代碼和重新編譯可執行文件來修改,盡管可以使用調試器或十六進制編輯器在內存或磁碟上進行更改。
硬編碼的數據通常表示不變的信息,例如物理常量,版本號和靜態文本元素。 另一方面,軟編碼數據對用戶輸入,HTTP伺服器響應或配置文件等任意信息進行編碼,並在運行時確定。
它和普通編碼的區別是:
1、編碼方式不同:
普通編碼:使用CPU進行編碼。
硬編碼:使用非CPU進行編碼,如顯卡GPU、專用的DSP、FPGA、ASIC晶元等。
2、使用方式不同:
普通編碼:實現直接、簡單,參數調整方便,升級易,但CPU負載重,性能較硬編碼低,低碼率下質量通常比硬編碼要好一點
硬編碼:性能高,低碼率下通常質量低於軟編碼器,但部分產品在GPU硬體平台移植了優秀的軟編碼演算法(如X264)的,質量基本等同於軟編碼
3、復雜程度不同:
普通編碼比硬編碼要復雜一些,對以後的考慮要周到一些。普通編碼是一種設計,而硬編碼不過是一種具體的實現。軟體開發不只是需要一個軟體的實現,更需要軟體能夠很好的修改,方便得擴展,所以需要一些設計技巧在裡面。
(2)硬編程是什麼擴展閱讀:
在許多情況下,單個硬編碼值(例如數組大小)可能會在程序的源代碼中出現多次。這將是一個神奇的數字。如果值的某些外觀被修改,這可能通常會導致程序錯誤,但不是全部。這樣的錯誤很難找到,並且可能會長時間保留在程序中。
如果相同的硬編碼值用於多於一個參數值,例如,可能會出現類似的問題。一個由6個元素組成的數組,最小輸入字元串長度為6。
程序員可能會錯誤地更改值的所有實例(通常使用編輯器的搜索和替換工具),而無需檢查代碼以查看每個實例的使用方式。通過定義將名稱與值相關聯的常量並在代碼中使用每個外觀的常量名稱,可以避免這兩種情況。
Ⅲ 編程是什麼
編程 是個動詞,編程==寫代碼,寫代碼為了什麼? 為了讓計算機干你想要乾的事情,比如,馬化騰想跟別人聊天,於是寫了個聊天軟體,這個軟體就是一堆代碼的集合,這些代碼是什麼?這些代碼是計算機能理解的語言。
那計算能理解的語言是什麼呢? 之前,我們已經了解到,它只能理解2進制,0101010…,你總不能人肉輸一堆二進制給計算機(雖然最原始的計算機就是這么乾的)讓它工作吧,這樣開發速度太慢了。所以最好的辦法就是人輸入簡單的指令,計算機能把指令轉成二進制進行執行,舉例如下:
假如 程序員想讓計算機 播放一首 歌曲 , 只需要輸入指令 ,
open "老男孩.mp3"
play
計算機的CPU接收到這樣的指令後,會把它轉成一堆 只有cpu可以理解的指令,然後再將指令變成各種對應的如下類似二進制
[ op | rs | rt | address/immediate]
353868decimal
binary
最終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, 需要寫十多行,也是醉了。
; 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;調用內核功能
高級語言
高級語言是大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,像最簡單的編程語言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++和匯編以及hdl語言編寫,需要對數字邏輯,數字電路,模擬電路等電子學方面有一定的基礎,而軟體編程主要是在操作系統的基礎上編寫應用程序,用高級語言編寫,不需要對底層特別的了解,主要面向的是用戶的需求。
Ⅳ 編程是學些什麼東西
列出一些主要基礎課程,供參考。
計算機硬體;計算機網路;操作系統;計算機組成原理;計算機體系結構;資料庫原理;軟體工 程;離散數學;演算法設計與分析;數據結構;編譯原理。
編程語言可以未來職業需要選擇。
例如底層開發:匯編語言;C;C++。
應用開發:tml、xml、javascript、jsp(或 asp,php)等。
普通應用:C++;VB;java 等。
Ⅵ 編程是什麼
這個問題我來認真地回答一下~
很多人覺得編程是門高深莫測的學問, 擔心自己學不來. 實際上, 編程雖然不是隨便能學會的技能, 但是也沒有那麼難. 因為, 普通人已經具備了很多編程需要的基礎. 為什麼這么說?
1. 編程也是一門語言
和我們日常使用的中文、英語一樣, 編程語言也是一門用於溝通的語言.
只不過"編程語言"是和計算機溝通的語言.
而"程序", 就是使用計算機能夠理解的語言書寫的一連串命令.
而"編程"就是我們為了完成某項任務, 將解決問題的步驟, 用計算機能夠理解的語言寫成指令, 這就是"編程". 而後, 計算機會根據這些指令一步步執行, 最後完成任務.
所以, 我們可以看到, "編程"涉及到 3 個組成部分:
我們, 負責思考解決問題的步驟
我們, 負責使用計算機能夠理解的語言, 來描述解決步驟
計算機, 負責執行這些步驟
我們可以把"程序"想像成"菜譜". 下面, 我們以"煎雞蛋"為例: 假設我們不會炒菜, 然後獲得了一份煎雞蛋的菜譜, 而後, 我們就可以照著這個菜譜一步步去操作, 最後做出一份香噴噴的煎蛋.
在這里, "菜譜"就是"程序", 有人製作了這個"程序", 我們呢, 只需要按照這個"程序"執行, 最終獲得程序運行的結果 -- 一份香噴噴的煎蛋.
不過稍等一下, 可能有人會問: 盡管有菜譜, 我們還是可能把煎蛋搞砸啊:
可能我們沒有按照菜譜煎蛋, 導致失敗;
可能菜譜描述的煎蛋方法有問題;
可能煎蛋方法沒問題, 但是描述有歧義;
2. 如果讓計算機煎雞蛋
假設由我們來編寫菜譜, 讓計算機來煎蛋. 是否也會面對上面的 3 個問題?
對於第 1 個問題
計算機不存在這個問題. 因為計算機沒有思想沒有情緒, 它只會不折不扣地執行指令.
對於第 2 個問題
這個問題涉及到"解決問題的能力".
我們不要把"解決問題的能力"想像得太過高深, 其實我們成人每一天都在解決問題. 比如, 考慮如何完成工作, 考慮如何讓孩子上好學校... 這些都是在解決問題. 所以說大家對於這部分有充足的練習, 能力是及格的. 我們的瓶頸在於第 3 個問題.
對於第 3 個問題
這是我們現階段的瓶頸 -- 盡管我們有解決問題的辦法, 但是還不知道如何按照計算機能夠理解的語言去描述步驟.
如何解決第 3 個問題
現在, 我們已經成功把"編程的難點"縮小到"如何准確描述步驟"這個問題上.
那麼, 如何准確描述步驟呢:
把解決問題的"步驟"抽象成"流程"
按照"計算機語言的語法"去描述這個"流程"
學習"計算機語言的語法"是今後的學習內容, 所以我們暫時跳過, 先看看如何把步驟抽象成流程.
3. 把"步驟"抽象成"流程"
我們生活工作中的大部分任務, 都可以抽象成"流程圖".
而所有的"流程圖"都可以使用 3 個基本結構("順序"、"判斷選擇"、"循環")描述清楚, 區別只是嵌套組合的復雜程度.
上面我們分析了"編程"的 3 個組成部分, 這些分析可以幫助我們回答很多問題:
Q: 我是否適合學習編程?
A:如果你是個普通人, 心智是正常的, 思路是清晰的, 那麼學習編程就沒有問題. 我們需要額外學習的只是和計算機溝通的語言, 然後把你的思考轉換成用這個語言來描述就可以了.
Q: 我的孩子是否適合學習編程?
A:那麼他現在是否有"順序、判斷、循環"的邏輯概念? 他是否能解決一些小的問題, 比如走迷宮, 比如按照圖紙搭建樂高.
Q: 沒有基礎的孩子, 如何為學習編程做好准備?
A:可以先練習邏輯思考問題能力, 掌握"順序、判斷、循環"的基本概念, 有了這兩項就具備學習編程的前提.
Q: 編程有什麼好處?
A:最直接的, 鍛煉解決問題和邏輯思考的能力, 鍛煉藉助計算機幫助自己解決問題的能力.
Q: 編程需要學習什麼語言?
A:語言並不是關鍵, 因為所有的編程語言都是可以讓計算機理解的,就看你對哪個感興趣了,如果是想提升數據分析方面的能力,可以學時下熱門的Python,對辦公自動化有很大幫助,如果想把計算機基礎打扎實,可以學習C語言
Q: 編程在哪學習?
A: 可以在課呱呱學習,下載登錄了就能學習~Java 、Python、web前端、UI設計、計算機基礎、C語言、計算機考證等等都有,課程非常垂直和精良,良心學習工具,你值得擁有~