C++程序员最重要的能力

       作为一名还未毕业的大学生,谈这样的话题难免会让人觉得不自量力,然而这只是我在目前这个阶段的一些认识,谈谈自己的看法。

    在我看来,程序员是人与机器沟通的翻译官。人需要机器来帮助来解决一些问题,往往大部分人不想去为此而学习如何与机器沟通,所以需要一小部分人掌握这样的能力来为大部分人服务,这一小部分人就是程序员。

    和普通的翻译官一样,程序言需要懂得多门“语言”,我把这样的能力看做基础。可是一个具备了这样能力的程序员就能够胜任翻译官的任务了吗?显然不行,因为程序员得具备很好的理解能力,能够理解到别人到底想告诉机器什么,他才能够翻译,这样的能力就是我想谈的最重要的能力——抽象能力。

    抽象其实就是将一些实际问题上升成为一些概念,而这些概念能够通过程序员使用的工具——程序设计语言的特性很好的描述。虽然这样的能力很容易上升到各种程序员的层面,但是由于我是一名C++程序员,我只能在这个领域发表一些拙见。

    经验往往会抹杀创造力。说这句话可能好多人会反对。只是我觉得,一个程序员具备了很丰富的经验后往往会缺乏对问题重新认识重新抽象的勇气。他已经习惯了惯用法来解决各种问题,因为他有把握,但却阻碍了发展。我接触到的大部分有经验的C++程序员,他们能够构建出一个有实际功能软件,但是他们的代码一团糟。各种不合理的设计随处可见,错误异常满天飞。以前我以为只有刚踏入这一行学习的新手才会去拼凑代码来完成功能,但实际情况却给我打击不小。虽然功能拼凑出来了,当前的问题似乎解决了,但是没有任何人对整个工程有个总体的把握,而且工程难以维护,难以扩展,代码量呈现不应该有的庞大,不仅增加了自己的工作周期,还减少了软件的生命周期。

    很多人很专注于某领域里很具有针对性的技术,这点无可非议。但是这样的程序员往往会将通用的能力忽略,不懂得去抽象问题。他们在构建功能的时候几乎不做设计,或者做一些很粗劣的设计。别人使用其代码的时候非常困难,几乎很难谈到复用性,他们甚至不能够将复杂度分而治之。

    这是有经验的程序员。而很多大学生的思想也会令其将来成为此类程序员。这些新手很需要成绩来激励自己,所以一味的去追求一些功能上的实现,似乎能够实现某种功能,自己就能够征服宇宙。我将这种成绩称为“花架子”。好多大学生喜欢仿照一些讲述实际项目的书籍中的例程完成自己的“花架子”,还非常有成就感,似乎觉得自己就是未来的比尔盖茨。但是大部分这样的学生很缺乏基础,他们只会仿照现有的例子来做东西,根本没有弄明白别人工程背后的思想以及对问题的抽象。

    的确现在大部分中小企业需要的人才是马上能够做事的人才,大学生积累经验也是非常必要的。但是不要把仿照别人例子完成一个玩具程序当做经验积累,与其如此我觉得还不如把基础打扎实,毕竟有了扎实的基础才能够很快的上手。这里的基础不仅仅是一些专业知识方面的学习,还应该包括思想的学习。我把思想看做能力。一个大学生出来找工作的时候如果已经具备了很好的抽象问题的能力,那么老板给他一个问题让其解决,相信他能够很快的找到方向,设计出良好的解决方案,加上自己扎实的基础,实现自己的设计也是顺理成章的事情。

    回到我的标题,我指出C++这个特定的语言,因为我想谈的是现在很大部分C++程序员的现状。至少在我接触到的领域里,很多C++程序员其实对C++并不了解,能够用到的只能是C++中极少的部分。由于一些原因,C++不像某些语言将一些高级特性内建,但是这也让C++在效率和高级抽象方面有了一个较好的折中。不可否认C++很复杂,很庞大,我也曾经一度陷入其无尽的细节沼泽之中。后来我认识到,掌握一门程序设计语言是必须的,但不是最重要的。最重要的还是程序员自身理解问题,抽象问题,解决问题的能力,将问题很好的抽象化之后,只需要使用语言的特性来实现这些概念。C++使用类来描述概念,我们使用类去抽象问题其实就是将问题描述为类接口。一个定义良好的类接口让用户使用起来根本不必去考虑其实现细节,这就是一种将复杂度分而治之的思想。当复杂度都分到各个类实现中去了,那么问题也就不再复杂了。但是这些必须建立在程序员具有很好的抽象能力之上,不具备这样能力的程序员是不能够定义出良好的类,那么可想而知,使用其类的用户该是多么痛苦。

    在这里我不想多谈团队合作的一些细节,但是我个人觉得一个合格的C++程序员应该具备优秀的抽象能力。如果你是负责整个项目的架构,那么你就应该具备将整个项目所需要实现的功能整体抽象的能力,能够构建出整个项目的骨架;如果你是负责某个模块的设计,那么你就应该具备将此模块抽象成一个通用模块的能力,让各种需要你这个模块的地方都能够很好的使用。

    C++程序员的抽象能力其实就是将实际的问题运用C++语言特性来描述的能力,不论是使用其哪种泛型,我们的目的都是为了构建出一个优秀的软件,一个易维护、易扩展、生命周期长的软件。

    工具不重要,重要的是能力。把专业技术和程序设计语言看做工具,将思想看做能力。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值