从零开始学编程:C++从零开始学编程



何谓

  即过程顺序准确地说应该是顺序排列多个过程其是思路方法描述比如吃菜先用筷子夹起菜再用筷子将菜送入嘴中最后咀嚼并吞下其中夹、送、咀嚼和吞下就被称作命令而菜则是资源其状态(如形状、位置等)随着命令执行而不断发生变化上面就是吃菜这个思路方法描述也就是吃菜

  任何思路方法都是为了改变某些资源状态而存在因此任何思路方法描述也就是也都定有命令这个东西以及其所作用资源命令是由执行者来实现比如上面吃菜其中夹、送等都是由吃菜人来实现而资源则定是执行者可以改变东西而命令只是告诉执行者如何改变而已

  电脑和上面是思路方法描述而这些思路方法就是人期望电脑能做事(注意不是电脑要做这经常直混淆着许多人)当人需要做这些事时人再给出某些资源以期电脑能对其做正确改变如计算圆周率其只是思路方法描述本身是不能发生任何效用直到它被执行人为给定它块内存(有关内存请参考C从零开始( 3))告诉它计算结果精度及计算结果存放位置后其才改变人为给定这块内存状态以表现出计算结果

  因此对于电脑命令就是CPU指令而执行者也就由于是CPU指令而必须是CPU了而最后资源则就是CPU可以改变其状态内存(当然不止如端口等不过般应用都大量使用内存罢了)所以电脑就是电脑如何改变给定资源(般是内存也可以是其他硬件资源)描述注意是描述本身没有任何意义除非被执行

  何谓编程

  编程就是编写即制订思路方法为什么要有思路方法?思路方法是为了介绍说明而的所以要有介绍说明就有很多原因了但电脑编程根本原因是语言区别且不仅区别连概念都不相通

  人类语言 5花 8门但都可以通过翻译得到正解人类生存在同个 4维物理空间中具有相同或类似感知而电脑执行时CPU所能感受到空间和物理空间严重区别所以是不可能将电脑翻译成人类语言描述这很重要其导致了大部分员编写出拙劣代码人想和电脑想没有共性所以他们在编写时就随机地无目地编写进而导致了拙劣却可以执行代码
电脑语言就是CPU指令CPU就这个感知途径(准确地说还有内存定位、中断响应等感知途径)不像人类还能有肢体语言所以电脑编程就是将人类语言书写思路方法翻译成相应电脑语言个翻译过程这完全区别于翻译由于前面红字所以是不可能翻译

  既然不可能翻译那电脑编程到底是干甚?考虑个木匠我是客人我对木匠说我要把摇椅躺着很舒服那种然后木匠开始刨木头按照个特殊曲线制作摇椅下面曲木以保证我摇时候重心始终不变以感觉很舒服这里我编了个简单只有条指令——做把摇着很舒服摇椅而木匠则将我翻译成了刨木头、设计特定曲木等系列我看不懂的所以会这样在这里就是我生活空间和木工(是木工工艺不是木匠)没有共性这里木匠就相当于电脑员兼CPU(最后由木匠来制作摇椅)而木匠手艺就是CPU指令定义而木匠就将我翻译成了木工些规程由木匠通过其手艺来实现这些规程也就是执行

  上面由于我生活空间和木工(指木工工艺不是工人)没有共性所以是不可能翻译但上面翻译成功了实际是没有翻译在木工眼中那个摇椅只是些直木和曲木拼接而已木工空间中根本没有摇椅概念只是我要把那堆木头当作摇椅进而使用如果我把那堆木头当作凶器则它就是凶器不是什么摇椅了

  “废话加荒谬加放屁!”也许你会这么大叫但电脑编程就是这么回事CPU只能感知指令和改变内存状态(不考虑其他硬件资源及响应)如果我们编写了个计算圆周率给出了块内存并执行完成后就看见电脑屏幕显示正确结果定注意这里电脑实际只是将些内存数值复制、加减、乘除而已电脑并不知道那是圆周率而如果执行人不把它说成是圆周率那么那个结果也就不是圆周率了可能是个随机数或其他什么只是运气极好地和圆周率惊人地相似

  上面东西我将其称为语义即语言意义其不仅仅可应用在电脑编程方面实际上许多技术如机械、电子、数学等都有自己语言而那些设计师则负责将客户简单翻译成相应语言描述作为员是极其有必要了解到语义重要性(我在我篇文章语义需要中对代码级语义做过较详细阐述有兴趣可以参考的)在后续文章中我还将提到语义以及其对编程影响如果你还没有理解编程是什么意思随着后续文章阅读应该能够越来越明了

