出版時(shí)間:2012-10 出版社:清華大學(xué)出版社 作者:薛非 頁(yè)數(shù):502
Tag標(biāo)簽:無(wú)
前言
編者序——敢于向權(quán)威挑戰(zhàn)經(jīng)常聽(tīng)到我的作者朋友說(shuō)類似這樣的話:“看我的代碼,多帥氣!”何謂帥氣、漂亮的代碼?在我看來(lái),先不談代碼丑俊,首先代碼必須沒(méi)有殘疾。在健康的代碼基礎(chǔ)上,才能談網(wǎng)絡(luò)間流傳的各種稱號(hào):漂亮代碼、優(yōu)質(zhì)代碼、帥氣代碼、性感代碼……這就是本書要講的內(nèi)容——摒棄一些錯(cuò)誤的觀念,重新認(rèn)識(shí)C語(yǔ)言的嚴(yán)謹(jǐn)與華麗。計(jì)算機(jī)語(yǔ)言是人類操控計(jì)算機(jī)硬件的主要手段,是語(yǔ)言創(chuàng)造者智慧的濃縮。計(jì)算機(jī)語(yǔ)言在中國(guó)的普及,是伴隨著中國(guó)經(jīng)濟(jì)騰飛的這幾十年。無(wú)數(shù)中國(guó)的程序員伴隨著很多經(jīng)典教材順利入門并成長(zhǎng)了起來(lái),隨著互聯(lián)網(wǎng)的發(fā)展,更多的朋友在網(wǎng)上發(fā)表自己的看法,所以互聯(lián)網(wǎng)也成為了大家獲取編程技術(shù)的重要渠道。但是,金無(wú)足赤,隨著C語(yǔ)言標(biāo)準(zhǔn)的不斷完善,C開發(fā)理念的不斷進(jìn)步,市面上的一些教材和網(wǎng)上一些說(shuō)法確實(shí)存在一些值得商榷的問(wèn)題,或者謬誤,因?yàn)檫@些資料傳播甚廣,有些反而成為了“標(biāo)準(zhǔn)”,這種現(xiàn)象有時(shí)候可能會(huì)誤導(dǎo)初學(xué)者,讓初學(xué)者無(wú)法從一開始就建立相對(duì)準(zhǔn)確的開發(fā)觀念。本書就是這樣一本敢于向“權(quán)威”挑戰(zhàn)的書,通過(guò)作者多年的積累,以及眾多熱心網(wǎng)友的鼎力支持,對(duì)一些C語(yǔ)言中經(jīng)常出現(xiàn)的問(wèn)題進(jìn)行討論。在中國(guó)的教育體制下,不可否認(rèn),很多創(chuàng)造力被限制甚至扼殺,很多路被強(qiáng)制標(biāo)注為正確途徑,很多人的學(xué)習(xí)興趣在一開始就被磨滅……。但是很高興能出現(xiàn)這么一本書,在閱讀過(guò)程中,可以體會(huì)一眾先鋒程序員對(duì)開發(fā)觀念的重視,對(duì)細(xì)節(jié)的精益求精,對(duì)邏輯的反復(fù)推敲,甚至上升到——對(duì)真理的求索。我通常拿到一本書,會(huì)先瀏覽一下,把我認(rèn)為重要的文字用特殊形式標(biāo)出來(lái),比如“提示”、“注意”、“TIPS”之類的樣式以及文字加粗、代碼加黑之類的重點(diǎn)標(biāo)注,但是本書我在做出努力之后,發(fā)現(xiàn)無(wú)法進(jìn)行這樣的處理,因?yàn)樗坪趺烤湓挾际侵攸c(diǎn),每段代碼都是精心挑選的,無(wú)論是正確代碼還是錯(cuò)誤代碼。最后一點(diǎn)不得不提一下,作者的文筆非常犀利,對(duì)一些問(wèn)題的批判毫不留情,可能是作者本人以及相關(guān)參與編寫的網(wǎng)友受到過(guò)太多問(wèn)題資料的影響,以至于走了不少?gòu)澛罚悦鎸?duì)問(wèn)題資料,個(gè)別時(shí)候會(huì)流露出來(lái)一種憤青一般的憤怒。這可以理解,而且我在編輯加工過(guò)程中也盡量保持了文風(fēng),但是還是希望作者和所有讀者做一名淡定的程序員。如果本書冒犯了某些朋友,請(qǐng)不要大動(dòng)肝火,可以發(fā)郵件與作者討論,畢竟從一個(gè)角度看問(wèn)題,存在片面的可能性。大家討論技術(shù),以代碼會(huì)友。權(quán)威之所以是權(quán)威,必然有其可取之處,對(duì)于權(quán)威,我們除了要有挑戰(zhàn)的勇氣,更多的是要理性的尊重,畢竟“權(quán)威”帶領(lǐng)太多人進(jìn)入C語(yǔ)言門檻。沒(méi)有BUG的代碼是不存在,同樣沒(méi)有問(wèn)題的資料也是不存在的,希望大家在學(xué)習(xí)過(guò)程中,多思考,多交流,早日樹立端正的開發(fā)思路。在此感謝包括作者在內(nèi)的熱心人,有監(jiān)督才會(huì)有活力,有挑戰(zhàn)才會(huì)有發(fā)展!
內(nèi)容概要
這是迄今為止國(guó)內(nèi)僅有的一部全面且集中地討論C程序設(shè)計(jì)中常見(jiàn)錯(cuò)誤的書籍。其主旨在于幫助讀者從錯(cuò)誤中更準(zhǔn)確地理解C語(yǔ)言,并在實(shí)踐中更好地運(yùn)用C語(yǔ)言。
全書分為上下兩部:上部“形而下學(xué)”討論C代碼中常見(jiàn)的錯(cuò)誤和編程惡習(xí);下部“形而上學(xué)”討論的是對(duì)C語(yǔ)言本身認(rèn)識(shí)方面的常見(jiàn)誤區(qū)。這些問(wèn)題特別具有普遍性,很多錯(cuò)誤不僅僅存在于初學(xué)者之中,即使是職業(yè)程序員多半也會(huì)在本書中找到自己的錯(cuò)誤。因此,對(duì)于任何想糾正自己對(duì)C語(yǔ)言的錯(cuò)誤認(rèn)識(shí)以及想不斷提高C語(yǔ)言水平的讀者來(lái)說(shuō),本書都提供了一種獨(dú)到且重要的視角,是一本不容錯(cuò)過(guò)的、具有重要參考價(jià)值的技術(shù)資料。
本書并非那種長(zhǎng)篇大論環(huán)環(huán)相扣的書籍,它的各個(gè)主題獨(dú)立成篇,使人閱讀起來(lái)輕松愉快。讀這本書并不需要正襟危坐在書房里,它可以隨時(shí)隨地地拿過(guò)來(lái)翻閱。
本書可作為各高校C語(yǔ)言或相關(guān)課程的教學(xué)參考書,也適合那些具有一定經(jīng)驗(yàn)的C語(yǔ)言程序員閱讀使用。
作者簡(jiǎn)介
薛非
貌不出眾,所以照片還是免了吧。編輯非要也不給,有碼無(wú)碼都不行。
沒(méi)有什么豐功偉績(jī),所以也不敢自吹自擂。不過(guò)我堅(jiān)信,書籍本身是作者最好的名片,作者的形象決定于讀者的閱讀感受。
所以,這里的空白還是留給讀者的想象吧。
書籍目錄
目 錄
上部 形而下學(xué)——代碼錯(cuò)誤及陋習(xí)
第1章 低級(jí)錯(cuò)誤
問(wèn)題1 C啊,多少C++假汝之名而行——C、C++不分
問(wèn)題2 環(huán)節(jié)缺失——關(guān)于C程序開發(fā)過(guò)程
問(wèn)題3 錯(cuò)誤的“標(biāo)點(diǎn)”——混用中英文字符
問(wèn)題4 錯(cuò)誤的“單詞”
問(wèn)題5 “合并單詞”產(chǎn)生的問(wèn)題
問(wèn)題6 形形色色的“分號(hào)”誤用
問(wèn)題7 “一仆二主”——兩個(gè)main()函數(shù)
問(wèn)題8 忘記“&”
問(wèn)題9 who’s who
問(wèn)題10 同形異質(zhì)——為符號(hào)常量賦值
問(wèn)題11 詞不達(dá)意
問(wèn)題12 使用switch語(yǔ)句的常見(jiàn)錯(cuò)誤
章節(jié)摘錄
版權(quán)頁(yè): 這樣,這兩個(gè)副效應(yīng)產(chǎn)生的時(shí)間如果因?yàn)椴煌幾g器的不同安排,就會(huì)產(chǎn)生無(wú)論是整個(gè)表達(dá)式的值,還是變量“a”最終的值,在不同的編譯方式下產(chǎn)生各不相同的互相矛盾的結(jié)果。然而每一種編譯“安排”,只要是在“;”之前完成了副效應(yīng),卻都沒(méi)有違背C語(yǔ)言的要求。 這也就是說(shuō),在不違背C語(yǔ)言原則的情況下,表達(dá)式“a+=(a—=(a*a))”可以有多種解釋方式,得到并不唯一的結(jié)果。這叫做“二義性”或“多義性”。 程序設(shè)計(jì)語(yǔ)言和程序是不可以有二義性的,這一點(diǎn)和我們平時(shí)使用的自然語(yǔ)言截然不同。 為此,C語(yǔ)言特別規(guī)定:在兩個(gè)相鄰的序點(diǎn)之間,同一個(gè)數(shù)據(jù)對(duì)象中保存的值最多只可以通過(guò)表達(dá)式求值改變一次。表達(dá)式“a+=(a—=(a*a))”的內(nèi)部并沒(méi)有序點(diǎn),因此必定在其前面和后面擁有這“兩個(gè)相鄰的序點(diǎn)”。然而在“a+=(a—=(a*a))”中,“+=”、“—=”運(yùn)算的副效應(yīng)又都是改變同一個(gè)數(shù)據(jù)對(duì)象“a”的值,這明顯違反了“同一個(gè)數(shù)據(jù)對(duì)象中保存的值最多只可以通過(guò)表達(dá)式求值改變一次”這個(gè)C語(yǔ)言對(duì)表達(dá)式的基本要求,因此這個(gè)表達(dá)式是一個(gè)錯(cuò)誤的表達(dá)式。 但是這種錯(cuò)誤不同于語(yǔ)法錯(cuò)誤(違背C語(yǔ)言硬性限制(constraint)的錯(cuò)誤),編譯器會(huì)承認(rèn)這樣的表達(dá)式不違背C語(yǔ)言的限制,因而可以進(jìn)行編譯,并且可能不會(huì)把這個(gè)錯(cuò)誤作為語(yǔ)法錯(cuò)誤報(bào)告給編程者。最多,好的編譯器可能會(huì)給出一個(gè)“警告”——它嗅出了這里疑似有錯(cuò)。
媒體關(guān)注與評(píng)論
從“錯(cuò)誤”中學(xué)到的東西,往往比從“正確”中學(xué)到的多。——源自ChinaUnix論壇著名技術(shù)長(zhǎng)貼《以其昏昏使人昭昭》、ChinaUnix論壇和博客園技術(shù)博客《C博客》系列
編輯推薦
《品悟C:拋棄C程序設(shè)計(jì)中的謬誤與惡習(xí)》可作為各高校C語(yǔ)言或相關(guān)課程的教學(xué)參考書,也適合那些具有一定經(jīng)驗(yàn)的C語(yǔ)言程序員閱讀使用。
名人推薦
把良好的編程風(fēng)格教給那些之前曾經(jīng)接觸過(guò)BASIC的學(xué)生幾乎是不可能的。作為可能的程序員,他們已精神殘廢,無(wú)重塑的可能了?!狤. W. Dijkstra沒(méi)有一種編程語(yǔ)言能阻止程序員寫出糟糕的程序來(lái),不管這種語(yǔ)言結(jié)構(gòu)有多良好?!狶arry Flon計(jì)算機(jī)比人類歷史上的任何發(fā)明都更快速地導(dǎo)致你犯更多的錯(cuò)誤——可能除了手槍和龍舌蘭酒?!狹itch Radcliffe
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載