大多數(shù)程序員、初學(xué)者都以為自己正在學(xué)習(xí)編程,其實并不是,而是在走彎路。
你可能正在學(xué)習(xí)一門編程語言,而不是編程本身
計算機科學(xué)不是學(xué)習(xí)計算機,很震驚吧。相反,它是關(guān)于借助計算機來自動解決問題的一門學(xué)問。解決問題才是計算機科學(xué),而不是寫代碼。這就是許多計算機科學(xué)專業(yè)的學(xué)生,似乎不理解他們?yōu)槭裁磳W(xué)習(xí)算法和數(shù)學(xué)的原因。
如果你以前上過計算機科學(xué)的課,那么你不會對此感到驚訝。因為你會注意到編程與編程語言幾乎沒有關(guān)系。思考一下,為什么偽代碼在這些課程中如此常見。
但大多數(shù)程序員總是會落入陷阱。我們學(xué)了十幾年編程語言,才意識到自己真正需要學(xué)的是編程,而我本身就是受害者。
我花了十多年的時間來學(xué)習(xí)各種編程語言。我學(xué)的編程語言越多,構(gòu)建簡單的東西就越困難,我感覺找不到正確的工具。但問題是,當(dāng)我不知道如何下手時,我忘記了應(yīng)該去探索要做什么,而不是尋找正確的工具。
編程語言的奇怪之處在于它們總是在變化。編程語言幾乎每天都在變化,跟進非常困難。而且大多數(shù)優(yōu)秀的程序僅用到了編程語言的一小部分。
優(yōu)先學(xué)習(xí)編程語言的問題就像在學(xué)習(xí)木工之前學(xué)習(xí)如何使用木工鋸、錘子和各種切割機。木工需要注意:想法、可行性分析、度量、測試、用戶使用習(xí)慣,老木匠更關(guān)注這些。而不是錘子和釘子這些東西。
在對工作進行科學(xué)研究期間,他還將花時間檢查釘子、著色劑、木材等的質(zhì)量。
學(xué)習(xí)編程和學(xué)習(xí)編程語言有什么區(qū)別?
“編程” 通過給出一條指令來使系統(tǒng)自動運行。我們每天都這樣做,我們教我們的孩子、士兵、客戶。我們發(fā)出或收到指令,要求自由或獨立地按照規(guī)定的方式進行。你的父母不需要一直跟著你,并指導(dǎo)你生活中的每一步,他們已經(jīng)在之前生活中的許多方面對你給予過指導(dǎo)(指令)。
大多數(shù)學(xué)校和教育網(wǎng)站都會教授編程語言的語法。他們還會添加一些設(shè)計模式(而你可能恰好忽略了設(shè)計模式是什么)、一些數(shù)學(xué)計算、如何聲明變量以及如何使用它們,數(shù)據(jù)類型以及如何聲明和創(chuàng)建它們。
上面說的那些編程語言的知識不會教你編程。當(dāng)你發(fā)現(xiàn)時,你會覺得學(xué)習(xí)編程實在浪費時間,大把的時間。
我們用編程來解決問題,而編程語言是幫助我們解決問題的工具。
它們就像工具箱,我們稱之為框架。它們可以讓你的想法更有條理。
如果你正在學(xué)習(xí)編程,但仍無法設(shè)計和編寫一個實際的應(yīng)用程序,這意味著你要花