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

欢迎!请参阅 关于 页面以获取更多关于此的信息。

0

我刚开始学习编程。我开始学习 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编辑器
工作流就像是和您的程序进行对话

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

如果您能尝试并了解经验丰富的Clojure用户在Slack上的工作流程

感谢您的建议!
+1

我认为 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]]

最终,我们想要编写的代码能够使计算机表现出我们期望的行为。我认为在编写代码时就立即看到执行结果,比在同一个文件中用两种不同的语言编写代码(一个用于与编译器对话,比如类型检查符;另一个供计算机执行功能调用)更能验证代码行为。减少了噪音,降低了认知负担,更多关注于问题本身,反馈更快且更有用——我认为这是一种很棒的第一语言 :)

顺便一说,我可以继续谈谈使用 maps 和泛型函数以及类和方法的数据处理,但我现在没有时间。在 Clojure 中这要简单和紧凑得多!

by
感谢您的见解!
+1
by
by
感谢提供链接!
+1
by

如果你已经对 Python 中的一些基本编程概念有一定了解,那么你学习 Clojure 将是如鱼得水。

我认为在学习的初期,重要的是以最小的努力获得尽可能多的回报,考虑到这一点,我总是会在一开始尽量限制未知信息量。

Clojure需要在宿主语言下运行,这实际上是一个极好的特性,因为它能够受益于庞大的用户基础和最丰富的库生态系统。然而,对于一个初学者来说,这意味着在编写程序时,你可能会不得不在一定时候学习Java或JavaScript语言到一定程度。这可能会导致开始阶段出现额外的摩擦,因此我的建议是在对核心语言有一定信心之后再避免这种情况。

Clojure还受益于出色的工具支持,但对于初学者来说,如果只是想开始学习,设置起来可能会有些困难。

我认为学习这门语言的好方法是从使用在线REPL(即时编译器)和书籍《Clojure for the brave and true》(勇敢者 Pasta)开始。我会复制粘贴示例代码并对其进行操作,以测试你对所读内容的理解。

一旦你觉得自己对它的理解已经足够,可以自测了,就可以尝试一个小挑战:Clojurescript Koans

希望到这时你已经有了足够理解,并想要编写一些程序。

推荐的步骤是安装Java并遵循入门指南

https://clojure.org/guides/getting_started

你可以在开发过程中开始查阅“REPL Driven Development”相关内容,并设置一个文本编辑器以快速得到反馈(Clojure的乐趣之一)。

另一种方法是获取Babashka的二进制文件,这是Clojure的一个包括几乎所有功能的子集,我之所以提到它,是因为安装非常简单,它允许你无需进行太多设置就可以编写实际的程序。但如果你想要使用某些库,你需要使用JVM Clojure来实现。

有大量资源可以学习Clojure,从核心语言和REPL开始,然后逐步过渡到你感兴趣的领域。

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