日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
編程語言設(shè)計的五大陷阱

在近幾年來,編程語言的設(shè)計正在經(jīng)歷著類似于“文藝復(fù)興”的過程,這么說主要是基于下面兩個事實:

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)謝家集,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

1)多核技術(shù)推動著PC消費者更多的關(guān)注并行程序。

2)動態(tài)語言的性能越來越好,其性期已經(jīng)可以足夠用來實現(xiàn)互聯(lián)網(wǎng)服務(wù),并且它們正在走出“腳本語言”陰影。

這篇文章試圖收集最重要的編程語言的設(shè)計錯誤,以便讓那些程序語言設(shè)計者們在設(shè)計新型的編程語言時避免。(相關(guān)文章推薦:程序員的十大技術(shù)煩惱)

文章避免了一些糾纏不清的有好有壞的問題,如:動態(tài)類型或是靜態(tài)類型,同時也省略了那些看起來并不嚴(yán)重,很容易被修改的錯誤。例如,加入“參量”(ParametricType),這在Java中已經(jīng)有了。Sun在發(fā)布Java 1.0版后的第八年才加入了這一功能。

1.Null指針

幾乎在所有的主流編程語言中,對一個對像的引用可能會是一個空指針,這個錯誤會引發(fā)運行時錯誤。C.A.R.Hoare最近聲明向這一“發(fā)明”負(fù)責(zé),盡管如此,其它許多的設(shè)計者們都應(yīng)該對這樣的設(shè)計受到批評。下面是C.A.RHoare的“懺悔”:我把它叫做“億萬美元錯誤”。這個空指針的發(fā)明創(chuàng)造來自1965年?!F(xiàn)在的編程語言引入了“非空引用”的聲明規(guī)格。這個方案被我在1965年給拒絕了。

其它語言,如C/C++更夸張,它們在運到這樣的錯誤時,直接Crash掉,而Java,Python和其它語言會拋出一NullPointerException異常,但問題是,這個RuntimeException可能會被幾乎所有的語句拋出。

其實,只需要一個靜態(tài)類型的語言就可以保證不會出現(xiàn)空指針或空引用。例如:Cyclone是一個安全的C變種,其引入了非空指針和指針運算的限制。一些語言甚至讓你根本不可能創(chuàng)建空指針,雖然這使得明確的指針不能行進(jìn)行運算。Haskell就是這樣的一個語言,其提供了MaybeMonad,其強制程序員考慮“Null”的情形。

2.很難解析的語法

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

3.未定義的語義

別在語言規(guī)格中說“實現(xiàn)規(guī)范”!盡可能的少使用“未定義”這樣的術(shù)語來描述語言的行為(C/C++中出現(xiàn)了很多undefined的行為)!黃金準(zhǔn)則是StandardML,其是一個完整地正式的語義。C語言是這樣一個反例,其規(guī)則中有太多太多的未定義的情況。

然而,由于其廣泛使用,所以某些行為的定義已經(jīng)成為了世界的共識(江湖的行規(guī),或,潛規(guī)則)。舉個例子,在C中,整型overflow的行為是未定義的,而編譯器也是有能力推斷出“x

明確的語義可以讓驗證和錯誤檢查更容易。雖然,軟件校驗來得比緩慢,但一定會來。我可以想像,編程語言的下一個機會將會是更容易地校驗,這可能需要十到二十年的時間,但今天開始這樣做的語言將會在那天成為世界的主流。

4.壞的Unicode支持

程序中幾乎都要處理字符串,但別忘了并不是所有人都會使用英語來編程。今天,幾乎所有的編程語言都不支持Unicode,所以,我們只能使用ANSI的英語來編程。這個時代,程序員應(yīng)該使用Unicode來編程,所以,源代碼也可以聲明其用什么來編碼。

在文本和字節(jié)序間的轉(zhuǎn)換和區(qū)分在的標(biāo)準(zhǔn)庫方面會比語言方面更是一個問題,當(dāng)然,這也影響了語法。

5.預(yù)處理器

像C++和MP4的預(yù)處理器已經(jīng)被廣泛地使用著,使用預(yù)處理器更像是一種hack而不是一個干凈的解決方案。他們被用來,使用外部文件(如頭文件,但確沒有正確地模塊機制),使用條件編譯,宏替換,等。把這些功能與編程語言集成起來一起使用可以增加程序的性能和開發(fā)效率,并沒有什么不好的地方。

如果要舉一個反例,那么就是預(yù)編譯器的模塊化系統(tǒng)。C使用#include而C++更痛苦,因為模板需要寫一個大的頭文件,而且其會被包含在幾乎所有的其它文件中。而一個真正的模塊化的系統(tǒng)是不需要使用extern關(guān)鍵字,也不需要程序的鏈接,而應(yīng)該是直接使用。

文章原文地址:http://beza1e1.tuxen.de/articles/proglang_mistakes.html


新聞名稱:編程語言設(shè)計的五大陷阱
本文網(wǎng)址:http://m.5511xx.com/article/dhsgihh.html