業餘大叔程式心得筆記#11:程式語言的與除錯方式的個性/葉光釗

閱讀時間約 5 分鐘

每一種程式語言,都有一些展現自己個性的點;如果沒有一些參透過的領悟,很難去瞭解它們的本質;不同的程式除錯方式,也有不同的風格。你專精的程式語言是哪一種?又有什麼樣的個性呢?你的除錯偵探方式,又是哪個流派?

過去一陣子有些看軟體工程師履歷的機會;這些應徵者在技能欄上,多半會列出許多的程式語言,像是C、C++、C#、JavaScript、Java、R、Python、Ruby等等,而且多半會加上「精通」兩字。看多了這類履歷之後,不由得會好奇,每個人對「精通(某種工作技能)」的定義有什麼不同。
筆者自己是半路出家,寫程式能力是自學而來的,而且完全只把程式語言當作工具,從來沒有什麼特別偏好;依照專案的性質,什麼稱手就用什麼。如果真遇到沒用過的語言,Google和StackOverflow網站就成了好朋友;盡量找範例,copy/paste毫不客氣。
雖然這樣下來也混了數十年,但捫心自問,要聲稱「精通」什麼語言,還真有點不好意思說出口。

程式語言是有個性的

不過話說回來,究竟在這個領域有些資歷,對於各式各樣的程式語言還是有些心得;比較有趣的心得之一,就是我覺得程式語言是有「個性」的。
從經驗來看,各種語言都有一些展現自己個性的點;如果沒有一些參透過的領悟,很難去瞭解它們的本質。
舉來來說,職涯中使用比例最高的應該就是C語言了。我把它定義為「刻苦耐勞」型,早期根本是用來當作組合語言的跳板;在實務上,甚至經常有將C編譯器編好的組合語言內容拿出來,然後用手工繼續修修改改的情形。
要能善用C語言,對電腦底層的運作必須有基本的瞭解,尤其是記憶體存取方面。許多學BASIC或FORTRAN語言的人始終弄不懂C,多半是卡在「指標」(pointer)的使用上,更不說用「pointer的pointer」來表示二維矩陣這種奇怪的觀念了。
至於C++,雖然本質上與C是截然不同的兩種動物,但常被看作「C的華麗加強版」(但我承認自己也常常這樣用)。除了「class」(類別)等等物件導向語言的關鍵字讓入門者頭痛之外,「template」(模版)的使用也是個門檻。
雖然標準模版庫(STL)提供的資料結構很方便,可是編出來的程式碼大得嚇死人;像我這種用慣了C的吝嗇傢伙,能不用就不用。
另外有兩個語言,我則是定義為「夢幻」型的:一個是Smalltalk,另一個是 Lisp。
之所以這麼說,是我在接觸它們的時候,並沒有可以執行的實際環境;雖然買了一堆參考書籍,而且所有執行都是憑空想像,但它卻是我學習物件導向語言的啟蒙(夠神奇了吧)。
其中有一段時間,再怎麼絞盡腦汁,就是弄不懂什麼是「傳送訊息給一個物件」,一直到某一天吃早餐時想到,其實就是「function calls」,差點把嘴裡的豆漿噴出來。
最近比較有興趣的,則是JavaScript;我發現它根本是Lisp的「呼畢勒罕」,而且它的取名真是個天大的誤會。這是一個很「公主」的語言:機制很純粹,什麼東西都是物件(object),只是除錯除起來會令人發瘋。
既然大家都有個性,那有沒有「老好人」式的語言?
有。在我看來,過去人人必學的BASIC、和現在的Python,就屬於比較沒個性的語言。雖然Python近年因為人工智慧(AI)方面的應用而紅遍半邊天,但我覺得跟語言本身實在沒啥關係,全靠一缸子的套件(packages);不過這也是它們的優點:門檻低、入手快。
我自己最最喜歡的,還是Forth語言。它是我看過最「短小精幹」的設計;一個超小型編譯器和一本詞典,就可以堆砌起一個世界,不愧是天才設計師Charles Moore的傑作。
年輕的時候,曾經用它來設計一套在Apple II電腦上跑的Logo turtle繪圖工具;原本以為已經佚失,最近一搜尋居然發現,語言本身和這套工具還活著,真是驚喜。可得好好想想能用它來做些什麼。

