2018年,大学应该开设哪些编程语言课程

-回复 -浏览
楼主 2019-01-16 06:01:28
举报 只看此人 收藏本贴 楼主


福利MIT、清华大学、北航、哈工大等知名高校计算机科学与技术专业课程设置及人才培养方案(详见文末)




一、编程语言指数排行榜


TIOBE 公布 2018 年 1 月排名前三的还是 Java、C、C++, Python 和 C# 排第四和第五。


在 2017 年中,C 语言的比率增长量 1.69%,排在第一位,增长量排第二和第三是 Python(+1.21%)和 Erlang(+0.98%)。

为什么 2017 年增长最快?TIOBE 认为可能是日益增长的制造业和机械工业(包括汽车市场)带动的。

在 TIOBE  1 月排行榜中,还有些有意思的排名变动:R 从 16 到 8,Erlang 从 44 到 23,Kotlin 从 89 到 39。

2018 年 1 月 Top 20 语言

Jan 2018Jan 2017排名变动编程语言比例比例变动
11
Java14.215%-3.06%
22
C11.037%+1.69%
33
C++5.603%-0.70%
45Python4.678%+1.21%
54C#3.754%-0.29%
67JavaScript3.465%+0.62%
76Visual Basic .NET3.261%+0.30%
816R2.549%+0.76%
910PHP2.532%-0.03%
108Perl2.419%-0.33%
1112Ruby2.406%-0.14%
1214Swift2.377%+0.45%
1311Delphi/Object Pascal2.377%-0.18%
1415Visual Basic2.314%+0.40%
159Assembly language2.056%-0.65%
1618Objective-C1.860%+0.24%
1723Scratch1.740%+0.58%
1819MATLAB1.653%+0.07%
1913Go1.569%-0.76%
2020
PL/SQL1.429%-0.11%

2018 年 1 月 Top 10 语言的趋势

历年年度编程语言


二、行业编程语言排行


近日,HackerRank发布了2018年开发技能报告。


在互联网环境下,传统行业纷纷开始互联网化,建网站、开发APP、发布小程序……


可以说互联网行业已经渗入到所有行业中,因此今天也是通过在不同行业中排名,看2018年小伙伴们感兴趣的领域适合学习的编程语言!


总的来说



尽管新语言经常出现,但掌握核心,传统语言对于开发者来说是最重要的。总的来说,现在的开发语言趋势是:JavaScript,Java,Python,C ++和C。


汽车 & 运输行业



在汽车 & 运输行业,编程语言受欢迎度的排名为:JavaScript 、Java 、Python、C++ 、C# 


计算机硬件



在计算机硬件行业,C语言明显高于其他语言,C和C++两者差距微乎其微,C由于其性能,直接的低级硬件API以及跨多个平台的编译器的可用性而主导硬件。排行前三的分别为C、C++、Python


金融服务行业



在金融服务行业,排行前三的分别为Java、JavaScript和Python,其中,Java在金融服务领域已经流行了很多年。


政府部门



政府部门依然更青睐Java和JavaScript,相较于其他语言,C#在政府机构中更为普遍,排行第三,算是相当不错的成绩。


卫生保健行业



在卫生保健行业中,JavaScript排行第一、Java第二、Python第三、C#第四


媒体/娱乐/游戏



媒体/娱乐/游戏行业中,JavaScript排行第一,Java第二,Python第三,PHP第四


零售 & 电商



在零售&电商行业中,Java 排行第一、JavaScript 第二、Python 第三


安全领域



安全领域,Java 第一、Python 第二、JavaScript 第三、C++ 第四、C 第五


技术



综上排行,我们可以发现不同行业不同编程语言的受欢迎程度各有不同,但无论哪个行业,Java,JavaScript,C和C ++以及Python都是开发人员的首选编程语言。


三、开发人员最喜欢的编程语言


39000多名开发人员中,有26%的人是在5到15岁之间开始编写代码,有近50%的人是在16到20岁之间开始编码。换言之,大约四分之三的人是在20岁以前学习编程。


来自英国的开发人员中,在5到10岁开始编码的人群占比最高。同理,在英国之后的依次有澳大利亚、荷兰、波兰、加拿大、罗马尼亚、俄罗斯、德国、西班牙和乌克兰。正如HackerRank称:“到了今天,这一具有前瞻性的教育文化在英国仍然存在——它成为第一个要求5岁以下的孩子参加编程课程来实现课程现代化的国家。该国的政策制定者也曾多次向外界指出,尽早让孩子们接触编码是打造软件职业门户、了解影响日常生活的计算思维和软件原理的重要一步。”

