写点什么

OCaml 已经做好 iOS 开发准备

  • 2016-01-31
  • 本文字数:1383 字

    阅读完需:约 5 分钟

近日,来自旧金山的程序员 Edgar Aroutiounian 为 OCamliOS( Jeffrey A. Scofield 不久前推出的一个面向 iOS 的 OCamml 交叉编译器创建了一个程序包。InfoQ 就此对他进行了采访。

Scofield解释说,许多年来,他一直维护着一系列针对OCaml 编译器的补丁。近日,在Gerd Stolpmann 的帮助下,这些补丁进入了 OCaml 官方 GitHub 库的一个分支。按照 Scofield 的说法,在某个时候,该分支应该合并到 OCaml 正式版本中。

基于 Scofield 和 Stolpmann 的工作,Aroutiounian 将 OCamliOS 封装成一个 OPAM 程序包,使开发人员更容易安装它。他提供了一个简单的例子,展示如何将OCmal 代码集成到iOS Objective-C 应用里。下面的OCaml 代码片段将注册一个回调函数,并稍后从Objective-C 调用:

复制代码
let make_string () =
print_endline "Hello Word from OCaml";
"Hello World "
let () =
Callback.register "make_string" make_string
复制代码
#define CAML_NAME_SPACE
#import <foundation foundation.h="">
#include <caml callback.h="">
#include <caml mlvalues.h="">
int main (int argc, char **argv)
{
caml_startup(argv);
caml_callback(*caml_named_value("make_string"), Val_unit);
NSLog(@"Now using objective-c code");
return 0;
}</caml></caml></foundation>

OCaml 代码可以编译成一个独立的 iOS 可执行文件(不适合创建通过应用商店发布的应用)或者一个 C 静态库。目前,唯一可以在 OCaml 中使用的程序包是它的标准库。将来会增加对其他程序包的支持。

为了了解更多有关 opam-ios 和 OCaml for iOS 的信息,InfoQ 采访了 Aroutiounian。

opam-ios 究竟带来了什么?

它为程序员带来了方便。OPAM 是一个高级的 OCaml 包管理器。我想让 iOS OCaml 编译器成为 OCaml 世界的一等公民。

使用 opam-ios 能够为 iOS 应用开发带来什么好处?按照您的设想,通过 opam-ios 使用 OCaml 的 iOS 应用是个什么样子?

好处是,OCaml 是一种真正的函数式编程语言,从创建之初就遵循这一理念。它非常灵活,需要的话,可以使用 C 调用 Objective-C,实现某些已有代码的重用,例如 GUI 代码。按照我的设想,使用 OCaml 实现业务逻辑,Objective-C 仅用于 GUI 展示,虽然 OCaml 也支持面向对象编程,而我也可以将 Objective-C 对象封装成 OCmal 对象。

可以认为 OCaml 对 iOS 的支持已经成熟了吗?您接下来计划增加什么特性?

我并没有做为这个 iOS 编译器编写补丁这种艰苦的工作。基本情况是,苹果使用了一个老版本的 ARM 汇编编译器,从根本上讲,还是一个派生版本。因此,与 Linux 汇编编译器生成的 ARM 程序相比,他们的 ARM 汇编程序略有不同。所以,Gerd Stolpmann 及来自 Psellos.com 的朋友们才是真正的英雄,是他们提供的编译器和补丁让它可以投入使用并具备了重现性。所以现在,这还是该编译器的一个补丁版本,但很快它将正式成为该编译器的一部分。

所以,我接下来准备增加的特性是为每个版本创建更多的程序包。例如,现在仅能支持到 iOS SDK 8.3,但我可以增加更多的编译器,比如说,支持到 SDK 9.2。Jeff 在 Psellos 已经完成了令人惊叹的工作。他刚刚又有新的发布,这次是 OCaml 4.02.3,那是最新最棒的版本,适用于 iOS SDK 9.2。基本上是最先进的。

OCamliOS 运行在 OS X 10.11 上,生成 iOS 7.0+ 代码。Opam-ios 可以从 OCaml 包管理器 OPAM 安装。

查看英文原文: OCaml Now Ready for iOS Development

2016-01-31 18:002917
用户头像

发布了 1008 篇内容, 共 392.0 次阅读, 收获喜欢 344 次。

关注

评论

发布
暂无评论
发现更多内容

摊牌了!哈利波特的“隐形斗篷”就是我想要的

百度开发者中心

人工智能 AI 最佳实践 行业资讯

深耕基础软件,华为开源加速“新全球化

科技热闻

超级人脉:让巴菲特老爷子告诉你圈子的重要性

非著名程序员

人脉 认知提升 思维 8月日更

Hadoop安装与常用操作命令

Mike

MySQL 系列教程之(五)DDL 操作:建库建表

若尘

MySQL 数据库 8月日更

面向对象的原则是普遍适用么?

escray

学习 极客时间 如何落地业务建模 8月日更

一个小而美的 Swift 框架:Then

fuyoufang

swift iOS Developer 8月日更

交易所市值管理机器人开发

Geek_23f0c3

去中心化交易所系统开发 市值管理机器人系统开发 做市机器人 去中心化市值管理机器人

fil有投资价值吗?投资fil的方式有哪些?

区块链 分布式存储 IPFS fil FIL投资

史上最全Linux可观测最佳实践分享!建议先收藏~

观测云

云计算 Linux

合约量化交易系统开发技术

薇電13242772558

区块链

技术加持、服务先行:北鲲云超算平台助力生命科学领域研究与发展

北鲲云

MySQL安全加固方法分享

Simon

MySQL 数据库 数据安全

借助云网融合优势,某省运营商打造下一个十年增长引擎

BoCloud博云

云管理

架构实战营 毕业总结

Dylan

架构实战营

你的日志打印对了么?

神策技术社区

数据分析 日志

2021,编程语言如何选择?

程序员鱼皮

Java c++ Python JavaScript Go 语言

AOC萌新探索:搭建和体验在线AOC环境

华为云开发者联盟

Python 网络 自动化运维 AOC 网络设备

复旦大学附属中山医院钱琨:健康医疗大数据时代下的智慧医院建设

星环科技

大数据 医疗 数据能力

爬虫遇到反爬机制怎么办? 看看我是如何解决的!

Python研究者

8月日更

sql task01 环境搭建

橙橙橙橙汁丶

区块链交易所搭建,币币交易系统搭建

Vue进阶(三十八):v-for 中 :key 到底有什么用?

No Silver Bullet

Vue key 8月日更

稳了!工业质检蝉联第一

百度大脑

智能制造

Python代码阅读(第10篇):随机打乱列表元素

Felix

Python 编程 Code Programing 阅读代码

堡垒机、防火墙以及跳板机分别是什么?

行云管家

云计算 运维 防火墙 堡垒机 跳板机

走!跟着浪潮云洲去挖矿

云计算

博文干货|5张图带你快速入门 Pulsar 的存储引擎 BookKeeper

Apache Pulsar

pulsar bookKeeper

《程序员修炼之道 - 从小工到专家》吐血解读

博文视点Broadview

如何在FL Studio中对整首歌曲音量进行调整

懒得勤快

数据同步系统重构实践

Qunar技术沙龙

数据库 ES canal 数据同步 Kafk

OCaml已经做好iOS开发准备_移动_Sergio De Simone_InfoQ精选文章