• 关于

    编程动态语言

    的搜索结果

问题

2020年6月编程语言排行榜新鲜出炉-C稳住第一、Julia强势上升

问问小秘 2020-06-02 14:51:17 10 浏览量 回答数 1

问题

可视化比较 C++、Ruby 和 CoffeeScript 语言的复杂度

a123456678 2019-12-01 20:05:48 1324 浏览量 回答数 1

回答

动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用。它是一类 在运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力。例如JavaScript便是一个动态语言,除此之外如 PHP 、 Ruby 、 Python 等也都属于动态语言Python是可以实现动态类的创建类(在任意代码位置,符合正确的书写格式),或者给类增加删除属性。

大财主 2019-12-02 01:05:48 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

JavaScript是一种广泛用于客户端网页开发的脚本语言,最常是于HTML上使用,用来给HTML网页添加动态功能。然而JavaScript也被用于不同的接口上,如服务器。它最初由网景公司的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类型。JavaScript是甲骨文公司的注册商标。[4] Ecma国际以JavaScript为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,浏览器对象模型。这是wikipedia里面对javascript的说明。你说的应该只是他的最普遍的用途。javascript自身就是一门编程语言——态、弱类型、基于原型的语言,内置支持类型,可以做到很多其他编程语言可以做到的事情,他可以控制你说的DOM外还有BOM。在网页端可以改变网页的内容、跳转、实现富应用。如果结合HTML5的一些新特性,也可以做出3D游戏,

a123456678 2019-12-02 02:03:56 0 浏览量 回答数 0

问题

2020 年编程语言盘点展望

剑曼红尘 2020-03-06 10:48:01 1 浏览量 回答数 1

问题

2020 年编程语言盘点展望

剑曼红尘 2020-03-06 10:43:17 1 浏览量 回答数 1

问题

2020 年编程语言盘点展望

剑曼红尘 2020-03-06 10:45:45 0 浏览量 回答数 1

问题

2020 年编程语言盘点展望

剑曼红尘 2020-03-06 10:37:46 1 浏览量 回答数 1

问题

2020 年编程语言盘点展望

剑曼红尘 2020-03-06 10:33:40 1 浏览量 回答数 1

问题

2020 年编程语言盘点展望

剑曼红尘 2020-03-06 10:24:01 11 浏览量 回答数 1

问题

2020 年编程语言盘点展望

剑曼红尘 2020-03-06 10:30:12 2 浏览量 回答数 1

回答

第十名、R语言 颁奖词 R语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R基于S语言的一个GNU计划项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。R的语法是来自Scheme。 提名词 R语言作者,George Ross Ihaka:在奥克兰大学统计系任副教授,是R语言的最初作者。 排名理由 作者头发浓密度:100% 第九名、Python 颁奖词 Python是一种广泛使用的高级编程语言,属于通用型编程语言。作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。 提名词 Python语言作者,Guido van Rossum:生于荷兰哈勒姆,计算机程序员,为Python程序设计语言的最初设计者及主要架构师。 排名理由 作者头发浓密度:95% 第八名、C语言 颁奖词 C是一种通用的编程语言,广泛用于系统软件与应用软件的开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点。C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。 提名词 C语言作者,Dennis MacAlistair Ritchie:美国计算机科学家。黑客圈子通常称他为“dmr”。他是C语言的创造者、Unix操作系统的关键开发者,对计算机领域产生了深远影响,并与肯·汤普逊同为1983年图灵奖得主。 排名理由 作者头发浓密度:85%(+胡须) 第七名、Go 颁奖词 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。 提名词 Go语言作者,Robert C. Pike:来自加拿大的程序员,曾经加入贝尔实验室,为 UNIX小组的成员。他与肯·汤普逊共同开发了UTF-8。目前为 google的工程师,参与编程语言 Go与Sawzall的研发工作。 排名理由 作者头发浓密度:80% 第六名、JavaScript 颁奖词 JavaScript,通常缩写为JS,是一种高级的,解释执行的编程语言。JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它已经由ECMA(欧洲计算机制造商协会)通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。 提名词 JavaScript语言作者,Brendan Eich:美国程序员与企业家,JavaScript主要创造者与架构师,曾任Mozilla公司的首席技术官,并曾短暂担任首席执行官。 排名理由 作者头发浓密度:75% 第五名、Objective-C 颁奖词 Objective-C是一种通用、高级、面向对象的编程语言。它扩展了标准的ANSI C编程语言,将Smalltalk式的消息传递机制加入到ANSI C中。目前主要支持的编译器有GCC和Clang(采用LLVM作为后端)。 提名词 Objective-C作者,Brad Cox:美国计算机科学家。于傅尔曼大学主修化学与数学,于芝加哥大学取得数学生物学博士学位。Objective-C主要作者。 排名理由 作者头发浓密度:70% 第四名、PHP 颁奖词 PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。 提名词 PHP语言作者,Rasmus Lerdorf:出生于格陵兰岛凯凯塔苏瓦克,是一个丹麦程序员,他拥有加拿大国籍。他也是编程语言PHP的创始人,其中PHP的头两个版本是由他编写的,后来他也参与PHP后续版本的开发。 排名理由 作者头发浓密度:60% 第三名、Java 颁奖词 Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。 提名词 Java语言作者,James Gosling:出生于加拿大,软件专家,Java编程语言的共同创始人之一,一般公认他为“Java之父”。 排名理由 作者头发浓密度:50% 第二名、C++ 颁奖词 C++是一种使用广泛的计算机程序设计语言。它是一种通用程序设计语言,支持多重编程模式,例如过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计和设计模式等。 提名词 C++语言作者,Bjarne Stroustrup:生于丹麦奥胡斯郡,计算机科学家。他以创造C++编程语言而闻名,被称为“C++之父”。 排名理由 作者头发浓密度:40% 第一名、Visual Basic .NET 颁奖词 Visual Basic .NET(VB.NET)是.NET Framework框架下的一种多重编程范式高级语言。Visual Basic .NET属Basic系语言,其语法特点是以极具亲和力的英文单词为基础标识,以及与自然语言极其相近的逻辑表达,有时候你会觉得写VB.NET代码就好像在写英文句子一样,从这个角度来说,VB.NET似乎是最高级的一门编程语言,当然在Basic系语言中VB.NET也确实是迄今为止最强大的一门编程语言。 提名词 Visual Basic .NET作者,Alan Cooper:交互设计的提倡者。库珀有些时候被叫做 Visual Basic 之父,虽然大多数的工作是由微软的内部开发团队完成的,但是对于Windows可视化设计工具的创意是来源于库珀的。 排名理由 作者头发浓密度:0% 以上,就是世界上最难学的编程语言前十名,本次大赛组委会认为,作者的头发越稀少,说明这种语言在学习过程中要掉越多的头发,所以,推导出这种语言越难学。 你现在学得语言排名第几呢?欢迎在下方评论区留言哦~ 原文链接 加入阿里云钉钉群享福利:每周技术直播,定期群内有奖活动、大咖问答