电脑编程基础知识——编译器和连接器

  我从没见过(不过应该有)任何本C教材有讲过何谓编译器(Compiler)及连接器(Linker)(倒是在很老C教材中见过)现在都通过个类似VC这样编程环境隐藏了大量东西将这些封装起来在此对它们理解是非常重要本系列后面将大量运用到这两个词汇其决定了能否理解如声明、定义、外部变量、头文件等非常重要关键

  前面已经介绍说明了电脑编程就是个“翻译”过程要把用户翻译成CPU指令其实也就是机器代码所谓机器代码就是用CPU指令书写被称作低级语言工作就是编写出机器代码由于机器代码完全是些数字组成(CPU感知切都是数字即使是指令也只是1代表加法、2代表减法这数字和工作映射)人要记住1是代表加法、2是代表减法将比较困难并且还要记住第3块内存中放是圆周率而第4块内存中放是有效位数所以发明了汇编语言些符号表示加法而不再用1了如用ADD表示加法等
由于使用了汇编语言人更容易记住了但是电脑无法理解(其只知道1是加法不知道ADD是加法电脑只能看见数字)所以必须有个东西将汇编代码翻译成机器代码也就是所谓编译器即编译器是将种语言翻译成另种语言



  即使使用了汇编语言但由于其几乎只是将CPU指令中数字映射成符号以帮助记忆而已还是使用电脑研究方式进行研究不够接近人类研究习惯故而出现了纷繁复杂各种电脑编程语言如:PASCAL、BASIC、C等其被称作高级语言比较接近人研究模式(尤其C概念推出)而汇编语言则被称作低级语言(C曾被称作高级低级语言)它们不是很符合人类研究模式人类书写起来比较困难由于CPU同样不认识这些PASCAL、BASIC等语言定义符号所以也同样必须有个编译器把这些语言编写代码转成机器代码对于这里将要讲到C语言则是C语言编译器(以后编译器均指C语言编译器)

  因此这里所谓编译器就是将我们书写C源代码转换成机器代码由于编译器执行个转换过程所以其可以对我们编写代码进行些优化也就是说其相当于是个CPU指令将我们提供翻译成机器代码不过它工作要简单些了从人类研究方式转成电脑研究方式这过程已经由员完成了而编译器只是进行翻译罢了(最多进行些优化)

  还有种编译器被称作翻译器(Translator)其和编译器区别就是其是动态而编译器是静态如前面BASIC编译器在早期版本就被称为翻译器其是在运行时期即时进行翻译工作而不像编译器次性将所有代码翻成机器代码对于这里“动态”、“静态”和“运行时期”等名词不用刻意去理解它随着后续文章阅读就会了解了

  编译器把编译后(即翻译好)代码以定格式(对于VC就是COFF通用对象文件格式扩展名为.obj)存放在文件中然后再由连接器将编译好机器代码按定格式(在Windows操作系统下就是Portable Executable File Format——PE文件格式)存储在文件中以便以后操作系统执行时能按照那个格式找到应该执行条指令或其他东西如资源等至于为什么中间还要加个连接器以及其它细节在后续文章中将会进步介绍说明

  也许你还不能了解到上面两个概念重要性但在后续文章中你将会发现它们是如此重要以至于完全有必要在这唠叨

Tags:  从零开始学法语 从零开始学c 从零开始学c语言 从零开始学编程

延伸阅读

最新评论

发表评论