|
2006-10-23
僅僅使用軟件的人們 通常意識(shí)不到編寫軟件有多么困難。噢,設(shè)計(jì)部分和最初開(kāi)發(fā)部分都很有趣。最困難的部分是使其正確運(yùn)行(且運(yùn)行速度足夠快)。對(duì)于程序員而言,這就好比一餐開(kāi)始時(shí)是美味的雙層牛奶巧克力咖啡干酪餅,而結(jié)束時(shí)卻是菠菜奶油沙司。
之所以說(shuō)編程仍是一門藝術(shù)而不是一門科學(xué)或工程學(xué)科,是因?yàn)槲覀冞€不能將其分解成多個(gè)組成步驟,而后機(jī)械地進(jìn)行。一旦我們?cè)诖朔矫娅@得成功,在某種程度上就會(huì)出現(xiàn)一種新的可能性:在編程時(shí)采用以人為本的設(shè)計(jì)語(yǔ)言 (PODL) 編寫程序,通過(guò)編程來(lái)證明程序的正確性以及分析和支持語(yǔ)義查詢。然而到那時(shí),編程依然是一門藝術(shù),也就是其中含有那么多傳統(tǒng)智慧。
但是,如同許多傳統(tǒng)智慧一樣,此類比經(jīng)不起進(jìn)一步推敲。事實(shí)上,編制程序(我干這行已經(jīng)有 20 多年了)根本一點(diǎn)都不像藝術(shù) —— 至少不像寫小說(shuō)(我干這一行也已經(jīng)有 20 多年了)那樣的藝術(shù)。讓我用兩個(gè)片段(一個(gè)程序片段和一個(gè)散文片段)來(lái)說(shuō)明我的觀點(diǎn)吧。
第一個(gè)片段是一個(gè)用于分析 Visual C++® 7.1 的詞法分析程序的一部分。該片段如下所示:
if ( index >= TokenID::lastKeyword() ) {
string token = tokenString( index );
if (( isdigit( token[ 0 ] )) || ( token[0] == ‘-’ )) {
#ifdef TELL_ME
display( "!! TokenSet::tokenIdentify: ", "文字?jǐn)?shù)字:", token );
#endif
return TokenID::TK_Literal;
}
} if ( index >= TokenID::lastKeyword() ) {
string token = tokenString( index );
if (( isdigit( token[ 0 ] )) || ( token[0] == ‘-’ )) {
#ifdef TELL_ME
display( "!! TokenSet::tokenIdentify: ", "文字?jǐn)?shù)字:", token );
#endif
return TokenID::TK_Literal;
}
}
it知識(shí)庫(kù):編程是一門藝術(shù)嗎?,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。