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

欢迎!请参见关于页面以了解更多关于此网站如何运作的信息。

0 投票
Meta

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

总的来说,我想用编程
(1) 在经济学主题的ML/AI上,以及一些其他实用工具,如网络爬虫和其他数据驱动分析
(2) 为了此目的,金融科技匹配平台

特别是,我最近才发现我非常喜欢编程。我作为一个35岁的初学者很老,但我设定了一个目标:在40岁时成为一名合格的程序员...希望我届时能学好两种语言。

如果那时候有工作机会,我可以转行,尽管我仍然喜欢我的职业道路。我始终可以利用我的编程技能为我的工作、创业或成为一名全栈程序员。

在线研究让我认为Clojure可能是一个值得关注的优秀语言,因为他们说这对于快速开发(如果我想用它来创业,作为独立开发者)非常出色,对于数据驱动(经济和ML)提供了一条成为优秀程序员的道路。

我的担忧是Clojure似乎并不被广泛使用,所以在执行ML项目时可能存在一些由于库少(与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上的工作流程

感谢这些建议!
+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]]

最终,我们想要编写代码,让计算机按照我们期望的方式运行。我认为立即看到代码执行的结果,比在同一个文件中使用两种语言(其中一种语言是为了编译器与你进行对话(类型签名),另一种是为了计算机执行(函数调用))更好。噪音少,认知负荷低,更专注于问题,更快、更有用的反馈——我认为这是一个奇妙的第一语言:)

顺便说一句,我可以继续讨论使用映射和泛型函数进行数据处理与使用类和方法相比,但现在我还没时间。在Clojure中,这要简单和简洁得多!

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

如果你已经有一些基本的编程概念来自Python,那么你学习Clojure的状态很好。

我认为在学习任何事物的开始时,重要的是付出小小的努力就能获得很多回报,因此我总是试图一开始就限制未知因素的数量。

Clojure需要一个宿主语言来运行,这实际上是一个非常棒的功能,因为它从巨大的覆盖范围和最丰富的图书馆生态系统中受益。对于一个初学者来说,这意味着在某些时候,你将在编写程序时不得不某种程度上学习Java或JavaScript。这可能会导致一开始就有额外的阻力,因此我的建议是基于避免这种情况,直到你对核心语言有了一定的信心。

Clojure 同样拥有出色的工具支持,但对于初学者来说,要设置起来可能有些困难,尤其是当你只想开始学习的时候。

要学习这门语言,我认为一个好的开始方式是使用在线REPL工具和《Clojure for the brave and true》这本书:[在线REPL](http://app.klipse.tech) 和 [Clojure for the brave and true](https://www.braveclojure.com/do-things/)。我会复制粘贴示例代码,并对其进行尝试,以检验你对所学内容的理解。

一旦你觉得自己对其理解足够,可以尝试一些小挑战:[Clojurescript Koans](http://clojurescriptkoans.com/)

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

通常的步骤是安装Java,并按照入门指南操作

https://clojure.org/guides/getting_started

你还可以开始了解"REPL Driven Development",并在开发过程中设置一个文本编辑器以获得快速反馈(这是Clojure的一大乐趣)。

还有一种方法是获得Babashka的二进制文件,这是一个(庞大)的Clojure子集,我认为值得提到的原因是它非常容易安装,让你在不做太多设置的情况下编写实际程序。但话说回来,如果你需要使用某些库,你将需要使用JVM Clojure来实现。

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

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