swift语言前景,swift语言特点
swift语言坑死ios开发宅这样怎么说呢?有基础入门课程推荐吗
因为说这话的,都是一些垃圾/低端的IOS开发者啊。。怎么坑开发者?一般有经验的开发者,转swift 1、2天就可以了。一天看完文档,第二天就能实操了。根本不是个事。。
现在的开发者基础都很差。都是用用API而已。没啥技术含量的。至于编译原理,数据结构,算法分析,等等的,全部都不懂的。不要以为这个不重要,低级程序员可能用不上,不过到高级了,开始写框架了,了解底层了的时候,肯定是需要的。
swift性能肯定没OC好,IOS9苹果自家的APP还是OC写的。国外开发者网站也有不少DEMO证明OC比雨燕快很多。不过前景是光明的。苹果能从底层编译器不断优化。总有一天API会全部变成swift的。
基础可能网上一大堆。学东西要专,不要看下这个又看下这个,没用的。这个雨燕非常简单。苹果的初衷就是做一个语法简单的语言,swift比较类似解释性语言,但是本质是动态运行的编译语言。语法简单,就会有更多的人帮他开发APP,壮大他的生态圈。
没分分的。。。哎算了,满意请采纳吧
零基础现学苹果新语言 Swift 可能吗
可能是可能,但个人不建议用swift或OC作为第一门语言。
第一,这语言属于非主流。如果以它作为主要语种的话,你很难靠它找到工作。换言之,你也就没有什么参与实际项目的机会。自然也就很难成为一名合格的开发人员
第二,这语言不具备真正意义上的跨平台能力。无法跨平台的语言都不会有什么前途,目前“活着”的语言里,就只剩swift和Object-C这两个苹果家的奇葩了。。其他无法跨平台的语言,全都“死”了。靠苹果公司养着,虽不至于消失,但似乎很难对它的未来有太多期待。
第三,语言本身太新,没有太多案例可以参考。完善的教程不多,不利于初学。
其实前两个问题,可以合成一个问题来看。因为目前的主流开发方式,是“一次开发,到处部署”。每种语言可以部署的平台数量不同,但开发成本却都是差不多的。因此开发一次,可以部署更多的平台,则代表这门语言更有竞争力。而swift,开发完之后,只能部署到苹果自家的系统上。而部署到MAC OS和IOS之间,又差别很大,难以互通。等于增大了开发成本。
如果你对前面的说法感到不太理解,那就举个例子给你吧。就拿苹果家的swift和微软家的C#语言来对比。
比如你用swift做了一个小游戏,比如贪吃蛇吧。。这个项目当然可以运行在MAC OS系统上面。之后呢,你想在IOS上面也运行这个游戏。你会发现,它根本打不开。只好再重新写一遍。于是这就等于开发了两次,这就是所谓“N次开发”。而有一天你想在安卓系统上面运行它,会发现完全做不到,即“不具备可靠的跨平台性”。
而如果你是用C#开发了一个小游戏又如何呢?它当然可以运行在windows系统上面。之后你想在MAC上面部署?没问题,只要把代码复制粘贴,到MAC机上去发布就行了。Linux呢?同样如此操作便可,这就是所谓“跨平台性”。
那“一次开发”又是什么呢?比如有一天,想要在安卓上运行这个小游戏。当然还是靠“多平台”特性,发布成安卓版就行了(在windows系统上便可发布,需安装JDK与安卓SDK)。。但你会发现,虽然游戏可以打开,但安卓设备上面没有鼠标。而之前在windows上写好的代码,是要用鼠标操作的,所以根本无法控制小蛇转弯。其实并不用发愁,只需要借助一个叫Unity3D的引擎,把鼠标相关的操作,改成触摸操作就行了。不仅如此,借助Unity3D,你还可以把这个小游戏部署到PS4,XBOX等游戏机平台上面,去用手柄操作。或者VR设备上面,用VR眼镜上的控制器操作,仅仅只需要修改少量代码就可以了。。。。游戏内容一样,而操控的方式不一样,无需重新开发,只要把操作相关的代码改一下就行了,即“一次开发”。
具备跨平台性的主流语言如下,随便选一个学习便可,都是主流,都有海量教程,只是学习难度不同,按照自己的接受能力,自行选择便可:
JAVA (WINDOWS,MAC,LINUX,安卓)
C++(几乎所有平台)
C#(几乎所有平台)
Python(WINDOWS,MAC,LINUX)
学习难度方面,C++最难,非常难。。。。JAVA难度一般,C#和JAVA差不多,某些大神精力够强,可以JAVA与C#双修,因为两门语言的语法几乎一样,类似英语和美式英语的关系。。Python则是入门非常简单,据说有些国家都编入了小学生教材,但仅仅是语法容易,实际开发同样非常难。。而且项目越大,就越难,做大型项目,会比JAVA和C#更难。总之程序这东西,没有任何一个方向是不费脑子的,都挺难的。
swift语言有前途吗
首先看swift的基础语法,了解了最基本的控制,变量,数据体,类与结构体,继承之后,开始可以写一些简单的命令行工具,说白了就是终端工具,打印log之类的没一点问题。
可惜,我们学习这个东西不是为了开发command line程序的,我用shell或者nodejs也挺好比这个上手还快。
所以紧接着第二天开始直接跳过command line程序编写ios app,也就是iphone程序。
然后我就觉得我他妈的掉进了一个深坑。
搜了一下 现成得swift教程做app的中文几乎没有,国外有几篇讲的是开发一个todolist的教程,写的和官方的那个oc的todolist教程差不多,但是从我开始做到最后结束跑到模拟器里,我他妈也没写上超过20行得swift。。。基本都是IB实现的界面,事件,换场以及控件的创建。
我琢磨那他妈的我用oc也是一样的,算了,ios开发莫非就只是拖拖控件?了解一下mvc的概念就ok?
于是我去github上开始搜索开源的swift项目,比如2048,还有那个flappy,还有一个天气app的软件。
看了几行源码我就特么的放弃了。倒不是看不懂,我发现都是基于cocoa的,什么cocoa呢?我又去搜了一下,说了我是ios开发小白一点经验没有,然后我发现又是他妈的一个深坑啊。。cocoa的api都是oc编写的啊,swift是可以直接调用没的问题,可是cocoa的功能实在太多了啊。。
最他妈主要的是cocoa的帮助手册例子代码,api都他妈的是oc的api啊……我完全不会oc,我说了我是零基础,然后我在思考,我是否需要去学习下oc回来才能看懂那些api到底是怎么调用?那么多开源包都是些什么东西?
卧槽,那我学会了oc,我还学swift干啥呢?
不是说不用学oc了么……我特么的学swift就是为了不想了解oc啊。结果呢。
你不会oc也就是写写command line程序啊……我去你大爷的啊- -。
还有,xcode功能如此强大,我感觉如果自己写着玩,根本啥也不用学好么,鼠标拽拽一个app就出来了啊。。
而专家级呢?我觉得大部分得oc库,类都还都是oc的,你用swift可以调用,但是如果有bug呢?你想看内部实现呢?商业项目中这种开源坑遇到太多了,难道你就只用swift搞定么?
不太可能,也根本不可能,大家的代码都是oc的,底层是oc的,表现层也是,那么你swift到底是干什么用的呢?
===================================================
这是我学习了不到一周对swift和ios开发的理解,不学oc,我开发的时候就经常会陷入
【这他妈是啥,这他妈又是啥的一个一个深坑】
好了,就说这么多,最后扣下我第一句话。
swift开发和前端开发的关系就是java和javascript关系,雷锋和雷峰塔的关系。
PS,我发现其实文档中的实例代码是有swift的例子的,不知道是不是自动更新的,记得上周还木有。刚才发现有了,也可能之前我没仔细看~木哈哈。比如下面这段:
给苹果的文档 赞一个。。但是我依然不他妈的知道那个UIControlState是特么啥,我觉得,会oc开发的同学上手一定比0基础的要快很多……!给苹果的文档 赞一个。。但是我依然不他妈的知道那个UIControlState是特么啥,我觉得,会oc开发的同学上手一定比0基础的要快很多……!
【知乎用户的回答(4票)】:
直接开始学swift没问题,应该可以覆盖objc的所有主要功能,并非辅助语言。Apple开发这个语言的目的就是帮助初学者快速上手。
但是,看他的特点比较像scala,类似这种语言都容易上手,难于规范。因为太多灵活,不够死板,不会大规模用于企业的大项目。学swift,估计自己开始做了几个小应用之后还是需要迫于行业规范再去学习objc
一句话,独立开发可以从swift开始,找工作求职还是先学obj-c吧
大学生自学swift语言有用吗
在学校里,多学习自然是很好的,毕竟上班以后精力和时间都相对更少、在学校里学习进度和效果估计会更高些,作为一个工作4年多的“过来人”的叮嘱,千万千万大学的时候不要害怕辛苦。
至于自学Swift,如果是计算机编程类专业,以后也准备从事此类工作,抓住还在学校里的机会,利用好课余时间。哪怕工作以后可能暂时用不上,思维模式和学习能力将在平时的学习里积累,这些都是短期内没办法“临时抱佛脚”的。当然,多学习并强化专业知识有助于找到该领域的工作,并在该领域持续发展。
另外,Swift是iOS的内部语言,相比OC更为高级,其重要性就像c#之于微软、java之于安卓。Swift背靠苹果,鉴于目前以及未来苹果的发展,这门语言也拥有着被广泛使用甚至作为第一编程语言的潜质。
自学的前提。
自学,对自制力要求较高,选择安静的环境更容易排除掉部分干扰,如果有搭档一起学习交流,或许会更好;另外就是,还是学生就有一项“在校老师”的资源,可以利用课余时间多提问、请教,不要以为大学老师就是上了课就走,他们也愿意和积极上进的学生做交流,至少大部分都是。
自学的途径。
看书、看老师推荐的书,长久下来也锻炼了自己对书内容、质量的评价鉴别能力;现在交流工具和平台很多,可以问问老师、同学有没有对应渠道,或者是在网课平台上找一找。要了解更多Swift入门也可以关注小码哥的MJ,他的《Swift从入门到精编》目录和大纲还是很清晰的,或许可以作为你学习的一个思维导图。
另外,再次强调一下Swift的优势,语言简洁、更安全、支持函数式编程、可编写 OSX 下的自动化脚本,尽管其使得App体积大、Xcode 支持不够好、第三方库的支持不够多,但也不妨碍它有市场,毕竟苹果的市场在那儿。
如果决定要做,并且是件积极进取的事,千万记得坚持,如果中途想要放弃,也先问问自己是什么原因,是没能力、接受不了失败,还是真的太辛苦了。上班以后,不止一两次会在看书的时候想要放弃,但是也明白不吃学习的苦,就要吃生活的苦,所以,如果必须要选,选前者吧,毕竟,学习的苦只是辛苦一段时间,但是生活的苦会持续很久、消磨心智。
Swift语言已经出来一段时间了,大家觉得怎样
翻完iBooks书店上的The Swift Programming Language, 也了Xcode 6的beta版本来试验了一下。现在可以评价一下。如发现不对的地方,请在评论中指出,我斟酌后进行修正。
主要从技术的角度。而商业的角度,吸引开发者,共同维护苹果生态圈的繁荣等之类就不说了。
我不敢说swift学了有没有用,可不可以挣更多钱,但这门语言还是比较有意思的。swift骨子里面还是objc,但打扮过,比原来的模样漂亮。个人感觉,苹果还真的想用它取代objc呢。
------------------
swift 跟 objc 共用同一套的运行时环境
swift 的类型,可以桥接到 objc 的类型,反之亦然。如 string 对应原来objc的NSString, closures对应objc的block,等等。objc 积累下来的大量库,实现不用改写,swift 就直接可以使用。(最多加个声明文件)。看两个API的声明,对比一下
objc
void
dispatch_apply(size_t iterations, dispatch_queue_t queue,
void (^block)(size_t));
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
swift
func dispatch_apply(iterations: UInt, queue: dispatch_queue_t!, block: ((UInt) - Void)!)
func touchesBegan(touches: NSSet!, withEvent event: UIEvent!)
我怀疑,swift中的接口文件,是利用原来objc,c中的接口文件自动程序生成的。
同一个工程,可以同时使用swift, objc, c, c++ 四种编译语言(额外嵌入的脚本语言另算)
原来的 iOS/Mac 工程,已经可以同时使用objc, c, C++三种语言。现在支持第四种。objc, c, c++三种语言的结合很容易, objc跟c本身就兼容,objc跟c++结合只要将文件名改成.mm。而swift跟其它语言的结合,需要另外的文件进行桥接,其实也挺方便的。
这里的桥接很容易,Apple自家的各种 C 库移植过来了。比如Core Image/Audio,直接包含
import CoreAudio
import CoreImage
就可以使用了。
现在swift完全可以跟objc并存,原来的工程不建议重写,也不用重写。顺其自然,慢慢让它进化就是了。
swift 写法看起来像脚本语言,但它是真正的编译语言
初学者,看它使用了
let a = 4
var b = "hello"
没有类型定义,就想当然的觉得它是脚本语言,解释执行,这是错误的。上面两行语句是用了类型推导,类似 C++ 里面的auto。swift跟objc的运行时环境一样,写的程序跑起来不会比objc慢。swift区分了struct和class, 分别使用传值跟传引用。适当地使用struct,应该会比objc要快一点。
swift 吸收了很多其它语言的语法,写起来比objc简洁得多,不过它骨子里面的概念,跟原来objc差不多
编程语言的语法重要,但是语法背后的概念更重要。比如面向对象,常用概念无非是,继承,多态,封装,信息隐藏等。继承又可能分成多重继承,接口继承,实现继承。或者还会有些嵌套类,嵌套函数等等。
当明白语法背后的概念,知道为什么需要有这些东西。之后从一门语言切换到另一门有着相同概念的语言,其实很容易。
而语法会影响表达,理论上每门语言都可以表达任何概念。不过当某种概念在某门语言中,很难表达出来,就会倾向于不这样使用它,这种概念在那门语言的社区就难以被人熟知。
感觉上,swift有着 obj-c, C++, Ruby的影子。
暂时,我自己最喜欢的3个特性有
tuple,终于可以返回多个数值了。一行交换两个值。C++里面的tie+tuple也可以实现类似功能,不过使用库,显得噪音太多。
closure,喜欢它的简写,还有在函数最后一参数,可以写在()外面。这些特性,用来写函数式风格的程序,会很好看。而原来objc的block, 还有c++的function, 就太啰嗦了。
switch,case里面的条件匹配。
这些语法,编译最后还是会映射成原来objc的运行模型。原来objc的概念,引用记数,ARC, 属性,协议,接口,初始化,扩展类,函数等等,继续有效。
我将swift看成是objc的一块大大的语法糖。
有个大块头的东西,是原来objc没有的,就是泛型。swift中 将那种操作写一次,就可以作用多个类型的语法叫做generics(泛型),而C++中称为template(模板),叫法不同,本质是同样的东西。
总的说来,swfit 涵盖了现在流行的编程方式,结构化,面向对象,泛型,函数式。
swift的新语法,可以很好地支持内部DSL
有一种编程风格,不太好归类。就是将程序拆分成,描述+解释。解释部分写一次,其它地方使用描述式的语句,而不是命令式的语句。
内部DSL,通常利用主语言的语法特性,创出一套写法,来写一些描述性的语句。这些语句组合起来,就像一门新语言似得。这个比较难理解。举个例子(从ruby那里借过来的),假如计算,几小时之后的秒数。C语言中,大概会写成
getHourSeconds(3)
而现在 swift中,只要定义了扩展
extension Int
{
var hours:Int
{
return self * 3600
}
var ago:Int
{
return -self
}
}
就可以写成
3.hours
3.hours.ago
分别是3小时后的秒数,3小时前的秒数。
同理,也可以写成
10.days
10.days.ago
这种写法,看起来跟原来的命令式写法完全不同。这些程序是描述性的。原来的objc, 做不到这点。 我估计swift以后会冒出大量这样风格的库。
这种风格,到底好不好,要看情况。比较方便定义内部DSL的语言, 我自己知道的有C++, Ruby, Lisp。现在多了Swift。
认为所有人都是0基础的,是错误的
有些人学得特别快,因为之前的基础好。语言的语法只是表面,表面的东西总是变动得比较快的。底下的东西重要得多,而看不见。水面一块冰,有些人是冰山露出一角,有些人是无根的浮冰。看起来差不多,其实差别十分之大。
我相信有些人,在两个小时之内就可以使用这门新语言。
提提那个Playground
之前苹果的员工,Bret Victor 演讲过个。提到这个这种可视化编程。当我们每一步操作,都得到实时地反馈,我们的做法会有很多不同,做出的东西也会不同。这个Playground,用来学习swift的特性很好用,不过我还不知道怎么才能跟工程结合起来使用,不作评论。
未来比较有前景的8种编程语言,看看有没有你已经掌握的?
目前,软件开发人员正在使用大量不同的编程语言,大多数工作需要熟悉很多技能,如Java、Java、PHP和C#。然而,随着软件需求的发展,新的和尚未被普遍接受的编程语言越来越突出,为程序员提供了针对某些工作的正确工具。
预测哪些语言最终会上升到编程语言排行榜的顶部是困难的,很多语言的受欢迎指数都呈上升趋势,以下是八种目前还没有大火的编程语言竞争力分析,看起来未来几年将在在企业中发挥巨大作用。(排名按照开源社区受欢迎程度,swift最受欢迎)
在2014年的苹果WWDC大会上首次亮相,旨在替代OSX和iOS开发的Objective-C语言。苹果于2015年12月,根据Apache许可证开源了该语言,这意味着所有源代码都可以编辑,程序可以在不归属于苹果的情况下运行。
RedMonk分析师Stephen O'Grady表示,Swift与Ruby和Python这些更现代的语言相似,自发布以来一直享受着高速增长。苹果公司表示: Swift采用安全的编程模式,并添加了现代功能,使编程更容易、更灵活、更有趣。
Github上Star:39.8K
这种开源语言被视为比较成熟的语言(如Java和C)更快速、更易于使用。它已被许多企业使用:BBC、SoundCloud,Facebook以及英国政府获奖的GOV.UK网站。
Type在年初开始普及,上半年保持着强劲的增长势头。这反映在其技术出版商RedMonk的排名中,在第一季度Github的排名中位列17位,其中Erlang和Rust并列。
被描述为“Java的超集”,Type最大的优点就是程序员可以利用Angular,这是一个用于创建以Type编写Web应用程序的框架。
Github上Star:24.6K
由Mozilla创建,Rust 1.0于2014年发布,已经开发了多年。
与C和C ++在某些方面类似,Mozilla将其描述为一种专注于性能、并行化和内存安全的新型编程语言。通过从零开始构建语言并结合现代编程语言设计的元素,Rust的创建者避免了传统语言必须处理大量”baggage“(向后兼容性要求)。经过一段时间的发展,该语言正在引起程序员的兴趣。
Github上Star:22.9K
快速编译并与Java一起运行,Kotlin是一种静态类型的编程语言,可在Java虚拟机上运行,可编译为Java源代码。
由俄罗斯软件开发公司JetBrains创建,Kotlin正在Pinterest,Evernote,Uber和Coursera上使用。
Github上Star:16.6k
Clojure于2009年推出,是Lisp编程语言的一种方言。它是一种强调函数式编程的通用语言。它将代码视为数据,并具有宏系统,如其他“Lisps”。
它被成功应用到沃尔玛、Puppet实验室和各大软件公司。
Github上Star:6.5k
Haskell将自己称为“高级纯函数式编程语言”,1990年发布了第一个版本。它具有类型推理系统,主要在学术界内使用,但有一些行业应用案例,例如ATT,BAE Systems,Facebook甚至Google的项目。
2016年,开始编制2020版本。
Github上Star:681
R提供用于统计计算的开源软件环境。
首先出现在1993年,R在数据驱动的职业之中,例如数据挖掘、统计学家甚至学者,受到了越来越多的欢迎。它提供了一个简单有效的方式来分析数据,尽管它不能与像Hadoop这样的大型架构相竞争。
普通程序员目前对R语言的接受程度一般,随着大数据以及人工智能的发展,R语言未来的发展前景还是很不错的。
Github上Star:240