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编辑器
这种工作流程就像与你自己的程序谈话一样

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

如果你可以尝试与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的一些基本编程概念有了认识,那么你 learning Clojure的条件就非常好了。

我认为,在学习任何事物之初,很重要的一点是以较小的努力获得更多的回报,考虑到这一点,我总是试图在最初限制未知因素的数量。

Clojure需要宿主语言才能运行,这实际上是一个非常出色的特性,因为它受益于广泛的适用性和最丰富的库生态系统。但对于初学者来说,这意味着在编写程序时,你可能会不得不在某种程度上学习Java或JavaScript。这可能会在开始时造成额外的摩擦,因此我的建议是,在你对核心语言有一定信心之后再避免这种情况。

Clojure 同样受益于出色的工具支持,但对于完全的新手来说,如果你只是想开始学习,设置起来可能有点困难。

我认为学习这门语言的好方法是从使用一个 在线 REPL 和书籍《Clojure for the brave and true》开始:《勇敢而真诚的 Clojure》。我会复制粘贴示例代码,并对其进行修改,以测试你对自己的理解。

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

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

正常的方法是安装 Java 并按照入门指南进行。

https://clojure.org/guides/getting_started

你还可以开始查看“REPL 驱动的开发”方式,并设置一个文本编辑器以获得快速反馈,你正在开发的过程中(Clojure 的一个极大的乐趣)。

另一种方法可能是获取一个 Babashka 二进制文件,这是一个包含在内(大型)Clojure 子集的“电池包含”版本,我之所以提起它,是因为它非常容易安装,并允许你在不进行太多设置的情况下编写真实的程序。尽管如此,如果你想使用一些库,你需要使用 JVM Clojure 来实现这一点。

关于学习 Clojure,有很多资源可供参考,从核心语言和 REPL 开始,再逐步扩展到你感兴趣的领域:)

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