我想看到的科普 文字(腾讯会议听录)

以下文字出自 由 哈工大 思飞科幻社 组织,我参与 思飞科幻社科普创作营的讲座。

持续时间1小时多一点,含交流讨论。现场语音和切片可以在B站等播放,等我有了地址,会发来显摆。

文字稿我原计划整理,最终还是懒了。感觉有弃置的风险,还是把未整理的版本发出来吧。如果以后想更完美,也许可能再整理。不完美的版本,总比没有强。

PPT在 我想看到的科普 PPT https://zhuanlan.zhihu.com/p/32969274730

以下是由腾讯会议整理的文字,感谢 小知tlq。错讹之处,请根据上下文脑补猜测吧。

杨贵福 13:56

请主持人还有一分钟的时间,我应该按照约定的时间开始吗?能听见我的声音?

方容 14:03

老师你正常开始就行,这头我这头有一天。然后要是有没来的话可以看录屏。

杨贵福 14:08

我听不清,听不清你说话。

方容 14:13

喂老师能开车吗?

杨贵福 14:19

请讲。

方容 14:21

我这边有录屏就正常开讲就行,之后如果有人现在没来的话可以看路。

杨贵福 14:25

我现在开始吗?还有一分钟。不到一分钟还有五秒。

方容 14:34

开始就行,开始正常开始。

杨贵福 14:39

我听不太清楚您说话。我开始是吗?

方容 14:48

你现在开始就可以。

杨贵福 14:50

能看见我屏幕?

方容 14:57

能看见吗。

杨贵福 14:58

能看见哈,能看见我屏幕,我就广播一下我的屏幕,现在我是全屏,并且能听见我的声音?

方容 15:11

对老师你真讲究。

杨贵福 15:13

我现在全屏了,我看不见,如果你有什么要求的话,你就直接说我能听见各位。各位同学,各位老师!今天我想跟大家交流的是。我想交流的是我想看到的科普,作为一个科普读者,我读了不少科普作品,在这里面想说一下,我觉得哪些好,我希望看到什么样的作品,如果你写,我希望看到你写成什么样。

杨贵福 15:49

第一,首先是如果咱们时间够的话,我再把这一部分展开,我现在大体上说一下就是我的口味谈不上高,虽然这里面说的是优秀典范,但是很多人看不进去的,我也很喜欢。所以说科普在我这可能是荤素不济,比如这样的我很喜欢。有一些是讲原理的,像卡尔斯的魔鬼出没的世界这一类的,它是比较罕见的,还讲了除了科这个科学事实以外,讲了很多科学方法论这一类的事,还有度量,是一本数学的书,这是一类也好讲原理的,如果后面有时间的话。我再展开,我这里没有跳过了,这是讲原理的一类。还有的科普是讲故事的,这里面有的我们把它归结为科普,比如说物理世界奇遇记一般都把它归结为科普,而有的,比如说像神秘岛。

杨贵福 16:44

通常可能会把它归结为科幻,这里面可能大家也看到像拯救计划,火星救援,还有像流浪地球可能通常都是直截了当的归结为科科幻。我为什么在这里面归结为讲故事的科普,是因为他们都属于那种我们通常称之为硬核科幻的硬科幻的那种,它这里面所有的故事情节都必须依赖于。

杨贵福 17:06

科学设定的依赖于这样的一个设定,而且这个设定是科学的,有现在的科学原理可以支持的,像龙蛋与中子星相关的这一类,虽然它可能脱离现实的。一些感受,它也是科学的这一类,我把它归结为讲故事的科普,我也很喜欢。第三类是可能更周边一些讲历史的讲人物的,比如说像头两篇。计量单位进化史和精度这一类的。他讲的是科学史与科科学史发展相关的像精度,与这个工程技术,科学技术发展相关的追求精确,是机械工程这一类发展相关的。那这类我觉得很有意思。还有一些与人物相关的,包括像别斗了费曼先生讲费曼的。还有一些讲 IT 人物的我都觉得很有意思,就是讲历史的和讲人物的,它也算是一种科普,还有看了很多短片的可能就是像大家刷抖音这一类的,有这种感觉。我看了很多短片的,包括比较早期的,像新语思的方舟子,还有三科学就是 our science。曾经一度写过很多非常好的文章,还有科学松鼠会和果壳,现在我经常看像中科院物理所这样的这种公众号,有汽车制造公众号也挺有意思。李清晨是。

杨贵福 18:33

写手术200年的那位作者这一类的我觉得很有意思,这是短篇的适合速读的。还有一些可能大家不把它归结为科普,甚至可能觉得它离科学比较远,但是对我来讲,它就是科普,它普及了,我不了解的很多知识,比如像烟火漫卷一般,我们认为它是小说,它也确实是小说。从我的角度看,我通过他了解。某某一个时代,哈尔滨的那种状态就是通过这个作品得到计算机图形学,凡是学计算机的同学可能觉得这是专业课对我来讲,它是我用来学习线性代数的。一个手段,我觉得通过他来学习挺有意思的,其他的下面这些有的是历史的,有的是自然史的,有的是像政治学的,还有西方现代思想讲义的这一类的。对我来讲,因为它是另一个学科的,我完全不了解。他可能是社科的,也可能是自然科学的。对于我来讲,即使它是一个专著,我读的时候,也是把它读成了科普,当成了我的休闲娱乐的。

杨贵福 19:38

还有一类这一类就更是小说了,比如说像金庸的琼瑶的,有的同学可能会觉得这个怎么能算是科普,以少林寺为例,当年在我们那个年代,大家看少林寺的时候,就是把它当成科学来看待的,把它当成教科书,我们就按照这种方法来练,包括那个时候的杂志像奥秘。我们现在觉得这里面有好多伪科学,像众神之车有很多伪科学那一类的,但是我们当时觉得很有意思,那有的同学会觉得那这种跟科普有什么关系,它和科普一个最接近的关系是。他这里面没有超自然的,甚至包括像众神之车这一类的,没有超自然的人格化的神。所有的讨论都是基于唯物主义观点的星球大战和星际迷航,这两部小说或者电影一样,在当时少林寺这一类的片子。给我们的影响就是科学是这样的,它吸引了我们对科学的兴趣。以上这些例子,我在后面的这些观点当中。

杨贵福 20:42

能够提到和上面我说的这些例子,那个观点是一样的,第一个讨论的问题在这里面是第二点,就是我们的科普作品是写给谁的,通常很多人都会认为科普的受众对象是公众,我觉得不完全是。因为当我作为科学的科普的受众对象的时候,我的感受略有不同。从动机上看,你如果是一个作者的话,或者你要写给投资人一个申请的话,你的感受,可能是这样的,你觉得充满了。

杨贵福 21:14

正义感你要弘扬科学精神,你要提高公众的科学素养,公众我。你要提高我公众的科学素养,你要打破我对于科学或者你的学科的神秘感。这里面你可能觉得包括有的是科学事实和结论是我不知道的。我作为读者我不知道的,有的可能你觉得你这里面有一些特别深刻的科学方法论是希望你所阐述的,这是你作为作者你的感受。你可能想说服投资人,或者是你在参加学生的科研项目,说服投资人给你投资说服投资人。给你评一个更高的奖项,或者你正在创业,你想说服投资人拿出钱来增强这个真枪实弹的支持你。但是从另一个角度上,从我的角度上,我作为一个读者的话。我读科普的动机和刚才你的那些伟大的理想是不同的。当我作为一个读者读科普的时候,我只是想满足我的好奇心是有一个限定条件的,通常都是希望对于我的世界观的拓展,而不是反对。不是反对我原来的世界观,只是帮助我在原有的基础之上做一些扩展,或者为我现有的世界观提供支持,有更多的案例。

杨贵福 22:33

在这个意义上满足我的好奇心,而不是希望冲击我,让我的世界观颠覆。其实有很多人会提到颠覆了我的世界观,没有它只是颠覆了世界观的一小点部分而已。第二,作为一个读者,我在阅读科幻的时候有一个动机,这个动机是隐含的就是。我希望我的伦理认同的那一部分,我认为道德的善的那一部分能够得到理性的支持,也就是说我认为他是善的,不仅它是符合道德观和这个伦理观,道德观和我的伦理观的,并且我希望他是理性的。我希望能从科普作品当中得到一些理性的支持,比如说我特别热爱环保,我特别喜欢小猫小狗,我特别喜欢这些东西。我希望看到的科普是爱护小猫小狗的。这种意义上,我就觉得这个科普让我感觉很好。第三,在读科普的时候,我作为一个读者,我会有这种感觉就是科普对我有什么用,我读或者具体的说我读这篇文章它对我有什么用?那也与我何干。如果我不能感觉到不能理解这一篇科普对我的帮助的话,那么它就过于高大上,过于高高在上了最后一点,既然作为科普而不是教科书,我希望它是有趣味的。

杨贵福 23:49

那对比一下我这个对比,这我就对比一下,我们就能够发现作者的动机和读者的动机,事实上关系不大,没有多少重合点,或者说我们需要特别的做一些工作,我们才能够发现他们是重合的。

杨贵福 24:09

如果一个读者想要读懂科幻的话,从读者的角度和从作者的角度上也会略有不同。我们都知道需要读者有一些知识基础才能够读懂科幻科普,特别是当你作为一个科普作家的时候,你可能会有这种感觉,那你读不懂的话是你你的问题,这可能是你作为一个作者,你可能会产生这种看法。但是我作为一个读者,我有一个略有不同的看法,就是你以为我需要知识基础,但是事实上我已经具备了一些知识基础,这些知识基础可能没有受到你作为一个读者,作为作者的重视。

杨贵福 24:45

第一就是你可能认为我需要有一定的知识基础,才能够了解这些东西。不过作为一个读者,他通常都已经具有了坚定的知识基础,即使你认为他的知识基础是错误的,或者他的知识基础是薄弱的,但事实上他都有一个稳定的知识基础,他有非常多的已知的事实,他对于他的领域非常的了解。这就是我在知识结构这个里面提到的第一小点里面讲到的。对于某一个具体的领域不熟悉,可能我作为读者对您特别熟悉的这个领域不熟悉,但是我对于我的领域,我是有我的智慧的。换句话说,我在我的领域当中,即使这个领域,你可能非常看不上我在我的领域当中。

杨贵福 25:27

我也是一个专家,所以从这个角度上,我怎么去理解你的作品,这是一个作为读者,你需作为一个作者,你需要了解的问题。另外一个就是我对于我的领域,除了我有很一个读者对他自己的领域会有很深的知识结构同同时,他对于他的领域会有很多细节。同样,我为什么读您写的这一部作品,就是因为您这里面有很多细节,这些细节是我感兴趣的他有的时候会让我不再对你的这个学科具体领域有神秘感。与此同时可能会造成我对你这个学科的理解,简单化,庸俗化,一个有趣的说法就是没用的,知识又增加了。有的时候我们读科普其实就是这种感觉,虽然这个知识没有什么用,但是它很有意思,我就了解到了很多细节。

杨贵福 26:17

第二就是除了知识结构之外,在每一个读者在他自己的领域当中,他都是有一定的逻辑推理能力的,只不过有的时候作者认为,似乎读者的推理能力好像没有那么强一样,其实不有很多您作为作者写的作品,读您作品的人。他是很成熟的人,他也是成年人年龄很大的人,有的他在他自己的领域当中是非常有所建树的,不了解你的这个领域而已。那我作为一个读者,我对作者的要求就是最下面一条,我希望你不要求我的知识基础。在现有的基础的情况下,充分考虑到我的基础的情况下,能够读懂您的作品,那是最好的。这是对于知识基础。

杨贵福 27:01

你写科普,我读科普,这个时候就是连接你作为信源和我作为信宿这样的一个过程,在这个过程当中,我考虑到了我了一些与方法相关的事,其中有一个案例就是有同学提到过这个问题就是真实的案例,他就跟我提。他说我给导师或者给谁写了一封邮件。然后这导师也没回,我就以为他收到了,那现在的问题就是收不到邮件或者这个邮件他收到了,他也没有回复,这个到底是谁的责任是导师的责任。还是你发出邮件的人的责任,事实上那个导师可能根本不知道你发出邮件这件事没有收到邮件是作者的责任。如果不能理解是作者的责任,而不是读者的责任,读者甚至可能不知道你这封邮件你这个信息的存在。

杨贵福 27:54

如果想让读者理解作者所表达的东西怎么表达?从方法上,我从看的各种作品上有两个体会,第一个就是通过外部效果是可观测的,或者换句话说。你产生了一种新的技术,你产生了一种新的科学原理,那么它能够带来什么样的结果,我能够看到的结果,这个就基于大家共同的生活经验。在刚才我提到的一个读者,他在他自己的领域当中有自己的知识结构,能够了解到很多细节,那么在这种情况下,他可以了解,可以理解你的外部效果。这也回答了刚才的那个问题,与我何干这个何干就是外部效果所创造的神奇的,有趣的这种结果。如果这种结果读者能够理解的话,他就觉得这个东西是有意思的,或者至少这个东西对于它会产生强烈的影响,这是第一是外部效果。但是通常我们看科普的时候,我们不仅仅希望外部效果,这就是下一个问题就是内部原理就是如何的问题。我们为什么要产生阐述内部原理,这也是科普甚至包括科幻一个很重要的工作。是因为只有产生内部原理,它才是可信的,才能够让读者觉得这个东西是真的,否则的话,我们可能就要采取另外的一些手段,比如说诉诸权威。

杨贵福 29:16

逻辑谬误哈,人民日报提到的逻辑谬误,比如说诉诸权威,诉诸民众,诉诸情感等等,诸如此类的,这些都是非理性的。那如果你想理性的让别人接受你的观点,接受这个科学事实的话,可信可有说服力。

杨贵福 29:33

需要的了解内部原理。在读者不了解作者所在的领域的情况下,如何去了解内部原理?我们在实践当中能够看到很多具体的细节,一些手段,比如说我们经常教师在讲课的时候,经常用比喻,把一个我们大家不熟悉的东西比喻成我们熟悉的东西。我们经常做的事情,比如说把电压和电流比喻成水流,把水压比喻成把电压比喻成水压,但是水和电其实。如果你仅仅从压的这种角度上,从流动的角度上看起来似乎是相同的。但是当我们分析电路的时候,我们不希望使用这一类的方法,它会误导你的读者误导教师会误导学生。这个时候我们更加喜欢用像基尔霍夫电压定律介入和电流定律。

杨贵福 30:26

用量化的方程约束的方法来描述这件事,那比喻的缺点在于什么比喻的缺点在于你的水和电这两个东西当中有一些是相同的。但是当读者听到的时候,他所理解的水和你想说的水的某一个特性不是水本身某一个特性可能想象的是不一样的。我作为一个读者,我可能就会想象。电是透明的吗?是像水那样透明的吗?电在流动的时候会有哗哗的声音吗?电是不是也像水那样可能分成水分子?那么电的这个分子是由什么组成的,是由氢和氧组成,这些也是比喻当中可能产生的误导。这是比喻。还有一种就是类比和比喻,它俩有挺多相似的地方。类比也是把 a 和 B 它俩共同的地方,我们认为它们相同的地方连接在一起。这是内部原理的两种,主要的,我们平时在日常生活当中经常使用的手段。在自然科学当中,我们经常用的方法是。

杨贵福 31:34

用你我共知的用读者和作者共知的动词来描述你我共同知道的名词之间的关系,但是这个时候可能会产生一个问题,就是读者会怀疑你说的这些术语都是啥意思?你可能使用了一个术语,比如基尔霍夫电压定律,那基尔霍夫电压定律当成基尔霍夫是什么意思?进入库电压定律我们把整个这段话说一遍,那什么是节点?这些都是读者可能产生的困惑,在自然科学当中的处理是我们使用共同认可的数学和物理基础,在这个基础上定义了这些概念,自己向上的做逻辑推演。但是。除非你在这个领域当中,这种东西你听起来可能觉得它就不是有趣的。它虽然是可信的,但它不是有趣的,所以在科普和教科书之间,我们可能需要选择一个。更活泼的科普和教科书之间,我们需要选择这样的一个位置方法。之所以我们能够选择到一个位置来完成科普,原因是因为科普的一个重要的动机,无论是作者的还是读者的动机是。

杨贵福 32:46

作者想要播种某一种观点,点燃读者对于某一个观点的兴趣,所以他的目的不是传道授业解惑,而是第一点,那个看那里我看到了一个很好玩的东西,我是作者的话,我就会跟读者说,我说你看那里。读者一看说这个东西很有意思,剩下的事情就与读与作者没有关系了,读者会自己沿着这个方向去发展,去更加深入的了解这个东西。从这个意义上讲,因为科普是播种或者点燃,所以说它降低了难度。我们不需要做自己向上的逻辑推导,我们不需要坚实的物理和数学基础,也可以传达概念。比喻和类比都可以用,从另外一个角度上,对于我们的无论是语言和各种媒体如何生动的描述,你的观点,从这个意义上它也提高了难度。

杨贵福 33:42

如果想要播种或者点燃某一种观点的话,那就涉及到这里面,我放在第二点当中的它首先需要好玩,只有好玩才能够让。或者学生或者读者对于这个问题产生兴趣,它很难道我觉得不好玩了,他可能都不想看了,这也是科幻之所以能发展的一个原因。因为它更好玩,它也不是更加不那么严肃。第二,要让读者觉得这个东西对它是有用的,对它是有与它是有关的,就是刚才提到的与我合观的这个问题。第三,它是合乎逻辑的,这里面所谓合乎逻辑,不是合乎作者的逻辑。而是符合读者的逻辑。我作为读者,我觉得我能够理解一个大概我能够接受你的观点的原因是你的观点和我理解的这个过程是相吻合的,比如说我没有发现你内部的矛盾,你观点内部的矛盾,我没有发现你的观点和我既有的观点当中有严重的冲突。或者这些冲突是可以解释的,或者冲突讨论之后发现我原有的细微的某一个观点是错误的。我们把它看成合乎逻辑的,并且它是合乎道德的,合乎道德,就是合乎我原来的价值观,我原来的伦理观,这些东西与我原来的这些。

杨贵福 35:02

观点不同的话,可能不是一两篇的文章,甚至不是一两本书能够解决的。最后在播种和点燃当中,我想到的一件事就是作为作者,你的责任是你要尽量避免读者。事实上也包括要避免作者产生这样的误解,就是让他觉得因为这个东西这么简单,这么有趣,我都能够理解,所以我觉得我可以指导科学发展了,我应该尽可能的不要让读者产生这样的看法。要让他觉得这东西虽然简单,但是他知道这个东西更多的细节是难以理解的,或者更多的细节是不会这么轻松去解决的。

杨贵福 35:42

这是关于播种和点燃我的看法。这里面有2.5,刚才第二就是写给谁的,他是写给读者的,那咱们在做这次交流的时候有一个要求,这个要求就是如果对方是投资人的话。应该来怎么看待这个问题,这里面说一下我的体会,第一就是投资人他关心的问题,投资人关心这样的一些问题,第一,投资人关心为什么?它是有用的,你提出的问题,或者你提出的解决方案,你提出申请,你提出的这个项目,为什么它是有用的,他有用的话,他应该满足这样的条件,就是这个需求和这个问题,他是真实的。所谓真实,不是指他的不是指它符合客观事实,而是指它是有价值的。他对于你的诉求的目标用户是真的存在的一个需求,能够解决用户的问题,给用户带来效益。这是所谓的有价值需求是真实的问题是真实的。有的时候我们会见到这个导师们提到说你这是一个伪问题,或者说你的问题是一个问题吗?指的就是这个就是需求和问题是真实的。为什么有用当中,还有一点就是它的效果是有益的,对于问题,对于需求会产生一定的效果。在这里,有的老师有的同学可能会提出一个问题,需求和需求的效果有一难道不是一回事吗?他俩略有区别。

杨贵福 37:15

问题指的是一个痛点,是用户或者你的目标用户有诉求的这个人,他当前所面临的一个问题,他当前所面临的一个困难,但是你的效果并不见得是解决了这个困难,而是可能使得他的问题,他的困难。变得不那么明显了,比如说现在有一个人,他肚子疼是他不舒服,这就是一个问题,是真实的好,就是现在我们要解决肚子疼问题,我们有两个不同的角度,一个角度是我们找到他不肚子疼的原因。然后解决这个原因,比如说他受凉了,那我们让他加热,他肚子就不疼了,但是还有另一种方法就是。我可以让他感觉不到疼痛,如果你吃了止疼药,它仍然是凉的问题的根本原因没有得到解决,但是得到了缓解。有的同学在这个时候可能提出一个观点,难道我们不应该总是去解决根本问题吗?不是这样的,很多时候根本问题解决不了或者根本问题的解决需要较大的代价,在这种情况下,只要我们达到了效果。

杨贵福 38:21

有价值的就是第一,为什么有用,你需要告诉投资人,你所解决的问题是问题,你做出的这个努力达到的效果真的对目标用户是有帮助的。这是第一个问题。第二个问题,就是为什么可行,这也是科普特别的一点,科普也具有这样的一个特点,就是我们要说服读者,我们要说服投资人,让他认为你的这个方法。可以做到的。

杨贵福 38:51

