找回密码
 立即注册
楼主: 海田1

[笔记] 想自学一种编程语言,各种编程语言都有什么区别?

[复制链接]
发表于 2021-2-6 22:36 | 显示全部楼层
大家好,我是强哥。我是一名程序员,也是一名架构师。我始终相信“技术改变生活,研发构建未来”。虽然我也是一家集团公司的CEO,但那只是扮演着一个角色而已。愿程序与我们同在,阿门。
从2000年上大学开始,就算是正式和编程结缘了,但是你所不知道的是,我所学专业却并非软件工程,也不是相关专业,而是统计学。至于如何走上IT这条道路的,说来简单,单纯就是喜欢而已,只是高考填报志愿的时候服从了调配而已,本文暂且不表。可能恰恰是因为没有进入这个专业学习,所以才对这个领域更加好奇,更加有兴趣,才想去了解更多。所以大学的4年,作为没有一个专业老师来指导的菜鸟,没有编程类的课程任务的我,有了更多时间,遨游于编程的世界中。也因此,学习了很多软件和编程知识,慢慢地成长为一个杂家,开发和测试,前端和后台,技术和管理,这20年的时间里,全部做了几遍。从编程语言的角度,我给大家列一下我所使用过并且用来解决过真实任务或完成过项目的编程语言:C/C++、VB/VBScript、Delphi/Pascal、C#、PHP、JavaScript、Java、Python。目前主要使用后面四种编程语言,由于工作关系,目前使用这几门编程语言主要是写书和讲课用,而不是做项目,项目基本上交给兄弟们去完成了。写这篇文章的时候,我一查,居然使用的多数编程语言都是排行榜的前列,至少说明,选择一些主流的编程语言还是很重要的。但是,什么叫主流?时代不同,主流也在发生变化,这篇文章就是为了讨论这个话题的,不是吗?
所以,作为一个资深行业老兵,技术杂家,相信我来写一写这个话题,还算得上是有点说服力的。同时,作为我在知乎的第一篇文章,也不想一上来就是技术细节,先跟大家聊一聊宏观的东西,也算是让一些对IT行业一知半解的朋友,能够更多地了解这个行业。所谓“以史为镜,可以知兴衰;以人为镜,可以知得失”,史,便是IT行业这30年,人,便是我。
2000年之前:编程语言诞生期

你一定听说过雷军,没错,他是一个程序员。你也听说过马化腾,没错,也是一个程序员。你可能还听说过乔布斯(英年早逝那个)、比尔·盖茨(让你通过窗口看世界那个)、拉里·佩奇(被墙的那个)、马克·扎克伯格(继续被墙的那个)、刘强东(不知妻美那个)、李彦宏(跟莆田是好朋友的那个)、周鸿祎(转一圈那个)、张小龙(一个人孤独地站地球上那个)、张一鸣(让你刷得停不下来那个)、丁磊(养猪那个)……   
没错,他们都是程序员出身,改变这个世界的科技大佬们,几乎都是程序员出身,或者非程序员的技术人员出身。我也是,但是目前还没改变世界,也许会有那么一天,谁知道呢,梦想不是说还是要有的吗。为什么科技大佬几乎都是技术出身呢?这背后必然是有其潜在逻辑的,这个话题,我另外专门写篇文章给大家探讨探讨背后的故事。咱们言归正传,在2000年之前,这些科技大佬们,当时都在使用什么样的编程语言写程序呢?
2000年之前的IT世界并不主流,是一小部分发烧友的天地,那时候,很多编程语言的出现都只是为了解决一些单机应用而已。早期最主流的编程语言主要是C/C++语言,程序员使用这门编程语言来开发一些计算机领域的基础设施,比如操作系统、数据库、编译器、网络通信、文字处理、音频视频解码器、杀毒软件、硬件驱动以及其他一些硬件设备的数字通信。基本上这些基础设施都是使用C或者C++来进行编程的,再配合汇编语言或者硬件描述语言(VHDL)完成基础开发。这里普及一个基础常识,大家会发现很多地方讲编程语言的时候,都是把C和C++写在一起的(C/C++),这是因为他们虽然是两门不同的编程语言,但是C++是面向对象的C,同时又完全兼容C的特性,所以基本上只要你会使用C++,就会用C。但是注意,这跟Java和JavaScript可不一样,Java和JavaScript是完全两个世界的语言,各自没有任何关联,就像雷锋和雷锋塔的关系一样。
正因为C和C++当年如此受到重视,以至于看得微软都眼红,于是乎在2000年左右,微软搞了个C#出来(其实就是C++++,是不是比C++看起来更牛逼?),当然这是后话。暂且不表。所以在当时搞基础设施建设的这个阶段,其他编程语言便没有什么机会出人头地,只能用来解决一些边边角角的问题。比如90年左右那一段时间,大家对C++当道表示完全不服,陆续开发了以下一些编程语言:
    Objective-C:面向对象的C,跟C++有差别,后来被苹果公司用于开发iOS应用,才让我们想起了这段往事,08年后的那几年也着实火了一把。Perl:用来处理一些Linux/Unix上的运维和批处理工作,吐槽一下,主要是Shell确实太垃圾了。Python:跟Perl类似,也是为Linux/Unix操作系统设计,跟今天Python的地位可没法比。Java:那个时候,Java主要用来搞点Applet:小应用程序和服务器端应用,跟今天的小程序可不是一回事,那时候的Java也是个小兄弟而已。
当然,2000年之前,各行各业也开发了自己的编程语言,用于处理特定的任务,比如:
    PHP:基于C语言开发的解释型语言,主要用于开发Web应用后台,与MySQL完美融合,为互联网应用贡献了很多力量。Cobol:一门古老的编程语言,主要用于金融行业,数据处理为主。由于金融行业的核心系统追求稳定,而不是最新技术,所以到今天,仍然有一小部分程序员在使用。FORTRAN:为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。Basic:比尔盖茨用Basic设计了最早期的操作系统,微软公司与Basic/VB编程语言那绝对是生死之交,那感情,C#都赶不上的。当然,目前也基本上只有在微软的产品阵营中,能看到Basic的影子,比如微软公司基于Basic设计了一系列改进版本:

    Visual Basic:用于开发Windows图形窗口应用,我上大学的时候也是异常火爆,很多当时的企业也都喜欢用VB。VBScript:VB的脚本语言,比VB简单,功能也少很多,当时主要用来开发ASP网页应用。VBA:内置于Office套件里面的脚本语言,可以方便的对Word,Excel等进行二次开发。http://VB.NET:伴随微软的.NET战略基于VB完全重生的一门编程语言。
5.PASCAL:一门通用的古老的编程语言,语法上跟Basic类似。后来被一家牛逼哄哄的叫做Borland的公司(一家能够叫板微软的专门做编程语言开发工具的公司,已于10几年前倒闭,有点像今天的JetBrains)重构出来一款开发工具叫Delphi,专门开发Windows应用,与Windows底层接口完全适配。那个时候非常风光,企业开发应用程序主要使用两款工具:VB和Delphi,当然还有Visual   C++。
大家可以看到,微软在编程语言上也是有很多造诣的,Visual   Studio系列开发工具影响了一代又一代的程序员,至今,微软的开发工具依然流行于世界,但是,国内反而用得比较少。原因有很多,历史遗留问题,生态问题,版权问题。如果微软早一些拥抱开源,Java就不一定是怎么回事了。当然,Java也有Java的问题,后面再聊。
90年代后期,互联网开始萌芽,今天很多耳熟能详的科技大佬们,纷纷开始出镜,属于他们的时代,即将来临。那个时候的互联网,后台通常又是使用什么编程语言呢?PHP,ASP还有CGI,当然还有用于前端界面的HTML、CSS和JavaScript。
2000年-2010年:传统互联网

