17世纪的德国哲学家莱布尼茨(G. W. Leibniz)有两个伟大的设想:一是要建立理性的演算,使得“所有推理的错误都只成为计算的错误”;其次,为了获得理性演算,我们需要用一种人工语言代替自然语言,即,所谓的普遍语言。两个世纪之后,弗雷格(F. L. G. Frege)实现了莱布尼茨的这一设想,他重构逻辑学科,提出了 “谓词演算”(predicate calculus)。一个谓词演算是一个形式系统(关于证明的一个形式语言和方法),其中,有效的推演可以用谓词(即,包含关于对象性质的谓词命题)来表示。在这个形式系统中,弗雷格分析带量词的命题,对所谓的 “证明”(proof)进行形式化。这些工作集中体现在他发表于1879年的著作《概念文字——一种按算术的公式语言构成的纯思维公式语言》(Begriffsschrift)中。可以说,这一著作给出了有史以来的第一个此类演算系统。弗雷格因此也被后人尊崇为现代逻辑的奠基人之一。当然,《概念文字》的提出是有着更为深远的历史背景:当时的学界讨论数学基础的问题,而《概念文字》正是为了从逻辑推出数学而构造的工具。从《概念文字》的发表到今天已经有一百多年的历史了,现代逻辑从最初的不被认同,到后来的兴起和新逻辑分支的发展,再到今天现代逻辑在信息时代的蓬勃发展和向其他学科的不断延伸,期间成果斐然、人才辈出,堪称是一部动人心弦的历史史诗。本文立足于历史,重点展示现代逻辑的研究方法,重点考察模态逻辑产生和发展,试图表明以下两个观点:

第一、弗雷格所提出的形式化和公理化的方法具有里程碑式的意义,它对后来逻辑学发展和研究的影响源远流长。我们所见到的几乎所有的现代逻辑分支,包括模态逻辑,都是采用类似于弗雷格的研究方法而建立的。

第二、模态逻辑的产生和发展表明,新逻辑的产生是一种理论发展的必然和需要。本文旨在揭示从一阶逻辑到模态逻辑的历史发展的内在规律。

一、形式化与公理化的研究方法

使用字母表达推理形式,构造形式语言,这不是弗雷格首创的。早在2000年前亚里士多德在他的《前分析篇》中就做了类似的事情,他用字母表示一般概念,研究三段论的推理形式。譬如,在亚里士多德那里,三段论的第一格表述为:

所有M是P,

所有S是M,

因此,所有S是P。

尽管亚里士多德没有明确说明他使用字母表达概念的理由,但是他的这种做法表明,他认为纯粹使用自然语言研究三段论推理是不理想的。我们前面已经提到,莱布尼茨提出了普遍语言的构想,他形象地说,借助这样的语言,所有推理的错误都只成为计算的错误,如果发生争论,那么只要坐下来,拿出纸和笔进行演算就可以了。尽管这一构想非常伟大,但是莱布尼茨本人并没有能够实现,相反,弗雷格才是真正实现这一构想的人。弗雷格不像亚里士多德仍然局限在自然语言的语法中,而是彻底构造了一套人工的形式语言。这个语言有自己的基本词汇表,有利用这些词汇形成合语法句子的规则。其次,句子之间有基本的逻辑连接词,即否定(Ø)、合取(Ù)、析取(Ú)、蕴涵(®)和等值(«),这些连接词按一定的规则把简单的句子递归组合成复杂的句子。我们可以看出,形式语言毕竟是语言,它与自然语言有很多相似点:有自己的语法规则,即上面我们提到的这些规定如何形成合语法句子的规则。同样,我们也可以讨论它的表达力,正如我们可以对汉语和英语的表达力进行比较一样。但是,与自然语言最大的区别在于,人工语言更为精确。原因在于,在形式语言中,使用什么符号表达什么概念是事先规定好的,不会出现混用或歧义的情况。一旦给定了这样的语言,我们就可以用它来表达命题以及命题之间的推理,从而可以研究有效的推理规律。当然,有效的规律也许有很多,可能散落在不同的角落,等待着我们去发现。那么,一个重要的问题就是,有没有一种方法能把它们全部集中在一起研究?这自然引出了公理化的方法。

