2011年10月3日 星期一

你的C有多熟?

(先澄清一下,這裡的C是指程式設計的C語言)
聽到這個問題, 真的很難回答, 如果看過"讓天賦自由", 更會覺得難以回答, 為什麼, 標準傳統回答, 大概是拿認證或是學分分數來比較, 分數高的就學得好一點, 分數差的就遜色一些, 這種評斷的方法是針對你學C是為了以後要去教C, 而不是你要拿C來做什麼

程式語言只是為了達到程式系統目的的工具, 不同的應用以及規模有其適用的工具, (TODO: 舉例), 而實務上, 為達到應用, 常用的寫法, 大概也只有那種程式語言的一半不到, 要使用某種語言, 最快上手的過程其實不是鑽研程式語法, 程式邏輯對所有程式語言來說大同小異, 只是定義上稍有不同, 比一下就知道, 反而是編譯器的特性, 特定用途的慣用寫法, 如果能收集的到, 那才能快速掌握精髓而且實用, 不常用的還有對需求用不到的, 可以先放過, 例如你不寫Network, 相關的介紹就可以跳過, 不寫GUI, 相關的也是跳過, 之類的主題其實篇幅都很多, 現在程式語言的差異, 主要其實是相關提供的程式庫, 學程式語言主要是學程式庫的使用

如果有人始終搞不清楚程式語言的基本觀念, 例如C的指標, C++的template, Java的reference,我只能說, 找到好的解說文件, 跑個code, debug一下, 應該都可以弄懂, 真的完全無法理解, 應該避開那個程式語言, 做其他的應用, 但我想這種情框應該很少,以現代人對電腦科技的適應力來說

至於Compiler的特性, 這對C來說, 影響和指標的嚴重性不遑多讓, 畢竟C被普遍認為是跨平台的程式語言, 其所以能跨平台, 是因為能在不同平台重新編譯, 因此Compiler在不同平台, 甚至不同供應商, 就會有差異, 這差異讓你可能要對程式寫法要調整以配合硬體資源以及效能需求, 不過, 這方面還是找得到相關設計的資源(自從有網路之後), 沒有考慮這些問題不能做成是設計嗎? 當然可以, 中文英文說得好不好, 聽得懂還是有用, 即使語文認證分數有高低, 那也只是一個片面標準, 了解風俗文化才能有高竿的應用, 土法煉鋼是最不可取, 縱然能寫code, 但是品質堪慮, 但要寫到抽象藝術等級嗎? 那又過頭了, 只有少數人能欣賞, 還是實用導向, 又有內涵的寫法, 大家看了都懂, 又不落俗套, 這樣才好, 就像常用的成語或是俚語, 一套出來, 整個質感就出來了, 去找出程式語言的成語和俚語, 用得巧妙, 遠勝過語言認證高一級卻不會這樣用的人

回歸主題, 問這個問題, 或許要的答案是和這個語言定義相關的講法, 不過對我而言, 浮出腦海的卻不是這些, 也有很多程式能力認證的挑戰題可以找到, 但, 到底程式語言的目的是什麼? 中道去思考, 不役於物才能真正回歸自我

沒有留言:

張貼留言