在編程的道路上,也已經走過了幾年。從一開始的懵懂無知,到後面的死去活來,再到後面的初窺門徑,花了太多的時間,耗了無數的精力,掉了數不清的秀髮。

由此,也終於是總結 出少許編程經驗和思想。在此,將部分編程總結,分享於各位編程同仁,希望大家的編程之路,走得輕鬆一點,有趣一點。

大部分人,對於編程語言的學習,總是望而卻步,甚至是聽之卻步的。

作為前端工程師,早已被瀏覽器兼容,屏幕適配,各種框架,打包配置,工程組件繞得七暈八素,哪裡還有時間去學習另外的語言。

javascript原型,閉包,作用域,一切皆對象,函數式,框架,前後分離等等這些玩意都還沒搞明白,萬萬不可分心去學習php、java、python、nodejs、golang等等其他語言的。

全棧工程師,何其難也,專精一門javascript足以。

......

以上,荒天下之大謬。

其一,橫看成嶺側成峯,遠近高低各不同。

只會一門javascript編程語言,猶如坐井觀天,管中窺豹,一葉障目之下,兩眼抓瞎之中。(註:個人認為,html,css還算不上編程語言)

學習編程最好的方式,應該是跳出語言外,不在細節中。

就像是看一本書,好的方法,不是直接從第一頁一股腦往後翻。而是應該先看幾遍目錄,有個全局觀,然後再從各個章節,局部突破。

舉個栗子:

javascript有各種內置對象,比如:Date、Math、Array、Object、String、Number等等。這些是組成javascript的,與生俱來的元素,結構。它們的存在,決定了javascript是什麼?能做什麼?

Data決定了,我們能夠操作時間。操作時間能幹嘛?網頁日曆、網頁時鐘,購票日期選擇等等。

Math決定了,我們可以進行加、減、乘、除,乘方,三角函數,對數等等計算。

Array跟前面兩個有點不一樣,它是「數據結構」,專門用來存儲和操作數據的。存儲和操作數據能用來幹嘛?數字排序、圍棋棋盤狀態、出棧入棧等等。

其餘暫且不表,簡而言之,我們學習一門編程語言,就拿javascript來講,我們應該首先盡量嘗試去理解,這個東西,它是什麼?它可以做什麼?

然後,再去進行深入學習的時候,才會在某個時間點,某個靈光一閃間,幡然醒悟,javascript可以做什麼,它原來是這樣做的。又或者,我以為javascript只能做什麼,原來它還能做這個。

這樣,編程處處出驚喜,工作步步不驚心。

其二,不是每個人都是天才。

老師或者其他人都說,先精通一門,比如javascript,然後再去學習其他語言。放屁!

編程語言能這麼容易精通?那還要智商幹什麼。

很多人覺得,編程太難了。

世界上幾千種編程語言,我學習其中一種已經付出喫奶的力了,再學其他的,豈不是要讓我駕崩?

其實這個從某個時間段來說,確實沒錯。剛剛進入編程這個行業或者從事沒多久編程工作,確實是一心一意鋪在這個語言和自己負責的工作任務上是最好的。

不過,到達某個時間點,能夠感覺到自己已經熟練工作,在編程上遇到瓶頸,進步緩慢的時候。切換到另外一個語言,學習另外一種思路,是最好的。很多人不願意切換,十年如一日做著重複性地編程工作。

等到自己想跳槽,或者被跳槽的時候,才發現自己不僅身體老了,心態老了,甚至連技術都老得面試都通不過了。原來自己不過是把一個1年工作經驗的程序員就能幹的事情,重複地幹了十年。

不要太相信自己。

很多剛入行的新人,覺得自己多麼多麼牛逼,要多少多少薪資。

很多入行一段時間的老人,覺得自己可以不學習其他技術,可以精通目前混飯喫的這門語言,從而混更好喫的飯。

確實,不說完全精通,單說接近精通一門編程語言,幾乎每個人都有這個潛力。但是,絕大部分人,都沒有這個行動力。

