Re: [請益] 請問學哪個比較實用

看板Soft_Job作者 (lgd1008)時間16年前 (2010/02/21 20:15), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串12/19 (看更多)
高階語言不會是eye candy 高階語言compile出來之所以會比較慢/大, 是因為它引入的更多的附加物 如果引入OOP, 參考物件需更多的dereference... 如果引入try-catch之類的error-handling, error發生時需更多的處理時間... 如果引入VM, GC, 分配記憶體時需更多時間... ... 可是也因為引入附加物, 可能得到的好處可能有 runtime optimization, 程式易讀易改, 易debug, 與development tool更容易結合, 或更適合"某類型"的計算 而且像linked list, 一般的+-*/, 之前的observer pattern ,或相似簡單的algorithm 高低階語言compile出來的結果根本"差不多", 如果效率差不是因為附加物 那根本就是作者太弱, 語言未成熟 反過來說, 一些較複雜的algorithm, 或複雜的應用 你用低階語言也不一定做得出它的 performance 因為光要做出與高階語言特色能匹敵的library, 可能就是一件難事 例如有些語言, 提供你不限大小的型別去做運算 你用低階語言去實作, 參考, 組合, 包裝 .... 一些大數運算的library 可能弄了半天都沒有辦法做出那樣的 performance, 或寫出相同簡潔的程式. 個人意見 ※ 引述《Aurim (Who cares?)》之銘言: : ※ 引述《yauhh (喲)》之銘言: : : 所謂linked就是一個結構包含另一個結構. : : Linked list則是結構的包含方式比較有規律. : : 在這方面,我覺得要說語言不重要,在linked list上面不是如此. : : Linked list用C或C++寫才會特別把link帶出來. 用Python,談什麼link呢? : : 而真要說不被語言綁住的,是stack,queue,tree,graph這些language-free的東西. : 我說個有些人可能不愛聽的話,所有高階語言處理的資料都要放在計算機結構內。 : 這代表什麼呢?有的語言可能沒明確的指標,像Java,可是實際上物件型態的變數 : 都是動態物件,每個物件型態的變數都有個object reference,不像C++的物件有 : 分動態靜態。高階語言沒指標就不能實作linked list?那不是要哈哈哈了嗎? : 有些人說linked list就是解決array有固定長度的問題,可是在我來看, : 每個電腦的記憶體量都是有限的,位址空間也是有限的。 : 說到底,大家都是在一個由CPU提供的byte/word/dword array中玩來玩去而已。 : 如果機械語言/組語能實作linked list,所有有array的語言就都可以實作它。 : 沒有人規定linked list的link一定要是指標或者以某個形態出現的啊。 : 你高興的話,只要能夠在現在的計算機結構下實作, : 你也可以把link隱含在自己發明的語言所提供的某種語意樣式裡。 : 其他資料結構沒有一個不可以這樣玩,第一次想到那樣的想法、發明那樣語言的時候, : 肯定很爽,我高中時很想自己來搞一個。 : 不過那又如何,現在的我來看,都是eye candy,拘泥於有形與無形的差別而已。 : 程式生產力真的有比較好嗎?有時候吃eye candy是要多付出代價的。 : Eye candy吃得愈多,離真正最底層的實作愈遙遠, : 對各種事務到底是怎麼運作的,就愈容易缺乏了解。 : 也許有的工作把愈底層的細節從真正要做的事情中抽離得愈遠愈好, : 但是也有的工作本來就是要從最底層的細節了解起,才能做得好的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.138.35.146

02/22 07:57, , 1F
同意!
02/22 07:57, 1F

02/22 12:02, , 2F
說別的語言語法是eye candy只是見樹不見林罷了
02/22 12:02, 2F
文章代碼(AID): #1BWIF4g1 (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1BWIF4g1 (Soft_Job)