阅读Is a virtual machine for Cocoa programming inevitable?之后,如果替换真的发生了,我想知道你脑海中的 语言是什么,为什么?
语言和API中的可修复投诉包括
- 语法级别缺少元组,切片,映射或关联;
- 缺乏模板编程;
- 缺少名称空间;
- 缺少方法的默认参数;
- 缺少运营商覆盖/超载;
- 垃圾收集器泄漏和过早收集;
- 罗嗦的骆驼编码命名约定;
- 缺乏包管理;
- 缺乏对REST,SOAP,SQL等“业务”API的开箱即用支持。
- 如果存在需要,即使是常用的模拟方括号方法调用语法也可以更改。
P.S。请回答一种语言。
答案 0 :(得分:5)
投诉的有效性如何:
语言和API中的可修复投诉包括
- 语法级别缺少元组,切片,映射或关联;
那又怎样?
- 缺乏模板编程;
这是C ++模板吗?然后使用Objective-C ++。就个人而言,我认为这是一个加分点,我们在Objective-C中没有它们。
- 缺少名称空间;
这个是有效的。我非常喜欢名字空间。
- 缺少方法的默认参数;
这是另一个我很高兴不在Objective-C
的功能
- 缺少运营商覆盖/超载;
这是另一个我很高兴不在Objective-C
的功能
- 垃圾收集器泄漏和过早收集;
所以修复垃圾收集器错误。
- 罗嗦的骆驼编码命名约定;
我喜欢罗嗦的命名约定。它使代码更容易阅读。 OTOH如果你是一个没有注意到这些只是约定的人。编译器不会强制您使用它们。
- 缺乏包管理;
套餐会很好。
- 缺乏对REST,SOAP,SQL等“业务”API的开箱即用支持。
有很多库可用于这些。
- 如果存在需要,即使是常用的模拟方括号方法调用语法也可以更改。
通常被不使用该语言的人嘲笑。当我第一次开始使用C时,我讨厌语法很多,但你已经习惯了。
除了添加名称空间支持外,我认为没有任何理由改变Objective-C的任何内容。这就是我的答案:Objective-C。
答案 1 :(得分:2)
MacRuby,Ruby的一个实现,它使用LLVM编译器并将其所有对象基于Objective-C运行时库(以及正常的Cocoa类,如NSString
,NSArray
)。它与ObjC完全可互操作,因此现有代码可与MacRuby代码集成。实际上,ObjC可以用作系统编程语言,就像JVM和Java类库的部分用C语言编写的那样,而不是Java。
基本上我认为任何替换语言都必须与Objective-C互操作,将面向对象,并且将完全托管对内存的访问。
答案 2 :(得分:0)
Objective-but-not-C,这种语言借用了Objective-C的大量语法和方法,但不再使用直接访问内存模型和原始数组。它将是Apple设计的一种全新语言,具有与Objective-C运行时库的兼容性(可能甚至是二进制兼容性)。
结果将是Objective-C,因为Microsoft托管C ++ .NET是C ++。事实上,如果Apple使用像LLVM这样的虚拟机,就像微软使用.NET CLR一样,那么其他语言,如Ruby,Python等,可以很容易地与“Objective-but-not-C”代码进行互操作。 / p>
答案 3 :(得分:0)
夫特! Swift已经采用了替换Objective C的方法。
这很容易学习,非常OOP,并处理其他语言应该有的很多东西。
一旦你对这种语言有了一种感觉,你就会觉得比你能用的几乎任何其他语言更强大。
垃圾收集是为您处理的,只有在您需要担心它时才会运行异步代码。
除了我非常喜欢的冗长的命名惯例外,几乎所有制作的点都完全或至少部分地在Swift中解决。
我遇到过许多没有看到优势的Objective C开发人员,但就我而言,他们仍然处于旧方面。
最后一点......从我自己的简单数学循环测试中,Swift比python快4倍左右。