何謂「好的」程式語言

看板PLT (程式語言與理論)作者 (痞子軍團團長)時間18年前 (2007/02/22 12:57), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/4 (看更多)
這個問題其實困擾我很久... 反正這個版開了,就先站上來當標靶 各位請隨意砲轟... [茶] 先把「語言」的範圍排除像 HTML, XML 那種描述性語言 也跳過 SQL 這種... 我不知道怎麼歸類的語言 然後,為了簡單起見,也跳過 web 開發語言 (像 JSP、PHP、JavaScript、ActionScript) 就只講最傳統定義的語言 誠如各位所知,我是寫 Java 的 事實上,幾乎也算「只會 Java」 所以會以 Java 為出發點,然後在推銷 Java 的時候受到一些反彈 從這來講,可能會比較... 不會出錯 (咪的... 到底要不要進入主題阿... [踹]) 面對 C 家族的狂熱分子 Java 典型被批判的就是「沒有指標」 或著應該說「沒有辦法直接用指標」 甚至有人用「全梭了」的肯定語氣跟我說 「沒有指標很難寫程式」 我是不敢懷疑他是不是偷雞 囧> 也沒有掀他底牌來看(他也不讓我看就是了) 不過... 不碰硬體控制之類的,我也沒遇到什麼「很難寫程式」的部份 但是,對我來說,沒有指標的世界真是美好阿... [茶] (更不用說要看什麼「指標的指標」這種殘害智商的東西) 而 Java 的書,尤其是早期推廣時代的書 都會把「沒有指標」這件事情當作是一個大優點 夾在兩造雙方之間,其實就平民小卒來說,還挺困擾的 同樣的事情也發生在 gc、效率等等問題上 我寫 Quick Basic 起家的,然後可以說接著就跳 Java 了 面對 C 得靠 malloc() 才能做到「執行期間決定陣列大小」 還得自己去控制位置... 然後最後還要自己釋放空間 對我這種笨蛋而言... 唉... [遠目] (雖然說 C++ 也有 Vector 之類的東西...) 有人跟我說,這樣子效率比較好 gc 是很消耗 resource 的行為 恩... 想想也是... 那麼,是要賭自己控制 resouce 會比較好 還是期望語言本身提供 gc 的演算法可以達到「可接受」的範圍? 因為我是笨蛋,而且我相信開發 JVM 的人比我聰明百倍... 但是,又有人跟我講 Java 沒辦法處理很大量資料的狀況 所以他雖然是從 Java 起家的,不過後來還是乖乖寫 C (他好像是作即時影像處理的,然後隨便就是幾百MB 的資料在記憶體當中) hmmm... 還沒寫過那種恐怖的東西... 很難想像 但是 Java 真的作不到嗎? 好像也很難想像... 也許作起來要花很多功夫? 但是... 能不能把這個狀況當作是極端狀況來對待? 我的意思是... 畢竟一般人寫一般程式 用 Java 好像很快樂也不容易出大紕漏? 我們畢竟會常常需要用到動態決定大小的陣列 而很少要處理很大量很大量的資料? 寫到這裡,似乎就能預料有神人級的人會跳出來說 「語言只不過是工具,視狀況而決定工具 所以討論工具好壞是沒有意義的」 這樣講好像很對,但是又好像很不對 畢竟,像我這種笨蛋... 連 Java 都寫的不是很好了 要視狀況在工具之間跳來跳去,似乎有摔死的可能 Orz (當然,現實狀況是... 環境逼著你跳,你不得不跳) 又反過來說,面對另外一群人 他們會 argue Java 不夠快 or 不夠簡單 像 Perl 的使用者會覺得 Java 宣告起來很麻煩、字串處理很麻煩 Ruby 的使用者會說 Java 寫起來不夠快 (恩... 不過看到的好像大部分是針對 Web 開發的部份?) 另外一個... 囧點... 是好像很少人會把 C 家族跟 Perl, Ruby 來作對比 (至少 PTT 的討論版很少看到) 但是 Java 會拿來跟 C 家族來比較,也會被拿來跟 Ruby 來比較 好了,就先扯到這邊 ==== 這個問題的切入點,以我淺薄的知識也想得出一些 不過一開始還是先隨意吧... 這樣子標靶比較大一點... [茶] 所以上頭就寫的很鬆散... XD 反正收斂焦點 & 收精華區是版主要煩惱的... [逃] -- 侃侃長論鮮窒礙 首頁:http://www.psmonkey.idv.tw 眾目睽睽無心顫 Blog:http://ps-think.blogspot.com 煢居少聊常人事 殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.195.92

02/22 17:06, , 1F
我是寫LISP的,不僅沒有指標,連資料型態都沒幾個呢 XD
02/22 17:06, 1F
文章代碼(AID): #15tIArTQ (PLT)
討論串 (同標題文章)
文章代碼(AID): #15tIArTQ (PLT)