保存成功
保存失败,请重试
提交成功

Elm:程序员的第一门函数式编程语言

作者/分享人:shuhari
十年以上开发经验,从事过银行、教育、物流、电商等多个行业,主要工作是基于 C++/C# 的后台开发和项目管理。业余时间爱好研究 Python 、客户端开发与开源。

可能大部分朋友和我一样,都是从主流的命令式语言进入编程这个世界的。与此同时,我们多少应该听说过另外一个传说中的神奇世界,叫做“函数式编程”,据说那里的代码简洁优雅、容易扩展,并且轻而易举地解决了并发的难题。但是,如果真的鼓起勇气去学习经典的函数式语言,比如 Lisp 或者 Haskell 的话,多半会因为难以理解它们怪异的语法和思维范式而打退堂鼓。可能更现实的障碍是,这些语言所采用的例子大多是一些宛如智力游戏般的数学问题,缺乏对普通人友好的实际应用案例,一般程序员需要跨越极大的思维藩篱才能够将它们应用到日常工作中,这就给它们的普及带来了诸多困难。

在所有函数式编程语言中,Elm 可能是最为平易近人的,这是因为它设计之初就以前端开发为目标。按照作者的说法,目前的前端编程复杂得让人失望,而他希望用函数式编程的方法来解决这个问题。对于有经验的前端开发者,可能在其他语言和框架中看到过类似的解决思路,比如 Virtual DOM、不可变数据以及声明式编程等等,但 Elm 把这些概念直接内置于语言之中,比起基于第三方框架的解决方案要来得更加简洁、一致且清晰。实际上,Redux 框架的设计就直接受到了 Elm 的影响。

对于普通程序员来说,尽管仍然需要适应函数式编程带来的特殊思维与语法,但只要掌握少数几个核心概念,我们很快就可以用 Elm 来生成可以浏览与展示的网页,然后在此基础上进一步添加更多互动式的内容。这种快速的反馈循环对于学习者来说是一个巨大的激励,也是 Elm 比较其他函数式编程语言更为友好的重要原因。因此,如果朋友们不满足于用 Java/JavaScript 这些主流语言中“附带”提供的函数式功能,而是希望进一步体验更加纯粹的函数式编程的话,那么 Elm 就是一个非常好的选择。同时,Elm 所提供的 Model-View-Update 范式为传统的前端开发者提供了一个全新的视角,可以说,当你掌握该范式之后,会深刻地影响你对整个前端开发的看法。

本文的写作主要有两个目的:

  1. 向还不熟悉 Elm 的开发者提供一个较为全面的语言预览,以了解该语言的特点和主要面貌,并展示如何将它应用于实际的前端开发;
  2. 概述关于该语言的一些常见的兼容性问题,以及对应的解决办法。
会员免费订阅
已有55人预订
预订达标
文章出炉
     
12月16日
12月23日
预订后,您将在12月23日之前获得一篇专享文章
请务必添加GitChat服务号以查看活动进度及获取活动通知。
退款保证:
• 12月16日前,预订人数未达标,您将获得全额退款。
• 作者未按时完成文章,您将获得全额退款。
你可能还喜欢
如何判断一家公司是否靠谱
张亮
程序员的数学修养
李烨
三年 Vue 前端开发的血与泪总结
程序员骚俊
Linux 系统必知必会
Peter
实战解决高并发数据入库 Redis 队列缓存+MySQL 批量入库(Spring Boot)
微服务实战生产
调用链监控:微服务时代每个程序员必须点亮的技能点
编码
一篇文章吃透设计模式 7 大原则
luke
一篇 Chat 带你快速学会 Java 项目管理工具:Maven
Color
分布式系统搭建实战(上)
潇潇雨幕
Spring Cloud Alibaba 微服务实战
菠萝炒辣条
精通 MyBatis 系列之应用分析和最佳实践
TopJavaer
MongoDB 数据同步到 Elasticsearch 实战分享
大河
MacOS 终端 iTerm2 内功心法
古拉里
Go 语言从零基础到开发 API 接口
laixhe
Java Bean 映射转换方案及性能对比
菠萝炒辣条
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!
入群与作者交流×
扫码后回复关键字 入群
Chat·作者交流群
入群码
该二维码永久有效