顯示廣告
隱藏 ✕
看板 SuperTree
作者 dick51207 (SuperTree.bbs@bbs.csie.fju.edu.tw)
標題 Re: [討論] 如何定義 "會" XXX 程式語言
時間 2013年04月03日 Wed. PM 03:29:23


※ 本文轉寄自 SuperTree.bbs@bbs.csie.fju.edu.tw

發信人: dick51207.bbs@ptt.cc (dick51207.bbs@ptt.cc) 看板: SuperTree
標  題: Re: [討論] 如何定義 "會" XXX 程式語言
發信站: 2012/11/28 Wed 16:04:34

看板 Soft_Job
作者 qrtt1 (lonely)
標題 Re: [討論] 如何定義 "會" XXX 程式語言
時間 Sat Feb 25 23:55:37 2012


※ 引述《qwer820404 (beans)》之銘言:
: 小弟我現在 在統一資訊 擔任PT (大四下還沒畢業)
: 進去二個禮拜多了 (每天八小)
: 最近在思考一個問題
: 到底什麼叫做 "會" XXX 程式語言
: 常常聽到別人說  我會的程式語言有 XXX、XXX、XXX   零零總總至少有3項以上
: 但是實際要用的話   卻寫不出來   那跟別人說你"會"  不是在唬爛嗎?
: 還是只會印出hello word... 這也叫"會"?
: 為什麼我會想PO文來討論一下,因為最近我遇到一個問題是說....
: 甲(資方,非統一資訊,外面一個案子的老闆)   乙(我)
: 以下對話…
: 甲:請問一下,你會的程式語言有什麼
: 乙:C#、PHP
: 甲:你會用C#或PHP寫一個程式可以識別圖像文字嗎
: 乙:呃…  不會耶
: 甲:那你還說你會C#跟PHP....@#X@XX
: 乙:嗯… 抱歉
: 回家就開始在想,識別圖像文字是要有摸過圖學那些概論的東西才有辦法寫出來吧,
: 我又沒有說我學過,寫不出來也是正常吧。
: 但是我說我會C#,卻又沒辦法用C#解決問題,那我還能說我是"會"C#的人嗎?


        邏輯上,如果正面表列太難的時候,那就用負面表列吧 :)

        這其實是二個不同的問題:

        1. 是否會某個語言

        2. 是不有能力完成某項任務

        事實上,問你的人只在意第二點,但卻問錯問題了。



        --------------------------------------------------------



        先來解決 2. 任務題。

        這件事其實沒有你想像中的複雜,通常在工作內需要完成的東西

        都會有現成的 Library 可以用 (假設已克服授權或 license issue)

        你只要會 call library 就行了。

        所以問題就會變成:

        1. 找到 library

        2. 寫點 demo code 來驗證它的效果

        3. 回報實驗的結果


        就旁觀者的想法來說,你可能長期習慣於學校的模式,

        也許是個認真的學生『作業得自己寫』之類的觀念深入你的潛意識。

        於是你最開始想到的是『該如何實作它』,

        而不是『這個功能的 keyword』是什麼,

        下哪個 keyword 最容易找到你需要的 library。


        當然這並不是說你可以對於實作完全不用在意,

        假設它是個 open source project,那麼你可能需要在 tuning 時,

        理解它是採用什麼樣的演算法,有哪些參數會影響結果。

        你得在精確、容錯、效能之間取得平衡。

        在進行 tuning 時,再來對細節理解才是比較有效率的做法。


        除非別人花大錢請你重新研發一個『無雙』等級的識別文字演算法。

        這時,你不只得煩惱各家演算法,還得煩惱開價。



        --------------------------------------------------------


        回到問題 1. 會不會某個語言


        要定義會太困難了,就像有人認為 Hello World 算了。

        有人認為得再更多的要求,相信你也識意到,

        就算叫『會』也有等級的差別。


        但要說『不會』又過於簡單,寫不出來就是寫不出來。

        連 compile 都不過,錯誤訊息也有看沒有懂。

        這種很白明的狀態就不需要討論了。


        不如換個思考方向,單純就自己能運用的語言來看。

        你對於哪一個的『誤解』最少呢?

        這其實是很詭異的思考方向,就像本版曾討論過的:

        『大家工作上看過哪些誇張的 CODE ?』

        都是來自於對語言及其延伸概念的誤解。

        遺憾的是,你並不知道自己誤解了什麼。


        有時候,我們以為我們知道自己在寫什麼,

        但我們只是以為我們知道,我們在寫什麼。


        就像某次朋友跟我確認某個東西的實作結果,

        他是覺得出來的結果跟他想得不一樣。

        我稍為幽默地引用了宅民曆的格言:

        『程式是照你寫的跑,不是照你想得跑』

        多數簡單的 Bug 都是來自於我們對於實作的誤解!


        所以,在你學會了程式的語法後,

        必得深入跟驗證語意是否與你想的一致。

        就如同證照考試將你當人腦 compiler 一般地考你。

        撇開那些有學過就會的 API,

        重要的在於語意部分,你瞭解地越透徹,越能減少低級 Bug 的產出。


        通常語意的問題,要求的就不單純是語法正確而已。

        你必需對於『這樣寫』會有什麼影響能充份掌握!


        假設有個 Java 的面試考題,大概會像是:

        1. 請實作二個 Class 說明 Variable shadowing 的影響

        2. 請說明你對於 Variable Shadowing 的看法

        3. 你知道有哪些工具能查出 Variable Shadowing


        不同的語言有不同的語意細節需要去用心學習,

        就像第一次使用 memcpy 複製 struct 時,

        根本不知道什麼叫 Shallow Copy 與 Deep Copy,

        Bug 就是這麼產生的。


        因此,要札實地變得強大,你的產出得經過不同人的 review。

        將你誤解的部分一一由你的觀念確實地修正。

        你才能謙虛地說,你稍為能掌握某個語言。

