在当我们学会了一门语言的时候(也就是说,记住了该语言的语法,词法,还有一些常用的函数),就意味着已经掌握了编写程序的基本工具。无论用的是社么语言,都差不多。只是工具之间有长有短。比如说,delphi,VB之类做windows环境的应用程序很方便;用JAVA开发基于网络的程序很轻松。假如我们用C(C++)写一个记事本软件,估计要写数百行代码才能完成,而且不能保证没有大错误,而用delphi,,或VC等可视化工具来做,就只要鼠标点点控件,几下就完成了,可谓方便。这就是说工具各有特点,各个方面都有各个方面的最适合的工具。不过工具只是工具,光靠工具是写不出好的程序的。就好比我要写一篇文章出来,首先确定用社么语言来写(汉,英,俄还是其他?很显然,如果我是写给中国人看,自然用中文,写给美国人看,当然用英文。)那么确定了语言之后呢?我就能写文章了吗?文章结构如何设计?写文章的方法技巧和注意事项是什么?这些我都不知道,自然写不出好文章。可见,要写一篇好文章,会语言是远远不够的。同样,要写出好的程序(程序运行结果正确,时间,空间效率高,健壮性好,可读性强等等),光会一门语言也是远远不够的。而编程的具体方法的学习才是我们的重点。
计算机教育普遍都是先从教授一门语言开始(一般是C语言),然后,就开始安排对数据结构和算法的学习。数据结构和算法设计分析是整个编程方法的基础,重中之重。以前流行过一句话:数据结构+算法=程序。这是不无道理的。计算机是用来处理和存储数据的。数据在计算机中的表示和存储不是无组织的,是有规律,有结构的。因此,当我们对这些按照一定规律组织的数据进行操作的时候,理论上存在一种或几种与某结构相比配的最优(或近式最优)算法,以次来确保操作数据的时空效率。打个比方,现有一排数据:a,b,c,d,e,如果经常要对其进行查找操作,顺序排列存储该数列能降低操作的时间。同样如果经常要对其进行插入或删除操作,采用链接存储则能降低该操作的时间复杂度。由此可见,合理的数据结构,高效的算法对程序质量有着多么重要的影响!又比如,我们要编写程序能对中国所有公民的身份证号进行排序。这是极其庞大的一组数据,如此多数据采取什么结构来表示和存储,以及应用什么算法来对其排序,使该程序在排序时尽量的快,占用的空间尽量的少。这都是学问,编程的学问!所以,可以讲,程序员对数据结构和算法的领悟程度直接决定了他的编程水平的高低。那么如何提高自己的水平呢?我们可以学习研究像C(C++)函数库(API)里的函数,或JFC(JAVA类库)中的函数实现,这些函数实现都是非常有经验的程序员编写的,有着很好的运行效率。再者,就是数学的重要,我认为数学对程序的重要性体现在对算法的支持上。比如说微积分思想,为计算机数值计算提供了理论指导;而数据结构和算法来源与离散数学,线性代数和概率统计中的思想和方法。另外,像计算机密码学,计算机图形学,计算机多媒体都离不开数学。好的算法需要数学工具来理论验证,也需要数学来改进,来完善!
那么,面向对象又扮演什么角色呢?说到底,我觉得面向对象思想的宗旨就是代码重用。面向对象里的三大概念:封装,继承,多态都是为了代码重用。重用质量高的代码,不但可以节省人力,而且极大提高了本身原程序的质量。比如,我要编写一多功能计算器,我依据自己喜好设计了界面,在具体功能实现上我继承了别人已经写好的正确功能类,不但省去了自己写的麻烦,而且也保证了该计算器的逻辑正确性,一举两得。在编程时运用面向对象思想,类的设计是最为关键得第一步,包括对类结构的设计和内部功能实现。其次就是对类进行准确合理的继承和多态化。显然,不正确的进行继承和多态会给整个软件带来巨大的错误隐患。面向对象思想在写小程序时或许体现不出优越,但在中大型软件开发时,它的用处便会极大体现出来。面向对象方法在解决软件危机里起到了举足轻重的作用。但在这里,我还是要强调一点,面向对象思想是极好的思想,极好的编程方法。但是如果没有质量好的代码可以值得被重用,面向对象方法就没有用武之地!可见,拥有良好数据结构和算法的功能代码块是保证整个程序质量的奠基石。
软件(尤其是中大型软件)质量好坏还有一个很重要的因素:软件体系结构。打个比方,我要建房子。软件体系结构就好比房子的结构,采用哪种样式(欧式?中式?)决定了房子的结构,软件体系结构的规划设计也就决定了软件本身的结构(软件的环境,功能模块的安排,位置,互相联系关系等等)。那么,房子的结构设计好了,就要解决建筑材料的问题。在这里,牢固的砖头和横梁是房子牢固的根本保证。同样,拥有良好数据结构和算法的功能函数或函数块也是整个软件质量的根本保证!有了质量过硬的砖头和横梁,只要结构合理,房子的寿命是完全可以保证的。一样道理,我们手头有了大批信的过的功能函数或函数块,在编程的时候严格按照软件工程规范,合理运用面向对象方法,按照科学的体系结构要求,就能在经济的条件下,开发出优良(准确,健壮,时空效率高,易修改补充,美观,易使用)的软件。
现在社会上多的是基本工不扎实的程序员,盲目追风,今天C#,明天JAVA。而开发工具又层出不穷,许多软件公司上半年在.net平台上做项目,下半年又在j2ee上开发,导致许多写代码的人来都来不及学。要应付这种现象,只有牢牢的打实基本功,以不变应万变。不管用什么语言,在什么平台上,有扎实功底的程序员都可以很快适应新环境,用极短的时间就可以产生效益,这也是软件公司所愿意看到的。所以,我想对刚刚步入编程领域的人们说,开发工具好比一朝风月,理论基础才是万古常青!真正想深入的,还是要先把理论基础打扎实为妙。说的大一点,中国软件业的发展不需要只知道几门语言,会用几个工具,却写不出优质代码的程序员。
本文出自 51CTO.COM技术博客
分享到:
相关推荐
在C、C++这样的编程语言中,理解指针、内存管理和面向对象编程等概念对于实现高效的数据结构和算法至关重要。C++的STL(标准模板库)提供了容器(如vector、list、set、map)、迭代器、算法等,大大简化了数据结构和...
通过阅读《数据结构与算法 Python语言描述》,读者不仅可以掌握数据结构的基本概念,还能学会如何用Python高效地实现这些算法,为编程实践和进一步的软件开发打下坚实基础。书中的实例和习题有助于加深理解,提升...
3. C++编程:此书使用C++语言作为实现数据结构和算法的工具,涵盖了C++的基础知识,如类、对象、模板、STL(标准模板库)、智能指针、异常处理等。通过源代码,读者可以学习如何利用C++的特性来实现高效的数据结构和...
《数据结构与算法 Python语言描述》是裘宗燕教授撰写的一本专著,主要面向希望深入理解数据结构和算法,并且希望通过Python语言实现这些概念的读者。这本书是北京大学的教学资源,因其深入浅出的讲解方式而备受推崇...
C++语言的特性使得本书中的实现更加贴近实际应用,包括类和对象的概念,模板的使用,以及面向对象编程的原则,这些都能帮助读者更好地将数据结构和算法融入到实际软件开发中。此外,C++标准库中的容器(如std::...
标题《数据结构,算法与应用——C++语言描述》说明了本书的主要内容和学习目的。首先,数据结构是计算机存储、组织数据的方式,它是用来处理数据的集合,这些数据集合不仅有特定的关系,而且还有可能应用到特定的...
3. Java语言:作为面向对象的编程语言,Java提供了丰富的库和工具,使得数据结构和算法的实现更为便捷。例如,Java集合框架(java.util包)为实现各种数据结构提供了基础类,如List、Set和Map接口,以及其实现类。...
Go语言,作为一门由Google开发的静态类型、编译型、并发型、垃圾回收的编程语言,同样重视对数据结构和算法的支持。本篇将深入探讨Go语言中常见的数据结构和算法实现,帮助你提升Go开发能力。 1. 数组与切片: 数组...
在Linux社区版的背景下,这份资料可能还包含了如何在Linux环境下调试和测试这些数据结构和算法的技巧,以及如何利用开源工具和库来辅助开发。学习这份资料,开发者不仅可以提升自己的编程技能,还能增强对操作系统...
C#和Java作为流行的编程语言,提供了丰富的库和框架支持数据结构和算法的实现。例如,C#的System.Collections.Generic命名空间包含了各种数据结构,如List、Dictionary, TValue>等;Java的java.util包则提供了...
通过阅读《Java数据结构和算法》(第2版),读者不仅可以掌握Java语言中数据结构和算法的实现,还能培养分析问题、设计高效解决方案的思维能力。这将对个人的职业发展,特别是在软件开发领域,产生深远的影响。书中...
《数据结构、算法与应用 C++语言描述》是学习计算机科学和软件工程不可或缺的经典教材,尤其对于深入理解和实践数据结构及算法有着极其重要的作用。原书的第二版更是在第一版的基础上进行了修订和完善,旨在为读者...
《数据结构与算法(C++版)实验和课程设计教程》是针对计算机科学与技术专业学生及编程爱好者的一本重要教材,它详细介绍了如何使用C++语言来实现各种经典的数据结构和算法。这本书的配套软件包包含了一系列的实践...
《Delphi 数据结构与算法》是一本专注于使用Delphi编程语言深入探讨数据结构和算法的专著。在软件开发中,理解和熟练运用数据结构与算法是提升程序性能、优化代码的关键。Delphi作为面向对象的 Pascal 编程语言,...
《数据结构与算法经典问题解析 Java语言描述》第二版是一本深入探讨计算机科学核心领域的书籍,专注于使用Java语言来阐述和解决数据结构和算法的问题。这本书对于任何希望在IT行业中提升自身技能,尤其是软件开发...
对于那些希望提升自身软件开发能力的人来说,《C++语言描述——数据结构算法与应用》这本书无疑是一盏明灯,指引他们深入探索C++编程语言如何在数据结构与算法的海洋中航行。 本书不仅是数据结构教材的又一次升华,...
C++作为一种强大的编程语言,提供了丰富的工具来实现各种数据结构和算法。本资源聚焦于C++中的数据结构和算法,旨在帮助您深入掌握这些核心概念。 数据结构是组织和存储数据的方式,它决定了数据的访问效率和操作...
C#语言本身具有丰富的特性和工具,如泛型、接口、委托、LINQ等,这些都可以帮助开发者更方便地实现和操作数据结构。泛型允许创建可应用于多种类型的代码,接口定义了对象必须实现的方法,委托则支持事件处理和回调...
"java 课设 数据结构与算法" 标签明确了三个关键点:项目使用Java编程语言,属于课程设计范畴,主要涉及数据结构和算法的学习与实践。 **文件名称列表:** "数据结构与算法课程设计" 没有具体的文件名,但可以推测...