有只黑白猫 2020-01-16 17:41:53 0 浏览量 回答数 0

回答

Python是一个易于学习的、功能强大的编程语言。它具有高效的高级数据结构和能够简单有效地实现面向对象编程。Python优美的语法和动态类型,连同解释型特性一起,使其在多个平台的许多领域都成为脚本处理以及快速应用开发的理想语言。

元芳啊 2019-12-02 01:09:32 0 浏览量 回答数 0

问题

语言学习读书笔记PHP和asp.net编程语言哪个更有前途?

卖炭翁 2019-12-01 21:00:40 1191 浏览量 回答数 0

回答

全栈是指工程师,架构,前端,后端,安全,应用, 代码。指的是人。Python是一门编程语言。Python是一种面向对象、直译式计算机程序设计语言,由荷兰人Guido van Rossum发明于1989年,1991年发行第一个公开发行版。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。 Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL协议。语法简洁清晰,特色之一是强制用空白符作为语句缩进。名字来源于一个喜剧,最初设计Python这种语言的人并没有想到Python会在工业和科研上获得如此广泛的使用。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python已经成为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,python的使用率是呈线性增长。由于Python语言的简洁、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python教授程序设计课程。例如麻省理工学院的计算机科学及编程导论课程就使用Python语言讲授。众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,科学计算扩展库:NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。

ylrf1212 2019-12-02 01:07:37 0 浏览量 回答数 0

回答

