找回密码
 FreeOZ用户注册
查看: 3775|回复: 51
打印 上一主题 下一主题

[学习深造] 苹果推新编程语言Swift 替代Objective C

[复制链接]
跳转到指定楼层
1#
发表于 3-6-2014 14:02:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
本帖最后由 Jay@AU 于 3-6-2014 13:27 编辑

Apple designed Swift to be as intuitive and easy to use as popular interpreted languages such as Python and JavaScript, while maintaining the speed and flexibility of compiled languages such as C++

苹果的东西好用,但是开发起来不方便,显得笨拙。  新语言出来可能将改变这一现状。 粗略了解了一下,看上去顺眼多了

评分

参与人数 2威望 +100 收起 理由
大尾巴甩甩 + 50 谢谢分享!
ubuntuhk + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

2#
发表于 3-6-2014 14:05:12 | 只看该作者
嗯,Apple早该跟上这一节奏了。
回复  

使用道具 举报

3#
发表于 3-6-2014 14:48:17 | 只看该作者
哇,这会不会催生出新的领域和工作机会
回复  

使用道具 举报

4#
发表于 3-6-2014 14:49:36 | 只看该作者
Objective C is really ugly..
回复  

使用道具 举报

5#
发表于 3-6-2014 14:56:03 | 只看该作者
比objectC好看多了... 但还是很丑
回复  

使用道具 举报

6#
发表于 3-6-2014 15:00:00 | 只看该作者
I would love it.
回复  

使用道具 举报

7#
发表于 3-6-2014 15:00:55 | 只看该作者
OBJ-C确实 ugly
回复  

使用道具 举报

8#
发表于 3-6-2014 15:06:50 | 只看该作者
回复  

使用道具 举报

9#
发表于 3-6-2014 15:17:46 | 只看该作者
trisun 发表于 3-6-2014 14:06
swift看起来还不错,好看多了,和Scala,Perl 比较像了。

比objectC好多了,但我还是不喜欢里面一些匪夷所思的地方。比如这个:
func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides."
    }

定义变量类型的时候用的是: let a:String = "test", 而定义函数类型的时候用奇葩的“->”! 我实在不明白这么设计的逻辑是什么。
回复  

使用道具 举报

10#
发表于 3-6-2014 15:26:41 | 只看该作者
本帖最后由 trisun 于 3-6-2014 12:30 编辑
woodheadz 发表于 3-6-2014 12:17
比objectC好多了,但我还是不喜欢里面一些匪夷所思的地方。比如这个:
func simpleDescription() -> St ...


->   lamda expression
回复  

使用道具 举报

11#
 楼主| 发表于 3-6-2014 15:27:09 | 只看该作者
woodheadz 发表于 3-6-2014 14:17
比objectC好多了,但我还是不喜欢里面一些匪夷所思的地方。比如这个:
func simpleDescription() -> St ...

let 定义常量。 var 跟javascript 一样。

估计适应就好了。 比较objc,是从笨拙走向轻巧
回复  

使用道具 举报

12#
发表于 3-6-2014 15:33:02 | 只看该作者
trisun 发表于 3-6-2014 14:26
->   lamba expression


那是不一样的。
swift这个存粹是拿来指定函数返回值类型的,我觉得根据它的变量定义方式 “let a:String=...", 这个地方理所当然应该用 ":" 而不是奇葩的”->"。 "->"怎么看都无法和定义返回值类型关联起来。

而lambda expression里的"=>"可以视为匿名函数的快捷写法,算是个语法糖。写起来很自然。

swift设计者还是不能和anders这样的大师比。
回复  

使用道具 举报

13#
发表于 3-6-2014 15:41:36 | 只看该作者
woodheadz 发表于 3-6-2014 12:33
那是不一样的。
swift这个存粹是拿来指定函数返回值类型的,我觉得根据它的变量定义方式 “let a:Stri ...

习惯了就好, HasKell的语法开始看起来也比较怪:

addVectors :: (Num a) => (a, a) -> (a, a) -> (a, a)  
回复  

使用道具 举报

14#
发表于 3-6-2014 15:45:32 | 只看该作者
woodheadz 发表于 3-6-2014 14:17
比objectC好多了,但我还是不喜欢里面一些匪夷所思的地方。比如这个:
func simpleDescription() -> St ...

难道是为了支持函数式编程?
回复  

使用道具 举报

15#
发表于 3-6-2014 15:45:45 | 只看该作者
trisun 发表于 3-6-2014 14:41
习惯了就好, HasKell的语法开始看起来也比较怪:

