社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

到底是Java好还是Python好?

码农翻身 • 5 年前 • 496 次点击  

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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



ps : 中秋活动的获奖名单已经出来了,还没有领奖的赶紧加我的微信onlyliuxin97领奖啊,过期不候,没有中奖的也不用沮丧,本周还有一波更大的福利等着你。


次郞,kang,Fannie,邓明亮²º¹⁸,福尔摩白,Amor丶淺笑,MAR,梁,晴天小猪,Haoz,冷月,柠檬C,豆豆,晓风残月,夜色,Dyoner 旧人,JakeWang,Loongstyleจุ๊บ,天国之影,卷福


(完)

码农翻身,用故事讲解技术本质, 更多精彩文章,请移步《码农翻身三年文章精华


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/fvrboXS8vb
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/24414
 
496 次点击