一、程式設計師思維-三思而後coding。
優秀的程式設計師都有點懶:他們坐下來並等待靈機一動的出現而不急於使用最開始的想法程式設計 。
相信大部分程式設計師都遇到過這種情況:寫了半天的程式發現一開始就想錯了,不得不無奈的推倒重來。我認為,無論多簡單的問題都會有很多種解決方案,我們要時刻提醒自己能不能寫的更好,能不能讓**跟簡練,更易讀,更具有擴充套件性,容錯性。有人說精煉和易讀、擴充套件性、容錯性是相互排斥的,其實不然。越精煉的**越易讀,因為你的邏輯清楚。越精煉的**擴充套件性越好,因為程式已經被打碎封裝,重用性擴充套件性會更好。精煉的程式容錯性能會更高。用最少的**,寫出最有效的程式,是我們每個程式設計師都應該追求的目標。而要達到這個目標首先要養成的就是三思而後 coding 。程式只有注入了我們思考後的靈機一動才會更美。
二、排序的作用
排序是電腦科學的最基礎的根基之一。我們學了這麼多種排序,選擇排序、氣泡排序、希爾排序、快速排序、歸併排序等等,排序到底能幹什麼呢?
1、實現我們排序的需求。這個功能最簡單明瞭。
2、排序可以實現分類。
比如男人女人純爺們要分類。我們可以用排序來實現。女人代表1,男人代表2,純爺們代表100。我們對這100個人排序,排序完,自然也完成了分類。
這個例子太簡單?來個複雜點的。請從字典裡找出所有的變位詞。什麼叫變位詞?比如one、neo、eno。思考下如何解決這問題。三思而後讀!
利用排序就可以實現對詞典中變位詞分類。比如有如下序列:one,two,three,owt,eerht,neo,wot。
1)為每個單詞做標註,也就是起個代號。起代號規則:將單詞字母從大到小排序(按字母公升序)如three->eehrt。
這樣序列就變成了:one->eno,two->otw,three->eehrt,owt->otw,eerht->eehrt,neo->eno,wot->otw.
2)按照標註(紅色)字母順序所有單詞排序。three->eehrt,eerht->eehrt,one->eno,neo->eno,two->otw,owt->otw,wot->otw
3)輸出:three,eerht
one,neo
two,owt,wot
分類成功。
3、排序是其他演算法的基礎。
比如二分查詢。二分查詢是電腦科學中用的非常多的一種思想。而排序確是其前提。
排序還有什麼其他作用?我們一起思考吧。
程式設計師的營銷思維
前言 大學本科讀的是理工科,從大學畢業後,走上了程式設計師的道路。每天開啟電腦第一件事就是敲寫 也就是網際網路流傳的專業術語 碼農 有大部分人把自己經營成了乙個ip 給自己貼乙個營銷標籤 別人知道你幹什麼,相互了解才會有更深入的合作。程式設計師只會埋頭寫 不會學會營銷自己,職業生涯越走越窄。給大部分...
程式設計師的思維方式
讀書不覺已春深,一寸光陰一寸金。不覺間實習已近四周,我想起這首詩,並非標榜自己學習,工作有多投入,而是感慨時間靜悄悄得溜過,只有當你回首時,才能覺察到它的存在且已過去。這幾周的工作主要都是修改公司專案的bug,通過修改bug,我思考了下網際網路人工作對自身思維的影響,這裡只粗 談產品經理,測試人員和...
程式的效能與程式設計師的思維
又有一段時間沒有寫blog了,這段時間在忙著做實驗,寫 一些perl的指令碼程式,mining一些資料,其實程式本身並沒有什麼,但是剛開始的時候沒有認識到,要處理的資料量很大,所以效能成為了程式的瓶頸.我的工作主要是parse乙個文字字串,將其中一些field 往資料庫裡面塞,如果是處理100條這樣...