我们在《深入分析Java的编译原理》中提到过,为了让Java语言具有良好的跨平台能力,Java独具匠心的提供了一种可以在所有平台上都能使用的一种中间代码——字节码(ByteCode)。 有了字节码,无论是哪种平台(如Windows、Linux等),只要安装了虚拟机,都可以直接运行字节码。 同样,有了字节码,也解除了Java虚拟机和Java语言之间的耦合。这话可能很多人不理解,Java虚拟机不就是运行Java语言的么?这种解耦指的是什么? 其实,目前Java虚拟机已经可以支持很多除Java语言以外的语言了,如Kotlin、Groovy、JRuby、Jython、Scala等。之所以可以支持,就是因为这些语言也可以被编译成字节码。而虚拟机并不关心字节码是有哪种语言编译而来的。 经常使用IDE的开发者可能会发现,当我们在Intelij IDEA中,鼠标右键想要创建Java类的时候,IDE还会提示创建其他类型的文件,这就是IDE默认支持的一些可以运行在JVM上面的语言,没有提示的,可以通过插件来支持。 目前,可以直接在JVM上运行的语言有很多,今天介绍其中比较重要的九种。每种语言通过一段『HelloWorld』代码进行演示,看看不同语言的语法有何不同。 Kotlin Kotlin是一种在Java虚拟机上运行的静态类型编程语言,它也可以被编译成为JavaScript源代码。Kotlin的设计初衷就是用来生产高性能要求的程序的,所以运行起来和Java也是不相上下。Kotlin可以从 JetBrains InteilliJ Idea IDE这个开发工具以插件形式使用。 Hello World In Kotlin fun main(args: Array<String>) { println("Hello, world!") } Groovy Apache的Groovy是Java平台上设计的面向对象编程语言。它的语法风格与Java很像,Java程序员能够很快的熟练使用 Groovy,实际上,Groovy编译器是可以接受完全纯粹的Java语法格式的。 使用Groovy的一个重要特点就是使用类型推断,即能够让编译器能够在程序员没有明确说明的时候推断出变量的类型。Groovy可以使用其他Java语言编写的库。Groovy的语法与Java非常相似,大多数Java代码也匹配Groovy的语法规则,尽管可能语义不同。 Hello World In Groovy static void main(String[] args) { println('Hello, world!'); } Scala Scala是一门多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala经常被我们描述为多模式的编程语言,因为它混合了来自很多编程语言的元素的特征。但无论如何它本质上还是一个纯粹的面向对象语言。它相比传统编 程语言最大的优势就是提供了很好并行编程基础框架措施了。Scala代码能很好的被优化成字节码,运行起来和原生Java一样快。 Hello World In Scala object HelloWorld { def main(args: Array[String]) { System.out.println("Hello, world!"); } } Jruby JRuby是用来桥接Java与Ruby的,它是使用比Groovy更加简短的语法来编写代码,能够让每行代码执行更多的任务。就和Ruby一样,JRuby不仅仅只提供了高级的语法格式。它同样提供了纯粹的面向对象的实现,闭包等等,而且JRuby跟Ruby自身相比多了很多基于Java类库 可以调用,虽然Ruby也有很多类库,但是在数量以及广泛性上是无法跟Java标准类库相比的。 Hello World In Jruby puts 'Hello, world!' Jython Jython,是一个用Java语言写的Python解释器。Jython能够用Python语言来高效生成动态编译的Java字节码。 Hello World In Jython print "Hello, world!" Fantom Fantom是一种通用的面向对象编程语言,由Brian和Andy Frank创建,运行在Java Runtime Environment,JavaScript和.NET Common Language Runtime上。其主要设计目标是提供标准库API,以抽象出代码是否最终将在JRE或CLR上运行的问题。 Fantom是与Groovy以及JRuby差不多的一样面向对 象的编程语言,但是悲剧的是Fantom无法使用Java类库,而是使用它自己扩展的类库。 Hello World In Fantom class Hello { static Void main() { echo("Hello, world!") } } Clojure Clojure是Lisp编程语言在Java平台上的现代、函数式及动态方言。 与其他Lisp一样,Clojure视代码为数据且拥有一套Lisp宏系统。 虽然Clojure也能被直接编译成Java字节码,但是无法使用动态语言特性以及直 接调用Java类库。与其他的JVM脚本语言不一样,Clojure并不算是面向对象的。 Hello World In Clojure (defn -main [& args] (println "Hello, World!")) Rhino Rhino是一个完全以Java编写的JavaScript引擎,目前由Mozilla基金会所管理。 Rhino的特点是为JavaScript加了个壳,然后嵌入到Java中,这样能够让Java程序员直接使用。其中Rhino的JavaAdapters能够让JavaScript通过调用Java的类来实现特定的功能。 Hello World In Rhino print('Hello, world!') Ceylon Ceylon是一种面向对象,强烈静态类型的编程语言,强调不变性,由Red Hat创建。 Ceylon程序在Java虚拟机上运行,​​可以编译为JavaScript。 语言设计侧重于源代码可读性,可预测性,可扩展性,模块性和元编程性。 Hello World In Ceylon shared void run() { print("Hello, world!"); } 总结 好啦,以上就是目前主流的可以在JVM上面运行的9种语言。加上Java正好10种。如果你是一个Java开发,那么有必要掌握以上9中的一种,这样可以在一些有特殊需求的场景中有更多的选择。推荐在Groovy、Scala、Kotlin中选一个。

montos 2020-06-01 17:04:25 0 浏览量 回答数 0

回答

技巧: 《程序员面试宝典》这本书有Java、C++等各种版本,主要介绍笔试面试常考的题,有些知识点真的很细,非常值得看。 数据结构和算法: 《编程之美》里面的编程题经常考到,有些可能比较难。 《剑指offer》这个是强烈推荐的,掌握解决问题的思路很重要。比如以空间换时间、动态规划等。 《数据结构》这个不用多说,链表、树、图是经常考到的。 《算法导论》有精力的话,可以选择性的看一看。 《编程珠玑》 语言: 《深入浅出MFC》 《深度探索C++对象模型》介绍C++面向对象中的构造函数、虚函数等,看完之后能理解程序的运行结果了。 《C++ Primer》大量C++的基础,不过基础不太好的同学建议看谭浩强的《C++程序设计》。 《Effective C++》 《Java编程思想》 《大象Thinking in UML》 《JavaScript 权威指南》 《C++标准程序库》 《STL源码剖析》 设计模式: 《设计模式》 《HeadFirst设计模式》 脚本语言: 《Python学习手册》 掌握一门脚本语言很必要,最好有工程实践。 操作系统方面: 《Linux程序设计-鸟哥的私房菜》。 《UNIX网络编程》 不但要会基本命令,最好能在linux环境下有编程经验。 《深入理解计算机系统》个人觉得这本书并不好。 数据库: 没有发现更好的,要会基本的SQL命令。