企业需求度最高的编程语言,从高到低依次是JavaScript、Java、Python、C++、C、C#、PHP、Ruby、Go、Swift、Scala、R、Perl、Haskell、Clojure等。实际上,具体到不同的行业,包括交通运输、计算机硬件、金融服务、卫生医疗、媒体/娱乐/游戏、电商、安全、技术和政府部门等,JavaScript、Java、Python、C++、C都是企业所需要的语言。而且,Python因自身所具备的几大优点,几乎在各个行业中都能排进前三名。

在开发者和企业之间,供需差异最大的是JavaScript框架。企业从自身的角度出发,当然最希望雇佣的是了解AngularJS、Node.js和React的开发人员,这三个框架在企业和开发人员之间形成的供需差距均比较大,尤其React的供需差距。

开发人员下一步打算最想学习的语言,程度上由高到低依次是Go、Python、Scala、Kotlin、Ruby、R、TypeScript、Swift、Rust、Haskell、Erlang等。对此,HackerRank分析称:“开发人员们大多追随科技巨头的流行语言,这是个趋势。举例来说,谷歌的Go语言提供了高并发性、快速编译、当然还有其创建者的广泛支持,此外还推动了 Kotlin成为开发Android应用的第一语言。Twitter还将可扩展 Scala作为一个更有效和更具成本效益的替代方案。苹果从Objective-C转换到Swift 时,开发人员也必须随之切换。随着iOS开发变得越来越流畅,开发者自然也会去追逐这些流行趋势。”

前面已经说到,JavaScript可能是企业最需要的编程语言,但几乎所有年龄段的开发人员们最爱的编程语言是Python,也是开发人员们最想学好的语言。

Node.js是开发人员们最喜爱的框架。作为后端 JavaScript的唯一方法,Node.js受到所有年龄段的开发人员青睐。至于前端框架,AngularJS和React相当流行,这种偏好在年轻的开发人员中最为常见,45到54岁的开发人员却是将之排在了较低的位置。

VIM文本编辑器因自身具有强大的功能,而最受开发人员们喜爱。


四、编程语言的人才薪酬情况

Python

当我们思考应该找哪一门语言入门时,往往会有人跟你推Python。Python是一门比较简单的编程语言,同时具有极高的可读性和灵活性,最近它已经成为大学院校在教授计算机专业时选择的入门语言之一。





C语言

C语言也是许多人极力推荐的入门语言,除了经典和应用广泛以外,相比Python,学习C语言可以充分了解计算机相关知识。并且C语言更适合写程序。




C++

C++也是在C语言的基础上开发的一种面向对象编程语言,应用非常广泛。常用于系统开发,引擎开发等应用领域,支持类、封装、继承、多态等特性。C++语言灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点。






JavaScript

JavaScript 是目前所有主流浏览器上唯一支持的脚本语言。JavaScript入门难度较低,可在任何浏览器上开发及调试,不需要安装额外的软件。作为一门灵活的脚本语言,JS有很多用途:前端,后端,游戏脚本等。






Ruby

Ruby是一门有趣的开发语言,优雅而又不失实用。Matz在设计Ruby的时候就想方设法让Ruby成为一个“人性化”的语言,力求使Ruby程序员感觉到使用Ruby是一件愉悦的事情。你能从Mixin、程序块、元编程、极具包容性的语法等等当中获得一种喜悦。




Java

Java是一门面向对象编程语言,Java语言具有功能强大和简单易用两个特征。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。





PHP

PHP是一门简便的Web开发语言,可广泛用在网站开发,API接口开发,服务器端开发,广告系统开发,内部OA系统开发,移动端后台开发,游戏开发等。入门不难,难的是掌握好一整套开发体系。



Objective-C

通常写作ObjC或OC,是扩充C的面向对象编程语言。Objective-C的流行归功于iPhone的成功。编写iPhone应用程序的主要编程语言是Objective-C。




C#

C#是运行于.NET Framework之上的高级程序设计语言,由C语言和C++衍生而来。具有安全、稳定、简单、优雅的特点,C#使得C++程序员可以高效的开发程序。




五、如何学习编程