首先,如果可以做到,首先要保证它是真实的,怎么才能保证真实。事实上,保证真实。按波普尔的观点是不能保证的。按波普尔的观点,科学假说只能证伪而不能证实。但是我们可以用一些方法来增加说服力,其中第一就是观点内部需要自洽,如果观点的内部某一个子观点和另外一个子观点有矛盾的话,我们说它是不自洽的,有冲突有矛盾的,首先它要自洽,并不能保证一定可行,但是如果不自洽一定是假的,如果是假的一定是不可行的。第二就是他应该与投资人和目标读者当前掌握的证据。我们可以认为这是当前我们知道的所有的其他的事实要与当前的证据是一致的。如果不一致的话,要不然他的以前的观测是错的,而更可能他会认为你新提出来的这个观点是错误的。第三就是作为一个科学的方法,它是可证伪的。

杨贵福 39:51

对于未来,我们可能去考虑如何去证伪一个简单的例子就是经常提到的,如果我们有一个假说,这个假说是天鹅是。所有的天鹅都是白色的,这是一个全程判断的断言,那么第一就是我在这句话内部不会出现由于字之类的产生的矛盾,因为这句话太短了,所以看不出来有不下的地方。第二就是与现有的证据一致,你观察了1000只一万只天鹅,这些天鹅它都是白色的。所谓可证伪,就是只需要我们找到一只天鹅,它不是白色的,那么这个时候我的这个观点就是错误的,保留了它作为科学的可能性,就是它是可证伪的。说完这个以前有同学曾经跟我讨论到过这个问题,说科学方法论它能够保证。这是创新吗?不能事实上,创新不见得是科学的创新,这个东西好使,有效,有可能是通过其他的渠道产生的作用。另外,也不能保证它是正确的。以上也不能保证它是正确的,一定会符合这些观点,符合这些条件,但是符合了这些条件也不见得是正确的。我们只能说这样就得到了一个不错的结果。

杨贵福 41:04

我们知道它不是错的,但是它是不是一定是不错的,一定是正确的,也不一定作为投资,作为找投资或者找评审你观点,而不仅仅是科普的话,有一个第三点就是这里面说的为什么你行是和科普不一样的科普,你只需要证明一个科学思想,它是有用的一个科学思想,它是可行的。如果有趣的话,读者就觉得我这是一篇好文章,但是如果你想找投资的话,还要证明一个问题,就是为什么是你行,而不是其他人行,你比其他人行在哪里,这也是一个重要的点。

杨贵福 41:41

这是写给投资人的时候需要注意的讨论的三个问题,他与发明专利当中的三性。专利法当中提到的发明专利的三性刚好是对应的,甚至有很多地方是一致的,其中第一就是新颖性要求,不属于现有技术。如果属于的话,你就不能申请专利说所有权是属于因为它是属于现有技术的所有者的。第二就是它要具有创造性,这个创造性对于科普可能表现的更加明显。第一就是它要有突出的实质性的特点,它确实是一个新的技术,这个技术我们没有见到这个技术有。跟在这之前的技术有本质性的不同,有特别重要的不同,这是第一第二就是它要有显著的进步就是比原来的东西好。如果我们现在做科普提到一个技术,这个技术看起来跟更普通的更朴素的技术也没有什么区别。同时也没有产生更好的效果,就是这里面显著的进步,这个时候我们就觉得这个东西看起来不新奇,看起来没有意思,就是因为它没有足够的创造性。最后,作为工程技术的手段。

杨贵福 42:57

在科普当中有很多时候提到的,事实上不是科学的思想,而是技术的进步。这里面就要考虑到技术的实用性,首先这种方法是能够制造出来的,是能够确切的做出来的。有一些科普或者伪科普提到的东西之所以不是那么的科学,一个原因就是它不可实现的东西不可实现,那就是一个纯粹的可能连理论也算不上。第二,就是他不仅能够做出来,他要能够被别人使用。在管理上也是这样,如果一个手段要求大家达到的效果既不能制造或者制造专利,并不考虑成本。如果不能制造或者在工程上制造的成本特别高,不能使用或者大多数不能大多数人不能使用,或者在使用时需要加很多的约束条件。那么在工程上和管理上都是不可接受的,最后就是发明专利的要求,它能够产生积极的效果就是非消极的,他得是符合现有的道德观的,跟我刚才说科普非常的像。

杨贵福 43:59

在软件工程上也有类似的这种观点,这个是从中心老师的构建制法当中抄下来的,这样的观点叫做 N ABCD,其中那个 N 就是 need 用户的痛点。B benefit 指的是你通过某种手段可能是削弱用户的痛苦,或者是增加用户的效益。那个 a approach。指的就是你采用了什么样的技术手段,使用了什么样的方法,在科普当中和在投资当中都特别关心这种方法是不是有效的。所谓的说服力,那个 C competitive competitors 指的是与你的。

杨贵福 44:39

技术手段向竞争的对手,你和他们相比有什么样的优点,如果你和他们相比都是一样的,也没有明显的优点,不见得什么都比别人强,只要你有比别人突出的特色就可以,这个时候就是有亮点的,如果什么亮点都没有,就没有必要采用你这种方法,不会因为情感或者其他的东西而选择你的方法。只会因为它是有效的有利益的才会选择这种方法就是工程技术典型的一个特点。最后的 delivery 是如何抵达用户如何触达用户,如何让你的用户得到。得到你的贡献就是发明专利的三性投资人还会关心什么?投资人还会关心效益,利益和收益从何而来?有的同学可能会说,那刚才提了 N 提了 B,那这两点不就是效益吗?这里面的效益不是指对用户所产生的效益,投资人关心的是对投资人所产生的效益。

杨贵福 45:42

有的同学在做学生科研项目的时候提到说科研项目最大的益处是什么,它帮助我学习了 java 程序设计语言,它帮助我提高了对软件工程项目的理解,不是对投资人的效益。这个效益一定是第三方对于第三方产生的效益,那对于投资人来讲,如果你做的是一个创业的项目,那么投资人就想关心我投在你身上的钱。怎么才能赚回来。另外一个角度,就是为什么用户产生了什么样的效益,因此谁会付钱?就是这里面说的第二个问题,你的这种方法的用户或者你的产品用户是谁,他是为谁服务的,谁会拿出钱来买这个产品,从而对投资人产生效。什么是不行的,有的同学可能会有这样的想法,比如说我的产品是为全体人类服务的产品适用于所有的学生适用于所有的年轻人不是。这是用户的属性,而不是用户本身。那么用户是什么,用户是一个具体的活着的,有名有姓的那个人,比如说你的这个产品就是为杨贵福这样的人服务的,那我们就能够看到,可以来讨论他到底是还是不是。

杨贵福 47:00

我见到的负面的真实的案例,一种情况是,当你年轻的时候可能考虑不到的,比如说有同学要做事,老的那种 APP 那种产品,那给我看的时候,我一看这界面,我说你这个字这么小。你的那个字的颜色那么的高大上,因此看起来很暗淡,不是那么鲜艳,看不清楚,这显然就是不是老的没有是老的特点,还有同学想做帮助盲人的 APP。

杨贵福 47:30

当后来一顿讨论之后,我问了一个问题,我说几位有没有在现实生活当中认识真实的活着的盲人,一个都不认识?然后他们问我说,那老师你认识盲人吗?我当然认识我怎么会把我的盲人朋友介绍给你们来使用这个产品,你会觉得是对他们对这个盲人朋友的一个恩惠,但是他只不过是你的产品的试用者。这个时候他并没有享受到利益,他是在做出贡献,我怎么会这么对待我的朋友?

杨贵福 48:03

有的同学可能会觉得这是因为我年轻才有这种情况,不考虑投资人的利益,不考虑用户的利益的事情非常的多,比如说很多人的 PPT 做的非常的暗淡,如果投影仪不够亮的话。对方不是在计算机上看的话就看不清楚,比如说有的小饭店的那种贴着水槽的那种自来水,手也伸不过去。还有像东北的学校,高校里面冬天特别滑的那种大理石,这都是在决策的时候没有充分考虑到用户和投资人可能面临的情况。

杨贵福 48:41

还有一个负面的案例,就是比如说有一个高校,它的玻璃幕墙里面上下是通的上下通的玻璃幕墙在冬天的时候非常冷,因为空气流通,而夏天的时候非常闷热,但是为什么设计者会做决策者会接受这个决策,是因为原来的设计当中计划的是使用中央空调。但是由于为了节能中央空调始终也没有开启,这些都是负面的案例,我们始终需要考虑用户是谁为谁服务谁出钱哈工大的暖郎就特别的好,在冬天的时候极用。南方有一些学校有那种回廊,哈工大有暖冷,非常的厚,就是考虑到了谁是用户为谁服务,投资人还会考虑考虑投入。除了收益之外,他会考虑有多少投入,会考虑投入跟收入之间的差距。这些投入不仅包括钱,还包括其他的成本,比如说机会成本,如果他把机会给了别人,把钱投资到了其他的项目当中。那么这个时候就失去了你的这个机会成本,你的这个机会投入多少人力如何存储物流怎么样,怎么去投放都是需要考虑的,还有这种投资得到的回收的周期有多长时间?是不是建设时间非常长,等到有收益的时候,他已经与这个项目无关了,这也是一个需要考虑的问题。除此以外,他还需要考虑风险法律的风险伦理的风险是不是侵犯了别人的专利,还有你的有专利吗?

杨贵福 50:17

你的这个具是不是具有可替代性,或者换句话说叫做护城河有多么的宽,别人是不是也不能够使用这种方法,如果你这方法很容易就是一拍脑袋出来的结果的话,那么很快别人就会模仿这些都是投资人关心的。

杨贵福 50:35

投资人不关心的,包括科普的读者也不会关心的内容是什么?是你的情感,你可能会觉得你在这里面投入了特别多的东西,你非常的热爱这个方向,你觉得科普特别的神圣,这种神圣感,你对你的项目具有特别强烈的信心,这些都没有任何说服力。你已经投入了多少代价,也没有说服力,说明这个东西有多么的好东西效果有多么的神奇,他有多么的可信,但是。

杨贵福 51:07

一个正常的,具有足够修养的投资人,他可能不会差评任何人,也不会打击你的玻璃心,他会表达表现的极端友好礼貌的拒绝你的投资,当然也有不够优雅的,也有不够职业的也有。那作为读者,如果你是作者的话,作为读者。读者通常不评价你的作品,他只是把你的作品扔到一边去不去看不看了,这就是第二点。对于缺陷的探讨,闲货的人才是买货的人。

杨贵福 51:39

批评你的作品远远比忽略你的作品更好一些,虽然它可能让你感觉不是那么特别好,而且无论是找投资人还是把你的作品科普作品拿出来,通常你永远也不能知道拒绝你的真正原因。读者和投资人甚至不会告诉你真正的缺点是什么。如果他告诉你,他就希望你沿着这个方向做改进。所以所有的提出反对意见的都是自己人,特别是你的弱点。你自己团队内部的人不能够在你上场之前把这些弱点暴露出来,并且批评这些弱点,那么这些弱点一定会暴露在商场的时候,或者你的竞争对手会让你的弱点暴露出来。

杨贵福 52:28

我们写稿的时候也是这样写出来稿,读者说这里写的不好,那里写的不好,你的朋友替你审稿的时候你会觉得他不爱我算了,我不用他看了,事实上。读者很可能会有跟他类似的观点,这些是反面的案例,比如说握拳说,请相信我就是对这个投资的评委说的大哭着说,世界真的要毁灭了,地球真的要毁灭了用力的点头说,我有信心捶击胸口说,相信我们一定能行的。还有。

杨贵福 53:02

老师,你有没有考虑到我们会进步的。他为什么要考虑到你进步其他的人不进步也可以达到很好的效果。还有的同学说你为什么不相信我的观点,谷歌小米或者特斯拉他们已经实现了,但是你能够实现吗?你最终能够实现,就是所谓母亲少年穷,你最终能够实现和你现在能够论述它是可信的。这是两回事。论述这个观点是可信的。写出一篇科普文章来说,某一个观点很有趣。有某一个观点很有用,这是你现在的责任。作为作者,你最后说,你看这个观点很好,你当时不接受。事实上这是作者的失败。你作为作者说服读者接受你的观点,而不是说你的观点很正确。最后时间证明了你这不是一个作者说的事情。这是反面的案例。

杨贵福 53:56

那么科普作品谁写的,刚才说的是谁读读的是读者作者来写的,那有一个问题就是谁有资格写,通常很多人都觉得。只有一个领域的资深专家才能够写科普,因为只有他们对于科普有深刻的理解,有这样的观点。科普不仅是文字或者是图形图像这些手段,这些表达媒体的表达手段,同时要求你对这个领域。具有深刻的了解,那问题来了,什么才是资深专家是德隆望重的道德也要好理解,也要深刻。对于整个这个系统有全面的深刻的理解,既全面又深刻,同时能够高瞻远瞩的看到未来。如果是这样的话,问题就来了,什么时候你才能成为这样的人,当你成为这样人的时候,是不是还有比你更资深的专家,那么是不是应该由最最最资深的那个专家来写?其他人就不写了,我觉得这个观点是错的,谁都有资格写,谁都可以写,虽然你的见解可能是肤浅的。我的见解是付钱的,虽然我的见解可能是浅的,但是我就写这个肤浅的观点。如果我作为一个读者的话,我希望读到的是真实可靠的。谁说这个观点不重要,我也不关心是谁说的。事实上连真实可靠也很难保证。

杨贵福 55:24

你怎么能够保证你所读到的东西是真实可靠的就是我们刚才一直在讨论的问题,怎么才能证实它是真实可信的。所以我能够追求的,甚至连真实可靠也不包括我不能追求真实可靠,我能追求的是事实可事实是可追溯的。我希望在科普文章当中能够看到。作者所引述的观点是从哪里来的?我可以沿着这个文献追踪下去。我希望假说是可证伪的,我可以通过实验或者看到其他人做实验来。

杨贵福 55:58

来指出目前这个假说还没有毛病,这是关于谁有资格写的第一个讨论,我认为不仅是资深专家才能写,谁都可以写。任何一个人都能写,比如说我也能写的话,以一个什么样的态度来写。第一个我想到的就是以提高自己的态度。通过写作提高自己,要求写作的时候脸皮要厚按照非门教学法就是写作是一个学习和整理,归纳自己观点的过程。在写作的这个过程当中提高自己对于这个课题的理解,这是第一第二?关于提高自己的第二就是幸运的话,你把你的作品发出来,你如果没有发到纸媒体上,你可以发到公众号上发到你的博客上,那幸运的话会有人指证你虽然有的时候指证你的人态度也不见得友好,有的时候措辞非常的恶劣。但是批评你总好于忽略你批评你就能够让你进步,关于用什么态度写的一个观点当中的一部分,就是提高自己,甚至即使你是领域的专家,你不仅对于其他的领域可能不了解你对于本领域的理解,也可能是局部的,肤浅的,幼稚的过时的,那么怎么才能知道自己是肤浅的。从而让自己变得能够深刻一些,一个方法就是写出来暴露自己的肤浅。当有人骂你的时候,你就知道这个地方错了,然后你就进步了。

杨贵福 57:31

人不是静态的,我们总会进步,怎么进步,就把自己错的不好的这一部分揭示出来,特别是当我们自己不了解的时候,我也不知道,或者你没有足够的信心认为你,那你不能写出来,会有人跟你讨论,你错误的越恶劣,会有越有人跟你讨论,如果你写出来之后,你说我特别自信,我是正确的,你写出来,你都不害怕的话,你觉得那么正确。特别是我作为一个读者,我并不介意你暴露自己的无知,有的人可能会说那会不会以后大家就瞧不起我了,不会的。事实上大家都不会记得你是谁。看完了你的文章之后,也不知道作者是谁,我们知道看到了一些好的文章,只有那种顶尖的特别好的文章才能够留下作者的名字。

杨贵福 58:18

以什么态度来写,我还有考虑,第二就是分享快乐,也是需要脸皮厚的分享快乐大致的看法就是我看到好东西,就刚才说的,你看,我看到一个好东西,我要把这个好东西这个知识分享给你。我读到了这个知识的时候,我很快乐,我知道这个知识,我很快乐,我理解了他这个过程,我很快乐,我也想让你知道这个快乐的过程,可能过了好几年,不知道什么时间,不知道什么地点,不知道谁,你可能会对他有帮助。我写的有一些健身的博客,还有一些自然科学的博客,一直都没有几个人看,有的过几年之后。某一个读者或者通过某一个渠道告诉我说,那个东西对我是有帮助的,当时我特别的感动,当时我特别的高兴,只不过这个高兴好几年之后我才知道。

杨贵福 59:10

有可能你写的东西已经帮助了别人,只是你还不知道而已。那如果谁没有帮助。前面提到了会促进自己提高。不仅如此,你把它写出来之后,你自娱自乐了,可能根本没有几个人看,但是写作的过程回顾了你原来。发现这个知识的快乐的过程,所以你得到了双倍的快乐。作为读者,我也希望看到你喜欢你自己的专业,我也希望你看到你写你自己专业的时候,你享受这个写作的过程。这是第二第三,以什么态度写的。第三,很多人觉得我想写,说到这可能有的人就会有这种感觉,我也想写,后来为什么没写,其中一个重要的原因是追求完美。所以不要追求完美,甚至不要追求创新,要脸皮厚,只有这样才能写出来。当年参加科幻世界笔会的时候,我曾经问过姚海军老师一个问题,现在一看这个问题很幼稚,我当时这样问他,我觉得自己永远也写不出来大刘先生的那种作品了。我说我可怎么办?说到这的时候,每次我讲我的感觉都是听我讲这个段子的人都会觉得姚老师会回答我说。你努力写吧,会写好的,甚至可能会说假话安慰我,说你写的已经很不错了,不,他不是这样回答我的,我问他我永远也写不出来,大刘那样的作品我可怎么办?他是这样回答我的。

杨贵福 01:00:42

他说,科幻的大厦的建设需要添砖加瓦,但是需要什么砖瓦,大家是不会介意的,成为不了,后面是我补充的不是原文成为不了一流,二流的科幻作者,成为八流九流的也是很不错的。后来又过了很多年,他再见到我的时候,他说你现在还在写,我很高兴,他有这种看法,我也很高兴。所以我们不妨去写,不追求完美,写成什么样,我们可能会进步,也可能不会进步,也得不到永远得不到更好的作品。但是前面我们说的那些快乐不是已经得到了吗?

杨贵福 01:01:23

还有的人可能会有一个困惑,就是关于创新的问题,说科幻的点子或者这个科普的点子早就已经有人写过了,朱玉在前我再写就是重复了,就不新了,那怎么办?事实上无所谓。只要你觉得那个观点很有意思,你就可以写,因为没有读过你的读过的那些注意在前的作品的人,有的是有很多人远远比你想象的,要无知,他就是没有看到,我就是一个那样无知的人,你看到的很多有意思的东西我都没有看到,所以你写出来,那我觉得挺好的,而且好歌不妨翻唱。如果说我们翻唱一个歌有侵权什么这一类的科普本来也不是原创的科学思想,这个思想不是我们的,这个理解的过程才是我们的,所以我们不妨再写一遍。我作为读者,最后我作为读者,我不介意在吃正餐以外教科书这一类东西以外,吃垃圾食品越丰富多彩,越有意思越好,翻样再来一个其他的垃圾食品也很好。

杨贵福 01:02:30

第四写什么,我希望我作为读者,我希望看到你写的东西是有趣的故事,新奇的事,它能够给我带来的好处,第一就是。认知升级前面提到的我不知道,而你知道的事情太多了,我也想知道,另外,不如你我知道的多的人也有很多。你的书不见得你的文章不见得非得写给专家或者大学生看,还有很多不知道这件事的人,还有比我更无知的他也想看人类的探索从来没有停止,所以总是有新的知识。有新的东西可以写,就是认知升级,第二就是认知张力的艺术化处理,从这个角度上,歌总可以以新的角度来唱。

杨贵福 01:03:20

你可以从新的角度来写,你可以换一个串联的线索,要不然的话你说这种侦探小说杀人的那种,他不就是一个人死了,然后侦探努力,最后问题就解决了,他都是一样的。打好多游戏,我同事说的就是把这些人带到那头去,把那些人都杀了,是不是这样,就无聊了,所以我们看到的不是结果,而是这个张力的艺术化的过程,我们总是有不同的角度。不同的媒体形式来对它艺术化。当年科幻世界笔会的时候,有同学提到过同同作者提到过,说九州会不会写着,就很快就写完了,一共就那点历史,就那些人。福克纳曾经提到过,他写的是地图上邮票大小的那一点地方,那能写完吗?事实上,我们总是有不同的角度,不同的方式,不同的内容可以写。

杨贵福 01:04:11

第三,关于有趣的故事和新奇的事,科学认知,对于每一个具体的人,你我每一个具体的人的具深化是不一样的,都是需要定制的。有的老师认为说你教了好多年以后,这个课就也就都一样了,其实不因为学生是不同的,新的学生没有经历旧的学生学习的过程,而这个过程只有自己亲身体会才能学到,所以总有新人。总想看到新的故事,总想看到新的表述方法,更何况人类知识当中科学当中总有新技术,新装置,新的发现。我们可以把所有这些东西包括旧的知识定制给新的人,这是有趣的故事,新奇的事。写作的过程当中,我还有一个体会就是作品与作者是分离的。或者说是对事不对人的作为科普作者,作为找投资人的人,我们应该认识到这样的一个观点,就是你是一个信使,你是一个使徒,所谓天使那种你你是天的使徒,你是一个退后的人,你是在转述别人的观点,你是在转述本领域专家的研究结果。而不是阐述你的观点。当你作为一个找投资人的时候,你是代表科学和工程师说话。那有的人可能会觉得我就是一个科普作者,我科学家,我不仅是科普作者,那值得注意的就是未发表的学术成果不应该科普,你应该首先在学术在科学领域当中发表你的观点。如果你同时是一个科普作者的话,你再转换一个方式。

