分类目录归档:其它

要救的不只有民科,还有看客们

一段五年前的综艺节目视频突然被翻了出来,冠以“他综艺首提引力波竟遭方舟子残酷打压”的标题在网络上传得大红大紫。我看了一遍视频,觉得好笑;又翻看了众多网友的评论,不禁感到遗憾、失落、愤懑。想在评论里振臂疾呼:民科要不得!又有一种声音淹没在人海里的无力感。冷静一下,写点浅薄的文字,权当发泄情绪和安慰自己。

视频里的主角是一位初中学历、50 多岁的民间科学家。这位言必称诺贝尔物理学奖的“科学家”声称发现和开创了“统一物理学”,把“引力波”、“物质波”等新鲜的科学名词杂糅进一个不知所云的“理论”,肤浅地臆想出“汽车不用轮”、“活神仙”等“技术”实用方向。

我想一个具备基本科学素养的人看了他的表演就会对其嗤之以鼻。节目里的主持人和各路嘉宾显然也不为他的新发现所动,对这位有拿诺贝尔奖的雄心壮志的民科极尽嘲讽之事。五年前主持人的嘉宾们在电视节目上公开对他发动嘲讽攻击也许确有些不妥,但这位民科的遭遇不值得同情,更不值得喝彩。

民间科学家是对极少接受过(甚至拒绝)正规科技学习及训练,理论知识及学术素养匮乏,却又经常热衷于相关领域研究之人士的一种称谓,通常具有讥刺贬义[1]。他们的“研究”不建立正统科学体系之上,甚至违背最基本的科学定律,却往往借用各种科学名词来使他们的“成果”看上去很科学。民科常常活跃在数学和物理学等学科,数论、相对论、量子力学等领域是最热门的研究方向,哥德巴赫猜想的证明、永动机的实现等是最常见的“研究成果”。

民科做出来的“研究”不被正统的科学界承认,便拿哥白尼、爱因斯坦等先驱“类似的事迹”来麻痹自己,做出一副受了科学迫害的姿态,宣称迟早有一天他的成果会得到广泛的认可,最终拿诺奖、迎娶白富美,走上人生巅峰。对待为了所谓的科学研究而走向偏执和狂妄深渊的人,就应如节目中董浩多次强调的:救人要紧

然而五年前一个民科被各路人士嘲讽的节目视频在引力波的存在被实验证实之后突然又火了起来,人们声称:他是对的,你们欠他一个道歉。仿佛这位当代哥白尼蒙冤多年,证人清白的时刻终于来了。

如果看客们稍有一点科学素养,稍有一点置疑求证的精神,就能在查阅资料之后发现引力波其实是相对论的一部分,是爱因斯坦最早提出来的,这位郭先生不过是拾人牙慧拿了个你们听不懂的名词装裱他的伪科学而已。

还有一些看客大打起感情牌,声称他是一位只有初中学历的下岗职工,做的研究好不好没关系,精神可嘉,应该支持他。这种持有他弱他有理逻辑的人不是圣母,是反智主义的帮凶。有了你们的支持,不仅让郭先生在民科深渊中越陷越深,更会让千千万万没有接受过正规科学基础教育而又抱有拯救世界远大妄想的人走上民科的道路。

缺乏基本科学素养的看客们在网上声援一个不学无术的民间科学家,而在面对真正的现代科学技术时,却又是一副反科学的嘴脸。他们反通信基站、反核电、反现代医学、反化学工业、反生物工程、反转基因,不辨是非。

救人要紧。不只是对民科说的,更是对围观者们说的。我们需要开展自救,多阅读,多学习,多思考。建立基本的科学素养,以明是非。

参考文献
[1] Wikipedia. 民间科学家. https://zh.wikipedia.org/wiki/%E6%B0%91%E9%97%B4%E7%A7%91%E5%AD%A6%E5%AE%B6

Brainfuck 语言与图灵机

Brainfuck 语言是在 1992 年由瑞士一名学生 Urban Müller 设计的[1]。Brainfuck 是一种语言要素极精简的计算机语言,它没有一般高级语言拥有的关键字、运算符、标识符、语句等概念,甚至连汇编语言的操作数概念都没有。因此,Brainfuck 语言的编译器和解释器都十分容易实现,并且它们的代码可以非常短小,已经有人实现了可执行文件只有 100 字节的 Brainfuck 编译器。

