大多數程式設計師、初學者都以為自己正在學習程式設計,其實不是,而是在走彎路。
電腦科學不是學習計算機,很震驚吧。相反,它是關於借助計算機來自動解決問題的一門學問。解決問題才是計算機科學,而不是寫程式碼。這就是許多電腦科學專業的學生,似乎不理解他們為什麼學習演算法和數學的原因。
如果你以前上過電腦科學的課,那麼你不會對此感到驚訝。因為你會注意到程式設計與程式語言幾乎沒有關係。思考一下,為什麼偽代碼在這些課程中如此常見。
但大多數程式設計師總是會落入陷阱。我們學了十幾年程式語言,才意識到自己真正需要學的是編程,而我本身就是受害者。
我花了十多年的時間學習各種程式語言。我學的程式語言越多,建立簡單的東西就越困難,我感覺找不到正確的工具。但問題是,當我不知道如何下手時,我忘記了應該去探索要做什麼,而不是尋找正確的工具。
程式語言的奇怪之處在於它們總是在變化。程式語言幾乎每天都在變化,跟進非常困難。而且大多數優秀的程式只用到了程式語言的一小部分。
優先學習程式語言的問題就像在學習木工之前學習如何使用木工鋸、錘子和各種切割機。木工需要注意:想法、可行性分析、測量、測試、使用者使用習慣,老木匠更關注這些。而不是錘子和釘子這些東西。
在對工作進行科學研究期間,他還將花時間檢查釘子、著色劑、木材等的品質。
「程式設計」 透過給予一條指令來使系統自動運作。我們每天都這樣做,我們教導我們的孩子、士兵、客戶。我們發出或收到指令,要求自由或獨立地按照規定的方式進行。你的父母不需要一直跟著你,並指導你生活中的每一步,他們已經在之前生活中的許多方面對你給予過指導(指令)。
大多數學校和教育網站都會教授程式語言的語法。他們還會添加一些設計模式(而你可能恰好忽略了設計模式是什麼)、一些數學計算、如何聲明變數以及如何使用它們,資料類型以及如何聲明和創建它們。
上面說的那些程式語言的知識不會教你程式設計。當你發現時,你會覺得學習程式設計實在浪費時間,大把的時間。
我們用程式設計來解決問題,而程式語言是幫助我們解決問題的工具。
它們就像工具箱,我們稱之為框架。它們可以讓你的想法更有條理。
如果你正在學習編程,但仍無法設計和編寫一個實際的應用程序,這意味著你要花更多的時間去學習編程而不是編程語言。
我們遇到過很多人,他們仍然不知道如何設計一個程式。
對程式設計師來說,一個程式是一個需要解決的問題。在涉及任何程式語言之前,需要先認真思考、理解問題。當你無論要解決什麼問題時,其實都可以使用任何一種程式語言來進行編碼(重要的是思考要解決的問題)。
讓我們以計算平方為例。計算一個數的平方,並對自身進行多次乘法計算。我們可以用多種語言來實現它,例如:
用C 語言
function square(int * x) { return x * x; }
用PHP##
function square ($x){ return $x * $x; }
學習推薦:
用JavaScript
function square(x){ return x * x }
學習推薦:
用Scheme(一種Lisp 方言)
(define (square x) (* x x))
如此,你就可以完全專注於問題的本身和解決的邏輯。透過這個過程,你將發現一個好的程式設計工具(語言)的核心部分,你就知道那些是重要的、你所需要的(如果你需要用錘子砸東西,就先學砸東西,釘釘子暫時用不到就先不學)。
這樣一來,你就會在不知不覺間就學會一門程式語言(完全掌握錘子的用法)
翻譯原文:Learning programming is different from learning a programming language: https://phpocean.com/blog/article/learning-programming-is-different-from-learning-a-programming-language/80
【相關文章】