杨贵福 01:05:55

来说明它,如果你不能以严肃的方式,更严肃的方式让你的同行去评判你的工作成果的话,包括投资人来评判你的成果的话,这个时候不应该像。为知他到底对不对的人做出宣传好,这是作品与作者分离,还有一个就是刘慈欣先生也多次指出,他说多次,他指出过不知道是不是多次。他指出过三体当中的人物不能代表他的观点。后面的延伸,这里面包括主角的观点,正面人物的观点,有好报的那些人的观点都不能认为他是作者的观点。同样的科普作者所写的内容不能认为是科普作者的观点。那是科学家的观点。关于作者与作品分离,最后一个就是作者不有粉丝作者没有粉丝这个词现在变成了我喜欢你,我崇拜你,你说的什么都是对的。科学本身就是违背科学精神的你以前说的就算一直是对的,这次也不见得是对的,参见罗素的活鸡。

杨贵福 01:07:03

最后时间有限,最后就是我自己在阅读科普的过程当中感觉很快乐,但是当我自己尝试的时候,我觉得它是一个相当艰难的过程,就像某某在刀锋当中说的,翻越剃刀的边人。非常困难,智者说得救之道也是这样的艰难在哪,其中一个方面是科普的内容,因为涉及到科学,所以它具有本质,复杂性。你要不然就把它简单化,在趣味化的同时简单化,要不然就解决不了这个问题,我不知道如何解决,所以特别优秀的科普作品本身也很少。第二就是科学方法论是理性的,他甚至要求是去感情化的。而情感是科学科普当中是文艺作品当中必须包括的一个部分,要求读者与你产生共情,接受你的观点,从而接受你的观点也是其中的一部分,同时它与科学方法论是有冲突的。

杨贵福 01:08:03

第三就是你的读者原来就持有某一种价值观,他的价值观可能是和你不同的。如果你写了一篇文章,他可能上来就定性你是坏人。在基础之上,其他的内容都不能讨论,连这个东西是不是真实的,他也不关心,这也是艰难所在。除此之外?

杨贵福 01:08:25

第四就是无论是投资人还是读者,他都很忙,他没有时间阅读你的作品,特别是当一个科普作者,像我这样的我自己很菜,我写的东西没有那么深入,没有那么新奇。很多观点别人都知道了,在这种情况下,可能投资人和读者就更不愿意关心我。不过尽管如此,我即使不写。的时候我也可以阅读,也是很快乐的,我即使一直不写,我也可以一直读,我可以做一个好的读者,而且在读的过程当中,虽然。我自己也写不出来那么好的作品,但是我可以张体这个作品我可以评价他。最后祝各位如果你写作的话,祝你写作愉快,如果你不写的话。祝你阅读也愉快,我要说的。

杨贵福 01:09:21

时间上也够了,我要说的就是这些,接下来如果你有要教我的,那就太好了,我现在闭麦把我的我们要停下来。

小知tlq 01:09:34

感谢杨老师的讲授,欢迎各位参会的老师和同学们,你们好!这里是由哈尔滨工业大学斯飞科幻社组织的科普创作营活动的第一课,我们邀请到了东北师范大学计算机学院的杨贵福教授,他同时也是著名的科普科幻作家。先后发表湍流飞天回忆,苏格拉底等作品。刚刚杨老师结合他作为科普科幻作家和读者的经历,作为大学教授,指导学生创新创业,面对投资者产学研结合等经历。向我们列举了各领域的科普经典作品。科幻科普的作者以播种观点,点燃兴趣为目的,写科普的读者具有其他领域的知识基础和相应的逻辑推理能力,希望能够从科普中满足好奇心,感受趣味。当面向投资者时,我们需要从真实的需求方向来提出问题,可以类比发明专利的申请要求具有新颖性,创造性和实用性。投资人关心的是如何从用户身上产生效益,投资的成本和机会成本,回收成本的周期与风险的问题。投资人并不关心你的情感和承诺成本,要学会接受投资人和读者的批评,总好于忽略科普写作。尽管有很多难点,但它并不要求你成为本领域的专家。

小知tlq 01:11:10

不妨以提高自己学习,归纳,分享快乐,不求完美的态度,勇敢的开始写科普。大概以上就是关于杨老师讲授课的总结,现在是课后提问交流的环节,大家如果有问题可以开麦或者在聊天框里面打字提问。

小知tlq 01:12:03

杨老师刚刚那个聊天框里有刘丽同同学提出了一个问题,在人们可以使用各种工具,比如人工智能轻易获取各种知识的当下。科普写作的核心价值与独特意义体现在哪里?专业科普工作者在知识传播中如何有不可替代的作用?就聊天框里不知道杨老师有没有看见?

杨贵福 01:14:10

没有声音吗?现在有了现在有声音了。好谢谢!我刚才做了激情澎湃的演说。我重复一遍,刚才说的话。随着 deep seek 这一类的工具现在能听清楚。好,我看到我的那个麦克风那个条往上去了,随着 deep seek 这类的工具,让我们觉得它不是一个玩具,以前还有玩具的特性化,而是一个生产工具,大家可能对于科普就有了两个期待,其中一个期待,我可以自己。

杨贵福 01:14:55

用 AI 学科普我不懂,我可以让 AI 给我讲,网上有人提到的,用小学生能读懂的话为我解释一下大语言模型,这是一种情况,我可以自己用 AI 写科普给我自己和别人看。第二就是刘立同同学提到的刘立老师。提到的这个观点就是如果我能够用 AI 轻易地获得各种知识,我就不用再看科普了。对于这两个观点,我有这样的一个体会,在我用 deep seek 的时候,我有一个强烈的印象。你跟他说话的时候越清晰,你的逻辑表述你的术语越准确,他的工作效率越高,特别是很多工具在几轮以后,六轮以后,他就忘记你说的是什么了。

杨贵福 01:15:45

所以你在眼前,当时所谓的当下,你的表述清楚就非常的重要,那怎么才能表述清楚,你需要具有专业领域的知识才能表述清楚,科普正是在这个角度上承担了这样的一个责任。虽然你对于原理没有特别深刻的理解,作为读者,我可能对于原理没有深刻的理解。但是我知道了应该使用哪一些术语,而不是比喻和类比。在这种情况下,我用这种方式来驱动人工智能来工作就更加的重要。除此以外,您提到的,如果我用 AI 用各种工具就能轻易获得知识了,是不是就不必科普了。我目前的体会是?ai 还没有达到能够取代人类创造性的表达,对某一种专业知识的理解的程度,他正在重复,你可能看到他的观点很新奇,或者他表述的,他表示的很深刻。他是基于统计的知识,重复了别人的话,它是在生成别人已经生成过的内容,所以这些内容不是新的,要想让他得到这种新的知识总需要有人类,目前还需要有人类。把它描述出来。以上是我对的观点,我觉得仍然是不可替代的,仍然需要我们来写。

杨贵福 01:17:07

说完了,我看刘卫明老师刘维明同学提到了一个问题探讨说科普有批判打假的功能,我没说。科普作家也有很多时候存在有目的去书写的,指的是什么?后面老师也提到科普传递的是科学家的思想。我说的它传递的是科学家的思想,很难说它是客观的,它不是主观的。我指的是科普,作者是替别人说话。特别是科普作者不易傲慢的认为我已经是科学家了,我能够阐述我就能创造。当年在科幻笔会的时候,就有人提到过科幻作者需要指引科学的未来。刘思琴老师就提出,那是不可能的。科普作者,这个科幻作者说,我们更加有想象力。刘老师说,科学家的想象力比你要发达。你们想过的这些东西,科学家早都想过了,都写出了论文。科普有批判和打假的功能,我也不知道不太了解。我这么回答您满意吗?想从这个角度上讨论,可能我 Hold that.

杨贵福 01:18:42

谢谢刘立彤同学!

小知tlq 01:19:00

老师,我也提一个问题,就是有一种说法,如果在科普作品中出现了科学出出现了数学公式的话,那么这个科普作品就会影响人们阅读它的兴趣就不是一个好的科普作品。然后老师。

杨贵福 01:19:19

时间简史时间简史。

小知tlq 01:19:22

对就是霍金说的老师怎么看待这个观点?

杨贵福 01:19:26

我同意,我也不愿意看我看科普作品的时候,我也不希望记这个公式,除非我对它有期待,也有那样的科普作品,比如说。我一下子蒙住了,没有想起来这个名字。苏联一个作家写的叫。我现在想到的是贝利耶夫,但肯定不是这个名字写的与几何的代数的相关的里面就是有很多公式,还有图示,但它确实就是这个角度的科普,我心里有这样的预期。我能够接受,但是如果一个物理的化学的或者社会科学的科普,他在科普的过程当中,由于作者的无能,所以不能够使用。公式以外的方法或者术语以外的方法来表达的话,或者他没有能力解释他所使用的术语的话,这个时候我作为读者是不满意的。我希望他能够以我能够理解和容易接受的方式来表达。

杨贵福 01:20:32

这是我对您刚才提到的霍金的那个观点的看法,我挺赞同的。刘伟明老师刘维明同学,这里面提到的就是科普是科学的应用者,我的观点稍微有一点不同。科普是科学的科学思想的传播者。有一点像死者代言人是替科学在另外一个渠道另外一个角度发言的人。事实上,科学家需要传播他的观点,因为最终是由投资者纳税人国家这一类的机构来决定你到底可以做哪一些研究。要不然就没有人给你拿钱,那在这种情况下,你需要说服投资人,你需要以投资人能够理解的语言能够接受的方式来表达你的观点。这是我补充的。

小知tlq 01:21:44

现在各位还有问题吗?如果一会儿大家还有问题的话,可以发在我们科普创作营的 QQ 群里面讨论,然后我会把大家讨论的问题转达给杨老师,非常感谢今天杨贵福教授。的讲课和对我们问题的解答。

小知tlq 01:22:16

稍后,就这本次课程将会本次课程录制的视频将会发在群里,并由深圳市科学与幻想成长基金会制作。切片22次传播就与会的各位应该都没问题,都同意。

杨贵福 01:22:37

没有问题。

小知tlq 01:22:39

那今天的课程就在这里结束了,祝大家科普写作科普阅读愉快!

杨贵福 01:22:51

谢谢各位老师,谢谢各位同学!现在我们就可以退出?

我想看到的科普 文字(豆包听录)

以下文字出自由 哈工大 思飞科幻社 组织,我参与 思飞科幻社科普创作营的讲座。

持续时间1小时多一点,含交流讨论。现场语音和切片可以在B站等播放,等我有了地址,会发来显摆。

文字稿我原计划整理,最终还是懒了。感觉有弃置的风险,还是把未整理的版本发出来吧。如果以后想更完美,也许可能再整理。不完美的版本,总比没有强。

PPT在 我想看到的科普 PPT https://zhuanlan.zhihu.com/p/32969274730

以下是由豆包整理的文字。错讹之处,请根据上下文脑补猜测吧。

科普创作与阅读相关探讨

2025-03-26 19:57

【智能总结】

本次科普创作营课程,杨贵福教授结合自身经历,探讨科普创作、阅读及面向投资人等相关要点与难点。

- **科普作品类型**:有讲原理、讲故事、讲历史人物等类型,甚至部分小说、专业知识读物等在特定角度也可视为科普。

- **科普受众动机**:读者读科普是为满足好奇心、寻求伦理认同、希望作品有用及有趣味,与作者动机有差异。

- **读者知识基础**:读者有自身知识结构和逻辑推理能力,作者应考虑读者基础使作品易懂。

- **科普表达方法**:可通过外部效果和内部原理让读者理解,常用比喻、类比等手段,但要注意可能产生误导。

- **科普创作目的**:旨在播种观点、点燃读者兴趣,降低难度的同时要做到好玩、有用、合乎逻辑与道德。

- **面向投资人**:需说明项目有用、可行及自身优势,类似发明专利三性;投资人关心效益、用户、投入、风险等。

- **科普写作资格与态度**:谁都能写,应以提高自己、分享快乐、不追求完美的态度写作。

- **写作内容**:写有趣故事、新奇事,实现认知升级、艺术化处理认知张力,满足不同人具身化需求。

- **作品与作者关系**:作品与作者分离,作者不应有粉丝,未发表学术成果不宜先科普。

- **科普写作难点**:内容复杂、科学方法论与情感冲突、读者价值观差异、读者时间有限。

- **AI与科普**:科普能帮人清晰表述需求驱动AI工作,且AI无法取代人类创造性表达专业知识,科普仍重要。

【原文】

说话人 1

请问主持人,还有一分钟的时间,我应该按照约定的时间开始吗?

说话人 2

能听见我的声音吗?

说话人 3

我听,我听不清。

说话人 2

您说话,喂,我都没听清,请讲。

说话人 3

我这边有录屏,就是就正常来讲,然后之后如果有人现在没来的话,可以之后看录屏。

说话人 2

我现在开始了,还有一分钟不到,一分钟还有5秒。嗯,好的,我听不太清楚您说话我开始是吗?嗯,好的,能看见我屏幕是吧?能看见哈,好嘞,能看见我屏幕,我就广播一下我的屏幕看看。现在我是全屏,并且能听见我的声音,是吧?好嘞,我现在全屏了,我看不见。这个如果你有什么要求的话,你就直接说,我能听见。

说话人 2

各位同学,各位老师,今天我想跟大家交流的是,我想交流的是我想看到的科普。作为一个科普读者,我读了不少科普作品,在这里面想说一下我觉得哪些好?我希望看到什么样的作品?如果您写的话,我希望看到您写成什么样。第一首先是如果咱们时间够的话,我再把这一部分展开,我现在大体上说一下,就是我的口味谈不上高。虽然这里面说的是优秀典范,但是很多人看不进去的,我也很喜欢。所以说科普在我这可能是荤素不忌,比如这样的我很喜欢,有一些是讲原理的,像卡尔萨根的魔鬼出没的世界这一类的。它是比较罕见的,还讲了除了科这个科学事实以外。讲了很多科学方法论这一类的事。还有度量是一本数学的书,这是一类讲原理的,如果后面有时间的话,我再展开,我这里面就跳过了。这是讲原理的一类。

说话人 2

还有有的科普是讲故事的,这里面有的我们把它归结为科普,比如说物理世界奇遇记一般都把它归结为科普。而有的比如说像神秘岛通常可能会把它归结为科幻。这里面可能大家也看到像拯救计划、火星救援,还有像流浪地球,可能通常都是直截了当的归结为科幻。我为什么在这里面归结为讲故事的科普?是因为他们都属于那种我们通常称之为硬核科幻的,硬科幻的那种,它这里面所有的故事情节都必须依赖于科学设定的这个。依赖于这样的一个设定,而且这个设定是科学的,有现在的科学原理可以支持的。像龙蛋与中子星相关的这一类,虽然它可能脱离咱们现实的一些感受,但是它也是科学的。它这一类我也把它归结为讲故事的科普,我也很喜欢。

说话人 2

第三类是可能更周边一些讲历史的、讲人物的,比如说像头两篇计量单位进化史和精度这一类的。它讲的是科学史与科学史发展相关的,像精度与这个工程技术、科学技术发展相关的,追求精确是机械工程这一类发展相关的。这类我觉得很有意思。还有一些与人物相关的,包括像别逗了,费曼先生讲费曼的,还有一些讲 it 人物的,我都觉得很有意思。就是讲历史的和讲人物的,它也算是一种科普。嗯,还有看了很多短片的。嗯,可能就是像大家刷抖音这一类的有这种感觉,我看了很多短片的,包括,嗯,比较早期的。像新雨丝的方舟子,还有三思科学,就是 our science,曾经一度写过很多非常好的文章。还有科学松鼠会和果壳。现在我经常看像中科院物理所这样的这种公众号,有趣的制造公众号也挺有意思。李清晨是写这个手术二百年的那位作者。这一类的我觉得很有意思,这是短篇的,适合速读的。

说话人 2

还有一些可能大家不把它归结为科普,甚至可能觉得它离科学比较远,但是对我来讲它就是科普。它普及了我不了解的很多知识,比如像烟火漫卷一般我们认为它是小说,它也确实是小说。从我的角度看,我通过它了解某一个时代哈尔滨的那种状态,这是通过这个作品得到的计算机图形学。凡是学计算机的同学可能觉得这是专业课,对我来讲,它是我用来学习线性代数的一个手段。我觉得通过它来学习挺有意思的。其他的下面这些有的是历史的,有的是自然史的,有,有的是这个像政治学的,还有西方现代思想讲义的这一类的。对我来讲,因为它是另一个学科的,我完全不了解,它可能是社科的,也可能是自然科学的。对于我来讲,即使它是一个专著,我读的时候也是把它读成了科普,当成了我的休闲娱乐的读法。

说话人 2

还有一类,这一类就更是小说了,比如说像金庸的、琼瑶的,有的同学可能会觉得这个怎么能算是科普呢?以少林寺为例,当年在我们那个年代,大家看少林寺的时候,就是把它当成科学来看待的,把它当成教科书。我们就按照这种方法来练,包括那个时候的杂志像奥秘,我们现在觉得这里面有好多伪科学。像众神之车,有很多伪科学那一类的。但是我们当时觉得很有意思,那有的同学会觉得那这种跟科普有什么关系?它和科普一个最接近的关系是它这里面没有超自然的,甚至包括像众神之车这一类的,没有超自然的人格化的神。所以说所有的讨论都是基于唯物主义观点的,星球大战和星际迷航,就像这两部小说或者电影一样。在当时少林寺这一类的片子给我们的影响就是科学,应该是这样的,它吸引了我们对科学的兴趣。

说话人 2

以上这些例子我在后面的这些观点当中能够提到,和上面我说这些例子那个观点是一样的。第一个讨论的问题在这里面是第二点,就是我们的科普作品是写给谁的?通常很多人都会认为科普的受众对象是公众,我觉得不完全是,因为当我作为科学的科普的受众对象的时候。我的感受略有不同。从动机上看,你如果是一个作者的话,或者你要写给投资人一个申请的话,你的感受可能是这样的。你觉得充满了正义感,你要弘扬科学精神,你要提高公众的科学素养。公众就是我,你要提高我公众的科学素养,你要打破我对于科学或者你的学科的神秘感。

说话人 2

这里面你可能觉得包括有的是科学事实和结论是我不知道的,我作为读者我不知道的,有的可能你觉得你这里面有一些特别深刻的科学方法论。是希望你所阐述的。这是你作为作者你的感受,你可能想说服投资人,或者是你在深,你在参加学生的科研项目。说服投资人给你评一个更高的奖项,或者你正在创业。你想说服投资人拿出钱来真枪,这个真枪实弹的支持你。但是从另一个角度上,从我的角度上,我作为一个读者的话,我读科普的动机和刚才你的那些伟大的理想是不同的。当我作为一个读者读科普的时候,我只是想满足我的好奇心。

说话人 2

这个好奇心是有一个限定条件的,通常都是希望对于我的世界观的拓展,而不是反对我原来的世界观。只是帮助我在原有的基础之上做一些扩展,或者为我现有的世界观提供支持。有更多的案例在这个意义上满足我的好奇心,而不是希望冲击我,让我的世界观颠覆,即使有很多人会提到颠覆了我的世界观。没有,他只是颠覆了世界观的一小点部分而已。

说话人 2

第二,作为一个读者,我在阅读科幻的时候有一个动机,这个动机是隐含的,就是我希望我的伦理认同的那一部分。我认为道德的善的那一部分能够得到理性的支持。也就是我认为它是好的,它是善的,不仅它是符合道德观和这个伦理观,我的道德观和我的伦理观的。并且我希望它是理性的,我希望能从科普作品当中得到一些理性的支持。比如说我特别热爱环保,我特别喜欢小猫小狗,我特别喜欢这些东西,我希望看到的科普是爱护小猫小狗的。到这种意义上,我就觉得,哇,这个科普让我感觉很好。

说话人 2

第三,在读科普的时候,我作为一个读者我会有这种感觉,就是科普对我有什么用?我读或者具体的说,我读这篇文章它对我有什么用?也就是与我何干?如果我不能感觉到、不能理解这一篇科普对我的帮助的话,那么它就过于高大上,过于高高在上了。最后一点,既然作为科普而不是教科书,我希望它是有趣味的,那对比一下。做这个对比,这我就对比一下,我们就能够发现作者的动机和读者的动机事实上关系不大,没有多少重合点。或者说我们需要特别的做一些工作,我们才能够发现他们是重合的。如果一个读者想要读懂科幻的话,从读者的角度和从作者的角度上也会略有不同。我们都知道需要读者有一些知识基础才能够读懂科幻科普,特别是当你作为一个科普作家的时候。你可能会有这种感觉,说你读不懂的话是你的问题,这可能是你作为一个作者。你可能会产生这种看法,但是我作为一个读者,我有一个略有不同的看法。就是你以为我需要知识基础,但是事实上我已经具备了一些知识基础,但是这些知识基础可能没有受到你作为一个读者。作为一个作者的重视。

说话人 2

第一就是你可能认为我需要有一定的知识基础才能够了解这些东西,不过作为一个读者,他通常都已经具有了坚定的知识基础。即使你认为他的知识基础是错误的,或者他的知识基础是薄弱的。但事实上他都有一个稳定的知识基础,他有非常多的已知的事实,他对于他的领域非常的了解。这就是我在知识结构这个里面提到的第一小点里面讲到的,对于某一个具体的领域不熟悉。可能我作为读者只是对您特别熟悉的这个领域不熟悉,但是我对于我的领域我是有我的智慧的。换句话说,我在我的领域当中,即使这个领域你可能非常看不上我,在我的领域当中我也是一个专家。所以从这个角度上我怎么去理解你的作品?这是一个作为读者,你需作为一个作者你需要了解的问题。