公理化的方法最初起源于欧几里德几何学。欧几里德将公元前7世纪以来希腊几何积累起来的既丰富又纷纭庞杂的结果整理在一个严密统一的体系中,从最原始的定义开始,列出5条公理和5条公设为基础。通过逻辑推理,演绎出一系列定理和推论,从而建立了被称为欧几里得几何的第一个公理化的数学体系。换句话说,欧几里德采用公理化方法把许多规律放在一起进行研究,其中有些规律作为公理,有些则是从公理推出来的定理。这是一种更为系统化的研究方法。弗雷格研究关于谓词的演算正是采用这样的公理化方法,在他的《概念文字》中,有9条规律被作为公理,还有4条推演规则。在此基础上,他进行了大量的推演,给出了关于谓词演算的很多定理。[6]这种系统化的研究方法的优点不言而喻,因此这一方法被后来的逻辑学家们所承袭。更为重要的是,这样形成的公理化系统本身也成为逻辑研究的对象,即所谓的元逻辑研究。元逻辑的研究往往与逻辑语义学密切相关。就谓词演算而言,我们知道,一般采用二值的真值表语义来解释抽象的符号。下面我们举例说明几个重要的元逻辑问题。

首先是可靠性。所谓可靠性指的是一个逻辑系统中所有可证的命题都是语义上为真的。这是建立一个系统的基本条件,若公理或定理在语义解释下已经是假的了,那么,这样的研究究竟有多大的意义就是一个值得考虑的事情。可以说,现存的几乎所有的逻辑系统都满足可靠性。其次是完全性。所谓系统的完全性指的是所有在语义解释下为真的命题都是系统的内定理。换句话说,完全性要求的是系统要能够包括所有在直观上为真的命题,显然,这个要求有些理想化,并不是总能得到满足。当然,一阶谓词演算的完全性是可以证明的。但是,我们所见的其他许多逻辑系统中,有不少是不完全的。最后,公理的独立性问题。这个问题是纯粹语法的,注意力在于公理化方法中所选的那些公理。独立性问题是说,被选作公理的那些公式是否相互独立?也就是说,其中一个能不能从其他一个或几个中推出。若能推出,显然被推出的公式就没有必要再作为公理了,相反,可以从公理系列中剔除出去。从对系统的简约化研究方面讲,独立性问题有着特别重要的意义。事实上,波兰著名逻辑学家卢卡西维茨(Lukaiewucz)于1936年证明,弗雷格在《概念文字》中给出的系统并不是独立的,他给出的9条公理可以最终简化成6条。

总之,在数理逻辑的发展史上,弗雷格第一次构造了逻辑演算,研究关于谓词命题的推理规律。他构造形式语言的方法,以及公理化的方法为后来乃至今天的逻辑研究提供了一个范式。

二、从弗雷格到模态逻辑产生和发展

说到底,由弗雷格提出的谓词演算是二值的外延逻辑,是以二值原则和外延原则为基础的。二值原则很简单,指的是一个命题只能取“真”、“假”二值之一为值;外延原则是说,所指相同的词项和命题可以互相替换。在现代逻辑文献中,把满足这两个原则的逻辑称为经典逻辑。把不满足二者或其中之一的逻辑成为非经典逻辑。弗雷格在他的著作中明确指出,关于“知道“、“相信”等的语句不能应用外延原则。

