写点什么

用 Elm 语言降低失败的风险

  • 2015-10-08
  • 本文字数:812 字

    阅读完需:约 3 分钟

Strange Loop 2015 有一个亲自体验环节,在一次实践活动中,Richard Feldman 讲述了他的团队使用 Elm 语言的经历,他们的项目在使用这门语言后失败的风险大幅降低,迭代的速度也有所提升。

世界各地的 JavaScript 开发者可能都遇到过undefined is not a function这个错误。Feldman 藉由这个痛点来告诉人们 Elm 是一门可以提升开发者开发体验的语言,Elm 编译器会捕捉令原生 JavaScript 开发者苦恼的所有错误。据 Feldman 说,在 Elm 应用中,“编译后的应用会运行在一个 try 代码段中,不会回退或抛出运行时异常”。

我对与 Elm 所带来的良好的用户体验感到好奇,后来我发现,正是 Elm 那无微不至的完美细节让你每天的编码人生都无比快乐。

对于很多不熟悉 Elm 的人来说,它就是一门由 Evan Czaplicki 创建的函数式编程语言,它的设计初衷是简化构建 web UI 的过程。Elm 最终会被编译为 JavaScript,它与 React 一样使用虚拟 DOM 来操作界面。 Elm 博客上的测试基准(benchmark)指出,它出奇地竟然比 React 还快!

最简单的 Elm 代码看起来是这样的:

复制代码
import Html exposing (span, text)
import Html.Attributes exposing (class)
main =
span [class "welcome-message"] [text "Hello, World!"]

“Elm 里的一切皆由二者组成:不可变数据和无状态函数,”Feldman 说。这种设计的函数性纯度(函数没有副作用)理论上很好,但是 web 开发者经常不得不与许多其它系统进行交互,而 Elm 中的“ Task (任务)”特性就用来解决这类问题。Feldman 告诉我们 task 可以理解为“你想做的事情的数据表示,它实际上也是一连串的指令”。

Elm 可以与使用“ ports ”的 JavaScript 库进行交互,所以开发者可以用 Elm 代码替换应用的某些构件,然后用 port 将二者联结在一起。

Feldman 的演讲视频可以在 Youtube 上观看,其它环节可以在视频列表中观看。另外你可以阅读Feldman 写的一篇教程文章《用Elm 来构建一个注册页面》。

查看英文原文 Reduce the Risk of Failure With Elm

2015-10-08 19:002438
用户头像

发布了 63 篇内容, 共 133.2 次阅读, 收获喜欢 38 次。

关注

评论

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

架构训练营第10期模块四作业

Geek_4db2d5

【Redis实战专题】「性能监控系列」全方位探索Redis的性能监控以及优化指南

洛神灬殇

redis监控 Redis优化 redis性能

兼容东西,贯通南北:超聚变的“四水归堂”

脑极体

科技 算力 超聚变

GEAR框架: Tractian的敏捷工程文化

俞凡

敏捷 大厂实践

SAP 交货单与HU指派关系数据不一致问题的解决方案

SAP虾客

SAP 公司间STO 外向交货单 HU DEBUG改表

David Murray 加入 VeraViews 担任需求总监

鳄鱼视界

一个比一个牛皮的5个杨辉三角特性!

风铃架构日知录

Java 程序员 算法 IT 杨辉三角

Alluxio 2022技术干货年终大赏

Alluxio

大数据 分布式 案例 Alluxio 数据编排

详解ThreadLocal

threedayman

模块九-设计电商秒杀系统

李某人

架构训练营

小兔子在终端给大家拜年啦

陈明勇

Go golang 后端

如何破越发展 to B 市场亏损越多问题?

风铃架构日知录

互联网 程序人生 后端 IT tob产品

【架构设计】你真的理解软件设计中的SOLID原则吗?

JAVA旭阳

Java 架构

Pytorch 基础-tensor 数据结构

嵌入式视觉

Tensor ndarray 张量的基本操作 view函数 reshape

天翼云第八代云主机助力企业攻克上云“大象流”加密处理业务难题

Geek_2d6073

模块9毕业设计项目

冷夫冲

架构设计实战

总结一下经典机器学习算法

风铃架构日知录

Java 程序人生 算法 后端 IT

【架构设计】你真的理解软件设计中的SOLID原则吗?

小小怪下士

Java 程序员 架构设计

第四周作业-千万级学生系统课程存储设计

不爱学习的程序猿

非常实用的代码阅读策略!

风铃架构日知录

Java 程序员 后端 IT 代码

photozoompro2023下载激活教程

茶色酒

PhotoZoom photozoompro

Tapdata 杨庆麟:实时数据如何赋能制造业,实现业务卓越与持续发展?

tapdata

系统风险处置

agnostic

风险系统 业务风险 操作风险

2023-01-13:joxit/docker-registry-ui是registry的web界面工具之一。请问部署在k3s中,yaml如何写?

福大大架构师每日一题

k8s k3s 福大大

设计千万级学生管理系统的考试试卷存储方案 - 模块四

Geek_e5f2e5

【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

No8g攻城狮

java; 开发语言 语言 & 开发 Java’

Tapdata Cloud 场景通关系列:将数据导入阿里云 Tablestore,获得毫秒级在线查询和检索能力

tapdata

读懂深度学习,走进“深度学习+”阶段

白洞计划

【Java基础】Java8 使用 stream().sorted()对List集合进行排序

No8g攻城狮

java; 开发语言 语言 & 开发 Java’

WEB开发人员应该知道 10 个 Docker 命令

devpoint

Docker 前端开发 docker image Docker 镜像

tinyrpc源码阅读

骑牛上青山

golang 源码 RPC

用Elm语言降低失败的风险_JavaScript_David Iffland_InfoQ精选文章