到底是 Java 好还是 Python 好?

语言的优劣之争是个永恒的话题,有时候一次偶然地“擦枪走火”甚至可能会引发一场铁杆粉丝之间的“战争”。

也经常有人问我:“老刘,到底是Java好还是Python好? 我应该学习哪个语言?”

我也挺为难的,只好说道:

Python挺适合入门的,看起来很简单,适合创业团队,可以快速开发,快速上线,快速迭代。适合特种部队的突袭。等到发展到一定规模,动态语言的劣势就会体现出来,维护/重构难度高,特别是我觉得动态语言写的代码腐化速度要比静态的Java要快一些。

Java呢,语法相对Python啰嗦,表达力要弱一些,开发起来一板一眼,有很多规范,适合集团军的大规模协同作战;有很多著名的框架和类库,性能不错,系统稳定而成熟,是开发大型系统的极好选择。

他说:“老刘你这是在和稀泥嘛,我到底应该学啥?”

我说:“你应该把注意力放到那些和Java无关,和Python无关,能反映一个程序员水平高低的编程的共性问题。”

举个非常简单的例子,开发中需要实现一个定制的、简单的缓存,如果使用ehcache ,memcached, redis这样的开源系统就太重量级了,经理要求你新写一个,可以支持(key,value)存储,设置过期时间,过期的可以自动清理掉,你能不能快速地实现一个高质量的版本?

这其中涉及到的就是数据结构和算法、以及线程的知识,和具体的语言关联度很小。

再比如给你一个需求,你能不能找出其中“概念”,从而设计出类?能不能做好信息的封装和隐藏,定义出良好的接口,让每个类的职责单一而准确?

Python中有class , Java 中也有class, 但是上述工作却和具体语言没什么关系。你需要做的是利用你的经验,在脑海中做一次思维体操,然后用某个语言工具把他们表达出来。

有些“概念”比较容易发现,有些“概念”和现实没有直接的对应关系,需要抽象一下才能找到,这就比较考验抽象的能力了。

可能有人说,我们Web开发都是“面向数据库”编程的,都是基于数据库的增删改查,用不上你说的这些东西。 那如果经理给你一个项目需求,让你完整地设计出表结构来,要求方便后续的程序开发,又要考虑到灵活性和扩展性,你能不能搞定呢?

在编程中,你发现了重复的代码,那能不能找到一个概念(最终可能由一个类或者函数来表达),来表示这个重复的模式,从而极大地消除重复代码?

你能否区分哪些是不变的部分,哪些是变化的部分,把他们区分开来,“发现变化,并且封装变化。”

说到底,本质上还是那个抽象的能力, 这样的例子有很多,这里不再一一列举了。

作为一个程序员要发展,要成长,不可能一直增删改查,不可能一直停留在编程语言的特性上面,争论孰优孰劣。

对于做技术的人来说,总有一天,眼光和视野要超越编程语言,进行设计和架构的工作,停止无谓的争论,开始扎扎实实地学习吧。

原文发布于微信公众号 - Web项目聚集地(web_resource)

原文发表时间:2018-11-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Fred Liang

VOICE DESIGN GUIDE 语音设计指南翻译

20930
来自专栏Albert陈凯

2018-08-25 学习本身不难,难得是了解该学哪些!

原文地址:https://mp.weixin.qq.com/s/1Suxe08Zq6jsUFNI9PO7xg

10330
来自专栏程序员互动联盟

一个C++ 程序员的生产力,大概相当于20个C程序员,200个java程序员,如何看待这句话?

这种话听听就行了,起码不是真正程序员说过的话,每个编程语言都有其存在的必然性,很难直接通过数据直接比较谁更加厉害,语言没有谁更加厉害这种概念,只能是谁更加合适。

10330
来自专栏Crossin的编程教室

写给新手程序员的一封信

  首先,欢迎来到程序员的世界。在这个世界上,不是有很多人想创造软件并解决问题。你是一名hacker,属于那些愿意做一些有挑战性的事情的人。   “当你不创造东...

35880
来自专栏云飞学编程

学爬虫就要找点有意思的小项目:用python做个查询空气质量的脚本

俗话说:兴趣是最好的老师,只是闷头看书,闭门造车是学不好的,今天给大家带来一个适合刚入门新手的爬虫体验,抓取某网站空气质量数据,并做成一个可查询的脚本!

27540
来自专栏服务端技术杂谈

要成为一个 Java 架构师得学习哪些知识?

既然java架构师, 首先你要是一个高级java攻城尸, 熟练使用各种框架,并知道它们实现的原理。 jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;...

30560
来自专栏斑斓

工作坊 | 领域驱动设计中的事件建模

这两日,我参加了Implementing Domain Driven Disign一书作者Vaughn Vernon组织的IDDD Workshop。培训中,V...

40770
来自专栏企鹅号快讯

研究人员称 HTML5 可以被用来追踪网民

英文:Sphinx 译文:freebuf http://www.freebuf.com/news/160692.html ? HTML5可能是现在最流行的网...

23170
来自专栏小白课代表

边玩游戏边学编程,get真正的黑科技!

我们经常给大家推荐各种各样的神器,但今天,课代表要给大家推荐一个真正的黑科技。既可以一键批量爬美图、一键下电影,又可以自己做一个智能聊天机器人,还能做数据分析等...

28640
来自专栏阿杜的世界

【翻译】分布式计算的八个谬论

基本上很多人在第一次构建分布式系统的时候,都会有如下的八种假定观点,而在后面的运行中证明这些假定都是错误的,而且这些假定都引来了巨大的麻烦和令人痛苦的经历。

8220

扫码关注云+社区

领取腾讯云代金券