寫代碼20多年的工程師, 能夠回答嗎?前端
0: 小學時期程序員
設備:紅白遊戲機 Laser-310面試
語言:BASIC語言算法
## 在紅白機上寫BASIC ##數據庫
我最先的編程是在紅白遊戲機上, 我可不是寫FC遊戲,我沒那麼老:) 。 那是小學的時候買了一臺紅白遊戲機,機電部46所研製的, 能夠配一個鍵盤,就能夠當電腦用了。編程
不記得了那時花了多少時間在這個玩具上, 主要是用BASIC寫各類小程序。那時這個東西沒有磁盤驅動器, 須要用錄音機把程序錄下來, (沒錯,就是磁帶錄音機)。 下次開機就能夠用磁帶Load回來:)小程序
能記得當時寫的程序有:vim
通信錄, 輸入姓名縮寫, 查找電話號碼。 把老爸的通信錄所有輸入進去了。後端
隨機產生音符,起名爲胡編之歌服務器
用ascii字符打印動畫, 比用_ - ^ 等字符打印出快速移動的蟲子等等……
當時個人輔導書就是從圖書館借來的譚浩強的《Basic語言結構化編程》。
## Laser-310 ##
還要提的是小學學校裏有計算機課,用的是Laser-310. (知乎上有問答說這個:LASER310 是什麼設備? - 科技)
計算機課上了幾回課以後就停課了,不過我仍是常常找老師要鑰匙去玩。 Laser-310上主要就是Basic語言, 其餘同窗都不喜歡玩, 都圍着旁邊的那臺中華學習機,由於能夠打遊戲(挖金子)。
1:中學時期
設備:PC/AT 、286
語言:DBASE3FoxBASE+
## 幫老爸fix bug ##
中學時期, 常常去老爸單位玩電腦, 那時操做系統都是DOS, 辦公軟件是WPS、CCED (能夠理解爲DOS上的國產EXCEL),這些不是寫代碼暫且不提。
那時的數據庫軟件主要是DBASE3,後來升級到FoxBASE+. 都是交互式的數據庫管理軟件, 和後來的微軟的ACCESS相似, 它不僅是數據庫,還包含了交互界面的設計,報表的展現等功能。
寫代碼的過程主要仍是學習、繼續用FoxBASE+完善個人通信錄程序(爲何想不出作別的好玩的……)。 值得一提的是, 老爸單位打印報表程序出了bug了,打印打錯了, 是我幫着修好的。
2:大學時期
設備: 奔騰處理器 PC
語言: C語言/C++語言/HTML/XML/VRML
## 一個繪圖程序帶來的慘案 ##
97年上了大學宿舍6我的合買了一臺電腦,CPU:奔騰 mmx 166Mhz, 內存:16M, 硬盤:2.1G。當時6我的一塊兒去攢電腦,花了7000。 打車運回來的時候,和司機師傅說,「師傅慢些開, 咱們買了電腦,別顛壞了" … 囧
6我的平均分配上機時間, 一人一天。 寫了一個簡單的VisualBasic程序,天天彈出來應該由誰來上機。
大學上來學的是C語言,用Turbo C:
一天,我剛剛用C寫了很酷一個圖形程序,興沖沖的跑回宿舍,和同窗說, "來, 我給你演示一下個人程序", 說着把3.5寸盤插入電腦, 運行~~。 同窗們都擠過來看,而後,就沒而後了, 屏幕黑掉了, 機器沒法起動了。 拿到維修處被告知顯卡燒了(到如今我還不明白爲啥個人程序會燒掉顯卡)。帶來的後果很嚴重的。 維修電腦花了一個星期, 爲此我要償還因我而影響的其餘同窗的上機時間。 以後的一個月,我都沒能用宿舍的電腦 :(
## BBS用戶跟蹤系統 ##
從大二開始,結識了 GNU/Linux, 開始使用 GCC 編譯C代碼, 開始用VI寫代碼。 沒想到17年後,我依然在使用這些偉大的工具。
依然記得第一次打開VI, 徹底不知道怎麼退出。 只能用 CTRL+Z 退到後臺,而後再 kill 掉。
那時候學校裏開始流行BBS, 宿舍尚未通網絡, 上BBS須要到圖書館機房。那時候上BBS使用TELNET協議的,如今的新水木也仍是支持TELNET協議的。
上BBS能夠發文章, 閱讀文章,最重要的是能夠找人灌水聊天 :P. 我猜各位應該沒用過BBS的聊天室功能, 也不知道//bearhug, //puke 是什麼意思。
那時候很喜歡和一個同校的網友mm聊天, 不過由於上機時間不一樣, 老是碰不到她上BBS. 我就用C寫了一個robot程序,登錄bbs, 每分鐘查詢一下她的在線狀態。 若是她上線了,就把她的IP地址發到個人摩托羅拉BP機上。 固然她下線了,也要發個消息到BB機,省得我跑到圖書館她已經離開了。
a) 爲何要發IP地址?這樣的話,我能看出來她從哪裏上網,圖書館仍是計算中心, 這樣我就能夠偶遇她了:P
b) 爲何要發到BP機,不用手機短信嗎? 那時候沒有手機 :( 不僅是我沒有, 你們都沒有。有模擬信號的大哥大,買不起啊。 BP機是最方便的通訊工具了。
c) 爲何用C寫, 不用其它腳本語言? 首先那時候C語言我最熟,其次Python尚未流行呢,Python 2.0 是2000年才發佈的。 Perl語言那時仍是比較流行的, 惋惜那時沒花時間好好學。
d) 程序跑在哪一個機器上? 宿舍的機器不能上網的, 確定不行。 答案是數學學院的一個老師,特別好,組織了一個Linux俱樂部, 咱們有一臺共享的Linux主機,能夠telnet上去寫程序。
e) 程序怎麼發到BB機上呢? 這個問題問得好, 當時各地的電話局(那時還不叫聯通移動)會在本身的網站上提供給BB機發信息的功能, 我只是找到一些好用的發了一些HTTP請求而已。
故事尚未完, 我寫了那個跟蹤程序其實不僅是跟蹤一我的呢, 其實站上的全部人都跟蹤了,數據都保存下來了。 我當時想別隻我本身一我的用啊, 就寫了一個網頁服務, 全部人均可以查看任何人的上BBS的時間,能夠看到柱狀圖表,總結網友的上BBS的規律。
BBS站長看到我這個服務挺受歡迎的, 就聯繫我說, 你別用robot爬去bbs的數據了,直接把功能加到BBS系統裏吧。 我很開心, 找了個晚上,去了計算中心BBS站長的辦公室, 當着他的面把程序改好了。 轉天早上,發現大事很差了, 全部登陸過BBS用戶的ID都變成大寫字母了, 都是由於個人程序的BUG - 爲了比較字符串, 我把一個全局的用戶ID變量改成了大寫字母。 還好站長機智,及時的找到了備份恢復了數據。
* 2015年9月6日凌晨更新 *
感謝各位朋友的支持, 我會堅持寫下去。回答幾個朋友的問題吧:
有沒有禿頂? 個人頭髮漸少了,可是還不禿頂。基因問題吧, 我有幾個同窗已經禿頂了,感受比我老10歲……
如今在作啥? 我加入了一家創業公司,作Android相關。如今還在寫代碼, 寫Java、C/C++、Python, 以前沒有前端工程師的時候,也寫了PHP/Javascript/CSS.
網友mm後來怎麼樣了? 發現你們都挺喜歡八卦的嘛。 後來和mm相處很好啊,也會常常見面聊天,一塊兒去肯德基吃冰激凌,很開心的一段時光。是很好的朋友, 最後並無走到一塊兒。
從小編程家裏有人引嗎? 並無, 爸媽都是工人沒有計算機基礎。純粹是由於我喜歡打電子遊戲,進而想了解電子遊戲的原理。 那時候並無不少能夠玩的東西,能夠編程的遊戲機讓我鼓搗了整個暑假。
是數學系的嗎? 恩,本科是數學系的,研究生讀了計算機。
## 「不喜歡」 ##
看來你們都挺喜歡聊八卦的, 我再多寫一些。 不過我會注意圍繞原問題「寫代碼的體驗」。
回來講大一的事兒, 剛剛上大學, 我開始追高中時暗戀的一個女生,打電話、送禮物不提了。打印排版了喜歡的網絡小說《第一次的親密接觸》給她, 學習Photoshop, PS了照片作成卡片寄給她, 這些也不提了,和寫代碼不要緊。
大一暑假的時候, 我把宿舍的電腦搬回了家,用VB寫了個小程序。 邀請女生來家裏玩, 讓她試一下寫的程序。一開始是一些酷炫的動畫, 而後是一些智力選擇題, 最後一道題是「順便問下, 我喜歡你, 你喜歡我嗎?」 下面兩個按鈕, 「喜歡」, 「不喜歡」。 女生看到這裏, 停了一下,而後去點「不喜歡」, 鼠標剛剛挪過去, 那個按鈕就跑開了, 她試了幾回都追不上。 這時我在想, 「放棄吧, 點另一個按鈕吧」。 沒想到她說,「我不想選了,我要走了」。
這件事情教育我, 「作軟件的時候, 不要強迫用戶接受你的設計」。
## 刷榜 ##
從大二開始,一些門戶網站開始多了起來, 網上用戶也多了起來。 有一個門戶網站推出了在線交友網站,就是一個很是粗糙的facebook吧, 能夠上傳照片, 寫簡介。每一個用戶的profile頁面都有一個訪問計數器。 首頁默認按照訪問計數器排名。
那時的網站很基礎的, 沒有CAPTCHA的, 刷榜很簡單的。 我寫了一個C程序, 把本身刷成了第一名, 我又給本身傳了張布拉德皮特的照片, 引來了不少女網友的搭訕。 我舍友看到了,問我你怎麼搞的,幫我也刷下。結果排行榜前幾名都是咱們宿舍的。我不會告訴大家的, 我真的見了一個女網友,她是外語學院的,她告訴我她們外院男生太少了。
## 作中國的HOTMAIL ##
在我大三的時候, 正值dot com創業火爆。 有一對海歸夫婦回國來創業,聽說他們是學校老師的子女。 他們經過關係找到了學院的老師,求推薦一些學生幫忙。 老師就推薦了咱們Linux俱樂部的4個小夥伴。
(值得一提的是, 老闆以前在美國一家公司打工, 有另外兩個同事和他同樣回國創業, 其中一個是藝龍,另外一個是億唐。)
第一次見到老闆和老闆娘, 他們和咱們講,「咱們要作中國的Hotmail!」 聽完咱們振奮了,決定加入。 四我的根據BBS ID的首字母,還自取名爲BRAD小組。
CTO是從美國回來的, 我當時很崇拜他(如今也很崇拜)。 他是清華沒讀完就去美國讀書了, 在美國時搭建了http://bbs.mit.edu。他設計了整個Webmail系統的架構。
說到架構,能夠提一下,不感興趣的能夠跳過這一段。FreeBSD系統,前端用C寫FastCGI + Apache, 後端用C寫RPC server, 存儲用文件系統。 選擇FreeBSD由於當時Linux的性能還不太強, 選擇C開發,由於性能好, 省服務器就是省錢。 用C開發Web Mail, 如今看來是否是難以相信? 在當時的硬件性能可不比如今, 價格還高的很。
因此當時就面對一個很難的問題:C語言很容易內存搞錯而崩潰, 並且FastCGI會要求服務進程一直保持運行, 這對代碼的可靠性和穩定性要求都很高,由於一旦出錯, 整個服務就會掛掉。
他當時向咱們極力推薦Emacs,我如今少數的Emacs知識就是他教的。 惋惜我看到他輸入Emacs命令時雞爪狀的手,決定仍是堅持vim陣營。
還有一個我印象最深的,這個和寫代碼無關。 他特別喜歡在你們吃飯的時候講噁心笑話,以致於一段時間內,我都學壞了, 處處講噁心笑話。 感興趣的話,能夠百度下「咬不斷 笑話」,就知道他講的多噁心了。
還在上課的時候, 咱們就天天中午下課後,在團委活動室集合,叫上西南村的外賣,必定要點一份「鍋塌裏脊」, 一邊吃飯,一邊討論開發的細節, 下午沒有課的話,就一下午都在寫代碼。由於寫代碼, 我逃了幾回政治課,很不幸被點名了, 成爲了我大學期間惟一一門掛了的課。
放寒假的時候,4個小夥伴都沒有回家,就10點多起來,直接打車到公司, 寫代碼寫到晚上12點。打車回學校睡覺。
至今我能夠徒手敲telnet命令到smtp服務器或者pop3服務器,發送和接收郵件, 郵件協議記得太深了。
我還記的我當時藏了一個彩蛋在代碼中,郵件中搜索某些特殊字符,就會出現員工名單。後來被新來的一個哥們給移除了。
就這樣,4個大三的學生加上一個大四的師兄, 半年內服務上線, 4臺服務器支持用戶30w。
回想起來,那時的咱們雖然仍是學生,算是實習生, 但作的事情徹底和如今創業作的是同樣的,甚至更加純粹, 以爲在作有趣的事情就夠了, 錢多錢少的不要緊,更沒有想過什麼股票期權。
這個公司後來怎麼樣了? 2000年的時候,互聯網泡沫破碎了。這家公司很快轉型, 作企業和校園郵件服務。我最近驚奇的發現,這家公司還存在呢。
* 2015年9月11日晚更新 *
## 黑客和假鈔的故事 ##
大四第二學期, 那時剛剛考完研,一個和我很熟的老師找到我,讓我幫他作個東西。
先說說這個老師, 這個老師在我心中就是那種真正的黑客, 記得大一剛剛買來Modem,幾我的都搞不定撥號上網, 咱們找來這個老師幫咱們看看, 只見他在鍵盤上運指如飛,啪啪啪啪幾下, Windows超級終端中快速閃過一些文字以後, 他已經已經連上了學校BBS,看了下十大熱門, 檢查了幾封郵件,回覆其中一封,最後退出了,並斷開了鏈接。和咱們說道, 「大家的貓沒有問題」。 這一切大概花了1分鐘, 其間沒碰過一下鼠標。 其實當時我並無 看明白他在幹什麼, 這只是過後我有了經驗以後才理解到的。 那時這個老師長長的頭髮,不修邊幅的樣子, 就更符合心目中黑客的形象。
後來咱們上了他講的課, 講的是數學軟件Mathematica, 他講的並很差,不少同窗表示聽不明白。 但我能看出來,他懂得不少, 只是不能講出來,或者不屑講出來。 有一次他給你們留上機做業題, 我當時用了一個很特別的思路,很快作出那道題,給他留下了印象。
時間回到大四第二學期, 我去他在校外的一個辦公室找到他, 他換了我的似的, 穿着西服皮鞋, 頭髮也柔順飄柔起來。 老師和我寒暄了幾句以後,就從抽屜中拿出兩疊百元大鈔, 我眼睛一亮。
結果老師對我說:
「這錢不是給你花的, 是測試用的。我要請你作的是僞鈔識別算法設計。 這個算法會用到自動售貨機中的。 這裏還有一個傳感器,能夠掃描鈔票獲得兩個信號:一個是光信號, 一個是磁信號。你要經過這兩組數字信號判斷這個鈔票是真鈔仍是假鈔。」
「左邊這一疊是真鈔,你拿去花了也無妨。 右邊這一疊可千萬不能花掉或者丟掉!這個是多少錢都買不來的假鈔, 公安局已經登記過了,必定要還回來。 」
這個問題很是有趣, 我很容易找到了班上的另一個數學大牛幫忙。 後面的兩個星期裏,咱們把學到的各類算法都用上了,什麼神經網絡、隨機過程、遺傳算法。
惋惜後來我由於我的的緣由要去北京,無法繼續研究了, 留下個人同窗孤軍奮戰。 他在兩個月後給出了一個相對不錯的解決方案。 不過不清楚最後有沒有應用到自動售貨機上。
## TCP/IP ##
講過笑話吧, 大學快畢業前,開始找工做了。 一個同窗去面試,人家問他, 「TCP/IP知道嗎?」。 這個同窗答道:「TC用過, PIP沒用過」。
全能程序員交流QQ羣290551701,羣內程序員都是來自,百度、阿里、京東、小米、去哪兒、餓了嗎、藍港等高級程序員 ,擁有豐富的經驗。加入咱們,直線溝通技術大牛,最佳的學習環境,瞭解業內的一手的資訊。若是你想結實大牛,那 就加入進來,讓大牛帶你超神!