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

欢迎!请查看关于页面,了解更多关于这个网站如何运作的信息。

+4
clojure CLI
重标记

这是为了让新手加入,包括那些安装额外工具相当麻烦的人。

从我的教师视角来看,如果仅使用CLI工具就能创建一个极其简化的项目,那就太好了。“必须手动完成或使用第三方工具”对一些学生来说是一个障碍,也许对其他新手也是。在课堂环境中,学生们使用不同的机器和操作系统,有不同的背景,一些对开发者来说看似微不足道的问题(例如操作系统添加隐藏文件扩展名、 editors对文本进行编码、OS路径问题等)会带来很多挫败感。

我所说的“极其简化的项目”指的是一个包含空的deps.edn的目录,还包含一个名为顶级文件夹的src文件夹,该文件夹包含一个包含单个文件的子文件夹,该文件(最好叫做core.clj)仅包含一个最小化的ns表达式,其命名空间名称与文件夹和文件名匹配,没有其他内容。

我明白在更多通用的问题中有很多需要考虑的,比如CLI工具是否应该提供更健壮的项目创建功能,如果是的话,它应该创建什么类型的项目,如何组织等。但我在这里的要求是如此简化,希望它可以在不考虑更通用设施的问题的情况下得到考虑。我也希望这个最小项目创建功能可以在不考虑更通用问题的背景下得到考虑,因为我认为它将显著简化一些新手社区用户的入门。

by
初始想法
在Clojure CLI安装中包含`.config/clojure/tools/project.edn`配置,当运行`clojure -Tproject create`命令时将运行seancorfield/deps-new。

这似乎将提供一种解决方案,以解决当前问题,同时不会在Clojure CLI中引入大量的代码设计。

或者,这个类可以克隆(或下载一个包含相关别名和工具的配置的zip存档),这些工具提供了此功能,而无需为Clojure CLI直接设计项目工具

> 我假设git clone在范围内,因为有多种方法使用桌面UI、Web UI等进行操作,所以似乎不会超出原始作者的目标受众(我已经多次以这种方法教过使用无代码产品的人)

理解极限最小化项目的价值
我难以理解极端最小化Clojure项目的价值,部分原因是我假设这个请求是要说明想要什么,而没有详细说明如何使用它(课程计划的范围是什么)

关于Clojure的教学方法和教学范围的详细说明将有助于理解其价值。否则,它似乎只针对原始作者的需求,而不是社区的有用工具。

我的顾虑是

1. 依赖于隐含的配置知识

拥有一个仅包含`{}`的项目配置文件自然会提出问题:它是如何工作的,接着就会讨论Clojure CLI如何引入Clojure依赖并将其添加到类路径中

2. 没有例子来支持学习

包括一个最小的`:paths`和`:deps`配置将提供一种简单的方式来展示添加更多配置时所需的语法(这是否在范围之外很难说)

同样也可以为包含别名进行论证,例如一个测试运行器

3. 为特定用例创建某物

我认为在Clojure CLI中引入项目创建工具不妥,除非考虑到更广泛的社区需求。至少不要作为发布功能。 

4. 重新发明

clj-new和deps-new已经提供了创建项目的方法,而一个最小的scratch模板似乎可以满足原始作者的需求(以我有限的了解)
https://github.com/seancorfield/deps-new#create-a-minimal-scratch-project

这可以是课堂安装说明的一部分(包括Java & Clojure CLI)或者复制到学生电脑上的用户配置。

还有更多问题,但这实际上取决于原始请求的范围。

编辑
在“理解超简约项目的价值”中,我目前的使用案例是使用Clojure作为编程语言的本科学课程,但Clojure和软件开发都不是课程的主要焦点。

我目前的课程是关于进化计算,但我已经在AI和其他主题的课程中做过类似的事情,我知道其他计算机科学教师在其他课程中也做了类似的事情。理想情况下,学生能够安装一样东西,然后能够开始输入/编辑/评估/保存与我们研究主题(在我当前情况下为进化计算)相关的Clojure表达式。也许我们不能完全达到“安装一样东西”的理想状态,但使从零开始编写/编辑/运行Clojure代码的路径尽可能短会很好。我认为这不仅仅适用于像我这样的课程的学生,也适用于可能独立进入Clojure的其他环境中的人。