--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.55.120
thinkniht:真不虧是qrtt1大...1F 02/25 23:58
CGary:總覺得不懂Shallow Copy跟Deep Copy已經不算是細節不清楚,而2F 02/26 00:00
CGary:是觀念不清了..
qrtt1:有些人只是沒機會認識一些重要的概念,其實他們一點就通。4F 02/26 00:02
qrtt1:就像我第一次 fread 到 struct 才意識到什麼叫 memory align
qrtt1:知道有這一回事,跟遇到這一回事.對學習上是有程度上的差距:)
thinkniht:其實你Java的那三題拿來問我就可以讓我掛掉了XD7F 02/26 00:27
clanguage:還好我作業都抄人的 有問題我都想哪邊可以抄一下8F 02/26 00:34
clanguage:難怪任務都可以解決
andymai:推~所以適當的命名是很重要的~可以盡量避免誤解和誤用~曾10F 02/26 00:37
andymai:經不小心踩過這個陷阱~真是讓人哭笑不得...
diabloevagto:『程式是照你寫的跑,不是照你想得跑』←中肯12F 02/26 02:18
LaPass:什麼是Variable shadowing啊?13F 02/26 10:19
andymai:google不就知道了?還在這邊問太慢囉...14F 02/26 11:10
Lordaeron:image recognition跟language 何關, 會這樣講的, 不就明15F 02/26 11:48
Lordaeron:著來鬧的或者跟本就是個無知者, 理他幹嘛呢?
Lordaeron:哪不如我來定義, 不會用prolog 來寫個web的話,不算會
Lordaeron:prolog.
qrtt1:PS. 語意的部分,變數的 scope 也是重要的,有些語言跟 C19F 02/26 12:45
qrtt1:的定義不太一樣,這時我們會被過去的『慣例』誤導。
qrtt1:例如:Python 的 scope http://bit.ly/xGWqpB
liliokd:這才是有出過社會的人說的話,"績效"、"做出來"是王道22F 02/28 10:09
LFking:推!!!!23F 04/11 17:12

--
※ 看板: SuperTree 文章推薦值: 0 目前人氣: 0 累積人氣: 43 
※ 文章分類: 程式語言
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