代码的未来注:文本框可根据需求改变颜色、移动位置;文字可编辑作者:XXX日期:2015.11.17目录摩尔预言编程语言的分类编程语言的发展各种语言分析数据库大数据时代的编程2015编程语言排行榜TIOBE提供Nov2015Nov2014ChangeProgrammingLanguageRatingChange12˄Java20.403%+6.01%21˅C17.145%-0.32%34˄C++6.198%+0.1%45˄C#4.318%-0.67%57˄Python3.771%+1.18%66PHP3.248%+0.2%78˄JavaScript2.473%+0.38%810˄VisualBasic.NET2.223%+0.16%914˄Ruby2.038%+0.83%109˅Pert2.032%-0.04%1129˄Assemblylanguage1.883%+1.28%1215˄Delphi/ObjectPasscal1.682%+0.73%1311˅VisualBasic1.681%+0.02%143˅Objective-C1.426%-7.64%1518˄Swift1.236%+0.40%1624˄MATLAB1.185%+0.43%1719˄Pascal1.099%+0.27%1817˅PL/SQL1.032%+0.16%1912˅R1.013%-0.53%2028˄COBOL0.921%+0.32%机器语言(1946)FORTRAN(1954)C(1972)Basic(1964)C++(1983)PHP(1994)Python(1991)JAVA(1995)C#(2001)JavaScript(1995)go(2009)?Swift(2014)目录摩尔预言编程语言的分类编程语言的发展各种语言分析数据库大数据时代的编程摩尔预言•摩尔预言:LSI中晶体管数量每十八个月增加一倍•遇到的问题:—过于精细无法实现—漏电流—发热戈登·摩尔目录摩尔预言编程语言的分类编程语言的发展各种语言分析数据库大数据时代的编程解释型语言编译型语言编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。举例:C、C++解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释是一句一句的翻译。举例:JAVA编译型——运行速度快,代码效率高优点缺点——编译后的程序不可修改,保密性较好代码需要经过编译方可运行,可移植性差,只能在兼容的操作系统上运行解释型可移植性较好,只要有解释环境,可在不同的操作系统上运行优点缺点——需要解释环境,运行起来比编译的要慢——占用资源也要多一些,代码效率低脚本语言脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。举例:Python函数式编程•函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念。•最早的函数式编程语言Lisp,现在的函数式编程Erlang、clojure、Scala、F#。•主要思想:把运算过程尽量写成一系列嵌套的函数调用。•主要适合一些数学方面的计算,因为状态不变性,故并发性好。函数式编程•代码简洁,开发快速•接近自然语言,易于理解•并发性好•更方便的代码管理PaulGraham比较面向对象编程函数式编程1.数据与函数是松耦合的2.函数隐藏了它们的实现,语言的抽象是函数,以及将函数组合起来表达。3.核心抽象模型是函数,不是数据结构4.核心活动是编写新的函数。1.数据和对数据的操作紧紧耦合2.对象隐藏它们操作的实现细节,其他对象调用这些操作只需要通过接口3.核心抽象模型是数据自己4.核心活动是组合新对象和拓展已经存在的对象,这是通过加入新的方法实现的计算:(1+2)*3-4•面向对象编程vara=1+2;varb=a*3;varc=b-4;•函数式编程varresult=subtract(multiply(add(1,2),3),4);目录摩尔预言编程语言的分类编程语言的发展各种语言分析数据库大数据时代的编程C发展:•BCPL(1970前)•B(1970—KenThompson)•C(1972—D.M.Ritchie)C•简洁紧凑、灵活方便•C语言允许直接访问物理地址,可以直接对硬件进行操作•C语言程序生成代码质量高,程序执行效率高•C语言适用范围大,可移植性好适用范围•硬件、嵌入式编程•操作系统•游戏•数据库C++•1983年,贝尔实验室的BjarneStroustrup在C语言基础上推出了C++。C++进一步扩充和完善了C语言,是一种面向对象的程序设计语言。C++•类型检查更为严格•增加了面向对象的机制•增加了泛型编程的机制•增加了异常处理•增加了运算符重载适用范围•游戏•图形学与图像处理•操作系统•嵌入式系统•科学计算•……C++11标准•c++本身问题•c++11标准Linux之父LinusTorvaldsJAVA•跨平台•稳定性好(没有用户指针)•内存回收机制•开发效率比C/C++快适用范围•跨平台编程•网络编程•服务器编程•手机编程(Andriond)Go•Go语言是谷歌2009发布的开源编程语言。在google公司,在公司产品开发中所使用的编程语言,仅限于C/C++、JAVA、PYTHON和javascript。其中对C/C++最不满意,开发效率太低。Go优点•Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。Scala•Scala语言源自瑞士洛桑联邦理工学院,由奥德斯基教授2001年带领小组开发。奥德斯基教授创建Scala语言的一个主要原因是不满Java语言相对复杂的语法。Scala优点•Scala语言最直接的好处是兼容Java,这就意味着可以无缝使用所有Java的类库和框架,而且Scala语言优雅、简洁。•支持函数式编程•支持异步编程Object-C&Swift是扩充C的面向对象编程语言,苹果的御用语言。Object-C出生在1980年代初,Swift出生在2014年。Swift的优势不单是速度快,更支持了很多现代编程语言的特点,比如范式编程、命名空间等等。另外,苹果公司表示Swift学习起来更加容易。Python•Python是一种面向对象、解释型计算机程序设计语言。Python具有丰富和强大的库。它常被昵称为胶水语言。•优点:简单易学、免费、开源、丰富的库、可移植性好•国外许多大学编程入门语言是Python。适用范围•系统编程•用户图形接口•Internet编程•游戏、图像、人工智能、机器人、计算等2015编程语言排行榜TIOBE提供Nov2015Nov2014ChangeProgrammingLanguageRatingChange12˄Java20.403%+6.01%21˅C17.145%-0.32%34˄C++6.198%+0.1%45˄C#4.318%-0.67%57˄Python3.771%+1.18%66PHP3.248%+0.2%78˄JavaScript2.473%+0.38%810˄VisualBasic.NET2.223%+0.16%914˄Ruby2.038%+0.83%109˅Pert2.032%-0.04%1129˄Assemblylanguage1.883%+1.28%1215˄Delphi/ObjectPasscal1.682%+0.73%1311˅VisualBasic1.681%+0.02%143˅Objective-C1.426%-7.64%1518˄Swift1.236%+0.40%1624˄MATLAB1.185%+0.43%1719˄Pascal1.099%+0.27%1817˅PL/SQL1.032%+0.16%1912˅R1.013%-0.53%2028˄COBOL0.921%+0.32%目录摩尔预言编程语言的分类编程语言的发展各种语言分析数据库大数据时代的编程数据库排名DB-Engines提供数据库排名DB-Engines提供数据库分类非关系型数据库关系型数据库关系型数据库•关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型是由埃德加·科德于1970年首先提出的。•简单来说,关系模型就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的数据组织。•必须满足事务性(ACID)。优点•容易理解•使用方便•易于维护非关系型数据库•2009年,EricEvans提出了NoSQL一词。•NoSQL,泛指非关系型的数据库。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。•分类:键值(Key-Value)数据库、面向文档(Document-Oriented)数据库、列存储(WideColumnStore/Column-Family)数据库、图(Graph-Oriented)数据库。优点•由于关系型数据库操作的事务性,即具备ACID的特性。为了维护一致性导致的结果是读写性能比较差。而像微博、facebook这类SNS的应用,对并发读写能力要求极高,关系型数据库已经无法应付。•于是,非关系型数据库应运而生。它不具备事务性,仅仅保证最终的数据的一致性。二者比较•非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。或者说它是实现了一部分关系型数据库的数据库。•必须强调的是,数据的持久存储,尤其是海量数据的持久存储,还是需要一种关系数据库。NewSQL•NewSQL是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。目录摩尔预言编程语言的分类编程语言的发展各种语言分析数据库大数据时代的编程总结•没有最好的语言,只有最合适的语言•没有糟糕的语言,只有糟糕的程序员•没有一种语言是万能的,只会一种语言是万万不能的•废除对语言的宗教信仰,建立对语言的哲学思维•编程就是在人脑和电脑之间寻找最佳平衡点的过程总结•现在是一个多核的时代,一个芯片上封装多个CPU或者多个CPU核心的多台计算机环境都可以看成多核。•云计算环境是典型的多核。•大数据编程的改进是在原来编程语言上的改变还是从新的语言中实现?•我的规划:……