如果deps.edn是支持的项目管理方式,而且确实存在一个最小的“新建文档”项目结构,那么如果您正在进行的安装(CLI工具)能够提供制作最小项目的功能将会非常棒。

我的理解是,我们只需要一个deps.edn文件,该文件必须包含一个映射,但该映射可以是空的。我们需要一个src目录。鉴于单段命名空间被强烈反对,我们需要在src内创建一个文件夹。然后我们的新文档,除了一个构造良好的ns表达式以外都是空的,将存在于那个文件夹内。

我意识到,一旦考虑其他任何东西,就有很多选项,且组织方式并不明确。但我认为我提出的建议并没有涉及到那个领域。

因为目前我们为我的课程使用的工具不制作项目,所以我目前确实通过课程的网站分发一个最小项目。但这有几个原因并不理想。首先,我必须给我的最小项目命名,并且学生必须更改目录名称和文件内容以更改它。对于不在我的课程中的学生(以及,我怀疑,从不同观点和背景以及不同目的进入Clojure的其他人)来说,这又是一项他们必须找到并弄清楚才能开始编写/编辑/运行代码的东西。

关于John Stevenson的特定关注点

1. 我班的学生不一定需要了解deps.edn中的{}如何工作,或者CLI如何引入Clojure依赖,或者关于类路径的任何内容。如果他们最终需要了解任何这些内容,他们可以在以后学习。无论如何,如果了解这些内容不是开始编写/编辑/运行Clojure代码的前提,那就再好不过了。

2. 我同意,为了支持学习,具体的实例是一个非常不错的想法。我希望看到更多。我最后一次检查时,我总觉得clojure.org上的关于如何指定依赖的资料直接跳到了一些花哨的例子,却没有把基本操作解释得像我希望的那么清楚。但我想这并不在本讨论的范围内。

3. 我认为这并不是一个真正的特定用例。大多数文字处理程序都有“新建文档”功能,虽然我可以猜这主要是为那些没有现有模板或独立软件创建新文档的“特殊用例”而设计的,但我认为“新建文档”功能对很多人来说是非常有用的东西。由于许多Clojure编辑器和工具都需要项目,因此Clojure的“新建文档”功能将创建一个项目。在这个类比中,最小项目就像大多数文字处理程序中得到的空白文档。

4. 有其他软件可以创建项目真是太棒了。如果我们不需要其他软件来创建最小项目那会更好。

1 个回答

0
在此大胆地谈谈……如果我们考虑特定的用例,比如my-first-clojure-project,而不是创建任何项目的通用用例,这可以是Clojure入门之旅中的一个美好部分。创建的项目可能类似于这个https://github.com/PEZ/clojure-zero,不带基于Web的部分,也不特定于Calva。关键点是它可能内容非常少,README可以提供下一步操作的指导。我将举出另一个我的入门项目作为例子:https://github.com/PEZ/clojure-get-started-mini

创建项目的命令行可以支持一些小配置的选项,如果未提供选项,则会进入提示。选项包括
*
*
*
*
*

入门素材内容可以采用类似于 Calva 的入门素材方式进行众筹:https://github.com/BetterThanTomorrow/dram(配置方面需要更多思考,但无论如何,我只是想强调理念,而不是解决方案。)
by
虽然所有这些配置选项和入门素材可能都很棒,但并不知道哪些是正确的,充血很多提示/文本等可能会在某些情况下令人困惑且不必要。

如果我理解得正确,关于所需的最小项目的争议很小。例如,我认为我定义的结构几乎可以满足 Calva 打开并让您工作所需的最小结构,唯一不是完全必要的部分是避免使用单个段名称空间。

因此,如果 CLI 工具能创建此类最小项目就太好了。所有“入门素材”都可以在别处提供,然后如果人们对内容有不同意见,他们可以创建不同的版本。同时,新用户可以开始使用 Clojure 而不必安装额外的项目创建工具或从头创建项目。
by
不需要向用户提供大量选项。可以是项目类型选项,如果省略,则显示提示

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

这有点像在 Pages 或 Keynote 中创建新文档时的情况。它会打开一个对话框,您可以选择创建 blank 或基于模板的文档。Google Drive 也做类似的事

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
...