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

欢迎!请参阅 关于 页面以了解更多有关该平台的信息。

0
Meta

我是编程新手。我开始学习 C++,甚至接触了一些 Python。
我的背景是经济学。我拥有强大的数量经济学背景(数学和经济学)并且熟悉 STATA。

总的来说,我希望利用编程
(1) 在经济学领域应用于机器学习/人工智能以及其他实用工具,如网络爬虫和其他数据驱动分析
(2) 为此,我喜欢金融科技配对平台

特别是,我最近发现自己非常喜欢编程。虽然我已35岁,但作为一名新人,我定下目标,到40岁时要成为一名合格的全功能程序员...我希望我能在这之前学好两种语言。

如果那时有机会,我可以切换职业,虽然我仍然喜欢我的职业道路。我始终可以用我的编程技能为我的工作、初创企业或成为一名全栈程序员。

在线研究让我认为 Clojure 可能是一个值得关注的优秀语言,因为它们说它非常适合快速开发(如果我想用它进行初创企业的独立开发),数据驱动(经济和机器学习),以及成为优秀程序员的途径。

我的顾虑是Clojure 的使用似乎并不广泛,这可能意味着在缺乏库的情况下进行机器学习项目可能会有问题(与 Python 进行比较),以及未来的就业前景等...

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

提前感谢),
Baye

4 个回答

+1

如果你缺少 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 还得益于 excellent 工具,但对于初学者来说,在急于学习时,设置它们可能会有些困难。

我认为学习 Clojure 的一个好方法是使用在线 REPL(交互式编程环境)和书籍:《Clojure for the brave and true》。我建议复制和粘贴示例代码,并对其进行操作,以检验你对所读内容的理解。

一旦你觉得自己对其理解得足够好,可以进一步测试自己,那么可以尝试一个小挑战:Clojurescript Koans

希望到目前为止,你已经对它有了一些了解,并且想编写一些程序。

推荐的途径是安装 Java 并遵循入门指南

https://clojure.org/guides/getting_started

你可以开始研究“REPL Drive Development”(基于 REPL 的开发)并设置一个文本编辑器以实现快速反馈,这样可以让你在开发过程中获得愉悦的体验(Clojure 的一个最大的乐趣)。

另一种方法可能是有 Babashka 的副本,它是一个包含了大量 Clojure 的可执行文件,你可以轻松地安装。它允许你写出真正的程序而无需进行过多的设置。然而,如果你想使用某些库,你需要使用 JVM Clojure 才能这样做。

有许多资源可以帮助你学习 Clojure,从核心语言和 REPL 开始,逐步拓展到你感兴趣的应用领域:)

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