条款1:视C++为一个语言联邦

条款1:视C++为一个语言联邦

在这个特条款下,我理解了C++的全貌,它到底是一个什么样的编程语言,进而窥探到语言的编程范式。(均为自己翻阅资料后的理解,可能会有错误)

书中直接指出C++是一个多范式的编程语言,那么计算机语言有哪些编程范式呢?在维基百科中给出的定义是:基于语言特性来给语言分类的一种方式。在计算机编程语言中,根据计算模型的不同,编程范式分为两大类:命令式( imperative programming)声明式(declarative programming)

命令式范式

命令式编程是面向计算机硬件的抽象,有变量(对应着存储单元),赋值语句(获取,存储指令),表达式(内存引用和算术运算)和控制语句(跳转指令),一句话,命令式程序就是一个冯诺依曼机指令序列知乎

由此看以看出,我自己接触过的语言其实都是命令式,例如:C、C++、C#、Java、JS。我们平时所说的面向过程(Procedural)和面向对象(Object Oriental),也属于这个范式,站在编译器的角度,其实面向对象是包含面向过程的(我认为,在这个角度procedural和imperative似乎是同一个层次的概念),站在程序员的角度,二者在编程抽象上是风格迥异。在书中提到的泛型编程(generic)和元编程(metaprogramming),自然也属于这范式。泛型编程就是减少代码对输入变量的依赖,这就是我们课本中提到的C++模板的作用,模板可以根据不同的类型特化生成不同的代码。元编程是根据代码生成代码,这是课本没有介绍的C++模板另一个高级用途(在我目前的编程场景中,似乎不用这种方法也都能实现想要的结果,可能一般程序员很少用到这种方法)。泛型和元编程这种范式,在C++中可以统一为模板编程,因为C++的模板可以同时实现这两种编程。

声明式范式

Declarative programming is often defined as any style of programming that is not imperative.

以上定义来自维基百科。可以看出他是命令式编程的对立面,它的特点是只描述我需要什么,而不关心具体怎么去实现,并且他没有命令式编程中的副作用(side effects),就是一个函数或者表达式不管是什么时候调用,调用顺序如何都不影响他的执行结果,还有就是这种范式中的变量,是数学意义上的,例如i = i+1,这样的表达式错误的,所以他的变量是不可改变的(immutable),Python中也有类似的概念,这样的特性他的好处在于让并发计算的实现变得容易,多线程之间就不需要互斥变量这些手段去同步。

函数式编程(functional)和逻辑编程(logic)属于这种范式,Haskell和Prolog分别属于这两种范式的语言。函数式编程,这里函数同样是数学上的函数而不是C/C++中所说的函数。可以看出来,声明式范式相对命令式是一种面向数学的抽象,应该是一种更加高层次的抽象,更符合人类的理解。从声明式范式的理念来看,这应该是一种未来的编程方式,当智能化水平不断地提高,编程将会更加简单,亦或许人类都不需要参与编程。

书中给出C++中的编程范式有:过程、面向对象、函数式、元编程、泛型编程。对应到上面就是C++既是命令式范式也是声明式范式编程语言。所以从这里也看以看出来为什么C++相较于其他语言更加难学习,因为他实在是太“杂”了,Java和C#的设计都是偏向于面向对象特性,而C++并没有要强化某些范式而弱化其他范式,所以他是全能型选手,但是在特定的领域内又打不过其他选手,所以现在处境略微尴尬。

书中将C++的多种编程范式归类成四个子语言:C,Object-Oriental C++,Template C++、STL。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容