非经典逻辑的一个重要分支——模态逻辑从亚里士多德以来一直受到哲学家、逻辑学家们的极大关注。模态逻辑产生于20世纪前半叶,它的产生与弗雷格本人的工作密切相关,本节正是要试图揭示这一点。 弗雷格完成了《概念文字》之后,罗素(B.Russell)和怀特海(A.N.Whitehead)于1910年合作完成《数学原理》的写作。这一著作进一步系统地发展了弗雷格的演算系统。然而,不论是弗雷格还是罗素,他们在构造逻辑演算的时候都采用了实质蕴涵(material implication),即,A ® B。从谓词逻辑的真值函项语义的角度看,实质蕴涵式A ® B等值于下面的公式: ¬(A Ù ¬B)而这种对蕴涵的理解和解释与实际生活中的蕴涵概念的意义有着很大的区别。 运用实质蕴涵引发的蕴涵怪论立即受到了大家的关注。

举例来说,根据实质蕴涵的语义定义,下面的几个蕴涵句都是真的。

1.      如果1+1=2, 那么金岳霖是中国著名逻辑学家。

2.      如果1+1=3, 那么金岳霖是中国著名逻辑学家。

3.      如果1+1=3, 那么金岳霖是英国著名逻辑学家。

在这些蕴涵句中,一个最明显的问题是,前件和后件的内容完全不相干。 更为抽象地说,根据实质蕴涵的概念,会出现某个假命题蕴涵任何一个命题,而一个真命题被任何命题所蕴涵,这就是所谓的“实质蕴涵怪论”。但是,这样的蕴涵式在弗雷格或罗素的系统中被解释为真。

对蕴涵怪论的讨论引发了大家对蕴涵概念本身的反思。对蕴涵怪论的解决有很多种方案,本文主要介绍导致模态逻辑产生的其中一种解决方案。美国哲学家和逻辑学家刘易斯 (C. I. Lewis) 是现代模态逻辑的创始者,他认为,实质蕴涵的这些怪论没有反映出连接词“如果…那么…”的逻辑性质。在1912年首次提出了新的蕴涵概念,即所谓的“严格蕴涵”(strict implication)A Þ B,以区别与罗素和弗雷格的实质蕴涵。他认为“如何p那么q”应当定义为“pq假是不可能的”。注意,作为“不可能”的模态词就这样被引入对蕴涵概念的讨论。1914年,刘易斯建立了关于严格蕴涵的模态命题演算,1918对此作了进一步的改进[7]。 这样,模态词就悄悄回到了逻辑研究纲领中。从这段历史我们可以看出,一阶逻辑的蕴涵怪论问题与模态逻辑的产生有着直接的联系。

在刘易斯的开拓性工作之后,20世界其他著名的哲学家卡尔纳普(R. Carnap)、 康格尔(S. Kanger)和克里普克(S. Kripke)等人对模态词“必然”和“可能”展开了深入的研究。特别是,他们提出并发展了所谓的可能世界语义学(又叫克里普克语义),对模态词“可能”和“必然”进行解释,从而可以给出模态命题的真假条件。根据这种解释,必然命题 ☐j在某个世界s上为真,当且仅当,j在所有s可及的可能世界上都为真。更为精确的定义和解释如下:

为了对抽象的模态公式进行解释,模态逻辑定义了可能世界语义模型:它是一个三元组M = (S, R, V),其中S是非空的可能世界集,R是可能世界之间的可及关系,V是一个赋值函数,它在一个可能世界里指派命题是否为真。一旦给出了可能世界模型,我们就可以形式地定义必然命题和可能命题的真值:

1.       M, s <*j当且仅当,对所有的t,若RstM, t <j.

2.       M, s<+j当且仅当,存在tRstM, t <j.

直观上讲,上面第一条说的是,一个必然命题*j在模型的一个可能世界上为真,当且仅当,j在那个世界可及的所有可能世界上都为真。第二条说的是,一个可能命题+j在模型的一个可能世界上为真,当且仅当,j在那个世界可及的一个可能世界上为真。

而且,在模态逻辑的语言中,必然和可能算子是可以相互定义的。换句话说,模态形式语言中只需要这两个算子之一就可以了。例如,如果我们把必然算子作为初始连接词,利用下面的式子可以定义可能算子:

