本文目录一览:
1003——09溯怎么读
“溯”怎么念?“溯”读作“Sù”,也可以读作“泝,遡”,意为逆流而上。沿着水流的方向前进,也可以理解为追溯根源或回忆过去。“溯”还有“推本溯源”、“回溯”、“追溯”的意思。
1003——09溯怎么读
“溯”怎么念?“溯”读作“Sù”,也可以读作“泝,遡”,意为逆流而上。沿着水流的方向前进,也可以理解为追溯根源或回忆过去。“溯”还有“推本溯源”、“回溯”、“追溯”的意思。
江与河有什么区别?
江、河作为地名通名,是水体形式的一种称呼,咱们想要知道江和河是怎么区别的,首先要搞清楚江和河的定义。
古代汉语中,“江”专指长江,“河”专指黄河,而一般的河流多以“水”为通名呼之。河的差别可能是地域或部族的语言习惯使然,也就是叫法上有不同。
然而后来的汉语中,江和河却产生了差异,一般来说江要比河规模大,但要确切找出其分界点又很难说清楚,它们只是相对而言的一种说法而已。
规模不同。一般说来江要比河规模为大,但是并没有明文规江和河的书面定义,科学上并没有严格规定江河在长度、宽度、深度、流速等方面的界定数据,所以,一般来说相对较大的水道称“江”,退而次之普通者称“河”“水”,,有些地方称为\"水渠“,最小者称“溪”。流向不向。通常把注入内海或者湖泊的河流叫河。例如:黄河,注入渤海叫河;辽河,注入渤海叫河;塔里木河,注入罗布泊,也叫河,等等。而通常把注入外海或大洋的河流叫江。例如:长江注入东海,叫江;珠江注入南海叫江,等等。径流不同。地表径流比较稳定,一年四季变化不大的叫江.如长江,基本可以全年通航. 地表径流因为季节的变化而发生巨大变化的叫河。如黄河,夏季水量很大,冬季却经常断流。地域不同。地域上的区别(南“江”,北“河”),比如中国南方的河流多称为“江”,北方的河流人们多称为“河”。扩展资料:
按《左昭十七年》所记,疆土以水纪,故为僵师而水名。“国家”一词的字面意思是指“保卫疆土”),故“江”字本义是属于国家的水道。国家河道与中原地区黄土地上的自然河流最大的区别在于它有人工驳堪的规则堤岸,故水道走向较为固定。
由于中国南方地区的河流因气候湿润、植被丰茂而河道固定,很少发生河流改道情况,所以南方河流被总名为“江”。
中国南方的河流多称为“江”。
例如:长江、珠江、钱塘江、岷江、怒江、金沙江、澜沧江、雅鲁藏布江、漓江、丽江、九龙江等等。可见南方人一般习惯把河流称之为“江”。
北方的河流人们多称为“河”。
例如:黄河、淮河、渭河、经河、洛河、汾河、青河、辽河、饮马河、沁河、柴达木河、塔里木河等等。可见北方人习惯把河流称之为“河”。
看完必会的回溯算法入门攻略,丈母娘看了都说好
这是一篇关于回溯算法的「详细的入门级攻略」(真的就只是「入门级」)。
回溯的含义「回溯」本质上是「搜索的一种方式」,一般情况下,该搜索指「深度优先搜索(dfs)」。且实现上使用「递归」的方式。
从“全排列”开始全排列是回溯最经典的应用之一,我们以全排列做基本示例,先来理解最简单的回溯是如何执行的。
LeetCode 46. 全排列(参考力扣的46题:https://leetcode-cn.com/problems/permutations/)
给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。
现在,请你按照字典序将所有的排列方法输出。
输入样例3
输出样例1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
解释:输入样例为输入的整数n。输出样例为1~n的三个数字(1,2,3)的所有排列方式。
简单的思路先把这道题当做脑筋急转弯,我们很容易就可以想到简单的思路:「分别把不同的数字放到每个位置上」。
例如:
1 2 3,总共三个数,所以有三个位置,我们把1放在第一个位置,那么第二个位置可以放2或3,无论第二个位置放哪一个,第三个位置都只能放另外一个,而当三个位置都放完就找到了一个完整的排列方法;以此类推的,如果第一个位置放2,那么第二个位置有两种放置方式;如果第一个位置放3,那么第二个位置同样有两种放置方式;我们把这一放置的过程用可视化图形表达出来,会形成一种树的形式:回溯是在做什么?请仔细研究一下上面的放置思路,其中有一个隐藏的关键点:「从第一层向下搜索到第三层,找到一个结果之后,需要重新回到第一层;再从第一层延伸到第二层的其他分支。」也就是说,需要「沿着如下图的红色箭头指向顺序搜索」。
想要用代码实现这一搜索过程,这一关键点是需要想清楚的:「如何在搜索出一个结果之后,让代码可以往回搜索呢?」
Code「往回搜索」其实就是回溯的过程,先来看下全排列中的代码实现:
class Solution {public: vector<vector<int>> res; // 存储所有排列方法 vector<bool> st; // 存储数字是否被用过 vector<int> path; // 存储当前排列方法 // 使用递归的实现搜索,其中u表示当前已经排列的个数 void dfs(int u, vector<int>& nums) { // 如果已经排列的数字个数和总数字个数相等,说明已经完成一次排列 // 把当前的排列方法放入最终结果,并return。 if (u == nums.size()) { // ① res.push_back(path); // ② return; // ③ } // 枚举数字 for (int i = 0; i < nums.size(); i ++ ) { // ④ // 没有使用过的数字参与排列 if (!st[i]) { // ⑤ path.push_back(nums[i]); // ⑥ st[i] = true; // ⑦ dfs(u + 1, nums); // ⑧ st[i] = false; // ⑨ path.pop_back(); // ⑩ } } } vector<vector<int>> permute(vector<int>& nums) { for (int i = 0; i < nums.size(); i ++ ) st.push_back(false); dfs(0, nums); return res; }};
「接下来是本文重中之重,我们来看一下上面的代码的完整的执行流程,以此来了解为何这样写就能完成回溯。」
首先,要明确的几个关键角色:u: 可以理解为“目前使用了几个数字”、“目前处于树的第几层”等等;res: 保存最终结果(所有路径);path: 保存当前的路径,保存的是值,比如nums[0],nums[1]等;st(state): 存储数字是否被使用过,上面代码直接存储的下标(也可以存储值),因此下面分析中st也是以下标为准;nums: 数组,既保存需要排列的数字,如n=3,nums=[1,2,3]。明确递归函数的含义,递归函数最重要的就是其表达的含义,而在上面代码中,递归函数dfs的含义是「深度优先搜索,当搜索到一个结果之后,就把结果加入到结果res」。「最最最最重要的」,我们来看一下回溯的执行过程:「最最最最重要的」,执行过程中的全部变化如下:从图中path的变化,可以明显的看出,其实代码的执行顺序正好对应了上面图中的搜索顺序。理解回溯(或者说递归),至关重要的一点:「当一个函数让出执行权后,执行权又重新回来,函数当前的变量状态应该和让出前一致。」以上面的dfs(1)为例,在第②步(不是代码②),递归到dfs(2)时候 「dfs(1)的变量i的值是1」,那么在第⑤步回到dfs(1)的时候,「dfs(1)的变量i的值仍然是1」,并且从「递归处(代码⑧)」继续向下执行。总结个“板子”根据上面“全排列”的解法,我们可以总结出一个「回溯问题的通用思路」,下面用伪代码来描述:
res; // 存放结果path; // 存放当前的搜索路径st; // 判断元素是否已经被使用// u 表示递归处于哪一层void dfs(u) { if 结束条件 { res.push_back(path); return; } for 循环 { // 剪枝 // do something~~ dfs(u + 1); // 递归,进入下一层 // 回溯,撤销 do something~~ }}
下面我们就用这种方法,来批量的解决一堆回溯相关问题。
使用“板子”解决同类型题目充分理解回溯的思路,那么就可以扩展到相同类型的题目上。
LeetCode 47. 全排列 II(参考力扣的47题:https://leetcode-cn.com/problems/permutations-ii/)
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。
思路及实现全排列的经典扩展,给出的序列nums可能包含重复的,那么就需要考虑一个问题:「如何避免重复数字换序后,计算为新的排列方式。」
其实解决的办法很简单:「跳过重复的数字。」
举个例子:当前nums为[1,1,2],为了便于观察我们给重复的1做上标记来进行区分,得到 ,那么就会出现 , 是同一种排列。
为了避免这种情况,以最左边的 为准,如果出现重复的就跳过去,那么当排列出 ,就不会再排列出 。
Code实现上还有一个小细节需要注意下,给出的nums可能是乱序的,所以要先排序一下,以方便跳过相同的数字。
因为是搜索的全排列,所以排序不会对结果产生影响。
class Solution {public: vector<vector<int>> res; vector<int> path; vector<bool> st; vector<vector<int>> permuteUnique(vector<int>& nums) { sort(nums.begin(), nums.end()); st = vector<bool>(nums.size()); // path = vector<int>(nums.size()); dfs(nums, 0); return res; } void dfs(vector<int> &nums, int u) { if (u == nums.size()) { res.push_back(path); return; } for (int i = 0; i < nums.size(); i ++ ) { if (!st[i]) { // 剪枝。如果出现重复数字,并且重复数字已经被用了,就跳过。 if (i && nums[i - 1] == nums[i] && !st[i - 1]) continue; st[i] = true; path.push_back(nums[i]); dfs(nums, u + 1); path.pop_back(); st[i] = false; } } }};LeetCode 39. 组合总和
(参考力扣的39题:https://leetcode-cn.com/problems/combination-sum)
给你一个 无重复元素 的整数数组 nums 和一个目标整数 target ,找出 nums 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。
nums 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。
对于给定的输入,保证和为 target 的不同组合数少于 150 个。
思路及实现初步看题目,发现与全排列高度相似,但又有些许不同:
元素可以重复使用;结束条件不在是所有数字全部使用,而是当前路径之和为target;那么,实现上我们要解决的一个重要难点就是:「如何让元素可以重复使用呢?」
首先,为了逐步增大路径,先给 nums 排个序。因为数字可以重复使用,所以用来判重的st也就没必要使用了。最重要的是「使元素重复使用」,我们引入一个新的参数start,它表达的含义是「每次递归从start开始搜索。」这样有什么效果?举个例子就清晰了,「我们当前枚举到了i=2,那么我们把i当作参数start传到下一层,下一层又会从start开始枚举,不就重复使用i=2了嘛?」请读者将上面,加粗的描述多读几遍,细细体会一下start是如何解决本题最大难点的。「st与start的区别是什么?或者说分别在什么时候使用?」在「全排列」中,因为每个数字只能使用一次,所以我们用了st数组,把使用过的数字标记一下,这样在下一层遇到的时候,就可以跳过使用过的。例如:当前i=0,st=[1,0,0],下一层重新从0枚举到3,当枚举到0的时候,发现st中0已经被使用过了,因此跳过了0,继续循环,得到i=1。在该问题中,因为数字可以重复使用,所以用来判重的st显然就没有存在的必要了。而为了计算重复元素,我们引入dfs()的新参数start,每次从start开始枚举就,这样每次把当前i的值传给start,那么下一层还是从当前i枚举的。但是这里引申出一个重要的问题:「下一层递归不从0开始重新枚举,不会枚举不全吗?」答案是:不会的,一个重要原因是「提前将nums从小到大,排好了序」,所以从较小的数开始枚举,一定是「一直枚举较小的数,直到较小的数也会超过target 或者 较小的数加起来等于target。」这样,对于「较小的数来说,我们已经全部放入了path,较小的数的使用个数不能再增多了(只能减少),所以也就没有枚举较小的数的必要了。」举个例子:nums = [2,3,6,7], target = 7,假设nums已经排序好,那么我们一定是一直枚举最小的数2,直到再枚举最小的数2也会超过target。那就是[2,2,2],此时下一个2会使总和超过target,所以直接回溯,再枚举3,得到结果之一[2,2,3]。我们发现当前路径path达到[2,2,2]时,「合法路径中,能容纳的最小数2已经到上限了」,无法再增多了,而为了配合后面比他大的数,它只能慢慢减少,直到算法结束~~把当前的思路带入到“板子”中,会发现实现很简单。Codeclass Solution {public: vector<vector<int>> res; vector<int> path; vector<vector<int>> combinationSum(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); // 至关重要的排序 dfs(nums, 0, target, 0); return res; } // dfs的参数多加一个start void dfs(vector<int>& nums, int u, int target, int start) { // 当前路径和正好等于target时,说明找到了一个合法路径。 if (target == 0) { res.push_back(path); return; } for (int i = start; i < nums.size(); i ++ ) { // 剪枝。如果超过target,直接开始回溯。 if (target < nums[i]) return; // do something~~ path.push_back(nums[i]); target -= nums[i]; // target减少 // 递归。注意start处传的参数,是当前的i,所以下一层递归也会从这个i开始, // 这样就达到了重复使用数字的目的。 dfs(nums, u + 1, target, i); // 撤销 do something target += nums[i]; path.pop_back(); } }};LeetCode 40. 组合总和 II
(参考力扣的40题:/d/file/gt/2023-10/wivolleo445 给定一个候选人编号的集合 nums 和一个目标数 target ,找出 nums 中所有可以使数字和为 target 的组合。
nums 中的每个数字在每个组合中只能使用 一次 。
注意:解集不能包含重复的组合。
思路及实现对比上一道题(组合总和),本题有两个关键点:
「数字不可以重复使用」只要读者认真理解了上面一题start的含义,想必很快就能解决这个问题(就很快啊~)。在上一道题,我们为了让数字可以重复被使用,所以在start位置传了当前枚举的数字i,这样下一层枚举也会从i开始。那么显然,对于这个问题,只要把start位置的传参改成i+1就可以了。「结果不能出现重复」细心的小同学,可能已经发现了,“诶?这个问题不是在「全排列2」中解决过嘛?”没错,直接把「全排列2」中的那个剪枝拿过来就可以了(“拿来”主义狂喜~)。Code为了节省码字时间和文章空间,本题就不放完整代码了,正好读者可以自己试试能不能写出来。
下面写出两个关键点的实现,其余的代码和上一题“组合总和”「完全相同」。
for 循环 { // 剪枝。全排列2的思路:对于重复数字直接跳过就可以啦。 if (target < nums[i]) return; if (i > start && nums[i - 1] == nums[i]) continue; // do something~~ // 递归。数字不可以重复使用。 dfs(nums, u + 1, target, i + 1); // 撤销 do something~~}
来源:https://mdnice.com/writing/61372f6f011243899ea639222258173a
现代中国人的“科学”概念及其由来
书封图。《什么是科学(第二版)》,商务印书馆2023年1月版,吴国盛著。
一、两种基本用法
“科学”在今天是一个国人耳熟能详、妇孺皆知的词汇,但它的含义却相当模糊。在不同的语境下,它指称着非常不一样的意思。
大体说来,在现代汉语的日常用法中,它有两个基本的方面。
一种用法是指某种社会事业,指称一个人群以及他们所从事的工作,这个人群就是科学家或者科技工作者,这项事业就是“科学”。中国目前实行“科教兴国”的国家战略,这里的“科”字,也是在这个意义上使用的,意思是说,要依靠科学技术专家以及他们所从事的科学技术事业来振兴国家。
另一种用法是指某种价值判断。“科学”经常指对的、正确的、真的、合理的、有道理的、好的、高级的。比如我们说“你这样做不科学”,是说这样做不对、不正确、不应该。比如我们说“决策科学化”,是指决策要合理化,不能主观蛮干;比如我们讲“科学发展观”,是指某种合理的、均衡的发展观,纠正某种唯 GDP主义的发展、竭泽而渔不计后果的发展、导致两极分化的发展,等等。
简而言之,对于“什么是科学”的问题,第一种用法回答说:“科学就是科学家们做的事情。”第二种用法回答说:“科学是好东西。”
为什么“科学家们做的事情”就是“好东西”呢?为什么指称某种事业的用语同时拥有某种正面价值判断的功能呢?这是因为这项事业给中国人民留下了深刻的正面印象。要讲清楚这件事情,需要回到中国近现代史的大背景中来。
二、科学:夷之长技
一部中国近现代史是“救亡”和“启蒙”的双重变奏史(李泽厚语)。
所谓“救亡”,是说自1840年鸦片战争以来,中国屡受西方列强欺凌,中国人随时面临着亡国灭种之危机,因此,争取国家独立、民族富强成为中国近现代史的重大主题。
所谓“启蒙”,是说中国近现代史是中国告别传统社会、走向现代社会的历史,在这个过程中,自由、平等、人权等观念需要引入,理性的思维方式和民主的政治体制需要建立,人的现代化是“启蒙”的核心内容。
就“救亡”而言,人们很快就找到了西方的“科学”。
1840年鸦片战争爆发的时候,中国仍然是世界上首屈一指的大国。据英国著名经济史家和经济统计学家安格斯·麦迪森的研究,1820年的时候,中国的GDP占全世界的32.9%,这一优势直到 1895年才被美国超过。麦迪森的数据测算存在一些争议,但即使考虑这些争议,我们也可以肯定地说,在西方与中国交手的头半个世纪,中国一直是一个经济大国。
然而,这样一个经济大国为何总是败于列强之手呢?原因在于,中国的军事不行,国富而兵不强。兵不强也有两个原因,一个是军事制度落后,另一个则是军事技术落后。第一次鸦片战争之后,先进的中国人马上意识到了后者,认识到西方的“坚船利炮”是他们克敌制胜的法宝,而“坚船利炮”的背后,是强大的工业以及现代化的科学与技术体系。所以,从1861年开始,清政府中的开明势力在全国掀起了“师夷之长技以制夷”的社会改良运动,史称“洋务运动”。
林则徐在1842年的一封信中,谈到西人之所以战胜的原因是兵器先进:“彼之大炮远及十里以外,若我炮不能及彼,彼炮先已及我,是器不良也。彼之放炮如内地之放排炮,连声不断,我放一炮之后,须辗转移时再放一炮,是技不熟也。”魏源于1844年出版《海国图志》,书中说:“是书何以作?曰:为以夷攻夷而作,为师夷之长技以制夷而作。”“夷之长技三:一战舰,二火器,三养兵练兵之法。”正式提出了“师夷之长技以制夷”的口号,并且把夷之长技规定成“船坚炮利”以及军队建设管理之技。
对夷之长技的深信,贯穿着全部的近现代史。这也是中国人民从血的教训中总结出的真理:“落后就要挨打”。而所谓落后,就是军事技术上的落后。对军事技术的推崇,直到今天仍然支配着中国人的强国梦和潜意识。对航母、对宇宙飞船的渴望,仍然几乎是今天的全民共识。一个半世纪以来,中国人民饱受欺凌、屈辱,对西方军事科技及其背后的现代科技体系推崇有加。这是中国人“科学”观念背后不可忽视的背景。
一个突出的表现就是,中国人心目中科技不分、科技混用、科技混为一谈。普通中国人谈科学不由自主地用“科技”一词,可是一旦谈起“科技”其实指的是“技术”。政府也一样。事实上,中国政府并没有“科学部”,只有“科技部”,而科技部则主要是技术部或者技术经济部。如果做一个民众认知调查的话,我们可以发现,当代中国人所认可的最标准的科学家应该是钱学森,因为他代表着强大的军事能力。人们都喜欢传播这样的说法,一个钱学森抵得过五个师的兵力。
三、科学:来自日本的西方词汇
“科学”并不是汉语固有的一个术语,古文献中或许可以爬疏出偶尔出现的“科学”字样,但意思一定是“科举之学”,而且极为罕见。在现代汉语中广泛使用的“科学”一词,实则来自日本,来自日本人对西文 science一词的翻译。
日本文字中大量采用汉字,但发音与汉语不同,意思也不尽相同。中国现代向西方学习不是直接向西方学习,而是经由日本这个“二传手”。原因大致有三。
一来中国缺乏西方语言的翻译人才,大量西文著作不能直接立即译成中文出版发行。传统中国对文字过于讲究,虽然有西来的传教士,但他们的中文写作水平还不足以独自担当翻译工作,所以,西学东渐早期的西方著作翻译都是传教士与中国文人合作进行,这样就极大地限制了西文著作的汉译规模和进度。
第二个原因是,日本引进西学较早,而且日文吸收外来语能力较强,西学日化工作既迅速又规模大,加上日本离中国近,留学生多,近现代中国人都借日本向西方学习。
第三个原因,也可能是最重要的原因,中国人阅读日本文献非常容易,哪怕是根本不懂日文的人,读日本的书也能明白个大概。
1898年戊戌变法失败后,梁启超亡命日本,在船上读到一本日本小说,发现居然满纸汉字,意思也知道差不多,于是在基本不通日文的情况下开始翻译日本小说。说是翻译,其实只不过把日本人采用的汉字基本照搬过来而已。就这样,从19世纪末期开始,在中国掀起了一场向日本学习西学的热潮。的确,通过日本学习西学容易学,见效快。
大量向日本学习的后果是,现代汉语受到日本语言的巨大影响,一大批西方的学术术语均从日本转道而来。有人甚至认为,现代汉语中的人文社会科学术语有70%来自日本。这些术语大量充斥在我们的日常语言之中,一定已经深刻地影响了汉民族的思维方式。日本这个民族在文化底蕴和思维深度方面有其局限性,现代中国的文化建设以如此大的规模和强度建基于日本文化,实在值得各行各业的有识之士一再反思。
已经有不少人从多个角度提出了一些学科的译名存在的缺陷。比如用“哲学”译西文的 philosophia,没有译出西文“爱”(philo)“智慧”(sophia)的意思来;相反,“哲”是“聪明”,“哲学”实则“聪明之学”,这就降低了西文philosophia的高度。如果选一个更合适的词,也许“大学”更接近 philosophia的高度和境界。《大学》开篇就说:“大学之道,在明明德,在亲民,在止于至善。”“止于至善”颇有西人“爱”智慧的意思。
严复当年就对大量采用日译词汇提出了严厉的批评,这些批评均着眼于日译词汇实际完全偏离了汉语本来的意思。他反对把economics译成“经济”而主张译成“计学”,因为“经济”本来是“经世济用”“治国平天下”的意思,而economics只是指理财经商,把原来的语义缩小了;反对把“society”译成“社会”而主张译成“群”,反对把“sociology”译成“社会学”主张译成“群学”,因为“社会”本来是“乡村社区祭神集会”的意思,而society意思要更加广泛、更加抽象;反对把“philosophy”译成“哲学”主张译成“理学”,反对把“metaphysics”译成“形而上学”主张译成“玄学”,反对把“evolution”译成“进化”而主张译成“天演”。但很可惜,这些更为精到、更为地道的严译术语,最后都遭到了否弃。
让我们回到“科学”。自明末清初传教士带来了西方的学问以来,中国人一直把来自西方的自然知识诸如natural philosophy、physics等译成“格致”“格致学”,或为了区别起见,译成“西学格致”。徐光启当年就用了“格物穷理之学”“格致”“格物”“格致学”“格物学”“格致之学”等术语来称呼来自西方的自然知识体系。格致者,格物致知也,是《大学》里面最先提出的士人功课,所谓“格物、致知、诚意、正心、修身、齐家、治国、平天下”。后人多用朱熹的解读,认为它是指“通过研究事物的原理从而获得知识”。用中国文人比较熟悉的词汇去翻译西方的词汇,难免打上了太深的中国意味,而且也容易混淆。
20世纪头20年,西学术语的翻译大体有三种方式,一种是中国人自己提出的译名,以严复为代表,第二是直取日文译名,第三是音译。“五四”时期流传的德先生和赛先生就是音译,其中德先生指的是democracy(民主)的音译“德谟克拉西”,赛先生指的是science(科学)的音译“赛因思”。最后淘汰的结果,日译名词大获全胜。今日的科学、民主、自由、哲学、形而上学、技术、自然等词全都采纳了日译。
1897年,康有为在《日本书目志》中列出了《科学入门》和《科学之原理》两书,大概是“科学”这个词作为英文science一词的汉译,首先出现在中文文献之中。梁启超、王国维、杜亚泉等人开始频繁使用“科学”一词,示范作用很大。特别是杜亚泉,他于1900年创办并主编了在当时影响非常大的科学杂志《亚泉杂志》,“科学”一词从杂志创刊开始就成为 science的定译。另外,严复在1900年之后也开始使用“科学”来译science,影响自然非常显著。
20世纪头十年,“科学”与“格致”并存,但前者逐步取代后者。1912年,时任中华民国教育总长的蔡元培下令全国取消“格致科”。1915年,美国康奈尔大学的中国留学生任鸿隽等人创办了影响深远的杂志《科学》。从这一年开始,“格致”退出历史舞台,“科学”成为science的定译。
1959年中国科学社被迫解散,机关刊物《科学》杂志于次年停刊。1985《科学》杂志复刊,今天仍然由上海科技出版社出版,周光召院士和白春礼院士先后任主编。
把science译成“科学”明显没有切中这个词的原来意思,相反,用“格致”倒是更贴切一些。science本来没有分科的意思,代表“分科之学”的是另一个词discipline(学科)。不过,日本人倒是抓住了西方科学的一个时代性特征,那就是,自19世纪前叶开始,科学进入了专门化、专业化、职业化时代,数、理、化、天、地、生,开始走上了各自独立发展的道路。反观日本人比较熟悉的中国的学问,却都是文史哲不分、天地人贯通的通才之学、通人之学,所以,他们用“科学”这种区分度比较高的术语来翻译西方的science,显示了日本人精明的一面。
日译“科学”一词基本沿袭了英语 science自19世纪以来的用法和意思,它默认是指“自然科学”(natural science)。我们的“中国科学院”并不叫“中国自然科学院”,相反,其它的科学院则要加限定词,如“社会科学院”“农业科学院”“医学科学院”等。这也是自19世纪以来,西方科学与人文相分手、并且愈行愈远最终走向“两种文化”的实情。
这样一来,现代中国人通过日本人这个二传手,接受了19世纪以来以英语世界为基调的西方科学观念:第一,它是分科性的;第二,它首先指自然科学。如果加上前述的“夷之长技”,现代中国人的科学观念中还可加上,第三,它一定能够转化为技术力量从而首先提升军事能力。
毫无疑问,这样的“科学”观念,只是西方历史悠久的“科学”传统的“末”,而不是“本”。要由这个“末”,回溯到西方科学之“本”,需要费很大的力气。本书的余下几章,就要做这个工作。
四、科学:替代性的意识形态
前面提到,一部中国近现代史是救亡与启蒙的双重变奏史。在救亡运动中,科学作为“夷之长技”被引进、被尊崇。在启蒙运动中,科学则进一步上升为替代性的意识形态。只有认识到作为一种意识形态的科学,才能理解我们在本文一开始提出的问题:何以某个人群(科学家)所从事的事业(科学)能够直接作为正面价值判断的术语(“好的”)。
一部近现代西学东渐史,也是一部科学由“技”转化为“道”、由“用”转化为“体”的历史。
即使在急迫的救亡时期,要想大规模地引进科学这种“夷之长技”,也需要一个合适的理由,因为科学这种本质上属于外来文化的东西,与本地文化实则格格不入。
中国传统文化尊道而鄙技,往往把新技术贬称为“奇技淫巧”。所以,洋务派提出了“中学为体,西学为用”思想,以为大规模引进西方科技的理论基础。所谓“中学为体,西学为用”是说,维护中国传统的伦理道德、纲常名教、社会制度,但引进西方的科学技术以发展经济、富国强兵,解决民生问题。或者说精神文明取中国传统的,物质文明取西方现代的。又或者说,中学主内、西学主外;中学治身心、西学应世事。
但是,在学习和引进西方军事技术的同时,人们认识到光是学习军事技术是不够的,也学不好,必须首先学习包括数学、天文、物理学、化学等在内的西方科学理论;要想学习好西方的科学理论,就必须掌握西方的科学方法和科学思维方式;而西方的科学方法和思维方式,就必然会挑战中国传统的思维方式和文化传统。
洋务运动近四十年中,上述逻辑充分发挥了作用。等到1895年甲午海战一败涂地,洋务运动宣告破产之时,人们终于认识到,中国的落后不只是“技不如人”,而是全方位的落后,包括政治制度、人民素质、思想传统,都需要来一场革命性的转变才行。
这个时期,对传统文化的痛恨,成为有志之士的共识。文化虚无主义开始逐渐笼罩中国的思想界。这个时候,“西体西用”的思想开始占上风,要代替从前的“中体西用”。而在这个“西体西用”中,科学始终处在核心位置。这里的“西用”,指的是建立在现代科学之上的西方技术;“西体”,指的则是科学世界观和科学方法论。
自严复以来的启蒙思想家们一方面猛烈抨击中国传统文化之弊,另一方面开始以科学为基础建构自己的救亡图强的理论体系。从严复、康有为、梁启超到陈独秀、胡适,这些启蒙思想家都不是职业科学家,他们的目标都是为了创建一个有别于中国传统的新的人文和社会思想体系,但他们偏偏都把他们并不熟悉的“科学”作为他们的立论基础。何以故?
中国传统文化价值体系全盘破产之后,产生了一个巨大的价值真空,客观上要求一个新的价值体系加以替代。科学作为西学中为国人最钦佩、也相对最容易接受的部分,就由“用”转为“体”、由“器”进为“道”。这里当然也还有中国传统“致用”思想在起作用,因为与西学中的其他东西比起来,科学似乎是最能解决问题的。
胡适说过:“西洋现代文明的精神方面的第一特色是科学”“我们也许不轻易信仰上帝万能了,我们却信仰科学的方法是万能的”。(参见“我们对于西洋近代文明的态度”一文)科学脱离开了具体的研究事业,上升为一种信仰,从此,作为影响了20世纪中国社会进程的强大意识形态的科学主义,就登上了历史的舞台。1923年,胡适在为《科学与人生观》一书写的序中这样说:
这三十年来,有一个名词在国内几乎做到了无上尊严的地位;无论懂与不懂的人,无论守旧和维新的人,都不敢公然对他表示轻视或戏侮的态度。那个名词就是“科学”。这样几乎全国一致的崇信,究竟有无价值,那是另一问题。我们至少可以说,自从中国讲变法维新以来,没有一个自命为新人物的人敢公然毁谤“科学”的。
《科学与人生观》是一本论文集,收集的是当年那场著名的科学与人生观大论战(历史上也称之为“科玄论战”)中发表的文章。这场论战以科学派大获全胜告终,也宣告了科学主义意识形态地位的牢固确立。实际上,这种科学主义的意识形态,在五四时期的新文化运动中已经十分鲜明而突出。在新学与旧学、文化开明派与文化保守派、政治革命派与政治反动派之间,“科学”成了前者当然的旗帜。
陈独秀在《新青年》创刊号上是这样热情讴歌科学、抨击中国传统文化的:
士不知科学,故袭阴阳家符瑞五行之说。……农不知科学,故无择种去虫之术。工不知科学,故贷弃于地。战斗生事之所需,一一仰给于异国。商不知科学,故惟识罔取近利。……医不知科学,既不解人身之构造,复不事药性之分析。菌毒传染,更无闻焉。……凡此无常识之思维,无理由之信仰,欲根治之,厥维科学。
新文化运动的另一思想领袖胡适,尽管与陈独秀持有大不相同的政治观点,也高举科学之大旗:“我们观察我们这个时代要求,不能不承认人类今日的最大责任与最大需要是把科学方法应用到人生问题上去。”(《五十年来之世界哲学》)
1934年,蒋介石发起“新生活”运动,要求国民党党员们读中国古籍。他说:“我也以为这《大学》一书,不仅是中国正统哲学,而且是科学思想的先驱,无异是开中国科学的先河!如将这《大学》与《中庸》合订成本,乃是一部哲学与科学相互参证,以及心与物并重合一的最完备的教本,所以我乃称之为‘科学的学庸’。”(《科学的学庸》)
毛泽东在1940年的《新民主主义论》中说:“这种新民主主义的文化是科学的。它是反对一切封建思想和迷信思想,主张实事求是,主张客观真理,主张理论和实践一致的。在这点上,中国无产阶级的科学思想能够和中国还有进步性的资产阶级的唯物论者和自然科学家,建立反帝反封建反迷信的统一战线;但决不能和任何反动的唯心论建立统一战线……”
我们看到,不论政治立场有何不同,不论他们实际上掌握了多少现代西方的科学知识,影响着中国 20世纪历史进程的历史人物们,都把科学默认为“好的”东西。这就是当代汉语里“科学”一词第二种用法的历史由来。
五、小结
今天在中国人中耳熟能详的“科学”一词,实际上来自日本学者对于英文science的翻译。这个译名体现了近现代西方学术与传统中国学术的一个重要区分,但并没有切中science的基本意思以及它所代表的西方思想传统(进一步的分析,见本书第二章“西方科学溯源:希腊理性科学”)。如果按照汉语“望文生义”的阅读习惯来理解这个词的话,肯定会走偏——可能会过分地强调“分科”概念。
今天中国人的科学概念中,有两个突出的特点:
第一个特点是,把“科学”作为任何领域(无论是政治领域还是日常生活领域)里正面价值评判的标准,这是 20世纪科学主义意识形态长期起作用的结果;
第二个特点是,倾向于从实用、应用的角度理解“科学”,倾向于把“科学”混同于“科技”,“科技”混同于“技术”,对“科学”本身缺乏理解,这既与中国近现代接受西方文化特定的历史遭遇有关,也与中国实用主义的文化传统有关。
要真正理解“科学”,我们需要进入西方的语境,因为“科学”本来就是来自西方的、为西方人特有的一种东西。
(作者吴国盛,系清华大学科学史系教授、科学史系主任,曾任北京大学哲学系教授,北京大学科学史与科学哲学研究中心主任,中国社会科学院哲学研究所研究员,吴国盛教授本科毕业于北京大学地球物理系空间物理专业,硕士毕业于北京大学哲学系科学史与科学哲学专业硕士学位,博士师从叶秀山教授,主要著作有《科学的历程》《技术哲学讲演录》《时间的观念》等。本文节选自《什么是科学(第二版)》一书,商务印书馆2023年1月出版,澎湃科技获授权刊发。)