2024 年 Clojure 状态调查! 中分享你的想法。

欢迎莅临!请参阅 关于 页面获取更多关于如何使用本站的信息。

0
Meta

我是一名编程新手。我开始学习 C++,甚至一些 Python。
我的背景是经济学。我有强大的数量背景(数学和经济学),并且我知道 STATA。

总的来说,我想使用编程:
(1) 用于经济领域的机器学习/人工智能以及其他如网络爬虫和其他数据驱动分析的工具;
(2) 为此,我打算开发金融科技匹配平台;

特别是,我最近刚刚发现我喜欢编程。我年纪较大(35岁)但还是个新手,但我目标在 40 岁前成为一名全能的程序员...希望到那时我能学好两种语言。

如果那时有工作机会,我可以转行,尽管我还是喜欢我的职业道路。我可以用我的编程技能为自己的工作、创业或成为一名全职程序员。

网络研究让我认为 Clojure 可能是专注于的绝佳语言,因为它们说这是一种快速开发的优秀语言(如果我想用它来创业,我是唯一的开发者),适用于数据驱动(经济学和机器学习),并且为成为一名优秀的程序员提供了路径。

我的担忧是 Clojure 并没有被广泛使用,所以在用较少库制作机器学习项目(与 Python 进行比较)以及就业前景等方面可能存在一些问题...

无论如何,我欢迎任何见解/建议/技巧。

先谢过了,
Baye

4 个答案

+1

如果你想要在 Clojure 中使用 Python 库,可以使用

https://github.com/clj-python/libpython-clj

https://github.com/gigasquid/libpython-clj-examples

来使用 Clojure 中的 Python 库

Clojure 对你的学习要求很高
但是我认为它在务实方面有很多东西可以教授

对很多人来说,这重新带来了编程的乐趣

我会建议早早地安装clj-kondo并真正适应其中
与你的编辑器配合使用,并通过丰富的注释向你的REPL发送表单

没有多少东西能比得上一个快速高效的REPL编辑器
工作流程就像在与你的程序交谈一样

其他语言鼓励你像死鱼一样编辑、编译和发布你的程序

如果你能尝试并了解Clojurians在Slack上的工作流程的话

by
谢谢你们的提示!
+1
by

我认为Clojure作为一门入门语言非常出色。说起来容易,但很难证明 —— Clojure不是我的第一语言,我在学习Clojure之前是知道Java的。

我认为编程总体上有一个相当陡峭的学习曲线,因为从文本文件中的代码到运行时程序的行为之间有一个非常复杂的映射。作为一名软件开发者,你需要在自己的头脑中有一个虚拟机来执行你正在编写的代码。从编写代码到看到执行结果的反馈循环越长,你的心理虚拟机所承受的负担就越大,进步就越困难。其他主流编程语言试图通过类型系统和IDE来解决这一问题,但我觉得它们在这方面做得还不够好,因为

  • 类型系统引入了复杂性,并要求你始终编写关注类型的代码,而不是关注你的问题;
  • 类型系统是基础性的,它们仅检查类型可以表达的内容,因此它们只能帮助防止不正确的组合(例如,它们可以阻止你将字符串与数字相加),但不能帮助你的代码在执行时的行为;

类型系统变得越来越复杂,以帮助你编写正确的代码。你可以看看Idris如何促进基于类型的开发,这有助于编写矩阵转置:[链接]https://youtu.be/mOtKD7ml0NU?t=1607
这里是一个Idris中矩阵转置的类型签名,没有任何实现

transpose : Vect n (Vect m a) -> Vect m (Vect n a)

我欣赏语言能够帮助你完成当你想要转置矩阵时留下的空白,但如果你有一个允许实际实现比这个签名更短的语言会怎么样呢?

(defn transpose [xs] (apply mapv vector xs))

如果你可以立即尝试这段特定的代码并看到它是如何运行的话,会怎么样?

(transpose [[1 2] [3 4]])
=> [[1 3] [2 4]]

最终,我们想要编写的代码能够让计算机按照我们的期望行事。我认为,当你在编写代码时立即看到代码执行结果,这比在同一文件中使用两种语言(一种用于与编译器进行对话的类型签名,另一种用于计算机执行函数调用)来验证行为要更好。更少的噪音,更少的认知负荷,将更多的注意力集中在问题上,更快、更有用的反馈 = 优秀的首选语言,我认为如此 :)

顺便说一句,我可以继续阐述使用映射和泛型函数与类和方法的数据处理,但我现在没有时间。在Clojure中,这更加简单和简洁!

感谢这些建议!
+1
感谢这个链接!
+1

如果您已经对Python中的一些基本编程思想有一定的了解,那么学习Clojure将是你的优势。

我认为在学习任何东西的开始时,重要的是付出少许努力就能收获颇丰,基于这一点,我会尽可能地限制一开始的未知量。

Clojure需要宿主语言才能运行,这实际上是一个极好的特性,因为它可以从巨大的覆盖范围和最丰富的库生态系统中获得益处。然而,对于初学者来说,这意味在您的编程过程中,在某个阶段,您需要学习Java或JavaScript语言学一定的程度。这可能会在初期增加额外的摩擦,因此我的建议是在您对核心语言有一定的信心后再避免这种情况。

Clojure 同样受益于一流的工具,但当您只是想学习和动手时,对于初学者来说,设置它可能有些困难。

要学习这门语言,我认为一个好的开始方式是使用 在线REPL 和这本书: 《勇敢的Clojure》。我会复制粘贴示例代码,并进行操作,以检验你所理解的内容。

当你觉得自己已经对它有了足够的理解,可以进行更多的自我测试时,你可以尝试一个小挑战:Clojurescript Koans

希望到现在你已经有一些理解,并想要编写一些程序。

按照规定的方式,您需要安装Java并按照入门指南进行操作:

https://clojure.org/guides/getting_started

您可以先了解一下“REPL驱动的开发”,并在开发过程中配置一个文本编辑器以获得快速反馈(Clojure的巨大乐趣之一)。

另一种可能的方式是获取 Babashka 二进制文件的副本,这是Clojure(一个庞大的)子集,我之所以提到它,是因为它的安装非常简单,并允许你编写实际的程序而无需进行过多的设置。但话虽如此,如果你想使用一些库,你需要使用JVM Clojure来做到这一点。

关于学习Clojure的资源很多,先从核心语言和REPL开始,然后逐步扩展到你感兴趣的领域:

by
感谢您的时间和宝贵的建议!
...