哎!差勁的程式設計師操心代碼

2020-12-16 鬼先生講技術

寫程序 18 年,讓我認識到沒有算法的軟體就像沒有靈魂的人,不值得研究,算法的應用更令人「上癮」。

本文從我的經歷出發,談談算法對程式設計師的意義。在我看來,解決各種算法問題的過程非常有成就感。和現在許多人的觀點一樣,那時我對算法的理解就是刷題,感覺對工作中編寫應用程式沒什麼用處,但當我在工作中接觸到應用軟體開發時,讓我徹底扭轉了對算法的看法。

也正是這十幾年的編程經歷,讓我理解到了算法的意義,這些各種各樣的算法,有的是原理很牛,有的是實現技巧很牛,算法就是把一個看似很難的概念,用精巧的代碼展現出來。

很多軟體團隊中的技術大牛,他們的共同特點就是抽象和邏輯思維能力很突出,這兩點也是程式設計師最重要的能力。而學習算法的意義就在於提高自己的抽象能力和邏輯思維能力,不僅對於具體的算法問題,對於想成為軟體架構師的同學來說,也是不可或缺的能力,這兩個能力提高了,將終生受益,我對此深有體會!

學習算法有很多種方法,可以根據問題的類型採取不同的方法。我本人將算法大致分為三類:

01 已知的,有成熟高效實現方法的算法

對於這類算法問題,除非你是這個領域的從業人員,或者想成為這方面的專家,否則不需要精通。你只要知道這些算法都適用於解決什麼問題,工作中遇到不至於束手無策。比如你在工作中遇到一些資源分配問題時,如果你知道匈牙利算法之類的匹配算法,你就可以想是否能把問題轉化為二分圖的匹配算法試試?它會給你一個解決問題的新方向。

02一些只有理論,沒有固定實現方法的算法

對於這類算法需要根據算法的原理,根據基因的模型,調整算法實現,才能得到對具體問題的遺傳算法。所以,這類算法的學習重點是掌握算法的原理,培養自己抽象分析問題並建立數據模型的能力,結合問題的數據模型,將算法原理翻譯成算法的代碼實現。

03工作中遇到的各種實際問題,或者算法競賽中的題目

這些問題可能沒有通用答案,每個都要你獨立應對解決。對這類算法問題,你需要掌握構造算法常用的模式,比如貪婪法、窮舉法、分治法等,還需要大量的算法實現方面的技巧,比如子問題分解、簡單數據結構(數組、鍊表、哈希表等)的應用。

當然,更重要的,就是對問題抽象建模的能力,比如將文字信息數位化、轉化為數據模型的能力、選擇合適的數據結構實現數據模型的能力等。

對於後兩類算法,要想活學活用,需要一定的抽象建模能力和經驗,這些都不是一朝一夕能解決的,需要多看、多練,在練習中積累經驗,提升能力。

