初学者学习Python好还是Java好

网络上有很多关于语言选择的问题,其中关于Python和Java的问题大抵如下:

Python和Java该如何选择 ?

将来Python(Java)会不会替代Java(Python) ?

零基础应该选择学习Python还是Java ?

做web开发,用Python好还是Java好呢?

这类问题过一段时间就得来一波,今天就以这个为切入点和大家唠唠。

为啥要说这个话题?

Python既是一个大众化的语言,也是一小搓儿开发者喜欢的语言。怎么说呢?

每个开发者都应该学学Python这个胶水语言,后端开发者不会Python都不好意思出门和别人打招呼。事实上基本在每个公司都有Python的身影,只不过公司的核心业务、用户产品很少用Python来做。

国内大一点的、使用Python做基础设施的公司1只手就可以数出来:豆瓣、知乎、美团、饿了么、搜狐(漏掉的欢迎补充)。 公司级别把Python作为核心的公司屈指可数,它更像是一波有「特殊」感情开发者的选择,这波人品味很挑剔,这个有点难描述,参照Pythonic这个词希望你成为的开发者吧。

Python在国外环境要好得多,但是在国内一直在缓慢的赢得更多人的心,在我的感觉里还有点「病态」发展(这个就不展开了),增速是可预期的,不会出现井喷式的增长。

职位就是那么多,很多人抱怨找不到工作,究其原因,无非是市场冷静客观下来优胜劣汰,能力不达标罢了。据我所知,只要你的能力匹配,Python高级工程师是非常受市场青睐的。

造成Python市场不好的原因有哪些?

政治。我们都知道语言通常不是技术瓶颈,那为什么公司会有很强烈的技术选型因素?这其实是「政治」。BAT出来的人到其他小型公司做高管,他们为了站稳会选择重构成自己熟悉和喜欢的技术栈,而且重构大部分是为了KPI和晋升。这些有话语权的人往往不会Python,只熟悉传统的PHP,Java,这就造成一种「恶性」循环,其他语言的市场热度不会降下去,政治正确要比技术正确更重要,Python语言很难在这种环境里突破重围。那么知乎、饿了么这些公司为什么选择Python?嘿嘿,除了创业早期为了显得逼格高(有时候这是创业营销的一种需要),他们的高管中有些是豆瓣出去的哦,所以你看到同样的现象,豆瓣出去的人做技术决策的结果选了Python。

招人难。国内找靠谱的Python工程师实在是太难了。会Python和真的靠它吃饭差别实在太大了,知乎Python话题下大部分充其量算是会用Python写脚本的人在强答罢了。你看我的同事或者我了解到的Python领域里面的开发者基本都是不用知乎也不回答Python问题的。我们知道,Python非常适合创业期完成产品快速试错和迭代,如果一个公司没有优秀的开发者坐镇,我还是不太相信用Python能坚持下去的,太多工程问题真的不是学院派能解决的,很多问题Google/SO是找不到的。那么用人荒造成了想选择Python为公司技术栈的公司望而却步,最后恶性循环大家都不太敢让核心系统用Python了。

总有刁民拿性能说事儿。性能问题确实是存在的,但事实上绝大部分公司和产品真的不需要担心这点,也有人说Python没有大型网站的顶级的解决方案。其实不然,国内有豆瓣,国外有Instagram、Reddit等等成功的案例,我说了很多遍了,决定网站性能的主要因素是架构,然后是代码水平,最后才是语言。 但是很多对Python一知半解的人就被这么吓跑了,并且拿着这些槽点去吓别人。

技术环境不好。PyCON北京场都组织不起来,真的有干货的开发者都不出来活动,万事与Ta无关高高挂起,反观前端氛围真的很好。很多新人想入坑,但是没人带,没方向,没组织,外面尽是坏人,每天看到的都是类型于发爬虫这种很low级别的技术文章,这种气氛下,未来真的青黄不接呀。

Python or Java?

终于到了正题了。工作和个人项目中会常用到Python,Golang,Lua,Javascript、CSS,做运维的时候还用过Perl和Ruby。很多年前看《程序员修炼之道》,作者建议每年至少学习一门新语言,每季度阅读一本技术书籍,非常有道理。其实学习语言无非是语法、库和框架这三者,如果掌握正确的方法一个月就能开始用它写点东西了,没什么必要纠结学那个的问题,开发者的基本素养之一就是整个职业生涯里面都得不断学习,除非我不认同某个语言的设计哲学和语法,比如我个人是不喜欢Java的。学的时候可以带着问题来学,比如A语言和B语言相比有什么优劣,设计上为什么不同、它们只能有很么互相借鉴的地方,为什么?等以后在工作中可以针对不同的项目特点选择合适的语言。我爱Python,但是只在正确的时候用它,而不是一棒子打死无论什么场景都用某语言,要记住,用语言或 者框架来划分技术其实很幼稚。

