對于Rust的優(yōu)勢我的體會如下:
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、蓬萊網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為蓬萊等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
* Error Handling機(jī)制好太多,用Result封裝函數(shù)運(yùn)行結(jié)果靈活性大大提高,代碼也大大簡潔
* 函數(shù)式編程支持較好,有Lambda這種東西,使得它寫起來甚至有Ruby的感覺
* 效率高,沒有了GC和Runtime,速度是沒得說的
* 支持范型
* 有宏和編譯器插件這些黑客技,語言擴(kuò)展性較好
* 社區(qū)活躍度更高,更強(qiáng)調(diào)社區(qū)的作用,有[RFC](GitHub - rust-lang/rfcs: RFCs for changes to Rust)。[中文社區(qū)](Rust China)也有了
Rust的劣勢是:
* 語言特性復(fù)雜,對新手就不會那么友好
* 穩(wěn)定性不夠,語言的進(jìn)化較激進(jìn)
* 第三方庫的成熟度還落后于Go,商業(yè)化的應(yīng)用也還不夠
C和Go語言啊
bot端采用純C寫的
CNC采用GO語言
至于Mirai DDoS的工具源碼,除了scanListen,其余都是C哦。
C++適合本地程序的開發(fā)。Go語言適合網(wǎng)絡(luò)程序和本地程序的開發(fā)。Go的優(yōu)點:垃圾回收,語意明確,格式統(tǒng)一。?Go的缺點:效率目前沒有C++高,但對于桌面程序而言,效率問題不大,因為硬件已經(jīng)很快了。c++過于復(fù)雜了,加入很多炫技的內(nèi)容。這些內(nèi)容脫離了事情的本質(zhì)。
最明顯的就是所謂的面向?qū)ο蟆;诿嫦驅(qū)ο蟮墓こ倘绻銐虼蟮那闆r下,會帶來很大的耦合度,如果再加上內(nèi)存管理,多線程等等。項目后期基本上沒辦法維護(hù)和增加功能。
關(guān)于c++的語言復(fù)雜性,你可以問知乎上的任何一位高手。沒一個敢說自己精通c++。你也可以去看一下所有的c++編繹器,沒有任何一個敢說自己完全實現(xiàn)了c++的標(biāo)準(zhǔn)。不同的編繹器之間實現(xiàn)細(xì)節(jié)又不同。所以功能再強(qiáng)大沒有實用性,就失去了意義,只會制造更多的問題。
同樣是高中,寫了一個郵箱爆破工具,把班上一個女生的郵箱破解了,看了她寫在郵箱里的日記,原來她不喜歡我。那個時候我知道了,技術(shù)可以揭示真相,但改變不了人心。
上大學(xué)的時候每學(xué)期期末都要在教務(wù)系統(tǒng)評價老師,雖然沒有任何卵用,但是它還居然不能同時填寫一個,也就是說,你不能全部填A(yù),也不能全部填B或者C或者D,這很麻煩,所以我做了一個插件,點一下就完事兒,隨機(jī)填寫,保證能提交成功,獲得了全校同學(xué)的喜愛。
大二的時候滲透了學(xué)校圖書館的服務(wù)器,在里面植入了我的木馬,可以任意借書,只要檢測到我的名字,就直接刪除借出信息,于是我借的一本普林斯頓高等數(shù)學(xué)就在寢室躺了三年,不過我也只借了這一本。
社交網(wǎng)絡(luò)這部電影火起來的時候,我也抓了全校學(xué)生的照片,做了個類似facemash的網(wǎng)站,后來被輔導(dǎo)員發(fā)現(xiàn)了,就關(guān)停了。
后來搞到一個樹莓派,更是做了許多好玩的東西,比如接上揚(yáng)聲器和話筒,用百度語音識別接口和圖靈機(jī)器人的接口實現(xiàn)了一個語音助手,我只要在客廳問他,今天天氣怎么樣,他就會回答天氣如何,而且我還加了定時任務(wù)在里面,每隔一段時間,會發(fā)微博@我的女朋友注意喝水
先不回答問題,先聊聊這個聽說!
程序員并不是瘋子,只是邏輯思維可能比較的接近于計算機(jī)思維,所以常常有些頑固。
成天和代碼打交道不假,不過,交流也是程序員比較重要的一個能力,所以溝通能力還是比較強(qiáng)的,只是說,做技術(shù)的人都有個通病,就是,不感興趣的話題,我不插嘴。
so,有本事和程序員聊數(shù)碼產(chǎn)品,你看看他話多還是少。
最后一個,很難找對象。
這個其實是一個誤區(qū),我認(rèn)識的30+單身的妹紙,絕對比30+單身的程序員多非常多。but,這些30+單身的程序員,基本都看不上這些30+單身的妹子。
所以,程序員找不到對象只是一種假象。
好了,說說我寫得最牛的一個程序吧。
很早很早以前,我們做了一個應(yīng)用程序商城,當(dāng)時還不是移動互聯(lián)網(wǎng)時代,智能手機(jī)才剛剛問世,所以,我們的應(yīng)用程序商城賣的是SaaS系統(tǒng)。
我們有非常非常多的SaaS系統(tǒng)提供商,包括Microsoft、Google等等。
所有的這些SaaS系統(tǒng),我們這里賣的都是license,license也分等級,例如高級用戶,中級用戶,初級用戶。
每個SaaS系統(tǒng)也有不同的通訊協(xié)議和報文格式。
因為我們要對接的SaaS系統(tǒng)非常多,我們不可能去每個系統(tǒng)單獨對接,所以,我們就自己做了一個模塊,能夠?qū)⑺械耐ㄓ崈?nèi)容進(jìn)行配置。并且,這些配置都是可視化的。
用戶在根據(jù)我們的配置,進(jìn)行不同的選擇,然后付費,我們在將這些內(nèi)容傳遞給SaaS系統(tǒng)。
but,這個并不算是復(fù)雜的。
這些SaaS軟件的提供商都是老大,他們需要能夠知道并且測試自己的系統(tǒng)在我們商城下運(yùn)行是否順暢,并且他們可能會調(diào)整自己的一些配置,也需要知道這些調(diào)整會不會有影響。
因此,我們就做了一套系統(tǒng),這套系統(tǒng)可以根據(jù)這些SaaS軟件提供商基于自己的系統(tǒng)接口的配置基礎(chǔ)上再進(jìn)行配置,然后按照這些配置自動的一步步執(zhí)行,如果執(zhí)行不下去了,將結(jié)果告訴SaaS軟件提供商,并且告知他是什么問題引起的。
例如: SaaS軟件提供商想模擬一個企業(yè)用戶購買了1個高級用戶License,再購買了3個普通用戶license,然后將其中2個普通用戶license升級為高級用戶,然后將1個高級用戶license降級為普通用戶,然后,將1高級用戶license分配給了員工A,1個普通用戶license分配給了員工B,然后注銷掉所有的普通用戶license。
當(dāng)然,這個流程可以非常長非常長,而且其實內(nèi)部規(guī)則很多,例如,有的SaaS系統(tǒng)可能是,注銷普通license后,如果有空閑的高級license,普通license所分配的用戶需要自動分配到高級license上,但有的SaaS確是,注銷后,用戶需要閑置。
所以,當(dāng)時這個配置化的通信模塊,并且還含有規(guī)則的功能就已經(jīng)很復(fù)雜了,還要在此基礎(chǔ)上做一個自動化的測試系統(tǒng),基本上我們都快做哭了。
你自己測試自己的接口,能不能自己寫腳本,懶到爆了。
我覺得自己最牛X的程序是高中時在學(xué)習(xí)機(jī)上用6502匯編語言寫的鋼琴程序。
當(dāng)時的裕興學(xué)習(xí)機(jī)帶一種學(xué)習(xí)卡,可以使用匯編寫程序,買到了一本薄薄的匯編語言指令書籍,對照一些《電子報》的零星資料,自己學(xué)習(xí)了解學(xué)習(xí)機(jī)的地址劃分、指令集。
當(dāng)時為了搞明白程序干啥用的,搞白紙從屏幕(電視機(jī))抄了很多反匯編代碼。那臺學(xué)習(xí)機(jī)的內(nèi)存1M,還使用了內(nèi)存分頁,有限的資料要搞明白內(nèi)存是怎么劃分的,真是耗了很多腦細(xì)胞。最要命的是寫程序不帶存儲功能,每次要寫就要重新輸入一遍程序。后來又學(xué)它的手柄控制、Midi音樂、鍵盤控制、軟驅(qū)控制,但那時候這些東西對自己來說太難了,有的能搞出來,有的沒成功。
最后還是用它的匯編寫了個電子琴程序。
學(xué)習(xí)卡另外還自帶G-Basic的情況下,用basic實現(xiàn)更容易,我也是先學(xué)Basic后學(xué)的匯編?,F(xiàn)在自己也一度覺得,那時候自己是一生中自學(xué)能力的巔峰,可惜了當(dāng)時學(xué)習(xí)資料太少,長大了學(xué)習(xí)能力急劇下滑,到現(xiàn)在也沒啥出息。
不要妖魔化程序員,程序員只是一個職業(yè)身份。黑客是程序員的一種,所謂的黑客其實也是寫代碼而已,只是因為代碼有特別的功能,就像黑匣子那樣神秘,所以才會被稱為黑客吧。怎么樣神秘,其實我也不知道,但是可以肯定的是,無非就是在現(xiàn)有系統(tǒng)和代碼的前提下,利用Bug而實現(xiàn)其特殊功能而已。
不鼓勵程序員寫所謂的黑程序,大多數(shù)場合一點價值都沒有,甚至還可能違法違規(guī)。實際上,網(wǎng)絡(luò)安全已經(jīng)很發(fā)達(dá),你能看到的所謂的漏洞,很可能是請君入甕。
程序員的確要花很多時間和代碼打交道,但是除了代碼,還有很多人和事。比如產(chǎn)品經(jīng)理、項目經(jīng)理、設(shè)計與美工、架構(gòu)與系統(tǒng)、項目組其他成員同事。如果你是從事和硬件相關(guān)的軟件開發(fā),那么你還需要和硬件以及硬件團(tuán)隊打交道。所以,成天只和代碼打交道,基本上不是什么現(xiàn)實情況。
程序員干得久,普遍來說確實要比干銷售之類的要沉默內(nèi)向一些,或者說有些木訥吧。我認(rèn)為主要是工作環(huán)境影響的吧,大部分時間其實還是與代碼打交道,構(gòu)思,編寫,調(diào)試,修改,驗證。
程序員其實還是很好找女朋友的哦,主要是給人實誠可靠的感覺。再加上,程序員普遍的工資都不算低,如果是一線城市,二十萬年薪起步的大有人在,三十萬年薪起步的也不少,五十萬年薪以上的就相對少一點。如果是大廠的程序員,五十萬年薪起步其實并不算多。
瘋子通常和天才是近義詞,所謂的瘋子不是醫(yī)學(xué)上的瘋子,是看起來和常人不一樣,思維和行動可能也會有差異。但大多數(shù)程序員都不是瘋子,因為大多數(shù)程序員都不是天才。天才不是瘋子,瘋子更不是天才,只是他們之間有一些交叉特點,就是與常人不太一樣。
最后,還是正面回答一下題主的問題。我沒有寫過黑客般的程序,也沒有寫過很牛X的程序。我覺得我寫的比較好的那些程序,是框架好,穩(wěn)定性好,擴(kuò)展性好。我有很多代碼,從寫好之后,縱橫多個平臺,歷經(jīng)十幾年的考驗,經(jīng)歷了很多量產(chǎn)項目的洗禮,我想這就是好代碼之一吧。
我對這些不懂,但是,給我記憶最深刻的。就是一個寫冒險島外掛的一個人,那個外掛名字叫香飄飄,好像是寫到079?還是哪個版本。然后就不寫了。然后他本人說不寫外掛的原因是?。?!要去上高中了,要認(rèn)真讀書了,然后就不寫了!
我先回答找不到對象這個問題,這一定是個初級程序員,我認(rèn)識的程序員比我大的只有一個單身,結(jié)婚比例超過百分之九十九,所以說程序員找不到對象這個結(jié)論不知道是誰發(fā)明的。
另外我些過最牛X的程序是一個bug,當(dāng)天公司的交易額降低到零…
比較滿意的,是我自己在維護(hù)著的黑帽seo工具。
我做黑帽seo也有七八年了,對搜索引擎的算法了解得非常深刻,百度搜狗各種接口,快排,反推,強(qiáng)引,寄生蟲……都是第一時間掌握。幾萬個站點經(jīng)驗,加上我個人見解的seo技巧,用php迭代了4個版本,維護(hù)著的一個全自動排名的seo工具。
目前開了一家跨境電商的公司,正利用它做谷歌。
牛逼之處那當(dāng)然就是賺了不少的錢啦,其他說什么都是虛的。做這行這么久,早就褪去了各種技術(shù)標(biāo)準(zhǔn),各種有的沒的技術(shù)噱頭的爭論熱情了。一個用dede采集搞的權(quán)5下載站,它也價值一兩百萬,吹技術(shù)是最無聊的事。
計劃在四五月用go迭代到第五個版本,解決加密和性能的問題,一天幾千萬,上億的蜘蛛量,php真的不行,之前想用swool的,看到他們團(tuán)隊的破事,就轉(zhuǎn)向了go,額外說一句,go語言真好用。
不過目前也沒有什么商業(yè)化的想法,所以就不要認(rèn)為我在割韭菜了。純粹是無聊,分享一下,吹吹牛逼。也不用找我引流,除非一個流量跳轉(zhuǎn)能貴過3毛錢。
C++適合本地程序的開發(fā).
Go語言適合網(wǎng)絡(luò)程序和本地程序的開發(fā).
相對于C++Go的優(yōu)點:
垃圾回收
語意明確
格式統(tǒng)一
缺點:
效率目前沒有C++高,但對于桌面程序而言,效率問題不大,因為硬件已經(jīng)很快了.
C++是目前的主流語言,相信會和C一樣成為經(jīng)典.
成為經(jīng)典的意思就是:學(xué)它的人能拿一份不錯的工資,但也僅僅是不錯而己.
將來的網(wǎng)絡(luò)的世界,Go發(fā)熱的機(jī)會很大,認(rèn)為其前途看好.
Go的開發(fā)者包括Unix的創(chuàng)始人和C語言的創(chuàng)始人等,都是一代黑客之首,相信會做得很好.