看板 ask-why 關於我們 聯絡資訊
※ 引述《xiaoa (沒有靈魂的人)》之銘言: : 這個...計時是以自然數計算的, 準確的叫法要在前面加一個"第" : 21世紀應該叫"第21世紀", : 英文裡頭是 "21th century", 不是21 centuries : 前者翻譯 成第二十一個世紀; 後者是 二十一個世紀, 即 2100個年頭 這個計較還非常漂亮 那看能不能解決我們程式設計師這個問題 XD int a[10]; 如上,陣列 a 其實是從 0 開始 但是因為很多數值運算不是從 0 開始 (比如 UI 需求) 所以我們可能在使用時做些調整,比如 void F(int i) { a[i-1]; //當 i=1 時,會引用到 a[0] } 如上,我們會稱陣列 a 是 0's base 而函式F 則創造出了 1's base 的介面 癈話是很多啦 但如果有默契,一般 RD 在註解寫一句 0's base 或 1's base,就已經算很清楚了 可是和沒默契的朋友溝通時,我們還是可能冒出這句: a 的第 1 個元素 問題來了,如果這句指 a[0],那每次要換算很累 如果這句指 a[1],大概要被人從頭嘲笑到尾:你學程式幾年啦,連這都不知道 這狀況嚴重到都快 PO 恨板了 XD 有時想,難怪這領域被人說宅 連自己人都不放過自己人,不該計較時計較,能嘲笑時就嘲笑 XD (但程式的確是連 1 這樣的誤差都不能有 所以如果是很計較的 spec 文件,通常乾脆附一段程式 用程式來講解 spec 才沒有爭議;spec 並沒限制只可語意描述) 那用 a 的 0 號元素,a 的 1 號元素 這樣會比較好懂嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.65.16 ※ 編輯: HuangJC 來自: 61.219.65.16 (06/19 10:31)
daze:追本溯源,當初為什麼要把a陣列的第1個元素命名為a[0]呢? 06/19 11:25
daze:像Mathematica的陣列就是從a[1]開始讀的。 06/19 11:26
HuangJC:Pascal 也可以(忘了語法 XD),C 有它的缺點,被攻擊,但它真 06/19 11:35
HuangJC:的替 CPU 做了較少的包裝,讓你覺得有好的語法,又能觸到CPU 06/19 11:35
HuangJC:什麼都包起細節是可以的,大走高階語言;就變慢呀~ 06/19 11:36
HuangJC:工程師接觸客戶用模糊語意,又接觸機器做嚴格語意,雙面人.. 06/19 11:39
HuangJC:老是被人說'只懂和機器溝通',那可真不公平 XD,為什麼不說 06/19 11:40
HuangJC:我們兩種都行呢? 06/19 11:40
Keiichi:在C語言中a是位址, a[i]就是取a+i這個位址上的元素 06/19 12:05
Keiichi:高興的話 故意寫成i[a]也可以 06/19 12:09
HuangJC:XD 我從沒想過,但這樣太靠杯了 XD,好用嗎?有沒有用的地方 06/19 12:16
littleshan:因為 C 可以直接對 pointer 進行運算 06/19 12:28
littleshan:陣列從 0 開始可以減少許多加一減一的運算 06/19 12:29
littleshan:從而提升速度 06/19 12:29
HuangJC:光是'C'這個命名,本身就很不浪漫 *_* ;算了,工程不浪漫 06/19 12:30
HuangJC:它是'B'語言的下一版;我的天,這樣命名的..真的只為了方便 06/19 12:31
littleshan:0 開始的陣列只是和一般的直覺不符合 06/19 12:31
littleshan:其實在計算上會方便很多 06/19 12:32
HuangJC:那我們回原題,世紀的計算,也許 0'base 也會輕鬆很多 06/19 12:32
PrinceBamboo:跟原題有什麼關係 請問這裡是程式設計板嗎... 06/19 12:40
HuangJC:不是;那請問這裏不能談程式嗎? 06/19 13:01
eliec:本版的宗旨就是離題 06/19 13:04
Keiichi:To HuangJC: 參加IOCCC時可以用 http://www.ioccc.org/ 06/19 16:10
HuangJC:XD A^=B^=A^=B 不知這個算經典還是經典混亂 06/19 16:21
wild68:我也想到一樣的問題,Perl 的陣列也是從0開始 06/20 21:59
HuangJC:從0開始的很多,重點是不講清楚就被人雞蛋裏挑骨頭,講清楚 06/21 20:03
HuangJC:就有一大堆廢話在講重覆的基礎而不是重點 06/21 20:03
KanoLoa:推 eliec:本版的宗旨就是離題 ( XD 大推 06/23 04:06
HuangJC:要說談程式設計就離題,其實我不是很認同.不少工程師知道, 06/25 02:55
HuangJC:電腦語言再熟,domain knowledge 如果沒有還是寫不出來的 06/25 02:55
HuangJC:好像不會下象棋,如何寫象棋程式?不會稅法,如何寫會計程式? 06/25 02:56
HuangJC:同一個問題,用英文描述,總不會叫離題吧;那為什麼用電腦語 06/25 02:57
HuangJC:言描述就叫離題?是因為太陌生嗎?另眼相看? 06/25 02:57
HuangJC:數學上說植樹問題,而電腦語言就是陣列註標問題,根本一樣.. 06/25 02:58
※ 編輯: HuangJC 來自: 61.59.179.152 (06/25 02:59)
HuangJC:它在溝通上產生的困擾,也根本是同一個範圍 06/25 02:59
HuangJC:而電腦語言是非常沒有模糊空間的,嚴重衝擊著溝通上的奇點 06/25 03:01
sneak: 其實在計算上會方便很多 https://noxiv.com 01/06 23:42