使用 F# 开发 iOS 和 Android 原生应用

  • Sergio De Simone
  • 孙浩

2014 年 8 月 20 日

话题:函数式编程AndroidiOS语言 & 开发架构

Xamarin 4.8 开始,F# 已经可以通过使用 Xamarin 支持 iOS 和 Android 原生编程了,并且可以有效地在两个平台上创建原生应用。让我们看看一些经验报告。

Rachel ReeseFirefly Logic的高级软件工程师,最近在Nashville .NET 用户小组会上做了一个演讲,展示了如何完全用 F# 语言写出绝对原生并且跨平台的移动应用程序。Rachel 还将 F# 和 Apple 的新 Swift 语言做了有趣的特性对比。在 Rachel 看来,很多 F# 语言的特性,像识别联合、模式匹配、自定义运算符、可选择类型、REPL,这些在Swift中都可以找到,从语言层面讲 Apple 为 iOS 和 OS X 开发的新语言还是缺少了一些重要的在 F# 语言上拥有的特性,如类型提供者、类型推断、同步和异步支持等等。她评论到:

随着每个新 Xamarin Studio 版本的发布,其手机相关模块在程序编程方面会做的越来越好。

Faisal Waris 是 iOS 和 Android 咨询顾问,最近总结了他使用 F# 语言为 Android 开发的一个复杂 app 的经验。Faisal 的 app 有 6000 多行代码,还有一个包含自定义控件的复杂 UI,另外还有复杂的后台处理。他说:

Xamarin 对 F# 语言的支持现在非常好,我很乐意推荐它用来开发产品。当我开始使用的 Xamarin 的时候,它对 F# 语言的支持还处于测试阶段,我也遇到了很多问题。可是,Xamarin 团队的响应非常积极,并且很快就能将插件开发到稳定、好用的地步……要代替这 6K 行代码,等效的 Java 代码将在 50K LOC 范围并且会相当复杂。我认为 F# 语言是移动计算机处理技术中一种极好的语言。

Faisal 同时也是VL的作者,VL 是 F# 语言中一种 DSL 工具,它允许在 iOS 控件的布局上指定自动布局约束。Faisal 说,由于 VL 自动布局约束使用强类型方式指定,所以它允许在早期捕获一些布局问题。VL 使用了F# 的 Algebraic 数据类型、匹配模式和操作符重载,同时也提供了一个展示 F# 灵活性和表现力的很好的例子。

软件工程师 Neil Danson 在最近的一次F#unctional 伦敦聚会上做了一个很好的关于用 F# 语言开发 iOS app 的介绍。Neil 说,F# 快速,因为它编译成原生代码,同时 F# 也具有完整性,提供所有可用的 API。不过它没有 Objective-C 速度快并且 F# app 要更慢的启动时间,Neil 补充道。Neil 还提到,F# 特别适合移动应用开发,是因为它的异步行为允许方便的利用非阻塞 I/O 和多核 CPU,以及它的跨平台的可移植性。在他的 BitBucket 账号上,可以下载他为 iOS 和 Android 平台完整实现的两个游戏应用PacmanPissed off owls.

F# 是一种使用类型推断以及支持命令式和面向对象范式的强类型函数语言。F# 由包括 Microsoft 和开放贡献者在内的F# 软件基金会开发。F# 软件基金会也提供了开源、跨平台的 F# 编译器。

为 iOS 和 Android 平台开发 F# app,可以使用Windows 平台的 Visual F# 工具,或者Mac 平台 F# 工具,或者Xamarin Studio

查看英文原文:http://www.infoq.com/news/2014/07/fsharp-native-moible-development


感谢张龙对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

函数式编程AndroidiOS语言 & 开发架构