【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

用 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:002329
用户头像

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

关注

评论

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

Java 泛型通配符详解

编程江湖

JAVA开发 java编程

iOS开发:dSYM文件分析

三掌柜

28天写作 28 12月日更 12月

实用机器学习笔记十五:卷积神经网络

打工人!

深度学习 算法 学习笔记 卷积神经网络 12月日更

从0开始学VUE - 踩坑记录

恒生LIGHT云社区

JavaScript Vue 前端

面向WEB开发的Docker(三):安装Docker

devpoint

Docker 12月日更

给弟弟的信第14封|人到年纪,自己就是屋檐

大菠萝

28天写作

高性能云网关,打通云内外业务互通的任督二脉

华为云开发者联盟

网关 云平台 华为云Stack 云网关 L2BR/L3G

结构化思维 - 感悟

搬砖的周狮傅

感悟 结构化思维

架构实战营第二周作业

Jude

「架构实战营」

io_uring vs epoll ,谁在网络编程领域更胜一筹?

OpenAnolis小助手

网络编程

尚硅谷微信支付实战教程发布!

@零度

微信支付

红颜更胜儿郎 | 尚硅谷微信支付实战教程发布

编程江湖

前端教程 微信支付开发

云服务器ECS年终特惠,老用户新购优惠低至4折

阿里云弹性计算

云服务器 年终特惠

一文带你从零认识什么是XLA

华为云开发者联盟

深度学习 tensorflow PyTorch 深度学习编译器 XLA

Java并发编程实战系列(15)-原子遍历与非阻塞同步机制

JavaEdge

12月日更

常见序列化算法学习笔记二

风翱

序列化 12月日更

React进阶(六):组件生命周期

No Silver Bullet

React 生命周期管理 12月日更

0 基础实现简单的Kotlin ListView

阿策小和尚

28天写作 Android 小菜鸟 12月日更

Go 语言快速入门指南:第六篇 与数据为舞之映射

宇宙之一粟

哈希表 字典 映射 签约计划第二季 12月日更

让数据大白于天下:GCC插件实现代码分析和安全审计

华为云开发者联盟

数据结构 安全审计 GCC 代码分析 安全分析

通过淘宝数据学习爬虫,python scrapy requests与response对象

梦想橡皮擦

12月日更

常用邮箱申请渠道【小程序专题2】

坚果

小程序 28天写作 12月日更 邮箱

【LeetCode】把二叉搜索树转换为累加树Java题解

Albert

算法 LeetCode 12月日更

带你了解几种二进制代码相似度比较技术

华为云开发者联盟

二进制 源代码 二进制代码 二进制代码比较 安全审计

一本用户体验时代的产品生存指南!

博文视点Broadview

以 Kubernetes 的方式来安装运行极狐GitLab Runner

极狐GitLab

Kubernetes runner 极狐GitLab

Linux学习教程从入门到精通:条件判断和流程控制语句If

侠盗安全

Linux 运维 运维工程师 云计算架构师

Prometheus Exporter (二十八)RabbitMQ Exporter

耳东@Erdong

RabbitMQ Prometheus 28天写作 exporter 12月日更

Android技术分享| 【自习室】自定义View代替通知动画(完)

anyRTC开发者

android 音视频 WebRTC 视频通话 自定义view

中科柏诚本地生活赋能金融机构应对内卷危机

联营汇聚

医疗的客户体验

张老蔫

28天写作

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