C蠻的全棧之路-序章 技術棧選擇與全棧工程師

目錄

C蠻的全棧之路-序章 技術棧選擇與全棧工程師
C蠻的全棧之路-node篇(一) 環境佈置
C蠻的全棧之路-node篇(二) 實戰一:自動發博客javascript

博主背景

985院校畢業,至今十年C++開發工做經驗,現工做地北京。
曾參與開發千萬級用戶的客戶端,及其企業應用的後臺。
曾爲上億級用戶產品的主程,本身寫的界面庫做爲產品的主界面引擎運行在上億用戶的計算機上。
現從事業務在世界得到一流水平的成績,併產出過業務相關的已審定受權的核心專利。
曾有一次創業經歷;兩次陪伴公司一塊兒成長,從未上市到上市的經歷。
長期TRPG愛好者,但名不見經傳。php

寫做目的 

博主是一個封閉的博主。博主是一個閉門造車的博主。
工做以後兩年,博主進入了一個輕度涉密行業。
行業內不少技術不適合交流。稍微核心一點的技術,除了在公司內部探討外,外部的知識只能查詢一下外文材料,可能還有的要靠逆向他人的辦法來得到靈感。
加上工做壓力的摧殘,十年裏,博主沒有技術博客,也沒有在開源領域貢獻什麼東西。
事實上知識的積累,輸出就是最好的輸入,寫出來會有人來糾正博主的錯誤,和博主探討方法的優劣,對博主和看客都有幫助。
藉助這次自學經歷,博主打算寫一些東西,但願看客不吝賜教。css

---------------- 我是分割線 --------------html

不少朋友的第一門語言是一個強類型語言。多是C/C++/Java/C#。
作到必定年份了,積累了豐富的經驗,發現本身好像大多數東西能作,客戶端、服務端、手機、遊戲,不少場景本身均可以進行開發。前端

在各類場景下都能開發。
在各類場景下都遇到有力的競爭對手。
競爭對手貌似很多人比本身開發效率高。
相似這樣的技術人員,咱們能夠稱之爲C蠻。vue

---------------- C蠻和隊長的故事 --------------java

C蠻渾身肌肉,手持精金巨斧。
不管看到什麼怪物,嗷嗚一聲吼。狂暴+吹大+高等魔化武器+猛力攻擊,衝鋒過去硬食各類DR和免疫。這樣也取得了不錯的適應性並且夠威,可是終究損失了很多輸出。
C蠻的旁邊,是他們的隊長。
隊長是個戰士。
奇怪,隊長沒有我強壯,他根基不如我啊。他也見到什麼怪物都能頂上去,有傷害還有控制。他是怎麼作的?
C蠻一回頭,看到隊長的後背上揹着七把武器。
「hmm?這都是啥……精金銳鋒彎刃大刀、煉銀長鉤刀、寒鐵輕鏈枷、巨劍、標槍、匕首……」node

有遠程,有近戰,有長型,有輕武器,有雙觸及範圍,有高暴擊。
傷害類型有鈍擊,穿刺,揮砍。
控制類型有絆摔,卸除武器,反衝刺。
材質有精金、祕銀、寒鐵。
還有各類附魔……python

正確的選用武器、豐富的專長鏈和更好的顏幫助隊長贏得一次又一次的戰鬥,而且得到人們的尊敬。
C蠻攥着本身的精金巨斧如有所思。
他決定用本身很少的金幣,在冗長的武器列表裏挑一些武器做爲本身的補充。react

---------------- 增長你的武器 --------------

沒有哪種語言是在任何場景都優於/不弱於其餘語言的。(這時從八個方向衝出三十隻地精,每個手裏都拿着爆裂符文,一臉堅毅的喊着「php是最好的語言」向做者衝了過來)
正確選擇合適的工具對解決問題是有幫助的。
無限的工具,有限的精力,天然要優先選擇適應力強的放進本身的學習列表中;最終目的固然是成爲在任何/大部分場景,都能有合適的工具幫助本身解決問題的傢伙。
前者,就是技術棧;後者,就是全棧。

