编程语言Java和Python对比哪个比较好

语言的优劣之争是个永恒的话题,有时候一次偶然地“擦枪走火”甚至可能会引发一场铁杆粉丝之间的“战争”。
也经常有人问我:“老刘,到底是java好还是python好? 我应该学习哪个语言?”
我也挺为难的,只好说道:
python挺适合入门的,看起来很简单,适合创业团队,可以快速开发,快速上线,快速迭代。适合特种部队的突袭。等到发展到一定规模,动态语言的劣势就会体现出来,维护/重构难度高,特别是我觉得动态语言写的代码腐化速度要比静态的java要快一些。
java呢,语法相对python啰嗦,表达力要弱一些,开发起来一板一眼,有很多规范,适合集团军的大规模协同作战;有很多著名的框架和类库,性能不错,系统稳定而成熟,是开发大型系统的极好选择。
他说:“老刘你这是在和稀泥嘛,我到底应该学啥?”
我说:“你应该把注意力放到那些和java无关,和python无关,能反映一个程序员水平高低的编程的共性问题。”
举个非常简单的例子,开发中需要实现一个定制的、简单的缓存,如果使用ehcache ,memcached, redis这样的开源系统就太重量级了,经理要求你新写一个,可以支持(key,value)存储,设置过期时间,过期的可以自动清理掉,你能不能快速地实现一个高质量的版本?
这其中涉及到的就是数据结构和算法、以及线程的知识,和具体的语言关联度很小。
再比如给你一个需求,你能不能找出其中“概念”,从而设计出类?能不能做好信息的封装和隐藏,定义出良好的接口,让每个类的职责单一而准确?
python中有class , java 中也有class, 但是上述工作却和具体语言没什么关系。你需要做的是利用你的经验,在脑海中做一次思维体操,然后用某个语言工具把他们表达出来。
有些“概念”比较容易发现,有些“概念”和现实没有直接的对应关系,需要抽象一下才能找到,这就比较考验抽象的能力了。
可能有人说,我们web开发都是“面向数据库”编程的,都是基于数据库的增删改查,用不上你说的这些东西。 那如果经理给你一个项目需求,让你完整地设计出表结构来,要求方便后续的程序开发,又要考虑到灵活性和扩展性,你能不能搞定呢?
在编程中,你发现了重复的代码,那能不能找到一个概念(最终可能由一个类或者函数来表达),来表示这个重复的模式,从而极大地消除重复代码?
你能否区分哪些是不变的部分,哪些是变化的部分,把他们区分开来,“发现变化,并且封装变化。”
说到底,本质上还是那个抽象的能力, 这样的例子有很多,这里不再一一列举了。
作为一个程序员要发展,要成长,不可能一直增删改查,不可能一直停留在编程语言的特性上面,争论孰优孰劣。
对于做技术的人来说,总有一天,眼光和视野要超越编程语言,进行设计和架构的工作,停止无谓的争论,开始扎扎实实地学习吧。

什么牌子的投影仪最清晰?人气数码博主盘点高清投影仪推荐
基于PIC16C65单片机的扫描隧道显微镜的电子学系统
传统封装工艺流程简介
内存管理问题之后谷歌又多了一个充电过热关机的BUG
小米或将在明年发布搭载4800万像素的新机 对飙荣耀
编程语言Java和Python对比哪个比较好
2019年会是芯片产业的春天吗?从“共享经济热”到“芯片热”
你的身边哪些地方发现了物联网的影子
基于ASR平台的高集成OpenCPU无线解决方案
智能功率模块如何应用于汽车中
无线土壤墒情监测仪用处
一大波全新萌萌哒Emoji来袭,何时才能登陆iOS
汽车底盘基础知识解析
今日看点丨消息称高通骁龙 8 Gen 4 将整合下一代 Adreno 830;比亚迪方程豹首款车型豹 5 官宣11月9日上市
氮化镓(GaN)衬底晶片实现国产 苏州纳维的2英寸氮化镓名列第一
GSM话音业务重组解决方案
创基Chungkey Type-C多功能扩展坞可满足多种使用需求
特斯拉的配套落地,将成为宁德时代后续装机量增长的重要变量
IBM不再与索尼东芝一起开发PS 3所用处理器
龙芯1C0300B是龙芯基于GS232处理器核的高性价比单芯片系统