沉默术士 2019-12-02 01:19:49 0 浏览量 回答数 0

问题

如何给项目选择最合适的编程语言?

chaipanpan 2019-12-01 21:04:01 9813 浏览量 回答数 0

回答

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。Python 是一个有条理的和强大的面向对象的程序设计语言,类似于Perl, Ruby, Scheme, 或 Java.

世事皆空 2019-12-02 01:07:32 0 浏览量 回答数 0

回答

我实际上并不认为DI / IoC 在Python 中并不罕见。什么是不常见的,但是,是DI / IoC的框架/容器。 考虑一下:DI容器有什么作用?它可以让你 将独立的组件连接到一个完整的应用程序中... ...在运行时。 我们有“连接在一起”和“运行时”的名称: 脚本编写 动态 因此,DI容器不过是动态脚本语言的解释器。实际上,让我改写一下:一个典型的Java / .NET DI容器只不过是一个糟糕的解释器,它解释了一种非常糟糕的动态脚本语言,其语法非常笨拙,有时甚至是基于XML的。 当您使用Python进行编程时,为什么要使用丑陋,糟糕的脚本语言,却要拥有漂亮,精妙的脚本语言呢?实际上,这是一个更笼统的问题:当您几乎使用任何一种语言进行编程时,为什么要使用Jython和IronPython来使用丑陋的,糟糕的脚本语言? 因此,回顾一下:出于完全相同的原因,DI / IoC 的实践在Python中与在Java中一样重要。但是,DI / IoC 的实现已内置于该语言中,并且通常如此轻巧,以至于它完全消失了。 (这里有一个简短的类比:在汇编中,子例程调用是一件很重要的事情-您必须将本地变量和寄存器保存到内存中,将返回地址保存在某个地方,将指令指针更改为要调用的子例程,安排它完成后以某种方式跳回您的子例程,将参数放在被调用者可以找到它们的地方,依此类推。IOW:在汇编中,“子例程调用”是一种设计模式,在诸如此类的语言出现之前内置了子例程调用的Fortran,人们正在构建自己的“子例程框架”。您会说在Python中子例程调用是“罕见的”,仅仅是因为您不使用子例程框架吗?) 顺便说一句:让DI成为逻辑结论的示例,请看一下Gilad Bracha的Newspeak编程语言及其在该主题上的著作:

祖安文状元 2020-02-21 16:08:56 0 浏览量 回答数 0

回答

我实际上并不认为DI / IoC 在Python 中并不罕见。什么是不常见的,但是,是DI / IoC的框架/容器。 考虑一下:DI容器有什么作用?它可以让你 将独立的组件连接到一个完整的应用程序中... ...在运行时。 我们有“连接在一起”和“运行时”的名称: 脚本编写 动态 因此,DI容器不过是动态脚本语言的解释器。实际上,让我改写一下:一个典型的Java / .NET DI容器只不过是一个糟糕的解释器,它解释了一种非常糟糕的动态脚本语言,其语法非常笨拙,有时甚至是基于XML的。 当您使用Python进行编程时,为什么要使用丑陋,糟糕的脚本语言,却要拥有漂亮,精妙的脚本语言呢?实际上,这是一个更笼统的问题:当您几乎使用任何一种语言进行编程时,为什么要使用Jython和IronPython来使用丑陋的,糟糕的脚本语言? 因此,回顾一下:出于完全相同的原因,DI / IoC 的实践在Python中与在Java中一样重要。但是,DI / IoC 的实现已内置于该语言中,并且通常如此轻巧,以至于它完全消失了。 (这里有一个简短的类比:在汇编中,子例程调用是一件很重要的事情-您必须将本地变量和寄存器保存到内存中,将返回地址保存在某个地方,将指令指针更改为要调用的子例程,安排它完成后以某种方式跳回您的子例程,将参数放在被调用者可以找到它们的地方,依此类推。IOW:在汇编中,“子例程调用”是一种设计模式,在诸如此类的语言出现之前内置了子例程调用的Fortran,人们正在构建自己的“子例程框架”。您会说在Python中子例程调用是“罕见的”,仅仅是因为您不使用子例程框架吗?) 顺便说一句:让DI成为逻辑结论的示例,请看一下Gilad Bracha的Newspeak编程语言及其在该主题上的著作:

祖安文状元 2020-02-22 15:17:11 0 浏览量 回答数 0

回答

