国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

五個編程語言設計中常犯的失誤

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-05-05 11:22:31

  近幾年來,編程語言的設計正在經(jīng)歷著類似于“文藝復興”的過程,這么說主要是基于下面兩個事實:(1)多核技術推動著PC消費者更多的關注并行程序。(2)動態(tài)語言的性能越來越好,其性期已經(jīng)可以足夠用來實現(xiàn)互聯(lián)網(wǎng)服務,并且它們正在走出“腳本語言”陰影。

  這篇文章試圖收集最重要的編程語言的設計錯誤,以便讓那些程序語言設計者們在設計新型的編程語言時避免。我避免了一些糾纏不清的有好有壞的問題,如:動態(tài)類型或是靜態(tài)類型。我也省略了那些看起來并不嚴重,很容易被修改的錯誤。例如,加入“參量”(Parametric Type),這在Java中已經(jīng)有了。Sun在發(fā)布Java 1.0版后的第八年才加入了這一功能。還有一個最近的例子是 Google Go Language Design FAQ 中說到的:: “Generics may well be added at some point. We don’t feel an urgency for them, although we understand some programmers do.”

  0. Null 指針

  幾乎在所有的主流編程語言中,對一個對像的引用可能會是一個空指針,這個錯誤會引發(fā)運行時錯誤。 C.A.R. Hoare 最近聲明向這一“發(fā)明”負責,盡管如此,其它許多的設計者們都應該對這樣的設計受到批評。下面是 C.A.R Hoare 的“懺悔”:

  I call it my billion-dollar mistake. It was the invention of the null reference in 1965. [...] More recent programming languages like Spec# have introduced declarations for non-null references. This is the solution, which I rejected in 1965. - C.A.R. Hoare

  我把它叫做“億萬美元錯誤”。這個空指針的發(fā)明創(chuàng)造來自1965年。…… 現(xiàn)在的編程語言引入了“非空引用”的聲明規(guī)格。這個方案被我在1965年給拒絕了。

  其它語言,如 C/C++ 更夸張,它們在運到這樣的錯誤時,直接Crash掉,而 Java, Python 和其它語言會拋出一NullPointerException異常,但問題是,這個 RuntimeException 可能會被幾乎所有的語句拋出。其實,只需要一個靜態(tài)類型的語言就可以保證不會出現(xiàn)空指針或空引用。例如: Cyclone 是一個安全的C變種,其引入了非空指針和指針運算的限制。

  一些語言甚至讓你根本不可能創(chuàng)建空指針,雖然這使得明確的指針不能行進行運算。Haskell 就是這樣的一個語言,其提供了Maybe Monad,其強制程序員考慮“Null”的情形。

  1. 很難解析的語法

  編程語言的語法應該來自 LALR 或是更好的 LL(1)。今天的程序員需要適當?shù)墓ぞ邅碇С制溟_發(fā)語言,也就是我們常說的IDE,編譯器或是其它可以幫你解析程序語言的編程工具。這并不會出現(xiàn)在一個單一的前端。也許,多重編譯器已經(jīng)被實現(xiàn)出來了。這可能讓我們的開始變得更容易一些。然而,我們現(xiàn)實中的一個反例是 C++,幾乎沒有哪個C++的編譯器可以把C++這個語言完美地正確地解釋出來,而且不同C++的編譯器的行為如此的詭異。編程語法的開銷是微不足道的,程序員應該在編寫程序中享有更快速和高效的回報。

上一篇:國外資深人士給PHP初學者的一些經(jīng)驗
下一篇:軟件編程初學者怎么學習java?

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學校地址: 長沙市天心區(qū)團結路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權所有

湘ICP備14017520號-3

關注我們
在線咨詢
嘿,我來幫您!