2017年,我开始了解有关功能编程宇宙的更多信息。这种范式正在获得吸引力,而大多数面向对象的编程语言正在添加越来越多的功能,该功能受此范式启发,包括我使用的语言最多的语言:Java。
在2014年3月发行JDK 8之后,使用诸如函数编程, streams ,可选, map > MAP em>,平面地图等。但是,我周围的许多人仍然忽略了这些新功能,我承认,我花了一段时间才收养它们。这些想法听起来很有趣,但是将它们付诸实践比我预期的要困难。
经过大量反复试验,我决定深入研究这些概念。这本书Functional Thinking帮助我朝着正确的方向迈出了第一步。
在并行的情况下,我决定学习一种功能优先的编程语言,而不是试图以面向对象的语言部分应用功能范式。经过大量研究后,我选择学习Elm。这是一种纯粹且不可变的功能语言的事实引起了我的注意。另外,它专注于 webapps 开发,直到那时,我还没有找到任何我喜欢的网页的解决方案。
经历了整个Introductory Guide to the Elm Language并阅读了Elm in Action书后,我已经在此范式中感到非常自在地开发 webapps 。我非常喜欢榆树,以至于我开始了一个项目,以使用这种语言向初学者教授编程,并在网站elm.dev.br(在巴西葡萄牙语中)提供了第一类。
但是我仍然必须面对一个严重的问题:榆树是一种专为 webapps开发而设计的语言 效果很好,但是我一直在寻找一种通用解决方案,可以也可以在后端开发中使用。所以我再次开始寻找另一种语言。
ELM是一种受Haskell启发的静态打字语言。自然的步骤是在 frontend 上使用榆树和后端上的haskell。这就是我试图做的。我很难读到 学习了您的haskell,这是一个很好的好!但是,使用Haskell创建一个完整的后端被证明超出了我的咀嚼能力。所以我决定寻找替代方案...
在整个过程中,Lisp一词不断弹出我的脑海!我会不时会遇到一个在社区中有影响力的人谈论它的视频(例如this video或this twit by John Carmack, id Software的创始人)。感觉很神秘。 Nubank adopted Clojure带来了一个非常真实且务实的案例研究,该案例研究在巴西在这里使用LISP方言。
直到那时,我一直在研究它,因为我优先考虑静态打字的语言,而LISP最著名的方言是动态语言。但是在2021年初,我终于决定给它一个机会。我选择了Clojure语言,并开始阅读Getting Clojure书。与我的Haskell研究不同,我在短短几天内就读了这本书!同时,我开始在Alura(巴西受欢迎的在线编程学校)上Clojure课程,这帮助我看到了如何动手使用此语言。这是一个很好的组合:在书中,我更深入地了解了语言的概念,在课程中,我回顾了这些概念并学习了更实际的部分。
Clojure的主要功能
LISP不是一种编程语言,而是一种具有许多方言的语言家族。最著名的方言包括Common Lisp,Clojure,Scheme和Racket。因此,在决定要学习LISP之后,我必须选择其中一种方言。
Clojure对我脱颖而出,有两个原因:
- 它使用Java虚拟机,启用与Java应用程序的互操作性(正如我在文章开头所说的那样,是我通常在 Backend 中使用的语言)。)。
- 它主要使用功能范式。某些LISP方言(例如普通LISP)是多力量,但由于我的目的是更深入地进入功能编程的宇宙,因此采用 functional first first first 的方言是有意义的。 。
Clojure编程的经验非常解放。练习TDD与REPL Driven Development(在Clojure社区内相当普遍)的TDD练习,使反馈循环非常快。 Clojure是一种动态语言,这一事实也为此做出了贡献。
Clojure的另一个特征是它是一种不纯的语言,也就是说,我们可以随时都具有副作用。这样做的主要优点是它使语言更容易学习(尽管它带来了许多其他问题,这些问题不会以纯语言或haskell进行更纯净的语言)。
,尽管它是一种不纯正的语言,但它鼓励一系列良好的实践大大减少了这种方法的潜在问题。
开始使用Clojure
Clojure起初可能会令人生畏,但是几个小时后,您习惯了它的语法,实际上很容易学习。这就是为什么我还选择这种语言与其他开发人员分享功能编程的基本基础。
如果您的书是您的事,我建议您从Getting Clojure开始,正如我之前所说,这是了解Clojure背后的基本原理的好方法。但是,如果您正在寻找免费选项,则可以从Clojure for Brave and True书的在线版本开始。另一种选择更专注于范式的基础,并介绍了语言 - 除了Clojure之外,这本书是Functional Thinking的书,尼尔·福特(Neal Ford)。
我创建了一个带有可选付款的10 hours course on Introduction to Functional Programming with Clojure(是的,您可以免费注册!)。但是现在,它只有我的母语:巴西葡萄牙语。 ð
您,您最喜欢的范式是什么?您是否尝试使用功能范式编程?您的主要困难是什么?在评论中分享您的经验!
您喜欢这个文字吗?请查看我的其他文章:https://segunda.tech/tags/english,然后在twitter上关注我。