---------------- 全棧工程師之路 --------------

故事講完了。下面該說選型了。
好用的武器你們內心都有數。
node.js、react.js、react native、electron、cocos2d-js……
js這把武器,也有它自身的缺陷(C蠻:傷害弱的一B?),可是多傷害類型還帶控制。以此做爲根基,附魔、材質各類能強化的都算上,它最終成爲不比C蠻主手武器弱的第二把有力武器。
並且,C蠻的身體基礎和第一把有力武器可以幫助他,在第二把武器稍顯疲弱的場景,依舊能夠從褲襠裏把第一把掏出來強行打一波傷害。C蠻在把第二把武器玩熟後,最終發現比只持有本身第二把武器的傢伙還多了些適應性。

「哦……是刺鏈啊……」隊長拿起來C蠻的新武器,隨手熟練的把玩了兩下。「雙觸及範圍,支持摔絆和卸除武器,性能極好。不過,這就和那些東方蠻人發明的九節鞭同樣複雜。軟硬兼有,可刺揮還可戳挑。隨手就用極是危險。不但要當心不要抽到本身後腦,還要當心羣戰時不要被同伴的此物抽到。這就不如……」
「臥槽!」C蠻瞪着銅鈴大的牛眼說道:「老大,說人話!」
「呵呵,入戲太深刻戲太深……」隊長尷尬的咳嗽一下,從新說道:「js在中古時代不是通常的難用,有了ES6和ES7纔剛剛算是擁有了其餘語言早就有了不少年的一些特性……」

---------------- Why javascript? --------------

適合工程化的語言,指的是可讓不一樣實力的研發人員,在同一個項目中快樂合做的語言。
它能讓低水平研發人員寫出中等或中低水平的代碼。
反之則是不適合工程化的,它能讓中水平研發人員寫出低等或中低水平的代碼。
典型的工程化語言有C#和Java。

js自己能寫出的代碼之下限可謂深不見底。
但如今時代好了,一個sb工程師毀掉一個項目的時代過去了。
ES6普及ES7展望,js也有了質量控制的辦法,靜態掃描和驗證工具也有了,還有TypeScript這樣的東西能夠選擇,能夠說工程化是沒有什麼障礙了。
那麼爲何是js呢?先來看看技術的應用場景。

一、後端
時代好了,node.js與io.js合了。沒有什麼選擇恐懼的狀況了。
node.js的弱點是CPU密集型,而C/C++正好能夠補足這一點。學習node後,C蠻就有了可搭配的兩把利器。

二、前端
前端毫無疑問是js的天下,沒有什麼能夠爭論的。
angular是好爹不依仗的次子,社區環境也不行,後面除了羣體流入也會有羣體流出。
react爹稍差可是嫡子,熱度也夠,後面也是羣體流入。
vue也會流入,不過只交一個朋友的話,仍是react比較划算。

有了node.js和react後,雛形就已經出來了,下面再看:

三、手機應用
目前受機能影響,WebView、hybrid、native的絞殺中,native有着極大的優點。

而react native,就是讓你複用react的知識面,也不丟和node.js配合的知識面,就能寫手機應用了。
和native相近的性能,更快的開發效率,更低的開發成本,再也不須要給安卓、IOS、Web分別配置徹底分離的團隊。
自然的熱更新,再也不爲版本地獄頭痛,再也不爲蘋果審覈揪心。
真的須要時,他也不排斥和native間的調用能力。
這個模型是如今市場須要的,就算沒有 react native 也會有個別的 xx native 出現,所謂風口上豬都能飛起來。
況且react還有個facebook的好爹。

長期看,react native的意義確定是日漸萎縮的。不過將來革掉他的命若是是某種WebView,那依舊仍是js的江山。