Kotlin的简介 Kotlin是由JetBrains公司(IDEA开发者)所开发的编程语言,其名称来自于开发团队附近的科特林岛。 多平台开发 JVM :Android; Server-Side Javascript:前端 Native(beta) :开发原生应用 windows、macos、linux Swift与Kotlin非常像 http://nilhcem.com/swift-is-like-kotlin/ kotlin发展历程 image.png java发展历程 image.png JVM语言的原理 image.png JVM规范与java规范是相互独立的 只要生成的编译文件匹配JVM字节码规范,任何语言都可以由JVM编译运行. Kotlin也是一种JVM语言,完全兼容java,可以与java相互调用;Kotlin语言的设计受到Java、C#、JavaScript、Scala、Groovy等语言的启发 kotlin的特性 下面不会罗列kotlin中具体的语法,会介绍我认为比较重要的特性,以及特性背后的东西。 类型推断 空类型设计 函数式编程 类型推断 image.png 类型推断是指编程语言中在编译期自动推导出值的数据类型。推断类型的能力让很多编程任务变得容易,让程序员可以忽略类型标注的同时仍然允许类型检查。 在开发环境中,我们往往写出表达式,然后可以用快捷键来生成变量声明,往往都是很准的,这说明了编译器其实是可以很准确的推断出来类型的。编程语言所具备的类型推断能力可以把类型声明的任务由开发者转到了编译器. java中声明变量的方式是类型写在最前面,后面跟着变量名,这就迫使开发者在声明变量时就要先思考变量的类型要定义成什么,而在一些情况下比如使用集合、泛型类型的变量,定义类型就会变得比较繁琐。 Kotlin中声明变量,类型可以省略,或者放到变量名后面,这可以降低类型的权重,从必选变为可选,降低开发者思维负担。java10中也引入了类型推断。 Javascript中声明变量也是用关键字var,但是还是有本质区别的,Kotlin中的类型推断并不是变成动态类型、弱类型,类型仍然是在编译期就已经决定了的,Kotlin仍然是静态类型、强类型的编程语言。javascript由于是弱类型语言,同一个变量可以不经过强制类型转换就被赋不同数据类型的值, 编程语言的一个趋势就是抽象程度越来越高,编译器做更多的事情。 空类型设计 空类型的由来 image.png 托尼·霍尔(Tony Hoare),图灵奖得主 托尼·霍尔是ALGOL语言的设计者,该语言在编程语言发展历史上非常重要,对其他编程语言产生重大影响,大多数近代编程语言(包括C语言)皆使用类似ALGOL的语法。他在一次大会上讨论了null应用的设计: “我把 null 引用称为自己的十亿美元错误。它的发明是在1965 年,那时我用一个面向对象语言( ALGOL W )设计了第一个全面的引用类型系统。我加入了null引用设计,仅仅是因为实现起来非常容易。它导致了数不清的错误、漏洞和系统崩溃,可能在之后 40 年中造成了十亿美元的损失。” null引用存在的问题 以java为例,看null引用的设计到底存在哪些问题 空指针问题NPE 编译时不能对空指针做出检查,运行时访问null对象就会出现错误,这个就是工程中常见的空指针异常。 null本身没有语义,会存在歧义 值未被初始化 值不存在 也许表示一种状态 逻辑上有漏洞 Java中,null可以赋值给任何引用,比如赋值给String类型变量,String a = null,但是null并不是String类型: a instanceof String 返回的是false,这个其实是有些矛盾的。所以当持有一个String类型的变量,就存在两种情况,null或者真正的String. 解决NPE的方式 防御式代码 在访问对象前判空,但会有冗余代码;会规避问题,而隐藏真正的问题 抛出异常给调用方处理 方法中传参传入的空值、无效值,抛出受检查异常给上层调用方 增加注解 Android中可以增加@NonNull注解,编译时做额外检查 空状态对象设计模式 空状态对象是一个实现接口但是不做任何业务逻辑的对象,可以取代判空检查;这样的空状态对象也可以在数据不可用的时候提供默认的行为 java8 Optional类 java8中引入了Optional类,来解决广泛存在的null引用问题.官方javadoc文档介绍 A container object which may or may not contain a non-null value. If a value is present, isPresent() will return true and get() will return the value. Additional methods that depend on the presence or absence of a contained value are provided, such as orElse() (return a default value if value not present) and ifPresent() (execute a block of code if the value is present). 来看一下是如何实现的。 举一个访问对象读取熟悉的例子 java 8 之前 : image.png java 8: image.png 总结: 1.用Optional还是会比较繁琐,这个也说明了设计一个替代null的方案还是比较难的。 optional的耗时大约是普通判空的数十倍,主要是涉及泛型、使用时多创键了一个对象的创建;数据比较大时,会造成性能损失。 java8 引入Optional的意义在于提示调用者,用特殊类型包装的变量可能为空,在使用取出时需要判断 Kotlin的空类型设计 Kotlin中引入了可空类型和不可空类型的区分,可以区分一个引用可以容纳null,还是不能容纳null。 String vs String? String 类型表示变量不能为空,String?则表示变量可以为空 String?含义是String or null.这两种是不同的类型. 比如: var a:String = “abc” //ok var a:String = null //不允许 var b :String? = null //ok a=b // 不允许 String?类型的值不能给String类型的值赋值 这样就将类型分成了可空类型和不可能类型,每一个类型都有这样的处理;Kotlin中访问非空类型变量永远不会出现空指针异常。 同样上面的例子,采用Kotlin去写,就会简洁很多 image.png 编程范式-函数式编程 编程范式是什么? 编程范式是程序员看待程序和写程序的观点 主要的类型 非结构化编程 结构化编程 面向对象编程 命令式编程 函数式编程 这些类型并不是彼此互斥的,而是按照不同的维度做的划分,一种编程语言可能都支持多个编程范式 非结构化编程 第一代的高级语言往往是非结构化编程 比如 BASIC语言 每一行的代码前面都有一个数字作为行号,通常使用GOTO的跳跃指令来实现判断和循环. 看一下下面这段代码是做什么的: image.png 实际上做的是:程序在屏幕上显示数字 1 到 10 及其对应的平方 采用这种方式写程序,大量的使用goto实现逻辑的跳转,代码一长,可读性和维护性就比较差了,形成“面条式代码” 结构化编程 采用顺序、分支、循环结构来表达,禁用或者少用GOTO; 并用子程序来组织代码,采用自顶向下的方式来写程序 代表语言是C语言 实现同样的逻辑: image.png 可见采用结构化编程,代码的逻辑会更清晰。 面向对象编程 思想: 将计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。 特性: 封装性、继承性、多态性。 命令式编程 把计算机程序视为一系列的命令集合 主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。 “先做这,再做那”,强调“怎么做” 实现: 用变量来储存数据,用语句来执行指令,改变变量状态。 基本所有的常见的编程语言都具有此范式 函数式编程 声明式语法,描述要什么,而不是怎么做 类似于SQL语句 语言: kotlin swift python javascript scala 函数是第一等公民 可以赋值给变量,可作为参数传入另一个函数,也可作为函数的返回值 纯函数 y=f(x) 只要输入相同,返回值不变 没有副作用:不修改函数的外部状态 举个栗子 公司部门要进行outing,去哪里是个问题,要考虑多个因素,比如花费、距离、天数等等,有多个备选地点进行选择。 定义一个数据类: image.png 要进行筛选了,分别用sql,kotlin,java来实现 找出花费低于2000元的outing地点信息 SQL image.png Kotlin image.png java 7 image.png 可见kotin的写法还是比较接近于sql的思想的,声明式的写法,而不管具体如何实现;其中的:place->place.money<2000 就是函数,可以作为参数传递给fliter这个高阶函数;而且这个函数没有副作用,不改变外部状态。 再来一个复杂一点的: 找出花费低于5000元,时间不多于4天,按照距离排序的outing地点名称 SQL image.png Kotlin: image.png java 7 image.png 由此可见用kotlin的函数式写法,会更简洁,逻辑也更清晰,这段代码的目标一目了然,这种清晰在于实现了业务逻辑与控制逻辑的分离,业务逻辑就是由函数实现的,比如place->place.money<500,而控制逻辑是由filter,sorterBy等高阶函数实现的。 而java的传统写法是基于对数据的操作,避免不了遍历的操作,业务逻辑与控制逻辑交织在了一起,这段代码的目的就不是那么容易清晰看到的了。 总结 kotlin是实用的现代编程语言,吸收了众多编程语言的优点,支持类型推断、空类型安全、函数式编程、DSL等特性,非常值得学习和使用。

