学会开放性的思维

 

经常在论坛中看到一些问题:“我应该学习哪门语言?”“XX语言能做什么吗?”我对想对这类想法给一个我的见解。本文多少涉及到一些语言的评论,仅代表个人意见。

学会开放性的思维

我发现初学者最喜欢问的一个问题就是“我应该学什么语言?”。想不浪费时间学好一门语言然后就用这个语言解决所有问题。在提出我的见解前我先引用一段Eric Raymond的话

如果你还不会任何计算机语言,我建议你从Python开始。它设计清晰,文档齐全,对初学者很合适。尽管是一门很好的初级语言,它不仅仅只是个玩具。它非常强大,灵活,也适合做大型项目。
但是记住,如果你只会一门语言,你将不会达到黑客所要求的技术水平,甚至也不能达到一个普通程序员的水平---你需要学会如何以一个通用的方法思考编程问题,独立于任何语言。要做一名真正的黑客,你需要学会如何在几天内通过一些手册,结合你现在所知,迅速掌握一门新语言。这意味着你应该学会几种不同的语言。如果要做一些重要的编程,你将不得不学习C语言,Unix的核心语言。其他对黑客而言比较重要的语言包括Perl和LISP。 Perl很实用,值得一学;它被广泛用于活动网页和系统管理,因此即便你从不用Perl写程序,至少也应该能读懂它。 LISP 值得学习是因为当你最终掌握了它你会得到丰富的经验;这些经验使你在以后的日子里成为一个更好的程序员,即使你实际上可能很少使用LISP本身。当然,实际上你最好四种都会。 (Python, C, Perl, and LISP). 除了是最重要的四种基本语言,它们还代表了四种非常不同的编程方法,每种都会让你受益非浅。”

大家看了这段话是否立刻就想按Eric Raymond的话从Pyton开始学习?或者学习他提出的四种中的C语言?且慢,我们注意这样几句话:“你需要学会如何以一个通用的方法思考编程问题,独立于任何语言。”“(Python, C, Perl, and LISP). 除了是最重要的四种基本语言,它们还代表了四种非常不同的编程方法,每种都会让你受益非浅。” 可以看出Eric Raymond提出四种语言实际是提出四种不同的编程思想。他想告诉大家的就是:开放的思维,不要局限在一个语言当中,即“通用的方法思考编程问题”。

    也许有人反对说精通一门比懂很多而不精要好。确实我们必须精通一门,这个是可以根据自己需要来选择的。但不代表我们只需要学习一门语言,因为只懂一门语言很容易被它的局限性限制。C语言很灵活但是对数据的抽象处理不够。C++够强大也灵活了吧?它学习了C的灵活和高效以及Simula的抽象数据能力。可是C++的面向对象机制比不上Java。而当你学了Lisp以后你会发现原来程序还可以这样编,虽然C++也号称可扩展性,但Lisp的扩展性是C++所不能及的。而且Lisp是一种函数型语言,与面向机器的语言有着不同的思维方式,Java也从这里借用了不少思想。我觉得每一个语言都有最擅长的领域和不够的地方。没有一种语言真正通用,即使是C++,有些问题用C++来做实在有点吃力。这里一定有人有对C++痛苦的回忆。Java确实很优秀,适合分布式计算,但Java太安全了,可能不少有黑客气质的不喜欢它,因为它为了安全牺牲了很多灵活性。

我们应该学会开放性思维,看问题要看到最核心的问题,最根本的根本,而不会被其他的枝叶或表象所迷惑,做到这一步后才算比较成功。这样就会有一种分析问题的方法,学会怎么样把问题的表象剖开,看到它的本质。这时你碰到任何具体的问题,只要给点时间,都能轻而易举地解决。选择程序设计语言在这里只是选择不同工具。

并不是说工具不重要,但是如果没有一个很好的思想,那么这个工具你能用的好吗?而且解决一个问题并不是只有一种可能,或者这个问题的解决可能分几个部分而不同部分要不同的方法。这个时候没有开放性的思维,能解决好这个问题吗?就以Emacs为例。Emacs的底层代码是C写的而上层代码却是Lisp。也因此Emacs足够强大快速而且又有很强的可扩展性。如果仅采用单一的C编写,那么就是vi了。它很快也很灵活,但它扩展性怎么样?

看到一些关于该选择什么语言的问题我觉得真可笑,不知道他们想的是学语言还是学着解决问题。我们学习编程只是为了学习写程序本身还是为了学会用编程解决问题呢?如果是前者,真好你是个历史学家,尤其是只用C和汇编的可以称为考古学家了。如果是后者,那么不必再问选择什么语言了,学会编程的思想最重要,选择一门语言然后学习它的思维方式。这时先选哪门就和应该上午吃苹果还是下午吃橘子一样了,你应该熟悉更多的工具。

补充一些就是独立于程序语言以外的编程思想,那就是算法,数据结构,和编码规范。不论你精通多少门语言,当遇到一个问题能否用最快最好的方法解决,那就是考验你的算法设计能力和数据结构的操作能力了。而用程序清晰的表述一个问题就是看你编码是否规范了。当你需要改进程序时你会发现一个编写清晰易读的程序维护起来要方便的多,这也有助于快速的解决问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
postgresql的开放性体现在以下几个方面: 1. 开源性:PostgreSQL是一个开源的关系型数据库管理系统,它的源代码可以被任何人免费获取、使用和修改。这使得用户可以根据自己的需求进行定制和扩展。 2. 标准兼容性:PostgreSQL遵循SQL标准,并且支持大部分SQL标准的特性。它还支持许多其他数据库系统不支持的高级功能,如复杂的查询、事务、触发器和存储过程等。 3. 扩展性:PostgreSQL提供了丰富的扩展机制,允许用户根据自己的需求添加新的数据类型、函数、操作符和索引等。这使得用户可以根据自己的业务需求进行定制和优化。 4. 多样性的编程接口:PostgreSQL支持多种编程语言的接口,如C/C++、Java、Python、Ruby等。这使得开发人员可以使用自己熟悉的编程语言与PostgreSQL进行交互。 5. 多平台支持:PostgreSQL可以在多种操作系统上运行,包括Windows、Linux、Mac OS等。这使得用户可以根据自己的需求选择合适的平台进行部署。 6. 社区支持:PostgreSQL拥有一个活跃的全球社区,社区成员可以通过邮件列表、论坛、博客等方式进行交流和分享。这使得用户可以获得及时的技术支持和解决方案。 总结起来,PostgreSQL的开放性使得用户可以根据自己的需求进行定制和扩展,同时也提供了丰富的功能和多样的编程接口,使得开发人员可以更加灵活地使用和开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值