论欧喷索斯应当缓行

    鲁迅曾经写过一篇“论费厄泼赖应当缓行”的文章,“费厄泼赖”是英文“fare play”的音译,意思是“公平竞争”。鲁迅并没有发对“费厄泼赖”,只是说在当时的国情,“费厄泼赖”是不可行的,是不应当大力提倡的。
    在此我效仿先人,抛出了”论欧喷索斯应当缓行“的言论,”欧喷索斯“是英文"Open source"的音译,意思是”开源“,大家看到这里,就立刻明白,我罗嗦了半天,原来是准备对开源说点什么,开源是有点敏感的话题,因为确实存在不少开源粉丝,我若对开源说三道四,很容易遭到不善的评论,此处我袁某人把鲁迅大人抬出来,并将两者绑定起来,希望能抵挡一些不利言论。
    费厄泼赖是具有绅士风度,而欧喷索斯则是共产主义,没人反对绅士风度,同样没人说共产主义是不好的 。只是我们需要全面的分析事物,任何事物是正是邪是对是错除了事物本身外,还需要看看事物所在的环境。费耳颇赖和欧喷索斯都是好东西,但是否提倡则需要配备合适的环境,只有合适的环境,美好的事物才能发挥积极的作用,否则可能事与愿违,这个客观存在的规律是不以个人美好的意愿为转移的。
    鲁迅生活的年代,中国是半封建半殖民的中国,东西方的列强在政治上,经济上和文化上控制压迫着中国,中国人自然要反抗,对此列强及其走狗采用各种手段镇压反抗,其中就包括号召中国人要“费厄泼赖”,“大家要文明啊,要公平竞争,暴力是不好的,范嗔戒的,应当一切得按合同办事”,可惜若真要贯彻费厄泼赖则我们是叫化子和龙王比宝,反而是很不公平的。鲁迅是看穿了列强的心肝脾肺肾,知道所谓的"费厄泼赖”就是列强散布的具有高尚外衣的麻醉剂,于是跳出来说费厄泼赖要缓行。其实费厄泼赖那套列强现在还在使用,在国际经济中,某些列强就说中国是发达国家,应当和其他发达国家“费厄泼赖”,要放弃对发展中国家的照顾政策,其实就是在忽悠我们中国人的。若未来中国真的成了发达国家,到时候再“费厄泼赖”那就是自然的了。
    同“费厄泼赖”一样,“欧喷索斯”也应当大力提倡,大家可以想象一下,几十亿人类大脑共享知识,则人类科技会怎样的发达啊,说不定现在正在造超光速火箭呢。这么好的东西那是必然要实现的,实现“欧喷索斯”也应当具有相应的环境,目前一般认为欧洲的“欧喷索斯”做的比较好,为什么呢,个人认为欧洲总体上是很发达的,社会保障和福利制度完善,人们可以比较轻松的解决基本的生存和发展问题,而且欧洲实行着非常严厉的知识产权保护制度,而且欧洲文化比较人道,关注社会和谐和发展。生活不愁,知识产权有保护,于是很多程序员就为了出名,为了帮助别人,或者思想就是高尚,造出了“欧喷索斯”。一个人或团队开发了比较知名的开源项目,则他/她们就名声雀起,而且有知识产权保护,他们不担心白白的为他人做嫁衣。美国的开源比欧洲弱一点点,因为美国的福利制度比欧洲弱些,而且美国的商业气氛比较重,不够高尚,因此也就弱点,但美国也有不错的社会保障和福利制度,知识产权保护得也很强,因此开源也不少。
    现在考察中国的开源,中国还是贫穷弱后的发展中国家,没有很好的社会保障和福利制度,人们都要买力工作才能养家糊口,基本的生存和发展耗费了人们大部分精力,因此开源就缺乏经济基础。而且中国的知识产权保护不力,政府对此不重视,人们对此比较麻木,很多程序员任意使用和修改他人软件和源代码,侵犯版权还不说,有些不厚道的人还常常侵犯著作权,把别人的代码硬说是自己的。典型的例子就是前一段时间爆出了某国家支持开发的操作系统和某开源操作系统程序文件存在高度相似的事情。前几天,CSDN上某人还放话“漠视版权是中国发展开源的优势”,对于为什么会有这样的言论,我只能以商业抄作来解释,若此人真是有这样的真实想法,那我只能抓狂了。
    没有很好的社会保障制度,缺乏知识产权保护,在这种情况下,硬要求别人开源是把别人往死里赶。是否开源是个人的自由选择,任何人不能将自己的意志强加给别人,我们程序员也需要生存和发展,同其他人一样,需要耗费大部分精力养家糊口。而且程序员也不是蒙着眼睛傻干活的驴子,不想白白为他人作嫁衣。因此对于我个人,开源是我美好的愿望,而闭源则是我无奈的选择。
    鲁迅说过“真的勇士,敢于面对淋漓的鲜血,敢于正视惨淡的人生”,尽管国内有很多不利开源的问题,但还是有一些真正的开源人士在努力奋斗,他/她们是高尚的,是值得我尊敬的,而且他/她们的知识产权是需要大家的保护。希望中国能尽早发展起来,建立和谐的社会保障和福利制度以及严格有效的知识产权保护制度,如此这样,开源的春天才能来到,到时候开源之花将处处绽放。

袁永福 ( http://www.xdesigner.cn ) 2007-6-24 

### 埃拉托色尼筛法的实现与原理 埃拉托色尼筛法是一种高效的算法,用于在一定范围内寻找所有素数。该算法的基本思想是从小到大枚举每个数,若当前数为素数,则将其倍数标记为合数。最终,未被标记的数即为素数[^1]。 以下是埃拉托色尼筛法的具体实现代码示例: ```c #include <stdio.h> #define MAX 100 // 假设查找范围为1到100 int main() { int arr[MAX + 1]; // 创建一个数组来标记数字是否为素数 for (int i = 0; i <= MAX; i++) { arr[i] = 1; // 初始化所有数为素数(1表示素数,0表示非素数) } arr[0] = arr[1] = 0; // 0和1不是素数 // 核心算法:标记非素数 for (int p = 2; p * p <= MAX; p++) { if (arr[p] == 1) { // 如果p是素数 for (int j = p * p; j <= MAX; j += p) { arr[j] = 0; // 将p的倍数标记为非素数 } } } // 输出所有素数 printf("100以内的素数有:\n"); for (int i = 2; i <= MAX; i++) { if (arr[i] == 1) { printf("%d ", i); } } return 0; } ``` #### 关键点解析 1. **初始化数组**:创建一个布尔数组 `arr`,大小为范围上限加一,初始值均为1,表示所有数均假设为素数。 2. **排除特殊情况**:将0和1标记为非素数。 3. **核心循环**:从2开始,依次检查每个数是否为素数。若是素数,则将其所有大于等于其平方的倍数标记为非素数[^3]。 4. **输出结果**:遍历数组,输出所有标记为素数的数。 此外,在埃拉托色尼筛法中,从 `j = i * i` 开始标记倍数而非 `j = i + i`,是为了避免重复标记,从而提高算法效率[^2]。 #### 时间复杂度分析 埃拉托色尼筛法的时间复杂度为 \(O(n \log \log n)\),其中 \(n\) 是要筛选的范围上限。这是由于每个合数只会被其最小质因数标记一次[^4]。 ### 注意事项 在实际应用中,如果需要处理更大的范围或更高的效率,可以考虑优化算法,例如使用线性筛法。线性筛法通过确保每个合数仅被其最小质因数筛除一次,进一步提高了效率[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值