请在2024年Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面以获取更多关于如何工作的信息。

+4
Clojure CLI
重新标记

此功能旨在欢迎新人,包括那些安装额外工具较为复杂的人。

从我的教师角度出发,如果仅使用CLI工具就能创建一个绝对最小化的项目那将非常美妙。对于我的某些学生来说,“必须手工完成或使用第三方工具”是他们的障碍,也许对其他新用户也是如此。在课堂环境中,使用不同机器和操作系统以及拥有不同背景的学生,许多看似微不足道的开发问题(如操作系统添加隐藏文件扩展名、编辑器编码文本、操作系统路径问题等)可能会产生很多令人沮丧的摩擦。

所谓“绝对最小化项目”,指的是一个目录,包含一个包含{}的deps.edn文件,还包含一个src文件夹,该文件夹包含与顶级文件夹同名的一个子文件夹,该子文件夹再包含一个名为(最好叫为核心.clj)的单个文件,该文件仅包含一个最小的ns表达式,命名空间名称与文件夹和文件名称匹配,其余什么都没有。

我理解,关于是否CLI工具应该支持更强大的项目创建功能的问题有很多考虑,如果应该支持,那么应该创建什么样的项目,如何组织等。但我的请求是这样的简单,我希望在没有涉及更广泛问题的同时能够考虑。我还希望这个最小化项目创建功能可以独立于更广泛的问题来考虑,因为我认为它将大大简化某些新用户群体的入职过程。

初步想法








理解极简项目的价值




我的担忧是























编辑了
关于“理解超简约项目价值”,我的当前用例是本科生课程,其中Clojure被用作编程语言,但Clojure和软件开发都不是课程的主要焦点。

我目前的课程是进化计算,但我也为人工智能和其它主题的课程做过类似的事情,我知道其他计算机科学教师也在其他课程中做了类似的事。理想情况下,学生只需要安装一个东西,然后就能够开始编写、编辑、评估和保存与我们正在研究的相关主题(如我当前案例中的进化计算)的Clojure表达式。可能我们无法完全实现“安装一个东西”的理想状态,但使从零开始编写、编辑、运行Clojure代码的路径尽可能简短将会非常棒。我认为这一点不仅适用于像我目前所教课程中的学生,也适用于可能独立在其他多种背景下接触Clojure的人们。

如果deps.edn是一种支持的项目管理方式,并且确实有一种最小的“新文档”项目结构,那么如果在您已经安装的(CLI工具)中有一种制作最小项目的方式,那就非常好了。

我的理解是,我们只需要一个deps.edn文件,它必须包含一个映射对象,但这个映射对象可以保持为空。我们还需要一个src目录。由于单段命名空间被强烈建议不要使用,我们需要的src目录下需要有一个文件夹。然后,我们的新文档(除了正确构建的ns表达式外都是空的)将在这个文件夹内。

我意识到,一旦考虑除此之外的所有事情,选项会变得很多,并且组织方式也不明确。但我认为我提出的方法并没有进入这个范畴。

因为目前用于我课程的工具不制作项目,所以我现在通过课程网站分发一个最小项目。但这有几个原因并不是理想的。一方面,我必须给我最小的项目取一个名字,学生们还得更改目录名称和文件内容才能进行更改。对于不在我的课程中的学生(以及我怀疑,来自各种视角、拥有各种背景和目的的其它人)来说,这又是一个在开始编写、编辑、运行代码之前必须找出来并理解的事情。

关于John Stevenson的具体问题

1. 我课程中的学生不必一定知道{}在deps.edn中的工作方式,或者CLI如何引入Clojure依赖项,或者有关类路径的任何其它信息。如果他们最后需要了解任何这些,他们可以在以后学习。无论如何,如果了解这些知识不是开始编写、编辑、运行Clojure代码的必要条件,那就太好了。

2. 我同意支持学习的示例是一个好主意。我希望看到更多。在我最后一次检查时,我认为clojure.org上的关于如何指定依赖的材料只是跳到了一些复杂的示例,而没有像我希望的那样清楚地说明如何做基本的工作。但我确实认为这一点超出了这里的范围。

3. 我认为这并不是一个真正特定的用例。大多数文字处理器都有“新建文档”的功能,虽然我猜这可能只是针对没有现有模板或独立软件创建新文档的人的“特殊用例”,但我认为“新建文档”功能对于很多人来说是非常有用的。因为对于许多Clojure编辑器和工具来说,Clojure的“新建文档”功能会创建一个项目。在这个类比中,一个最小项目就像大多数文字处理器中的空白文档。

4. 很好,有其他软件可以创建项目。如果我们不需要其他软件来创建一个最小项目那就更好了。

1 答案

0 投票
这里胡思乱想一下……如果我们考虑一个特殊案例“我的第一个Clojure项目”,而不是一般的创建任何项目,这可能将是新手入门Clojure旅程中的一个很好的部分。创建的项目可以类似于这个https://github.com/PEZ/clojure-zero, 但不包括基于网络的部分,也不特定于Calva。重点是它可能包含非常少的内容,而在README中可以提供下一步行动的指导。我将另一个我的入门级项目作为一个例子: https://github.com/PEZ/clojure-get-started-mini

创建项目的命令行可以支持一些小配置的选项,如果未提供任何选项,则脚本可以进入提示。选项可能包括:
* 创建Clojure或ClojureScript或两者入门?
* 创建包含入门说明的README?
* 创建哪个编辑器的说明? Calva/CIDER/Cursive
* 在源文件中包含入门注释?
* 包含针对的入门材料?

入门资料内容可以像Calva的入门资料一样采用众包方式:https://github.com/BetterThanTomorrow/dram(在配置方面需要更多思考,但无论如何,我只是想强调这个概念,而不是解决方案。)
by
尽管所有这些配置选项和入门资料都可能很棒,但并不明显应该选择哪些是合适的,而且可能会在一些情况下包含大量可能令人困惑和不必要提示/文本等等,反而产生反效果。

如果理解正确,对于所需的最低配置项目争议很小。例如我认为我定义的结构接近Calva可以打开的最小配置,唯一可能不必要的是避免单一段名称空间。

因此,如果CLI工具可以创建此类最小项目,那就太好了。所有的“入门资料”都可以在其他地方获取,如果人们对内容有不同意见,他们可以创建不同的版本。在此期间,新用户可以开始使用Clojure,无需得到单独的项目创建工具或处理从头创建项目的问题。
by
它不必向用户提供很多选项。可能是一个项目类型选项,如果省略则显示提示

1. 创建一个空的Clojure项目
2. 创建一个空的ClojureScript项目
3. 创建一个空的Clojure + ClojureScript项目
4. 创建一个入门项目

这有点像在Pages或Keynote中创建新文档时的情况。它会打开一个对话框,让您选择创建空白文档或从模板创建。

https://user-images.githubusercontent.com/30010/224144517-d9fce7d3-1feb-40ea-9c63-3de0f0ee1b70.png

只有选择非空白选项时,才会得到一些额外的提示。许多创建项目的工具都按这种方式工作。在创建VS Code扩展时,建议您使用`yo`,它允许您通过提示进行一些项目配置:https://vscode.js.cn/api/get-started/your-first-extension
...