這個世界的誘惑太多了,人是很聰明的高等動物,也是因為如此,能夠制約和影響我們的因素,也更多。

古代,信息傳播慢,人們的思想也慢,所以注意力能夠更加專註,所以能夠用一輩子去做出被後人視為瑰寶的思想文化。

天才在左,瘋子在右,天才和瘋子之間,僅僅一線之隔。其實瘋子於此,不是一個貶義詞。而是他們更為專註的精神境界和那個當時的人們格格不入。

因為格格不入,所以他們是瘋子。

因為精神專註,所以他們是天才。

其三,編程不難啊!

聽到無數的人說,編程好難好難啊!

我也這麼說過。

現在,我不這麼說了。

我現在只會說,編程真的好難好難!

編程難在哪裡呢?我覺得,是難在編程的深入。什麼叫深入?追根溯源就是深入。

操作系統是怎麼實現和運行的?

如何發明一個編程語言?

函數式?丘奇數?lambda演算?圖靈完備?可計算性?

如何用邏輯門實現一個cpu?

Linux系統完全掌控?

演算法?

AI?

......

這些是真正有趣的東西,但是真的太難太難了。

不過,單純的學習一門語言,入個門,真的是再簡單不過啊!

3天入門N門編程語言

語言是有共性的。

就像漢語,英語,西班牙語等等。都有主語,謂語,賓語,狀語啥的吧?

那麼,這就是它們的共性。

那麼它們的不同點是什麼呢?

讀音和寫法應該是最大的不同點了吧。

你知道了他們的讀音和寫法,再加上學習這個語言的語法邏輯,那基本算是入門了吧。

編程語言同樣如此。

大部分編程語言,也都有共性。

從某個方面來講,編程語言,由庫文件和語法邏輯組成。

舉幾個例子:

javascript由瀏覽器的bom,自身的dom以及原生對象和if for 函數定義 變數定義等語法邏輯組成。

php由自身的資料庫操作庫,文件系統操作庫,數學操作庫和if for 函數定義 變數定義等語法邏輯組成。

golang由自帶的網路操作庫,文件操作庫,加密庫,輸入輸出庫和if for 函數定義 變數定義等語法邏輯組成。

nodejs由網路操作庫,文件操作庫,加密庫和if for 函數定義 變數定義等語法邏輯組成。

c語言由網路操作頭文件,輸入輸出頭文件和if for 函數定義 變數定義等語法邏輯組成。

perl、bash、python等等,同上。

幾乎所有的編程語言開發,無外乎就是通過語法組織進行函數調用而已。

各語言輸出hello world。

javascript:console.log(hello world);

這個console對象和其下的log函數哪來的?不是天上掉下來的,是這個語言自帶的。也就是說,你去租房,房東水電冰箱全包。

你搬進去住,要喝冰闊落,你買好闊落(hello world),把它放到冰箱裏(執行console.log函數,hello world作為參數傳給這個函數),然後,過一段時間,就能夠喝到冰闊落了(函數輸出結果)。

你不需要關心冰箱是誰製造的,不需要知道它是誰買的、也不需要關心買它花了多少錢。

它擺在哪裡,用就行了。

所以,如何使用其他家電呢?

php:echo hello world;

洗衣服,丟進去洗就行了嘛。

golang:fmt.Println(hello world)

看電視,打開遙控器就看嘛。

......

每個家電都有使用手冊,每個編程語言都有使用文檔。

編程語言入門,查找使用手冊,然後去使用。

或者看看別人怎麼使用,自己也嘗試去用就行了。

大的複雜的東西,都是由小的簡單的東西組成的。

熟練javascript的Date對象使用,其他的,比如String對象,Math對象,使用起來也差不多。

熟練javascript這個編程語言,其他語言,學起來也差不多。

3天入門N門編程語言,哪裡難嘛。

知乎最窮的基層小碼農,如果本文章對你有用,請隨意打賞。

推薦閱讀:

查看原文 >>
相關文章