Brainfuck 语言一共只有 8 个指令,颇有些简陋的语言设计使其代码其实很难编写,写成的代码看上去也是一片混乱,可读性很差。正如它名字所说的,这不是一门实用的程序设计语言,仅是一种程序员自娱自乐的工具。尽管如此,它仍然是一门图灵完备的语言,理论上可以用它实现任何其他计算机程序设计语言能实现的程序。另外,学习 Brainfuck 语言也对理解计算机组成原理和计算机程序原理有一些帮助。

Brainfuck 的全部 8 个指令都由一个单字符表示,分别是 +、-、<、>、.、,、[ 和 ]。Brainfuck 定义了一块内存空间和一个指针,指针指向内存空间的某个地址,指令可以移动指针和操作指针指向的内存单元。Brainfuck 每个指令的作用如下所述。

  • + 指针指向内存单元的值加 1;
  • – 指针指向内存单元的值减 1;
  • < 指针向左移动 1 个单元;
  • > 指针向右移动 1 个单元;
  • . 以字符形式输出指针指向的内存单元的值;
  • , 以字符形式输入到指针指向的内存单元;
  • [ 测试指针指向的内存单元值是否为 0,如果是,跳到对应的 ] 指令的下一个指令处继续执行;
  • ] 测试指针指向的内存单元值是否非 0,如果是,跳到对应的 [ 指令的下一个指令处继续执行。

相比于一门编程语言,Brainfuck 更像是一个简易计算机系统的指令集。语言本身定义了一种包含运算器、内存、寄存器和输入输出设备的计算机,而编程实现 Brainfuck 解释器实质上就是实现了这样一个虚拟机的实例。前面讲到,Brainfuck 是一种很容易实现解释器和编译器的语言,下面是我用 Python 实现的一个 Brainfuck 解释器

Brainfuck 语言缺少基本运算指令,甚至缺少数据传送指令,名副其实,用 Brainfuck 编写程序是一件并不那么愉快的事情。下面是一段用 Brainfuck 编写的可以输出一个指定字符串的 Brainfuck 代码的程序,实际上只是按每个字符的 ASCII 码数值输出了相应数目的自加指令,得到的输出会非常长。为了使输出的代码变得短一些,还有很多发挥技巧的空间,但我不太想这样做了。

>>>>+++++[>+++[>+++[<<<+>>>-]<-]<-]<
[<+<+<+>>>-]<<.>+.>
+[>,[<<<>>>-]<]

尽管 Brainfuck 不适合用于编写实用的计算机程序,但它存在的另外一个意义是很直观地描述了一个图灵机的原型。图灵机并不是一台具体的计算机,而是英国数学家阿兰·图灵于 1936 年提出的一种抽象计算模型[2]。图灵机是现代电子计算机的理论基础。

通俗描述的图灵机包含以下四个部分:

  • 一条(无限长)的纸带,纸带分成无穷多个格子,每个格子中可以记录一个数字或符号;
  • 一个读写头,可以在纸带上左右移动,可以读取或修改当前所在格子中的符号;
  • 一个状态寄存器,可以保存机器当前的全部状态;
  • 一套规则表,可以根据当前的状态以及当前读写头指向的纸带中的字符查表决定下一步应该做什么操作。

图灵机有一个特殊的状态,称作停机状态。图灵机必须在有限次的执行步骤后进入停机状态,此时计算完成。图灵认为,图灵机模拟了人类解决数学问题的过程,理论上可以解决任何人类需要手工完成的数学计算。

Brainfuck 语言的描述与图灵机高度契合。在 Brainfuck 解释器中,Brainfuck 的内存数组是图灵机中的那条纸带,指针是图灵机的读写头,额外的几个变量是图灵机的状态寄存器,而 Brainfuck 程序源代码则是图灵机的规则表。Brainfuck 语言解释器实际上成了一个运行在计算机上的虚拟图灵机原型。

图灵机与现代计算机关系密切,是现代电子计算机的理论基础;但如上所述,图灵机并没有描述计算机在硬件上具体如何实现。真正设计了现代电子计算机体系结构的是被称为电子计算机之父的美国科学家约翰·冯·诺伊曼。冯·诺伊曼指出了一个实际可行的电子图灵机的结构:一部由运算器、控制器、存储器和输入输出设备组成的,由程序控制运行的机器,被称为冯·诺伊曼系统结构。

冯·诺伊曼提出的电子计算机系统结构一直被沿用至今,今天我们使用的所有计算机均是建立在这个体系结构之上的。

向图灵、冯·诺伊曼及其他所有参与设计建造电子计算机的先驱们致敬。

(允许转载本文,转载请注明出处:http://luodichen.com/blog/?p=391 )

参考文献
[1] Wikipedia. Brainfuck[EB/OL]. https://en.wikipedia.org/wiki/Brainfuck
[2] Wikipedia. 图灵机[EB/OL].https://zh.wikipedia.org/wiki/%E5%9B%BE%E7%81%B5%E6%9C%BA
[3] 吴军. 文明之光(第三册)[M]. 人民邮电出版社, 2015.

我是程序员(二)

90 年代末的中国,流行着“计算机要从娃娃抓起”的口号。电脑这一新鲜事物也是这个时候开始进入我所在的那个小县城的,企业、学校开始配备计算机机房,但是当时的计算机可不是什么人都能用的,想操作计算机,那得先培训。于是,各类计算机培训机构应运而生,居民楼的楼道里贴满了“学电脑,去 xx”的牛皮癣。

因为每周都能接触到电脑,我对电脑的狂热兴趣保持了一个学期,很快,暑假到了。我爹怕我假期没事干,暑假第一天,就带我去了一个设在工人文化宫的电脑培训学校。工人文化宫离我家特别近,而且这个电脑学校是当时市里最知名、规模最大的电脑学校,光是牛皮癣广告的尺寸和张贴规模就力压别的各种电脑培训机构。在那个学校的办公室里,我对着长长的课程列表纠结:这里有专门针对“娃娃”的课程,但是列的课程内容是“DOS”、“WPS 排版”、“五笔输入”等。我跟我爸说这个我在兴趣班都学过,都会了。然后就在老师的建议下放弃了“娃娃班”,选了一个成人基础班。我记得这个班的课程除了和“娃娃班”一样的部分之外,还有一个“Windows 98”。Windows 已经在我心中神秘一个学期了,就为了这个,我一定要上成人班。

就这样,整个暑假,我就和一群二三十岁的成年人在一起学计算机。一周有三四天上课,一般上午在教室听老师讲理论知识,下午上机实践。这学校有大概有三四个机房,每个机房好几十台电脑,比小学的机房大多了。更重要的是,每台电脑都装着 Windows 95 ——与宣传的 Windows 98 不符——和 DOS 双系统,重启可以切换。我第一天上机就学会了 Windows 的操作方法,感叹它的神奇。

最开始的课程依然是 DOS、五笔、WPS。因为在之前学校就学过,而且又是小孩,所以我很快就在班里引起了老师和同学们的注意。印象最深的一件事是老师出了一个题,把某某目录的某某文件移到另一个目录,并改成某某名某某属性,无人会,我说我会。最后叫我去黑板上写命令,我歪歪扭扭、大小写不分地把几个命令写完,老师说:完全正确。从此确立了我在班里的地位。

然后发生了一件对我产生了深远影响的事。

某一天下午,我正在机房玩电脑。一位姓杨(别的不记得了)的老师把我单独叫到另外一个机房 ,在他的电脑上敲了一个我从没见过的命令:“qbasic”。然后一个蓝白界面出现了,老师在这个界面下敲入了三行字符,至今记忆犹新:
a = 1
b = 2
PRINT a + b
然后老师选了菜单里的运行命令,一个“3”出现在了控制台中。
DOS
我只记得老师告诉了我这个叫“写程序”。

我突然意识到,不管是自己用的 DOS 还是 WPS、UCDOS,甚至是 Windows 以及在 Windows 里面运行的绚丽多彩的应用程序,都是用“写程序”的方法创造出来的。从此对“写程序”这件事产生了极浓厚的兴趣。妈妈陪我逛了全市大大小小的书店,买了一本谭浩强的计算机等级考试二级教材《C 语言程序设计》,和另一本同样是谭浩强的二级教材《QBASIC 语言程序设计》。另外,某一天在奶奶家玩,在书架上居然奇迹般地发现了一本泛黄的《QBASIC 语言程序设计教程》。

这时候,我开始学习 C 语言和 BASIC 语言。利用上机的机会在 TurboC 和 QBASIC 下把书上的示例代码一遍遍敲。这些软件界面都是英文的,我刚读完小学三年级,所以单词肯定是基本都不认识的。我认识一个很关键的单词:RUN。把程序原样抄到屏幕上之后,再到菜单里找 RUN,找到了就敲个回车。编程初学者写的第一个程序肯定是连编译都通不过的,我也不例外。第一次 RUN 屏幕上就没有出现结果,出现了一堆看不懂的英文,现在也想不起来是什么了,反正一定是语法错了。反反复复尝试之后总算有程序跑起来了,我非常高兴。

之后的日子,我就完全是在学习编程了。BASIC 语言进展顺利,我很快就学会了顺序、分支和循环三种基本程序结构。甚至能用 BASIC 语言编出一个“百位内四则运算随机出题”程序。同时我还在学习更“高级”的 C 语言,但是进展似乎不那么顺利。首先就数据类型就不那么理解,既然浮点数能表示非常宽的范围,那为什么还要整型数呢?显然,我完全没有意识到这两种数据类型在内存中的存储方式完全不同,也没意识到浮点是会损失精度的。哦,什么是内存,什么又是精度呢?我还只是个刚学会四则运算的小学生。总之,当时我一直对 C 语言这种到处都是花括号的语言感到十分奇怪,也搞不明白什么是指针、文件指针又是什么,指针移动又是什么。

这个暑假,我的收获就是:见识了 Windows、学会了 BASIC、得到了培训学校奖励给优秀学生的一个笔记本。

(未完)

我是程序员(一)

建了个博客,总得往里面填点东西。本来是想写一篇技术文的,刚才在 CSDN 上闲逛时发现了一个大概是老程序员的专访,内容是该程序员怎样在十年内自学编程成为大牛的。看到该前辈最初学习编程的缘由,不禁想到了自己。从写下第一行代码到现在,应该已经不止 10 年了,虽然现在也没有成为大牛,但也算在 10 多年断断续续的编码过程中有一些值得回味的经历,把它们写下来一方面回忆一下往事,另一方面怕以后把这些经历都忘了。

第一次听到“计算机”这个概念是小时候一个晴朗的夜晚,我和老爹走在回家的路上,老爹无意提到了一个不知哪听来的说法,他说有一种叫电脑的神奇机器,它什么事情都知道,甚至可以知道我们每一个人今天干了什么,昨天干了什么。不知为何这一番现在看来都不太靠谱的话当时极大地触动了我,我清楚地记得当时的我抬头看着月亮,想像着这种神秘的机器长什么样子,还记得那可能是中秋节,月亮很大很亮很圆。那时我大概只有五六岁,周围没有人见过电脑,想像中电脑的样子深深刻在脑子里。

转眼到了小学三年级。我念的那个学校算是市里比较落后的,但是居然建了一个计算机房。我是在三年级开学的时候知道这件事的,当时各小学都盛行周末的兴趣班。“有音乐班、美术班、电脑班……”报到时班主任孙老师介绍到。一听到电脑班,本来对兴趣班什么的毫无兴趣的我心里一震,怀着对电脑强烈的好奇果断地报了名。当时其它班一期 60 元,电脑班 100 元。

等到了周六,一大早我在学校的计算机房里第一次见到了电脑。不宽的教室里大概有 20 台电脑,只有讲台上的一台机器有硬盘,下面的机器是 NOVELL 网组建的无盘工作站(当时不懂,后来根据记忆推测的)。主机是卧式的,显示器很小(但是好像是纯平的?),没有鼠标,装着 DOS 6.22 操作系统。

从此每天都在盼望着周六的到来。在一个年轻的萌妹子老师的指导下,我很快学会了常用的 DOS 命令,知道了什么是文件,什么是目录,什么是分区,怎样用 DOS 命令对文件系统进行增删改查等操作。也是在那个时候我学会了五笔输入,当时的拼音输入法远没有现在这么先进,输入效率相当低,所以首选的输入法就是五笔,在电脑上用五笔输入的习惯一直保持到了现在。

兴趣班同时还教文字排版,文字编辑和打印是当时电脑的主要用途之一,用的软件当然是 WPS。运行在希望汉字系统上的 WPS(应该是雷军解锁版的)是我用过的第一个中国软件,软件界面上硕大的“香港金山公司”和求伯君的名字回想起来历历在目。WPS 让我对金山公司有了深刻的印象,但当时的我不会想到十多年后我会坐在金山公司大楼里写下这篇文章。

电脑兴趣班果然让我对电脑产生了极大的兴趣,我开始频繁跑书店买一些大人都看不懂的书来看,我家在一个小县城,当时书店里跟电脑有关的书实在不多。老爹对我的兴趣也持支持态度,有时出差会给我买一些书回来。书里讲的内容有的懂有的不懂,但还是学会了很多老师没教过的 DOS 命令,学了几个就在学校机房里实验。当时看到有一种叫批处理的文件真是让我欣喜若狂,甚至可以用批处理来写几个有意思的脚本了。有些书里还提到了一种用鼠标操作的、不用打命令的、界面和 DOS 完全不一样的操作系统,叫做 Windows。但是小学机房的电脑上没有安装 Windows,应该也没有能力运行 Windows,这是我当时最大的遗憾。(未完)

psb0 psb