swift语言和python区别_Swift为什么能成为编程语言中的黑马?

你好,这里是卖桃者说,今天跟你聊一门年轻又很受欢迎的编程语言,Swift。

Swift 是苹果于 2014 年在苹果全球开发者大会(WWDC)上发布的编程语言,它可以与 Objective-C 共同运行于 macOS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

虽然 Swift 发布至今不过短短 6 年时间,但它的普及程度早就超出了所有人的预期。在最新的 2 月份 TIOBE 编程语言排行榜中,Swift 排在了第十位;而在 1 月份的榜单中,Swift 排在第九,这也是 Swift 自发布以来取得的最高排名。

排在 Swift 前面的都是谁呢?Java、C、Python、PHP……这些都是发布至今十余年甚至是几十年的老牌编程语言。在这群“前辈们”的衬托下,年轻的 Swift 显得格外扎眼,甚至成为一匹黑马,冲在了前面。

Swift 之所以成为编程语言中的黑马,离不开“前辈们”的滋养。比如,Swift 集成了现代语言的很多特点,包括高级结构、闭包、泛型等等。在 Swift 身上,也能看到很多其他优秀编程语言的影子。

Swift 受欢迎还有一个很重要的原因在于,它来自苹果公司。它既集成了现代编程语言思想,还凝结了苹果工程文化的智慧,再加上苹果庞大的市场、极高的品牌口碑,Swift 想不火都难。

另一方面,Swift 对于苹果应用的开发者而言意义非凡。开发者在 Objective-C 之外,终于有了第二种选择,而且这门新语言易学易用,语法也非常简便。所以说,Swift 能成为编程语言中的黑马,一点也不奇怪。

早在 2010 年,苹果内部的一个小组就已经开始研发 Swift 了。当时,高级架构师克里斯·拉特纳(Chris Lattner)觉得,无论是 C、C++,还是 Objective-C,都有一些让他不太满意的地方。既然如此,为啥我们不为苹果创造一门新的编程语言呢?毕竟 Objective-C 实在是太老了。

在他的想象中,这门新语言要越简单越好,而且还要高效。拉特纳曾在接受采访时说道,“我们给 Swift 取这个名字就意味着我们希望这门语言非常的高效。它本身设计的目的不是让你短时间内写出大量的代码,而是用最少的时间、最简洁的代码来完成工作。”

带着这个想法,拉特纳开始独自设计 Swift,并实现了这门语言的大部分基础架构。最初,只有几个人知道这个项目的存在;2011 年年末,其他几位优秀的苹果开发人员加入进来;到了 2013 年 7 月,Swift 项目一跃成为苹果开发者工具部门的焦点。

2014 年 6 月,Swift 在苹果开发者大会上正式发布。刚发布的时候,苹果内部很多项目组都很惊讶:明明已经有 Objective-C 了,为什么要做 Swift?Objective-C 有问题的话,优化优化不就行了吗?

拉特纳考虑的是,Objective-C 毕竟是一门脱胎于 C 的老牌编程语言,无论怎么优化,它身上总是有 C 语言自身的缺陷,语法上也不够现代。此外,如果大幅优化 Objective-C,把很多 Swift 的特性加进去,对开发者来说将是灾难性的,因为他们要大幅修改原来的 App。Swift 虽然没有做到完美,但随着它日趋成熟,逐渐受到越来越多开发者的喜爱。

作为苹果四年磨一剑的产物,Swift 的野心绝不仅仅局限于替换 Objective-C,它把目光放在了更长远的地方。在苹果官方的 Swift 书里面有这样一句话:“Swift 的目标是,既可以写应用程序,也能写操作系统。”可以看得出,Swift 的愿景非常宏大。它的创造者拉特纳本人的口气也不小,他曾在采访中说过,“我们一开始,就是要将 Swift 设计成为一门一统天下的语言。这也许有点痴人说梦,但是大家等着瞧,过几年我们再看分晓。”

在拉特纳的预想中,Swift 要想“一统天下”,总共分四步:

第一步,Swift 要有一个杀手级的产品,这样它才能流行起来,让更多的人知道这门编程语言有多好用。目前,国内很多知名 App 都开始使用 Swift 开发。