+j:= ¬*¬j.

直观上说,说j是可能的,就等于说,j的否定是不必然的。

同理,若可能算子是语言的初始连接词,我们可以如下定义必然。

*j:= ¬+¬j.

j是必然的,就是说,j不可能为假。

必然和可能的这种联系被称为“对偶”(dual)的关系。有趣的是,这样的对偶概念在其他的哲学讨论中普遍存在。譬如,在道义推理中,“义务的”和“允许的”的两个概念也具有对偶的关系。即,一个行为是“义务的”就是说,在所有情况下都要实施那个行为;而一个行为是“允许的”则是说,那个行为在有些情况下是可以实施的。正是因为这一点,从1950年代到60年代,模态逻辑成为新兴哲学逻辑的主要的技术工具。哲学逻辑的先驱们,譬如,普赖尔(A. Prior), 辛迪卡(J. Hintikka)和冯莱特(G. H. von Wright)等,用形式化的方法分析哲学中的核心概念和问题,开创了新的哲学逻辑分支。譬如,普赖尔提出了“时态逻辑”(tense logic)、辛迪卡给出了“认知逻辑”(epistemic logic)研究“知道”和“相信”等概念、冯莱特提出了“道义逻辑”(deontic logic)研究“义务的”和“允许的”等道义概念。新的哲学逻辑分支今天还在不断产生。这些逻辑大多采用模态逻辑方法去分析哲学中的其他的重要概念,得到新的逻辑系统,并研究这些逻辑系统的理论问题。可以说,它们从一诞生就深深地打上了模态逻辑的烙印。[8]特别是,可能世界语义学被广泛作为这些哲学逻辑进行语义解释的重要工具。这一点非常容易理解。因为可能世界的语义学是一种抽象的结构,可能世界完全可以是时间序上的点或片段,也可以是认知世界,或道义推理中可能的理想世界等等。

到了1970年代,模态逻辑的一些数学理论问题得到了深入的发展和研究,这归功于著名的逻辑学家范本特姆(J.van Benthem)、布洛克(W.J. Blok)、法因(K. Fine)、戈德布莱特(R.I. Goldblatt)、赛格伯格(K.Segerberg)和托马森(S.K.Thomason)等著名逻辑学家和数学家的贡献。这一阶段,大量的关于模态逻辑的数学结果被证明。例如,范本特姆提出了模态公理模式和语义框架的关系属性之间的对应理论。籍此理论,模态逻辑和经典一阶逻辑在技术上的联系得到了深入的研究。

三、一阶逻辑与模态逻辑

在这一节,我们主要从语言表达力的角度探讨模态逻辑和一阶逻辑之间在技术上的内在联系。从上一节我们看出,模态语言可以表达新的关于可能和必然的命题,而这些命题是一阶语言所无法表达的,因而,似乎看起来模态逻辑是一阶逻辑的一种扩展。然而,换一个角度看问题,若把模态算子看作是一种基于可能世界论域的量词,因为它受到了可及关系的限制,所以它的作用只是局部的。在这种意义上说,模态逻辑不是一阶逻辑的扩展,反而只是一阶语言的一个片段(fragment)[9]。这种联系可以通过语言之间的翻译表示出来。见下图,模态逻辑经过标准翻译对应于一阶逻辑的一个部分。

图中所说的标准翻译ST是指下面的翻译:

1.      STx (p) = Px

