昨天筆者寫了一篇帖子:html
有多個同窗共同提到一個問題,實現算法的過程當中,你的內存消耗太大,因此算法沒有任何意義。因此我單獨開一個帖子,對這個質疑進行解釋java
首先我本人軟件從業5年,學校裏面主修c和c++,畢業後前後接觸和使用的語言有c#,java,python,以及一系列的前端腳本語言(js、jq)等。不能說本身如今的能力有多麼強,可是基本能夠應付目前的開發任務。我我的資質平平,雖然喜歡研究技術,可是本身並非一個聰明人。python
說一下我本身對算法的理解:我認爲算法是一個實現目標的過程,追求的是時間成本,也就是計算步驟,對於你們提到的內存消耗,我認爲自己就不屬於算法討論的範疇。算法和編程語言是沒有任何關係的,說白了,代碼只是實現算法的工具。你用什麼工具去實現,全憑你我的。c++
固然,內存消耗也是必需要考慮的,可是我以爲不該該是咱們來考慮,或者說全局來看,這種消耗是值得的。我爲何這麼說,下面我給出個人幾條理由:程序員
1、代碼的閱讀成本以及理解成本直接對應着錯誤成本算法
相信你們有過這個感覺,一些優秀的代碼,本身卻很難讀懂,即便理解了,讓你本身獨立寫出來又會很難,或者過一段時間,你又忘了這段代碼的意思。這個狀況直接致使了你本身根本沒法使用這些優秀的代碼。爲何?由於從一開始你本身就沒有真正理解,就和咱們上學考試同樣,死記硬背以後立刻就忘。固然排除一些聰明的同窗理解力確實強,可是很遺憾,大多數人不是!這樣就會致使咱們出現大量的錯誤。編程
2、內存消耗是咱們要考慮的事情嗎?c#
這個問題的答案是確定的,每一個程序員都必須去考慮這個問題。我這裏要給你們補充說的另一點,這個實際上是一個尋找平衡點的事情。衆所衆知,除了彙編和c、c++,大多數語言是不須要咱們直接操做內存的,像java和c#都有專門的GC去處理這個事情。能夠這麼說,它們都在儘可能避免咱們去操做內存。實際上GC在通常狀況下是足夠優秀的。當咱們在糾結着內存消耗的時候,有沒有想過,這一部份內存消耗換來的是本身代碼流暢正確的運行,筆試的時候,輕鬆完成的快感。編程語言
3、最優的代碼留給小機靈鬼去作
再回到最開始的問題,算法是步驟和過程,咱們使用代碼去實現算法,小機靈鬼的實現方式確定要比咱們普通人更省資源,那麼優化代碼的事情就交給他們吧,事實上咱們在平時的工做中,也不須要你去實現這些算法,由於這些算法早就被完美的實現了。而咱們本身理解了算法,而且也能夠正確的實現算法,那麼至少咱們是一個懂原理,會使用工具的人。那麼你就是一個優秀的程序員。
文末:
其實你們說的都對,而後我只是向你們表達一下我對於編程的理解。