第二步,开源,这也是比较重要的一步。2015 年 12 月,Swift 正式开源,仅仅一年的时间,就获得了上百万开发者的使用,并在无数开发者的实战中得到检验和改进,不断优化。

第三步,走得更远,要把 Swift 应用到服务器端。

第四步,Swift 要能在脚本语言以及底层的系统设计上应付自如,取代 Java。当 Swift 在系统开发上真正流行起来之时,就离“一统天下”不远了。

这个目标不可谓不宏大,虽说不大可能出现一门语言包打天下的情况,但从 Swift 目前的发展来看,它的应用场景越来越多了。2019 年,Swift 一共有两个大事件:发布了 SwiftUI 和 Swift for TensorFlow。

SwiftUI 是苹果公司的最新框架,通过 SwiftUI,开发者仅使用一组工具和 API 就能为所有苹果设备构建用户界面。它的口号是,“更好的应用程序,更少的代码”。

Swift for TensorFlow 是一个将谷歌 TensorFlow 框架和 Swift 集成在一起的深度学习和可微分编程平台,这也是 Swift 的一个全新用途。Secret Lab 联合创始人、《Swift 与 Cocoa 框架开发》作者巴特菲尔德·艾迪生(Paris Buttfield Addison)评价称,“Swift for TensorFlow 可以为开发者提供机器学习和数值计算所需的一切,并为 Swift 提供了完整的 Python 支持,数据科学家可以将他们所需要的有用且熟悉的 Python 框架,与简洁而富有表现力的 Swift 代码进行混合和匹配。”

展望未来,Swift 选择了全新的方向,这或许也为它开启下一篇章奠定了基础。你认为 Swift 的前景如何,你会使用它吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一周内容

回到寝室,第一件事情便是想查一下杨老师课上说的“diff”程序。百度了一下,谈到最多的是linux中的diff命令,于是换个关键词,diff工具,发现diffmerge,P4merge,kdiff,TextDiff等等。以…

osgdem的参数表(转)

osgdem的参数表 ParameterDescriptionDefault General -h or --help Display commandline arguments information --task -s Specify a VPB source file containing all commandline options. --so Output the VPB source file for the current run. --report --cache Read the…

html中如何把两行合并单元格,css合并两列单元格内容

用纯DIVCSS做一个两行两列的表格,但第二列中两行怎么在html里把一行中的两列合并世界最不可以相信的话,就是从女人嘴里说出的话〃如上图,怎么做出上面图中的效果,分享大神详解CSS表格单元格占两行可以参考以下的代码: 单元格占两行…

ASP.NET MVC 实现二级域名(泛域名)

自从微软发布 ASP.NET MVC 和routing engine (System.Web.Routing)以来,就设法让我们明白你完全能控制URL和routing,只要与你的application path相结合进行扩展,任何问题都迎刃而解。如果你需要在所处的域或者子域处理数据标记的话&#xff0…

list和tuple

2019独角兽企业重金招聘Python工程师标准>>> list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。 比如,列出班里所有同学的名字,就可以用一个list表示: >…

springboot数据源不正确_Spring MVC 到 Spring Boot 的简化之路

Spring全家桶笔记:SpringSpring BootSpring CloudSpring MVC​shimo.im01 背景从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷。但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的朋友能深刻…

KDT#94 为DW/BI系统建立定制工具

Building Custom Tools for the DW/BI System 市场上有大量的工具帮我们来建立DW/BI系统、把信息交付给业务用户。这些工具的种类也很多,它们包括关系型数据库管理系统、OLAP数据库管理系统、ETL工具、数据挖掘工具、查询工具、报表工具,以及BI门户工具等…

c盘所有的html文件全删,我将C盘文件夹全删了

如果删除了系统文件系统运行就会出现错误,如果系统运行稳定就说明没有删除系统重要文件,建议今后删除文件时尽量弄清楚后在删除,如果系统出现问题,可以按照下面方法修复。1、请你用系统自带的系统还原,还原到你没有出现…

OSSIM主要数据库表结构