四、桌面應用
Win上你們都知道來個DirectUI來作界面了。不過咱們還有別的作法。
electron。chromium + node.js,這個組合很巧妙。
交互能力上,選取 chromium,這是它的強項;系統調用能力上,選取node.js,這是它的強項。
組合起來,一個桌面應用的開發模型誕生了。
相比找個DirectUI庫,html+css要表達一個界面效果,能夠找的高級開發工程師車載斗量。
各類好處不用提,而這一切仍是跨平臺的。
工程角度,它還能幫助咱們把界面和邏輯層拆開,避免結構不清晰等一些桌面開發容易犯的錯誤。
當須要和C/C++交互時,咱們仍然能找到辦法。
缺點則是性能偏低打包偏大,說白了仍是一個WebView模型,20M的體量。範例應用:Visual Studio Code

五、智能硬件
看看以下代碼

$("livingroom").bind("motion", function() {
    $(this).find("lights").brightness("75%").dimAfter("120s");
});

當下的硬件,須要的是邏輯關係,硬實時的編程再去燒板子不適合這個時代。
反人類的callback在現實中經常找到行雲流水同樣通暢的場景。
像 nodebots、ruff 這樣的產物一定會有所發展。
這就是選擇js的緣由,它不容錯過。

---------------- One more --------------

還有誰?!
               -- 馮小剛

python:
輕鬆上手,成熟的庫。就算不用它作什麼產品,你也免不了寫點小工具。一個C蠻若是說一點python不會,也有些笑人了。
就算不提OpenStack,python也是徹底不能放棄的一個存在。

php:
這就是武器裏的長劍。滿地都是。
做爲世界上最好的語言,就算咱們不精研它,也得會點。

rust:
對於玩慣了c/c++的C蠻來講,總有一些場景是必須使用系統級語言的。

以前的生涯裏,其實備選是不多的:不犀利的性能,臃腫的runtime,不知什麼時候的GC、靈活過分的弱類型等等。
別的場景裏那些華麗的特性,都變成了這堆雜碎語言在你想要硬派的時候替你穿上長裙坐着輪椅出戰的惡意。

那麼還繼續c/c++呢?
惋惜這倆都不是適合工程化的語言。
定好接口,放上單元測試,交給新手寫點實現。這樣市面上常見的「民工三連」若是是Java就已經很好使了。可是換在這裏就要冒被一個新手一不注意就艹翻整個項目的風險。
年歲稍長的c/c++程序員都有過接手垃圾代碼的經歷,也都有把垃圾代碼留給下任的經歷。
「review新人代碼把處女座的你氣的半夜起來尿血」說的就是這批程序員。

如今呢?

D語言大概是「屌喲~不錯喲~」而後回去繼續用本身的c/c++。
Haskell那是科學家用的東西,和咱們工程師沒有什麼關係。再說了,你仍是想交女友的對不。
Go仍是不錯的,又是壕爹的次子(雖然是隻管生活費的那種)。不過他是瞄準C一炮過去,擦掉了Java、pathon什麼的一些皮。
Rust纔是c/c++er想看到的東西。看到它,就彷彿看到一個機智的兄貴。特性過一遍,讓人不禁得產生「對對對,就這,就是這」的呻吟。

多學點東西,總不是壞事。

---------------- 信手拈來 --------------

「對。就是這樣。」C蠻果真發出快意的呻吟。
「下一把我要選php,這但是這個位面最強的武器。」C蠻把玩着手裏的刺鏈心情至關愉悅。
後來,C蠻又小小的品嚐了erlang、golang、python、perl、lua、object-c、rust……
其中有一些一度讓他捏在手裏感受十分溫馨。但「隨機戰利品」狠狠的教育了他一次。

市面上更常見的武器,也更容易爆出,從別人手裏掉出來你能拿起來就用,從你手裏掉出來別人能拿起來就用,這真是個優良的品質。而有些武器辣麼順手,怎麼就沒多少人用呢?
C蠻皺着眉頭,最終仍是把本身的專長投在了手裏的武器上……
「少又好用的武器嘛……等遇到了捏在手裏,再現丟專長在上面吧。」
C蠻最終這樣決定。

 

附錄:隊長LV20專長/技能樹。轉侵刪。

全棧

相關文章
相關標籤/搜索