作者Domos (Domos)
看板C_and_CPP
標題Re: [心得] 寫出簡潔好程式-短碼達人的心得技法
時間Tue Aug 5 00:07:36 2008
今天下午買的,已經看半本掉了
的確本書的目標是寫出最短的code
書後面就講明「一邊探討程式原始碼可以縮到多短,一
邊研究資料結構、演算法、執行環境的過程」
所以不單單只是縮行、更換變數名
要有一定的程度才有辦法理解其中一些招數
的確他有犧牲一些速度
但不是寫短碼犧牲速度還以為會跑比較快
作者很清楚會犧牲速度,範例也有給出較快速的版本
而且他也沒有說寫大型project的時候用短碼寫
只說這是一種「嗜好」
那這本書學不到東西嗎?
這樣想就錯了,可以學到一堆傳統教科書學不到的東西
要寫短碼絕對不是固定幾招
首先要對題目有深入的了解
比如說一題 //如有侵權請告知
請費式數列第n項最後4個數字
如果看不出規律,那還是寫不出真正的短碼(沒錯,答案是有周期的)
整體而言十分推薦這本書
尤其是對c語言有一定程度的人,可以學到一些不知道的事
從中汲取對自己有用的部份
新手就別試了,難以理解之外,還會讓你功力退步
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.61.227.24
1F:推 pcedison:中肯 08/05 00:13
2F:→ Domos:補充:有疑問請從5-1開始看起 08/05 00:14
3F:推 final01:不過短碼有專有名詞嗎?用Short Code跟本找不相關資料 08/05 00:23
4F:→ final01:還是根本很少人在玩這種東西 日本人自己在玩而已? 08/05 00:24
5F:推 ckclark:因為pku的judge系統會顯示code大小 才會有人在衝短碼 08/05 00:25
6F:→ ckclark:uva沒有 大家最多就衝速度而已 08/05 00:25
7F:推 ddavid:應該說,如果只是追求在同樣做法下的短碼,那往往就跟可讀 08/05 00:55
8F:→ ddavid:性衝突。但如果是追求不同做法下的短碼,那就「有可能」可 08/05 00:56
9F:→ ddavid:兼顧,而兼顧的情況確實往往是新演算法(比如找到公式解) 08/05 00:57
10F:→ ddavid:。然而這也非絕對,比如有些題目用遞迴可能往往比用經驗法 08/05 00:58
11F:推 uqljnro:請問短碼的好處在哪? 08/05 00:58
12F:→ ddavid:則來得短碼,然而效率卻是短碼的一方落敗(為暴搜加個cut 08/05 00:59
13F:→ ddavid:明顯就是一個長碼卻增加效率的例子)。 08/05 00:59
14F:→ ddavid:所以我想短碼並不是因為它有什麼絕對的好處,與其說是個課 08/05 01:00
15F:→ ddavid:題,不如說是個練習題這樣XD 08/05 01:01
16F:→ ddavid:本質上也許跟IOCCC差不到哪裡去XD 08/05 01:02
17F:推 uqljnro:程式是看效率,我看這本書也只是騙吃騙喝... 08/05 01:02
18F:推 a1234957:IOCCC只是好玩吧 08/05 01:25
19F:推 ledia:不過如果是短碼控 或是得了不寫短碼就會憂鬱的病 08/05 01:36
20F:→ ledia:那短碼還是需要的 ~~ XD 08/05 01:36
21F:推 wa120:短碼違背了軟工之道阿XD 08/05 05:36
22F:推 FRAXIS:找找看one liner program 跟short coding類似 08/05 08:08
23F:推 liangjr:有時候在空間有限的環境 短碼還是有他的用處 08/05 09:30
24F:→ liangjr:我能想到的是embedded環境以及網頁javascript的大小上限 08/05 09:31
25F:推 ledia:如果你寫 C, 那短碼跟短機械碼還是兩回事 08/05 11:34
26F:→ ledia:限制環境要的不會是短碼 08/05 11:34
27F:→ ledia:javascript 短碼則可能有點用處, 這倒是比較特殊 08/05 11:35
28F:推 headiron:我底下帶的人要是給我寫短碼一定會先巴下去再退回重寫 08/06 11:42
29F:推 went27:你舉的例子真正差在"算法" 短碼應該是說在同樣的算法下寫 08/07 03:40
30F:→ went27:出byte數較小的程式碼 一味的追求短碼通常失去高階語言帶 08/07 03:42
31F:→ went27:來的便利 不過前面有人說比賽有byte數的排名 就把他當做智 08/07 03:44
32F:→ went27:力的競賽吧 順便推一個拼短碼的遊戲:微軟的Herbert 08/07 03:46