首頁>技術>

我們都是程式設計師,也是學習者。令人驚訝的是,如此多的人以為自己在學習程式設計,卻已經步入歧途。

你可能正在學習程式語言,而不是程式設計本身

大家都知道計算機科學不是研究計算機,它反倒是利用計算機研究自動解決問題的。問題解決是計算機科學,不是程式設計。這就許多計算機科學專業的學生似乎不理解他們為什麼要學習演算法或數學的原因。

如果你以前上過計算機科學課,你就應該知道我在說什麼。因為你會注意到程式設計與程式語言幾乎沒有關係。問問自己為什麼虛擬碼在這些課程中如此常見。

但是,大多數自以為是的程式設計師總是落入陷阱。在意識到進行程式設計時到底什麼是應該要做的之前,我們學習了幾十年的程式語言。我自己也是受害者。

我花了十多年的時間一點一點地學習各種程式語言。我學的越多,就越難以簡單的方式解決問題。我以為是沒有找到合適的工具。但問題是,當我甚至還不知道這個工作要做什麼時,就去尋找合適的工具,而忘記了找出真正的工作是該做什麼。

程式語言的奇怪之處在於它們總是在不斷髮展。程式語言幾乎每天都在變化,跟進很難。而大多數優秀的程式只使用了程式語言的一小部分

首先,學習程式語言的問題就像在學習木工之前學習如何使用木工鋸,錘子和各種切割機器。木工需要注意:想法,可行性分析,測量,測試,客戶行為。資深木匠感興趣的事物不止於錘子和釘子。在他對這項工作的研究中,還需要時間來檢查釘子、著色劑、木材等的質量。

學習程式設計和學習程式語言的區別是什麼呢?

程式設計是透過一次下達指令來設定一個系統自動執行。我們每天都這樣做。我們教我們的孩子,命令我們計程車兵,服務我們的客戶。我們給予或收到指示,以自由/獨立的方式生活。父母不需要跟隨並指導你在生活中所做的每一個動作。他們可能已經在生活的許多方面為你程式設計了。

大多數學校和教學網站都會教授程式語言的語法。他們可以新增一些設計模式(當你忽略究竟是什麼設計時)、一些算術計算。教你如何宣告變數以及如何使用它們;教你如何宣告資料型別以及建立它們。

這並不能教你推理。但後來,您將會遇見推理方法。使用那些方法來學習,會讓你覺得是浪費生命或者花了很多時間來學習程式設計。

我們用程式設計來解決問題,程式語言是幫助我們達到目的工具。

它們就像工具箱,我們稱之為框架,幫助你組織你的思維。

如果你正在學習程式設計且仍然無法設計和編寫真實應用程式,那麼這就意味著你正在學習程式語言而不是程式設計。

我們經常會遇到想知道如何建立程式的學習者。對於程式設計師來說,程式是一個問題求解。在使用任何程式語言之前,他透過關鍵分析解決了問題。當你解決任何問題時,你可以用任何程式語言來編碼。我們來看看平方求解的案例。為了求解平方,我們將它與自己相乘。我們可以用各種語言實現它,例如:

C語言

 int square(int x){return x*x;}

PHP語言

function square ($x){    return $x * $x;}

Javascript語言

function square(x){    return x * x}

Scheme(a Lisp dialect)語言

(define (square x) (* x x))

您應該注意到實現中只有語法是不一樣的,解決方案是一樣的。這也是你幾乎可以使用任何程式語言的主要原因之一,在這種語言中你可以更輕鬆地構建任何型別的軟體。

程式設計可以讓你更容易理解一門語言

通常,問題出在人類語言,它充滿了侷限和錯誤。人類語言不能用來指令機器,因為它們不理解。

你學習程式設計時,是在學習一種新術語和工具,來幫助你以計算機或其他程式設計師可以理解和同意的方式編寫邏輯。

通常,你將從簡單且類似人類語言的符號--虛擬碼開始。它是從人類語言到計算機程式語言的良好過渡工具。這通常是為了避免浪費時間在具體的程式語言上,這樣你可以完全專注於推理。透過它,你將發現構成良好程式設計工具(語言)的核心部分。你知道了真正需要的是什麼、掌握了程式語言的核心目標。在程式設計實踐過程中,你會不知不覺地就學會了這門程式語言。

在原文的基礎上改正了C語言函式語法的錯誤,如果還有其他地方有錯誤請大家指正。

23
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 入門OpenCV(Python版)(中)