问问小秘 2020-04-30 16:33:40 0 浏览量 回答数 0

回答

很赞的一个问题。我也看过很多语言源代码,也对不同的语言的语法感兴趣,所以简单的聊聊这个问题。首先出场的是 LISP 语言。 LISP 语言以逼格高闻名于世。他属于函数式编程语言,所有的语句都是函数,因此不需要 function 这个关键词。随后的 Fortran 语言,公式翻译的意思 FormulaTranslation。既然是公式翻译语言,因此 数学公式 f(x) = a + b 在 Fortran 的调用就是 x = a + b。在定义函数的方式上,使用 function:(代码来自google)function add(a, b)implicit nonereal::a, b !声明函数参数类型,这是必需的real::add !声明函数返回值类型,这是必需的add = a + b !返回值的表达式returnendCOBOL语言。COBOL 设计的目的和 Fortran 不同,甚至连赋值语句都没有,而且根本就没有函数的概念,取而代之的是 PROCEDURE DIVISION(过程)。随后就是 Basic:Beginner's All-purpose Symbolic Instruction Code。Basic 可谓是集大成者,不仅仅有函数,还有过程。函数使用 function, 过程使用 sub。(抄袭 fortran 和 cobol?)C语言改变了这种局面,原因是C语言的一个独辟蹊径的设计理念:函数如何调用,就如何声明。也就是说,我们如果这样调用函数sum = f(a, b);那么,我们就这么声明:double f(a, b) / 旧式语法 /double a; double b;{}double f(double a, double b) // 新式语法{}随后的 C++ Java C# 走的是C的路线。但是调用和声明一致的前提是,函数调用之前需要声明。在 C 语言中,不仅仅是函数,即使数据类型定义也需要声明。不过在很多动态语言中,大部分数据和函数都不需要提前声明,而且有很多函数只调用一次,那么在函数调用之前声明一次,以后这个函数就再不使用了,这样就会显得繁琐。这时,就需要在语法上将函数定义和函数调用分别出来。还有一个原因,C是种编译性的语言,他的语法是为了更好的提升编译速度和编译完成后的代码性能,比如早期C和pascal编译器要求的数据和代码分离的原则。而现在的主要动态编程语言都不再需要编译,更无需预编译。

a123456678 2019-12-02 02:37:23 0 浏览量 回答数 0

回答

