做者:Ava Franklin翻譯:瘋狂的技術宅吧前端
原文:https://www.goodcore.co.uk/bl...程序員
未經容許嚴禁轉載面試
每一個工做領域都有它們的術語表——特定的詞與平常生活中的含義大相徑庭。對於不斷髮展的軟件業的專業詞彙尤爲如此。在軟件開發領域,「engagement」與婚禮無關,「cookies」不能吃,「classes」不是你必須參加的事情,甚至「bug」也因爲不一樣的緣由而使人討厭。另外一個例子是關於編碼與編程(coding vs programming)的爭論——這是軟件開發領域中最經常使用的兩個術語。算法
對於和這個行業無關的人,編碼與編程之爭根本就不存在,並且這兩個術語之間的區別並不重要。這些術語彷佛能夠互換。可是在本文中,咱們將爲你提供區分這兩個術語的全部信息。接下來讓咱們進一步探討這些術語,深刻回答兩個主要問題 —— 什麼是編碼?什麼是編程?從而找出專業人士爲何使用它們的緣由,以及何時使用。數據庫
衆所周知,計算機處理器只能理解 1 和 0,而咱們的天然語言與這種二進制語言徹底不一樣。因此咱們必須把要執行的命令翻譯成處理器的語言。但編碼是什麼,最重要的是,編碼人員(coders)作什麼?編碼就是將天然語言翻譯成機器命令,編碼人員使用中間語言來指導機器須要進行的逐步操做。那麼編碼與編程是一回事嗎?編程
這取決於編程語言,有效的編碼須要一些技能。你必須瞭解所選語言背後的語法、主要關鍵字和基本邏輯(編碼與編程問題的重點)。segmentfault
儘管編碼是軟件開發工做的重要組成部分,但它並非最重要的那部分。要建立一個產品,你還須要執行其餘的步驟。它們包括計劃、設計、測試、部署、甚至維護。總的來講,這整個過程能夠稱爲編程。服務器
因此,「編碼和編程是一回事嗎?」微信
這個問題至關於「一棵樹和一片森林是一回事嗎?」。前者是後者的重要組成部分,但還有不少其餘的內容。編程須要比編碼更多的知識、經驗和各類技能。接下來咱們更詳細地回答——編碼和編程之間到底有什麼區別?cookie
最後,編碼和編程是一回事嗎?
儘管前者能夠看做是後者的一部分,可是編碼和編程也標誌着項目方法的根本差別。根據範圍和複雜性,前者可能比另外一個更有利。
在大多數狀況下,當專業的軟件開發者必須在編碼仍是編程之間進行選擇時,編程是必經之路。在重要的項目中,在編寫第一行代碼以前,你須要肯定程序的輪廓,並肯定須要多少資源。代碼完成後,你須要審查、優化並完全測試它。
那麼,何時編碼比編程更重要?
首先,編碼是解決簡單問題的一種方法,例如與單任務程序和不須要大量計劃和資源的單頁網站有關。 「爲了什麼編碼?」這個問題的另外一個答案是,它是初學者的起點。要學習如何構建一個複雜的程序,必須知道如何處理它的每一個部分,而這正是瞭解編碼和編程之間的區別。
編碼(Coding) | 編程Programming |
---|---|
編碼是指經過中間編碼語言將天然語言轉換爲機器命令 | 編程意味着開發功能全面的軟件解決方案的過程 |
對於編碼,文本編輯器就足夠了。 | 編程須要分析工具、建模程序、代碼生成器和測試框架 |
編碼人員須要相關編程語言語法和關鍵字的基礎知識。 | 程序員應該是一個技能熟練的人,在建立算法、建模問題、數據處理和項目管理方面具備豐富的經驗。 |
它遵循反覆試驗的方法,無需事先準備 | 編程遵循一種有條不紊的方法,須要注意細節。 |
編碼能夠獲得簡單的解決方案或一小部分項目 | 編程可生成完整的即用型應用程序。 |
上表顯示了編碼和編程之間的主要區別,如今讓咱們詳細介紹一下它們。
如前所述,編碼與編程的區別在於兩個過程的定義。編程是建立遵循特定標準並執行特定任務的程序的通常過程。另外一方面,編碼是編程的一部分,它嚴格地將咱們理解的語言轉換爲機器的二進制命令。
就軟件工具而言,編碼是否與編程相同?
因爲編碼是一種簡單的翻譯操做,所以你不須要作的太多。在大多數狀況下,像 WordPad 這樣的簡單文本編輯器就足夠了(儘管有內置自動填充和調試工具的 IDE 一般會有所幫助)。
另外一方面,除了須要額外的編碼工具外,程序員還須要查看文檔並進行分析。你能夠在其清單中找到各類代碼分析工具、代碼生成器、數據庫和測試框架。
咱們在編碼與編程討論中的另外一個差別在於執行這些任務的人所須要具有的技能。編碼須要編程語言的基本知識。若是你要編程則須要瞭解更多。就像如何建立算法和數學模型,如何處理數據,瞭解數學,在某些狀況下包括事件管理經驗。
就基本的作事方式而言,編碼和編程之間有什麼區別?編程須要系統的、完全的方法。做爲程序員,一般須要幾周到幾個月才能達到目標。編寫代碼則無需任何準備,能夠在幾個小時內編寫一個簡單的解決方案。它一般經過試錯法進行。
在編碼與編程的討論中常常出現的另外一個問題是:「對同一事物進行編程和編碼會產生不一樣的結果嗎?」不一樣的方法會致使不一樣的結果。如前面已經提到的,方法的選擇應該基於最終產品的指望複雜度。所以你不該該指望僅經過編碼就能快速得到功能複雜、有吸引人的 UI 和 UX 的應用程序。
正如咱們前面在關於編碼與編程的討論中所提到的,編碼只是編程的一部分。可是學習它仍然須要一些時間和技能來。編程語言與天然語言有很大的不一樣,它們的語法有時會很是混亂。最難的語言是接近實際處理器指令的低級語言。
這個問題沒有簡單而明確的答案。在理解了「什麼是編碼」以後,學習一種新的編程語言所需的時間將取決於不少因素,例如:
除了「編碼和編程之間的區別是什麼」以外,這也不是一個容易回答的問題,由於出於不一樣的目的建立了不一樣的語言。如下是最佳編碼語言的主要競爭者:
根據 StackOverflow 調查,專業領域最受歡迎的語言是 JavaScript(但緊隨其後的是 HTML/CSS)。對於前端編碼來講它是不可替代的,而且在其餘領域也常常被使用。可是因爲最受歡迎,對於初學者來講吸引力不大,由於競爭太激烈了。
總之,編碼與編程是一回事嗎?
公衆可能不會被告知或不關心編碼和編程之間的差別。可是這並不意味這種區別的重要性。這些知識對於幫助你在軟件開發領域尋找工做或跟你的同事進行交流相當重要。
若是你只是在行業中起步,那麼瞭解什麼是編碼和編程是有很是價值的知識。但願本文將幫助你推進職業發展並提升技能。