OSSIM主要数据库表结构对于从事OSSIM开发的技术人员,最主要的需要知道OSSIM库里的多种表结构,下面举几个典型事例:/* config表 */DROP TABLE IF EXISTS conf;CREATE TABLE conf (recovery int NOT NULL,threshold int NOT NUL…

C#线程同步(1)- 临界区&Lock .

预备知识:线程的相关概念和知识,有多线程编码的初步经验。 一个机会,索性把线程同步的问题在C#里面的东西都粗略看了下。 第一印象,C#关于线程同步的东西好多,保持了C#一贯的大杂烩和四不象风格(Java/Delphi)。临界区跟…

python atm银行取款系统_Python实现ATM系统

今天偶尔在知乎上看到某大佬用Python写的ATM系统案例,然后观摩了下他的实现思路和源码,感觉受益颇多,于是就根据自己的思路和目前掌握的Python编程基础将ATM实现了一下,以下是案例解析的过程:案例剖析:1.at…

【摘录】BREW应用的c++实现注意点

BREW应用的c实现注意点 从VC6.0的调试器来说吧,肯定支持C语言了,对于ARM或者GCC来说,也是有可用的C编译器,而且任何支持BREW的手机都可以运行通过ARM或者GCC编译连接出来的目标代码,所以从环境来说,BREW开发…

MapXtreme 包含所有自带坐标系一览

CoordSys 对象包含关于 X 和 Y 坐标如何与其在 Earth 上的位置相关联的基本信息。 每个 Geometry 或 Map 对象都有一个关联的坐标系。 CoordSys 对象包含对坐标系的详细说明。 CoordSysFactory 类提供了各种用于创建不同 CoordSys 对象的方法。 所有 CoordSys 对象都是只读的&a…

html4的语法,HTML——语法

文章目录页面结构一个标准的HTML页面如下:Document一、文档声明头标准的HTML页面,第一行是以开头的的语句,这就是文档声明头,即DocType Declaration,简称DTD。DTD可以告知浏览器使用哪种HTML或者XHTML规范。二、页面语…

如何学习streamdecoder类_2019年终巨献:一份拿下了阿里、网易、滴滴等大厂offer的学习笔记...

2019仅剩最后二十天,回顾今年初遇“寒冬”时,自己也挺慌的,但是经历过这么多次面试后,我才“醒悟”,所谓的“寒冬”,“冻死”的都是“衣服穿的少的”。年末了在这里做一个年度总结,今年面试了不…

自定义控件的构建(12)

Share 前面讲了模板的构建&#xff0c;我们忽略了一个细节&#xff0c;如果接触ASP.NET时间不长的话&#xff0c;一般都会看到数据表达式是<%#Eval(‘Name’)%>这种形式的&#xff0c; 那么我们为什么用<%#Container.Name%>这种形式呢&#xff0c;其实前者是ASP.NE…

矩阵快速幂 zoj-3690 Choosing number

题目链接&#xff1a; http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId4973 题目意思&#xff1a; 有n个人&#xff0c;有1——m个数&#xff0c;每个人可以选择1个数&#xff0c;要求相邻的两个人如果选的数相同则必须大于k,求选数的种数。 解题思路&#xff1a…

insertAfter()

<div id"b">bbbbbbbbb</div> <div>dddddd</div> JavaScript window.οnlοadfunction(){var a document.createElement("span");var b document.createTextNode("cssrain");a.appendChild(b);var mubiao document.getE…

python def 参数一直为false_在Python 3中,如果参数为False,则查找惯用的方法来评估为False...

我有一连串的功能,全部定义在课程其他地方&#xff1a;fus(roh(dah(inp)))其中inp是字典或bool(False).期望的结果是,如果inp或任何函数评估为False,则False由函数堆返回.我试图使用三元运算符,但是它们不能正确评估.def func(inp):return int(inp[value]) 1 if inp else Fals…

复试计算机网络与软件工程,2018华南理工大学软件工程复试经验贴

尘埃落定&#xff0c;昨天结束了复试&#xff0c;终于被拟录取了&#xff0c;只有真正经历过才知道不容易&#xff0c;一年来受到王道的很多帮助&#xff0c;论坛上软件工程的信息相对来说还是比较少的&#xff0c;所以也想分享下自己的一些经验&#xff0c;帮助后来人。本人普…