当下定决心学习编程之后,很多读者又会提出第二个问题:学会编程就能成为软件工程师吗?其实,学会编程只是掌握了某种编程语言的使用规则,大家还需要学习很多其他知识才能成为一名软件工程师。那么还需要学些哪些知识才能成为软件工程师呢?本书专门讲授Java语言,所以此处抛开其他编程语言,仅讨论想要成为一名合格的Java软件工程师需要学习哪些知识。
1.基础类库
很多编程语言为了让开发者能够提高工作效率,往往会提供一些已经写好的代码供开发者直接使用。比如对一个数字求绝对值,程序员本来应该自己写代码来完成这个计算过程,但很多编程语言都提供了已经写好的代码供程序员直接拿来使用,这样就能减少程序员的工作量。Java语言也是如此,它把那些程序员常用的功能代码写好,并且封装到很多个“类”当中。用来存放这些“类”的地方就叫做“类库”。因为这个类库是Java语言自带的,所以把它称为“基础类库”。
学完了编程语言的语法规则之后,接下来就会学习基础类库中一些类的用法。当然,基础类库的内容非常丰富,几乎涵盖了程序员需要的所有功能,比如数学计算、字符串处理、文件处理等等。目前来说,Java基础类库中所包含的类多达几千个,因此程序员想要完全掌握这么多类的使用方法是不现实的,各位读者只需要把编程过程中最常用的那部分掌握熟练就可以。其余的类,只要在用到它们的时候能够通过查阅说明文档看懂它们的用法就行。
此处提到了一个专业术语叫做“类”。不理解这个术语的读者暂时先不必深究它的意义,只需要先把它简单的理解为一个具有某些特定功能的程序模块就可以,后面的章节中会详细讲解“类”的含义。
2.第三方类库
Java基础类库中所提供的那些类功能虽然已经很强大,但仍然不能完全满足软件开发的需求。很多有实力的大公司、IT行业组织甚至个人也注意到了这种情况,于是他们在基础类库的基础上,又开发出很多类库供广大程序员使用。因为这些类库并非由Java语言自带,而是由其他公司、组织或个人提供,所以它们被称为“第三方类库”或“第三方工具库”。
第三方类库往往是用来加强基础类库功能的,有的甚至填补了基础类库的一些空白。总之,第三方类库使得Java开发更加便利快捷。那么,程序员如何获得第三方类库呢?通常,第三方类库都以压缩包的形式出现,只不过这种压缩包并不是常见的rar或zip格式,而是jar格式。发布者会把这些压缩包上传到网上,程序员只需要按照发布者所提供的网址找到这些jar文件并下载,就可以在软件项目中使用它们。
由于全世界任何公司、组织和个人都可以提供第三方类库,所以第三方类库的种类繁多、功能各异、其规模大小差别也很大。一些规模庞大、影响力深远的类库甚至被称为“框架”。为什么被称为框架呢?顾名思义,就是说使用这些类库可以搭建某种类型软件项目的基本框架,程序员只需要在这个基本框架内完成特定功能的代码就可以。比如当今完广泛用于服务器开发的Spring系列框架,已经成为了从事服务器开发的Java软件工程师的必学技能。
当然,也有一些基本第三方类库的规模并没有那么大,它们往往用来加强某种特定的功能或者解决某个特定的问题。比如JMathLib,它是一个专门用于计算复杂数学表达式并能够图形化显示计算结果的Java类库。
当今业界几乎已经没有哪一种Java软件项目的开发不会用到第三方类库,因此想要成为一名软件工程师,都要掌握一些第三方类库的使用。至于软件工程师要掌握哪些第三方类库,主要取决于他的具体工作内容。比如上文提到的服务器开发,Spring系列框架基本上就是必须要掌握的。但如果从事的是其他方向的开发工作,必须掌握的框架技术也会随开发内容的改变而发生变化。
3.辅助工具
从事Java开发还必须要掌握一些其他辅助工具的使用方法。比如说为了高效安全的使用第三方类库并方便的管理jar文件,程序员往往会使用Maven工具。为了实现团队开发代码版本的统一管理,往往会使用svn或git这样的版本管理工具。为了更加方便的访问数据库,程序员往往会使用一些数据库客户端软件等等。这样的例子很多,在此不能一一列举,但想学习Java开发的广大读者必须知道:软件工程师的工作并不只是单纯的“编写代码”,开发软件还需要做大量的非编码工作,为了很好的完成各项工作,开发人员就必须学会使用相关辅助工具。当然,具体要学会使用哪些工具,这也要看程序员具体所从事工作的内容到底是什么。
4.常用算法
想要成为软件工程师,还必须要掌握一些常用的算法。所谓“算法”,通俗来讲就是解决一些具体问题的办法。当然,并不是任何一种解决问题的“办法”都能称得上“算法”。这里所说的“算法”是指经过科学论证其正确性的、并且能够通过计算机程序实现的计算方法。比如,有一组大小无序的数字,程序员希望通过计算机程序使它们最终排列成一组有序的数字。对于这样的一个问题,人们经过研究之后给出了很多种解决方案,并且论证了这些解决方案的正确性和可实施性,这样的解决方案才可以称为“算法”。当然,解决数字排列问题的算法只是算法当中比较简单一类。用来解决更为复杂问题的算法还有很多,比如从A地点到达B地点,有N种走法,每种走法的路程长度和用时长短各不相同,怎样走才能做到路程最短或用时最短,这也需要用到相关的算法来完成计算。目前最为火爆的人工智能和大数据领域,其最核心的工作就是要研究各种复杂的算法。
随着计算机在各行业的广泛应用,为了解决不同行业的具体问题,算法已经发展成为了一门独立的学科。算法是解决问题的思路与办法,它与编程语言无关,也就是说:一种算法可以用多种编程语言来实现。软件工程师为了解决一些通用的业务问题,就需要熟练掌握常见算法的使用。
5.相关学科知识
软件开发是一个综合性系统项目,软件工程师并非只会用到“编程”这一种技能。一款软件的运行,往往要访问多种资源来获得程序所需的数据,比如要从数据库、网络、磁盘文件等各种数据源中获得数据。如果软件需要从数据库中获得数据,就要求软件工程师掌握数据库方面的知识。如果软件涉及到网络数据的传输,就需要软件工程师掌握计算机网络的相关知识。当然,如果涉及到计算机底层的操作,软件工程师还必须学习操作系统的相关知识。总之,一名合格的软件工程师,除了要掌握“编程”这个基本技能以外,还需要学习很多与软件开发相关学科的知识。
除此文字版教程外,小伙伴们还可以点击这里观看我在本站的视频课程学习Java。
标签:类库,Java,工程师,编程,第一章,程序员,算法,初学者,软件 From: https://blog.51cto.com/mugexuetang/5976390