2000年3月10日NASDAQ指数到达5048.62的最高点时到达顶峰,至此,第一波互联网泡沫宣告正式破灭,与之一起破灭的,还有无数的一夜暴富的梦想,和无数科技公司的估值。于是,谈互联网色变,你走在大街上告诉别人你是做互联网的,大概就跟今天你告诉别人你从武汉回来的是一样的待遇。当年NASDAQ指数最低跌至1114点,跌幅达78%。给大家举个例子,网易,没错,养猪那个,写本文时股价是348.22美元。你知道2000年网易上市后,股价最低跌到多少吗?网易的股价从上市时的15.5美元一路下跌,最低跌至0.48美元,跌幅达97%,其市值也从上市时的4.7亿美金跌至不足2000万美金。那里的科技公司,用惨烈都不足以形容。
泡沫过后,总要生存,怎么办?大家都在寻找新的应用场景,寻找变现的门路。于是,短信业务,移动增值服务,电子商务,游戏慢慢地变成了科技企业的商业模式。同时,大家也在利用互联网寻找各种商业机会,涌现了一大批新兴行业和软件公司,互联网搞不定,那就老老实实做软件吧。所以,软件公司慢慢得到了更多机会,企业也慢慢地发现信息化是一件重要的事情,势在必行。在这10年时间里面,互联网企业其实并没有真正为技术做出多少贡献,能数得上的也就Google、微软、苹果等少数几家公司吧,国内的公司几乎没有。难道你要告诉我阿里巴巴、腾讯、百度、Amazon、Facebook为技术做了多少贡献吗?至少那10年是没有的,他们都在求生存而已。
所以,在这一阶段,编程语言本身并没有什么突破性的技术,也并没有新的编程语言诞生,大家都是吃老本而已,无非做修补,做优化,做升级而已。但是,由于时代的变迁,编程语言的主角也在慢慢发生着变化。就像今天很多人在讨论,究竟学Java还是学Python,做前端还是做后台,或者是做开发还是做测试类似的道理。2000年后,随着微软的.NET战略及Visual  Studio  2000正式发布,以及Java在互联网应用和企业级应用开发中的地位越来越重要,大家讨论最多的话题就是:搞C#还是搞Java呢?跟随Sun还是跟随Microsoft呢?也会讨论做.ASPNET还是做PHP,亦或是我到底应不应该放弃C++(大家一致认为C++是学习成本最高的一门编程语言)。我上大学后开始接触编程,基本上在论坛里面感受到的,大概就是这样的画风,我也不知道什么编程语言好,我就慢慢地,把这些编程语言都学了一遍。不是说小朋友才做选择题吗,成年人不需要做选择题,都要。我的选择逻辑就这么简单,反正每一门编程语言对我来说都是新的,也都是有价值的,那干嘛不都学呢?所以我也搞不懂为什么,20年过去了,人们还是要做选择题,生怕多花了时间做了无用功,还是功利驱动吧估计。会是无用功吗?当然不会,要不然我今天不至于能够精通这么多技术,能够在两三天时间完成一门编程语言的学习,之前所花的时间,以后都会找回来的。
言归正传,这一段时间,虽然没有创造编程语言,但是由于大量企业的参与,编程语言得到了空前的发展,形成了今天的编程语言的基本形态。也使得软件开发越来越标准化,规模化。编程语言从底层开发走向了应用开发,IT从业者也越来越多,愣是把IT行业从一个小众领域做进了大众行业,为IT行业成为所有行业的基础行业奠定了坚实的基础。什么叫基础行业,就是行业中的行业,所有行业的依赖的行业,提升效率的行业,比如金融行业,物流行业,房地产行业,这都叫基础行业,没有这些基础行业,产业根本发展不起来。
这一时期,开发应用系统最火的当属微软系列(Delphi、C#、VB)和Java,但是由于IBM,Oracle等巨头也转而支持Java(否则呢,难道支持竞争对手微软,毕竟Java是开源的),基于Java的应用服务器(Webshpere、Weblogic、JBoss)几乎是所有金融行业系统更新的首选(因为稳定,可靠,高并发,高性能),所以金融行业算是支持Java最为广泛的行业。大家一看,金融行业这么苛刻的行业都在用Java,那咱们也用Java呗。也就是从这一时期开始,Java慢慢地站上了历史舞台,成就了Java的辉煌20年。当然,这也跟Java的跨平台的特性和开源政策有很大关系。
其实微软的开发体系也是非常完整的,而且开发效率也很高。为什么微软的开发工具要叫“Visual   Studio”,可视化编程嘛,就是你拖拖拉拉的就能解决一大部分编程的问题。但是因为微软的收费政策(Windows操作系统要收费,Visual    Studio开发工具要收费,SQLServer数据库要收费,就连C#的很多第三方组件都要收费),导致微软流失了一大批粉丝,不是说微软的编程语言不优秀,而是费用太贵,软件开发公司需要付费购买,开发好的软件给甲方公司使用,甲方公司要不要买SQLServer?要不要买Windows服务器?盗版不行吗?个人用盗版一下问题不大,企业呢?但是如果我跟随Java或者PHP体系,我可以把免费的Java或PHP运行于免费的Linux操作系统上,并且连接免费的MySQL数据库,大家只需要关注编程本身,而不用关心版权问题,这个世界本就该这么简单就好不是吗?
再聊一下PHP。毕竟并不是每个互联网应用都是金融行业那般规模嘛,一个小网站,搞那么复杂干嘛呢?PHP由于其更低的学习周期,专为Web系统而设计的特点,开发也非常快速,很适合互联网的特点,所以很多网站也基于PHP开发。于是乎,一种牛逼的系统组合诞生了,LAMP(Linux+Apache+MySQL+PHP),一套完整的开源服务器及后台解决方案,让无数企业免于版权的苦恼。当然,LAMP的M,今天也可以指MongoDB,P也可以指Python。
但是,我们不能忘记了,还有一批技术大牛们,是从早期的C/C++走过来的,基础设施建设得差不多了,总得跟自己找点活儿干啊。其实很多从C/C++过来的人,是看不起这些后起之秀的,他们觉得这些技术太Low。C和C++当然不会落幕,基础设施还得继续完善,同时,高校那万年不变的课程体系,也继续延续着这些编程语言的学习,这也是为什么编程语言排行榜,常年的前三甲者是Java、C、C++的原因。另外,互联网泡沫破灭后,游戏行业空前发展(直到今天,游戏行业也是为数不多的纯靠软件本身实现盈利的行业)。游戏开发使用最多的是C++。用C++来开发游戏并不是说C++多么适合游戏开发,而是游戏(主要是端游)的底层接口和游戏引擎基本都是基于C++来开发的,而操作系统的渲染引擎如OpenGL,DirectX也者是C++接口。当然,C++的运行效率也是不二之选。
2008年,iPhone开始风靡全球,一机难求。手机行业赢来了新的拐点,智能手机开始发力,Google也在同一时期联合一些运营商和手机制造商把Android推向了市场。两大科技公司几乎瞬间占领了科技制高点,引领全球移动互联网行业至今,仍没有第三个王者。在所有这些主流的编程语言中,苹果公司一个都没选,而是选择了Objective-C作为iOS的应用开发语言,文章开始的编程语言排行榜中,大家可以看到,这门编程语言从名不见经传到从2015年到达第3名的巅峰,靠的就是苹果。当然,由于原生应用开发的逐渐下滑,排名又下滑到第10名。而此时的Android,却选择了Java作为应用开发的编程语言,所以,智能手机又再次给Java加了一把火,Java从此常居排行榜第一位,暂无竞争对手,也是可以理解的了。你用Android手机吗?那不就完了。
伴随着互联网的应用,还有一门编程语言,也开始变得牛逼哄哄,那就是JavaScript,一门主要运行于浏览器中的编程语言,彻底拉近了Web页面与人们的距离,各种交互方式,越来越方便的操作,越来越友好的用户体验,背后是大的功臣是JavaScript,其次才是HTML和CSS(但是,它俩不能算编程语言,只是一堆标记而已,本文就不讨论了)。
回顾这10年,最大的赢家是Google和苹果,最大的输家其实不能说是诺基亚,而是微软。Java打败了微软的Visual Studio,PHP打败了微软的http://ASP.NET,Google和苹果,即将打败微软的Windows Phone,MySQL打败了微软的SQL Server。而微软毕竟是微软,虽然犯了很多错误,但是依然活得很好,在战场上,也只是局部失利而已。
2010年-至今:移动互联网

这一个阶段,移动互联网的这10年,相信大家都是参与者,对很多事算是都经历过了。这10年,移动互联网走向了巅峰,传统互联网的形态被彻底打破,很多跟不上节奏的企业,要么转型,要么死。转型成功的少,死的多,死了,不会有多少人记得你的名字,只有你成功了,才会有人记得。
作为移动互联网,我本该是最核心的参与者,但是工作原因,我却错过了移动互联网最黄金的几年创业期,所幸还是没有错过得太离谱,算是成为了一个后移动互联网时代的深层参与者。毕竟,我现在仍然参与其中,谁说错过了就一定是坏事呢?说不定我也错过了破产呢?移动互联网,从2008年智能手机上市以来,2010年算是基本上家喻户晓,真正成功地推广了移动互联网。当然,这也跟3G的正式运营有关,难道靠着GPRS能够移动互联?
这一个10年,有多少人为移动互联网疯狂,又有多少人书写着创业的血泪史,不一而足。移动互联网在中国的创业,基本上是在2014年到达顶峰,大部分科技公司完成IPO,开始收割。而这一阶段,大家都在忙着造手机,软件领域,创新大多是应用创新而非底层创新,基础设施领域,无非云计算和人工智能而已,大数据也只能算是一个应用领域而已,并没有在技术上有多大突破。
至于编程语言,除了Java和JavaScript这异父异母的哥俩外,Python简直是在疯狂奔跑,这年头你要不说自己会点Python都不好意思说是程序员。而PHP逐步开始落幕,C/C++还是那个老样子,四平把稳。Objective-C随着iOS走上舞台,又随之慢慢落幕。C#在国外应用不错,国内相对要差很多。简单给大家聊一下原因。
为什么Java能够继续火,一来是历史遗留问题,因为传统互联网时代,Java已经占据大半壁江山,导致企业技术体系架构基于Java,人才擅长Java,那么必须延续Java。二者,Android的市场占有率80%多,主要使用Java开发原生应用。三者,很多互联网企业要完成高可靠,高并发的架构设计,还非Java莫属,其他编程语言还真干不了这个。第四,Java的生态非常完善,各种第三方库和框架,让开发变得越来越简单高效。最后,Java能干的事情确实有点多,C#能干的,Java全部能干,PHP能干的,Java全部能干,Python能干的,     Java也基本都能干。而反过来,则不行。C#开发不了Android应用,PHP干不了大型系统,也开发不了Android,Python也不是专门用来构建高并发的大型系统的,当然也干不了Android。Python能干的事情不少,但是要代替Java,不可能,最多二者和平相处,各自负责好各自擅长的领域。
但是,有没有Java不能干的,当然也有。C和C++能干的很多事情,Java干不了。Python在数据方面的处理能力,Java目前还不完全具备;开发Windows窗口应用而不是Web应用,Java并不擅长(这是C#或者QT擅长的事情,QT是C++的桌面开发库,开发桌面应用很牛逼);同时,一些专有的领域,比如R语言(统计分析),比如硬件编程,比如机器学习,并不是Java的阵营。
再来说说JavaScript为什么能够火起来,其实传统互联网也会大量使用JavaScript,所以我们不能说JavaScript越来越火,只能说他越来越重要而已,它本来一直都很火。只是由于JavaScript技术门槛相对较低,所以早期并没有那么崭露头角而已。随着H5全套标准的落地和移动端开发的流行,前端开发的应用场景早已不局限于PC端浏览器,而是几乎渗透到应用程序的各个形态中。比如Web页面,WebApp,混合式开发,小程序,甚至很多硬件开发,都使用JavaScript来进行调用。并且JavaScript的前端框架也越来越成熟,学习成本也越来越低,从业者众多当然是可以理解的。其实后移动互联网时代,除了游戏开发和操作系统原生应用必须使用原生开发,大部分移动应用都可以使用JavaScript来进行前端交互,这样可以大大降低开发成本。企业不需要为iOS和Android以及不同的版本和厂商云适配不同的界面,一套H5,搞定所有平台,所有厂商,所有版本,岂不快哉?事实上,无论iOS还是Android,其浏览器内核都是使用的WebKit,两家厂商是同一个内核,所以在处理H5应用时,根本就不存在兼容性的问题。我可以这样说,只要移动应用不死,JavaScript就会一直被重用。但是,JavaScript也有其局限,除了应用于Web应用中,一个大牛也开发了Node.js框架用于后台开发,但是这个框架有点不瘟不火,因为它很难取代Java,PHP,C#和Python的传统地位。
Python为什么能火,从早期Python设计用于运维,到今天,数据分析,机器学习,Web开发,爬虫开发,测试开发,大数据等,都在广泛应用Python。在众多编程语言中一枝独秀,甚至某些排行榜把Python排在了第1名。主要有几个原因:
    这个世界上并不都是程序员才会写代码,很多非程序员群体也要写代码不是?而什么C++,Java,C#等流都太专业了,学习起来也很难,对于非程序员群体来说,精通一门编程语言不是目的,目的是解决工作和学习中的问题。你让我一个搞科研的学编程?你让我一个搞运维的非要变成一个程序员?你让我一个做测试的,变成比程序员还牛逼?你让我一个搞统计分析的人非得要学成个Java开发工程师?我这不吃饱了撑的吗?而Python,恰恰在这些领域有很深的积累,拥有很多成熟的第三方库,学习成本也不高,拿来简单学学就基本能用。Python由于其简洁的语法,快速的学习成本,让很多不想立志成为程序员的人,找到了利用程序解决实际问题的捷径。同时,这几年人工智能和大数据以及爬虫(废话,你不爬数据哪来的大数据呢),也把Python推向了应用前沿。越来越多的企业开始使用Python解决问题,或者Python和Java体系在一家企业中共存。因为两者很难完全互相替代。国家也把人工智能定位成国家战略,而从小学开始就要进行编程教育,让很多人看到了Python的商机,包括我自己所在的企业,也多少受到这方面的影响。难道你让一帮小学生天天编C语言编Java?Python是非常适合于小朋友学习的。
总而言之,Python是面向非程序员群体的最好的编程语言,没有之一。你一定要知道,这个世界上,非程序员群体可比程序员多得多,Python当然会火,而且一时半会儿估计下不来。但是,国内很多企业从招聘角度来看,还是Java比Python的招聘需求多,这个情况会不会在未来被改变,我不知道。主要看Oracle到底会不会把Java生生给玩儿坏了,这是最大的一个风险。(因为Oracle收购Java后,狼子野心,天地共愤)。
近几年,也有一些新的编程语言出现,比如Go语言,Swift,Kotlin,Sky,WebAssembly,Dart等等,层出不穷。面对未来,我们应该怎么办呢?难道把所有语言都学一遍?
2020年-未来:万物互联

未来,必然是物联网大发展的时代,如果还没有进入IT这个行业的朋友,可以进来看看了,否则,你可能会错过一个时代:万物互联的物联网时代,那可是万紫千红,缤纷多彩啊!试想一下,你开的车是联网的,你家的灯是联网的,你坐的马桶是联网的,你家的空调冰箱电视机是联网的,你家的梳妆太窗帘餐桌是连网的,街边的建筑物是连网的,马路上的摄像头是联网的,电梯是连网的,甚至你带的眼睛,你用的牙刷,都是连网的。(我不开玩笑,现在都有这些产品了),那将会是一个什么样的新世界?会孕育多少新的商机?哇,难以相像。
那么,在这样一个时代,我应该用什么编程语言或者学习什么新的编程语言呢?写到这里,听我吹了这么多牛逼了,如果你还纠结用什么编程语言,那么可能是我没表述清楚。编程语言根本不是这个世界的核心,也不是你人生的主宰,无论用什么编程语言,最终我们是要解决现实世界的问题。哪门编程语言适合解决什么问题,我们就用哪门编程语言,你总不能说用Python写个操作系统吧?而编程语言,也变得越来越简单,学习和使用它,将不再是问题。作为IT从业者,我们只需要思考,未来有哪些问题,还可能通过IT技术来解决,就够了。至于编程语言,你非得要让我说总得学一个的话,那么我就用下面的话,来结束这篇万字长文吧。
如果这个世界只有一种编程语言,我建议你学习Java;如果有两种,我建议你学习Java和Python;如果再给我一次机会可以选三种,那么我建议你学习Java、Python和C++。因为这三种编程语言,可以解决这个世界上绝大部分现实问题,无论软件还是硬件,无论互联网还是物联网,无论前端还是后端。不对啊,强哥,前端不是只有JavaScript吗?没有不对啊,Java都会了,你还担心学不会JavaScript?如果你Java会了,学习Python和C++将变得非常容易,如果你这三门编程语言都会了,这个世界上所有的编程语言,我保证,你花三天时间,足够搞明白怎么回事了,进而马上可以应用于项目中,在项目中再去解决实际的问题就可以了。我就是这么干的。
大家好,我是强哥,我是一名程序员,我快40岁了,但是我依然在写代码,乐此不疲,因为,我喜欢写代码。多谢大家关心,我的头发依然茂盛。
:本文由蜗牛学院CEO @强哥 撰写,首发至知乎专栏《强哥学堂》,原文链接https://zhuanlan.zhihu.com/p/106808045,切勿擅自转载!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-2-6 22:41 | 显示全部楼层


C:1973年的贝尔实验室中,Ken Thompson和Dennis Ritchie在做UNIX系统内核移植开发时,感觉使用汇编语言很难实现,于是使用BCPL开发,并对其改进推出了B语言,但B语言开发的UNIX内核无法达到预期要求,而后又在此之上开发了C语言,并用C语言重新编写了UNIX内核。此外,Linux和Windows内核也是用C语言编写的。

    应用领域:操作系统、编译器、嵌入式硬件、网络服务器;优势:接近底层,跨平台和可移植性良好;简洁小巧,灵活可靠,运行效率高;几乎所有编程语言都脱胎于C,直接或间接借鉴了C的概念,掌握C语言有助于了解其他语言;弊端:开发效率低,周期长;
C++:1979年4月,Bjarne Stroustrup在贝尔实验室开始分析UNIX内核,设法将其分布到由局域网连接的计算机网络上。由于缺少现有工具,为了便于描述内核的模块化和通信模式,Bjarne Stroustrup开始设计一门新语言,设计目标是既能保持Simula的程序组织功能,又能兼顾C语言的效率和灵活性。1979年10月,一个名为Cpre的预处理程序诞生,它是一个带类的C(C with Classes)。1983年,C with Classes改名为C++,并开始引入虚函数、重载、引用等新特性。1998年,C++标准委员会发布了C++的首个国际标准——ISO/IEC 14882:1998,简称C++98。C++仍处于不断发展中,特性越来越复杂,至今经历了C++11/14/17等标准,C++20也即将到来,C++11及其之后的标准被称为Modern C++。

    应用领域:操作系统、虚拟机、浏览器、数据库、编译器、桌面应用、图像处理、流媒体、高频交易、区块链、军工软件、搜索系统、游戏引擎、服务器、虚拟现实、其他语言的库;优势:C++几乎可以使用C的所有特性,并提供了大量新特性;C++保留了C的优点,灵活可靠,运行效率高,又有比C更高的开发效率;掌握C++能更深入地了解Java、Python的内存管理机制,并能快速上手其他编程语言;弊端:规模庞大,蕴含多种编程范式,学习曲线陡峭;C++几乎提供了解决一切问题的组件,但几乎没有人能完全掌握,而只需要选用一部分子集;C++尝试适用所有场景,反而导致对大部分场景的支持都不够突出;必须兼容旧标准,历史包袱重;
C#:1995年,Sun发布Java,Java良好的跨平台性使其逐渐成为企业开发的首选。为了对抗Java,微软公司的首席架构师Anders Hejlsberg着手研发了一种名为Cool(C-like Object Oriented Language)的编程语言,并于2000年在PDC(微软专业开发者会议)上以C#(C Sharp)的名称公布。

    应用领域:桌面应用、游戏客户端;优势:全面集成.Net库,文档丰富,易于上手;弊端:捆绑微软,国内不如Java应用范围广泛;
Objective-C:1983年,Stepstone公司的Brad Cox和Tom Love发明了Objective-C,它遵循ANSI C的标准,基于Smalltalk改进,在C的基础上加入了面向对象特性。1985年,被赶出苹果的Steve Jobs创办了NeXT公司,NeXT获得了使用Objective-C来开发NeXTSTEP Toolkit的授权,这个工具包就是Cocoa的前身。1996年,苹果收购NeXT,Steve Jobs重回苹果,并使用Objective-C重新设计了Mac OS。2007,iPhone问世,3G/4G通信技术日趋成熟,2011年正式进入移动互联网时代,Objective-C火爆一时。

    应用领域:iOS、Mac OS开发;优势:开发苹果程序的首选;能与C/C++/Swift混合编程;弊端:使用范围有限,只能用于开发苹果的程序;2014年WWDC(苹果全球开发者大会)上,苹果发布了新的编程语言Swift,Objective-C未来可能被Swift取代;
Java:1991年,Sun公司为了开拓消费类电子产品市场,开始启动由James Gosling领导的Green项目。James Gosling在研发过程中发现,消费类电子产品要求高可靠、费用低、标准化、使用简单,用户不关心CPU型号,也不欣赏昂贵的RISC处理器。为了使整个系统与平台无关,项目从改写C编译器开始着手。在此期间,小组发现C语言经常被开发者错误使用,C缺少垃圾回收、多线程、移植安全性、分布程序设计等特性。最终Sun的创始人Bill Joy决定开发一种集C和Mesa搭成的新语言,提议在C的基础上开发一种面向对象的环境。起初James Gosling尝试修改和拓展C的功能,并称为C--,后来他注意到办公室窗外的一棵橡树(oak),于是决定将新语言命名为Oak。James Gosling的设计中,编译后产生的代码运行在操作系统的虚拟机解释器上,从而实现平台无关性和可移植性。项目起初用于机顶盒领域,但由于市场不成熟,初战告败。1994年,团队决定将技术用于万维网,正好赶上了互联网时代的浪潮。由于Oak的商标已经被注册过了,在命名征集会上,排名第一的名字Silk被James Gosling强烈反对,排名第二和第三的仍有商标问题,最终排名第四的Java得以采用。Java是印度尼西亚爪哇岛的英文名称,爪哇岛盛产咖啡,因此Java中的许多类库与咖啡豆有关,如JavaBeans、NetBeans、ObjectBeans,Java的logo就是一杯冒着热气的咖啡。1995年5月23日,Java正式发布。1996年1月,JDK1.0诞生。2010年10月24日,Oracle以74亿美元收购了Sun Microsystems。ASF(Apache软件基金会)呼吁JCP(制定Java规范的组织)反对Oracle提出的Java 7和Java 8路线图,除了Google无人响应。ASF和Google反对的理由与技术无关,而是与Oracle的应用范围和许可授权限制有关。2010年11月,ASF退出了JCP。

    应用领域:Android、Web应用、服务器、大数据、企业应用;优势:易于学习,开发效率高,市场需求旺盛;垃圾回收机制安全可靠,不容易出现问题;依赖于JVM,跨平台性良好;库丰富,并在不断发展,社区资料完善;弊端:灵活性差,不能随心所欲地控制内存;依赖于JVM,运行效率受其影响;除了语言本身外需要学习过多框架;
JavaScript:互联网开始流行时,网页变得越来越复杂,然而大部分因特网用户还只能通过 28.8 kbit/s 的调制解调器连接到网络。用户填完一个表单,点击提交按钮,等待了30秒的服务器处理后,看到的可能只是某个地方填错了的提示。为了解决这个问题,Netspace公司计划开发一种能在客户端完成基本验证的技术,当时Brendan Eich正着手为将于1995年发行的Netscape Navigator 2.0开发一个名为LiveScript的脚本语言,为了赶在发布日期前完成,Netscape与Sun成立了一个开发联盟。此时Java正被媒体热炒,Netscape为了蹭Java的热度,临时将LiveScript改名为了JavaScript。随着Node.js和React的出现,JavaScript的应用领域也越来越广泛。

    应用领域:Web前端、后端、移动应用、内嵌脚本语言;优势:解释型语言,反应快速,可立即运行;依赖于浏览器,与操作系统环境无关;弊端:代码在用户计算机上执行,可能被恶意活动利用,存在安全性问题;在不同浏览器上解释方式不同,可预测性差;
PHP:PHP继承自一个名为PHP/FI的老工程,PHP/FI由Rasmus Lerdorf于1995年创建,最初只是一套用来跟踪访问他主页的人们的信息的Perl脚本,这套脚本名为Personal Home Page Tools。随着更多功能需求的增加,Rasmus写了一个更大的C语言的实现,它可以访问数据库,可以让用户开发简单的动态Web程序,并发布了源代码,以便每个人都可以使用并改进。最初PHP指的是Personal Home Page,如今PHP的含义是PHP: Hypertext Preprocessor。

    应用领域:Web后端、移动应用后端;优势:易上手且功能丰富,开发效率高;开源,社区庞大活跃,解决方案充足;跨平台性良好;与各类数据库、文件系统协作顺畅;弊端:学习门槛低,存在大量经验不足的开发者的开源代码;大量古老的开源代码仍被使用;命名规范混乱;
Python:1989年圣诞节期间,在荷兰首都Amsterdam的Guido von Rossum为了打发时间,决定开发一个新的脚本解释程序,做为ABC语言的一种继承。Guido是喜剧团体Monty Python的爱好者,因此将电视剧《Monty Python's Flying Circus》名字中的Python作为了新语言的名字。1991年,第一个Python编译器诞生,它由C语言实现,并能调用C的库文件。由于大量深度学习框架被封装为Python库,伴随人工智能的兴起,加上自身简单易学的特点,Python成为了当下最受欢迎的语言之一。

    应用领域:Web、科学计算、机器学习、爬虫、数据分析、量化交易、云计算、运维;优势:抽象度高,简单易学,开发快速;开源,强大丰富的库;代码强制要求缩进,整洁规范;弊端:解释型语言,运行效率差;代码不能加密;缩进过多导致可读性下降;
Ruby:松本行弘认为编程应该专注于人而非计算机,要让程序员感到编程是一件快乐的事,于是在1995年开发了一种更人性化的编程语言。最初的目标只是想实现Perl所具备的功能,因此松本行弘从Perl借鉴了很多内容,也因为受Perl的影响,他决定用一种宝石来命名新语言,最终使用了一位同事的生肖石——代表七月的Ruby(Pearl代表六月)。Rails框架的出现使得Web的开发更为简单快速,因此Ruby on Rails常被作为初创公司的技术选型。

    应用领域:Web;优势:语法糖丰富,易于上手,开发快速;弊端:解释型语言,运行效率差;小众,常用于初创公司;
Lua:Lua是一个简洁、轻量、可扩展的程序设计语言,由巴西里约热内卢天主教大学的Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo所组成的研究小组于1993年开发而成,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行,它还有一个同时进行的JIT项目,提供在特定平台上的即时编译功能,但Lua并没有提供强大的库,所以不适合作为开发独立应用程序的语言使用。

    应用领域:游戏、插件、配置文件;优势:小巧简洁;支持协程;弊端:应用领域局限;
Go:程序员常常要在开发效率和性能中做出选择,C/C++性能高但开发周期漫长,Python和Ruby适合快速开发但性能不足,谷歌首席软件工程师Rob Pike说:“我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。”2007年,包括开发过C语言的Ken Thompson在内的一批Google工程师,开始将本职工作外时间的20%投入于Go项目。2008年5月,Google发现了Go的巨大潜力,开始全力支持这个项目,让员工全身心投入Go的开发。2009年11月,首个Go版本以开源方式向全球发布。2012年3月28日,首个正式版本Go 1发布。Go在开发效率和性能之间架起了桥梁,它可以在不损失应用程序性能的情况下降低代码的复杂性,编译后Go代码的运行速度与C语言非常接近,而且编译速度非常快。

    应用领域:云计算、大数据、分布式系统、Web后端、区块链;优势:Google支持且开源;简单易学;编译快且运行快;支持并发;弊端:诞生时间晚,市场仍处于实验阶段;
Kotlin:Kotlin基于JVM,由JetBrains开发,于2010年首次推出,次年开源。2016年2月,Kotlin 1.0正式版发布。2017年5月18日,Google I/O全球开发者大会上,Google宣布Kotlin正式成为Android开发的官方支持语言。

    应用领域:Android;优势:兼容Java,且更加简洁现代;弊端:诞生时间晚,市场仍处于实验阶段。
发表于 2021-2-6 22:42 | 显示全部楼层
1,所有计算机语言的功能都是一样的。
2,都是由 判断语句,跳转语句,(循环语句)和库组成。


其实学一门新的语言,语法部分很简单,大同小异,语法糖部分也不难。
难点在于库,库从不知道到掌握细节,需要很久,通常接口庞杂,不是一时半会可以熟练的。
c/c++学的是模板,标准库,boost等等;
java学的模式,spring,等等;
python学的是Numpy,Pandas等等;
c# 学的.net 库,WinForm等等;
发表于 2021-2-6 22:51 | 显示全部楼层
有些朋友给我留言说,兴致满满的开始自学编程,但是拿到一堆书,却不知道从哪开始,最后的结果就像下面这个图:

下面结合我之前的学习经历,如何从零基础慢慢提高。
1.首先,给你的学习编程一个重要的意义
做任何事情前,你都要首先明白为什么要做?这个理由不是学校开了某个编程课,你为了应付考试。或者看到其他人都在学,你没事干,也学下吧。这都是盲目的表现,就好比你追一个女孩,不是因为她家有钱,最重要你追她的原因是:你真的喜欢上了她。

所以从一开始,就给自己的学习定一个大的意义,这会让你不会中途放弃。而且能带给你前行的动力。
我当年学习编程,是因为觉得未来很多互联网的行业都于编程有关,意识到这是个基本技能,而且技能在手,不会哪天饿死街头。同时,编程的世界很纯粹,不像其他行业需要很多关系去维护,要想往上爬,的整日琢磨如何混好。但是,在编程的世界里,全靠技术说话:你行就行,不行就不行。
而且现在是人工智能时代,编程已经变成了像excel那样每个人都需要掌握的技能,你觉得学校编程意义大不大?更重要的是,学会编程你的收入概率会比其他人高。

2.如何选择你人生的第一个编程语言
很多人一开始是对编程有兴趣的,但是之前很多大学一上来就教C,C++。里面复杂的内容,也让很多人从入门到放弃。到最后连兴趣都没有了。没有兴趣是最可怕的敌人。
如果你是刚开始学编程,选一个比较人性化的编程语言,我建议从python开始。它足够简单,而且容易上手。而且现在连小学生都开始学python了。
我们再看看各大兵器排行榜上的python排名,它已经是人工智能的第一编程语言。相信它的火热程度还会持续升温。

3.选择一本经典的书进行系统学习
很多人一开始为了追求快速,会选择一些比如xx天学会Python,xx天学会机器学习的书。这些书看上去高大上,其实是在误导你。世界上哪有xx天就能学会的,记住一条原则:越是有价值的知识,越难学,不然很多人都能学会了。
一般来说,一本书要比公众号的文章系统性强,一本某个领域的经典教材要比很多快销书系统性强。一个系列课程要比一次1小时的分享系统性强。所以从一开始就摆正心态,不要急于速成,有时候慢就是快。有了这个心态,就老老实实选一本这个行业经典的书,最好是国外的书。
既然在这个领域你是新手,就不要指望自己能把散落的信息整合成系统了,那是高手要做的事情。要想系统地学习,那就踏踏实实地拿出几个月的时间来,看几本这个领域的经典书,选一门系统课,或者跟着一个系统学习过的老师把这个领域的骨架摸清楚。
你又不比别人聪明几倍,却想用几分之一的时间,就掌握人家花了好长时间下了硬功夫,系统掌握的知识,怎么可能呢?
先接受一个已经存在的系统,再在上面修修改改,对于新手是最适合的方案。


3.选择一个有界面的编程环境
很多编程的书,一开始安装后,都是教你在命令台下写代码。面对这么一个黑洞洞的东西,你的兴趣又降下来了。
一开始编程不要在这个不友好的命令行下做。而是找一个集成开发环境(IDE),在里面敲代码。人对有界面的东东天然有好感和兴趣。比如学习Python,一开始用notebook就很容易敲出代码,而且运行结果也能实时的反馈给你。
当然最开始要做的事情就是先把环境搭起来,开始输出你人生的第一行代码:“Hello World”。这是简单的第一步,但是对于很多完全自学的同学都非常难了。好事情是,现在网上很多教程可以帮助到你。


4.重要的事情说三遍:多敲代码
编程是门手艺活,什么意思?就是你的多练习。这就好比,一个懂得再多泡妞理论的单身狗,都没有一个谈过恋爱的人,更懂得如何追女孩。
不要光看书,或者光听课。要多撸代码,在实践中成长。遇到不明白的地方,就多联系生活中的事情就类比想明白了。比如我在学习数据结构:队列,不明白的时候,就联想到了餐厅外婆家的排队叫号系统,就立马明白了。
其实编程中很多东东,都是为了解决现实生活中的问题,所以很多知识都能与现实生活中的实际事情对应起来。


5.学会记笔记
很多人刚开始学编程以往里面的很多东西都要记住,其实这是错误的做法。
不用去记住这些代码,理解代码比记住代码更重要。这里我们能理解代码是干什么用的就可以了。如果后面用的时候忘记了,反过头来知道在哪查找答案就可以了。这是学习的重要思想之一:知道在哪查找答案比记住更重要。
很多时候你感觉自己学会了,但是其实并没有掌握。我个人解决这个问题的办法就是记笔记。记笔记不是简单的罗列知识,而是将学到的知识,用自己的语言整理出来。同时,记笔记还能通过输出倒逼你的输入。下面是几个写实践笔记的讨论,对你应该会有帮助:

6.学会使用搜索引擎
刚开始学习编程,看到代码报错,就会茫然失措,脑子中立马闪出一个'funck'。
其实解决编程代码问题也是有套路的,这个套路就是:
能不用百度就别用百度,你要学会在宇宙第一大搜索引擎,和全球最大的技术问答平方:stackoverflow上搜索问题的答案。

一切的学习都是学习能力的提高。对于编程,真正的高手,就是遇到问题能从搜索引擎中找到答案。


7.多看大牛的技术专栏
平日多关注这个领域顶尖高手的技术专栏(博客),选择你认可的人成为你心目中的榜样和导师。因为导师可以降低你加入一个新行业的成本,帮助你熟悉环境和行业规则,也会鼓励你完成心理方面的转变。
同时你也要 建立新的学习社交网络。如果你周围没有和你同样喜欢学习编程的人,会阻碍你的进步,更糟的是,有的人自己学不会,还会嘲笑你。过去的人脉关系会阻碍你的前进,因为他们是以过去对你的认知来评价你。感谢这个互联网时代吧,你可以在网上找到志同道合的朋友和你一起前进,新领域的人脉,会给你提供各种各样新的机会和情感支持,帮助你融入。

人都是都是“快感型”物种。再加上学编程是一个长期的过程。所有需要你自己列个长期计划,并把长期计划分成段目标,每个目标完成后给自己进行激励。


8. 比知识更重要的是什么?
如果你有机会去互联网工作,就会发现你不会一直用一种编程语言工作的。很多时候,新项目来了,需要用新的技术,这时候老大会让你快速学会这个知识,然后在项目中应用。我之前做过的不同项目用到的编程语言来就有5种,而且是边学边用的。
回过头来看,比知识本身更重要的是你的学习能力。那什么是学习能力呢?
学习能力其实就是你能够做到“学什么会什么”。
有学习能力和没有学习能力的人差别是很大的。这就好比,你玩《王者荣耀》花钱找人替你通关,和你自己拼个人能力通关,所习得的技能和体验是完全不一样的。


提高学习能力的至少关键知识是什么呢?
其实就是两点:
1)习惯使用搜索引擎的能力
2)不做伸手党的能力

这两个能力看起来简单,但是长期养成却很难。

投机与投资的差别就是投机看重的是短期的股票涨跌,而投资看重的是一家公司长期的发展,希望你在学习编程的路上采用的是“投资”战略,并且培养了自己的学习能力。加油,你并孤独。


零基础掌握人工智能(AI)核心语言:Python

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-2-6 22:54 | 显示全部楼层
知呼有个著名的"轮子哥", 大概你听说过吧.
为啥叫"轮子"呢?  我猜就是来自于一句编程经常听到或者说过的"不要重复发明轮子"的话.
这个"轮子"比喻的到底是什么呢? 就是一些编程中被大量重复使用到的"东西"(代码段啊, 函数啊, 类啊, 库啊, 控件啊, 组件啊....)
别管我是否曲解了轮子哥名字的由来, 也别管我罗里八嗦好像扯到和主题无关的地方, 容我慢慢道来.
我不说什么继电器开关编程的远古年代(虽然那也是编程, 但未免离开题主的想法太远)
就从我们听说过的什么汇编啊, C啊,说说.
汇编, 可以说是最接近电脑硬件的编程语言了(你要说机器码, 好吧, 但是我觉得现在几乎没有人会用它).
用汇编编程,就好像你是个刚进入封建社会的原始铁匠, 无论钉子, 锤子, 铁砧, 统统得由你自己来造. (当然, 也有宏汇编, 相当于"有好事者"已经帮你搞定了锤子,铁砧, 也不用你自己炼铁了, 但TM还是很蛋疼, 基本上要啥没啥)
然后就是C, 这个么, 就相当于作坊了. 已经有不少现成的零件可用, 至少钉子, 螺丝, 铁条, 架子什么的不用你自己一根一根打出来了. 但是稍微复杂点的玩意儿还是得你自己弄.(不好意思, 接触C的年代比较早, TC2的年代, 写个256色的屏幕显示都得自己折腾)


再接下来, 就是很多现代意义的"搞基语言"了(有错别字么?我怎么看不出来啊.)
不光是钉子螺丝铁条架子, 连发动机都有现成的了.  早些年著名的"RAD"语言就是VB和DELPHI.
再后来就是.NET和JAVA之类的


再再后来又开始流行脚本语言了, 比如大蟒蛇对吧. 干脆就是胶水, 直接调用现成的功能库(来自其他各种不同语言编写的), 只需要控制数据的流向和逻辑的走向即可. 是不是很牛逼?


看上去, 只需要掌握最后一种, 就能掌控一切了么, 一定程度上确实可以. 但是就像你随便在淘宝上买了电池+电动机+底盘, 也能自己造个电动车跑得起来一样, 大多数情况下, 你所能做到的也就是跑起来而已.
至于什么时候会散架, 能跑多块多远, 你是心里没底的.


当然,也不用担心,90%的"程序员"的上限, 也就能让它拼起来动几下而已.
发表于 2021-2-6 23:00 | 显示全部楼层
导语:去年的某个下午,我突然决定自学编程。 然而我碰到一个困扰我很久的问题——我应该学习哪一门编程语言? 后来我花了3个月时间,查看大量知乎的资料、询问w3cschool的程序员(也就是我同事)、再调查了当前市场各类编程语言的薪资,得出一个很平凡的结论——选自己喜欢的。
大家好,这里是w3cschool,在线编程平台。
在去年一个下雨天,我决定学编程。
为什么我要学编程?
一方面是觉得编程挺好玩的。
另外一方面,是因为w3cschool平台上有大量的编程初学者,我想要了解他们学编程中会碰到什么问题,以便更好解决用户的问题。
但是我碰到一个问题,不知道该怎么哪一门编程语言。
似乎每一门编程语言都很不错,而其牛逼的地方,都有发展前景。
后来我发现这个问题不仅仅困扰我,很多想要自学编程的小伙伴也会碰到这个问题。
心想,如果能一开始就找到自己喜欢的编程语言,是一件很幸运的事情。
就像一开始就遇见对的人,然后很早就在一起了,那岂不是很幸福。
也因此,我花费了3个月的时间,查询了知乎的资料,跟w3cschool的程序员,还有去调查目前各个招聘网站上不同编程语言的薪资待遇。
最后总结到这篇文章里面,希望能够帮助到对编程有兴趣的小伙伴。
由于本文主要是写给对编程有兴趣的小伙伴,如果有出现偏差,也希望各位能够留言指正。
如何选编程语言

在我自己准备自学编程的时候,就碰到这个问题,当时我向w3cshcool的技术经理“老王”请教。
老王可是一个技术大佬。
可是他似乎也挺迷茫,反而问我,你自己喜欢哪一门编程语言?
当时,我也懵,心想似乎网上说的很多编程语言都不错啊!
“听说Java很不错,就业前景好” “听说Python现在很火,而且很简单,而且从业方向很高端:人工智能、机器学习” “PHP是世界上最好的编程语言...” “要不学前端吧,简单,而且听到到处都确认” “还是C语言吧,所有语言都会死,C语言绝对不会死” “...”
这就是编程初学者的困扰!
似乎每个编程语言都很好,你怎么才能知道你喜欢哪个编程语言。
那么我们简单理清一个问题,编程语言到底是个什么东西?
学编程,本质是“学如何使用工具”

编程语言 = 工具
首先,让我们明确一点:学编程是在学什么?
答案很简单,就是在学如何使用工具
只是这些“工具”,非常强大牛逼,能够做出非常多很棒的东西。(网站、游戏、爬虫等)
也正是这些“工具”因为强大,所以使用起来会比较复杂,需要你花点时间去学习。
就像操作无人机一样,无人机的使用也是很复杂的。
你需要花一些时间去学习,才能熟练使用它,以便达到自己的目的。
同样,编程语言也需要我们花费一些时间才能学会。
但是本质上,这玩意就只是个工具
而各个编程语言的技术文档,其实就是一个工具的说明书而已。
当你学会一项编程,再去学其他的编程语言,你会发现其实也就那样。
所以别被吓到,你甚至可以把这些“工具”当成“玩具”!
去玩玩它,你会发现,这些“玩具”还挺好玩的。
只要你看下说明书就能玩。
所以学编程第一步,是想办法“玩它”。
比如你想把知乎某个用户的资料都“抓走”,那么你就去学Python的爬虫。
然后去玩玩看。
当我们知道,编程语言是工具的时候,那么剩下问题简单了。
了解这些工具都能干啥,我们挑一个我们喜欢的来。
下面简单介绍下各个编程语言都能干啥。
编程语言的有什么

编程语言有很多种!
目前已知的编程语言大概就有600多种。
不过,主流的编程语言其实不多,这些也就是我们常见的编程语言。
C语言、C++、PHP、JavaScript、java、python、swift、SQL等等。
而这些编程语言有什么区别呢,或者说有什么可比性?
了解这个,有助于你选择你喜欢的编程语言。
这边举个例子:
不同的编程语言,就像不同的交通工具!
飞机:速度快、限制多(安保、飞机场地等)、驾驶难度高 轮船:载货多、航程远、效率高、驾驶难度高 高铁:速度快、路程有限制、、驾驶难度高 汽车:速度相比要慢、但是便利、驾驶难度低 自行车:速度慢、便利、驾驶难度相比之下,最低。
而不同的编程语言,就像这些交通工具一样。
你学编程,其实就是在学如何驾驶(使用)这些交通工具(编程语言)。
而这些交通工具,其实没有可比性,他们都是交通工具(都是编程语言)。
但是在不同的运用场景,各有自己的优势!
你在一个园区内出行,你的选择肯定是自行车,而不是飞机! 虽然自行车相比飞机来说,速度慢、但是比较便利。 但是在园区这个场景里面,自行车的便利性和优势太明显了。而且,学自行车的成本肯定比学开飞机低很多。 但是,如果你想出国,那肯定是选择开飞机或者驾驶轮船。(但是学习成本会比较高) 而在某个工厂里面,可能叉车比自行车、飞机、轮船有用。
所以编程语言没有可比性,因为意义不大。
不同场景,有些语言一定比另外一些语言更适合。
看到这里,想必各位小伙伴应该很清晰了!
编程语言到底是什么!—— 一些牛逼但是稍微难学的工具!
不同的编程语言本质区别是什么!—— 就像不同的交通工具一样!
那么我们继续迈向我们的核心问题:我应该选择哪一门编程语言?
如何选择编程语言?

那么,接下来,我们就可以来选择这些编程语言了!
先来看下2019年最新的编程语言使用排行榜(范围:全球)
上面这些,都是比较主流的编程语言,各位小伙伴稍微了解一下就行。
方法一:简单粗暴
下面会简单介绍各个编程语言的用途,属于比较简单粗暴!
各位小伙伴随意选一个,然后学好!都能够找到一份薪资待遇不错的工作!
网站:选PHP和Java
游戏:Java、C语言和C++
数据分析:Python
(说明:数据分析可能很多小伙伴不了解,这边简单说一下,目前互联网上各种各样的东西,说白了,就是数据,用python这个工具对数据进行分析和抓取,有助于运营者做决策,当然python用途不止这些,有兴趣可以自己去了解。)
IOS开发:swift
(swift和objective-C都是应用于苹果系统IOS的开发)
前端开发:JavaScript
数据库:SQL
PS: 上面介绍的比较笼统,比如Python其实也能开发网站,比如豆瓣和YouTube就是使用python。 这边只是说个大概,有兴趣最好自己深入了解一下。
各位小伙伴可以先看下自己喜欢做什么,如果你觉得看完上面,还是不知道如何选。
方法二:性格测试
哈哈,是不是很意外,很惊喜,选编程还能用性格测试?
确实,在知乎上,关于编程有一篇文章,大概就是说不同编程语言的程序员,性格和处理问题的方式也不一样!
比如说喜欢收拾房间的人,可能适合Java、C语言、C++这种编程语言,而不喜欢的适合PHP、JS这种编程语言。
再比如说你是个极简主义者,那么你适合Python,如果不是的话,可能你适合C语言。
w3cschool根据知乎和自己网站的用户,在w3cschool的小程序里面做了一个简单的学前评测。
你也可以测试看看,也许就知道你适合什么编程语言了。
(PS:这个图很明显有广告嫌疑,不过挺准挺好玩的,各位小伙伴来试试嘛【手动狗头】)
方法三:选大概率能赢的
成年人做事,尽量不要去考虑结果,选大概率能赢的!
选编程语言也一样!
这边推荐两个编程语言:Java和JavaScript
Java:
就像交通工具一样,我们尽量选汽车这种交通工具!
能运东西,也能跑长途,也能跑短途!
而有一种编程语言特别像这种交通工具,那就是Java
Java也被称为“万事通”编程语言,意思就是几乎啥事都能干!
开发游戏、开发网站、数据分析、人工智能,Java都挺适合的!
另外学Java还有一个好处!
Java属于入门不难,而且属于强语言!
学完Java,再去学其他类似Python、PHP这种语言,会简单非常多。
悄咪咪打个广告,w3cschool有初级、中级、高级一整个体系的Java课程啊!
JavaScript
前端开发,是非常多的人,无脑选择的编程语言。
因为目前国内互联网,对前端开发工程师,需求量特别大!
另外前端入门不难,薪资待遇也很赞。
前端开发,也是非常稳的!
方法四:选热门选酷炫的选好玩的
Python!
好玩!热门!酷炫!
为什么我这么捧Python!因为我自己就选择Python!(哈哈哈哈哈哈)
Python是去年最热门编程语言,这点应该没有争议。
为什么那么火?
因为简单,因为强大!
不久的将来人工智能必然崛起。
最近华为5G不是出来了么,那么AR和VR也必然兴起。
这也是Python为什么火爆的原因之一。
另外Python能做很多很好玩的事情!
比如写爬虫,爬取数据。
而且对网络运营也很有好处,因为Python也删除做数据分析。
但是,最最最重要,是python真的简单。
人生苦短,我用python。
你看下各类编程语言发明者的发量,你就知道了。
方法五:选自己喜欢的——投骰子
最后的最后!
给一个非常非常中肯的建议:选自己喜欢的!
其实,对于初学者来说,各个编程语言,难度都一样。
毕竟你就是白纸一张。
所以务必选自己喜欢的!
兴趣会弥补掉非常非常非常多的短板,什么英语不好,数学不好,都不是问题!
最重要还是你得你自己喜欢!
如果实在不知道,选哪个。
把各个编程语言,写在不同的纸上,投骰子。
投中哪个,就告诉自己,这就是我最喜欢的编程语言,然后把其他纸全部撕了。
以后就选这个编程语言!
如果你想再投一次,那么先把你投中的撕掉,再接着投。
直到你拿到一张你不舍得撕掉的编程,那么这就是你喜欢的编程语言。
肿么样,这个办法是不是非常赞!!!!!!!!
今天,就到这里,下面一篇会给各位小伙伴带来的是零基础学编程的方法!
喜欢给我点赞哦~
(备注:个别图片来自网络,侵删)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-2-6 23:04 | 显示全部楼层
安利一种编程语言:Rust

它是Mozilla公司发布的一种系统编程语言,同时具备高性能和易读性,同时又注重安全,程序bug少,被广泛认为是C++语言的继任者。

Rust让人更加幸福
https://www.zhihu.com/video/1235991297766248448
支付宝一位“三清”博士田洪亮,用Rust参加了支付宝“超级MA力大赛”,大杀特杀,获得了亚军。
事情是这样的…
每年的10月24日是支付宝的“代码节”, “You are your code.” 以匠心精神对待coding,就是支付宝代码文化的一部分。2019年的代码节,支付宝在公司内部举办了一个最强coder大赛,从全公司数万名研发人员海选出100名参赛者,经过多轮PK,最后10名实力强劲的选手进入决赛。
田洪亮正是十名选手之一,说起这个,还有一段小插曲。
在支付宝Java技术栈是主流,而他则是Rust语言的忠实拥趸,虽然公司允许他用Rust开展工作,但知音难觅,有点小郁闷。
100名参赛者里面只有他一个人用Rust参加比赛,其他人要么用Java要么用Python,从性能上来说,要比Rust慢很多,这一下他相当于开挂。
但是,正是因为这个优势,让他有些轻敌,没有优化算法性能,在决赛中与冠军失之交臂,最终屈居亚军。这也说明支付宝内部牛人辈出,并不是只有他一个人有绝活。
不过,Rust的名声却在公司内打响了,有不少人对Rust表示兴趣。趁热打铁,田洪亮在公司内分享了关于Rust的公开课,还成为阿里云的Rust布道师
对了他在支付宝的机密计算团队~
【团队介绍】
蚂蚁金服安全计算团队,致力于打造金融级的可信基础设施,研发独创性的安全底层技术,为了亿万客户和海量数据保驾护航。
    这是一个成立不久的团队,因此你有机会随团队一同快速成长,在项目中扮演重要角色;这是一个有战斗力的集体,技术骨干均毕业于国内外顶尖高校;这是一个原创技术的摇篮,团队成员曾多次在顶级学术会议上发表学术论文。
如果你热衷系统软件,或熟悉底层技术,或深谙安全之道,欢迎加入我们!
【岗位要求】
如果你将于2020.11~2021.10期间毕业,且满足以下条件,请尽快联系我们。
    大学本科或以上学历,计算机或相关专业;熟悉如下编程语言语言中的至少一种:C/C++、Java、Go和Rust;熟悉如下技术领域中的至少一种:操作系统、容器、虚拟化、编译器、体系结构、程序分析、形式化验证、安全攻防、可信计算等;现有研究成果优秀者优先。
【工作地点】
北京、上海、和杭州。
【简历投递】
shoumeng.ysm@antfin.com
更多关于这位“三清”博士的故事,都在这里↓↓↓
“三清”博士,为何选择支付宝机密计算?其他回答:
那些在一个公司死磕了5~10年的人最后都怎么样了?如果我没有那么优秀,我研究生阶段选择机器学习方向还有出路吗?计算机专业学生在大学四年内可以做些什么来丰富简历?自学简单编程可行吗?
Rust为什么这么受欢迎?
https://www.zhihu.com/video/1235991924596637697

Rust的类型
https://www.zhihu.com/video/1235992274884108288

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-2-6 23:10 | 显示全部楼层
著名的语言屠龙了解一下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-2-6 23:17 | 显示全部楼层
越来越多的初学者在纠结于编程语言的选择,这就涉及到一个根本的问题,编程语言之间有哪些差别?该如何在这些差别之中选择最合适自己的语言
编程语言的差别,主要在于两个方面:易用性+学习价值


一、易用性

一门编程语言的评估标准多种多样,比如它的执行速度快不快,又比如它能否在小型机上面运行。然而,对于初学者来说,最重要的一点是这门语言是否简单易学,即易用性
清点一下现在广泛使用编程语言:C、C++、python和Java,这几门语言几乎霸占了各大高校的教学榜单。那么,哪门语言最适合初学者呢?
C:适于嵌入式开发,语法较少,但是涉及到内存操作较多,非面向对象
C++:语法复杂,应用领域广泛,指针、引用、函数指针、指针函数、智能指针。。。
JAVA:适用于商业软件的开发,语法难度中等
python:语法及其简单,只要掌握变量、函数和对象的基本概念,就能快速上手
所以,从易用性的角度,python>Java>C>C++,建议先学一些python的知识,然后看看机器学习、深度学习或者爬虫方面的知识。推荐一个适于初学者的课程:
学习网课必须要搞清楚自己想要学会的技能是什么,比如上面这个适合于初学者,可以从中学习到python的基础语法和基本操作知识,以及变量、函数、对象和继承的基本理论,并结合自己行业的具体内容进行锻炼(比如金融、互联网和经济方向),同时学会一些自动化办公的基本技能,现在用python操作Excel也是一门非常值得关注的技能。


2、学习价值

可选的编程语言有几十种,不同的行业需要不同特性的编程语言,比如C/C++非常适合于工业现场的嵌入式的平台,因为它的执行速度快。
这个时代讲究的是核心的竞争力,作为程序员同样要拥有自己核心技能。核心技能不是通过短期培养就能获得,需要长期的深入研究一门知识,才能让自己获得专家水平。所以,初学者必须选择一门语言进行深究。
那么,要选择什么样的编程语言进行深究呢?我个人认为,应该是一门难度非常大的语言。如果一件事情难度很小,同时有很多人在做这件事,那么怎么才能保证你脱颖而出呢所以,要从众多语言中,选择最具学习价值的一门语言
前面说过,每个行业的情况不同,软开行业可能JAVA最有价值,人工智能行业可能是python最有价值。所以,要结合个人的行业进行选择。以研三在读的我为例,我目前是做图像处理/计算机视觉的,需要确保自己的算法执行速度够快。因此,我的首选语言是C++。
为此,我经常会磨炼自己的C++技能。相比于python做图像处理的简洁性,C++更加突出它的性能优势。所以,我需要拥有足够多的实战经验,编码数量不等价于编程能力,但是编码数量正比于编程能力
建议充分利用网上相关资源,比如一些非常优秀的网课:
<a data-draft-node="block" data-draft-type="ad-link-card" data-ad-id="ZhiTask_531539621931294720">学习编程语言,纸上谈兵是要不得的。比如上面的课程,我们要有针对性的学习其核心知识点,掌握算法编程的实际应用方式,针对服务器开发任务进行相关知识的调研和完善,充分理解C++是如何发挥其性能优势的。这样,通过一次完整的理论到实践的演练,可以帮助我们巩固知识体系并晚上技能树。


写在最后:

学编程,要做好长期学习+实战的准备,不能只看看书,就认为自己学会编程了。
发表于 2021-2-6 23:17 | 显示全部楼层
拿好板凳坐好,本仙女的小课堂开讲了
先做一个简单的编程语言的介绍,了解一下各个语言的从事方向和优缺点,后面会分享一下自己的一些自学编程的方法和建议,要是觉得可以帮助想要从事IT行业的你节省个2W培训费,就请给我一下赞一下就好呢~


创始于1972年
C是多用途的、重要的计算机程序语言,支持构建化编程,词法变量范围和递归,是开发固件或移动应用的理想语言,通常被用于编写系统软件
C用来做什么
操作系统开发 软件开发 硬件
C的优点
可移动性:C是高度可移动的,你在不做改动或仅做很小改动的情况下可以开发运行在不同平台的软件
C很小:C完全基于变量、宏命令、函数和架构,他们不是特别多,因此,C可以嵌入几乎所有现代微型处理器,从冰箱到闹钟
学会C学会一切:因为几乎所有编程语言都由C实现,学会就能使你方便的学会一切编程语言
C的缺点
运行时间:C语言没有运行时检查机制
面向对象编程:不支持面向对象编程,这就是为什么创造C++
相当大的学习曲线:不是最好学的编程语言,也不是最难的,适用于有其他编程基础的人




创始于1983
C++被视为编写大型应用的最好的面向对象编程语言,C++是C语言的升级版本
C++用来做什么
软件开发 搜索引擎 操作系统 视频游戏
C++的优点
让你与众不同:熟练掌握C/C++能把你放在与其他程序员求职者不同的位置上,使用C/C++你能理解其他编程语言如java和python如何进行内存管理以及如何处理缺陷
性能调整:C++能允许调整你的应用性能以及影响所有计算机性能,它写起来比java要不友善的多,但是你可以用它做任何事
C++的缺点
陡峭的学习曲线:C++学起来十分困难,但是如果你能流畅使用的话能使你远远超过程序员的境界
巨大的尺寸:C++及其巨大,它的大部分功能相互影响是及其复杂的方式,没有开发者能使用全部提供的组成部件,但是会花费大量时间来挑选你的程序的子部件




创始于1983
Objectve-C是一门用途广泛,面向对象的编程语言,在C语言的基础上增加了Smalltalk风格的特点,这门苹果开发的语言,主要用于osx和ios操作系统,还有各自的应用程序(APIs)
[C] 用来做什么
IOS应用
Obj[C]的优点
库:Objectve-C是为了和Cocoa框架配合使用而专门开发的,也就是说可以桥接苹果开发的类库
运行速度:用Objectve-C写的程序更动态化,能在运行时汇总信息去判断是内存还是数据类型,而不是在编程事判断
使用范围有限:虽然Objectve-C能做很酷的事情,但你不能用它在别的平台上开发,比如android
Obj[C]的缺点
学习曲线:不是最容易掌握的语言,因为你最好同时了解一些C语言的知识
别指望马上看到成果:如果你想几周内就拿出程序来炫耀,这不是你应该选择的路径,可能要花上一年才能精通
不同的编程方法:苹果有自己的编程方法,和其他人都不同




创始于1991
python是服务端解释器的、开源的、非编译语言,它能用于自身或其他框架,如Django
python用来做什么
网页开发 视频游戏开发 桌面GUI 软件开发
python的优点
易于学习:python广泛认同为最容易学习的编程语言
库:大量令人惊讶的库和函数使得制作东西极为容易
物联网:python也许会成为物联网最受欢迎的语言,如树莓派这样的新平台都基于python
python的缺点
速度:作为解释型语言,比编译型语言慢很多
移动端:python在移动计算方面很弱,很少有智能应用是有python开发
设计:python是动态型,它需要更多测试以及错误仅在运行时展示




创始于1994
PHP是一种服务器端的脚本语言,专为网页开发儿设计,但也是一门用途广泛的语言
PHP用来做什么
wordPress插件 Web开发 创建数据库访问页
PHP的优点
容易上手:它是一门快速并且容易的服务端脚本语言,用于网页开发和其他广泛的用途
社群强大:拥有庞大的活跃社群,被防范使用,开发者遇到的大多数问题都已经有前人的解决方案了
数据库:对数据库友好,比如文件系统、图片系统等等
PHP的缺点
太容易学了:有许多丑陋的代码,一是因为有太多初学者(因为PHP容易学)二是因为一些开源代码已经出现超过十年,有点过时了
速度:经过验证,PHP语言一般比它的竞争语言运行的要慢
错误处理:和其他语言相比,PHP的错误处理考虑的不够周全,主要是因为PHP的开发历史比较久远,需要支持老版本




创始于1995
java是一种开发者用来创造计算机应用的程序语言,你下载程序需要java运行环境并确保它安装在你的系统上,java也有一些web插件允许你在浏览器中运行应用
java用来做什么
安卓和ios应用开发 视频游戏开发 桌面GUI 软件开发
java的优点
java开发者被大量需求:2015年http://Dice.com报告表明java开发是需求量最高的软件开发技能
一种进化的语言:这个平台在继续加薪功能,如lambda功能
安卓应用开发:谷歌的安卓移动平台是世界第一的移动平台,编写安卓应用,开发者主要使用java
java的缺点
使用大量内存:java比C++使用更多内存更大内存占用
学习曲线:不是学起来最简单的语言,但也不是最难的
缓慢的启动时间:每一个试着用java写安卓应用人都知道同样的代码在模拟器汇总启动多么缓慢




JavaScript是最通用的客户端脚本语言,这意味着JavaScript的代码可以写进HTML页面,当一个用户请求一个包含JavaScript的HTML页面时,这个脚本被发送到浏览器然后浏览器通过它做一些事,
JavaScript用来做什么
网站前端 分析 小工具 web交互
JavaScript的优点
速度:作为客户端,JavaScript非常快,因为任何代码功能都能立刻运行,而不是和服务器通讯并等待应答
朴素:JavaScript学习和实施都相当简单
多功能性:JavaScript能和其他语言相处融洽并且可以用在很多应用,不像PHP或者SSL脚本,JavaScript能嵌入到任何web页面而不用考虑文件拓展名,
JavaScript的缺点
安全:因为代码在客户的电脑上运行,在某些情况下会被恶意利用,这也是一些人选择禁用JavaScript的原因
最终用户的信赖:JavaScript有时会被不同的浏览器编译出不同的结果,服务端教本经常产生相同的输出,客户端脚本会有少许不预知性,不要过多涉及这个–你只要在常见浏览器上测试你的脚本即可




创始于1995
Ruby是动态的、面向对象的、多用途的语言,是最好的编程入门语言之一
Ruby用来做什么
桌面GUI 网页应用 Web开发
Ruby的优点
易于学习:ruby和python都是公认的最好入门语言
库:大量的扩展和库让常遭东西十分简单
巨大的成长中的社区:世界上每个主要城市都有ruby社区,在github上最受欢迎的语言之一
Ruby的缺点
运行速度:关于tuby和rail的主要批评都是“慢”
文档:很难找到很好的文档,尤其是对于一些冷门的库或多个库服用
性能:ROR应用运行起来不像java和C写出来的那么快,然而,大部分的ruby on rails的应用都足够快




创始于2000
一种强大且灵活的程序语言,与所有语言相似,它能被用于创造大量应用,你在C#方面的潜能仅被你的想象力限制,这个语言没有约束你能做什么,C#用于动态网页项目、开发工具甚至编译器
C#用来做什么
windows应用 商业应用 软件开发
C#的优点
.net库:完整的.net库,提供接入大量功能和支持
可转移:基于C语言,所以你学得的架构可以转移到其他语言如java,objective-C,php以及C++
受欢迎:C#和java是最受雇主欢迎的语言
C#的缺点
不适合初学者:C#不是最适合初学者开始学习的语言,有很陡峭的学习曲线,
跨平台:因为集合了.net,所以没有任何跨平台能力。
各个编程技术都有可发展的职业方向,未来生活离不开互联网,各行各业也离不开科技的发展,也许未来还会有新的编程技术的出现,但是这都是需要我们不断去学习,去探索。


分割线
--------------------------
下面分享一下我的自学编程经验,希望可以帮助到一些有需要的伙伴
进入正题
就是学习编程,c++,java,python或者PHP,都是学习一种语言,这每种语言之间都是有一定的关联性,那么在学习方法上其实也基本可以大致相同吧我觉得,我的学习方法不见得适合所有人,但能给到一些想要学习的朋友做一个参考也还是不错的呢。
下面是我学习python的经验方法,我这里只介绍一下我的方式方法,觉有有点参考意义,可以点赞支持一下哦,50赞我可以分享一下我整理系统学习教程和资料呢~
学习python,我首先根据自己当时完全代码零基础的情况下,为什么学习Python作为核心问题,进行了一个自我定位以及目标定位,我认为只要有一个目标,那么就找方法去打成目标就行了。
我是完全零基础,选择学习Python主要还是因为看到大家都说Python是相对简单,比较好入门IT行业的,而我的目的也是希望学习完Python可以找到一份相应的工作,赚取一份工资可以买口红,哈哈哈哈哈哈哈哈哈哈~
当然,也有很多人可能已经从事其他编程工作,但是想要学习Python以来丰富自身,提升自身的核心竞争力,我觉得这样应该会比我这类完全零基础的学习要容易快速的很多,
我就只说下我这位完全零基础是如何学习的吧
我也搜查了一些学习方法的问答帖子,里面也看到很多推荐的学习方法,有推荐书籍的,有推荐网课的,我开始认为,看书应该是比较好的选择,因为著作成书籍,表明内容上是相对有一定的权威和系统的,同时,想到从小都是书本学习,这更能让我信服,于是我就购买了书籍,开始了我的学习计划,可是,在半强迫自己的情况下,我看了三天半书籍实在是看不下去了,是的,三天半还是强迫自己看的,原因一,看书真的太乏味了,看着看着就会心不在焉,总是走神。原因二,这个时候我对代码没有概念,有些文字都要读两三遍才会理解意思,越难理解就越不想看书,这种感觉就是上学时我看数学,英语书一模一样的感觉。很显然,看书学习是不适合我了,
看书不行,于是我就想着还是找网上的视频教程学习吧,上网一搜,真的是各家机构的教程也是琳琅满目,还真的让我不知道从哪开始学起了,这个时候真的是想有一位前辈可以给我指点一下迷津,告诉我应该先学什么,再学什么,哪些是重点知识,哪些是了解就好,就是可以给我一些学习的建议,于是我想那我可以先加入一些技术学习交流群,在里面应该可以认识到一些学习的人,于是我就开始大量的搜索加入学习群,于是在里面开始咨询学习方法,但是,这个时候我又发现,我好像一张白纸,我想问一些问题,可是我不知道该怎么问,我也只能问大家都是怎么学习得,群内的朋友也都还很热情,也和我说了很多学习方式,不过我发现每个人都有各自的学习方式,各自都有各自的理论和优势,在那么多的方法面前我再一次的有些混乱,又不知道哪一方法适合我,于是,我想到千人千面,每个人有每个人的想法,我咨询的人越多,获取的信息越多可能我就会越乱,于是我决定,那我就要借鉴看到的这些信息,来整理一套自己的方式,不一定对,但是可能这更适合我自己。
于是,我并没有先着急的就找教程视频来直接学习,我现在想知道就是,应该先学什么,掌握哪些知识之后,再学什么,我觉得我应该先整理一套相对看上去系统的教程,虽然我最希望可以找到一个人给我一些这类的指引,但是奈何没有找到,那就只能自己去整理了,我根据我买的书籍目录,以及查了一些培训机构的学科介绍,教程大纲内容,进行了一个统计对比,发现其实学习的内容路径也还是有它一定的规律,那我就整理了一份知识点的目录学习路径,我按照我整理的这个学习路径上的知识点目录去查找对应的教程,这样就整理了一套自己的学习资料,整理学习路径和教程,利用了我比较多得时间,不过整理好了那么就可以开始学习了。
但在查找教程的时候,又走了一些弯路,我当时只想到只要按照我整理的这个目录找到对应的教程就好了,可是在学习的时候,还是觉得知识点之间的衔接有些杂乱无章,而且每一个知识点都是不同机构课程风格不同得教程视频,这让我学上去有些别扭,而且有的老师讲的我很喜欢听,有的就不是很喜欢,于是,我就又想,那我就找我喜欢这个老师的课程就好啦,可是我找了两三天,同一个老师的教程是非常难找到公开的全套教程,这个我想也可以理解,老师也可能没时间和精力来从零开始录制全套教程,而且老师也是要工作赚钱养家生活的,于是我想那我可以找同一个机构的教程吧,这样也能最起码是课程风格一致,于是我就找到了我我认为课程比较好得教程机构,又将我的学习资料重新的整理替换了一下,果然我觉得学习感觉好了一些,而且我又找到他们的客服,要到了他们课程的一些配套资料,这对我学习来说起到了更加的有效帮助。
最后,在学习完我整理的学习知识教程之后,又遇到了一个瓶颈,就是学习完知识点内容,掌握的也是七七八八,之后又不知道该怎么做了,不知道自己学习的有没有达到可以找工作的条件,于是我又查询了一些资料,可一些招聘信息,了解的一些信息主要要求说是需要项目经验,需要一些项目功能技术的掌握,那我的理解就是,已经掌握了基础知识,企业招聘人员需要掌握一些项目技术能力,去帮助解决处理问题,也就好像,假设Python有100个技术框架,但是一个企业只用到其中30个,那如果你的学习掌握正是他们用的这30个,那么你不会那另外的70个也可以,只不过你学习掌握的越多,你的条件符合范围和就业机会也就越大,我按照我的这个大致理解,我就仔细了解了一下Python主要可以从事哪些方向,我就根据我比较喜欢的方向看了一下招聘信息,然后根据上面的普遍要求,进行了学习。最后就整理包装了一下简历,尝试着投简历找工作,当然面试也并不是顺利,刚开始的面试是还慌乱,面试也是没有任何结果,不过我是在每次面试中总结经验,收集好面试问题,回来在好好准备,为下一次面试做知识储备,就这样我面了试大概有将近二十家,终于也是找到了一个算是实习岗位的工作,我想着先做着,这个时候应该先到企业中去学习一些真实的项目经历比较重要。
最后我总结一下我学习过程中我认为比较重点的内容把
首先,学习我们要有一个清楚的自我认识,是为了找工作,还是为了辅助工作来增加自己的竞争力,也就是要有一个明确的目标。
如果是完全零基础学习,我建议开始不要先看书,原因上面我也有说了,这个时候看书完全看不进去,里面的知识点也很难理解的,虽然我们从小就接受书本教育,可是前提也都是要有老师讲解的,不是我们自己看书就可以的。
然后,就是要寻找一套适合自己的学习方式,最好还是自己整理一套适合自己的学习资料,因为只有自己最了解自己,这里可能会花费比较长的时间,但是这会让你在之后的学习上节省很多时间,让你事半功倍。
最后,如果在选择视频教程的时候,尽量选择一个老师的教程(但是很难实现)最差也要尽量选择同一家机构的教程,因为这样在课程设计和课程风格上相对比较统一。然后在学习的过程中,最好是根据视频课程老师的进度,自己做学习笔记,这样的好处,一是,在今天学习完,明天你可能就只记得一个大致概念了,俗话说,好记性不如烂笔头,做笔记会让自己印象更深刻,二是,在之后你想要回头复习的时候,也会让你有一个清晰的复习思路。当学习完一个阶段知识的时候,感觉视频老师讲解的内容有些浅,这时候可以看一些优秀的书籍,因为你觉得老师讲的浅,说明你的学习理解的非常好,这时候看一些书可以起到很大的提升作用。
至于找工作面试的事情我就不详细的写了,手敲了这么多,有点累了,最后希望我的建议可以对想要学习的伙伴有一点点帮助吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-12-23 07:21 , Processed in 0.104713 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表