趣文:程式設計其實是文科

玻璃貓發表於2017-02-17

程式設計究竟是文科還是理科?

還用問?程式設計當然是理科嘍!或許很多人會不屑地回答。

趣文:程式設計其實是文科

然而,情況真的如此嗎?

讓我們先來看看一個程式設計師故事,或許裡面有著你我的影子。

學習程式設計的小灰

多年以前,工科出身的小灰打算學習程式設計

趣文:程式設計其實是文科

學習程式設計的頭一個月,小灰如魚得水

趣文:程式設計其實是文科

學習程式設計三個月,小灰略有疑惑

趣文:程式設計其實是文科

求職和初入職場,海量的知識撲面而來

趣文:程式設計其實是文科

工作若干年,小灰又將面臨新的挑戰

趣文:程式設計其實是文科

工作之餘,小灰回想起自己程式設計道路上的得與失,不禁感慨道:

趣文:程式設計其實是文科

文科還是理科?

若要評判程式設計是文科還是理科,我們需要首先明確一下文科與理科的各自特徵。

文科:以知識和經驗總結為主,例如歷史學、法學

趣文:程式設計其實是文科

理科:以計算和邏輯推理為主,例如數學

趣文:程式設計其實是文科

當然,絕大多數學科都不是純粹的文科和理科,而是兩者均有涉及。其中有些學科更偏重文科,但也具有少量理科成分,例如地理學。

趣文:程式設計其實是文科

也有部分學科更偏重理科,但具有少量文科成分,例如化學、生物學。

趣文:程式設計其實是文科

對於這些“混合型”學科,我們往往依照其側重點,來劃分文理科。因而毫無疑問,地理學屬於文科,生物學屬於理科。

那麼,對於“程式設計”這樣一門學科,究竟是文科成分佔主導,還是理科成分佔主導呢?讓我們來做一些具體分析。

程式設計中的理科部分:

1.基本邏輯

趣文:程式設計其實是文科

這裡的基本邏輯,指的是程式設計中所涉及的各種基本邏輯元素,比如程式中的迴圈控制、條件控制邏輯,比如資料庫中的SQL查詢邏輯,比如多執行緒的同步非同步邏輯。

誠然,邏輯是學習程式設計的基石,但邏輯絕不會成為一個程式設計師從初級走向高階的門檻。因為這些邏輯的學習成本真的不高,只要方法得當,一個十二三歲的普通孩子也可以輕鬆掌握。

2.演算法

趣文:程式設計其實是文科

如果說基本邏輯僅僅是入門的基礎,那麼演算法就是理科程式設計的真正難點。可是,對於絕大多數人程式設計師來說,如果不是專門從事演算法研究,不是ACM競賽的參賽者,那麼演算法對他來說僅僅是一個大致原理的理解,僅僅是一個API的呼叫。演算法很重要,但是相對於其他能力,演算法又顯得不那麼關鍵。

程式設計中的文科部分:

1.知識

趣文:程式設計其實是文科

知識是一個廣義的概念。在程式設計這個領域,知識可以是某種語言規則,比如Java中final類不能被繼承;知識也可以是某個底層原理,比如Mysql中Myisam引擎的索引資料檔案分離;知識也可以是某種設計原則,比如物件導向的開放封閉原則,比如系統設計的CAP原則。

或許有人會說,程式設計當中的知識不需要像文科那樣死記硬背,最重要的是“理解”。可是,理解與記憶原本就是密不可分的,不去記憶,談何理解?歷史事件需要理解,法律法規也需要理解,但歷史學與法學,並未因此而脫離“文科”這一屬性。

2.經驗總結

趣文:程式設計其實是文科

如果說程式設計知識是一條一條清晰的文字,那麼程式設計經驗則顯得抽象而模糊,很難直接用語言表達。

深厚的程式設計經驗可以讓你寫出可擴充套件性更強的程式碼,可以讓你快速定位出線上的bug,也可以讓你設計出高可用的系統。知識由書本得來,經驗則是在一次次的採坑中逐漸總結和積累獲得。可以說,經驗的作用還在知識之上。

總結起來,在邏輯、演算法、知識、經驗四個方面,絕大多數程式設計師花費幾個月的時間掌握了程式設計的基本邏輯,卻需要花費五年甚至更長的時間來學習大量程式設計知識,總結程式設計經驗。演算法雖然學習成本很高,但因為過於“專業化”,而居於次要地位。

趣文:程式設計其實是文科

由此可見,程式設計雖然有著一定的理科元素,但更多的特徵仍舊偏向文科,足以把整體定位成文科。

如何學好這門文科?

無論程式設計的真面目是文是理,作為一個程式設計師,我們都需要熱愛自己的職業。演算法和設計思想是天馬行空的藝術,專案研發則是腳下泥濘坎坷的道路。做好程式設計師,最重要的是踏實和耐心,希望各位親們都能一步一個腳印,走出屬於自己的路。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

趣文:程式設計其實是文科

相關文章