说话人 2

另外一个就是我对于我的领域,除了我有很一个读者对他自己的领域会有很深的知识结构,同时他对于他的领域会有很多细节。同样我为什么读您写的这一部作品,就是因为您这里面有很多细节,这些细节是我感兴趣的。它有的时候会让我不再对你的这个学科具体领域有神秘感,但是与此同时可能会造成我对你这个学科的理解简单化、庸俗化。一个有趣的说法就是没用的知识又增加了,有的时候我们读科普其实就是这种感觉,虽然这个知识没有什么用。但是它很有意思,我又了解到了很多细节。

说话人 2

第二就是除了知识结构之外,在每一个读者在他自己的领域当中,他都是有一定的逻辑推理能力的。只不过有的时候作者认为似乎读者的推理能力好像没有那么强一样。其实不是的。有很多您作为作者写的作品,读您作品的人,他是很成熟的人,他也是成年人,年龄很大的人。有的他在他自己的领域当中是非常有所建树的,只是不了解你的这个领域而已。

说话人 2

那我作为一个读者,我对作者的要求就是最下面一条,我希望你不要求我的知识基础,在现有的基础的情况下。充分考虑到我的基础的情况下,能够读懂您的作品,那是最好的。好,这是对于知识基础。您写科普,我读科普这个时候就是连接你作为信源和我作为信宿这样的一个过程,在这个过程当中我考虑到了我。我想了一些与方法相关的事。其中有一个案例就是有同学提到过这个问题,这是真实的案例,他就跟我提,他说我给导师或者给谁写了一封邮件。然后这导师也没回,我就以为他收到了。

说话人 2

那现在的问题就是收不到邮件,或者这个邮件他收到了他也没有回复,这个到底是谁的责任?是导师的责任,还是你发出邮件的这个人的责任?事实上那个导师可能根本不知道你发出邮件这件事,所以说没有收到邮件是作者的责任,如果不能理解的话。是作者的责任,而不是读者的责任。读者甚至可能不知道你这封邮件,你这个信息的存在。

说话人 2

如果想让读者理解作者所表达的东西,怎么表达?从方法上我从看的各种作品上有两个体会。第一个就是通过外部效果,外部效果是可观测的,或者换句话说,你阐述了一种新的技术,你阐述了一种新的科学原理。那么它能够带来什么样的结果?我能够看到的结果,这个就基于大家共同的生活经验,也就是说在刚才我提到的一个读者,他在他自己的领域当中有自己的知识结构。能够了解到很多细节,那么在这种情况下他可以了解,可以理解你的外部效果。这也回答了刚才的那个问题,与我何干。这个何干就是外部效果所创造的神奇的、有趣的这种结果。如果这种结果读者能够理解的话,他就觉得这个东西是有意思的,或者至少这个东西对于他会产生强烈的影响。这是第一,这是外部效果。但是通常我们看科普的时候,我们不仅仅希望外部效果,这就是下一个问题,就是内部原理。就是如何的问题,我们为什么要产生阐述内部原理呢?这也是科普甚至包括科幻一个很重要的工作。是因为只有阐述内部原理,它才是可信的,才能够让读者觉得这个东西是真的,否则的话我们可能就要采取另外的一些手段。比如说诉诸权威、逻辑谬误。人民日报提到的逻辑谬误,比如说诉诸权威、诉诸民众、诉诸情感等等,诸如此类的,这些都是非理性的。那如果你想理性的让别人接受你的观点,接受这个科学事实的话,也就是说可信可有说服力。

说话人 2

那么需要的就是了解内部原理,在读者不了解作者所在的领域的情况下,如何去了解内部原理?我们在实践当中能看,能够看到很多具体的细节,一些手段,比如说我们经常教师在讲课的时候。经常用比喻把一个我们大家不熟悉的东西比喻成我们熟悉的东西。我们经常做的事情,比如说电压和电流比喻成水流,把水压比喻成,把这个电压比喻成水压。但是水和电,其实如果你仅仅从压的这种角度上,从流动的角度上看起来似乎是相同的。但是当我们分析电路的时候,我们不希望使用这一类的方法,它会误导你的读者,误导教师。会误导学生。这时候我们更加喜欢用像基尔霍夫电压定律、基尔霍夫电流定律用量化的方程约束的方法来描述这件事。

说话人 2

那比喻的缺点在于什么?比喻的缺点在于你的水和电,这两个东西当中有一些是相同的,但是当读者听到的时候,他所理解的水和你想说的水的某一个特性。不是水本身某一个特性可能想象的是不一样的。我作为一个读者,我可能就会想象电是透明的吗?是像水那样透明的吗?电在流动的时候会有哗哗的声音吗?电是不是也像水那样可能分成水分子,那么电的这个分子是由什么组成的?是由氢和氧组成的吗?这些也是比喻当中可能产生的误导。

说话人 2

好,这是比喻,还有一种就是类比和比喻,它俩有挺多相似的地方,类比也是把 a 和 b 它俩共同的地方。我们认为它们相同的地方连接在一起,这是内部原理的两种。主要的我们平时在日常生活当中经常使用的手段,在自然科学当中我们经常用的方法是用你我共知的。用读者和作者共知的动词来描述你我共同知道的名词之间的关系。但是这个时候可能会产生一个问题,就是读者会怀疑你说的这些术语都是啥意思?你可能使用了一个术语,比如基尔霍夫电压定律,那基尔霍夫电压定律当成基尔霍夫是什么意思?基尔霍夫电压定律,我们把整个这段话说了一遍,然后那什么是节点?这些都是读者可能产生的困惑,这种在自然科学当中的处理是我们使用共同认可的数学和物理基础。在这个基础上定义了这些概念,自底向上的做逻辑推演。但是除非你在这个领域当中,这种东西你听起来可能觉得它就不是有趣的,它虽然是可信的。但它不是有趣的。所以在科普和教科书之间我们可能需要选择一个更活泼的。科普和教科书之间我们需要选择这样的一个位置,这是方法。

说话人 2

之所以我们能够选择到一个位置来完成科普,原因是因为科普的一个重要的动机,无论是作者的还是读者的动机是作者想要播种某一种观点。点燃读者对于某一个观点的兴趣。所以他的目的不是传道授业解惑,而是第一点,那个看那里就像我看到了一个很好玩的东西。我是作者的话,我就会跟读者说,我说你看那里,读者一看说,哦,这个东西很有意思。剩下的事情就与读,与作者没有关系了,读者会自己沿着这个方向去发展,去更加深入的了解这个东西。

说话人 2

从这个意义上讲,因为科普是播种或者点燃,所以说它降低了难度。我们不需要做自底向上的逻辑推导,我们不需要坚实的物理和数学基础,也可以传达这个概念。比喻和类比都可以用,那从另外一个角度上,对于我们的,无论是语言和各种媒体如何生动的描述你的观点。从这个意义上它也提高了难度。

说话人 2

如果想要播种或者点燃某一种观点的话,那就涉及到这里面,我放在第二点当中的,它首先需要好玩。只有好玩才能够让或者学生或者读者对于这个问题产生兴趣,如果它很难。难到我觉得不好玩了,他可能都不想看了。这也是科幻之所以能发展的一个原因,就是因为他更好玩,他也不是更加不那么严肃。

说话人 2

第二要让读者觉得这个东西对他是有用的,对他是有与他是有关的,就是刚才提到的与我何关的这个问题。第三它是合乎逻辑的。这里面所谓合乎逻辑不是合乎作者的逻辑,而是符合读者的逻辑。我作为读者,我觉得我能够理解一个大概,我能够接受你的观点的原因是你的观点和我理解的这个过程是相吻合的。比如说我没有发现你内部的矛盾,你观点内部的矛盾。我没有发现你的观点和我既有的观点当中有严重的冲突,或者这些冲突是可以解释的,或者冲突讨论之后发现我原有的细微的某一个观点是错误的。这种我们我把它看成合乎逻辑的,并且它应该是合乎道德的。合乎道德就是合乎我原来的价值观、我原来的伦理观。如果这些东西与我原来的这些观点不同的话,可能不是一两篇的文章,甚至不是一两本书能够解决的。

说话人 2

最后在播种和点燃当中我想到的一件事就是作为作者,你的责任是你要尽量避免读者,事实上也包括要避免作者产生这样的误解。就是让他觉得因为这个东西这么简单、这么有趣,我都能够理解,所以我觉得我可以指导科学发展了。我应该尽可能的不要让读者产生这样的看法,要让他觉得这东西虽然简单,但是他应该知道这个东西更多的细节是难以理解的。或者更多的细节是不会这么轻松去解决的。这是关于播种和点燃我的一个看法,这里面有个2.5,刚才第二就是写给谁的?他是写给读者的。咱们在做这次交流的时候有一个要求,这个要求就是如果对方是投资人的话,应该来怎么看待这个问题?这里面说一下我的体会。第一呢就是投资人他关心的问题,投资人关心这样的一些问题。第一投资人关心为什么它是有用的?你提出的这个问题,或者你提出的这解决方案,你提出这个申请,你提出这个项目为什么它是有用的?如果它有用的话,它应该满足这样的条件,就是这个需求和这个问题它应该是真实的。所谓真实不是指它的,不是指它符合客观事实,而是指它是有价值的,它对于你的诉求的目标用户是真的存在的一个需求能够解决用户的问题。给用户带来效益。这是所谓的有价值需求是真实的,问题是真实的,有的时候我们会见到这个导师们提到说你这是一个伪问题。或者说你的这个问题是一个真的问题吗?指的就是这个,就是需求和问题是真实的。那在为什么有用当中还有一点就是它的效果是有益的,对于这个问题,对于这个需求会产生一定的效果。在这里有的老师,有的同学可能会提出一个问题,需求和需求的效果有意义,难道不是一回事吗?它俩略有区别。

说话人 2

问题指的是一个痛点,是用户或者你的目标用户有诉求的这个人,他当前所面临的一个问题。他当前所面临的一个困难。但是你的效果并不见得是解决了这个困难,而是可能使得他的问题他的困难变得不那么明显了。比如说现在有一个人他肚子疼,是他不舒服,这就是一个问题,这个问题是真实的。好,就是现在我们要解决肚子疼问题,我们有两个不同的角度,一个角度是我们找到他不肚子疼的原因。然后解决这个原因。比如说他受凉了,那好,那我们让他加热,他肚子就不疼了。但是还有另一种方法,就是我可以让他感觉不到疼痛,如果你吃了止疼药,它仍然是凉的。问题的根本原因没有得到解决,但是得到了缓解。有的同学在这个时候可能提出一个观点,难道我们不应该总是去解决根本问题吗?不是这样的,很多时候根本问题解决不了,或者根本问题的解决需要较大的代价,那么在这种情况下。只要我们达到了效果,就是有价值的,这是第一,为什么有用?你需要告诉投资人,你所解决的问题是一个真的问题,你做出的这个努力达到的效果真的对目标用户是有帮助的。

说话人 2

这是第一个问题,第二个问题就是为什么可行?这也是科普特别的一点,科普也具有这样的一个特点,就是我们要说服读者,我们要说服投资人。让他认为你的这个方法是可以做到的。首先如果可以做到,首先要保证它是真实的。怎么才能保证真实呢?事实上,保证真实按波普尔的观点是不能保证的。按波普尔的观点,科学假说只能证伪而不能证实。但是我们可以用一些方法来增加说服力,其中第一就是观点内部需要自洽,如果观点的内部某一个子观点和另外一个子观点有矛盾的话。我们说它是不自洽的。有冲突、有矛盾的,首先他要自洽,并不能保证一定可行,但是如果不自洽一定是假的,如果是假的一定是不可行的。

说话人 2

第二就是他应该与投资人和目标读者当前掌握的证据。我们可以认为这是当前我们知道的所有的其他的事实要与当前的证据是一致的,如果不一致的话。要不然他的以前的观测是错的,而更可能他会认为你新提出来的这个观点是错误的。第三就是作为一个科学的方法,它应该是可证伪的,对于未来我们可能去考虑如何去证伪。一个简单的例子就是经常提到的,如果我们有一个假说,这个假说是天鹅,是所有的天鹅都是白色的。这是一个全程判断的断言。那么第一就是我在这句话内部不会出现由于自指之类的产生的矛盾,因为这句话太短了,所以看不出来有不自洽的地方。第二就是与现有的证据一致。你观察了1,000只、1万只天鹅,这些天鹅它都是白色的,所谓可证伪就是只需要我们找到一只天鹅,它不是白色的,那么这个时候我的这个观点就是错误的,保留了它作为科学的可能性,就是它是可证伪的。说完这个以前有同学曾经跟我讨论到过这个问题,说科学方法论它能够保证这是创新吗?不能,事实上创新不见得是科学的。创新这个东西好使有效,有可能是通过其他的渠道产生的作用,另外也不能保证它是正确的。以上也不能保证它是正确的,正确的一定会符合这些观点,符合这些条件,但是符合了这些条件也不见得是正确的。我们只能说这样就得到了一个不错的结果。我们知道它不是错的,但是它是不是一定是不错的,一定是正确的,也不一定作为投资,作为找投资或者找评审你观点。而不仅仅是科普的话,有一个第三点,就是这里面说的为什么逆行是和科普不一样的科普,你只需要证明一个科学思想它是有用的。一个科学思想它是可行的,如果有趣的话,读者就觉得我这是一篇好文章。

说话人 2

但是如果你想找投资的话,还要证明一个问题,就是为什么是你行,而不是其他人行?你比其他人行在哪里?这也是一个重要的点,这是写给投资人的时候需要注意的讨论的三个问题。它与发明专利当中的三性,就是专利法当中提到的发明专利的三性刚好是对应的,甚至有很多地方是一致的。其中第一就是新颖性要求不属于现有技术,如果属于的话你就不能申请专利,说这个所有权属于我的。因为它是属于现有技术的那个所有者的。第二就是它要具有创造性,这个创造性对于科普可能表现的更加明显。第一就是它也有突出的实质性的特点,它确实是一个新的技术,这个技术我们没有见到,这个技术有跟在这之前的技术有本质性的不同。有特别重要的不同,这是第一,第二就是它要有显著的进步。就是比原来的东西好,如果我们现在做科普提到一个技术,这个技术看起来跟更普通的、更朴素的技术也没有什么区别。同时也没有产生更好的效果,就是这里面显著的进步。这个时候我们就觉得这个东西看起来不新奇,看起来没有意思,就是因为它没有足够的创造性。

说话人 2

最后作为工程技术的手段的科普当中有很多时候提到的事实上不是科学的思想,而是技术的进步。这里面就要考虑到技术的实用性。首先这种方法是能够制造出来的,是能够确切的做出来的。有一些科普或者伪科普提到的东西之所以不是那么的科学,一个原因就是它是不可实现的,如果一个东西不可实现。那就是一个纯粹的可能连理论也算不上。

说话人 2

第二就是它不仅能够做出来,它要能够被别人使用,在管理上也是这样,如果一个手段要求大家达到的效果既不能制造或者制造专利。并不考虑成本。如果不能制造或者在工程上制造的成本特别高,不能使用或者大多数不能,大多数人不能使用。或者在使用时需要加很多的约束条件,那么在工程上和管理上都是不可接受的。

说话人 2

最后就是发明专利的要求它能够产生积极的效果,就是非消极的它得是好的,符合现有的道德观的。跟我刚才说科普那个非常的像在软件工程上也有类似的这种观点,这个是从邹欣老师的构建之法当中抄下来的。这样的观点叫做 n a b c d,其中那个 n 就是 need 用户的痛点。那个 b benefit 指的是你通过某种手段可能是削弱用户的痛苦,或者是增加用户的效益。那个 a approach 指的就是你采用了什么样的技术手段,使用了什么样的方法。在科普当中和在投资当中都特别关心这种方法是不是有效的,所谓的说服力。

说话人 2

那个 c competitors 指的是与你的技术手段相竞争的对手,你和他们相比有什么样的优点?如果你和他们相比都是一样的,也没有明显的优点,不见得什么都比别人强,只要你有比别人突出的特色就可以。这个时候就是有亮点的,那如果什么亮点都没有,就没有必要采用这种方法。不会因为情感或者其他的东西而选择你的方法,只会因为它是有效的、有利益的才会选择这种方法。这是工程技术典型的一个特点。

说话人 2

最后的 delivery 是如何抵达用户,如何触达用户,如何让你的用户得到你的这个贡献?就是发明专利的三性。投资人还会关心什么呢?投资人还会关心效益、利益和收益从何而来?有的同学可能会说,那刚才提了 n,提了 b,说这两点不就是效益吗?这里面的效益不是指对用户所产生的效益,投资人关心的是对投资人所产生的效益。比如有的同学在做学生科研项目的时候提到说这个科研项目最大的意义处是什么?它帮助我学习了 Java 程序设计语言,它帮助我提高了对软件工程项目的理解,这个不是对投资人的效益。这个效益一定是第三方,对于第三方产生的效益。那对于投资人来讲,如果你做的是一个创业的项目,那么投资人就想关心我投在你身上的钱怎么才能赚回来。

说话人 2

另外一个角度呢?就是为什么样的用户产生了什么样的效益,因此谁会付钱?就是这里面说的第二个问题,你的这种方法的用户或者你的产品用户是谁?它是为谁服务的?谁会拿出钱来买这个产品,从而对投资人产生效益?什么样的是不行的?有的同学可能会有这样的想法,比如说我的产品是为全体人类服务的,我的产品适用于所有的学生。

说话人 2

适用于所有的年轻人,这个不是,这是用户的属性,而不是用户本身。那么用户应该是什么呢?用户是一个具体的活着的有名有姓的那个人。比如说你的这个产品就是为杨贵福这样的人服务的,那我们就能够看到可以来讨论他,他到底是还是不是我见到的负面的真实的案例。

说话人 2

一种情况是当你年轻的时候可能考虑不到的,比如说有同学要做视老的那种 APP,那种产品。那给我看的时候,我一看这界面,我说你这个字这么小,你的那个字的颜色那么的高大上,因此看起来很暗淡。不是那么鲜艳,看不清楚,这显然就是不视老的,没有视老的特点。

说话人 2

还有同学想做帮助盲人的 APP,那当后来一顿讨论之后,我问了一个问题,我说几位有没有在现实生活当中认识真实的活着的盲人?一个都不认识,然后他们问我说这个,那老师你认识盲人吗?我当然认识,但是我怎么会把我的盲人朋友介绍给你们来使用这个产品?你会觉得是对他们,对这个盲人朋友的一个恩惠。但是他只不过是你的产品的试用者,这个时候他并没有享受到利益,他是在做出贡献,我怎么会这么对待我的朋友呢?有的同学可能会觉得,哇,这是因为我年轻才有这种情况。

说话人 2

不是的,不考虑投资人的利益,不考虑用户的利益的事情非常的多,比如说很多人的 PPT 做的非常的暗淡。如果投影仪不够亮的话,对方不是在计算机上看的话就看不清楚。比如说有的小饭店的那种贴着水槽的那种自来水,手也伸不过去。还有像东北的学校,高校里面冬天特别滑的那种大理石,这都是在决策的时候没有充分考虑到用户和投资人可能面临的情况。还有一个负面的案例,就是比如说有一个高校,它的玻璃幕墙里面上下是通的,这种上下通的玻璃幕墙在冬天的时候非常冷。因为空气流通,而夏天的时候非常闷热,但是为什么设计者会这么做?决策者会接受这个决策?是因为原来的设计当中计划的是使用中央空调,但是由于为了节能,中央空调始终也没有开启。

说话人 2

这些都是负面的案例,我们始终需要考虑用户是谁,为谁服务、谁出钱。哈工大的那个暖狼就特别的好,在冬天的时候极其实用。南方有一些学校有那种回廊,海工大有暖廊,非常的好,就是考虑到了谁是用户,为谁服务。投资人还会考虑投入,除了收益之外,他会考虑有多少投入?会考虑投入跟收入之间的差距,这些投入不仅包括钱,还包括其他的成本,比如说机会成本。如果他把这个机会给了别人,或者把这个钱投资到了其他的项目当中,那么这个时候就失去了你的这个机会成本。你的这个机会投入多少人力,如何存储物流怎么样,怎么去投放,都是需要考虑的。

说话人 2

还有这种投资得到的回收的周期有多长时间?是不是建设时间非常长,等到有收益的时候,它已经与这个项目无关了?这也是一个需要考虑的问题,除此以外,它还需要考虑风险、法律的风险、伦理的风险是不是侵犯了别人的专利?还有你的这个有专利吗?你的这个具是不是具有可替代性?或者换句话说叫做护城河有多么的宽?别人是不是也不能够使用这种方法?如果你这方法很容易就是一拍脑袋出来的结果的话,那么很快别人就会模仿,这些都是投资人关心的。

说话人 2

投资人不关心的,包括科普的读者也不会关心的。内容是什么呢?是你的情感,你可能会觉得你在这里面投入了特别多的东西,你非常的热爱这个方向。你觉得科普特别的神圣,这种神圣感你对你的项目具有特别强烈的信心,这些都没有任何说服力。你已经投入了多少代价,也没有说服力,说明这个东西有多么的好,这个东西效果有多么的神奇。或者它有多么的可信。但是一个正常的、具有足够修养的投资人,他可能不会差评任何人,也不会打击你的玻璃心。他会表端表现的极端友好,礼貌的拒绝你的投资,当然也有不够优雅的,也有不够职业的,这种也有。那作为读者,如果你是作者的话,作为读者通常不评价你的作品,他只是把你的作品扔到一边去。不去看,不看就是了。

