发布于2026-07-21 阅读(0)
扫一扫,手机访问
什么是编程思想?答案可能很复杂,但也可以很简单。一句话来讲,就是用计算机来解决人们实际问题的思维方式,即编程思想。

学习编程语言的最终目的,就是希望用计算机来解决实际问题。那么,学习计算机该如何入手?很多初学者,尤其是非计算机专业的人,都会犯难。面对如此多的编程语言(比如C、C++、Ja va、C#……)和种类繁多的应用技术(比如Windows编程、Linux编程、数据库、网络编程……),确实让人眼花缭乱,摸不着头脑。这篇文章就来聊聊学习计算机的步骤和编程思想的发展脉络。
计算机的发展大家多少有所了解,这里就不多费口舌。目前,我们用的CPU只能识别0和1——这是现状(如果你能发明另一种机器,能够识别更多符号,那绝对支持你,并由衷希望你能有所成就)。这个阶段最具代表性的书籍就是《计算机组成原理》。这门课的精髓在于两点:第一,计算机由哪些部分组成,各有什么作用,少一个部件会有什么后果。虽然当初对这本书看得不是很透,但看完后至少知道了:电脑只要有个CPU、主板、内存就能点亮;加个软驱,就能运行DOS系统;再加个光驱、硬盘,就能把Windows系统放到硬盘上跑起来。第二,CPU是如何工作的?CPU做了哪些事情?为什么只能认识0和1?CPU的寻址方式是什么?对CPU了解不深,这里就不班门弄斧了。但有一点需要知道:CPU的基础计算只有三个——与、或、非。正是这三个逻辑门,实现了现在所有的计算机程序计算。
计算机只能认识0和1,但人不能只用0和1来写程序。为了方便写程序,出现了0和1的第一层抽象标记——汇编语言。汇编里的那些标记是直接对应硬件的,硬件生产厂商都有明确的指令说明书,这些汇编标记可以被硬件直接识别。比如CPU,生产厂家会有寄存器的标识(如ax, bx, cx),操作指令标识(mov)等。驱动方面的编程大多会用到这些东西。学习汇编的核心在于:你需要认识到汇编是一种过程性的编程语言,而目前的CPU只能执行过程性的程序,任何高级语言都必须转换成过程性的编程语言后才能交给CPU执行。在汇编里主要有三个操作:比较、跳转(goto)、过程调用(call)。为什么说它是过程性的编程思想?值得好好体会一下。不妨写几个算法的程序(用到比较、跳转、过程调用),再来看汇编程序的特点,相信你会有所感悟。值得一提的是,如果你对操作系统感兴趣,也可以了解一下什么是保护模式。
随着人们解决的问题越来越复杂,汇编程序显然束缚了计算机软件的发展。于是,编程思想发生了一场革命性的变化——结构性的编程方法出现了。在结构性编程思想的语言中,C语言首当其冲。C语言里有几个能体现结构化思想的地方:分支(if)、循环(while, for)、结构体(struct)。只要会用这三个,就能写出结构化的程序,但不一定了解什么是结构化的编程方法。什么叫做结构化?为什么说goto会破坏程序的结构化?结构体有什么作用?你能说出结构体的哪些好处?这些都是值得认真体会的地方。别人给的定义不见得全面,还是自己理解更靠得住。结构化编程里最具代表性的书籍就是《数据结构》,具体哪本书比较好就不清楚了,好像都差不多,只要是用C写的就行。C语言的《数据结构》专门讲怎么用结构性的编程思想来解决实际算法问题。看完某些章节,然后自己找个问题,用程序去实现它。多写一些程序,会很有帮助。如果第一遍看得很模糊,不妨先放一放,过一段时间再看,可能会有豁然开朗的感觉。另外需要说明的是,并不是所有时候结构化编程都好。某些时候,结构化编程反而会让程序更繁杂(比如结构化编程希望函数只能有一个入口、一个出口,然而有时一个出口会使程序看起来更繁杂)。
现在该说说面向对象编程了,这也是目前用得最多的编程思想。什么是面向对象?它和结构性的思想有什么不同?从程序语法上看,面向对象比结构性程序多了两个特性:
结构体成员的私有化。在结构化程序里,结构体的成员都是公有的。而在面向对象中,结构体改称为类,成员分为公有和私有两个部分。就这一点不同,就产生了接口的概念——接口不就是类成员的公有部分吗?(刚开始接触面向对象时,以为只有定义成interface的才叫接口,现在想想很好笑。)
类的继承。因为出现了继承,才出现了多态。而正是因为多态,才出现了诸如隐藏、虚函数等等概念。多态的出现,能够让同一组数据,在不同的阶段,用同一种表达方式,执行不同的操作。如果把这个领悟到了,你会感叹一句:原来程序是可以这么写的。
以上两点的变化,使得编程思想随之发生了巨大转变——它让程序更适合人的思维方法来编写。面向对象的编程语言就很多了,可谓五花八门:C++、Ja va、C#……这三种语言,从使用体验来看,各有特点。都说C++和Ja va有很大不同,而Ja va和C#却非常相似,你知道为什么吗?最根本区别就在于垃圾收集器。因为Ja va里有垃圾自动收集功能,所以Ja va不能和C兼容,也不能使用指针。在C++中,值类型和引用类型是可以自己定义的——如果对象被定义为值类型,当编辑器自动把对象收集走之后,有时自己会一无所知;如果定义为引用类型,又必须记得释放掉,否则会引起内存泄漏。在Ja va和C#里就不一样,自定义的类初始得到的对象只能是引用类型,而且有垃圾收集器帮你回收,所以不会出现内存泄漏的问题。C#比Ja va后出来,Ja va具有的特性C#基本上都有,而且还具有一些Ja va所没有的特性(但C#目前不能在Linux上运行)。当然,这里不是说哪个语言好、哪个语言坏,它们都是实现面向对象编程的工具。你也可以用C或者汇编写一门支持面向对象的语言出来(如果你想做,绝对支持,为中国的软件事业贡献一份力量,免得总说什么什么语言都是外国人发明的),只要它能够实现数据封装、成员私有化和继承就行。在面向对象编程里,代表性书籍就要属《设计模式》了。不过设计模式这个东西,不是看书就能看懂的,硬套那些模式不一定有好处。只有设计做多了,才能有所领悟,自己总结,总结多了就会发现和书上的东西不谋而合,甚至可能比书上总结得更好。
好了,目前编程思想的发展就到这一步了。将来的编程思想会是什么样子,也不得而知。希望有志之士能够发明一种新的编程思想,推动软件业的发展,让中国也来引领一下世界软件的发展潮流。如果你是初学者,可以按照上面的顺序来学习计算机,希望在每个环节中能掌握重点。相信一年之后,你就会有所感悟。
大家都希望学的东西可以用来赚钱,而往往能快速用来赚钱的都是一些应用技术,像Windows编程、Linux编程、Web开发等等。掌握了其中一门技能,就可以谋得一个职位,可能还能拿到不错的薪水。然而,如果你掌握了编程思想,那么那些应用技术将一通百通——因为应用技术往往是对特定函数(通俗一点就是调用API)的调用,这些东西到专门的网站上查手册就一目了然。掌握了编程思想,你将不再局限于某个特定的编程技术,而是对整个软件系统有了全局把握,研究的不再是编程技术,而是协议和规范。
大家在学习初期看书,最好不要看电子书,而是买纸质书(电子书用来当词典查阅一下还是不错的)。因为电子书看一会儿眼睛就花,容易让人烦躁,无法静下心来体会书里的内容。一本书、一支笔、一个草稿本,是最佳的学习状态。遇到不懂的地方到技术论坛里讨论一下还是不错的,里面一般性的问题能够找得到答案。学习计算机需要达到一种状态:任何时候脑海里都会隐约思考——对计算机里某种原理的理解,或者寻找某种问题的算法。有时一个新想法的闪现会让自己兴奋不已。如果你表现出这种状况,说明你对计算机有着浓厚的兴趣。
最后补充一点,就是中国的一句老话:“尽信书,不如无书”。编程的学习还是需要有一点批判的精神和创造的精神。对于某些东西不要过早下定论,或许你某一个智慧的闪光,将为计算机开辟出一个新的发展方向。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8