接待置备我的新书《给儿童的数学思惟课》
这年初,讯息奥赛逐步投入了群众的视线。儿童投入四年级之后,总有家长问:儿童该学C仍然C++?原本尚有Python,我先抉择性粗心。
从计划机从业人员的角度而言,两门说话有着很大的差别,C说话是面向经过的通用程序打算说话,而C++则是面向方向的通用程序打算说话。
啥叫面向经过和面向方向?浅显地讲,面向经过注重于剖析处置题目所须要的环节,而后用一个个函数去完成这些环节。而面向方向则注重于剖析题目中的参加方向以及这些方向之间的瓜葛。
CSDN上举的一个例子对照抽象。
用面向经过的法子写出来的程序是一份蛋炒饭,而用面向方向写出来的程序是一份盖浇饭。
啥意义呢?
蛋炒饭制做的末了一同工序是把米饭和鸡蛋混在一同炒匀。盖浇饭呢,则是把米饭和盖菜离别做好,你假使要一份红烧肉盖饭呢,就给你浇一份红烧肉;假使要一份青椒洋芋盖浇饭,就给浇一份青椒洋芋丝。
蛋炒饭的利益即是入味匀称,吃起来香。假使恰好你不爱吃鸡蛋,只爱吃青菜的话,那末惟一的法子即是集体倒掉,从新做一份青菜炒饭了(讲的是紧耦合)。盖浇饭就没这么多费事,你只要要把上头的盖菜拨掉,退换一份盖菜就能够了(讲的是松耦合)。
盖浇饭的利益即是"菜"“饭"离开,进而升高了制做盖浇饭的灵便性。饭生气意就换饭,菜生气意换菜。用软件工程的专科术语即是"可维持性"对照好,“饭”和"菜"的耦合度对照低。蛋炒饭将"蛋”“饭"搅和在一同,想换"蛋”"饭"中任何一种都很艰巨,耦合度很高,以致于"可维持性"对照差。软件工程寻觅的方向之一即是可维持性,可维持性重要体如今3个方面:可了解性、可测试性和可点窜性。面向方向的利益之一即是显著的革新了软件系统的可维持性。
自然,C说话在处置紧耦合题目方面也不统统像上头的例子那末不胜。一名C说话能手也能写出很好的松耦合程序,而只进修了C++语法的程序员却写不出好的面向方向程序。这背面,是程序员对题目笼统和系统可扩大性的深入了解和寻觅,曾经回升到了内功层面。笼统与解耦,这是一名优良的程序员深入骨髓的思惟方法,并不会由于你学了一门说话就有根基的转变。
好了,说了这么多。那必定要学C++啊。
原本,万万不要听外人忽悠,关于参加讯息竞争的中小弟子而言,上头说的这些都不是缘由。儿童学C++缘由惟独一个,即是C++是测验说话!
中小弟子所学的C++,根本不波及面向方向的实质,是以根本同等于C。家里有一册华夏计划机学会主编的《CCF中弟子存算机程序打算》书,即是用的C++说话,内部当面向方向的实质根本上只字未提,而这原本才是C++的中枢。
自然,假使要真实学C++,那保举《C++Primer》和《C++编程思惟》。不过,中小弟子要了解面向方向这一套东西,仍然有难度的。
由于