说话人 2

这就是第二点,对于确切的探讨闲货的人才是买货的人,批评你的作品远远比忽略你的作品更好一些。虽然他可能让你感觉不是那么特别好,而且无论是找投资人,还是把你的作品、科普作品拿出来。通常你永远也不能知道拒绝你的真正原因。读者和投资人甚至不会告诉你真正的缺点是什么,如果他告诉你的话,他就希望你沿着这个方向做改进。所以所有的提出反对意见的都是自己人。特别是如果你的弱点,你自己团队内部的人不能够在你上场之前把这些弱点暴露出来,并且批评这些弱点的话。那么这些弱点一定会暴露在上场的时候,或者你的竞争对手会让你的弱点暴露出来。

说话人 2

我们写稿的时候也是这样,写出来稿读者说这里写的不好,那里写的不好,你的朋友替你审稿的时候。你会觉得,哇,他不爱我。算了,我不用他看了,事实上读者可很可能会有跟他类似的观点。这些是反面的案例,比如说握拳说请相信我,这是对这个投资的评委说的,大哭着说世界真的要毁灭了。地球真的要毁灭了,得用力的点头说我有信心捶击胸口说,相信我们一定能行的。还有老师你有没有考虑到我们会进步的,他为什么要考虑到你进步?其他的人补亲补也可以达到很好的效果。

说话人 2

还有的同学说,你为什么不相信我的观点?谷歌、小米或者特斯拉他们已经实现了,但是你能够实现吗?而且你最终能够实现就是所谓莫欺少年穷。你最终能够实现和你现在能够论述它是可信的,这是两回事。论述这个观点是可信的,写出一篇科普文章来说,某一个观点很有趣,有某一个观点很有用。这是你现在的责任。作为作者,你最后说说,你看这个观点就是很好,你当时不接受,事实上这是作者的失败。你作为作者应该说服读者接受你的观点,而不是说你的观点很正确。最后时间证明了你这不是一个作者应该说的事情,这是反面的案例。

说话人 2

那么科普作品谁写呢?刚才说的是谁读哈?读的是读者作者来写的。那有一个问题就是谁有资格写?通常很多人都觉得只有一个领域的资深专家才能够写科普,因为只有他们对于科普有深刻的理解。有这样的观点,科普不仅是文字或者是图形图像这些手段,这些表达媒体的表达手段,同时要求你对这个领域具有深刻的了解。

说话人 2

那问题来了,什么才是资深专家呢?是德高望重的,道德也要好,理解也要深刻,对于整个这个系统有全面的深刻的理解,既全面又深刻。同时能够高瞻远瞩的看到未来。如果是这样的话,问题就来了,什么时候你才能成为这样的人呢?当你成为这样人的时候,是不是还有比你更资深的专家?那么是不是应该由最资深的那个专家来写呢?其他人就不写了。所以我觉得这个观点是错的,谁都应该有资格写,谁都可以写,虽然你的见解可能是肤浅的我的见解是肤浅的。虽然我的见解可能是肤浅的,但是我可以就写这个肤浅的观点。如果我作为一个读者的话,我希望读到的是真实可靠的。谁说这个观点不重要,我也不关心是谁说的,事实上连真实可靠也很难保证,你怎么能够保证你所读到的东西是真实可靠的呢?这是我们刚才一直在讨论的问题,怎么才能证实它是真实可信的?所以我能够追求的,甚至连真实可靠也不包括。我不能追求真实可靠,我能追求的是事实,可事实是可追溯的。我希望在科普文章当中能够看到作者所引出的观点是从哪里来的。我可以沿着这个文献追踪下去,我希望假说是可证伪的,我可以通过实验或者看到其他人做实验来指出这个。目前这个假说还没有毛病。

说话人 2

这是关于谁有资格写的第一个讨论,我认为不仅是资深专家才能写,谁都可以写。那如果说任何一个人都能写,比如说我也能写的话,应该以一个什么样的态度来写呢?第一个我想到的就是以提高自己的态度,通过写作提高自己,所以说要求写作的时候脸皮要厚。按照非门教学法就是写作是一个学习和整理归纳自己观点的过程。在写作的这个过程当中提高自己对于这个课题的理解,这是第一,第二关于提高自己的第二个就是幸运的话。

说话人 2

你把你的作品发出来,你如果没有发到自媒体上,你可以公众号上,发到你的博客上。那幸运的话会有人指正你,虽然有的时候指正你的人态度也不见得友好,有的时候措辞非常的恶劣。但是批评你总好于忽略你,批评你却能够让你进步。这是关于用什么态度写的一个观点当中的一部分,就是提高自己,甚至即使你是领域的专家。你不仅对于其他的领域可能不了解,你对于本领域的理解也可能是局部的、肤浅的、幼稚的、过时的。那么怎么才能知道自己是肤浅的,从而让自己变得能够深刻一些?一个方法就是写出来暴露自己的肤浅,当有人骂你的时候,你就知道,哇,这个地方我想错了。然后你就进步了。

说话人 2

人不是静态的,我们总会进步。怎么进步呢?就把自己错的不好的这一部分揭示出来,特别是当我们自己不了解的时候,我也不知道对不对。或者你没有足够的信心认为你对不对,那你不妨写出来,会有人跟你讨论,你错误的越恶劣会有越有人跟你讨论。如果你写出来之后,你说那我特别自信我是正确的,那你写出来呗。如果你都不害怕的话,你觉得那么正确,特别是我。作为一个读者,我并不介意你暴露自己的无知。有的人可能会说,那会不会以后大家就瞧不起我了?不会的,事实上大家都不会记得你是谁。看完了你的文章之后也不知道作者是谁,我们只是知道看到了一些好的文章,只有那种顶尖的特别好的文章才能够留下作者的名字。

说话人 2

以什么态度来写?还有一个考虑,第二就是分享快乐,也是需要脸皮厚的,分享快乐大致的看法就是,哎,我看到一个好东西。就刚才说的,哎,你看这个,我看到一个好东西,我要把这个好东西这个知识分享给你。我读到了这个知识的时候我很快乐,我知道这个知识,我很快乐,我理解了它这个过程我很快乐。我也想让你知道这个快乐的过程。而且可能过了好几年,不知道什么时间,不知道什么地点,不知道谁,你可能会对他有帮助。我写的有一些健身的博客,还有一些自然科学的博客,其实一直都没有几个人看,但是有的过了好几年之后。某一个读者或者通过某一个渠道告诉我说那个东西对我是有帮助的。当时我特别的感动,当时我特别的高兴。只不过这个高兴好几年之后我才知道。所以有可能你写的东西已经帮助了别人,只是你还不知道而已。

说话人 2

那如果谁没有帮助呢?前面提到了会促进自己提高,不仅如此,你把它写出来之后,你自娱自乐了,可能根本没有几个人看。但是写作的过程回顾了你原来发现这个知识的快乐的过程,所以你得到了双倍的快乐。作为读者,我也希望看到你喜欢你自己的专业,我也希望你看到你写你自己专业的时候,你享受这个写作的过程。

说话人 2

这是第二、第三以什么态度写的?第三很多人觉得我想写,说到这可能有的人就会有这种感觉,我也想写,后来为什么没写呢?其中一个重要的原因是追求完美,所以不要追求完美,甚至不要追求创新,要脸皮厚,只有这样才能写出来。当年参加科幻世界笔会的时候,我曾经问过姚海军老师一个问题,现在一看这个问题很幼稚。我当时这样问他,我说我觉得自己永远也写不出来大刘先生的那种作品了,我说我可怎么办呢?说到这的时候,每次我讲我的感觉都是听我讲这个段子的人都会觉得姚老师会回答我说你努力写吧。会写好的,甚至可能会说假话安慰我说你写的已经很不错了。

说话人 2

不是的,他不是这样回答我的,我问他我永远也写不出来大刘那样的作品,我可怎么办呢?他是这样回答我的,他说科幻的大厦的建设需要添砖加瓦,但是需要什么样的砖瓦,大厦是不会介意的。成为不了,后面是我补充的,不是原文,成为不了一流二流的科幻作者,成为八流九流的也是很不错的。后来又过了很多年,他再见到我的时候,他说你现在还在写,我很高兴他有这种看法,我也很高兴。所以我们不妨去写,不追求完美,写成什么样就是什么样,我们可能会进步,也可能不会进步。也可能得不到,永远得不到更好的作品。但是前面我们说的那些快乐不是已经得到了吗?还有的人可能会有一个困惑,就是关于创新的问题,说这个科幻的点子或者这个科普的点子早就已经有人写过了。

说话人 2

珠玉在前,我再写就是重复了,就不新了,那怎么办呢?事实上无所谓,只要你觉得那个观点很有意思,你就可以写。因为没有读过你的,读过的那些珠玉在前的作品的人有的是,有很多人远远比你想象的要无知。他就是没有看到。我就是一个那样无知的人,你看到的很多有意思的东西我都没有看到,所以你写出来我觉得挺好的。而且好歌不妨翻唱。

说话人 2

如果说我们翻唱一个歌有侵权什么,这一类的科普本来也不是原创的科学思想,这个思想不是我们的。这个理解的过程才是我们的。所以我们不妨再写一遍,而且我作为读者,最后我作为读者,我不介意在吃正餐以外,教科书这一类东西以外吃垃圾食品。越丰富多彩越有意思,越好。翻样,再来一个,其他的垃圾食品也很好。

说话人 2

最第四,写什么呢?我希望我作为读者,我希望看到你写的东西是有趣的故事、新奇的事,它能够给我带来的好处。第一就是认知升级。前面提到的我不知道,而你知道的事情太多了,我也想知道。另外不如你,我知道的多的人也有很多,你的书不见得你的文章不见得非得写给专家或者大学生看。还有很多不知道这些事的人,还有比我更无知的,他也想看。而且人类的探索从来没有停止,所以总是有新的知识、有新的东西可以写,这是认知升级。第二就是认知张力的艺术化处理,从这个角度上,歌总可以以新的角度来唱,你可以从新的角度来写。你可以换一个串联的线索,要不然的话,你说这种侦探小说杀人的那种,他不就是一个人死了。然后侦探努力,最后问题就解决了,他都是一样的,打好多游戏,按我同事说的,就把这些人带到那头去。把那些人都杀了,是不是?就是这样?这个就无聊了,所以我们看到的不是结果,而是这个张力的艺术化的过程。

说话人 2

我们总是有不同的角度,不同的媒体形式来对待艺术化。当年科幻世界笔会的时候,有同学提到过,同有作者提到过,说九州会不会写着写着就很快就写完了。一共就那点历史,就那些人福克纳曾经提到过他写的是地图上邮票大小的那一点地方,那能写完吗?事实上我们总是有不同的角度,不同的方式,不同的内容可以写。

说话人 2

第三,关于有趣的故事和新奇的事,科学认知对于每一个具体的人,你我,每一个具体的人的具身化是不一样的。都是需要定制的。有的老师认为说你教了好多年以后,这个课就一就就就都一样了。其实不是的,因为学生是不同的,新的学生没有经历旧的学生学习的那个过程,而这个过程只有自己亲身体会才能学到。所以总有新人就总想看到新的故事,总想看到新的表述方法。更何况人类知识当中,科学当中总有新技术、新装置、新的发现,我们可以把所有这些东西。包括旧的知识定制给新的人,这是有趣的故事、新奇的事。写作的过程当中我还有一个体会,就是作品与作者是分离的,或者说是对事不对人的,作为科普作者。

说话人 2

作为找投资人的人,我们应该认识到这样的一个观点,就是你是一个信使,你是一个使徒。所谓天使那种,你是天的使徒,你是一个吹号的人,你是在转述别人的观点,你是在转述本领域专家的研究结果。而不是阐述你的观点。当你作为一个找投资人的时候,你是代表科学和工程师说话。那有的人可能会觉得我就是一个科普作者,我就是一个科学家,我不仅是科普作者,那值得注意的就是未发表的学术成果不应该科普。你应该首先在学术,在科学领域当中发表你的观点,如果你同时是一个科普作者的话,你再转换一个方式来说明他。如果你不能以严肃的方式、更严肃的方式让你的同行去评判你的工作成果的话。包括投资人这一类来评判你的成果的话,这个时候不应该像未知他到底对不对的人做出宣传。

说话人 2

好,这是作品与作者分离。还有一个就是刘慈欣先生也多次指出,他说多次他指出过,不知道是不是多次他指出过三体当中的人物不能代表他的观点。后面是我的引申,这里面包括主角的观点,正面人物的观点,有好报的那些人的观点,都不能认为他是作者的观点。同样的,科普作者所写的内容不能认为是科普作者的观点,那是科学家的观点。

说话人 2

关于作者与作品分离,最后一个就是作者不应该有粉丝。作者没有粉丝这个词现在变成了我喜欢你,我崇拜你,你说的什么都是对的,科学这是本身就是违背科学精神的。你以前说的就算一直是对的,这次也不见得是对的,参见罗素的火鸡。最后时间有限,最后就是我自己在阅读科普的过程当中感觉很快乐,但是当我自己尝试的时候。我觉得它是一个相当艰难的过程。就像某某在刀锋当中说的,翻越剃刀的边缘非常困难,智者说得救之道也是这样的,艰难在哪?其中一个方面是科普的内容,因为涉及到科学,所以它具有本质复杂性,你要不然就把它简单化。在趣味化的同时简单化,要不然就解决不了这个问题,我不知道应该如何解决,所以特别优秀的科普作品本身也很少。

说话人 2

第二就是科学方法论是理性的,它甚至要求是去感情化的。而情感是科学科普当中,是文艺作品当中必须包括的一个部分,要求读者与你产生共情,接受你的观点。从而接受你的观点也是其中的一部分,同时它与科学方法论是有冲突的。第三就是你的读者原来就持有某一种价值观,他的价值观可能是和你不同的。如果你写了一篇文章,他可能上来就定性你是坏人,在这个基础之上其他的内容都不能讨论。连这个东西是不是真实的他也不关心,这也是艰难所在。除此之外,第四就是无论是投资人还是读者,他都很忙,他没有时间阅读你的作品,特别是当一个科普作者。像我这样的我自己很菜,我写的东西没有那么深入,没有那么新奇,很多观点。别人都知道了,在这种情况下,可能投资人和读者就更不愿意关心我。不过尽管如此,我即使不写的时候我也可以阅读,也是很快乐的。而且我即使一直不写,我也可以一直读,我可以做一个好的读者,而且在读的过程当中,虽然我自己也写不出来那么好的作品。但是我可以臧否这个作品,我可以评价它。

说话人 2

最后祝各位,如果你写作的话,祝你写作愉快,如果你不写的话,祝你阅读也愉快。我要说的时间上也够了,主要说的就是这些,接下来如果你有要教我的,那就太好了,我现在闭麦。把我的广播也停下来。

说话人 4

嗯,好的,感谢杨老师的讲授,欢迎各位参会的老师和同学们,你们好,这里是由哈尔滨工业大学思飞科幻社组织的科普创作营。活动的第一课我们邀请到了东北师范大学计算机学院的杨贵福教授,他同时也是著名的科普科幻作家。先后发表有湍流飞天回忆、苏格拉底等作品。刚刚杨老师结合他作为科普科幻作家和读者的经历,作为大学教授指导学生创新创业,面对投资者产学研结合等经历。向我们列举了各领域的科普经典作品。科幻科普的作者应该以播种观点、点燃兴趣为目的写科普。科普的读者具有其他领域的知识基础和相应的逻辑推理能力,希望能够从科普中满足好奇心。

说话人 4

感受趣味。当面向投资者时,我们需要从真实的需求方向来提出问题。可以类比发明专利的申请要求具有新颖性、创造性和实用性。投资人关心的是如何从用户身上产生效益,投资的成本和机会成本、回收成本的周期与风险的问题。投资人并不关心你的情感和成功成本,要学会接受投资人和读者的批评,总好于忽略。科普写作尽管有很多难点,但它并不要求你成为本领域的专家。不妨以提高自己,学习、归纳、分享快乐,不求完美的态度,勇敢的开始写科普。大概以上就是我关于杨老师讲授课的总结,现在是课后提问交流的环节,大家如果有问题可以开麦或者在聊天框里面打字提问。

说话人 4

嗯,杨老师,刚刚那个聊天框里有那个琉璃同学提出了一个问题,在人们可以使用各种工具。比如人工智能轻易获取各种知识的当下,科普写作的核心价值与独特意义体现在哪里了?专业科普工作者在知识传播中。嗯,看到了。

说话人 2

你又读了一遍,我又回顾了一下,谢谢刘丽彤,是吧?谢谢刘丽彤同学,你这个问题问的挺好的,现在随着咱们能够使用 deep sick,deep sick 看起来不是一个玩具。而是一个工具。随着这个情况发展,大家对于科普可能会产生两个期待,两个看法。第一就是 我可以用 AI 写科普给自己看,或者给别人看。第二就是您提到的这个,既然用 AI 就能轻易获得各种知识了,那么我是不是就不用读科普了呢?这是两个观点。我的体会是这样的,当我用 Deepcik 这一类豆包还有 Kimi 这一类工具的时候。我有一个特别强烈的体会,就是你对他描述你的需求越清楚,他做的越好。那在这种情况下就要求我们要描述的清楚,怎么才能描述清楚呢?如果想描述清楚,降低交流的迭代的次数,特别是 AI 的 AI 过了几个阶段之后,比如6次迭代。它就忘了你刚才说什么了。在这种情况下,离得越近的话,它可能反应的越强烈,在这种情况下你能够清晰表述就特别的重要。

说话人 2

哇,没声。现在有吗?没有声音。没有声音。我看看。没有声音吗?现在有了,现在有声音了。好,谢谢,我刚才做了激情澎湃的演说。哈哈,没有,我重复一下我刚才说的话,随着 deep sick 这一类的工具,现在能听出能听清我说话。好,我看到我的那个麦克风的那个条往上去了,随着 deepfake 这一类的工具,让我们觉得它不是一个玩具。以前还有玩具的特性,而是一个生产工具。大家可能对于科普就有了两个期待。其中一个期待就是说我可以自己用 AI 写科普,我不懂,我可以让 AI 给我讲,就像网上有人提到的。用小学生能读懂的话为我解释一下大语言模型,这是一种情况,我可以自己用 AI 写科普给我自己和别人看。

说话人 2

第二就是刘丽彤同学提到的,刘丽彤老师提到的这个观点就是如果我能够用 AI 轻易的获得各种知识。我是不是就不用再看科普了?对于这两个观点,我有这样的一个体会。在我用 Deepcik 的时候,我有一个强烈的印象,你跟它说话的时候越清晰,你的逻辑表述你的术语越准确。它的工作效率越高。特别是很多工具在几轮以后,比如6轮以后,它就忘记你说的是什么了。所以你在眼前,当时所谓的当下,你的表述清楚就非常的重要。

说话人 2

那怎么才能表述清楚呢?你需要具有专业领域的知识才能表述清楚,科普正是在这个角度上承担了这样的一个责任。虽然你对于原理没有特别深刻的理解,作为读者,我可能对原理没有深刻的理解,但是我知道了应该使用哪一些术语。而不是比喻和类比。在这种情况下,我用这种方式来驱动人工智能来工作就更加的重要。除此以外,您提到的这个,如果我用 AI、用各种工具就能轻易获得知识了,是不是就不必科普了?我目前的体会是,AI 还没有达到能够取代人类创造性的表达对某一种专业知识的理解的程度。他正在重复。你可能看到他的观点很新奇,或者他表述的很好,他表述的很深刻,他是基于统计的知识重复了别人的话。它是在生成别人已经生成过的内容,所以这些内容不是新的,要想让它得到这种新的知识。总需要有人类,目前还需要有人类把它描述出来。

说话人 2

以上是我对这个的观点,所以我觉得仍然是不可替代的,仍然需要我们来写。我说完了这个,我看刘卫明老师,刘卫明同学提到了一个问题,探讨说科普有批判打假的功能。我没说科普作家也有很多时候存在有目的去书写的,这指的是什么呢?后面老师也提到科普传递的是科学家的思想,我说的它传递的是科学家的思想,但很难说它是客观的。它不是主观的。我指的是科普作者是替别人说话,特别是科普作者不易傲慢的认为我已经是科学家了,我能够阐述。我就能创造。当年在科幻笔会的时候就有人提到过科幻作者需要指引科学的未来。刘慈欣老师就提出那是不可能的,科普作者,这个科幻作者说我们更加有想象力,刘慈欣老师说科学家的想象力比你要发达。你们想过的这些东西科学家早都想过了,而且都写出了论文,科普有批判和打假的功能。我也不知道,不太了解我,我这么回答您满意吗?是想从这个角度上讨论吗?可能。我,嗯,好的好的,也谢谢刘丽彤同学。

说话人 4

哎,老师,我也提一个问题吧。就是,嗯,有一种说法,就是说如果在科普作品中出现了时间简史。

说话人 2