学习程序设计就好比学习射击,而程序设计语言就对应射击中的气枪、手枪、步枪等各种枪械。学习射击必须要选择一种枪械,不可能没有枪还能学好射击的,也不可能同时学会使用所有的枪械。但是,如果掌握一种枪械的射击,再学别的也就触类旁通了。因为在熟悉一种枪械的同时,也学习了射击技术本身。再学其他的,自然事半功倍。学习程序设计也是一样,必然要从学习一门程序设计语言开始入手。在学会系统的编程理念之后,用什么工具都一样!

  • 大学生活丰富多彩,会令你一生都难忘,但难忘有很多种,你可以学了很多东西而难忘,也会因为什么都没学到而难忘!

  • 计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。

  • 记住:万丈高楼平地起!基础很重要,尤其是专业基础课,只有打好基础才能学得更深。

  • C语言是基础,很重要,如果你不学好C语言,那么什么高级语言你都学不好。

  • 请先学习专业课《数据结构》、《计算机组成原理》,不要刚开始就拿着一本VC在看,你连面向对象都搞不清楚,看VC没有任何用处。

  • 学习编程的秘诀是:编程,编程,再编程;

  • 认真学习每一门专业课,那是你的吃饭碗。 ;

  • 在学校的实验室就算你做错一万次程序都不会有人骂你,如果你在公司你试试看!所以多去实验室上机,现在错的多了,毕业后就错的少了。

  • 从现在开始,在写程序时就要养成良好的习惯。

  • 不要漏掉书中任何一个练习题–请全部做完并记录下解题思路。

  • 你会买好多参考书,那么请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码。

  • VC、C#、.NET这些东西都会过时,不会过时的是数据结构和优秀的算法!

  • 记住:书到用时方恨少。不要让这种事发生在你身上,在学校你有充足的时间和条件读书,多读书,如果有条件多读原版书,你要知道,当一个翻译者翻译一本书时,他会不知不觉把他的理念写进书中,那本书就会变得像鸡肋!

  • 我还是强调认真听专业课,因为有些课像《数据结构》、《编译原理》、《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月,有的甚至看了好几年都看不明白。

  • 抓住在学校里的各种实践的机会,要为自己积累经验,就业时经验比什么都有用。

  • 多去图书馆,每个学校的图书馆都有很多好书等你去看!

  • 编程不是技术活,而是体力活。

  • 如果你决定了要当一个好的软件设计师,那么请你放弃游戏,除非你是那种每天只要玩游戏就能写出好程序的天才!

  • 你要有足够的韧性和毅力!有个高手出了一道题测试你的韧性和毅力:找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。

  • 找到只属于你自己的学习方法!不要盲目的追随别人的方法,适合自己的才是最好的!

  • 请热爱软件设计这项工作!

以上的话都很有用,记住他们,并遵守他们,那你们一定会成功!

六、除了编程还应具备的核心能力


在ACM制定的计算机科学专业课程体系标准 Computer Science Curricula 中,对计算机专业毕业生应该具备的核心能力进行了归纳和总结,其内容如下:


计算机科学专业的毕业生应掌握计算机科学知识体中各领域的基本知识,尤其是列入核心知识点的那些知识领域,具备这些领域要求的基本能力。他们还应具备一些在知识体中没有明确列出的基本能力,因为该领域的专业人士通常会表现出一些独特的思维和解决问题的风格特征,这些特征通常是从具体的学习和工作经历中获得。下面描述的这些特征或者称为核心能力,我们认为计算机科学专业的毕业生们应该至少达到某种初级水平。这些特征可以使他们在计算领域内获得成功,并有更好的职业发展。当然,其中的一些特征和技巧也适用于其他领域,但我们还是把它们包括在这里,因为在计算机科学专业计划中,应该明确地鼓励学生们努力发展这些技能和特征。

 

在一个广义层面上,计算机专业的毕业生应具有以下特征(核心能力):


对计算机科学在技术层面上的理解


毕业生应该对计算机科学有所掌握,具体体现在掌握知识体中的核心部分。


熟悉通用的主题和原则


毕业生需要对一些反复出现的知识点有所理解,如抽象化、复杂性、渐进式改变等,也要对一些通用原则有所掌握,如共享资源、安全性、并发性等。毕业生应该认识到,尽管这些知识点和原则是在介绍某具体知识领域时引入的,但它们在计算机科学领域有着广泛的应用,并不限于这些具体的知识领域。


