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编辑器
工作流程就像是与您自己的程序交谈

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

如果可能,尝试在Slack上了解经验丰富的Clojurians的工作流程

by
谢谢建议!
+1
by

我认为Clojure作为第一门语言非常出色。这很容易说,但很难证实——Clojure并非我的第一门语言,我学习Clojure之前先学习了Java。

我认为编程总体上学习曲线很陡峭,因为将文本文件中的代码映射到执行程序时的行为是非常复杂的。作为一名软件开发人员,您需要在心中有一个可以执行代码的虚拟机。从编写代码到看到执行结果之间的反馈循环越长,您的心理虚拟机的负担就越大,进步就越难。其他主流编程语言试图通过类型系统和IDE来解决此问题,但我认为它们做得不够好,因为

  • 类型系统引入了复杂性,并要求您始终编写关于类型而不是关于您问题的代码;
  • 类型系统是基本的,它们只检查可以用类型表示的东西,因此它们可以帮助您知道如何不组合事情(例如,它们可以阻止您将字符串与数字相加),但不能帮助您知道当代码执行时的行为(例如,它们不能阻止您在您想从列表开头添加值时将其添加到末尾)。

类型系统变得越来越复杂,以帮助您编写正确的代码。您可以看看Idris如何促进类型驱动开发,帮助编写矩阵转置:[https://youtu.be/mOtKD7ml0NU?t=1607](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中,这要简单得多、简洁得多!

by
感谢你的见解!
+1
by
by
感谢你的链接!
+1
by

如果你已经对来自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
感谢你抽出宝贵时间和提出的好建议!
...