是啊是啊,我同意,我也不愿意看,哼,我看科普作品的时候我也不希望记住有公式,除非我对它有期待。也有那样的科普作品,比如说这个,我一下子懵住了,没有想起来这个名字。苏联一个作家写的,叫,我现在想到的是贝利耶夫,但肯定不是这个名字写的。与几何的代数的相关的里面就是有很多公式还有图示,但它确实就是这个角度的科普。我心里有这样的预期,我能够接受,但是如果一个物理的、化学的或者社会科学的科普,他在科普的过程当中。由于作者的无能,所以不能够使用公式以外的方法或者术语以外的方法来表达的话,或者他没有能力解释他所使用的术语的话。这个时候我作为读者是不满意的,我希望他能够以我能够理解和容易接受的方式来表达,这是我对您刚才提到的霍金的那个观点的看法。我挺赞同的。

说话人 2

刘卫明老师,刘卫明同学,这里面提到的就是科普是科学的应用者。我的观点稍微有一点不同。科普是科学的,科学思想的传播者。有一点像死者,代言人是代言人是替科学在另外一个渠道、另外一个角度发言的人。事实上科学家需要传播他的观点,因为最终是由投资者、纳税人、国家这一类的机构来决定你到底可以做哪一些研究。要不然就没有人给你拿钱。那在这种情况下,你需要说服投资人,你需要以投资人能够理解的语言、能够接受的方式来表达你的观点。这是我补充的。

说话人 4

好的,现在各位还有问题吗?如果一会大家还有问题的话,可以发在我们科普创作营的 QQ 群里面讨论,然后我会把大家讨论的问题转达给杨老师。非常感谢今天杨桂福教授的讲课和对我们问题的解答。

说话人 2

谢谢!

说话人 4

稍后就这本次课程将会,本次课程录制的视频将会发在群里,并由深圳市科学与幻想成长基金会制作切片二次传播。就与会的各位应该都没问题,都同意吧?好的,嗯,那谢谢各位老师,谢谢各位同学。

说话人 2

现在我们就可以退出了吗?谢谢,谢谢。绞肉机,谢谢。苦味酸,谢谢,谢谢 Jane,谢谢。不会读,谢谢。Crow Crow,谢谢。

以上文本由 AI 总结生成

用AI豆包帮助背单词2

书接上回,我在百词斩里截屏173张图片,准备刻意训练一下背这些单词。我们知道规模不同,问题的性质经常也不同。上一轮只有23个单词,这一轮173个单词。上次的方法还有效吗,需要多大程度调整?

从图片到列表

我把173张图片从手机传到PC机,用的工具是 anlink。这173张图片在同一目录下,插入到word中只需要选中所有文件。把word上传给豆包,然后要求抽取单词,用表格输出。

豆包输出的表格大体是对的,但是单词数并非173个,而是167个。

……

我要再返工。

豆包给出的确实是173行,但是从168开始明显在瞎编,也许这些文字是从图片中猜测和选取的。

我在屏幕上左边打开word,右边打开豆包输出的表格,逐一核对,很快发现,在word中的截图里有重复的单词,还有其他截图并不是百词斩单词的。刚好167个。我告诉豆包,她没有抱怨。

豆包提示可以看看这些词的分类,我看了,感觉对背单词没什么帮助。

英译汉

我提出和上次相同的要求,英译汉,四选一,HTML。

这次豆包的候选项不是随机的,反复提示几次也不对。有代表性的错误如下,要么候选项第1个总是对的,要么系统也不知道哪个是对的,随机。

虽然没有得到正确的代码,不过这一轮我知道了有doubaocanvas这种输出方法,长的代码可以要求输出到这里,可以预览。

为了得到 英选汉的题目,我另开了一个会话。除了1.单词不必从word中抽取,而由我把抽取的结果贴过来,2.用 douban canvas输出,除这两点以外,要求不变。

生成差不多是对的。与我的上述要求一致,不过我考虑得不周全。

我补充需求,要求扩大鼠标选中的响应范围,题号标注出总的题目数。

输出结果符合我的要求。

不过我发现167道题太多了,答一次可能要花不少时间,超出我的耐性。所以切成每20道题一组,按组提交。

豆包生成的代码有一次bug,我报告故障现象后她改正了。

由于不知道是本组中的第几题,感觉答题时容易绝望。所以,我补充要求,给出在本组中的题号,用举例的方法提了要求。

这就行了。干活以前打开这个长太167个问题的页面,发送到第2个虚拟桌面。干一会儿活儿,做一组,不关闭,再切回工作环境。每次答题仅20道,不太累,就当休息调节了。

10个句子

第一轮生成的页面,答题时要求我用键盘输入单词。

又生成了一次,对了。

没事的时候做上一组。如果感觉心情尚好,F5刷新,再来一组。

表格

因为单词多,所以生成表格容易超出豆包每轮会话的上限,所以我拆成每组36个单词。手动拆的,不然最后一组不足36个,豆包容易糊涂。

……

最后一组。

……

共生成5个HTML文件,文件名一如既往的糟糕,内容尚可。

原计划打印到纸上,记不住的单词仔细看看。这几天做了几轮英选汉和完形填空,错误的次数急剧下降,百词斩也常出现50个单词里一个也不错。感觉表格的必要性不大了。

此文也发布在以下站点。
----
知乎 https://www.zhihu.com/people/yang-gui-fu-52

独立博客 https://younggift.net/

微信公众号 杨贵福
----
以下是我曾经发布博客的站点,有些旧文。
----
豆瓣 - 因为审核"我的日记",不再更新。
https://www.douban.com/people/younggift/?_i=0098558fqLUL9h

CSDN – 因为要求我登记手机号码的原因是“为了您的安全”,不再更新。
https://blog.csdn.net/younggift?type=blog

blogsopt – 因为从我的机器不可达,无法更新

用AI豆包帮助背单词

我用百词斩背单词3349天了,现在每天复习50个,大约3分钟。有些单词错了一遍又一遍,在文章里见到时也经常面生,似曾相识却咬不准。

在开始刷这一轮GRE3000期间,我想,是不是偶尔可以对自己要求严格一些,刻意训练一下。

第一步 在刷的过程中,有错的单词,就截屏留存图片。

以下是积累了23个单词时测试的。

第二步 把这些图片传到计算机上,然后插入到 word 文件中。

第三步 把这个word上传给豆包,要求她把单词抽取出来。

我也试过用DeepSeek,他说文件过大,还是识别不到文字来着。忘了,总之是不行,我没有深究,立即换了豆包一试。是这些单词没错。

第四步 各种辅助记忆方法。

接下来,就是各种辅助记忆的方法了。

1. 英译汉

提出要求,英选汉、单选。

我把代码保存了,用浏览载入,做了一遍题,能统计得分。

2. 完形填空

我的要求如下。

练习题效果如下。第一遍做我错了一道,不死心,又做了一次,全对了。刷新以后题目会变。

3. 故事记忆

我的要求如下。

故事的效果如下,有中文的,有英文的。后来我加了要求,鼠标悬停显示解释。

4. 记忆卡片

我最初的要求如下。

后来补充了发音、图片,效果如下。鼠标在最左列单词上悬停,会发出声音。

声音和图片费了些周折。周折的主要原因,是我“没有接入互联网”。声音最初给的是 wikipedia的一个项目,图片也是,但是从我这里不可达。后来又建议我几个地址,统统不可达。

在我绝望的时候,豆包她提醒我,把声音和图片放在本地吧。于是就有了上面的版本。

也可以改下格式导入ANKI,打印出来裁成 flash card。按说应该可以,不过我都没有做。

第五步 千里之行始于足下。

开始截屏之后没有多久,就到了前天。完成了这一轮GRE3000,错的单词积累了173个。新一轮GRE3000开始了,同时,开始刻意训练这173个刺头吧。

此文也发布在以下站点。
----
知乎 https://www.zhihu.com/people/yang-gui-fu-52

独立博客 https://younggift.net/

微信公众号 杨贵福
----
以下是我曾经发布博客的站点,有些旧文。
----
豆瓣 - 因为审核"我的日记",不再更新。
https://www.douban.com/people/younggift/?_i=0098558fqLUL9h

CSDN – 因为要求我登记手机号码的原因是“为了您的安全”,不再更新。
https://blog.csdn.net/younggift?type=blog

blogsopt – 因为从我的机器不可达,无法更新

舵机数字机械钟表-部署手册

舵机数字机械钟表

部署手册

目录

1. 接线 2

1.1. 主要部件 2

1.1.1. Aduino UNO R4 WIFI 板 2

1.1.2. 舵机控制板 3

1.1.3. 框架 5

1.1.4. 舵机 6

1.2. 供电 7

1.3. 连接 8

1.3.1. 单片机板到舵机控制板-供电和地线 8

1.3.2. 单片机板到舵机控制板-串口线 10

1.3.3. 舵机控制板到舵机-单个舵机的线序 11

1.3.4. 舵机控制板到舵机-所有舵机的线序 12

2. 舵机安装 16

3. 校准舵盘 17

4. 烧写代码 19

4.1. 板子 19

4.2. 库 20

4.3. 编译 22

4.4. 串口 23

4.5. 烧写 24

5. 每次 加电运行 24

5.1. 手机热点 24

5.2. 加电顺序 25

6. 说明 25

接线

主要部件

Aduino UNO R4 WIFI 板

简称单片机或单片机板子。

舵机控制板

型号SCC-32

框架

白色的泡沫塑料,原本用来运输鸡蛋的。下图中分别是反面(固定2个电路板,单片机板 和 舵机控制板的),和正面(固定28个舵机)。

舵机

蓝色的,每个尺寸大约3cm*3cm*1cm,共28个。下图中有7个舵机。

供电

单片机板 用 USB Type-c 口(华为手机充电线)供电。

舵机控制板 用USB Micro-B口 (kindle充电线)供电。舵机控制板如果不单独供电,不能带动全部28个舵机,可以带动4~8个舵机,可以烧写代码。

如果不认识这些口,能插进去的就是对的。

连接

单片机板到舵机控制板-供电和地线

单片机一侧,如下图所示,红线接5V向舵机供电,黑线接GND向舵机提供地线。

舵机一侧,如下图所示。

单片机板到舵机控制板-串口线

用于由单片机板向舵机控制板发送舵机动作指令。

舵机控制板到舵机-单个舵机的线序

舵机的3根线中,棕色接舵机控制板的地。

舵机线颜色 舵机控制板上的标记
PWM信号 PULSE
电源 VS2

舵机控制板一侧,每个竖排的3个插针 接 1个舵机。

舵机一侧。

舵机控制板到舵机-所有舵机的线序

如下图所示,为舵机控制板。注意红框,每个竖排接1个舵机,共可以接32个舵机,本项目使用其中的28个,[0, 27]。

4个数字,每个数字都是7段码,共28段。

4个数字的段与舵机控制板间的对应关系如下图所示,其中的数字即上图中舵机控制板上红框里的编号。

以下连接方法与上文方法等价,只是表述不同。

数字的7段码按下图命名为 a~g。

4个数字的28段与舵机控制板的连接关系,也可按下表操作。

第X个数字 舵机控制板上的
舵机编号
1 a 0
1 b 1
1 c 2
1 d 3
1 e 4
1 f 5
1 g 6
2 a 7
2 b 8
2 c 9
2 d 10
2 e 11
2 f 12
2 g 13
3 a 14
3 b 15
3 c 16
3 d 17
3 e 18
3 f 19
3 g 20
4 a 21
4 b 22
4 c 23
4 d 24
4 e 25
4 f 26
4 g 27

舵机安装

舵机安装角度需要按本手册中的要求。

舵机是三维的,安装要注意手性。

修改舵机角度需要改代码和重新校准舵盘。

如下图所示的角度安装在框架上,

数字的段/翻转片 显示时,舵盘与框架平行,指向右侧(舵机线方向);

数字的段/翻转片 显示时,舵盘与框架垂直,指向这张照片的纸面以外,⊙。

校准舵盘

舵盘,即与舵机连接的白色塑料片,上面要连结数字的段/翻转片。数字的段/翻转片 与 舵机的角度如下图所示。

舵盘角度的标准步骤如下。

第一步 烧写并运行 1.ino。

第二步 每个舵机的角度 按 2 舵机安装 的要求摆放。

第三步 把舵机的输出轴插入舵盘,注意舵盘的旋转角度,使得舵盘水平向右。

每个舵盘的角度需要单独校准。

第四步 烧写并运行 2.ino,应观察所有舵盘的角度都旋转至垂直向外。

代码/工程名称 1.ino 0.ino
数字的段/翻转片 显示 隐藏
舵盘 水平,向右 垂直,向外⊙
占空比 2000us/2500us 1000 us/2500us

烧写代码

烧写代码在 arduino ide 中进行。

在这里 https://www.arduino.cc/en/software 下载,解压缩,免安装。

运行下面的程序。

板子

Arduino ide第一次编本项目的代码时,需要加载库,方法如下。

在下图中的文件框“2”位置分别输入 ntpclient 和 time,然后点击 “INSTALL”,安装上图中的两个库。

编译

菜单 File | Open,选择要编译的 *.ino 文件,如clock.ino。

菜单 Sketch | Veryfy/Compile 编译。

这一步,不需要把单片机板子插在计算机上。

串口

这一步需要把单片机板子插在计算机上。

在我的机器上,如果COM3没显示,而显示COM5,烧写会失败。怀疑是接触不良,拔插晃动USB线,至舵机动了一下(并且舵机控制板上TX灯每秒闪亮一下)即接触良好,可以选择COM3了。

烧写

这一步需要把单片机板子插在计算机上。

菜单 Sketch | Upload 烧写板子。

每次 加电运行

每次运行时,一旦完成烧写,不再需要PC机,不需要操作以上步骤。

每次运行时,需要以下步骤。

手机热点

每次加电运行前,用手机建立热点,为单片机程序提供网络,从而获取当前时间。

如果不修改 clock.ino 的代码,那么按以下名称和密码设置手机热点。

备注
名称 "young huawei" 包括空格,不包括引号
口令 "younggift" 不包括引号

手机热点开启,保持到所有舵机动作一下,或单片机板载的LED矩阵显示数字。此时从网络获取时间完毕,开始依靠本地时间运行,手机热点可以关闭。

可以修改 clock.ino 的代码,修改 单片机程序所需的手机热点的用户名和口令,修改后要编译、烧写到单片机。

加电顺序

先为单片机板供电,

后为舵机控制板供电。

否则舵机可能旋转至与框架碰撞的角度。

说明

照片除了我拍的,还有来自陈昕若的网友提供的文档中的,以及单片机板和舵机控制板厂商的文档中的。

舵机数字时钟——方案和过程

1. 好东西要跟好朋友分享

有一天,陈昕若发给我了个视频链接,附言的大意是:你看这个东西好玩啊。如下图所示。

是个时钟。每秒翻牌,kuakua响得很帅。

陈昕若说:好玩不?

我说:好玩。

陈昕若说:做一个?

我说:好。

于是我们迅速大致讨论了一下。买这么个东西,总价不会超过1000元。但是购买,多么无聊。只有亲手做一个,才有意思。

分工是,他出经费,我负责玩;他和吴晓江负责机械加工,我负责总体方案和软件和电子连线。

我每天做一点,后来把软件部分和总体设计的实施完成了。已快递给陈昕若,等他俩的精工机械,再去现场调试庆祝,老友欢聚。我的工作部分的记录整理如下。

2. 技术方案讨论

2.1 明确需求

我把B站上类似的视频都翻了一遍,看各种各样的时钟,看它们机械部分的手段,挨个记下笔记,然后和陈昕若确定哪些是他要的,哪些不是他要的。

他想要的是 舵机控制时钟的笔画翻转。每个数字由八段码构成。八段码中的每个段(笔画),都由舵机控制。舵机有两个稳态的角度。舵机处于其中一个角度时,笔画与钟面平行;笔画显示出来,处于另一个角度时,笔画与钟面垂直,笔画隐藏起来。

2.2 机械部分,以及我如何临时对付

4个数字,每个数字7个笔画,共4*7=28个笔画。

每个笔画由1个舵机控制,共 28个舵机。

还需要一个框架和底板。我不需要这个,只需要把舵机放在地面上就可以。在开发的过程中,每次收起来和展开麻烦,我用一个装鸡蛋的泡沫塑料作为底板,舵机用热溶胶临时固定在上面。数字的笔画,硬纸剪出来,荧光笔涂色,用热熔胶粘到舵机的舵盘上。下图是逆,蓝色的是舵机,舵机和纸片间的白色塑料是舵盘。以下,是开发完成后的样子,讨论技术方案的时候还没有实物。

2.3 电子部分

时钟的功能有两部分。功能1.按时间走,显示时间。可以每秒动作一次,也可以每分钟动作一次。考虑到舵机不便宜,反复动作会损坏更快,所以我们采用每分钟动作一次。在调试时每秒动作一次,容易修改。功能2.设置当前时刻。

以下讨论的几种电子和软件部分的技术方案,都要满足上述两个功能。

在以下讨论中,刻意关注两个问题。1.有哪些部件,需哪些子系统的功能,如何获得。2.它们之间的连接,不仅谁和谁连接,还有连接的协议,包括不限于电平、带负载能力、编程语言的函数调用、可调试的接口 等等。

方案1 纯数字电路。用时钟发生电路产生脉冲,过时序电路的状态机得到数字的序号,经显示译码器得到八段码每个段的动作,驱动舵机调整角度。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\74bef0730648bdfb2517c1b1e1567f5.jpg

在这个方案中,时钟发生电路、时序电路、显示译码器这几个部件间的连接是TTL。你不知道TTL是什么也无所谓,我们没有采用这个方案。整个系统的其余部分和舵机之间的连接,必须遵循舵机的规范,所以要确定舵机型号,然后查手册。舵机用SG90或TS90A都可以。

说到舵机。我最初只买了七八个,构成1位数字,或者4个数字每个数字都笔画不全,先做技术原型实验。我边玩着边发视频号和朋友圈,老友龚鹏看到了。不少人看到只是觉得好玩,他不仅一眼看出来我要干啥,还快递给我一堆舵机,供物料不足之用。好人。

在这个方案中,设置时间可以靠跳线。

方案2 单片机或嵌入式系统

上面的数字电路方案涉及到不少部件,还有N多连接。想想片子小而线细就头大。想偷懒,我甚至想到,要不要拆个电子表,把LED的线引起来。想想又觉得既作弊又无聊。

舵机驱动查到了,需要用PWM。PWM是常用的信号传递手段,称作脉宽调制。你不知道PWM是什么也无所谓,虽然我们用到了,但是并不需要深入。PWM用 电压持续时间 传递信号,大致是 电压持续时间越长,舵机的角度越大。因此需要在时间分辨上达到一定精度。

这么麻烦,一定有现成的方案。查到 舵机驱动板,不止一种。由舵机驱动板负责把 角度的数值 转成PWM信号发送给舵机。

角度的数值,从系统的其他部分到舵机驱动板时,如何表示呢?查舵机驱动板的手册。有用I2C的,有用串口的,不一而足。

既然舵机驱动用了板子,而不是离散元器件,那么 时钟发生电路、时序电路、显示译码器 部分也不用保持那么纯手工的方案了吧。这三样可以一起由单片机或嵌入式系统实现。需要考虑到的是 显示译码器的输出是28个笔画,因此单片机或嵌入式系统的GPIO(你不需要知道这是具体什么,是某种输出的方法)需要足够,至少28根管脚。不,并不需要。

单片机和舵机控制板之间用I2C或者串口,取决于舵机控制板向上的规范。舵机控制板伸出至少28根线,每根线接1个舵机。

查到一款多路舵机控制板,能操控16个舵机。这样,有2个多路舵机控制板就够用,它俩之间用I2C协议级联。

正准备下单,陈昕若发给我个压缩包,他网友提供的资料。里面提到有一款32路的舵机控制板,上行用串口线。这样1个舵机控制板就够用,无须级联,并且串口线如果需要调试我也更熟悉。同时控制多个舵机,有可能电流不足,龚鹏也提醒我这一点。好在并没有同时控制32个舵机的场景。我还估算了最多同时多少个舵机动作,具体数据不到日志中查了,最终代码中也没有用到。

其余部分也如此合理,以至于接下来的电子部分完全采用了这个方案,代码我重写了一遍。重写代码的原因不是原本的代码不好,而是代码与管脚等有密切联系,即使使用原本的代码,也要读懂,并且根据硬件的连接修改。况且,写这段代码不难。所以,就重写了。

这之前,我还查了舵机的角度与PWM的占空比的关系,电平高度,周期,统统不需要。

在这个方案中,设置时间可以hardcode写在代码里。陈昕若的网友的方案里通过wifi读时间服务器,我也按这一方案,还抄了部分代码。

3. 软件部分

总的流程是

(1)通过wifi从ntp时间服务器取得时间;

(2)把时间拆成4个数字;

(3)把每个数字译码为笔画的显示或隐藏,每个数字对应7个笔画;

(4)驱动28个舵机按译码器的结果动作。

数据流为 时间 -> 数字 -> 笔画 -> 舵机。

其中时间到数字的关键是字符串处理,数字到笔画的关键是显示译码器真值表,笔画到舵机是数组元素与管脚对应。

以下按开发的过程描述,优先做技术原型,然后把技术原型拼起来。

3.1 单片机或嵌入式系统

用arduino 板子

下载 arduino ide 开发环境,免安装。需要wifi和时间服务器,所以安装下面这两个库。

把 arduino板子通过USB连接到计算机,写入几段示例代码。能跑起来。

把 舵机控制板和 arduino板子连接。写几段代码,确认可以控制舵机动作。

红框中的内容,与 和舵机控制板连接的arduino管脚有关。绿框中的内容,与 和特定舵机连接的舵机控制板的管脚有关。这时,没必要过度工程、过早优化,写死代码能跑通就够了。