2.      STx (☐j ) =&y(Rxy"STy (j))

根据第一条,模态语言中的一个命题p翻译到一阶语言中,说的是个体有P的属性。

根据第二条,模态语言中必然公式☐j翻译到一阶语言中,说的是,与x有R关系的所有y都满足j。 这样的翻译是递归定义的,从而可以把模态逻辑的所有公式统统翻译到一阶语言中去。

说模态逻辑只是一阶逻辑的一个片段似乎是模态逻辑的一个不足,有趣的是,这一不足在一定意义上却表现为一种优势:与经典一阶逻辑相比较,模态逻辑具有更低的复杂性。例如,经典一阶逻辑是不可判定的,而基本的模态逻辑系统则是可判定的。而且,模态逻辑的有效原则可以用不含自由变元的一阶语言来表示。此外,模态逻辑为我们提供了一个实例,即,如何在一个复杂的语言中寻找有足够表达力的片段?这里,问题的关键在于要寻求语言表达力和计算复杂性之间的“平衡”。一阶逻辑的语言表达力较模态逻辑强,然而其本身却是不可判定的。另一方面,模态逻辑尽管表达力稍微弱一点,但是它却是可判定的。也就是说,在语言的表达力和计算复杂性二者的平衡中,模态逻辑似乎是一个理想的选择。这也在一定意义上说明了为什么模态逻辑而不是一阶逻辑能够在计算机领域得到广泛的应用[10]。而理解这一点也是掌握了逻辑形式化工作的关键所在。

四、结语

本文从回顾《概念文字》出现的历史背景和理论背景出发,指出弗雷格所构造的第一个逻辑演算系统在历史上具有的重大意义。回顾历史,从亚里士多德开始采用人工符号来试图减少自然语言的歧义,到莱布尼茨关于普遍语言的设想,再到弗雷格给出的真正意义上的形式语言。这是多少代人伟大努力和尝试的结果,也是人类思想发展史上的一大杰出贡献。本节我们用实例做进一步的比较和说明。

第一、量词逻辑。一阶逻辑有时又被称为量词逻辑,由此可见量词在一阶逻辑中的重要地位。在亚里士多德那里,命题被首先划分为单称命题和普遍命题,普遍命题进一步被划分为全称命题和特称命题。例如,“张三是人”是单称命题,“所有的人都是动物”是全称命题,“有的人是动物”是特称命题。每种命题都有肯定和否定的形式。亚里士多德集中考察了以下四种命题形式:全称肯定命题(用SAP表示),全称否定命题(用SEP表示)、特称肯定命题(用SIP表示)和特称否定命题(用SOP表示),并建立了它们之间的逻辑对当关系。在讨论三段论推理时,亚里士多德也主要是考察了由上面四种命题构成的推理,强调类与类之间的关系。而就命题中的全称量词和特称量词本身而言,亚里士多德并没有做出深入的分析和研究。中世纪时期,对量词的研究取得了一定的进展,特别是,指代理论被用来解释量词的意义。譬如,当我们说“人是动物”的时候,一旦论域确定,假定论域包括a和b,那么“人是动物”的意义就可以明确地表达出来。这里有两种可能的解读,其一是把它表示成“a是动物并且b是动物”,即,“所有人是动物”。其二是把它表示成“a是动物或者b是动物”,即,“有的人是动物”。这种解释结合论域中的个体对量词进行分析,较亚里士多德有了明显的进步。然而,如果句子中的量词比较复杂,指代理论就无能为力了。而利用一阶逻辑的语言对量词的刻画就十分容易。“所有的人是动物”可以表示为:

"x(Hx®Ax),

这个公式读作:对任意的x,如果x是H,那么x是A。这里,我们用字母H表示人,用A表示动物。

“有的人是动物”则可以表示为:

$x(HxÙAx),

这个公式读作:存在一个x,x是H 并且x是A。

特别是,当我们用包含量词的复杂的句子时,一阶逻辑的优越性就明显地体现出来了。譬如,表示实数稠密性的命题“两个实数之间存在一个实数”,弗雷格之前的逻辑理论无法对此做出满意的表述。在弗雷格的一阶语言中,这个命题可以表示为:

"x"y(x<y ®$z(x<zÙz<y),

其中“<”是可以看作是在一阶语言中表示二元关系“小于”的一个符号。

谈到对关系命题的表示,我们接下来专门讨论弗雷格的一阶逻辑与传统逻辑在对关系命题的研究方面有什么重大的差别。

第二、对关系命题的研究。关系命题是普遍存在的一种命题形式,因为我们常常需要用语言表达一个个体和另一个或多个个体之间的关系。从亚里士多德以来的传统逻辑一般都采用主谓结构来理解这样的句子。例如,我们上面刚刚提到的命题“两个实数之间存在一个实数”是一个典型的关系命题。然而,根据传统逻辑的理论,这个句子被分析成“两个实数之间是存在一个实数的”。注意,这个句子的主词是“两个实数之间”,谓词是“存在一个实数”,“是”是连词。显然,这样的分析完全不能反映这个命题中提到的三个实数之间的关系。类似的例子还有很多,我们在这里不多赘述。我们已经看到,利用弗雷格的一阶语言,这个句子可以得到非常精确的分析。由此也可以看出传统逻辑在处理普遍命题时的局限性。此外,事实上,在一阶语言中,原则上我们可以使用表示任意的n元的关系符号,来表达n个对象所具有的关系。这一点大大拓展了语言的表达力和语言的分析能力,也使得我们对一个句子当中所包含的关系有可能进行表示,然后做进一步的研究。

事实上,弗雷格《概念文字》中利用形式语言进行分析的方法对罗素、维特根斯坦都有很大的影响。在《概念文字》发表之后,弗雷格继续撰写论文系统研究概念、对象、意义和所指的问题,对专名的意义和意谓进行了系统的探讨。这些探讨对20世纪哲学的语言转向和分析哲学的兴起都起到了积极而重要的推动作用。就逻辑自身的发展而言,自《概念文字》发表到现在的100多年间,逻辑的发展突飞猛进,取得了令人瞩目的成就。我们前面已经提到,在哲学逻辑方面,模态逻辑、认知逻辑、道义逻辑、时态逻辑等纷纷产生并得到了发展,许多哲学的概念得到了分析和澄清,这些逻辑已经发展成为重要的逻辑分支,并在计算机、人工智能、和经济学等领域不断被应用。在数理逻辑方面,集合论、模型论、证明论和递归论已经发展成为非常成熟的学科。特别是,递归论的发展与计算机的产生有着非常密切的关系,由于行文有限,我们不能在此展开论述。在所有的这些新型学科中,弗雷格所采用的形式语言和公理化方法已经成为最为经典的研究方法和研究手段。

若弗雷格在天有灵,看到他的著作如何影响了其后一百多年的逻辑发展,而这一影响在今天仍在继续,他应当感到十分欣慰了。

原载《自然辩证法研究》2011年第4期 

从弗雷格的《概念文字》到模态逻辑的产生与发展相关推荐

  1. 人类的思维方式:概念,种类,影响,未来发展,挑战

    文章目录 人类的思维方式 概念 种类 逻辑思维和非逻辑思维 形式思维和内容思维 概念思维和图像思维 系统思维和创新思维 影响 科学和技术 社会制度和文化认同 价值观念和道德规范 未来发展 人工智能和机 ...

  2. 数据库系统概述-4个基本概念、 数据管理技术的产生和发展、 数据库系统的特点

    数据库的4个基本概念 数据(Data).数据库(Database,DB).数据库管理系统(DataBase Management System,DBMS).数据库系统(DataBase System, ...

  3. 家用计算机都是专用计算机吗,什么是因特网概念和互联网一样吗(因特网发展历程)...

    软件是计算机中程序的名称. [好文分享:www.ii77.com] 家中或办公室的计算机软件和一个调制解调器/光纤与因特网相连接.目前的计算机通常已经安装好了这些部件. [好文分享:www.ii77. ...

  4. 计算机的数学思想源头(回复“计算机数学”可下载PDF典藏版)

    计算机的数学思想源头(回复"计算机数学"可下载PDF典藏版) 2018-04-16 数据简化DataSimp 数据简化DataSimp导读:前篇<计算机诞生的详细历史> ...

  5. 【05】2.1 程序语言特征

    2.1.1  程序语言的演化 1.程序设计语言的萌芽 (1)爱达与最早的程序设计 爱达:分析机可以像提花机那样进行编程. 爱达设计了世界上第一个计算机程序. 爱达提出了循环.子程序等概念. 爱达参与了 ...

  6. 谁提出了通用的计算机设备即图灵机的设想,图灵的机器思维思想初探

    摘要: 计算机作为现代社会必不可少的工具,其重要性不言而喻,基于计算机实现的人工智能在一定程度上也影响了现代社会的发展.图灵是最早领会到计算机巨大潜力的人之一,他在前人的研究基础之上,提出了图灵机以及 ...

  7. 数理逻辑奠基人--弗雷格

    数理逻辑奠基人--弗雷格 坦率地说,站在无穷小背后的人有一大串数学巨人:弗雷格.希尔伯特.罗素.塔哥德尔.塔尔斯基与鲁宾逊,以及J.Keisler. 老实说,离开数理逻辑模型的严格证明,超实数无穷小理 ...

  8. 【CIPS 2016】(17章)文字识别 (研究进展、现状趋势)

    CIPS 2016 笔记整理 <中文信息处理发展报告(2016)>是中国中文信息学会召集专家对本领域学科方向和前沿技术的一次梳理,官方定位是深度科普,旨在向政府.企业.媒体等对中文 信息处 ...

  9. 蓝牙的基本概念以及发展轨迹 - 蓝牙的前生后世

    一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍. 第二篇:Transp ...

  10. 数理逻辑小结1——命题逻辑基本概念

    数理逻辑(1)--命题逻辑基本概念 一 命题与联结词 命题符号化 命题:可以判断真假的陈述句 原子命题:不包含任何逻辑联结词的命题 or 无法分解为更简单陈述句的命题 复合命题:由联结词和简单命题构成 ...

最新文章

  1. [C++调试笔记]define.h
  2. UCGUI的模拟器UCGUISim详解
  3. firefox是什么浏览器_Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试
  4. 自动化集成:Kubernetes容器引擎详解
  5. 【spark】Spark通过ClickHouse-Native-JDBC写入Clickhouse
  6. 程序员为什么 365 天背电脑包?这答案我服!
  7. 【Proteus仿真8086】简单IO接口实验——无条件传输和查询方式
  8. java quartz配置_Quartz 定时任务(Quartz 的配置文件)
  9. Linux | 如何通过Xshell上传文件到Linux
  10. 解决局域网文件共享“****无法复制,指定的网络名不可用”
  11. find命令查找包含指定内容的文件
  12. 33. Pay Gap for the Brightest Female Graduatea 最聪明的大学女毕业生面临的工资差距
  13. 分形蕨( fractal fern)
  14. java 科学计数法转换为普通数字_如何将计算器上的科学记数法转换为普通记数法?...
  15. 【Python】制作圆角图像的两种方案对比
  16. 用selenium来下载小姐姐图片并保存
  17. 如何用纯 CSS 创作一个渐变色动画边框
  18. wifi 路由 dns 被劫持 手机 /电脑 打开后弹出一些广告窗口
  19. excel合并多个工作表
  20. Android修改主机名和IP地址问题

热门文章

  1. HAU寒假训练第一周
  2. 基于单片机的单行道红绿灯仿真
  3. 华为招收mba硕士么_为什么我放弃MBA以获得计算机科学硕士学位
  4. 上学期间你收到最感动的小纸条是什么?
  5. 股市行情图原来是这样实现的
  6. 打印机 linux 共享文件夹,linux 连接windows打印机
  7. 齐齐哈尔计算机应用软件学校,黑龙江齐齐哈尔计算机应用技术课程
  8. Banner本地图片轮播图
  9. 【代码精读】CVP-MVSNet代码结构详细分析
  10. 基于51单片机的烟雾温度火灾报警器 LCD1602显示proteus仿真