精明的程序员——封装了什么

精明的程序员——封装了什么

我一向对JAVA开发有偏见,总是看不惯一些老师带着学生们去写各种各样的JAVA程序。前些天又和一个比较喜欢JAVA的朋友争论到底是JAVA好还是C好,争来争取也没有一个结论。最多不过是些“各有千秋”之类的中庸之词。

有人说C效率高,那么就有人反驳说,JAVA开发快。有人说C可以操作与硬件平台相关的功能,JAVA很难做到;那么倾向JAVA的人就会说,同一段JAVA代码放在不同的硬件平台都能执行,而C却需要很多移植工作。

作为学生,总会看到网上的JAVA程序员与C程序员的各种争论。然后思考自己,到底是应该学习哪一种语言好。其实说白了,不过都是工具,就是抽象的程度不同罢了。JAVA抽象程度高,而C的抽象程度低,当然汇编更加低。如果是为了学着简单,快速上手,当然是学JAVA;反之可以选择C。于是基于“简单易学”这个原因,很多人踏上了JAVA这条不归路。

我认为,作为学生,应该多学习一些理论性的框架与一些底层的结构。虽然这些知识往往非常难啃,但是对一个学生未来成长的空间,起着很大的作用。易学的知识往往是经过了层层包装之后的东西,前人将内部的结构与细节封装起来,留下一个操作的接口给上层的人们用。这就是面向对象的精髓之一:封装。

封装就是包装,它把一些复杂的构造包起来,不让使用者看到,然后简单告诉你它可以做什么,而不是向你解释它是如何做的。这样做的确可以大大提高用户使用的效率,但是在不知不觉中,让一个开发者转变成了中级的用户的身份。我认为,这就是封装的坏处。

第一次听Linux开发的课程时,老师问我们谁知道gcc编译一个源文件的过程。我一听就傻了,要知道,以前都是在Windows下面用VC写C代码的,可以点击一下小三角按钮或者Ctrl+F5就可以编译加运行了。在那时候,我虽然已经写过很多代码,但是对编译的了解仅“编译”二字而已。后来用gcc写了些程序,才知道,原来编译器要先预编译,然后编译,之后汇编,最后链接,才能变成可执行文件。明白了这些,我突然发现,以前遇到的各种让我头疼的各种编译器提示错误的含义,竟然是那么清晰易懂!IDE做的工作实在是太多了,我用了那么多年的VC,却从来没有打开过include了无数次的stdio.h文件。真的很恨VC,它使我的开发工作变得简单,却让我对许多重要的知识失去了学习机会。当遇到问题时(比如编译器报错),变得束手无措。

与Linux有关的例子还有很多。在学习操作系统的时候,仍旧使用的Windows,发现与课堂学到的知识完全无法联系。学了文件,却以为就是我的电脑里那些东西;学了管道,却从来没有见过。用了Linux才知道,图形界面只是操作系统之上运行的一个软件而已。文件,管道,消息这些概念在Linux里面真真切切的看到了之后,对操作系统的理解大大加深。

不得不说,Windows的图形界面做的让人用起来很舒服,很直观,也很方便。但是方便了用户,却不方便了学习操作系统的人。

封装是一种很好的思维方式,也是一种优秀的设计方法。它尽可能少地保留了信息,方便了使用者。可是,它也让使用者渐渐变得“无知”,变得失去刨根问底的好奇心,最终变成最傻瓜式的用户。

我觉得,一个使用者,应该尽可能少地了解一些细节,方便易用是原则;一个开发者,应该尽可能多地了解一些细节。但是当我们学习的时候,更要慎重考虑。某个模块,它是封装了没有用的细节,还是连同我们要学的东西一起封装掉了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值