插个题外话,可能有的读者会问「那怎么不见你写/回答Golang、Rust等方面的文章/问题呀」?因为不自信,不想误人子弟,也不想强答。「自信」是什么呢?就是使用它的时候不担心有什么解决不了的问题,天下我有的感觉,大不了看源码,我C学的不好,但是不影响我带着问题读CPython的源码,不过离贡献C代码就差的很远了,我现在也没想着走这一步,所以对C语言的掌握程度好久没变过了。如果没有经过4-5年的深入和实践,我真的不觉得能在某个领域指手画脚。

说到选择。如果你没有强烈的对语言的认可或者不认可,单纯为了尽快养家糊口,选Java,因为市场需求量大,应用广泛,成熟案例多。如果你很理解「人生苦短我用Python」这句话,答案就不言而喻了,不过无论是否选择Python吃饭,甚至你不是一个纯纯的开发者,我还是再建议你应该也要学学Python。

之前在知乎看到过大概这样一句话「只会Python找工作很难」,我是认可的。通过观察和了解,我身边的大部分除了Python都能使用其他技术完成工作,比如前端、IOS、安卓等。无论Python还是Java都只是编程语言,工作中还需要具备很多其他的能力,拿Web开发来说(这里不考虑软技能和需求分析、沟通协作等方面的事情),HTTP/TCP、Linux、数据库、Web服务器、第三方库和框架、Web基础(HTML/CSS/JS/ES6) 、消息队列、分布式、虚拟化、RPC、缓存、搜索引擎、微服务、上线流程、趁手的开发工具、调试流程、分布式文件系统、安全等等,随便一想就这么多内容。当然最难的和最有价值的是工作经验。只会编程语言算什么?你有什么竞争力,你给个有点悟性的本科生2个月时间工作起来不会差很多。一定不要放大编程语言对于找工作的重要性。

另外插个话题。应届生找工作对语言的要求并没有那么重要,反而数据结构、算法、计算机系统、Linux、计算机网络甚至英语这些基础更重要。希望还没有毕业的同学能够抓紧时间多多充电。多看书多时间多刷题。

知识点补充:

Java历史

Java是一种面向对象的编程语言,由1995年由Sun Microsystems的James Gosling Jr.领导的软件工程师团队设计。

其背后的理念是“Write One,Run Anywhere”(WORA),这意味着它可以在支持Java虚拟机(JVM)的多台机器和平台上运行而无需任何代码修改。Java代码编译为字节码 - 一种直接转换为本机代码的中间语言。

Java的语法大量借鉴了C ++和其他面向对象的语言,如Smalltalk,Ada和Modula-3,因此其强大的输入影响力。因此,具有C ++和其他语言经验的程序员会发现学习起来非常舒服。

Python历史

Python是一种动态类型,面向对象的编程语言,由Guido Van Rossum于1991年设计,Python支持多种编程范例,包括面向对象,命令式,功能性和程序性。

与Java的字节码不同,Python是一种解释语言,这意味着它使用了解释器。这使得它比Java慢一点。

对于来自C / C ++世界的程序员来说,Python的duck-typed语法可能看起来有些奇怪,但大多数程序员发现,一旦我们掌握了它,它就会更有趣。

Python在业界获得了很大的关注,特别是在Web应用程序开发,游戏开发,数据科学,机器学习和数据分析领域。

如果你以前从未学过编程,我通常会推荐Java作为第一语言。Python是一种很好的语言,因为python语法比较开放,但是Python隐藏的语法糖太多,这让新程序员感到困惑。