addVectors :: (Num a) => (a, a) -> (a, a) -> (a, ...

是,这些都不是很大的问题,习惯了也没啥。毕竟比起objectC来,swift已经算是很漂亮了。

我只是觉得苹果在编程语言上的审美水平和他们在ID设计,UI设计方面的审美水平差距实在太大了点。

评分

参与人数 1威望 +20 收起 理由
simpledream + 20 你太有才了!

查看全部评分

回复  

使用道具 举报

16#
发表于 3-6-2014 19:20:02 | 只看该作者
Jay@Au 发表于 3-6-2014 14:27
let 定义常量。 var 跟javascript 一样。

估计适应就好了。 比较objc,是从笨拙走向轻巧

泥马follow 一下var 也没人说你苹果弱,造名词干嘛泥
回复  

使用道具 举报

17#
发表于 3-6-2014 19:22:04 | 只看该作者
trisun 发表于 3-6-2014 14:41
习惯了就好, HasKell的语法开始看起来也比较怪:

addVectors :: (Num a) => (a, a) -> (a, a) -> (a, ...

人家玩arrow那是直接一一映射到数学定义上,不完全是为了语法而语法
回复  

使用道具 举报

18#
发表于 3-6-2014 20:28:39 | 只看该作者
woodheadz 发表于 3-6-2014 14:33
那是不一样的。
swift这个存粹是拿来指定函数返回值类型的,我觉得根据它的变量定义方式 “let a:Stri ...

你说的是这个吧:
var mathFunction: (Int, Int) -> Int = addTwoInts

它的->是指函数的返回值的类型,不是整个函数的类型。

总体来说,这个swift看起来还是不错的。近来很多新的语言特点都有了。
还有那个playground也是比较先进的编程概念。不错。
回复  

使用道具 举报

19#
发表于 3-6-2014 21:47:59 | 只看该作者
是挺不错的
回复  

使用道具 举报

20#
发表于 3-6-2014 22:04:03 | 只看该作者
woodheadz 发表于 3-6-2014 14:45
是,这些都不是很大的问题,习惯了也没啥。毕竟比起objectC来,swift已经算是很漂亮了。

我只是觉得苹 ...


可能主要是因为Jobs不会编程,否则不得给他骂死。。。

评分

参与人数 2威望 +70 收起 理由
simpledream + 20 我很赞同!
woodheadz + 50 我很赞同!

查看全部评分

回复  

使用道具 举报

21#
发表于 3-6-2014 22:08:24 | 只看该作者
cais 发表于 3-6-2014 19:28
你说的是这个吧:

它的->是指函数的返回值的类型,不是整个函数的类型。

当然,我说的就是返回值类型。

以下面这个函数为例:
  1. func sayHello(personName: String) -> String {
  2.     let greeting = "Hello, " + personName + "!"
  3.     return greeting
  4. }
复制代码
如果设计为这样:
  1. func sayHello(personName: String): String {
  2.     let greeting = "Hello, " + personName + "!"
  3.     return greeting
  4. }
复制代码
是不是会更自然? 而且这样也和定义变量类型的方式(见下)统一。
  1. var welcomeMessage: String
复制代码
回复  

使用道具 举报

22#
发表于 4-6-2014 00:03:56 | 只看该作者
woodheadz 发表于 3-6-2014 21:08
当然,我说的就是返回值类型。

以下面这个函数为例:如果设计为这样:是不是会更自然? 而且这样也和定 ...

这样自然跟scala接近了
arrow在范畴学里标示函数,设计上必须是学院派出身,本身没问题,就是稍显死板
回复  

使用道具 举报

23#
发表于 4-6-2014 00:46:39 | 只看该作者
woodheadz 发表于 3-6-2014 21:08
当然,我说的就是返回值类型。

以下面这个函数为例:如果设计为这样:是不是会更自然? 而且这样也和定 ...

如果是用: 来表示返回值类型的话,那函数类型的变量怎么样表示呢?是下面这样吗?
  1. var sayHello : (String): String
复制代码
回复  

使用道具 举报

24#
发表于 4-6-2014 00:51:03 | 只看该作者
iforget 发表于 3-6-2014 23:03
这样自然跟scala接近了
arrow在范畴学里标示函数,设计上必须是学院派出身,本身没问题,就是稍显死板

scala 用=>,swift用->,看起来都差不多啦。
回复  

使用道具 举报

25#
发表于 4-6-2014 01:13:30 | 只看该作者
cais 发表于 3-6-2014 23:46
如果是用: 来表示返回值类型的话,那函数类型的变量怎么样表示呢?是下面这样吗?

类型的声明和变量定义本来就不该放在一起。 你这个例子可以分为两行代码,第一行声明函数类型(函数签名),第二行用这个类型定义变量。
为了能够在声明函数类型的同时定义变量,而采取箭头这种不自然并且缺乏一致性的设计,这在我看来未免有捡了芝麻丢了西瓜之嫌。
回复  

使用道具 举报

26#
发表于 4-6-2014 04:31:50 | 只看该作者
Good. Apple终于开窍了
回复  

使用道具 举报

27#
发表于 4-6-2014 13:55:04 | 只看该作者
问一下,是否该编程语言已经推出?是要下载新的xcode吗?
回复  

使用道具 举报

28#
 楼主| 发表于 4-6-2014 14:15:09 来自手机 | 只看该作者
DDD888 发表于 4-6-2014 12:55
问一下,是否该编程语言已经推出?是要下载新的xcode吗?

beta版本,不过dev member才能下,交99刀那种
回复  

使用道具 举报

29#
发表于 4-6-2014 14:35:40 | 只看该作者
大家打算什么时候换?
回复  

使用道具 举报

30#
发表于 4-6-2014 15:13:14 | 只看该作者
Jay@Au 发表于 4-6-2014 13:15
beta版本,不过dev member才能下,交99刀那种

那不错,我应该可以下啦
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 13-11-2024 12:50 , Processed in 0.075656 second(s), 50 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表