偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何更好的學(xué)習(xí)C++語(yǔ)言?

開(kāi)發(fā) 后端
學(xué)習(xí)最佳編碼實(shí)踐比學(xué)習(xí)C++語(yǔ)言更重要。看優(yōu)秀的代碼也比埋頭用差勁的編碼方式寫垃圾代碼要有效。直接、清晰、明了。

C++語(yǔ)言是編程界受氣最多的一門編程語(yǔ)言,流傳的錯(cuò)誤的學(xué)習(xí)C++語(yǔ)言的方法一說(shuō)就是好幾條,許多人在學(xué)習(xí)C++這們語(yǔ)言上,浪費(fèi)了大量的時(shí)間,這也是人們頭疼的事情。

為什么會(huì)存在這么多錯(cuò)誤認(rèn)識(shí)?原因主要有三個(gè),一是C++語(yǔ)言的細(xì)節(jié)太多。二是一些著名的C++書籍總在(不管有意還是無(wú)意)暗示語(yǔ)言細(xì)節(jié)的重要性和有趣。三是現(xiàn)代C++庫(kù)的開(kāi)發(fā)哲學(xué)必須用到一些犄角旮旯的語(yǔ)言細(xì)節(jié)(但注意,是庫(kù)設(shè)計(jì),不是日常編程)。這些共同塑造了C++社群的整體心態(tài)和哲學(xué)。

單是***條還未必能夠成氣候,其它語(yǔ)言的細(xì)節(jié)也不少(盡管比起C++起來(lái)還是小巫見(jiàn)大巫),就拿javascript來(lái)說(shuō),作用域規(guī)則,名字查找,closure,for/in,這些都是細(xì)節(jié),而且其中還有違反直覺(jué)的。但許多動(dòng)態(tài)語(yǔ)言的程序員的理念我猜大約是學(xué)到哪用到哪罷。但C++就不一樣了,學(xué)C++之人有一種類似于被暗示的潛在心態(tài),就是一定要先把語(yǔ)言核心基本上吃透了才能下手寫出漂亮的程序。這首先就錯(cuò)了。

這個(gè)意識(shí)形成的原因在第二點(diǎn),C++書籍。市面上的C++書籍不計(jì)其數(shù),但有一個(gè)共同的缺點(diǎn),就是講語(yǔ)言細(xì)節(jié)的書太多——《C++ gotchas》,《Effective C++》,《More Effective C++》,但無(wú)可厚非的是,C++是這樣一門語(yǔ)言:要拿它滿足現(xiàn)代編程理念的需求。

尤其是C++庫(kù)開(kāi)發(fā)的需求,還必須得關(guān)注語(yǔ)言細(xì)節(jié),乃至于在C++中利用語(yǔ)言細(xì)節(jié)已經(jīng)成了一門學(xué)問(wèn)。比如學(xué)習(xí)C++語(yǔ)言模板在設(shè)計(jì)之初根本沒(méi)有想到模板元編程這回事,更沒(méi)想到C++模板系統(tǒng)是圖靈完備的,這也就導(dǎo)致了《Modern C++ Design》和《C++ Template Metaprogramming》的驚世駭俗。

這些技術(shù)的出現(xiàn)為什么驚世駭俗,打個(gè)比方,就好比是一塊大家都認(rèn)為已經(jīng)熟悉無(wú)比,再無(wú)秘密可言的土地上,突然某天有人挖到原來(lái)地下還蘊(yùn)藏著最豐富的石油。在這之前的C++雖然也有一些細(xì)節(jié),但也還算容易掌握,那可是C++程序員們的happy old times,因?yàn)?FONT>C++的一切都一覽無(wú)余,everything is figured out。

然而《Modern C++ Design》的出世告訴人們,“瞧,還有多少細(xì)節(jié)你們沒(méi)有掌握啊?!庇谑?FONT>學(xué)習(xí)C++語(yǔ)言程序員們久違的激情被重燃起來(lái),奮不顧身的踏入細(xì)節(jié)的沼澤中。尤其是,模板編程將C++的細(xì)節(jié)進(jìn)一步挖掘到了***——我們干嘛關(guān)心涉及類對(duì)象的隱式轉(zhuǎn)換的優(yōu)先級(jí)高低?看看boost::is_base_of就可以知道有多詭異了。

但***的問(wèn)題還在于,對(duì)于這些細(xì)節(jié)的關(guān)注還真有它合適的理由:我們要開(kāi)發(fā)現(xiàn)代模板庫(kù),要開(kāi)發(fā)active library,就必須動(dòng)用模板編程技術(shù),要?jiǎng)佑媚0寰幊碳夹g(shù),就必須利用語(yǔ)言的犄角旮旯,enable_if,type_traits,甚至連早就古井無(wú)波的C宏也在亂世中重生,看看boost::preprocessor有多詭異就知道了,連C宏的圖靈完備性(預(yù)編譯期的)都被挖掘出來(lái)了。

為什么要做這些?好玩?標(biāo)榜?都不是,開(kāi)發(fā)庫(kù)的實(shí)際需求。但這也正是***的悲哀了。在boost里面因?qū)嶋H需求而動(dòng)用語(yǔ)言細(xì)節(jié)最終居然能神奇的完成任務(wù)的***教材就是boost::foreach,這個(gè)小設(shè)施對(duì)語(yǔ)言細(xì)節(jié)的發(fā)掘達(dá)到了驚天地泣鬼神的地步。#t#

不信你先試著自己去看看它的源代碼,再看看作者介紹它的文章吧。而boost::typeof也不甘其后——C++語(yǔ)言里面有太多被“發(fā)現(xiàn)”而不是被“發(fā)明”的技術(shù)。難道最初無(wú)意設(shè)置這些語(yǔ)言規(guī)則的家伙們都是oracles?

因?yàn)闆](méi)有variadic templates,人們用宏加上缺省模板參數(shù)來(lái)實(shí)現(xiàn)類似效果。因?yàn)闆](méi)有concepts,人們用模板加上析構(gòu)函數(shù)的細(xì)節(jié)來(lái)完成類似工作。因?yàn)闆](méi)有typeof,人們用模板元編程和宏加上無(wú)盡的細(xì)節(jié)來(lái)實(shí)現(xiàn)目標(biāo)… 學(xué)習(xí)C++語(yǔ)言開(kāi)發(fā)者們的DIY精神不可謂不強(qiáng)。

責(zé)任編輯:chenqingxiang 來(lái)源: NET130
相關(guān)推薦

2010-01-15 19:28:59

C++

2010-01-15 16:25:48

學(xué)習(xí)C++

2010-01-26 10:01:17

學(xué)習(xí)C++

2010-01-12 10:50:59

學(xué)習(xí)C++

2010-01-11 14:05:01

C++學(xué)習(xí)方法

2010-01-13 18:44:03

C++編譯

2010-01-15 18:06:20

C++引用

2010-01-13 14:05:55

C++語(yǔ)言

2010-01-08 17:13:46

Visual C++環(huán)

2010-01-22 13:20:27

C++代碼

2010-01-25 14:43:00

C++構(gòu)造函數(shù)

2010-01-08 15:45:04

設(shè)置Dev C++

2010-01-22 18:06:24

C++代碼

2010-01-11 14:17:02

C++編程

2010-01-14 17:02:10

學(xué)習(xí)C++

2010-01-21 18:00:59

C++語(yǔ)言

2010-01-20 15:12:45

C++語(yǔ)言

2010-01-12 10:11:36

學(xué)習(xí)C++語(yǔ)言

2010-01-11 09:40:02

C++語(yǔ)言

2010-01-15 10:32:21

C++語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)