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

其他语言鼓励您像死鱼一样编辑、编译并部署您的程序

如果您能尝试了解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]]

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

附言:我可以继续讨论使用映射和泛型函数处理数据与使用类和方法相比的优劣,但我现在没有时间。使用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
感谢你的时间和宝贵的建议!
...