分别写了以下几个技术原型,最后拼成第9个项目,即交付的代码。第3个项目中的2个目录,是校准舵机角度用的,也一并交付。

3.2 八段码

考虑到舵机有28个之多,一旦有某个不按期待动作,到底是软件部分,还是电子部分,还是舵机坏了,查起来麻烦。所以设置中间检测点,用arduino板上自带的LED阵列显示相同的数字。如果这个数字正常,那么软件部分无误,从舵机控制板向下检查。

LED阵列不足以显示4个数字,这个问题需要解决。

八段码的数字如下图。

LED阵列为12*8个像素。12*8=96个像素。要显示的数字为4个,包括2位分钟、2位秒,或者2位小时、2位分钟。96个像素分给4个数字,每个数字可占24个像素=6*4。所以,八段码每个数字不得超过4*6个像素。

如果八段码的每一段用1个像素,那么高5、宽3,小于6*4个像素。如下图所示。

显示数字1时BC点亮,显示数字3时ABCDG点亮。看着都有些奇怪,识别困难。你可以看上图想像一下效果。

所以我设计了下面的字体。数字高5、宽4。小于6*4个像素

4个数字以下图的布局放置在12*8的LED阵列中。下图中的红框中是4个3中的一个。

考虑用宽3高7或高5,识别难度不高,小于6*4个像素。但是这样横向和纵向的笔画所占的像素数量不同,编程时不够统一。这一像素和笔画的映射关系弃用了。

3.3 舵机角度校准

做了两个独立的项目,一个设置所有舵机为90度,另一个设置所有舵机为0度。事实上,这两个角度并非真实的。舵机可以旋转360个角度,我只是随便选了相互垂直的两个角度,即下图中红框中的2000和1000。

舵盘可以拔下来再插上。所以,校准时,先把舵盘拔下来。运行程序,把所有舵机设置到相同角度,比如2000,即0度。把舵盘按0度插到舵机上。再运行另一个程序,把所有舵机设置到相同角度,比如1000,即90度。检验舵盘旋转的方向是正确的。

在这之前,几乎没有代码量,连循环都不必考虑。

3.4译码器

译码器有两个。其中一个用于数字到舵机。另一个用于数字到LED阵列,调试用。

(1)数字到舵机

译码器的输入是1个数字,输出是8段码(使用其中的7段)中每一段的布尔值。如下表所示。

这是数字电路课程中的重要内容和重要实验,在此不赘述。

在代码实验中,把上面的表格抄成下面的数组。

在excel中转置,复制粘贴,用emacs之类的工具加逗号。这样速度快,并且不会错。

以上是数据,以下是驱动。

上述代码实现函数,输入是1个数字,输出是8段码(使用其中的7段)中每一段的布尔值。实现方案是查表,就上上段代码中的表格。

(2)数字到LED阵列

下面这个表格是我工作的过程,手动在excel中操作的。从第一步阵列的布局到第四步代码中的平行数组。

第一步是LED矩阵的布局,纵12横8,我在左上、右上、左下、右下分别放置了1个数字。

第二步转置和上下翻转,得到与arduino的 led阵列库提供的代码中,访问led阵列 grid 的坐标一致。

第三步 把led点阵对应到于每个数字的笔画2个像素。即每个数字的笔画对应2个像素 (dot1, dot2);每个像素有行列两个坐标,所以 dot1像素有 dot1行、dot1列,dot2像素有 dot2行、dot2列。

第四步 转置得到4个平行数组,加上逗号,抄到代码里,如下。

以上是数据,以下是驱动。

功能是 输入是4个数字,如12点34分,12:34,输入为1,2,3,4。

实现为

先用decode解码,由数字得到八段码的布尔值;

然后在循环中遍历7个笔画,每个笔画均转换到led点阵grid 中的2个像素

grid[dot1列][dot1行]=笔画

grid[dot2列][dot2行]=笔画

这是4个数字中的一个。这段代码我又抄了3遍,每遍分别输入 d2,d3,d4。这样完成4个数字到LED点阵的转换。

3.5 串口调试

按如下代码,当arduino板子连接计算机时,会通过USB仿真串口向上输出。输出结果在arduino IDE或者 COM Debug (8无1) 中都能看到。

以下截屏与上述代码不对应,是反复读取时间的输出。仅作为示例帮助你了解串口输出的样子。

3.6 取时间

取决于网络环境,有时候远程的时间服务器不可达,看运气,没规律。多重复几次直到取到为止。取到时间以后,置本地时间,以后从本地取当前时间。

(1)取NTP服务器时间

略,参见后文中的源代码部分。参考和部分复制了陈昕若的网友的代码。

(2)取本地时间

以下代码,把当前时间设置为 2025年1月29日14:2:11。之后,本地时间会自己走,用now()取出。得到小时、分、秒,通过串口上传给计算机。每秒上传1次。

3.7 舵机与管脚的对应

舵机号 与 第几个数字、数字的笔画 的对应关系如下表所示。

下述代码,是上面的表格转置后加上逗号。

下述代码,数组下标是译码器的出口,与第几个数字和笔画对应;数组的值是舵机的管脚号。

在下述代码中,4个数字中的每一个,都经过译码得到 seg笔画,然后seg的布尔值用于设置舵机的管脚。

以上是数组,以下是驱动。

在下述代码中,遍历舵机列表,设置每个舵机对应的管脚的电压。我考虑过优化,只设置其中变动的那些。后来发现,即使这样,板子的电流也仍然不够。外接电源以后,无须优化,电流也足够。

附录 物料清单

附录 机械部分

以下两张照片,分别是正面和背面。舵机在正面,线通过 过孔 到背面。两块板子都在背面,蓝色那个是arduino板子,绿色那个是舵机控制板。

在背面有一段杜邦线延长了,在蓝色arduino板子右边。并非线不够长,而是为了测试确认延长线以后信号可以传输。

附录 电子(硬件)部分

参见部署手册。

附录 代码

(1)烧写到板子里的,共252行。

//- 反复取时间 - 4个数字 - 译码为28个笔画 - 驱动 led - 驱动舵机

#include <SoftwareSerial.h>

#include <NTPClient.h>

#include <WiFiS3.h>

#include <WiFiUdp.h>

#include <TimeLib.h>

#include "Arduino_LED_Matrix.h"

//------------------------------

// Time

const char *ssid = "young huawei"; ///你家wifi名字

const char *password = "younggift"; //你家wifi密码

//------------------------------

// LED,板载led矩阵

// grid dimensions. should not be larger than 8x8

#define MAX_Y 8

#define MAX_X 12

// 0 is dark, 1 is live bright

uint8_t grid[MAX_Y][MAX_X] = {

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

};

ArduinoLEDMatrix matrix;

// LED点阵与数字的映射关系

// 每1个笔画/段对应2个led点阵的像素

// dot_1_y 第1个像素的纵坐标

// dot_1_x 第1个像素的横坐标

// dot_2_y 第2个像素的纵坐标

// dot_2_x 第2个像素的横坐标

// 数组下标 是笔画/段。每个数字有7段,共7段*4个数字

// 数值的值 是在led矩阵上的坐标

uint8_t dot_1_y[28] = { 6, 4, 4, 5, 7, 7, 5, 2, 0, 0, 1, 3, 3, 1, 6, 4, 4, 5, 7, 7, 5, 2, 0, 0, 1, 3, 3, 1 };

uint8_t dot_1_x[28] = { 0, 0, 3, 4, 3, 0, 2, 0, 0, 3, 4, 3, 0, 2, 7, 7, 10, 11, 10, 7, 9, 7, 7, 10, 11, 10, 7, 9 };

uint8_t dot_2_y[28] = { 5, 4, 4, 6, 7, 7, 6, 1, 0, 0, 2, 3, 3, 2, 5, 4, 4, 6, 7, 7, 6, 1, 0, 0, 2, 3, 3, 2 };

uint8_t dot_2_x[28] = { 0, 1, 4, 4, 4, 1, 2, 0, 1, 4, 4, 4, 1, 2, 7, 8, 11, 11, 11, 8, 9, 7, 8, 11, 11, 11, 8, 9 };

// 设置 led 矩阵,参数是4个数字

void set_led_matrix(uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4) {

// 第1个数字

uint8_t seg[7] = { 0, 0, 0, 0, 0, 0, 0 }; //当前数字的7个段/笔画

decode(d1, seg);

for (int i = 0; i < 7; i++) {

grid[dot_1_y[i]][dot_1_x[i]] = seg[i];

grid[dot_2_y[i]][dot_2_x[i]] = seg[i];

}

// 第2个数字

for (int i = 0; i < 7; i++) {

seg[i] = 0;

}

decode(d2, seg);

for (int i = 0; i < 7; i++) {

grid[dot_1_y[i + 7]][dot_1_x[i + 7]] = seg[i];

grid[dot_2_y[i + 7]][dot_2_x[i + 7]] = seg[i];

}

// 第3个数字

for (int i = 0; i < 7; i++) {

seg[i] = 0;

}

decode(d3, seg);

for (int i = 0; i < 7; i++) {

grid[dot_1_y[i + 2 * 7]][dot_1_x[i + 2 * 7]] = seg[i];

grid[dot_2_y[i + 2 * 7]][dot_2_x[i + 2 * 7]] = seg[i];

}

// 第4个数字

for (int i = 0; i < 7; i++) {

seg[i] = 0;

}

decode(d4, seg);

for (int i = 0; i < 7; i++) {

grid[dot_1_y[i + 3 * 7]][dot_1_x[i + 3 * 7]] = seg[i];

grid[dot_2_y[i + 3 * 7]][dot_2_x[i + 3 * 7]] = seg[i];

}

}

void displayGrid() {

matrix.renderBitmap(grid, 8, 12);

}

//-----------------------------------------

// 数字七段码

const uint8_t led[10][7] = {

{ 1, 1, 1, 1, 1, 1, 0 }, //0

{ 0, 1, 1, 0, 0, 0, 0 }, //1

{ 1, 1, 0, 1, 1, 0, 1 }, //2

{ 1, 1, 1, 1, 0, 0, 1 }, //3

{ 0, 1, 1, 0, 0, 1, 1 }, //4

{ 1, 0, 1, 1, 0, 1, 1 }, //5

{ 1, 0, 1, 1, 1, 1, 1 }, //6

{ 1, 1, 1, 0, 0, 0, 0 }, //7

{ 1, 1, 1, 1, 1, 1, 1 }, //8

{ 1, 1, 1, 1, 0, 1, 1 }, //9

};

void decode(uint8_t digital, uint8_t *seg) {

for (int i = 0; i <= 7; i++) {

seg[i] = led[digital][i];

}

}

//-----------------------------

// 舵机

// 舵机与数字的映射关系 - 值是 舵机控制器的管脚号,与串口指令中P之前的值相同

uint8_t servo_map[28] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 };

// 当前舵机的状态

uint8_t servo_list[28] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

// 驱动舵机动作,参数是4个数字

void set_servo_list(uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4) {

uint8_t seg[7] = { 0, 0, 0, 0, 0, 0, 0 };

// 第1个数字

decode(d1, seg);

for (int i = 0; i < 7; i++) {

servo_list[servo_map[i]] = seg[i];

}

// 第2个数字

for (int i = 0; i < 7; i++) {

seg[i] = 0;

}

decode(d2, seg);

for (int i = 0; i < 7; i++) {

servo_list[servo_map[i + 7 * 1]] = seg[i];

}

// 第3个数字

for (int i = 0; i < 7; i++) {

seg[i] = 0;

}

decode(d3, seg);

for (int i = 0; i < 7; i++) {

servo_list[servo_map[i + 7 * 2]] = seg[i];

}

// 第4个数字

for (int i = 0; i < 7; i++) {

seg[i] = 0;

}

decode(d4, seg);

for (int i = 0; i < 7; i++) {

servo_list[servo_map[i + 7 * 3]] = seg[i];

}

}

// 与舵机控制板通信的串口

SoftwareSerial mySerial(0, 1);

// 驱动舵机动作

void actServo() {

// mySerial.println("#00P2000t100");

// 与舵机控制板串口通信的指令,除以下各值外,其余不变

// 00 是 管脚号,取值[0,31]

// 2000 是角度对应的占空比/2000us,取值[50,2500],需要根据舵机安放角度校准

// 100 是完成动作花费的时间,这里是100毫秒

// 可以多个管脚共用同一个t值

String s = "";

for (int i = 0; i < 28; i++) {

//mySerial.print("#" + i);

s = s + "#" + i;

if (servo_list[i] == 0) { //#00P

//mySerial.print("P1000"); // 隐藏

s = s + "P1000";

} else {

//mySerial.print("P2000"); // 显示

s = s + "P2000";

}

}

//mySerial.println("t100");

s = s + "t100";

mySerial.println(s); //舵机动作

Serial.println(s); // debugging

}

//=====================================================================

//------------------------------

void setup() {

// put your setup code here, to run once:

// 反复取npt时间,直到成功

// 调试用, 连接 pc arduino ide

Serial.begin(9600);

Serial.println("in setup()");

// wifi

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.println("wifi connecting...");

}

Serial.println("wifi connected");

// ntp

WiFiUDP ntpUDP;

NTPClient timeClient(ntpUDP, "pool.ntp.org", 60 * 60 * 8, 500);

timeClient.begin();

while (timeClient.update() != true) {

Serial.println("ntp trying updating...");

delay(500);

}

Serial.println("ntp updated..");

while (timeClient.isTimeSet() != true) {

Serial.println("time is setting...");

delay(500);

}

Serial.println("time is set.");

Serial.println(timeClient.getFormattedTime());

// 把npt时间设置为本地时间

time_t epochTime = timeClient.getEpochTime();

struct tm *ptm = gmtime((time_t *)&epochTime);

setTime(ptm->tm_hour, ptm->tm_min, ptm->tm_sec, ptm->tm_mday, ptm->tm_mon + 1, ptm->tm_year + 1900);

time_t t = now();

int h = hour(t);

int m = minute(t);

int s = second(t);

String ss = "local time is ";

Serial.println(ss + year(t) + "-" + month(t) + "-" + day(t) + " " + h + ":" + m + ":" + s);

// led 矩阵

matrix.begin();

// 与舵机控制板通信

mySerial.begin(115200); //舵机控制器

}

void loop() {

// put your main code here, to run repeatedly:

// 每秒一次,取本地时间

delay(1000);

time_t t = now();

// 把时间转换并分割为 hh-mm-ss

int h = hour(t);

int m = minute(t);

int s = second(t);

// 把 hh-mm 转换为4个数字

// h/10, h%10, m/10, m%10, s/10, s%10

uint8_t d1 = h / 10;

uint8_t d2 = h % 10;

uint8_t d3 = m / 10;

uint8_t d4 = m % 10;

// 或

// 调试用 把 mm-ss 转换为4个数字

// uint8_t d1 = m / 10;

// uint8_t d2 = m % 10;

// uint8_t d3 = s / 10;

// uint8_t d4 = s % 10;

// 驱动 led 动作,内含 把4个数字译码为 28个笔画

set_led_matrix(d1, d2, d3, d4);

displayGrid();

String ss = "led: ";

Serial.println(ss + d1 + " " + d2 + " " + d3 + " " + d4);

// 驱动舵机 set_led_matrix();

//set_servo_list(d1, d2, d3, d4);

set_servo_list(d1, d2, d3, d4);

actServo();

}

(2)校准舵机角度 之一,另一个角度从略

#include <TimeLib.h>

#include <stdio.h>

#include <string.h>

#include <SoftwareSerial.h>

//SoftwareSerial mySerial(2, 3);

SoftwareSerial mySerial(0, 1);

void setup() {

mySerial.begin(115200);

// 显示

delay(1000);

mySerial.println("#00P2000t100");

mySerial.println("#01P2000t100");

mySerial.println("#02P2000t100");

mySerial.println("#03P2000t100");

mySerial.println("#04P2000t100");

mySerial.println("#05P2000t100");

mySerial.println("#06P2000t100");

mySerial.println("#07P2000t100");

//delay(1000);

mySerial.println("#08P2000t100");

mySerial.println("#09P2000t100");

mySerial.println("#10P2000t100");

mySerial.println("#11P2000t100");

mySerial.println("#12P2000t100");

mySerial.println("#13P2000t100");

mySerial.println("#14P2000t100");

mySerial.println("#15P2000t100");

//delay(1000);

mySerial.println("#16P2000t100");

mySerial.println("#17P2000t100");

mySerial.println("#18P2000t100");

mySerial.println("#19P2000t100");

mySerial.println("#20P2000t100");

mySerial.println("#21P2000t100");

mySerial.println("#22P2000t100");

mySerial.println("#23P2000t100");

// delay(1000);

mySerial.println("#24P2000t100");

mySerial.println("#25P2000t100");

mySerial.println("#26P2000t100");

mySerial.println("#27P2000t100");

mySerial.println("#28P2000t100");

mySerial.println("#29P2000t100");

mySerial.println("#30P2000t100");

mySerial.println("#31P2000t100");

}

void loop() {

delay(1000);

mySerial.println("#00P2000t100");

mySerial.println("#01P2000t100");

mySerial.println("#02P2000t100");

mySerial.println("#03P2000t100");

mySerial.println("#04P2000t100");

mySerial.println("#05P2000t100");

mySerial.println("#06P2000t100");

mySerial.println("#07P2000t100");

delay(1000);

mySerial.println("#08P2000t100");

mySerial.println("#09P2000t100");

mySerial.println("#10P2000t100");

mySerial.println("#11P2000t100");

mySerial.println("#12P2000t100");

mySerial.println("#13P2000t100");

mySerial.println("#14P2000t100");

mySerial.println("#15P2000t100");

delay(1000);

mySerial.println("#16P2000t100");

mySerial.println("#17P2000t100");

mySerial.println("#18P2000t100");

mySerial.println("#19P2000t100");

mySerial.println("#20P2000t100");

mySerial.println("#21P2000t100");

mySerial.println("#22P2000t100");

mySerial.println("#23P2000t100");

delay(1000);

mySerial.println("#24P2000t100");

mySerial.println("#25P2000t100");

mySerial.println("#26P2000t100");

mySerial.println("#27P2000t100");

mySerial.println("#28P2000t100");

mySerial.println("#29P2000t100");

mySerial.println("#30P2000t100");

mySerial.println("#31P2000t100");

}

附录 部署手册

参见下一篇博客。

此文也发布在以下站点。
----
知乎 https://www.zhihu.com/people/yang-gui-fu-52

独立博客 https://younggift.net/

微信公众号 杨贵福
----
以下是我曾经发布博客的站点,有些旧文。
----
豆瓣 - 因为审核"我的日记",不再更新。
https://www.douban.com/people/younggift/?_i=0098558fqLUL9h

CSDN – 因为要求我登记手机号码的原因是“为了您的安全”,不再更新。
https://blog.csdn.net/younggift?type=blog

blogsopt – 因为从我的机器不可达,无法更新

安装audiblez-电子书转语音

发现一个诱人的工具

看到HelloGitHub https://zhuanlan.zhihu.com/p/1888869567515833442 介绍audiblez是个好工具,能把电子书转换为语音,支持汉语和英语。再一查,https://github.com/santinic/audiblez 。基于 TTS模型,大小只有区区Kokoro-82M 。据说转换速度也快,人声也自然。速度可调。

正巧前一段时间微信读书禁了私有图书的朗诵功能,这工具不就来了么。

准备装一个,以下就是流程。

流程之所以值得写下来,当然足够丰富多彩、跌宕起伏、扣人心弦。

事后总结的路线图如下。我们现在前进到数字1处,在左上角。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\10062d6bd2d2a7fb3ee3f99de079a7e.jpg

安装节点1 Linux还是Windows

Audiblez基于 python,按说应该是跨平台的。为什么还要区分操作系统呢?因为官方的 readme 里 https://github.com/santinic/audiblez 提到了。

把整个工程从 github上pull 下来,只有9.7M,其中示例的声音文件8.7M,截屏图1张600多K。代码43K,测试12K。

用wc统计一下行数,代码部分共1000多行,测试部分不到300行。

看到这里,是不是有雄心自己写一个?

这么少量的工作,安装一定不复杂吧。我不禁这样想道。

我的机器是 windows,刚好装了 wsl,有ubuntu。就装在这里吧。

手册中涉及到这部分的内容非常简洁。

中间发现没有python等,我又安装了 python, pip, venv。

这部分没有记录日志,因为一切顺利。

在安装audiblez时,系统报 空间不足。见面图,我们此刻前到 数字2处,在右上角。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\10062d6bd2d2a7fb3ee3f99de079a7e.jpg

安装节点2 空间不足

空间不足怎么扩展呢?查一下。

https://learn.microsoft.com/zh-cn/windows/wsl/disk-space 说,关闭wsl的分发,可以理解为把虚拟机 ubuntu关闭。

咦,日志里好像都关了?wsl.exe –shutdown

总之“关机”,一切顺利。

要运行 diskpart 命令行,调整ubuntu所在的虚拟文件的大小。为了调整这个文件的大小,要先找到这个文件。https://learn.microsoft.com/zh-cn/windows/wsl/disk-space#how-to-locate-the-vhdx-file-and-disk-path-for-your-linux-distribution 如是说。

PS C:\Users\young> (Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq 'Ubuntu' }).GetValue("BasePath") + "\ext4.vhdx"

异常现象,在我的机器上找不到这个文件。

我用everything 搜索 ext4.vhdx,不仅 ubuntu 的没有,我的机器上没有任何 ext4.vhdx 文件。

在下图中,我们马上将行进到数字3的位置,在右侧中间偏上。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\10062d6bd2d2a7fb3ee3f99de079a7e.jpg

