您好,登錄后才能下訂單哦!
你生命中的有些東西終究會失去,比如我住了6年的陳寨,這個聚集了鄭州十幾萬IT民工的地方,說拆就拆了。再比如我玩了3年的坦克英雄,這個帶給我太多快樂的游戲,說停就停了。
編程對我而言是種愛好,我上學6年,工作14年,期間學會了二十多種編程語言,新潮如go和swift,生冷如F#和lisp,我都學過,至于熱門的,編程語言排行榜上前14位的語言,我都會用。也許你覺得我是在吹牛,那就讓我從頭說起吧。
我上中學時開始學習編程,那時候沒見過什么電腦,看書上說電腦是由主機顯示器和硬盤驅動器組成的,我想當然地以為硬盤驅動器就是擺在電腦主機旁邊的,跟打印機一樣是個外設。那時候聯想的電腦廣告鋪天蓋地,然后對于偏遠農村的我來說,卻是永遠也不敢奢望的。我只有一臺小霸王學習機,接在一臺黑白電視上,在上面運行basic程序。
basic應該是很多人學編程的入門語言吧,畢竟那時候還沒有python. 那時候的basic,是用大寫字母編寫的,每行前面要加一個行號,程序是按行號執行的。每兩個行號之間要有間隔,不然在兩行中間插入代碼時就麻煩了。很原始吧?很多年后當我把這段經歷講給我的老師聽時,他說你知足吧,我們那時候是打紙帶的,打錯了就用膠水粘紙把一些孔給堵上,再用針扎出另一些孔來。
我那時候主要用basic解決一些數學問題,比如雞兔同籠,百錢買百雞等,還有就是求從1加到100的和。當時 PC上最流行軟件應該是wps吧?我沒見過,但我用學習機學會了五筆字型。學五筆時有次對我媽說話五筆比較難,我媽說那你先從簡單的學起,先學一筆二筆。從我學習到工作,我媽對我的支持一直是我最大的動力。我上大學的時候買了一臺二手電腦,那筆錢本來是家里準備購買彩電的,攢了好久,聽我說想買電腦,我媽二話沒說就把錢給我了。
買電腦時是我爸陪我去的,那時候鄭州的科技市場還很簡陋,兩層樓的大廳,一樓賣各種各樣的散件,二樓賣盜版軟件。因為我們只有2000元,店主很為難,最后搜羅了很多二手配件,才勉強給我裝了一臺電腦。所以我的第一臺電腦,CPU用的不是奔騰和賽揚,而是Cyrix 。Cyrix 這個名字可能很多人都沒有聽過,但我可以保證我沒有拼錯。電腦買回去之后我激動了好幾天,村里很多人前來參觀,因為那是我們全鄉第二臺電腦,第一臺在鄉政府。
我的第一臺電腦運行的是windows 95系統,后來被我換成了98。我用這臺電腦編寫VB程序,用的Foxpro數據庫,那時候聽到VisualStudio 6.0發布的消息激動不已,花10塊錢買了一張盤,視若珍寶。然后有一年暑假,我編寫了一個簡易的進銷存程序,賣給我們鄉里的一個商店,賺了200元。
在學校里,當然要學c和c++了,這兩門語言我都學得很精通。但我說句老實話,我從業十幾年從來沒有用到過。那時候的編程界不光有VB,其時PoweBuilder已經開始沒落,而Dephi風頭正勁,剛好學校機房有Dephi,于是也學了一下。
互聯網的風潮突然一下子吹遍了神州大地,那年暑假,我們縣電信局建了第一個網絡演示廳,試營業期間免費對公眾開放。名字起得高大上,其實就是個網吧。那時鄭州的網吧大概6塊錢一小時,所以那個暑假我基本都泡在那個演示廳里。那時候QQ還不叫QQ,叫OICQ,商都網也不叫商都網,叫商都信息港。那個時候網絡上沒有太多的應用,基本上就聊天室和BBS在那里橫行。我去得最多的就是澄心和碧海銀沙。(說到這里插播一條尋人啟事,有誰認識當年澄心聊天室的快樂小天使,就是商丘師院的丁今,請聯系我,定酬謝500元QQ幣。)然而當我滿心歡喜地打算自己編寫一個聊天室時,才發現我學的知識連一個最簡單的留言板都做不出來。那時候asp,jsp,php之類網絡編程已經大行其道,而我們在象牙塔內竟然渾然不覺。
思忖再三,決定報名參加一個java工程師的培訓班,那時候國內比較牛的java培訓機構一個是ACCP,另一個是NIIT。因為ACCP時間長費用高,所以果斷報了NIIT。三個月的培訓,其辛苦無人能知,經常為了調試一個程序,到凌晨才能入睡。然而功夫不負有心人,學完之后,應聘到鄭州一家軟件公司,開始了我的java生涯。
我們那個公司當時做的是移動的外包,公司里遇到的都是一些奇葩的人物。比如說我們技術總監刑工,一個五大三粗的漢子,偏偏留了一頭大波浪的長卷發。再比如我們項目組長秦工,一個文弱的小女孩,偏偏領導了幾個大男人,這個公司徹底顛覆了我對軟件公司的認知。
開始工作的時候并不順利,我雖然學了jsp,但在公司已經開始使用structs和hibernate,我完全不懂,還有什么dwr,也是一無所知。數據庫的知識也非常欠缺,當時不會用join,為了把一個用戶Id轉成用戶名,竟然在循環里查詢數據庫。好在前輩們都能及時指出這種問題,我也很快就能改正。
我那段時間在鄭州呆了五年,從一個程序員成長為比較資深的java工程師。平時在公司工作,周末就去逛各種公園。碧沙崗,紫荊山,人民公園都留下了我的足跡。如果你靜下心來看,鄭州真是一個美麗的城市。不過有些時候我也會感覺很不爽,那時我住在燕莊,旁邊就是省高級法院。法院周邊的幾條街上,經常會有一些含冤受屈的人們,帶著簡易的鋪蓋,露宿在街道兩帝的地面上。他們的食物,基本上就是冷饅頭。我有時候會給他們送些饅頭和咸菜,也認識了幾個上訪了幾十年的冤民。好吧,這咕嚕掐了別播,冤不冤的其實也輪不到我來說。
俗話說飽暖思×××,工作穩定之后,就開始為自己的對象操心。當時我注冊了一個中國交友中心,這家網站剛開始是免費的,后來收費每月10元。如果我不告訴你們,恐怕很少人知道它就是現在珍愛網的前身。然而在網上畢竟沒有太多收獲,有些是見一面就沒有下文,有些根本就見不到人。記得有一次我約了人見面,去的時候突然下雨了,我捧著鮮花在雨中等了兩個小時,姑娘卻沒有去,打電話也關機。第二天發個短信說她看天下雨了,以為我不會去所以也沒去。
所謂踏破鐵鞋無覓處,得來全不費功夫。有些你苦苦追尋的東西并不一定能得到,而有些你未曾想過的事情卻很容易就實現了。那年春節我去我姑家探親,恰逢她鄰居家的一個姑娘來串門。隨便問了一下,竟然是陜師大中文系的畢業生,在我們縣的另一個鄉的中學當教師。好吧省去中間細節,在我姑的撮合下,我們正式定親。
都說程序員是高薪職業,他們說的沒錯但是寫錯了。中間那個辛是辛苦的辛,不是薪水的薪。程序員的工作高度辛苦,但薪資并不高。至少我是這么認為的,工作幾年,存款居然不夠付丈母娘的財禮。雖然丈母娘通情達理地減少了彩禮的金額,我媽又多少借了點外債把婚事促成了,但這件事情對我打擊卻很大。于是決定離開鄭州,去上海謀一份高薪的職業。中國的地域差別在太大,同樣的工作在不同的地方薪資完全不同,去上海的話工資至少可以翻一倍,我拮據的生活可能會因此有所緩解。
為了去上海的時候能夠多一份保障,我開始學習.net。相對于java而言,.net是個后起之秀,雖然功能不如java強大,但是操作相當簡單。我在沒有任何老師,沒有任何教材的情況下,就把.net學會了。總共也只花10塊錢買兩張盤,一張VS2005的安裝盤,一張MSDN的文檔盤。學習的過程也相當簡單,就是照著msdn上的示例做一個購物網站。不這我到現在還不明白為什么那個例程要叫duwamish,字典上都查不到這個詞,完全不知道什么意思。
在上海找工作用的是前程無憂的網站,我java和.net的職位都投了,最先被錄用的卻是.net.于是我編程生涯就此轉折,從java一下子轉到.net.錄用我的是一家做遠程教育的公司,老板是從美國回來創業的信息工程博士,據說之前是戴爾的核心工程師,技術牛得不得了。我被任命為技術部的經理,雖說是經理,不過屬下也只有兩個人,一個做C++的錄制工具,一個做flash的播放器,我做.net的網站。
我剛去上海的時候,住在一個群租房里,一套三室兩廳的房子,客廳被改成兩間臥室,五間臥室總共住了男男女女18個人,生活極其不便。每個人的領地也就是自己那一張床板。上海的夏天潮濕悶熱,想洗個澡都要等好久,早上起來上廁所也是要等好久的,18個人哪。后來媳婦聽說我找到了工作,也把工作辭了來到上海。這樣群租房是不能住了,于是就在張江和川沙的交界處租了一間房子。卻不曾想上海的房租是付三押一的,付了房租之后,帶的錢便所剩無幾了。
房子是毛坯房,里面什么都沒有,而我們卻沒有錢買家具。于是從附近的垃圾場里找了一張床板,又找了6個油漆桶,把油漆桶裝滿水當床腿,支起了一張床。然后又找了一張舊椅子,在上面放電磁爐做飯。床板只有80厘米,兩個人平躺根本不夠,只能兩個人抱著側臥。為了省點午飯錢,媳婦都是做好了飯給我送到公司,然后我們就在公司樓下的小公園里,兩個人吃同一份飯。
當時的公司離張江公園很近,其實張江公園原來的名字叫櫻花廣場,每到四五月份,公園里就會開滿絢麗的櫻花。在櫻花樹下走過,有一種身在異國他鄉的感覺。
我在上海工作一年多,然后公司就被北京的一家公司收購了,然后我又輾轉來到了北京。當時住在回龍觀和霍營交界的地方,然后公司卻是在昌平。每天早上6點鐘就要起床,乘公交到龍澤,然后坐公司班車,走八達嶺高速去上班。也就是在那個時候,我學會了在車上睡覺,不管站著坐著都能睡著。
新公司主要做電子政務,用的.net+oracle,雖然我.net代碼寫的不怎么樣,但畢竟項目經驗還在,然后就在幾個項目上擔任項目經理。雖說是項目經理,但我們經常一個項目組就有十四五個人,跟我帶3個人的團隊是完全不同的。為了彌補短板,我報考了項目管理師,也就是高級項目經理的考試。雖然沒有考過,但備考的過程中系統地學習了項目管理的知識。
在北京的日子苦中有甜,我們一有空閑就去游覽各種×××園林,清華園,燕園,園明圓,頤和園等等。有一次我們去十三陵水庫游玩,恰好碰上當地蘋果節的萬人長走活動。然后在陡峭的山路上,我看到人群中有一個老人,坐在輪椅上,由他的老伴推著走。然后我就被感動了,腿不好的人都能參加長走比賽,我們還有什么理由不努力呢?
在北京工作一年多,公司在鄭州成立辦事處,我又被調回鄭州。沒過多久,有一家做電子商務的新公司成立,聘請我去當技術總監,公司的產品是基于php的開源軟件修改出來的,于是我又轉向php領域。這次轉php沒花多長時間,前后大概用了一個多星期,熟悉了php的語法后就開始進入工作了。 用php做電子商務類網站的話,比java和.net的快得多,而且網上有大量開源的 產品可以使用,用得不順了,就隨手改一下,從此見識到了開源的魅力。
后來公司的的產品做出來了,我有了一些空余時間,于是開始學習ruby和python,ruby和python是動態語言,所謂動態就是可以在運行期間改變語言的屬性,比如在運行期間給類增加屬性或者方法等,這些在java和C#中是做不到的,類的屬性和方法必須在開發期間定義出來,運行期間不能改變。用動態語言編程的話,效率要高很多,因為實現同樣的功能,動態語言的代碼會少很多。自從學會了ruby和python之后,我基本上就沒再用過java和C#了、ruby配合rails可以快速創建網站,而python做為通用腳本語言可以做任何事情 ,比如我在升級了程序后用它來遷移數據。
后來移動端漸熱,又學習android和IOS以及WP,當時我集齊了三種操作系統的手機:小米、iphone和諾基亞的lumia,經常看到網上果粉和米粉互罵,我笑而不語。當時做IOS開發,用的還是晦澀難懂的obj-c,obj-c是一個非常反常規的開發語言,它的語法和其它語言都不一樣,看著別扭,寫著也別扭。當然,蘋果肯定也知道這一點,于是推出了swift,當我接觸到swift的時候,我覺得obj-c可以扔掉了,它的語法跟ruby和python一樣簡潔,而且功能比obj-c還要強大。
說到這里,不得不提一下那個老舊的C語言了,C語言誕生于上個世紀中期,已經是老舊不堪了,但是因為在系統程序領域沒有有效的替代者,所以在開發系統級軟件比如驅動程序時,還非得用它不可。當然,谷歌也知道這一點,于是推出了go.當我見到go的時候,簡直震驚了。它的語法比java和C#還要優美,但是卻可以開發系統軟件,是C語言當之無愧對的替代者。而且go語言誕生在多核時代,所以它一開始就支持高并行開發,它的最小運行單位不是線程,是協程!
說到協程,不得不提一下erlang語言了,erlang是一門歷史很悠久的語言,但直到多核時代才發揮出它的威力,在go出現之前,erlang是做高并發軟件的首選。因為erlang是一門函數式語言,它沒有變量,所以也就不存在多線和操作共享變量的問題。而且它的最小計算單位是協程,不是線程。這一點至關重要,因為一臺普通的PC機可以開出最多5000個線程,卻能開出多達10萬個協程!然而erlang畢竟是一門函數式的語言,它的語法和命令式的語言完全不同。沒有變量,沒有循環,沒有賦值語句,你在命令式語言中所獲得的所有編程經驗對它都不起作用。用erlang寫程序,你不再是向計算機下達命令,而是在構造數學上的函數,進行模式匹配。
我用erlang編寫過一些程序,苦不堪言,好在此時go語言出現了!命令式的語言,最小計算單位是協程,那我還要erlang有什么用?
到后來我開始對編程語言產生了愛好,只要是我不會的語言,我都會抽空去學,哪怕學了完全沒有什么用。這就是愛好,源自內心,沒有任何功利驅使,這才是學好語言的根本。
在學習中,也遇到了很多困惑和迷茫。為了學習swift,我曾經花了一個星期的時間試圖在我的華碩F5上面安裝mac系統。折騰了N多遍,最后無果而終,不得已花錢買了一臺蘋果電腦。學習ruby的時候,還不知道用bundle, rails所需要的幾十個gem我是一個一個下載安裝的。學習Go語言的時候,想當然地以為那個gopath和其它語言的path一樣,指向類庫所在的位置,結果花了一個星期也沒有運行起一個helloworld程序。
當然,最令我痛心的,是市場上并沒有針對初學者的編程工具,那些專業級的開發工具都太復雜,有的需要下載安裝插件,經常是插件版本和IDE版本不配,失敗多次讓人欲哭無淚;有的需要配置環境變量,各種path各種root讓人如墜云霧。還有的體積龐大,為了運行一個示例程序要下幾個G的開發工具。更有甚者,不能在windows系統上運行,為了學習一門編程語言,需要另外買個電腦!
痛心之余,我忽然發現了一個事實,那就是:我是一個程序員!IT民工也好,碼農也罷(當然我更喜歡稱自己為IT流浪人),這些都不能掩蓋我是程序員的事實!程序員要使用開發工具,當然也可以制作開發工具!于是我萌生了一個想法,要開發出一套針對初學者的編程工具,這個工具可以使用各種開發語言,一次安裝即可運行,無須下載插件和SDK,無須設置環境變量,內置很多初學者需要的示例程序,這樣不是很好嗎?
既然心意已決,那就讓我從現在開始吧,首先要給自己的作品起個名字,就叫流浪人IDE吧。英文名Outcast IDE,高端大氣不用上檔次 。第一版打算支持java、C# 、php、ruby、 python、 go 、siwft、 erlang 八種開發語言,后期再加入其它語言的支持。如果有人也有興趣開發類似的編程工具,可以聯系我,我們一起合作,為中國的軟件產業貢獻一份力量。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。