除錯和推理也有流派

我從年輕時就喜歡看推理小說,而且習慣一開始翻書就一路看不停。從撲朔迷離的線索之中,抽絲剝繭找出線索,最後真相大白;那種看到最後「原來如此」的感覺,很容易欲罷不能。
身為一個推理小說迷,以及還算資深的程式員,很難不注意到「推理解謎」和「除錯」兩種心智活動之間,令人驚訝的相似程度。
推理小說有好幾種派別;早期最熟悉的是「安樂椅神探」,一位厲害的偵探完全無需出門探案,只要由旁人提供線索,即使不需要親眼看到現場,也能推論出答案。
早期在除錯工具不多的現實中,我們也常會做「在大腦中除錯」的事情;只用筆和紙,再三重覆檢查邏輯的流程。不過就像神探不是常人,這樣的事沒辦法常做;不但累人、而且非常沒效率,不可能像書中的主角那麼風光。
後來熱衷的是「現實派」。主人翁通常是警察之類的執法人員,既不神奇、也不是天才,只能一步一腳印,蒐集那些看起來微不足道、但很多時候可能是破案關鍵的線索。
這跟程式員的現實生活就接近多了:在除錯的時候,多半就是鍥而不捨的一再重複 追蹤程式碼執行、看看找不找得到微小的差別。程式員的日常中,有九成時間就是一直盯著黑底白字的編輯器,深怕漏看了什麼;隨著解錯(破案)的時限越來越近,壓力也越來越大。
而現代化軟體大廠的除錯模式,就跟以上的單打獨鬥完全不同。他們的方式就跟CSI科學辦案一樣是團隊作戰,有專門的測試人員執行測試用例(test cases),就像是蒐集科學證據;也有專門的工具,用於分析測試結果、或是程式產生的紀錄檔,如同科學家做DNA解譯一樣。
SDE解錯就純粹是「證據走到哪裡,案子就辦到哪裡」;沒有什麼模糊地帶,直接了當。
話說回來,看推理小說還是比程式除錯有趣多了;欣賞別人動腦的成果,比自己燒腦所花的力氣輕鬆太多。
你專精的程式語言是哪一種?又有什麼樣的個性呢?你的除錯偵探方式,又是哪個流派?
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
1.4K會員
2.0K內容數
為您送上頂尖作者的最新管理與科技產業思維。
留言0
查看全部
發表第一個留言支持創作者!
自從iPhone獨力貢獻超過一半的利潤之後,外界就開始擔心Apple對單一產品的依賴是否太重;然而,這個數字在本季結束時掉到了48%,又有人要擔心「iPhone玩完了」。其實這個變化不是壞事,而是利潤開始轉向整個生態系、讓Apple營收結構更加成熟的象徵。
由於類比訊號很容易失真,因此人類將類比訊號轉為數位,創造了虛擬世界;而相較於「身」,這個虛擬世界就如同「心」。幾千年來,人類修煉自己的內心,以便離苦得樂,這些則屬於「靈」的境界;但這些年來,我深深覺得身、心、靈之間的距離似乎越來越大。
雖然Tesla Model 3看起來是一款能幫Elon Musk賺錢、並且讓Tesla在轎車市場站穩腳步的產品;但該公司最近一季的巨額虧損,仍然讓許多股民憂心忡忡。究竟這些虧損會不會傷到Tesla的元氣?就讓我們來探討一下。
人們用來消磨時間與金錢的方式,近年來已經有了大幅改變;而這種新的消費型態,變成了新聞媒體的主要競爭對手。本文所提供的,就是一些關於這個趨勢的實際狀況與調查資料。
當AI創新應用「遍地開花」時,就會出現大批的應用人才、AI新創公司會紛紛出現、傳統產業也會轉型升級。但這波AI熱潮發展的重點,更應該放在公共政策訂定、教育、應用、以及解決民生議題上,而不是如何培養AI獨角獸。
大企業為了追求利潤,會以專利壁壘和規模門檻保護自己,讓技術無法與街頭智慧結合;但在物聯網的時代,生產規模效益將不再是最重要的優勢,而開源設計網站和無所不在的互聯網,也讓技術不再是跨國企業的禁臠。
自從iPhone獨力貢獻超過一半的利潤之後,外界就開始擔心Apple對單一產品的依賴是否太重;然而,這個數字在本季結束時掉到了48%,又有人要擔心「iPhone玩完了」。其實這個變化不是壞事,而是利潤開始轉向整個生態系、讓Apple營收結構更加成熟的象徵。
由於類比訊號很容易失真,因此人類將類比訊號轉為數位,創造了虛擬世界;而相較於「身」,這個虛擬世界就如同「心」。幾千年來,人類修煉自己的內心,以便離苦得樂,這些則屬於「靈」的境界;但這些年來,我深深覺得身、心、靈之間的距離似乎越來越大。
雖然Tesla Model 3看起來是一款能幫Elon Musk賺錢、並且讓Tesla在轎車市場站穩腳步的產品;但該公司最近一季的巨額虧損,仍然讓許多股民憂心忡忡。究竟這些虧損會不會傷到Tesla的元氣?就讓我們來探討一下。
人們用來消磨時間與金錢的方式,近年來已經有了大幅改變;而這種新的消費型態,變成了新聞媒體的主要競爭對手。本文所提供的,就是一些關於這個趨勢的實際狀況與調查資料。
當AI創新應用「遍地開花」時,就會出現大批的應用人才、AI新創公司會紛紛出現、傳統產業也會轉型升級。但這波AI熱潮發展的重點,更應該放在公共政策訂定、教育、應用、以及解決民生議題上,而不是如何培養AI獨角獸。
大企業為了追求利潤,會以專利壁壘和規模門檻保護自己,讓技術無法與街頭智慧結合;但在物聯網的時代,生產規模效益將不再是最重要的優勢,而開源設計網站和無所不在的互聯網,也讓技術不再是跨國企業的禁臠。
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
距離四月帶著家人一起去新加坡已經一段時日了,不過我知道這段回憶會持續留存在我和家人的心中,就像那幾封四月初在新加坡時寄的明信片一樣,不會時時刻刻去看,但知道它們就放在紀念品小盒中。
Thumbnail
如何藉由其他管道來獲得客群資料,或是行銷自身品牌,成為個人創作者以及公司行銷該思考的議題,所以本部落格專題內容將會分享曾經看過的創意行銷方法或較新穎的創業點子。 這篇將介紹的是Tracle-最方便的垃圾代收服務
Thumbnail
很喜歡美國作家雅麗嘉・古德曼(Allegra Goodman )的小說《收藏食譜的人》(The Book Collector )。 小說的男主角是個性古怪的古書店老闆喬治。隨著情節開展,我們逐步瞭解,年齡不算大,卻頗有資產的他,原來是矽谷一夕致富的科技新貴。但賺足一生無虞的財富之後,便急流勇退,過
Thumbnail
外派後因為業務需求,開始打起高爾夫球,才知道泰國高爾夫球場有超多豪華選擇,早就是全球高爾夫度假首選。整理泰國高爾夫球場資訊,分享泰國高球場特色排名、曼谷/華欣/清邁球場推薦及價格。
Thumbnail
8月25日偉大 蓮花生大士聖誕 施放鯉魚苗──觀音山夏季保育放流,歡迎您把握殊勝吉祥日,一同護持響應。《藥師經》記載:「是故我今勸諸有情,然燈造幡,放生修福,令度苦厄,不遭眾難。」放生的功德很大,可消災免難!❶招感加持庇蔭。❷修福消災,積聚廣大功德。❸為生態復育盡心力,促進物種共榮的美好願景。
Thumbnail
書名:業餘奸商[位面] 作者:丁巳 版區:耽美小說 世界背景【自分類】:星際 主題分類【自分類】: 關鍵字【自分類】:穿越、位面交易、時空錯亂 評分【滿分5顆星】:3顆星 心得: 這篇小說告訴讀者,什麼樣的聰明才智及能力才能成為商人,又需要如何的機智才能成為奸商?傻白甜的小受就只能當個科研人才,先是
Thumbnail
如果你是為了減肥或健康而跑步,請你一定要了解, 跑得越多是不會讓你瘦得越多!慢跑一切以適度為宜,過猶不及都是不好的。
Thumbnail
將工業餘氫混入瓦斯公司的既有天然氣管道的商業可行性高 圖五更進一步分析每個區域期待的氫氣價格,我們可以看到美國、中國、俄羅斯、加拿大、韓國都期待在US$2/公斤以下。印證了我們前面的看法。
Thumbnail
說起毒雞湯會你想起誰?我想絕對是北野武,這個毒舌的老人家。
Thumbnail
比起特寫,導演似乎更喜歡遠景。 比起表情,導演似乎更想我們去看人物完整的姿態。
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
距離四月帶著家人一起去新加坡已經一段時日了,不過我知道這段回憶會持續留存在我和家人的心中,就像那幾封四月初在新加坡時寄的明信片一樣,不會時時刻刻去看,但知道它們就放在紀念品小盒中。
Thumbnail
如何藉由其他管道來獲得客群資料,或是行銷自身品牌,成為個人創作者以及公司行銷該思考的議題,所以本部落格專題內容將會分享曾經看過的創意行銷方法或較新穎的創業點子。 這篇將介紹的是Tracle-最方便的垃圾代收服務
Thumbnail
很喜歡美國作家雅麗嘉・古德曼(Allegra Goodman )的小說《收藏食譜的人》(The Book Collector )。 小說的男主角是個性古怪的古書店老闆喬治。隨著情節開展,我們逐步瞭解,年齡不算大,卻頗有資產的他,原來是矽谷一夕致富的科技新貴。但賺足一生無虞的財富之後,便急流勇退,過
Thumbnail
外派後因為業務需求,開始打起高爾夫球,才知道泰國高爾夫球場有超多豪華選擇,早就是全球高爾夫度假首選。整理泰國高爾夫球場資訊,分享泰國高球場特色排名、曼谷/華欣/清邁球場推薦及價格。
Thumbnail
8月25日偉大 蓮花生大士聖誕 施放鯉魚苗──觀音山夏季保育放流,歡迎您把握殊勝吉祥日,一同護持響應。《藥師經》記載:「是故我今勸諸有情,然燈造幡,放生修福,令度苦厄,不遭眾難。」放生的功德很大,可消災免難!❶招感加持庇蔭。❷修福消災,積聚廣大功德。❸為生態復育盡心力,促進物種共榮的美好願景。
Thumbnail
書名:業餘奸商[位面] 作者:丁巳 版區:耽美小說 世界背景【自分類】:星際 主題分類【自分類】: 關鍵字【自分類】:穿越、位面交易、時空錯亂 評分【滿分5顆星】:3顆星 心得: 這篇小說告訴讀者,什麼樣的聰明才智及能力才能成為商人,又需要如何的機智才能成為奸商?傻白甜的小受就只能當個科研人才,先是
Thumbnail
如果你是為了減肥或健康而跑步,請你一定要了解, 跑得越多是不會讓你瘦得越多!慢跑一切以適度為宜,過猶不及都是不好的。
Thumbnail
將工業餘氫混入瓦斯公司的既有天然氣管道的商業可行性高 圖五更進一步分析每個區域期待的氫氣價格,我們可以看到美國、中國、俄羅斯、加拿大、韓國都期待在US$2/公斤以下。印證了我們前面的看法。
Thumbnail
說起毒雞湯會你想起誰?我想絕對是北野武,這個毒舌的老人家。
Thumbnail
比起特寫,導演似乎更喜歡遠景。 比起表情,導演似乎更想我們去看人物完整的姿態。