tiobe世界编程语言排行榜,你觉得哪种编程语言最牛?
无意挑起圣战,这9张信息图囊括了九种主流编程语言:Python、Java、C、C++、JavaScript、C#、Ruby、PHP以及Objective-C。对于每种编程语言,大家都能够看到由其打造的顶级应用成果,相关职位的平均薪酬(美国)以及该语言的优势与弊端。
Python和java二选一该学哪个?
Python 还是 Java
1、
如果你明确的知道,我就是要选 Java,或者选 Python,那很好了,按照自己的战略计划走就行了;在编程行业,兴趣永远是第一位的,做着自己喜欢,感兴趣的东西,是一件非常爽的事情,长久的执行下去,慢慢的会成为这个领域的专家级人物。
我也不知道,什么时候编程界,流传了这么一句话:语言不重要,基础才是关键;你要是不相信我,你可以去问一些大佬,或者问一些学编程一段时间的人,问他选哪个方向学比较好,学 Python、Java、Go 还是前端好?这些人的回复总是如出一辙,根据你的兴趣来,语言不重要,基础才是关键,说真的,这个答案,对于要选择方向的人来说,基本上就是废话,没任何有效信息。
语言不重要,基础才是关键,问你选择方向的初学者,难道他们不知道这个道理吗?这句话,基本上学编程的,人人都知道,基础很重要,对于这么明显的道理,我相信绝对不是初学者问你选择时,他想要的答案;当你回答这句话时,其实他心里很伤的,但是敬重你,又要不懂装懂的,还说自己下来在考虑一下,大概知道了怎么选,连连答谢;基本上就是这么一个状况,我也是由当初的小白转行的,也经历过这些,作为一步一个脚印的过来人,我是感同身受!
语言不重要,基础才是关键,这句话没毛病,但是要看对谁说了,你要弄明白对象;我自己从大二开始接触编程,基础还算是扎实,2017 年就开始在大公司实习,自学编程快 3 年,实习加上工作,也有 1 年半了,从不敢拿这句话出去装 B,显得自己技术多么厉害;对这句话,直到现在,还没到真正意义上的理解,也就是才慢慢的有了一点点感觉,很多搞编程的,对这句话,一知半解,谈到编程,这句话就不离口,总是告诉别人,基础很重要,语言是其次,给人一种基础很扎实,技术很强的感觉,熟不知这句话搞编程的绝大多数人都知道。
对于工作三年以上,真正意义上,经历过硬仗、经历过好多线上问题,对系统稳定性、并发量双重考验下,都深入底层,都摸过这些东西的,才会慢慢的对这句话有新的认知,这些大佬站的层次不一样,说出来是真的深有体会,其他很多人也就是听过这句话,在转述一下而已,对于初入编程的人来说,我个人觉得这句话意义不大!
对于初入编程,要转行的人来说,首要的就是在某一领域做深、做精、打造自己的技术栈与技术品牌,往后才是横向扩展,此时语言的选择就至关重要了;真的选择不同,其后的发展也是不一样的。
选择,就是要站在你所处的环境,以及自己未来想去的公司,看清自己现在所处的阶段,在什么阶段,就把这个阶段的事做好,才是你最佳的选择;人最重要的就是要有自知之明,一定要清醒的认识自己,以及当下手里握的资源,把自己重新审视清楚,做好定位,再做选择!
2、
对于基础,我没说基础不重要,基础对于应届生,找工作是非常的重要的,对于已经工作几年了,主要就是看你工程或者算法能力,更多考察在项目经验以及工程架构、对系统设计的理解上面了。
不知道啥时候,又冒出来这么一句话:熟练掌握一门语言之后,其他语言就能很快的熟悉起来,我想说的是,对于 C++、Java,Go,Python,每一门语言入门容易,想要深入学习,想要把各种特性都摸清楚,都很难的,没一门语言,是你想的那么简单,在短期内只能是入门级别的水平。
说说我自己的情况吧,我曾经说过,对于 Python 几乎不用学习,直接就可以上手,对于 Python 的爬虫、到数据分析,再到深度学习,用 python 写算法,这个流程下来,只是完成业务需求的话,自己可以很快的解决;你有没有想过背后的原因,我之前是 Linux C/C++ 出身的,在这个领域已经走得很深了,对于很多编程哲学、编程思想、以及编程习惯都是花费了好几年的时间在这门语言上,对一门语言达到了非常的熟练,这才是我快速上手 Python 的根本原因(但也仅仅只限于完成业务需求)。
对于你说你 Python 已经很熟悉了,之前没接触过 C++,你能快速的学会吗?就单说 C++,你的 Linux、Vim 这些的特别熟悉,才能很好的在服务器上进行开发;见过好多 Python 的都用什么开发工具,我写 C++ 或者 Python 都是 Linux 下面的 Vim,我个人是特别的喜欢 Vim,已经脱离鼠标大半年了,一款良好的开发工具会让你提升效率,做起事情来,是事半功倍的!
我自己觉得自己基础知识还算扎实,C/C++ 语言学的也不错,Python 你们也觉得简单,但是我快速上手之后,也就是完成一些业务需求还可以,对于深层次的 ,用 python 写算法、写模型,以及 python 数据挖掘这方面,自己很多也不懂,毕竟没有在这个领域深入学习;还有就是别人总说这句话,给我的感觉就是别人都能很快的熟悉一门语言,技术能力都很强,而我自己远远没有达到熟悉的地步(也就是入门,完成需求,能用而已),可能就是我个人比较笨了,学习能力还有欠缺,这有可能这是我自身原因;我想问问,大家在熟悉了一门语言之后,在学另一门很快的就达到了熟悉的地步吗?(其实很多人掌握的语言很多,但都仅仅是入门级别水平的,没有自己能拿得出手的东西)。
基础很重要,语言是其次,熟练掌握一门语言后,其他语言学起来很快的,说起来容易,做起来你就知道有多难了,工作几年以上的,其实说这些话,是他们所站的高度、水平都具有了,以及在编程领域多年的经验;从他们自身的角度上出发,说出来是为了大家好,真的挺好的;但是有些人,经常把这句话挂在嘴边,真是不知道自己能力有没有达到,反正给人一种很厉害的感觉!
很多大佬说的这些话,是真的有这个水平了,也是有这个能力的,他们所处的环境跟你不一样啊!但是,你要知道,这个是针对的少数人,对极其牛逼的程序员来说,语言真的是其次,基础真的特别重要,这些话没毛病,在之后编程技术发展的道路上会体现出来的(等你们工作一段时间就明白了);对于很多人,平庸的程序员还是占多数的,在编程这行,想要出类拔萃,光靠努力是不够的,还得有点逻辑思维,以及智力的,在编程领域干个几年转行的,转产品的、转管理的、编程语言还是其次吗?基础真的很重要吗?
基础很重要,语言是其次,掌握一门语言,就能快速的掌握其他语言(很多人都不会自己思考,光觉得是很有道理,说起来容易啊,真的有多少人能真正的做到呢!),自己没有深刻的体会,总是得不到精髓,我还需要在多工作几年,对自己磨练磨练,再回过头来好好的体会这句话;在刚工作的时候,掌握一门编程语言,熟练的掌握它,一定要做深、做精,这是你吃饭的家伙,对于大部分人而言,选择一个方向,深入学习一门语言,真的真的是很重要的。
3、
Python 还是 Java,简直就是一场巅峰对决!
好好选择一门语言,深入的学习下去,这个很重要!
对于基础:数据结构 + 算法,操作系统 + 计算机网络,数据库 + Linux,C 语言,这些基础知识,在学习语言的时候,不可忽视,是你面试的重点(不管工作上能不能用到、以及以后会不会用上,掌握了对你都是有帮助的,相信在编程之路上走的长远,的有这些基础知识的支撑)。
基础这块,我强调一点,被人忽视的 C 语言,C 语言掌握的怎么样?C 你学到了什么程度?将会影响你今后在编程的路上能走多远,走多快,我个人一直把 C 语言当做基础,不管你学的是什么方向,C++、Java、Python,学 C 是与语言无关的,C 是基础,有时间的话,都要把 C 语言学好,是绝对不亏的一件事情,C 的精髓、C 的理念、C 的哲学、都是很有指导性意义的!
基础是功底,语言是大方向,基础在面试中起的作用相当大(尤其校招面试),语言的熟练程度,影响着工作的效率,在工作中,主要还是完成需求,完成工作任务,明确两者之间的关系就好。
4、
对于在校学生,很多人都纠结于 Java/C++ 和 Python,下面我就直说了。
对于目前大的趋势来说,未来的人工智能、数据分析、机器学习,这些肯定有大量的岗位,而这些正是 Python 非常擅长的地方,Java 更偏向于做一些应用级别、服务器级别的工程类项目,C++ 就是偏游戏和底层了。
对于学校是普通一本或者二本,也是本科学生,想着本科毕业就找工作,那么走后台开发职位,Java 或者 Linux C/C++ 方向,只要基础扎实,语言熟练,能力强,本科毕业去 BAT 级别的公司工作可能性很大(实在不知道选啥,首选 Java,对 C 有兴趣的可以走 C++)。
对于学校是 211/985 院校的本科生,完全在本科期间就可以走机器学习、数据挖掘、人工智能相关岗位,因为算法岗,目前来看,还是比较看学历的,这个是真的,学校好的话,本科走算法没问题。
对于研究生来说,我认识很多研究生找 Java 后台开发岗的,也有很多人找算法岗的,无所谓的,只要自己喜欢这个岗位,都是可以的,研究生的可选择性比本科大(注意:我说的是研究生,哪怕你是普通一本的研究生),可以全凭兴趣方向,全凭把握(自己衡量算法和开发岗)找工作。
我都说了,以上的战略规划,是针对绝大部分人,针对想去 BAT 级别互联网大厂的。
如果你想去大厂工作,按照这个做决定,就没什么问题了,如果你想本科毕业先随便找份工作,小公司或者创业公司都可以,那么与学校无关,自己感兴趣什么就学什么,学 Python、学爬虫、学数据分析,都可以的,也应该能找到工作,只不过不是大厂而已。
目前来说,Python、Python 爬虫以及 python 后端开发,数据分析,这些岗位, BAT 校招很少招的,如果走工程方向的话,只会一门 Python,只能算是加分项,工程能力目前主流是:C++、Java、Go,学了 Python,还想拿这个找工作的话,直奔算法岗!
算法岗,目前确实竞争激烈,但是你真感兴趣,本科还是 985/211,或者你是研究生,没啥担心的,只要学的好,有能力还担心找不到吗?如果你学校不好,你还对算法岗感兴趣,想走这个方向,那就做好本科毕业,不去大厂工作的打算就好了,随便找份工作应该还是可以的,之后社招在想办法进大厂。
对于 Python 来说,随着 AI 的不断推广,相关岗位在未来肯定有大幅度的增加,可以利用业余时间,往这个方向上靠拢,学习,积蓄力量,提升自己,机会一旦到了,抓住就好了。
归纳总结
我个人一直认为只有选择好了,大方向不错,才能达到自己的预期;编程行业,选好一门语言(C 是基础,不算),在通过不断做项目,来达到熟练,做深、做精才是你要做的事情,对于当下的你来说,选择一门合适的,自己感兴趣的语言进行学习,是至关重要的,工作了,你就会发现,语言真的不是其次,这是吃饭的家伙啊(不熟的话,很影响效率的)!
其实,我知道,在当下,鼓吹 Python、算法岗的人多了去了,很多人辨别能力有待提高,多去想想,多思考,算法岗,高薪是那么好拿的吗?别被别人带动,你自己要想清楚了;我简单说一下,学校不好,还想本科毕业做算法,就别太抱去 BAT 级别大厂工作的想法了(也不是完全没可能,只是真的很难,认清现实),学校是 211/985,不管本科还是研究生,毕业去 BAT 级别做算法,没问题的(在行业里,算法岗目前还是看学历的),学校不行,还是本科,实在想做算法,毕业还想去大厂工作,那就考研啊(有个研究生学历,最起码门槛过了)!
认真看完的,尤其在校的,我相信,对于学哪门语言,你肯定心中有数了,现在就是时间的问题;在学生时代,多花些时间,把基础打好,语言熟练的掌握一门就够了,沉下心来,踏踏实实的,好好的专研一阵技术,对于编程界流传的那些话,那些是大佬们深有体会总结的(大佬的视角站的角度不一样),其实对于现阶段的你们,对我也一样,没啥太大的价值,没啥有效信息啊,只有你做到了,真正的理解了,在说出来,才有底气!
在学生时代,熟悉一门语言,真的很重要;工作了,就没有大把的时间来好好的专研技术了,对于现阶段,选择真的很重要,我只是把我的一些想法,思考分享出来,做决定在你自己!
python为什么叫python?
1989年的圣诞节假期,荷兰的计算机大拿 Guido van Rossum 为了打发无聊时光,决心开发出一款兼具 C 语言的通用性和 Unix Shell 脚本语言的全能型编程语言,于是 Python 语言横空出世。Python 得名于 Guido 喜欢的一个超现实幽默表演团体—— Monty Python(巨蟒剧团)。Python 来源于巨蟒剧团,而不是蟒蛇。
目前 Python 语言仍然是编程语言界的翘楚,其应用也越来越广泛,可以说是 21 世纪炙手可热的编程语言。下图是 Python 在 TIOBE(编程语言热度排名网站)的最新排名:
备注:
Guido von Rossum 是荷兰人,生于 1956 年 1 月 31 日。1982年,他从阿姆斯特丹大学 (University of Amsterdam) 获得了数学和计算机硕士学位。尽管他算是一位数学家,但他更加热爱计算机编程。在 Python 社区,Guido 被人们戏称为“仁慈的独裁者”,表示他仍然密切关注 Python 的开发进程,并在必要的时刻做出决定。他目前就职于 Google,在工作之余,他投入一半的时间用来维护 Python 的开发。作为 Python 语言的发明者,他因此在计算机界举世闻名。
为什么go语言这么火?
EEE Spectrum杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜,而Go语言在2017年的编程语言排行榜中跃居第九,如下:
Go自2009年面世以来,已经9年了,现在已经有很多公司开始使用Go语言开发自己的服务,甚至完全转向Go开发。很多的大公司也在用,如Adobe,BBC,IBM,英特尔等等。
当然还有很多公司也都开始尝试Golang,想必对于码农们来说,一门新的语言会让他们疯狂,为什么他们需要像Go这样的语言?
在开始介绍之前我先给大家普及下Go的履历:
出生日期:2009年 出生地:美国
年龄:9岁 亲爹:Google
中文名:Go语言 英文名:Golang
类型:开源编程语言
最新版本 :Go 1.9(2017年08月24日)
(脚下留心:出生日期为Google开源Go的实际年龄,2007年其实Go就已经在开发中了,只是未对大众开放,快夸我)
通过接下来的介绍你能明白:
1. Go语言是什么
2. Go语言的特点
3. 小编写的第一行Go语言代码
4. Go语言的用途
5. Go语言的优势
6. Go语言的市场薪酬
7. Go语言开发者在企业中的职责
8. Go语言的就业前景
9. Go语言的学习步骤
10. 公布一个震惊行业的新闻
一、Go语言的概念:
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
二、Go语言的特点
1、学习曲线
它包含了类C语法、GC内置和工程工具。这一点非常重要,因为Go语言容易学习,所以一个普通的大学生花一个星期就能写出来可以上手的、高性能的应用。在国内大家都追求快,这也是为什么国内Go流行的原因之一。
2、效率
Go拥有接近C的运行效率和接近PHP的开发效率,这就很有利的支撑了上面大家追求快速的需求。
3、出身名门、血统纯正
之所以说Go出身名门,是因为我们知道Go语言出自Google公司,这个公司在业界的知名度和实力自然不用多说。Google公司聚集了一批牛人,在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。而且从Go语言的发展态势来看,Google对它这个新的宠儿还是很看重的,Go自然有一个良好的发展前途。
4、自由高效:组合的思想、无侵入式的接口
Go语言可以说是开发效率和运行效率二者的完美融合,天生的并发编程支持。Go语言支持当前所有的编程范式,包括过程式编程、面向对象编程以及函数式编程。
5、强大的标准库
这包括互联网应用、系统编程和网络编程。Go里面的标准库基本上已经是非常稳定了,特别是我这里提到的三个,网络层、系统层的库非常实用。
6、部署方便:二进制文件、Copy部署
我相信这一点是很多人选择Go的最大理由,因为部署太方便了,所以现在也有很多人用Go开发运维程序。
7、简单的并发
它包含了降低心智的并发和简易的数据同步,我觉得这是Go最大的特色。之所以写正确的并发、容错和可扩展的程序如此之难,是因为我们用了错误的工具和错误的抽象,Go可以说这一块做的相当简单。
8、稳定性
Go拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具,具有很强的稳定性,稳定压倒一切。那么为什么Go相比于其他程序会更稳定呢?这是因为Go提供了软件生命周期(开发、测试、部署、维护等等)的各个环节的工具,如go tool、gofmt、go test。
三、小编写的第一行Go语言代码
万能的小编敲下了Go语言的第一行代码
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
四、Go 语言用途
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。
五、Go语言的优势
Go是一个Google公司推出的一个开源项目(系统开发语言),它是基于编译、垃圾收集和并发的编程语言。
· 1)基于BSD完全开源,所以能免费的被任何人用于适合商业目的;
· 2)内嵌运行时反射机制;
· 3)可以集成C语言实现的库;
· 4)它不是传统意义上的面向对象语言(没有类的概念),但它有接口(interface),由此实现多态特性。
· 5)函数(Function)是它的基本构成单元(也可以叫着面向函数的程序设计语言)
· 6)是一种静态类型和安全的语言,将其编译、连接成本地代码(拥有高效的执行效率)
· 7)支持交叉编译,并采用编译的编码:UTF-8
六、Go语言的薪酬
如果以上这些都不能吸引你的话,那么来看看这个
某招聘网站上有关Go的薪资,都是10K起的
七、Go语言开发者在企业中的职责
再来看下工作职责:
八、Go语言的就业前景
Go的发展非常快,虽然超越Java还有些遥远,但是有Google的支持,加上现在的高薪资,Go语言的前景还是非常可观的。
九、Go语言的学习步骤
对于初学者来说该如何学习Go?
开发工具:Go 语言开发工具 LiteIDE X33.1 已经正式发布
LiteIDE X33.1 使用 go1.10beta1 编译, 支持 Go1.9 / Go1.10beta1 或者更低的 Go 版本。
学习顺序:
对于初学者来说,首先就是基础语法了,这是编程语言最基本的东西。等到对Go比较熟悉之后,能去了解一下Go语言的运行时(如内存分配,垃圾回收,并发调用等)。如果之前是做其他语言开发的话,可以在对应领域开始,如果之前搞过web,可以先用Go语言在web领域练练手,如果是搞分布式基础服务的,对分布式领域比较感兴趣,就去研究docker和kubernetes了,后面还可以看看它们的源码。
十、公布一个震惊行业的新闻
黑马程序员C/C++精品就业班课程升级之后也加入了Go语言开发的部分,
1.Go基础语法、Go中的切片、map、go中的channel、goroutie、协程调度机制
2.基于Go实现的高并发服务器;
3.基于beego框架完成ihome一体式web服务器
4.微服务的优势;
5.docker容器构建微服务;
6.基于go-micro微服务实战
实战项目:
虚拟化微服务分布式系统Home全部后台基于Go语言完成 采用Go-micro,基础设置采用docker、consul搭建
微服务:用户管理微服务、下单微服务、分类微微服务、评论微服务、实名认证微服务、支付微服务、通知微服务
学习以上课程之后,你将掌握以下技能:
1. 备市场主流大数据分布式技术;2.具备Go语言高并发后台开发能力;3.具备docker虚拟化容器技术;4.具备分布式微服务架构设计能力。
熟练学习和掌握后,可满足企业开发的初中级、甚至高级需求,根据市场反馈数据来看,薪资普遍在12000-20000元 /月。
Python会超越JAVA而成为世界上第一大编程语言吗?
基于我在BAT工作的经验,可以十分肯定的和题主说,不会。
Python虽然目前使用场景越来越广泛,也随着人工智能的兴起而受到了更多的重视,但是想撼动Java的霸主地位,还是有点难度。
历史积淀Java诞生至今已经积淀了非常多的经验,也发展出了很多种类的框架来帮助开发者减轻负担,比如SSH,SSM,Springboot等等,可以说目前想用Java进行后台开发已经越来越容易了,网上也有很多手把手的教程。
对比之下,Python虽然也已经有了近30年的历史,但它也是在近些年才开始快速发展,在功能方面并没有Java那么强大的能力,相关的周边配件也没有java的全面。
因此对于程序员来说,如果要实现一个大的项目,大家更倾向于继续使用JAVA语言。
使用场景虽然Python也可以开发独立的程序,但是目前大多数的平台后端还是以JAVA/PHP为主,而且我目前见到的大部分BAT放出来的招聘职位也都是主要需求JAVA开发能力(与Python职位相比)。
那Python工程师呢,其实Python语言更多是作为Java或其他语言开发工程师的一项辅助能力,就是说想要通过面试,需要你在其他能够独挑大梁的领域做得优秀,此外如果还有Python能力,那就是锦上添花了。但是如果你说只会Python,那么面试官可能就会迟疑些了,因为基本社招的职位专门招人进来写Python的比较少。
最后,从公司的角度,他们其实并不介意你用什么语言做开发,但是他们介意你能不能又快又好的开发好。就目前的情况来看,除非Python后面发展出非常强大亮眼的黑科技碾压Java,否则很难超越。毕竟,小孩子才做选择,面对装备齐全的Java和朝气蓬勃的Python,成年人当然选择全都要啦。
以上是我的浅见,欢迎各位在评论区与我沟通交流。
我是苏苏思量,来自BAT的Java开发工程师,每天分享科技类见闻,欢迎关注我,与我共同进步。