Re: [轉錄][請問] "世紀"到底如何計算與判斷??

看板ask-why作者 (吹笛牧童)時間16年前 (2009/06/19 10:29), 編輯推噓6(6031)
留言37則, 9人參與, 7年前最新討論串3/9 (看更多)
※ 引述《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)

06/19 11:25, , 1F
追本溯源,當初為什麼要把a陣列的第1個元素命名為a[0]呢?
06/19 11:25, 1F

06/19 11:26, , 2F
像Mathematica的陣列就是從a[1]開始讀的。
06/19 11:26, 2F

06/19 11:35, , 3F
Pascal 也可以(忘了語法 XD),C 有它的缺點,被攻擊,但它真
06/19 11:35, 3F

06/19 11:35, , 4F
的替 CPU 做了較少的包裝,讓你覺得有好的語法,又能觸到CPU
06/19 11:35, 4F

06/19 11:36, , 5F
什麼都包起細節是可以的,大走高階語言;就變慢呀~
06/19 11:36, 5F

06/19 11:39, , 6F
工程師接觸客戶用模糊語意,又接觸機器做嚴格語意,雙面人..
06/19 11:39, 6F

06/19 11:40, , 7F
老是被人說'只懂和機器溝通',那可真不公平 XD,為什麼不說
06/19 11:40, 7F

06/19 11:40, , 8F
我們兩種都行呢?
06/19 11:40, 8F

06/19 12:05, , 9F
在C語言中a是位址, a[i]就是取a+i這個位址上的元素
06/19 12:05, 9F

06/19 12:09, , 10F
高興的話 故意寫成i[a]也可以
06/19 12:09, 10F

06/19 12:16, , 11F
XD 我從沒想過,但這樣太靠杯了 XD,好用嗎?有沒有用的地方
06/19 12:16, 11F

06/19 12:28, , 12F
因為 C 可以直接對 pointer 進行運算
06/19 12:28, 12F

06/19 12:29, , 13F
陣列從 0 開始可以減少許多加一減一的運算
06/19 12:29, 13F

06/19 12:29, , 14F
從而提升速度
06/19 12:29, 14F

06/19 12:30, , 15F
光是'C'這個命名,本身就很不浪漫 *_* ;算了,工程不浪漫
06/19 12:30, 15F

06/19 12:31, , 16F
它是'B'語言的下一版;我的天,這樣命名的..真的只為了方便
06/19 12:31, 16F

06/19 12:31, , 17F
0 開始的陣列只是和一般的直覺不符合
06/19 12:31, 17F

06/19 12:32, , 18F
其實在計算上會方便很多
06/19 12:32, 18F

06/19 12:32, , 19F
那我們回原題,世紀的計算,也許 0'base 也會輕鬆很多
06/19 12:32, 19F

06/19 12:40, , 20F
跟原題有什麼關係 請問這裡是程式設計板嗎...
06/19 12:40, 20F

06/19 13:01, , 21F
不是;那請問這裏不能談程式嗎?
06/19 13:01, 21F

06/19 13:04, , 22F
本版的宗旨就是離題
06/19 13:04, 22F

06/19 16:10, , 23F
To HuangJC: 參加IOCCC時可以用 http://www.ioccc.org/
06/19 16:10, 23F

06/19 16:21, , 24F
XD A^=B^=A^=B 不知這個算經典還是經典混亂
06/19 16:21, 24F

06/20 21:59, , 25F
我也想到一樣的問題,Perl 的陣列也是從0開始
06/20 21:59, 25F

06/21 20:03, , 26F
從0開始的很多,重點是不講清楚就被人雞蛋裏挑骨頭,講清楚
06/21 20:03, 26F

06/21 20:03, , 27F
就有一大堆廢話在講重覆的基礎而不是重點
06/21 20:03, 27F

06/23 04:06, , 28F
推 eliec:本版的宗旨就是離題 ( XD 大推
06/23 04:06, 28F

06/25 02:55, , 29F
要說談程式設計就離題,其實我不是很認同.不少工程師知道,
06/25 02:55, 29F

06/25 02:55, , 30F
電腦語言再熟,domain knowledge 如果沒有還是寫不出來的
06/25 02:55, 30F

06/25 02:56, , 31F
好像不會下象棋,如何寫象棋程式?不會稅法,如何寫會計程式?
06/25 02:56, 31F

06/25 02:57, , 32F
同一個問題,用英文描述,總不會叫離題吧;那為什麼用電腦語
06/25 02:57, 32F

06/25 02:57, , 33F
言描述就叫離題?是因為太陌生嗎?另眼相看?
06/25 02:57, 33F

06/25 02:58, , 34F
數學上說植樹問題,而電腦語言就是陣列註標問題,根本一樣..
06/25 02:58, 34F
※ 編輯: HuangJC 來自: 61.59.179.152 (06/25 02:59)

06/25 02:59, , 35F
它在溝通上產生的困擾,也根本是同一個範圍
06/25 02:59, 35F

06/25 03:01, , 36F
而電腦語言是非常沒有模糊空間的,嚴重衝擊著溝通上的奇點
06/25 03:01, 36F

01/06 23:42, 7年前 , 37F
其實在計算上會方便很多 https://noxiv.com
01/06 23:42, 37F
文章代碼(AID): #1AElWWdw (ask-why)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 9 篇):
文章代碼(AID): #1AElWWdw (ask-why)