到此这篇关于初学者学习Python好还是Java好的文章就介绍到这了,更多相关选Python好还是Java好内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python调用java的jar包方法

    如下所示: from jpype import * jvmPath = getDefaultJVMPath() jars = ["./Firstmaven-1.0-SNAPSHOT-jar-with-dependencies.jar"] jvm_cp = "-Djava.class.path={}".format(":".join(jars)) startJVM(jvmPath,jvm_cp) sedisObj = JClass("Lo

  • java实现python session功能代码实例

    这篇文章主要介绍了java实现python session功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 怎么在java中实现类似于python的requests模块的session功能呢.java也是可以实现的,用java的okhttp包可以实现. 在pom.xml中加入相关依赖 <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --> <

  • 为什么入门大数据选择Python而不是Java?

    马云说:"未来最大的资源就是数据,不参与大数据十年后一定会后悔."毕竟出自wuli马大大之口,今年二月份我开始了学习大数据的道路,直到现在对大数据的学习脉络和方法也渐渐清晰.今天我们就来谈谈学习大数据入门语言的选择.当然并不只是我个人之见,此外我搜集了各路大神的见解综合起来跟大家做个讨论. java和python的区别到底在哪里? 官方解释:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易

  • Java迭代器实现Python中的range代码实例

    如果要想迭代一个类的对象,那么该类必须实现 Iterable 接口,然后通过 iterator 方法返回一个 Iterator 实例. Range 类实现了Python中的range的所有用法,如:range(10),range(5, 10),range(10, 0, -1),range(0, 10, 2) 如果再在 Range 类中定义静态的工厂方法,然后再静态导入工厂方法,就可以更方便地使用了. 使用实例: for (int x : new Range(10, 0, -1)) { Syste

  • Java通过python命令执行DataX任务的实例

    1.安装datax 2.安装python并配置环境变量 3.把mysql2odps.json文件放在datax安装目录的job文件夹下 4.运行Test.java测试 mysql2odps.json文件: { "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username&q

  • 初学者学习Python好还是Java好

    网络上有很多关于语言选择的问题,其中关于Python和Java的问题大抵如下: Python和Java该如何选择 ? 将来Python(Java)会不会替代Java(Python) ? 零基础应该选择学习Python还是Java ? 做web开发,用Python好还是Java好呢? 这类问题过一段时间就得来一波,今天就以这个为切入点和大家唠唠. 为啥要说这个话题? Python既是一个大众化的语言,也是一小搓儿开发者喜欢的语言.怎么说呢? 每个开发者都应该学学Python这个胶水语言,后端开发者

  • JPype实现在python中调用JAVA的实例

    一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype与Jython(JPython后继者)的区别? 1)运行环境不同:jython运行在jvm上,而JPype的实际运行环境仍然是python runtime,只是在运行期间启动了一个嵌入的jvm: 2)使用者不同:jython是给java程序玩的,JPype是给python程序员玩的. 二.JPype

  • 面向初学者的Python编辑器Mu

    Meet Mu,一个开放源码编辑器,使学生们更容易学习编写Python代码. Mu一个开源编辑器,是满足学生可以轻松学习编写Python代码的工具.作为初学程序员的Python编辑器,旨在使学习体验更加愉快.它使学生​​能够在早期体验Python的编程,而这对于初学者学习新知识的很重要. 如果你曾试图教年轻人如何编程,你会立即掌握Mu的重要性.大多数编程工具都是由开发人员为开发人员编写的,并不适合初学程序员,无论他们的年龄如何.然而,Mu是由老师为学生而设计的工具. Mu是由Nicholas T

  • 学习Python列表的基础知识汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要的.约定俗成的语言习惯,例如数组索引为何从0开始,其背后可能大有来历.知其然,亦需知其所以然啊喵喵喵~~~ 最后,在基础知识之上,更要探索进阶,例如学习生成器表达式,这样既能更扎实地掌握基础,又能融会贯通,获得更全面的认知升级. Python的列表是怎样滴? 列表(list)是一种有序的集合,可以随

  • 学习python需要有编程基础吗

    编程零基础,可以学习 Python 吗",这是很多初学者经常问我的一个问题.当然,在计算机方面的基础越好,对学习任何一门新的编程语言越有利.但如果你在编程语言的学习上属于零基础,也不用担心,因为无论用哪门语言作为学习编程的入门语言,总是要有一个开始. 就我个人的观点,Python 作为学习编程的入门语言是再合适不过的.凡是在大学计算机专业学习过 C 语言的同学都感同身受,认为 C 语言不是很好的入门语言,很多曾经立志学习编程的读者,在学习了 C 语言之后,就决心不再学习编程.因此,是否学会 C

  • 学习Python需要哪些工具

    毋庸置疑,Python越来越被认可为程序员新时代的风口语言,Python的应用能力是成为一代码农大神的必要项. 首先告诉你的是,零基础学习开始系统学习Python肯定难,Python的专业程度本身就不简单,学习这事本来就是一件非常煎熬的事情,人都不愿意学习,可是没办法,为了生存掌握一个技能,你必须学,如果你认真的对待,你就找不到高薪水的工作,所以首先学习Python意志,坚持非常重要,很多人放弃的原因根本就是缺乏这些素质. 零基础学习Python必须明确的几点: 1.明确你将来是做什么工作的,需

  • 零基础学习Python爬虫

    目录 爬虫 为什么我们要使用爬虫 爬虫准备工作 爬虫项目讲解 代码分析 1.爬取网页 2.逐一解析数据 3.保存数据 讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程) 爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序. 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做. 为什么我们要使用爬虫 互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中. 过去,我们通过书籍.报

  • 学习python (1)

    先推荐一个学习python的好网址 简明 Python 教程 Swaroop, C. H. 著 沈洁元  译在线教程的网址: http://www.woodpecker.org.cn:9081/doc/abyteofpython_cn/chinese/index.html 学习编程快20年了,很少见到如此好的教程.简单,清晰.大部分的软件书籍翻译的是呕呀啁咂难为听,名声显赫的译者如候某人,也是50步笑百步而已. 网上有一种说法,一个有经验的程序员可以在半天内,学会python. 我试了一下,感觉

  • 通过C++学习Python

    我会随便说,C++ 近年来开始"抄袭" Python 么?我只会说,我在用 C++ 来学习 Python. 不信?来跟着我学? 字面量 Python 早在 2.6 版本中就支持将二进制作为字面量了1, 最近 C++14 逐步成熟,刚刚支持这么干2: 复制代码 代码如下: static const int primes = 0b10100000100010100010100010101100; 更不用说 Python 在 1.5 时代就有了 raw string literals 的概念

随机推荐