很赞的一个问题。我也看过很多语言源代码,也对不同的语言的语法感兴趣,所以简单的聊聊这个问题。首先出场的是 LISP 语言。 LISP 语言以逼格高闻名于世。他属于函数式编程语言,所有的语句都是函数,因此不需要 function 这个关键词。随后的 Fortran 语言,公式翻译的意思 FormulaTranslation。既然是公式翻译语言,因此 数学公式 f(x) = a + b 在 Fortran 的调用就是 x = a + b。在定义函数的方式上,使用 function:(代码来自google)function add(a, b)implicit nonereal::a, b !声明函数参数类型,这是必需的real::add !声明函数返回值类型,这是必需的add = a + b !返回值的表达式returnendCOBOL语言。COBOL 设计的目的和 Fortran 不同,甚至连赋值语句都没有,而且根本就没有函数的概念,取而代之的是 PROCEDURE DIVISION(过程)。随后就是 Basic:Beginner's All-purpose Symbolic Instruction Code。Basic 可谓是集大成者,不仅仅有函数,还有过程。函数使用 function, 过程使用 sub。(抄袭 fortran 和 cobol?)C语言改变了这种局面,原因是C语言的一个独辟蹊径的设计理念:函数如何调用,就如何声明。也就是说,我们如果这样调用函数sum = f(a, b);那么,我们就这么声明:double f(a, b) / 旧式语法 /double a; double b;{}double f(double a, double b) // 新式语法{}随后的 C++ Java C# 走的是C的路线。但是调用和声明一致的前提是,函数调用之前需要声明。在 C 语言中,不仅仅是函数,即使数据类型定义也需要声明。不过在很多动态语言中,大部分数据和函数都不需要提前声明,而且有很多函数只调用一次,那么在函数调用之前声明一次,以后这个函数就再不使用了,这样就会显得繁琐。这时,就需要在语法上将函数定义和函数调用分别出来。还有一个原因,C是种编译性的语言,他的语法是为了更好的提升编译速度和编译完成后的代码性能,比如早期C和pascal编译器要求的数据和代码分离的原则。而现在的主要动态编程语言都不再需要编译,更无需预编译。

蛮大人123 2019-12-02 01:55:24 0 浏览量 回答数 0

回答

我说的简单明了一些,方便去理解这个机制。1.代理,简单理解,就是一个中间人,称作proxy代理,当然这里是对象。起的作用就是转发调用请求。通过中间人完成某个工作。2.动态代理,dynamic proxy,简单理解,就是 可以动态创建的代理对象,可以在运行时创建代理。3.RPC,远程过程调用,主要是早期分布式通信的基本概念。现在各个主流语言都有RPC的实现。Java也有Netty这样的框架。 本质是Java的RPC使用到了代理模式,更确切的说是动态代理模式更多。当然这里不一定非要使用JDK反射机制,也可以使用CGlib或者ASM、javaassist更底层的技术。但是本质上都是 要创建一个代理proxy对象=>客户端调用Proxy的方法=>经过网络=>服务器端的实际对象Object的方法。最后返回结果。其他编程语言,C、C++模式相同,但是因为不支持反射可能实现依赖更紧密,二Go、Node或者C#实现机制机制类型。有些类似。反射方式动态创建对象依赖于语言本身的特性。基本大同小异。

徐雷frank 2019-12-02 01:40:03 0 浏览量 回答数 0

回答

这些基于JVM的语言无论是Kotlin、Groovy都是社区对Oracle或者现有Java语言发展太慢不满导致的,自己独立创新。肯定会产生影响1、Kotlin对Java影响比较大,主要是移动开发市场,现在已经成为安卓开发的主推语言,这都是Oracle作死导致的,不和谷歌打官司,谷歌也不会这么干。2、Groovy语言增加了一些动态语言的特性,但是对Java影响不大,3、Scala函数式编程,也是加入了一些新特性,但是对于Java影响也不大。4、目前Java还是第一大语言,对于很多公司和程序员来说,目前Java语言的语法落后,但是熟练起来可以继续使用。有些语法糖不是主要的,大家也懒得换。

徐雷frank 2019-12-02 01:46:41 0 浏览量 回答数 0

问题

Julia 向 Python 宣战!谁将更适合AI?

珍宝珠 2020-01-02 14:42:14 1654 浏览量 回答数 3

问题

你真的需要掌握多种语言吗?

oneapm_official 2019-12-01 21:00:49 7863 浏览量 回答数 0

回答

