余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

苹果Swift:易于入门的新型表达方式(表达方式和表现手法的区别)

xiyangw 2022-12-04 10:06 202 浏览 0 评论

编辑:swift开发社区www.swiftdevelop.net

如何才能证明企业自身的雄厚财力?当耀眼的私人飞机与闪亮的总部大楼不足以说明问题的时候,新型编程语言开始肩负起这一“历史重任”。时至今日,苹果已经继微软(C#)、Sun(Java)、以及谷歌(Dart与Go)之后走上了同一条道路,为我们带来Swift——一款采用类C型语法、旨在帮助编程人员轻松为Mac及iPhone开发全新应用程序的编程语言后起之秀。

虽然怎样估量苹果的高傲风格都不为过,但Swift绝不仅仅是那种出于虚荣心而建立、希望像英语一般在全球技术人员中占据统治地位的计算机编程方案项目。苹果的软件堆栈自NeXT归入该公司后一起紧紧围绕在Objective-C这一绝对核心周围,而众多新手在接触之后普遍抱怨其指针、文件(.m与.h皆是如此)以及包含大量标点符号的语法令人头痛不已。

苹果曾于1997年尝试利用“现代语法”对该语言进行更新,但群众用户明确表示拒绝放弃所谓经典语法。而其它项目——例如将Java绑定包添加到Cocoa库当中——则始终没有真正得到坚持与贯彻。时至今日,Objective-C语言已经成为鼓励开发人员为苹果平台编写代码时所面临的最大障碍之一。

好消息是:Swift将成为一份伟大的礼物,足以帮助任何希望摆脱Objective-C这道难关的开发人员。曾经学习过如何利用Java进行汇编计算机科学、怎样通过JavaScript创建Web页面以及如何借助Ruby构建网站的程序员将在Swift当中获得相当贴心的熟悉之感。多文件与继承过程非常平顺,而标点符号也不再在代码表达当中占据主导性地位,这一切显然都可算是Swift的显著优势。除此之外,这款新语言在自动化功能方面也更为丰富,其中包括输入内容自动推断以及引用计数——旨在帮助编译器纠正程序员在开发过程中经常出现的错误。

为什么要推出Swift?

很多人可能不太理解,苹果公司为什么不直接选择一款已经在市场上拥有一定基础的现有语言。JavaScript在Web逐渐占领世界的时代背景下可算一项理想方案,但它并不能提供全部指向字节的低级访问,而这显然将导致系统程序员额外构建更多接口以定义苹果应用的使用体验。无论如何,JavaScript程序员们已经在使用PhoneGap/Cordova等框架。而以Python或者Ruby等语言为代表的其它语言都能与Unix后端顺畅集成,但它们都缺乏与系统软件深入对接的能力。最好的答案可能是充分利用苹果在Cocoa层已经投入的庞大研发资源,而Swift则是在保护过往投入的同时带来现代便利特性的最佳途径。

Swfit程序的基础结构看起来与Java非常相近。代码内容被拆分成类,这些类又由字符段与方法填充而成。其中最具决定性的差异感戴,这些方法以关键字(func)为起首,而返回值则位于方法名称之后而非之前。这些类能够被分配到结构当中,而该结构拥有大量继承自原有机制的面向对象代码内容;此外属性可以利用点语法进行读取。

大家需要掌握的就只有高级路线图与一部分关于声明变量语法的具体知识。就在苹果发布Swift语言的几天之内,利用Swift编写的开源软件已经开始出现在GitHub之上。其中最引人注目的项目包括由Nate Murray编写的“Flappy Bird”复刻版,它只使用了两个主Swift文件与一点点接合代码。如果大家已经拥有自己擅长的OS X或者iOS编程方式,肯定能够快速上手Swift这种新型表达方式。Murray表示,他只用了一天就完成了自己的游戏复刻工作。

Swift修复了一部分最受诟病的Java语法。大家根本不需要浪费输入操作来拼写出每一个变量类型;编译器从一开始就能够自动推断我们打算输入的内容。各位能够享受的显著优势之一在于,编译器可以在无需大量关键字的前提下检查变量类型。如果大家打算将多种变量与字符串接合在一起,Swift提供的一套简单模板能够仅仅通过三次输入将输入变量转换为字符串。这实在堪称一大壮举。

Swift带来的提升还不止于此。Scode现在提供所谓“playground”,大家可以在这里输入代码并直接观看用户手指操作时这些代码的执行效果。这样的沙箱机制让开发人员学习JavaScript与JavaScript API的道路变得更为顺畅而简单。举例来说,谷歌仅仅提供一套“playground”Web页面就成功为其谷歌地图API吸引到了众多开发者拥趸。Xcode的playground在效果上远远超过了谷歌的方案,因为它能够直接将灰色选定部分的代码运行效果显示在右侧区域内,从而帮助大家了解该语言如何执行。我在使用playbround过程中遇到的惟一负面问题是,我曾经遇上过数次崩溃情况而且无法成功重现。请大家相信,我绝对没有犯过那种“除以0”的低级错误。这一次崩溃了,下一次重新执行时却一切正常——实在有点诡异。

纵观Swift带来的全部提升与改进,我发现Swift的规模实在有点吓人。尽管根据Nate Murray在一天之内成功完成“Flappy Bird”复刻来看其使用难度并不高,但该语言另外也有很多不可能在几分钟内掌握的重要细节。我花了很长一段时间希望搞清根据值(struct)进行传输的数据与根据指针(class)传输的数据之间到底有什么不同。弄明白这些差异在C语言编程工作当中就是一大挑战,而对于Swift程序员来说这项任务依然困难、特别是对那些希望能让自己代码获得最佳性能表现的开发者而言更是如此。

优化工作对于某些特定代码类型来说也可能成为令人头痛的实际障碍。举例来说,字符串始终根据值进行传输,也就是说Swift会在每一次函数调用时从左到右对字符串内容进行复制。这种处理方式对于游戏这类以图形元素为基础的程序来说也许并不算什么问题,但像Web服务器与内容管理系统这样的程序从本质上讲则属于连结机制。任何打算从字符串入手的开发人员都需要在编写Swift代码的时候认真考虑这种情况。他们可能最终需要对类当中的字符串值进行打包以防止上述复制过程。

我还指定了其它一些需要深入研究的议题。举例来说,向下转换允许大家利用类型转换运算符(as)将关注对象从类转移到子类身上。这可能会导致问题,因为还有另一种添加问号的类型转换运算符(as?),如果向下转换无法成功、该运算符则会返回“零”值。有一些此类可选功能会由于存在问号或者不存在问号而彻底改变关键字的执行效果。而另一项特性,也就是子脚本,允许大家快速接入某个类并提取出一个特定值。Swift虽然带来了可观的简洁性提升,但却也大大增加了出现表达混淆的潜在可能性。

新增的playground能够在我们输入Swift代码的同时对内容进行评估。大家在左侧输入的代码内容会直接以效果形式显示在右侧区域当中。

一项重大承诺

如果有人告诉大家Swift是一种简单的语言,请绝对不要相信他。尽管对于编写“hello world”或者只有几行代码的简单应用程序来说它足够易用,但从另一个角度看,要编写出具备无数细节并存在细微差异因素的应用则需要我们花费大量时间磨炼自己的水平。熟练的程序员们会乐于将自己的技术实力以及聪明才智运用到自己的软件成果当中,但很多新手肯定会发现这类代码内容很难阅读。这绝不是一种能够轻易掌握的语言,大家千万别被它简单上手的表象给迷惑了。

关于Swift,最需要认真考虑的就是其发展前景。尽管一部分规模相对较小的新语言往往给人一种玩具般的感觉,但Swift却绝对是一项重大承诺。关于Swift开发的第一本指南教程非常优秀,这一方面是因为它拥有超过850页的浩大篇幅。Xcode下载包现在已经达到2.5GB。Swift语言并不是一种使用难度很低但只能应对轻量级开发任务的玩物——它是名符其实的一款完整软件包,设计目的在于为任何技术团队的程序员们提供足以支持重大项目的开发方案。

Swift语言当中还包含大量“钩子”及其它用于同现有Cocoa库进行协作的工具。苹果并不希望重新编写其iOS及OS X堆栈,因此Swift能够与之前的代码轻松对接。整个Swift项目的建立目的在于维持开发者对于这些堆栈的兴趣并帮助有志投向于应用程序开发的朋友能够更轻松地跨过这道门槛。与此同时,大家还可以在自己的iOS或者OS X项目当中尽可能多或者尽可能少地使用Swift代码——具体情况各位可以随性而为。

苹果并没有以强制性手段推动Swift。毫无疑问,很多保守派开发人员会继续坚持使用Objective-C。不过Swift能让原本熟悉其它语言及传统机制的程序员们快速上手这种新的开发途径,拿起Xcode这柄利器马上投入到实际生产当中。单这一项就足以成为苹果公司发展历程上的一大步,而且也很可能带来数量原超过从前的原生iOS与OS X代码。Swift并不打算接管整个世界——它更像是一份专门送给开发者们的大礼。

相关推荐

“三次握手,四次挥手”你真的懂吗?

记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意...

面试官问:三次握手与四次挥手是怎么完成的?

作者|饶全成来源|码农桃花源记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有...

三次握手和四次挥手的高阶面试题,建议收藏

昨天村长的讲解,真是一语点醒,这样的解释胜过死记硬背。但对于学习者,如果不能有直观感受,可能还是觉得不接地气,今天介绍两个工具,一个是网络抓包工具Wireshark,一个是linux命令tcpdum...

三次握手和四次挥手到底是个什么鬼东西

之前总有是有面试官喜欢问,你知道什么是三次握手么?什么是四次挥手么?为什么握手需要三次,挥手需要四次呢?今天我们就来详细的聊一下这个。1.什么是TCPTCP协议,简单称呼一下的话,那就是传输控制协议,...

加深理解TCP的三次握手与四次挥手

在了解三次握手和四次挥手之前,先要知道TCP报文内部包含了那些东西。熟悉了解TCP报文对日后学习网络和排除方面有很大的帮助,所以,今天为了加深对三次握手的理解,从新去认识TCP报文格式。TCP报文格式...

三次握手 与 四次挥手_三次握手四次挥手大白话

三次握手:①首先Client端发送连接请求报文②Server段接受连接后回复ACK报文,并为这次连接分配资源。③Client端接收到ACK报文后也向Server段发生ACK报文...

动画讲解TCP的3次握手,4次挥手,让你一次看明白

专注于Java领域优质技术,欢迎关注作者:老钱占小狼博客TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一。很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答。本篇尝试...

linux下实现免密传输文件或登录到其他服务器

使用scp传输文件到其他服务器的时候,提示需要输密码,如下:[root@18csetup]#scpLINUX.X64_180000_db_home.zip192.168.133.120:/u0...

Linux如何通过salt免密SCP传输上百台机的脚本?看chatGPT的回答

如何通过salt免密SCP传输上百台机的shell脚本”,下面是chatGPT给出的结果。scp批量免密脚本给出的详细shell脚本如下:#!/bin/bash#源文件路径和目标路径SRC_...

Linux/Mac scp命令上传文件_将hdfs上的文件下载到本地的命令是

语法scp[可选参数]file_sourcefile_target参数说明:-1:强制scp命令使用协议ssh1-2:强制scp命令使用协议ssh2-4:强制scp命令只使用IPv4寻...

Linux常用功能——文件远程传输_linux 远程传输文件

scp是securecopy的简写,是linux系统下基于ssh登陆进行安全的远程文件拷贝命令,用于在Linux下进行远程拷贝文件的命令。和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器...

使用 scp 命令定时拉取服务器备份文件

我们的服务器,每周五必须要做下备份,但总是忘记执行备份这件事情,或者是服务器备份做了,但没有做异地备份。所以通过定时任务自动备份,备份成功之后,在其它服务器上面通过定时任务scp命令自动拉取备份文...

windows下最轻便的FTP/SCP文件管理器

这次推荐的工具叫做winscp,这个工具如果是IT从业人员,又是做服务端相关工作的话,可能无人不知,如果是刚入门,推荐立马上手试试。如果看了觉得有用,欢迎收藏、点赞、关注。官方网站:https://w...

我不是网管 - Linux中使用SCP命令安全复制文件

SCP是linux发行版中的命令行工具,用于通过网络安全地跨系统复制文件和目录。SCP代表安全复制,因为它使用ssh协议复制文件。拷贝时,scp命令建立ssh连接到远程系统。换句话说...

WinSCP软件双系统(Win-Linux)文件传输教程

WinSCP软件是windows下的一款使用ssh协议的开源图形化SFTP客户端,也就是一个文件传输的软件,它有什么优点吗,咱们嵌入式开发中经常会将windows中的文件复制到linux系统当中,比较...

取消回复欢迎 发表评论: