https://mp.weixin.qq.com/s/WLLJY5sxxtU9L4qzgCyMgA

作者:稻草鱼       链接:

https://www.zhihu.com/question/274446721/answer/377395235

来源:知乎/著作权归作者所有。转载请注明出处。

谢邀,我确实想在这个事情上说几句。

针对题主的问题:“中国能不能写出操作系统?”,这个问题本身很宽泛。以飞机作类比,从纸飞机、玩具飞机、消费级无人级,再到飞豹,J10,J11,J20,再到B2、F22、F35等等。如果你问“中国能不能造出飞机?”,答案肯定是可以造的,但造出来的飞机可能跟别人有20~50年的差距。同样的,“中国能不能写出操作系统?”,答案也肯定是能。因为一个几百几千行代码的micro tiny os kernel你也可以说它是“操作系统”,一个像Windows这样光代码就有5000万行,全球用户数十亿,拥有巨无霸生态的也可以称为操作系统,中国肯定产生过很多micro os kernel,tiny os kernel。

所以借这个题目,我们不妨更进一步,考虑另一个问题:“中国能不能写出一款比肩windows/mac os/linux/android,获得商业上巨大成功、广泛应用的操作系统?

不能给出肯定回答,也不敢否定。但我倾向于回答“现阶段不能”。

了解一下操作系统史,或者上过大学操作系统课程,你会发现,很多操作系统原型,或者设计思想,都来源于学校或研究院,比如minix/linux/bsd等等。实现一个操作系统是一项纷繁复杂的工程,涉及cpu架构指令、数据结构、算法、编译原理、内存管理、进程管理等等内容,而且在此基础之上,还需要各种各样的应用软件:数据库、工程、设计,有了这些软件操作系统才会有人用,有人用了才能集广大人民的智慧开发更多的软件,反过来促进更多的人用,形成良性循环。

当今,windows/mac os/linux/android已大行天下,形成了一个比四大洋还深的护城河,从头开发一个能比肩这些操作系统的竞品,真比登天还难。

所以,要做这些事情,需要花费巨大的人力、物力、财力。这不是几个人的意志力就能搞定的事情,而是需要整个社会达到一定阶段。

中国的哪些群体、部门、企业可以有资源开发操作系统呢?首先说企业,企业家都是逐利的,我不认为企业愿意投入五年的时候,花费巨大的代价去搞这么一个看不到前途,看不到效益的事情。再说研究院,中国的众多研究院,除了医学,都在往高大上不接地气不着调的路子走,所以我不认为他们会去做这个事情。

然后就是高校,我想重点说一说高校。

【我的写os内核经历】

我高中开始写代码,从2008年读本科,当时受到倪光南关于“中国人要有自己的操作系统”的感召,想写一个小型的os内核,然后在学校里搭一个svn服务,把os内核代码放上去,采用校内开源的方式,逐渐去完善这个os内核。相信每届学校都会有牛人,把牛B的思想加进来,最终走出一条自主操作系统的路。

大学学生是最有精力、资源做这个事情的人。他们有大把的时间、精力,而且学校会教授操作系统、数据结构、算法、编译原理、数据库等基础课程。如果学校有一个自己的os内核,在上课的时候结合这个os内核给学生讲课,效果一定非常好,让学生们能亲身实践这些比较“虚”的课程,一定会吸引不少人参与这个项目。最后通过长期的工程管理,会让这个操作系统逐渐成熟丰满,并且在某一时刻走向工业化。

但是,我想说但是,等我开始做这件事,才发现,在中国的大学,懂编程的人非常少,既使计算机学院,也找不到几个能写代码的,更不容说能写os内核的。但我找了8个技术稍微好点的同学,我们每人分一块领域,比如io管理,内存管理,进程管理,研究linux内核,各人学习一块,然后每周做报告。

但是,经过两个月我就发现,太难了,大家对os内核一点都不理解,而且还不愿意学。只能作罢,于是我决定,我自已来。

整整大半年的时间,我白天上课,做项目,晚上熬到2点多,读IBM BIOS中断手册,赵炯的深入理解linux操作系统,intel的cpu指令手册,minix/orange/linux v0.12源代码,各种设备的指令手册,最后花了3个月时间,写出了一个能在模拟器上跑的os tiny内核(这段历史距今有7-8年历史,记不太清了)。

然后,我想了很多办法把这个os内核推广出去,让同学们都知道,然后参与进来,但其中的泪不知有多少,比如:

1、参加学校创业大赛,评委只有一个计算机老师,并且是计院副院长,其他人不发问不说话,看样子是完全不懂。这位计算机副院长评委问我:你调了什么api?我回答,我写的是os内核,如果说调了api,bios中断算一个吧。然后我感觉他没听懂,他又问了一遍,你要回答你到底调了什么api?我彻底蒙了,又说了一遍答案。然后他又问,你这个有什么用?我说有几个用处。。。,我感觉他还是没听懂。最后给了我一个三等奖,而我另外一个只做了一个月的项目,拿了个一等奖。

2、想搭建svn服务,跑计院申请机器,苦苦请求之下给了一台,但不给固定ip,跑宣传部申请域名,说不给申请,因为他们听上去感觉我的这个事情没什么用。让计院领导帮忙搞定,计院领导也说你这个没什么用,让我自己搞。。。最后只能用一个只有动态ip的服务器搭建了一个svn服务,把os内核源码放上去。

3、找一些听说比较牛的学弟学妹们,给他们讲os内核源码,他们一脸懵B。

不知不觉,到了我大四,虽然在我拿到毕业证之后还在为此事奔波,但我最终要离开,于是找了个人交代了下帮我维护svn服务器,拜拜。

然后是读研三年,发现新的985/211大学也一个尿性,想做这件事,没人会care,大家为了发paper,都在扯各种高大上的东西,都在为生计奔波,我都不好意思提os内核了。后来我想读博,去大学当老师,继续我的想法,但一想大学里都是这个鸟样,我一个也改变不了,随他去吧。

说了这么多,我把os内核源码贴一下,后来我放到github上了:ahhuiyang/LycheeOS

【总结】

我倾向于说“现阶段不能”,是因为,纵观计算机发展史,许多计算机基础技术往往产生于高校,比如操作系统,数据库,搜索引擎,比如国外的卡内基梅降,哥伦比亚,stanford,berkerly等,无数的技术在这里萌芽,成熟,然后被学生带到工业界。比如Google,开始是stanford两个学生在学校里做实验捣鼓出Google的核心算法PageRank,然后退学用这个算法去创建了Google。但在中国,起码在我所见的两个高校,计算机学院领导、老师完全忽视代码,不注重保存、维护学生的代码成果,没有一个项目能在学校里扎根并得到很好的发展,这简直是计算机学院最大的耻辱。在这种环境下,不可能产生操作系统、数据库、编译器,永远都不可能。

另外,像其它行业一样,中国的学生们,在初中高中,老师、家长一直给学生灌输“计算机就是洪水猛兽”这个观念,什么碰了电脑全毁了之类,许多计算机学院大一新生甚至连计算机基本操作都不会,几乎都是到了大学才开始学习计算机专业知识。试问,这种环境出来的计算机学生,如何能学好计算机。电脑是一项伟大的工具,如同任何一项工具一样,我们应该从小教育孩子合理使用,如果要学编程,初中、高中就开始学起,任何一项能力,必须经过长期的训练和坚持,才能达到牛B的程度,大学课堂上的知识量估计只能占10%。我很庆幸我高中就开始学编程,写代码了,一路走来,我发现我的路越走越对。

最后,就像我上面说的,windows/mac os/linux/android已经把护城河挖的很深了,在相同的领域竞争,按照传统操作系统的模式做国产操作系统,我个人认为几乎没有机会。我们不但没机会,在核心技术的能力上还比较欠缺。我觉得可以从中小学生开始启蒙编程教育,尽早培养更多的人才。等这些人进入大学就有知识有意识去钻研计算机核心计术,加上大学良好的环境和充足的时间,还是很有可能发展出下一代操作系统(比如AI操作系统)的原型。再利用高校优势,不断吸收牛B的研究成果和思想,同时带动cpu、硬件的发展,带动产业链上下游核心技术,走出一条独特的路,说不定还有希望能搞出一个有竞争力的东西出来。

中国能不能写出操作系统?相关推荐

  1. 软件测试面试题:请写出电脑的组成及有哪些操作系统?

    请写出电脑的组成及有哪些操作系统? 答:计算机由硬件和软件两大部分组成.(1)硬件的组成(输入设备,输出设备,存储器,运算器,控制器)输入设备:使计算机从外部获得信息的设备如鼠标,键盘,光笔,扫描仪, ...

  2. 操作系统同步问题:有一个没有限量的大盘子,爸爸只往里面放苹果,妈妈只往里面放桔子,儿子只拿苹果吃,女儿只拿桔子吃,请写出能描述4个人行为的同步方案

    有一个没有限量的大盘子,爸爸只往里面放苹果,妈妈只往里面放桔子,儿子只拿苹果吃,女儿只拿桔子吃,请写出能描述4个人行为的同步方案. Program father: begin: repeat:prod ...

  3. 【操作系统】请写出最多允许4人同时进餐的哲学家进餐问题的算法(视频中的代码有点错误)

    题目 请写出最多允许4人同时进餐的哲学家进餐问题的算法(视频中的代码有点错误) 答案 代码 Var chopstick:array[0,-,4],limit : semaphore:=1,1,1,1, ...

  4. 为何 Linus 一个人就能写出这么强的系统?

    为何 Linus 一个人就能写出这么强的系统,我们却做不出来? 要想回答这个问题,必须得回到Linux诞生之时去看一看. Linus的技术 现在能手搓操作系统的人确实很多,可是如果我们穿越到80年代末 ...

  5. 汇编call指令详解_我也能写出雷军的的代码吗?最好的汇编语言入门教程在这里!...

    作者:阮一峰 链接:http://www.ruanyifeng.com/blog/2018/01/ 之前,嵌入式Arm曾经发送过一篇名<给跪了!来看看雷军 1994 年写的代码,经典老古董(附完 ...

  6. java写出文本文档乱码_对象流如何写出到文件以及为什么乱码

    在写入对象文件的过程中,采用了txt文件,发现文件乱码,引发了思考. 首先需要理解好IO流是如何处理文件的. 1.ObjectOutputStream 对Java对象进行序列化处理,处理后的数据,不是 ...

  7. 写一个操作系统有多难?自制 os 极简教程

    不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了满足程序员们自带的成就感,还是为 ...

  8. 教你几个写出原创文章的小方法

    网站中最重要的东西就是原创.而且是大量的原创信息才会使得你网站有一个好的排名,在这里肯定有很多朋友问,哪来这么多大量的原创信息呢. 1. 把外国人的东西翻译成自己的东西 呵呵,这点其实是最有效果的,人 ...

  9. 怎样写出无法维护的代码

    每次写代码的时候,我都尽量写出一个尽可能方便其他人看得懂的代码,没办法,很多时候维护也是我自己,活着小的看不懂,还是我自己出手.但今天我想反其道而行之,怎样才能写出一份无法维护的代码. 原文在这里,原 ...

最新文章

  1. 导致网速变慢的安全隐患
  2. Swift3.0语言教程字符串与文件的数据转换
  3. shell实例第14讲:字符串截取的8种方法
  4. linux用户双重认证登录,linux PAM 用户登录认证
  5. Vim的NerdTree插件
  6. django国际化与html语言,Django 国际化
  7. ubantu的二三事
  8. 记录下 k8s (1.14.2)使用kubeadm方式搭建和rancher搭建需要的镜像清单
  9. 回顾 | Apache Flink Meetup ·上海站(附PPT下载链接)
  10. 免匙SSH登录失败问题(非常规)
  11. 位图图片转换矢量图的工具:Vector Magic for mac
  12. 基于大数据的舆情分析系统架构(架构篇)
  13. 数字通信(知识点)复习
  14. laravel 打包成zip并下载
  15. C#调用RDP,实现远程桌面共享及控制
  16. 国外硕博论文下载网址
  17. 搜索引擎 百度 高级搜索
  18. openlayers3加图标定位
  19. QT美化使用字体图标
  20. Mac OS high Sierra 10.13.6 安装cuda

热门文章

  1. 使用MATLAB生成任何需要的伪随机码(PN码)
  2. 寄存器由来 ES CS SS DS FS GS区别
  3. 好久没有写博客了。。。说说最近的感悟即学到的东西。。。
  4. java SM9密钥转成String型
  5. 小Q书桌图标实现分析一
  6. 计算机技术要求低的工作,成绩一般的同学,可以考虑这3个专业,学历要求低,还很好找工作...
  7. Nginx学习部署环境(六)-Nginx原理
  8. SWOT分析、PEST分析、GE矩阵、波士屯矩阵等分析方法
  9. mysql查询cp值数据_写出创建产品销售数据库CPXS的所有表的SQL 语句。所包含的表如下:...
  10. Redis图形化管理工具(Redis Desktop Manager)