安装节点3 WSL1还是WSL2

再查理论细节,我知道装了wsl,是只知其一,不知其二。当初装wsl也费了不少周折,主要原因是微软的手册的目标读者可以访问的地方,我不可达。周折如此之多,以至于我已经完全忘了选择wsl1还是wsl2这个步骤。甚至不记得还有wsl1和wsl2的区别。

再查知道wsl1没有使用虚拟磁盘,这能解释我查不到ext4.vhdx文件。那么,wsl1如何扩展磁盘空间呢?不需要特殊操作,因为wsl1使用宿主机操作系统的磁盘空间。我明明还有3G多空间,你不是只需要80多M吗?

我wsl到底是1还是2呢?有的说1,有的说2。

也许wsl是2,ubuntu是1。

ubuntu装了半巴拉卡的python+pip+venv+audiblez,报空间不足,其实有空间。够了!我不想知道为什么了。我把ubuntu删除,以后用的时间再装吧。

进入下一步,我们现在前进到数字4,在下图的右侧中间。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\10062d6bd2d2a7fb3ee3f99de079a7e.jpg

安装节点4 pip找不到匹配的版本

开始Windows操作系统下的安装。手册上看起来比 linux 下要复杂一些,难度增加有限。感觉如此。

打开 Windows terminal,这是什么东西?cmd,还是 powershell,还是开个 bash?看第二步,我会,可以跳过第一步。边读边操作,我心里不禁碎碎念,麻烦的你不解释,简单的偏偏要说上两嘴。

作者假设我装了python。我只好装上,让他的假设成真。这样一路在cmd里就到了第5步。运行这个ps1以后,打开了一个记事本。这肯定不对啊。我切到 powershell 下操作。现象如下。

我还没从删除ubuntu的余怒中恢复,不想读。

搜索一番,切到cmd,运行activate.bat。我心想,就设置个环境变量,让你整得这么麻烦。

这就到了第6步 pip install audiblez 等东西。

一定是因为我不用VPN,我大声咒骂。

我开始尝试换各种镜像数据源,都是网上的邻居家随便谁说的,准确性和安全性完全无法保证。谁让我连不上互联网呢。

-i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

不行。

你可能试着用VPN连一下。不行。大声咒骂。

wxpython 和 pillow 安装正常,只有 audiblez 找不到匹配的。

我放弃了一会儿,遍历所有与 audiblez 有关的贴子。有的非常早,是它的上一个版本,只有一屏代码,调用 Kokoro-82M 的。这是要逼着我照着写一遍?我能下载到Kokoro-82M吗?放着能用的开源不用,非要单独自己搞一套。我是不是有病?大声咒骂。

骂人的同时不影响我继续遍历这些贴子,终于看到了救命的。https://www.aisharenet.com/audiblez/ 在需要先安装 python3的旁边说 python 3.13不行。

我已经看过30篇左右贴子了,都提到 python 3,不记得3.13不行。而且,我装的就是 3.13,觉得既然要求 python 3,那么 3.13也是3,并且够新。作者提到过3.13不吗?作者确实没有提到3.13行,但是他也没能提到3.13行。他说3.9~3.12。

卸载 python 3.13,安装 python 3.12。再回到第6步,记得我们在哪里吗?

一切顺利,花了相当长时间,不断地从网上下载东西。

原来,这1000多行虽短,它依赖的东西可真不少。有这么多。

看到了很多熟悉的名字 torch, scipy, transformers, spacy, sympy,wx……依赖200多个“子”项目,共占空间 1.92 GB (2,064,649,065 字节)。Kokoro-82M。82M?我幼稚了。

我们到了下图中的数字5,右下角附近。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\10062d6bd2d2a7fb3ee3f99de079a7e.jpg

安装节点5 要连接互联网

接下来第7步,运行 audiblez-ui。

我在控制台上看到字符翻滚,扫到一眼“你需要连接互联网”。说什么胡话呢?1987年我们就走向世界了。

总之,连接互联网,我发现 audiblez-ui 在运行时下载东西。

从huggingface 下载了317 MB (332,448,853 字节)东西。其中kokoro-v1_0.pth占319M。就是它了,kokoro 82M。虽然kokoro 82M高达300多M,但是和刚刚安装的1.9G相比,也算不了什么。

成功。

打开一本电子书,预览声音。又开始连接互联网。每个不同角色的音色,会下载 名如zm_yunyang.pt 的文件,500多K。不大。但是如果每次都要连接互联网,相当麻烦。

此时,我大声咒骂。同时,对外国开发者不考虑我辈的困难……我能说什么呢,想起了有人提到,光荣公司为什么不做简体中文的三国志。

测试,好在,这些角色的文件是可以缓存的。在这里

c:\Users\young\.cache\huggingface\hub\models--hexgrad--Kokoro-82M\

效果

我试着转了两本书。

一本英文书,377千左右字符,42章左右。一本中文书,410千左右字符,42章左右,奇数章短,偶数章长。

转换持续了一夜,大约6小时左右,时间不准确。我没有GPU,CPU负载持续85%以上。金属机壳,CPU发烧导致机壳持续50多度。

每章生成一个 wav文件。手册说会转换成 m4b 文件。我的两个测试都失败了。一个文件非常小,另一个进度100%但是m4b文件没有生成。

我用ffmpeg手动把 wav 转成了 mp3。英文这本90多M,中文这本200多M。

声音效果很好,可以与微信读书比美。中文我用了 zm_yunyang,男性普通话。英文用了 af_alloy,美式英语女性。这两位都语调正经。其余的我试了几位。两个中国人,女性,有明显的口音,东北辽宁的和西北的。zf_xiaoxiao,zf_xiaoyi 是普通话。zm_yunjian,zm_yunxi 男性。zm_yunxia 小男孩。

回顾安装的过程,如下图。如果我沿着红线前进,而不是按数字走,会快很多吧。然而,当时,我并不知道应该朝哪个方向走。树多歧而路多枝,你不试试如何知。有些人可能会快很多,不走弯路。有的是理论功底好,猜得准;有的是刚好见过这个故障,知道原因;有的他出生在罗马,不必怀疑网断了,也不必为猜错了浪费时间。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\10062d6bd2d2a7fb3ee3f99de079a7e.jpg

我只能一步一个脚印记录。如果你遇到的现象刚好与我相同,也许有所帮助。

我想把声音和视频放在这里,请你感受一下自然流畅的语音,还有把电子书拆成章节的功能。我想了一下哪些书没有版权,适合展示,想到了几本中文的,想到了几本英文的。最终选定了这个贴子本身。有些不好的效果可以想办法去除,不过我保留原样,也算展示这个工具不完善之处。你还是自己安装试试吧。

demo

此文也发布在以下站点。
----
知乎 https://www.zhihu.com/people/yang-gui-fu-52

独立博客 https://younggift.net/

微信公众号 杨贵福
----
以下是我曾经发布博客的站点,有些旧文。
----
豆瓣 - 因为审核"我的日记",不再更新。
https://www.douban.com/people/younggift/?_i=0098558fqLUL9h

CSDN – 因为要求我登记手机号码的原因是“为了您的安全”,不再更新。
https://blog.csdn.net/younggift?type=blog

blogsopt – 因为从我的机器不可达,无法更新

在ffplay播放时加个进度条

我经常用 ffmpeg 中的 ffplay 播放视频。Ffplay 是个简单工具,目的只是辅助展示 ffmpeg 的功能,没有特意为用户友好做优化。每次播放的需求类似,所以我总用类似的命令行,这不算问题。但是,没有进度条,不知道还剩多少时间,就是个麻烦事。特别是,我每次一般只看半小时,断断续续地看,经常需要回忆看了多久、计算还剩多久,需要再看几次,啥时候能看完。

虽然也不能说完全没有进度,在播放的视频后面,控制台里,有个时间,如下图中左下角的2563.03秒。以秒为单位显示,对于口算巨差的人来说觉得挺麻烦。

1. 需求/效果

想了想见过的播放器,因陋就简,可以是下面这样。

(1) 进度条。在画面的最下方,画一条非常细的线。从左到右整个面面的宽度代表100%,红色的范围表示播放的百分比。如上图所示,正播放到50%左右。为了突出进度的百分比,在红色的后面画一条同宽度灰色的线,从最左到最右,作为红线的背景。

(2) 进度文字。在画面的最下方附近,写 已播放的时分秒 / 全片长度的时分秒。如上图所示,播放到 00:52:43.745,全片共 01:41:17。

2. 代码

以下放在一个批处理bat文件中,如下。播放不同视频时,修改第1行和第2行中的两个变量的值,其中a是视频,b是字幕。

set a="input.mp4"

set b="input.mp4.srt"

rem ------------------------------------

for /f %%i in ('ffprobe -v error -show_entries format^=duration -of csv^=p^=0 %a%') do set duration=%%i

set /a duration_int=%duration%

rem 计算小时、分钟和秒

set /a hours=%duration_int% / 3600

set /a remaining_seconds=%duration_int% %% 3600

set /a minutes=%remaining_seconds% / 60

set /a seconds=%remaining_seconds% %% 60

rem 格式化输出,确保不足两位时前面补 0

if %hours% lss 10 set hours=0%hours%

if %minutes% lss 10 set minutes=0%minutes%

if %seconds% lss 10 set seconds=0%seconds%

set duration_hms=%hours%\:%minutes%\:%seconds%

rem ffplay %a% -vf ^

rem "drawbox=w=iw:h=3:y=ih-3:color=gray,^

ffplay %a% -vf ^

"drawbox=w=iw:h=3:y=ih-3:color=gray,^

drawtext=text='.':x=t/%duration%*w-3-1000:y=h-3:fontcolor=red:fontsize=1:box=1:boxcolor=red:boxh=3:boxw=3+1000,^

drawtext=fontfile=C\\:/Windows/Fonts/arial.ttf:text='%%{pts\:hms}/%duration_hms%':box=1:x=(w-tw)/2:y=h-(lh),^

subtitles='%b%'" -ss 0

3. 技术路线和关键技术

需要能实时、动态地读入以下几个变量,全片的时长当前播放到的时长

需要能实时、动态地在画面上输出 文字进度条

需要变量类型的转换和计算,可能涉及到 以秒为单位的时长 和 时分秒格式的时长 间的相互转换,可能涉及到比例即除法的计算(播放百分比),可能涉及到浮点乘法计算(播放百分比*画面宽度像素数)。

如果占用资源过高,需要考虑如何提高性能,降低机器负载。

变量定义。以下讨论中,以变量 a (引用时为 %a%) 代表视频文件

set a="input.mp4"

3.1 全片时长

用下述代码获取全片时长。

for /f %%i in ('ffprobe -v error -show_entries format^=duration -of csv^=p^=0 %a%') do set duration=%%i

通过ffprobe得到duration,以秒为单位,置到变量duration中。For循环的目的是遍历输出。

这个变量 duration 将在后续代码中 总时长的文字、进度条 中都要使用。

3.2 当前进度的文字输出

当前进度使用 ffmpeg 的 drawtext 滤镜的内置变量 pts,以hms格式输出。

…drawtext=fontfile=C\\:/Windows/Fonts/arial.ttf:text='%%{pts\:hms}/%duration_hms%':box=1:x=(w-tw)/2:y=h-(lh),

3.3 总时长的文字输出

总时长的文字,由 上文提到的全片时长 duration,以秒为单位,经过计算得到时、分、秒,再拼成变量 duration_hms,使用 ffmpeg 的 drawtext 滤镜 输出到画面上。

  1. 得到 duration,与上文相同,这里抄一遍。

for /f %%i in ('ffprobe -v error -show_entries format^=duration -of csv^=p^=0 %a%') do set duration=%%i

(2) 去除整数部分,然后求 时、分、秒。

set /a duration_int=%duration%

rem 计算小时、分钟和秒

set /a hours=%duration_int% / 3600

set /a remaining_seconds=%duration_int% %% 3600

set /a minutes=%remaining_seconds% / 60

set /a seconds=%remaining_seconds% %% 60

  1. 拼接。

rem 格式化输出,确保不足两位时前面补 0

if %hours% lss 10 set hours=0%hours%

if %minutes% lss 10 set minutes=0%minutes%

if %seconds% lss 10 set seconds=0%seconds%

  1. 转义并放进ffmpeg的drawtext滤镜

set duration_hms=%hours%\:%minutes%\:%seconds%

…drawtext=fontfile=C\\:/Windows/Fonts/arial.ttf:text='%%{pts\:hms}/%duration_hms%':box=1:x=(w-tw)/2:y=h-(lh),^

3.4 进度条绘制

(1) 背景灰色的进度条,用 ffmpeg 的 drawbox 滤镜。

… drawbox=w=iw:h=3:y=ih-3:color=gray,^

(2) 当前进度的值,来自 ffmpeg 的 drawtext 滤镜的内置变量 t。

总时间长度来自上文提到过的由 ffprobe得到的变量 duration。

drawtext=text='.':x=t/%duration%*w-3-1000:y=h-3:fontcolor=red:fontsize=1:box=1:boxcolor=red:boxh=3:boxw=3+1000,^

(3) 进度条

drawtext=text='.':x=t/%duration%*w-3-1000:y=h-3:fontcolor=red:fontsize=1:box=1:boxcolor=red:boxh=3:boxw=3+1000,^

用 drawtext画个盒子。

drawtext=text='.'

fontsize=1:box=1:

用drawtext而不用 drawbox的原因,是 drawbox支持的变量少得可怜,不足以完成目的。在这里,输出个”.”只是占位,drawbox中的 box 才是关键部分。

红色盒子,高度3。

boxh=3

盒子长度1000多,假设足够长。

boxw=3+1000

纵坐标,在画面的最下方。

y=h-3

盒子的初始横坐标为 -3-1000,即只露出3个像素。随着播放进度,盒子向右移动。当播放到100%,盒子刚好在画面最侧留下3个像素。

x=t/%duration%*w-3-1000

这个颜色为红色、高度3、宽度1000+3(足够长)的盒子,显示在画面上就是红色进度条。它的位置随进度而向右移动,即上面代码中的 变量x的值 t/%duration%*w-3-1000。之所以改变位置而不是改变长度,是因为我没有找到手段 令 盒子的长度boxw 的值 <= 当前进度和总长度的函数,似乎ffmpeg的drawtext滤镜不支持。

(4)对其他可能方案的讨论

在 drawbox 上尝试浪费的时间最长。后来,下定决心读了 ffmpeg 手册的滤镜一章(册?),才确认上述技术方案。

在 boxw 上浪费的时间其次。我在 ffmpeg 手册中没有找到不行的原因,此处语焉不详,似乎应该能行才对,但是实测不行。

还做了一个方案,在最下面画一个红点,而不是一条线。感觉看起来不够突出,留作备选方案。代码片断如下。

ffplay %1 -vf "drawbox=w=iw:h=3:y=ih-3:color=gray,drawtext=fontfile=C\\:/Windows/Fonts/arial.ttf:text='%%{pts\:hms}':box=1:x=(w-tw)/2:y=h-(lh),drawtext=text='.':x=t/%duration%*w-3:y=h-3:fontcolor=red:fontsize=1:box=1:boxcolor=red:boxh=3:boxw=3"

3.5 转义和换行

在命令行、在批处理bat中、在ffplay的命令行参数中都涉及到转义,对单引号、双引号、冒号、反斜线的转义,还有在单引号对、双引号对中的不得(不是“不必”,“不必”是可有可无的意思,这个词也相当令人恼火)转义。烦死我了。AI的解读经常是错的,不如没有,除了能提醒我某些bug看起来转义造成的。

Bash也需要转义。

换行。为了提高可读性,希望拆开一长行代码。用什么符号换行(即转义),在双引号对里、在单引号对里,分别不同。

我甚至想到是不是应该写个工具,专门解决这个问题,或者已经有这样的工具存在了?又想起 ANTLR stringtemplate,php,jsp 里的各种转义,感觉头大。算了吧,好使就得了。

3.6 变量

在bat文件(不是在cmd中直接执行,涉及转义)中,按下述方式可在画面上输出 pts, n, t。

set a="input.bat"

ffplay %a% -vf ^

drawtext=fontfile=C\\:/Windows/Fonts/arial.ttf:text="pts='%%{pts}' n='%%{n}' t='%%{expr\:t}' p='%%{expr\:pkt_pos}' d='%%{expr\:duration}':box=1:x=(w-tw)/2:y=h-(lh)"

rem 参见 https://ffmpeg.org/ffplay-all.html#drawtext_005fexpansion

4.AI的贡献

AI辅助,主要贡献来自豆包,她所做的贡献包括 最初提供的错误路线启发了我,以及在我描述具体的子需求以后提供技术方案或技术原型思路。DeepSeek和Kimi也参与了讨论,他俩基本没有正面贡献,净添乱了。

此文也发布在以下站点。
----
知乎 https://www.zhihu.com/people/yang-gui-fu-52

独立博客 https://younggift.net/

微信公众号 杨贵福
----
以下是我曾经发布博客的站点,有些旧文。
----
豆瓣 - 因为审核"我的日记",不再更新。
https://www.douban.com/people/younggift/?_i=0098558fqLUL9h

CSDN – 因为要求我登记手机号码的原因是“为了您的安全”,不再更新。
https://blog.csdn.net/younggift?type=blog

blogsopt – 因为从我的机器不可达,无法更新

好工具 | 用键盘代替鼠标 keynavish

键盘给我的确定、反应速度、段落感,是鼠标不能替代的。即使稍微慢一些,即使有研究和文献说鼠标的效率更高,然而食指的末节、指尖、手腕尺骨一侧,所有这些用鼠标有时候会疼的地方,我用键盘的时候可从来没有疼过。更不用说,当我点击鼠标,机器的反应不够快的时候,我从手指尖到脑仁儿都疼。

Keynavish受到Linux下类似工具的启发,功能和设置都差不多,能用键盘代替鼠标。在Github上可以下载。我刚好又访问不到github了,因此链接欠奉。

尽管经常用鼠标,有些时候,我希望用键盘代替鼠标——不是快捷键或者翻页之类那几个功能,而是可以完成鼠标完成的所有任务。在特别的场景下,键盘的效率也很高。

例如,我每天读书和锻炼打卡,都用AHK脚本,最后要按一下按钮。多行文本,文本框要吃回车,所以按回车无效;同样的原因,TAB也无效。这时,我用 ctrl-; 呼出 keyvanish。此时鼠标光标刚好在很大的发送按钮上面,我只需要回车触发点击动作。

在PC上看微信公众号的时候,我呼出 keyvanish,(我修改过绑定的按键)用n和p替代滚轮,右手不必向鼠标伸出因为精细动作导致导致肩膀紧张,也不必顺势按在鼠标垫上压迫导致手掌根和手腕尺骨一侧疼。配置文件是文本的,可以在keyvanish的菜单中调出修改。

更重要的是,我按下某个键,那一定是按下去了,声音和手感都能确切地告诉我这一点,如果屏幕不反应,肯定是软件问题,不是我没按下去或者机械不稳定或者硬件接触不良,因此手指头不会疼。

按ctrl-; 呼出 keyvanish时屏幕上多了个十字叉,十字叉的中心点代表鼠标。大致像这样,此时鼠标在A点位置。

此时,可以通过键盘控制十字叉的位置。移动的方式极端高速,也有点不同正常的思维。不是朝向左右上下移动,而是在上下左右某个方向上,按二分法移动。例如此刻按了 向上,鼠标会在B点位置。

此时按向下,鼠标在C点位置。

此时按向左,鼠标在D点位置。

这个方案速度有多快呢?

我显示器横向2560像素,“保存”按钮136横向像素,水平方向上,只需要在2560/136大约19个可能的位置中选出一个。Log2(19),大约4次就可以命中。竖直方向上,显示器1440像素,“保存”按钮大约40个像素,所以log2(1440/40)=5次左右。

最多需要4+5=9次左右按键。

移到指定位置以后,回车,相当于鼠标左键。也可以按右键、中键、滚轮等。

用几次以后,会习惯这个思维方式,根据当前状态,瞬间决定接下来要向哪个方向。默认用的是vi的按键,hjkl,我改成了上下左右。

如果发现错了,可以回退到上一步。默认按钮忘了,我改成了u。

到这儿,就可以用得很舒服了。还有些其他功能,我偶尔也用。

可以在鼠标光标的当前位置上按键,ctrl-;呼出以后按c。

可以把当前屏幕划分为例如3*2个单元格,再递归划分下去。要递归哪个小格子,由可以映射到6个编辑键,如下,或者映射到3*3数字键盘。

可以设置为开机自动启动。我设置以后移动过keynavish-v1.7.0-x86_64.exe的位置,启动失效了,在keynavish中再设置也不起作用。我用 autoruns把这个启动项删除了,重新在keynavish中设置了一次,好了。

keynavish-v1.7.0-x86_64.exe这个文件只有1.2M,功能专一而有效。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\6b4e96f4ad2df8ba220a03a0557e0c7.jpg

此文也发布在以下站点。
----
知乎 https://www.zhihu.com/people/yang-gui-fu-52

独立博客 https://younggift.net/

微信公众号 杨贵福
----
以下是我曾经发布博客的站点,有些旧文。
----
豆瓣 - 因为审核"我的日记",不再更新。
https://www.douban.com/people/younggift/?_i=0098558fqLUL9h

CSDN – 因为要求我登记手机号码的原因是“为了您的安全”,不再更新。
https://blog.csdn.net/younggift?type=blog

blogsopt – 因为从我的机器不可达,无法更新