[博客翻译]论程序设计与诗歌


原文地址:https://zverok.space/blog/2024-10-06-poetry.html


编程与诗歌之间不太可能的联系及其启示

我最近没有太多时间撰写关于编程的文章(尤其是考虑到我通常文章的长度);但是有一些之前写的内容可以分享。这篇文章是在我39岁生日那天起草的一个Twitter帖子:那天我发布了我的新网站,并宣布“我很快会在这里写更多!”那是在2022年2月14日,距离俄罗斯全面入侵开始前10天。两年半后,我终于将其整合成一篇独立的文章,增加了清晰的观点、一些链接和结论。无论如何。

你很少看到诗歌(指写作和阅读诗作,而非Python工具)与编程一起被提及。而一旦有所提及,通常是以下两种方式之一:

  • 将“灵魂”丰富的人文活动与“枯燥”的工程活动进行对比,或
  • 使用“诗意”作为非正式的“美丽”同义词,说某段代码“读起来像诗”是说它很好、富有表现力,或是以某种方式使陈述者满意。

但我认为,将它们一起探讨可能会产生深刻的见解。下面是一些相关的思考。

我有资格谈论这个主题吗?

你自己评判吧。

从软件开发的角度来说:我是软件架构师,编写了超过25年的代码,是Ruby编程语言的贡献者,撰写了一些开源库、大量文章和某些文档项目;早年,我还做了很多Ruby指导工作,包括教导完全没有Ruby/编程背景的人。

从诗歌/写作的角度来说:自记忆中起我一直都在写散文和诗作;我的第一部小说最近刚刚出版。

在我二十多岁到三十多岁的十年间,我一直自认为是一名诗人为主。尽管我除了偶尔发表在杂志上或参加诗歌节,并未取得什么成就,甚至一度差点出版了我的第一本书,但后来出版社倒闭了。然而,我确实得到了足够的社区认可,足以相信自己至少对诗歌有些理解(即使不是精通)。

几年前我不再写诗了(转而写散文,这又另是一回事)。我的一些最近的文字可以在这里找到(主要是俄语,显然我已不再使用它)。

2017年我组织了一场著名的在线诗歌节,在那时这种形式还没有流行起来!(目前该网站已经无法访问,而且节日剩余的部分已经从互联网上消失,原因太复杂不便解释。不过,这次经历让我接触到大量来自西欧的作者——用多种斯拉夫语写作的人——如塞尔维亚语、克罗地亚语、保加利亚语、斯洛伐克语、波兰语等,这是一种非常有益的经验。)

我仍然读很多诗歌和关于诗歌的东西,并试图理解广泛的背景;今年,我开始了7uapoems项目,致力于翻译现代乌克兰诗歌,特别是那些正在服役中的士兵所写的。

话虽如此,我对文学理论并不十分了解,所以文中任何定义都是我自己尝试的结果。对于那些精通理论的人来说,可能会觉得这些尝试令人恼火或可笑。

我也不会在软件开发方面使用精确的理论术语进行讨论。我的思维和表达方式通常是“平易近人”的,不管好坏。

为什么我们写和读文学作品

一次粗略的定义尝试

为什么我们要写和读文学作品,任何文学作品呢?

大多数是为了分享一种体验。即去某个地方、亲历某些事件、感受某些情感、理解某些事物的体验。这是我们或许无法直接获得的体验。(当然,也有帮助重活熟悉体验的各种文学作品,但让我们不进一步复杂化。)

在这个定义下,诗歌本质上是一种更高效地分享难以理性表达的体验的方式。它依赖于某种“跳跃式”的理解,一个精心构造的短语的效果等同于五页密集的解释。“简化过头”是我的特点!

这实际上与“美”无关,“美”仅是一种可以用或者不用、甚至可以颠覆的诗歌工具;糟糕的诗句中,“精心构造”的句子可能会掩盖所传达的意义/经验的平庸性。

虽然我不再写诗了,但我依然坚信,在许多情况下,以“诗意”的方式传递体验是最高效的。据我所知,在写小说的同时我从未停止过做诗意的工作。有“散文式”的写作工具:构建情节、处理世界观、创造角色的动力,也有“诗意”的工具:选择基调、节奏和意象来吸引读者——这两种工具很可能会出现在任何形式的写作中,数量不同。

相反,如果你不喜欢读诗(甚至不知道为什么会有人这么做),那可能只是因为你还没有遇到能与你的体验交流的那类诗,或者你的性格不需要这种特定形式的写作。这只是个人特点,并不意味着你在其他文本中无法接触写作的“诗意工具”。这也希望不意味着你不能从我的对比中得到收获。

Artur Dron的诗《伊久姆圣餐》的一个片段。翻译是我自己的。

编程是如何相关的

在常见的“工程与艺术”思维框架中,编程似乎与诗歌对立。然而,在过去的几年里,当我在编程会议上羞涩地提到“……同时还是一个诗人”时,总会有一些人——通常是杰出的工程师——站出来说“我也是!”

通过Alex Bilzerian,由我的朋友Dima Ermilov指出。

我在很多时间里思考并写了许多关于感知代码为文本及其带来的直觉、方法和期望的文章。[这个博客的第一篇文章](https://zverok.space/blog/2015-09-22-three-kinds.html)(九年前了!)是关于Ruby适合“作家式”程序员的文章;我最近的EuRuKo演讲中也把“在代码中书写故事”作为一个主要的主题。

从前面提供的定义来看,可以说写代码就是分享理解和实现过程的体验

从这个角度来看,明显可以看到这里存在“诗意”工作的空间:在某种程度上对某些思维方式而言,从整体实现领域跃进的几个“句子”常是有益的。

这个话题颇具争议:任何试图用现代语言特性压缩意义的尝试都会遭到批评——特别是在Ruby社区看到这一点尤其令人难过,因为语言的设计意图和社区实践之间的差异似乎随着时间的增长而扩大。

“诗意”的方法在对理解跳跃更加友好的语言中变得边缘化,但这些语言不如日常散文那样可读,例如Perl和APL。(附注:最初的讨论部分是因为The Array Cast播客