对理论与实践之间的相互作用有所理解


计算机科学的一个基本特点就是要理解理论与实践的相互作用以及它们之间基本的关联性。计算机科学专业的毕业生需要了解理论与实践是如何相互作用的。


系统分层观点


计算机科学的毕业生需要在多种细节程度、多个抽象层面上思考问题。这种思考方式能够超脱于各部件实现细节之上,达到对计算机系统整体结构的理解,并理解其组建的过程及分析的过程。他们还需要了解一个计算机系统会在怎样的环境中运行,会怎样与人类用户、物理世界进行交互。


解决问题的能力


毕业生要了解如何运用自己学到的知识来解决实际问题,而不仅仅是编写代码或搬动比特位。他们应该能够对一个系统的功能、实用性、性能等方面做出定量和定性的评估,并能设计和改善此系统。他们应该认识到,对一个给定的问题可能有多种解决方案,做出合理的选择并不是一个纯粹的技术问题,因为这些解决方案将对人们的生活产生真正的影响。毕业生也应该能够把自己的解决方案向别人做清晰的表述,解释一个解决方案为什么能解决给定的问题、是怎样解决了这个问题以及是在什么假设下解决这个问题的。


项目经验


为确保毕业生能够成功地应用他们所学到的知识,所有的计算机科学专业毕业生都应该参与过至少一个重要的项目。在大多数的情况下,这个项目可以是一个软件开发项目,但在特殊情况下,其他方面的项目也是适宜的。这些项目应以激励学生发挥综合性能力为主,要求学生对潜在的解决方案进行评估,其规模应大于一般课程下的项目规模。作为项目经验的一部分,学生应该抓住机会开发和训练人际交往的沟通能力。


致力于终身学习


毕业生应该认识到,计算机领域的进步速度可以用迅猛来形容,毕业生必须拥有一个坚实的基础,使得他们能够而且乐于在领域进步时跟上步伐,保持相关的技能。编程语言和技术平台会随时间而改变,因此,毕业生需要认识到在他们的整个职业生涯中,必须不断地学习和调整他们的技能。要获得这种能力,学生们应该接触多种编程语言、工具、范式和技术,并在受教育的全过程中,始终坚持对底层基本原理的学习。此外,与前辈们不同,当代毕业生们需要管理他们自己的职业发展和提升。在寻求职业发展时,毕业生需常常参与专业活动,如获取认证证书、参加管理培训及获得其它领域的知识等。


承担职业责任


毕业生应该认识到计算学科内含有的社会、法律、伦理和文化问题,他们也必须认识到,不同的国家有不同的社会、法律和道德标准。他们应该熟知,伦理问题、技术问题、审美价值的相互交织,在开发计算系统时将会起到非常重要的作用。从业人员必须了解他们个人和集体所承担的责任及系统故障可能导致的严重后果,但他们也必须了解自己的局限性,以及他们所使用工具的局限性。


沟通和组织能力


毕业生应有能力向各类听众解释清楚技术问题及其解决方案,这可能涉及面对面的、书面的及电子的通信方式。他们应准备好作为团队的一员进行有效的工作,并能够管理好自己的学习和发展过程,包括对时间的管理、重点任务的安排及进度的管理等。


对计算广泛适用性的认识


计算平台的范围很广,小可以到嵌入式微型传感器,大可以到高性能集群和分布式云计算中心。计算机应用几乎影响到现代生活的所有方面,毕业生应了解计算技术所有可能的应用方向。


对特定领域知识的鉴赏


毕业生应理解计算技术会与许多不同的领域接触,很多特定领域内问题的解决同时需要计算技能和特定领域知识。因此,毕业生在其职业生涯里,要能够与来自不同领域的专家进行交流,并向其学习。


六、名校计算机专业课程设置





福   利

   

MIT、清华大学、北航、哈工大等知名高校计算机科学与技术专业课程设置及人才培养方案下载方法


第一步:关注【书圈】公众号(ID:itshuquan) 

第二步:将本文分享到朋友圈 

第三步:在本文下面留言【我已经发到朋友圈】,我们会将下载地址发给你。








作者 | 图文来自网络、如涉及版权问题,请联系我们以便处理。文章内容纯属作者个人观点,不代表本网观点。

编辑 | 老猫

读书吧 QQ群:362276219

我要推荐
转发到