這些年追過的技術-編程篇(一)

回憶一下從業這些年花時間學過的技術,做一個階段性的總結。

首先寫一些編程方面的東西。雖然我並非一個程序員,但是我覺得既然是在這個圈子混飯吃,一些編程技巧總是少不了的。

這也是因爲以下兩點:

1.能夠獲得與計算機對話的一種手段,在找不到任何可用工具的時候可以自己製作趁手的工具。或者讓計算機幫助自己完成一些重複性的工作。這就好比一個整天和外國人打交道的工作如果不能流利使用外語只能說幾個單詞或者靠手比劃是很痛苦的。

2.能夠閱讀一些開源系統的代碼,理解這些系統關鍵部分的作用原理。這也是一個資深的系統管理員的看家本領。


對於前者來說,我需要一個表達能力非常強的能夠非常方便的進行快速進行開發的語言,不需要非常快的運行速度,不需要對這個語言背後的運行機制非常清楚,能夠隨心所欲地完成工作即可。

最初我選擇了perl。但是perl的語法風格真的是太糟糕了。整個文件充滿了各種稀奇古怪的符號,寫完了自己都看不懂。接下來我試了下python。一旦粘手,就放不下了,用起來非常舒服,而且代碼異常整潔和優雅,可維護性極強。

python是一個多範式的語言,既可以使用函數式式編程做開發,也可以像傳統的面向過程語言的方式開發。也可以用面向對象的方式開發。

但是我現在比較傾向面向對象的開發方式。儘管python動態語言的特性天然的擁有多態性,但是面向對象的方式還勝在更好的模塊化特性,而且這也是python天然的數據結構的表示方法。


另外,很多系統管理員都要求要會使用shell編程,而我並不是很喜歡這個東西。

因爲

1.無論是linux bash,還是windows的cmd 和powershell,語法都非常難看。尤其是bash,充斥着if-fi,case-esac這種怪異至極的東東。讓人渾身難受。

2.shell無法在不同類別系統中移植。

3.shell作爲膠水語言要依賴其他工具,而且shell很難進行大規模開發。

4.很多人都用shell因爲shell對於某些工作非常簡單和方便。但是考慮到並不是一直在用,我寧願把這個任務交給python來做,能夠讓自己有時間練習一下正常的編程語言。

當然,shell我還是會去使用的,只要不涉及分支循環等邏輯判斷,不是作爲一種編程語言,而是一個批處理的管道工具。


對於後者來說,我還是需要一些c,c++以及彙編的知識。雖然我幾乎不去寫c和c++代碼,但是還是必不可少的需要掌握這方面的知識。

因爲:

1.相當多的重要系統都是由c或c++寫成的。想要去看代碼只能看到c。遺憾的是,c語言閱讀起來是非常困難的。各種宏定義,類型聲明以及全局變量分散在各處。而且c語言很多地方爲了實現一些更加高級的功能會有複雜的類型轉換和多級指針,非常混亂而又難以理解。


2. 作爲靜態編譯語言,c語言和彙編有着非常直接的一一對應的關係。非常適合用來了解機器語言和高級語言之間的聯繫,掌握一些編譯以及計算機原理的重要概念。也就是說非常適合拿來學習。這也是爲什麼c語言非常難以被初學者掌握的原因。因爲有太多的隱藏在底層的概念和原理需要知道,無論是內存的分配方式,還是編譯和連接的技術細節。這些東西很多即使是專業程序員,大部分人也不會想去關注的。因爲相當多程序員和技術宅不同,技術只是一個賺錢養家的工具。枯燥的底層技術細節不需要關心,高層的算法中深奧的數學原理也不需要去理解,那些大牛們已經把算法封裝好了,知道api什麼意思,直接拿來使就ok了。大部分程序員所能左右的只是自己的業務邏輯,他們更關心如何複用代碼,減少自己的工作量。以最少的bug更快完成開發任務。不知道這是幸運,還是不幸。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章