根据表格观察:从2018年到2019年,除Python外,所有语言的流行度都有所下降。 蟒蛇 自从最近五年以来,Python是唯一不断增长的语言。它是一种通用语言,因此有人希望在2020年仅学习一种编程,并且想要涵盖更多的软件开发领域,因此可以选择Python 。 爪哇 Java在上升,但在2019年下降,这是Kotlin在Android平台上获得普及的原因。Java是一种编程语言的不错选择,但现在它在Oracle的管理之下,而Google正在推广Kotlin,因此它处于冲突地区。实际上,由于其开发人员基础,框架和旧版应用程序,该公司中有大量公司正在使用Java并将继续使用Java。 C / C ++ C和C ++仍然保持着约20%的份额,由于其固有的功能和遗留系统,它将继续存在。 JAVASCRIPT JavaScript的流行可以归因于流行的JavaScript库和诸如node.js等框架的增长。JS是动态网站的语言,由于其积极的开发,Mozilla的支持以及对HTML的惩罚,这种语言将在未来几年成为热门。库和框架。因此,如果有人想进行Web开发,则必须使用javascript。 [R 近年来,R越来越流行,其原因可能是数据分析的增长和普及。它被数据科学家使用,但与已被确立为通用语言并拥有许多数据科学库和模块的活跃开发人员的Python相比,它仍然落后很多。因此,如果只需要选择一个,则可以选择Python而不是R。 红宝石 像PHP一样,Ruby也要面对来自JavaScript甚至Python的激烈竞争,以建立后端Web开发编程语言。因此,对于Web开发而言,再次使用javascript和Python(服务器端(Flask,Django等)将是一个不错的选择,并且将提供比Ruby更多的域灵活性。 PHP 2019年PHP的普及率急剧下降,这可以追溯到服务器端对javascript和Python的接受。因此,如果有人想进行服务器端Web开发,那么PHP还是拥有大量流行框架(如CakePHP,Codeigniter等)的不错选择,否则选择通用编程语言会更好。 C 在苹果转向Swift语言之前,Objective-C是苹果软件(例如macOS,iOS等)的主要语言。因此,这种过渡反映在两种语言的流行中,即,Objective-C的流行性下降,而Swift的流行性正在上升。因此,如果有人想成为Apple产品的开发人员,那么Swift应该是首选语言。 就业市场和薪金: 薪金取决于产品的地理区域和需求,基于编程语言的薪金比较只是预测或估计薪金趋势的工具。我们根据流行调查的编程语言总结了薪水,即Dice薪水调查2018和Stack-overflow调查2018和2019。 从上表中可以很明显地看出,Go / Golang是市场上薪水很高的工作,甚至在2019年堆栈溢出调查和Dice Salary Survey 2018中在高薪工作中排名第一。

珍宝珠 2019-12-24 17:37:09 0 浏览量 回答数 0

回答

CoffeeScript首先我们来看看 CoffeeScript:CoffeeScript 包含 68 个概念,分为 8 组。注意我把元编程作为一个概念,因为它主要基于可执行类体的概念之上。Ruby很显然,Ruby 更加复杂,有 96 个概念,分11组。比 CoffeeScript 更复杂的类模型,还包括常量、块和操作符重载。C++最后是 C++:C++ 有 189 个概念 11 个分组,是 Ruby 的 2 倍,是CoffeeScript 的 3 倍。C++里的某些概念(比如命名解析)因为有很多微妙的规则,所以更加复杂。而且因为有太多不同的范畴,C++里的名称概念也比其它语言更复杂。相比之下,在动态语言里,几乎所有东西都是常量或者变量(包括类名和函数名)。还有一点,我有意地忽略了“编译”和“链接”,因为CoffeeScript和Ruby里并没有这些功能。从上图可以看出,C++复杂是有很多原因的,其中之一就是静态类型系统(static type system),另一方面是因为模板(template),还有就是命名系统(name system)以及复杂的类模型(complex classmodel)。底层的驱动肯定是性能和类型安全的。上图还缺少哪些信息?我没提到程序员在练习中需要掌握多少技巧,比如:标准类库(standard libraries)编程语言习语和最佳范例(language idioms and best practices)并发概念(concurrency concepts)设计模式(design patterns)这一点在从入门到精通时更为明显。我相信在这一点C++同样是最复杂的。比如像《 C++ Coding Standards 》这样的书:《101 Rules》、《 Guidelines 》和《Best Practices》以及《 Effective C++ 》等等。这些书虽然已经涉及很多内容,但是旨在解决日常问题,并没有考虑到复杂的使用。C++绝对比这些书里说的要更加博大精深!同样,其它编程语言也有最佳范例和习语需要学习,但我觉得大部分语言的会比C++少得得多。重点是什么?我并不是为了抱怨C++到底是多么庞大和复杂。对于硬件、性能限制明显的大型项目,综合考虑工具、库和开发者方面的因素,没有哪种语言能够代替C++。但是,你需要要注意到C++编程里哪些是必须了解的,这一点很重要,因为这深深影响到课程教学和作为项目语言的选择。C++并不是一门很容易入门的编程语言,相反学习这门语言会很费时间,而掌握它更费时间。因此,“自上而下”地学习C++很有意义!随着C++11标准的出台,C++现代高级子集(及其标准库)的入门变得相对容易一些了,你只需要之后逐渐理解其复杂的和低级特性。换句话说学习std::shared_ptr应该在裸指针之前,lambda在仿函数之前,std::array在C样数组之前。如果你想使用C++开发新项目,开发者的经验等级和剩下的巩固C++能力的时间很需要考虑。下面这一点也很重要:因为C++的复杂性,开发者语言知识经验差别可能会非常大,所以在面试和培训时要非常注意这点!团队成员水平有明显的差距时,能力强的和弱的开发者都不会舒服。

a123456678 2019-12-02 01:56:42 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站