相關焦點

  • 離職程式設計師交接工作被同事懟:每一行代碼都講清楚,不然投訴
    這位網友稱自己是一名程式設計師,前段時間在提出了離職之後,與同事進行工作交接,自己已經將之前所有的設計文檔全都交給了同事,還表示他可以先看代碼,如果看不懂的話隨時可以來找自己。
  • 程式設計師的代碼行數越少越好?
    代碼行數越少越好?讀懂別人的代碼很困難?如何編寫出「完美」的代碼?每天要堅持8小時編程?......拜託,這些編程誤區程式設計師應該儘早知道!很長一段時間裡,我一直以為自己不善於閱讀別人的代碼。隨著時間的流逝,我意識到幾乎每個程式設計師每天都在為閱讀別人的代碼而苦惱。閱讀別人的代碼就像學一門外語。即使你很熟悉某種語言,但仍然需要使用別人的不同風格以及體系結構。而且我們一般都會假設寫代碼的人貫徹了一致性和可靠性,但有時並非如此,這確實是一個很難克服的問題。但是我發現了很多有幫助性的技巧。
  • 對程式設計師來說最難的是寫代碼嗎?
    相信看到這個標題的同學們都有自己的想法,可能剛剛進入這個行業的同學們會非常認同寫代碼就是程式設計師的主要工作,然而當你工作一定時間之後,寫代碼將變得不是那麼「重要」了,在悟空問答中眾位大咖為這個問題提供了多種多樣的答案:    答案一:寫代碼是程式設計師最主要工作,但是卻不是最難的工作,最難的是踢皮球和吵架!
  • 1024程式設計師節,向用代碼改變世界的程式設計師致敬!
    在計算機的二進位世界裡,1024是一個有特殊意義的數字,而程式設計師們就像是這一個個1024,以最低調、踏實、核心的功能模板一點點地搭建起網際網路世界。1G=1024M,而1G與1級諧音,也有一級棒的意思。程式設計師,一群用鍵盤改變世界的人,加班、熬夜、996對他們來說都是常態,格子衫是他們的時尚裝扮,代碼表白是他們能想到最浪漫的事。
  • 程式設計師是幹嘛嘀,你是要計算機還是要女朋友?
    某某妹子:哎大佬,程式設計師具體是幹什麼的啊?某碼農:嗯,首先,你知道計算機嗎,計算機是由。。。。balabala,然後二進位,我們開發用高級語言。balabala。。某某妹子:哦。。(心裡:呵呵)所以我們應該換種方式說,哎,你看你手機上的這些軟體,你看網上淘寶這些,你看你平時電腦上用的,這都是我們程式設計師做的哦。然後瞬間,妹子崇拜有木有,那我以後電腦出問題了,你幫我修下電腦哈。一問,程式設計師是幹嘛滴啊,幾乎很多人都想到,敲代碼滴。
  • 嫁給程式設計師有什麼好處?程式設計師新郎接親,被要求現場寫代碼告白
    很多人一談到程式設計師,是不是都覺得他們搞開發的,一定是非常聰明,鐵飯碗,工資很高,是不是都覺得程式設計師棒棒的,好崇拜,好羨慕,如果談到結婚,你會選擇嫁給程式設計師嗎?近日程式設計師新郎接親,被要求現場寫代碼告白,你知道嫁給程式設計師有什麼好處嗎?
  • 為啥國內程式設計師寫的代碼也用英文注釋?
    國內的一些程式設計師寫代碼用英文進行注釋,我覺得是他們編程之路上的一大重要進步。中國編程技術現在需要與國際接軌,而且國內很多程式設計師也喜歡更多了解程式語言的開原始碼,使用英文注釋會讓國內程式設計師在全球技術社區中形成廣泛共識和合作,從而使國內程式設計師能夠實現快速成長。
  • 在《程式設計師升職記》中體驗「代碼人生」
    但是,在高額的收入與「代碼人生」的誘惑下,依然有很多人前僕後繼地選擇加入這個行當。這正是程序開發中的「單步調試」,日常負責開發的程式設計師們應該對這個詞彙並不陌生~這個設計不僅僅是為了鍛鍊玩家的邏輯能力,更是因為在現實生活中,無數的程式設計師也在為減少代碼冗餘、提升響應速度日以繼夜的優化代碼,為了用戶體驗作出極大的努力。
  • 黑馬程式設計師:Java代碼的基本格式
    類需要使用class關鍵字定義,在class前面可以有一些修飾符,格式如下:修飾符class類名{程序代碼}在編寫Java代碼時,需要特別注意幾個關鍵:1.Java中的程序代碼可分為結構定義語句和功能執行語句
  • 程式設計師每天編寫3000行代碼是什麼水平
    每天寫3000行代碼在當前的IT行業內是很難想像的,即使很多早期從事外包開發的程式設計師也很難有這樣的工作效率,大部分程式設計師每天的代碼量都在幾百行左右,研發級程式設計師一天的代碼量通常不會超過300行,應用級程式設計師的代碼量也很少能夠突破500行。
  • Typing Practice:模擬程式設計師敲代碼練打字
    與普通的打字練習工具不同的是,Typing Practice上的練習內容都是一些代碼。沒錯!這就是一個針對程式設計師開發的練習打字工具。通過讓用戶模擬程式設計師敲代碼的過程來練習打字!該網站有多種豐富的程式語言內容供用戶練習,每種都有10-20個關卡,每關結束後還會有專業的評測報告。程式設計師們都樂此不疲的用它來PK誰敲代碼更快。當然,不是程式設計師的你也一樣可以練習。
  • 初級程式設計師如何順利閱讀成品軟體的代碼
    閱讀別人的代碼本身就是一件比較麻煩的事情,而且由於項目進展的要求,往往時間上也會比較緊張,這是不少程式設計師都會面臨的比較棘手的問題。不僅對於Java初級程式設計師來說這是比較困難的事情,對於經驗豐富的Java程式設計師來說,閱讀別人的成品代碼也不會感覺到輕鬆。
  • 《近匠》程式設計師客棧,程式設計師背後的經紀人
    市場上程式設計師方向現在做得最好的產品有三類:一個是各種工具,包括代碼託管、某種技術工具服務等;二是網際網路垂直招聘,包括新興的程式設計師拍賣;三是深度討論社區,技術問答社區。目前市面上還沒有一款專注到程式設計師人群本身,為他們帶來價值的產品。我們就是做的這個,所以價值大! CSDN:那麼程式設計師客棧與其他外包平臺相比有哪些不同?
  • 程式設計師們,請你們不要排斥零代碼
    當然,可愛的程式設計師們往往都很含蓄,他們不會說——「零代碼平臺有什麼鳥用?如果不寫代碼就能夠開發軟體,還要我們幹嗎?」。他們不會說,但我們心裡知道。當我們向一位潛在顧客演示明道雲後,我幾乎都能聽到有幾位程式設計師心裡的想法。有時候,客戶不同職能的人圍繞是否要採納零代碼系統當面爭執起來,我也有點尷尬。
  • 1024程式設計師節,不寫代碼還能寫啥
    在中國,為什麼把10月24日定義為「程式設計師節」?要是你對此疑惑不解,讓我們先來看一個笑話:女朋友:為什麼你們提到工資時會說K?1K和1000塊不是一回事嗎?程式設計師:1K多24塊。在二進位構築的計算機世界裡,2的10次方1024可能是程式設計師最有感情的數字,1GB =1024MB,1MB =1024KB,1KB=1024B,而且10月24日這個日期非常直觀。程式設計師就像是一個個1024,以最低調、踏實、核心的功能模塊一步步搭建起程序的世界。
  • 程式設計師:為啥我寫的代碼幾個月後自己也看不懂?
    寫在前面:中國程式設計師就別寫英文注釋了!不要寫「太牛逼」的代碼!"傻瓜式代碼" != "低性能代碼」=========華麗的分界線==========程式設計師同志們大多都會有這樣的經歷,就是要看別人的代碼。
  • 說說程式設計師看到瞬間會心塞的代碼,網友們很給力
    說說程式設計師看到瞬間會心塞的代碼,網友們很給力程式設計師都有自己的性情,寫出的代碼也都隨性而作,一起來看看這幾個代碼片段例子,感受一下程式設計師的內心世界。/01/一個最有效的對齊方式/02/狂野的函數名/03/先不管代碼好不好,看到這個形式我就佩服
  • 程式設計師一天工作量改了5行代碼,工作很輕鬆?
    領導安排張工跟進,接到任務,張工第一時間就是想重現這個問題,可是怎麼也復現不了,費了九牛二虎之力,終於從上萬行代碼中定位到問題所在,最後張工修改了5行代碼,問題解決了。這時已經快下班了。張工伸了一下懶腰,這時財務漂亮妹子過來了,找張工確認交通費用報銷的事情,見張工懶羊羊的。
  • 以後程式設計師可能再也不用寫代碼了!你信嗎?
    一位來自阿里巴巴程式設計師的吐槽,說出了無數程式設計師的心聲。軟體進步靠研發,研發進展靠程式設計師,程式設計師寫代碼主要靠加班。據說,十個程式設計師裡有十一個都曾經歷過996,乃至007的工作節奏。對於程式設計師和老闆來說,唯一的共同願望恐怕就是,希望一覺睡起來,原本1%的代碼就自動寫到了99%。不少人調侃,這真是做夢都能笑醒。而前段時間被無數程式設計師轉發的一段視頻,似乎讓夢想變成了現實。
  • 優秀而高效的程式設計師必需寫好代碼的10個技巧
    在本文中,作者介紹了10個寫好代碼的建議,以自己切身編寫代碼的體會和經驗來告訴開發者這10個建議的好處,並指導讀者成為一個優秀而高效的程式設計師。