Post by æ²ç©º: 我倒是持反對意見.
: 電腦是使用簡單的構成來處理複雜事物的工具. 因為要處理的事
: 物複雜度增加, 所以構成的複雜度也跟著增加. 對電腦來說, 每
: 個指令、每個動作都是細節, 但是對人來說就不是.
: 人沒有辦法將每個細節都記下來, 而必須經由有意義的輪廓來幫
: 助思考. 例如, 你從椅子上站起來的時候, 你還沒想到你是怎麼
: 站起來的, 你就已經站起來了. 你不會想 "身體先向前傾, 然後
: 將雙腿、背跟腰打直." 你更不會照顧到那一條肌肉必須伸、那
: 一條肌肉必須縮, 那一個關節轉了幾度、或是你消耗了多少卡路
: 里的熱量等等細節.
: 寫程式也是類似的道理, 高階語言幫你處理了那些細節, 所以你
: 可以把時間跟力氣省下來放在更高階的邏輯上. 而寫出來的程式
: 又幫你節省了時間, 於是你可以把省下來的時間拿去寫其他更多
: 程式 (或是拿來釣魚?)... 你可以把時間花在其他更值得的事情
: 上, 而不是拿來處理一些已經有制式處理法的細節上.
如果沒有人會組合語言,你哪來的高階語言可以用?
組合語言不是人人都要學的
但不需要&不想學的人,也沒有理由反對它
我反對的不是組合語言, 組語是很有趣的東西, 學起來也簡單,
但是寫起來很複雜. 如我所說, 要掌握每一個細節不是人類能輕
易做到的.
Post by æ²ç©º: 也許有人會說 "用組語寫的程式比高階語言寫的要跑得快!", 但
: 是我卻覺得程式執行的速度不全在寫出來的指令的量, 而是在處
: 理資料的邏輯. 通常越複雜的邏輯, 時間複雜度越小, 使用的時
: 間越少, 執行的速度越快 (例如 bubble sort vs quick sort).
: 而越複雜的邏輯, 則要求越多的細節, 也就是越多的程式碼.
為什麼用組合語言不能寫複雜邏輯的程式?
無論用什麼語言來寫,最多能寫出速度差不多的程式
絕對不可能超越組合語言!
當然,都要以最佳寫法的程式來比較,不然還有什麼好比的?
組合語言的快是絕對的,代價是要花很多時間來寫
取捨在是否有必要用人的時間來換取執行的速度?
如果速度沒有重要到值得花時間的話,那高階語言當然是首選囉!
而且還有一些東西是非用組合語言來寫不可的,就不用多說了
組合語言當然可以寫複雜邏輯的程式, 但是跟用高階語言寫比起來,
恐怕只會事半功倍. 請不要拿萬中選一的特例出來, 如果組語真的那
麼好寫, 那麼 1970 年流行的語言就不會是 c 了.
至於最佳寫法的程式, 你怎麼確定寫出來的程式是最佳寫法? 說不定
有更佳寫法呢? 說不定其他人想出來的最佳解法比你的最佳解法還要
更佳呢? 如果把時間都花在細節上了, 那來的時間去研究更佳解法?
我在寫 8051 的時候, 也會先用 c 寫, 再對轉出來的 asm code 作
performance tuning. 使用接近人類思考的語言構思, 多半能讓我較
快掌握程式的架構. 直接打 a = b 可以讓我少煩惱要把 0x1234 的
資料搬到 0x5678, 還是要放到 register, 還是要 push 進堆疊; 用
switch 可以讓我省下一堆思考要用 sjmp 還是 ljmp 的時間. 所以
我可以對真正浪費時間的地方最佳化, 而不是省那些省了好像沒省的
時間.
Post by æ²ç©º: 我相信這個世界上有那種 "用組語寫程式, 而且寫出來的程式不
: 但沒有任何 bug, 跑起來也比其他人用高階語言寫的來得快速,
: 過了半年再回來看程式碼也只要花十分中溫習, 再加上 coding
: assembly 的速度不輸給 coding 高階語言" 的人. 但是這個人
: 不是你, 更不會是我, 更或許全世界找不出幾個.
: 所以, 我用高階語言寫程式.
很好,我也很贊同
不過卻沒必要因此而看輕低階語言吧!
hmm... 我並沒有看清低階語言的意思, 如果讓您這麼認為, 請見諒.
我的意思是, 我沒有辦法用毛筆寫出很漂亮的字, 所以我選擇鋼筆.
不是因為討厭毛筆而不用毛筆, 而是因為我沒信心用毛筆寫出跟鋼筆
相同等級的字與速度, 所以才不用毛筆. 有人毛筆寫的比大部份人的
鋼筆還寫的好, 速度還要快, 相同大小的紙可以放入一樣多的字 (嘖
嘖...)... 但是這個人大概不會是你, 更不會是我, 更或許全世界找
不出幾個.
所以, 我用鋼筆寫字.
- --
最好的是男人 (man) !
請善用 Google (http://www.google.com/) !