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. 区块链】利用Node.js开发与合约交互的Web界面
  2. amixer 如何切通道_三峡工程如何突破技术难题?
  3. 用户Session相关模块重构
  4. 程序员家的精品大闸蟹:青壳、白底、肉多、爆黄,现在是吃大闸蟹的最佳时期...
  5. LazyInitializationException的四个解决方案–第2部分
  6. php ajax 更改状态,phpajax实现无刷新获取天气状态_PHP教程
  7. 跟 05 后拼年龄?算了,11 岁的他都成比特币专家了
  8. RabbitMQ的死信队列的应用
  9. 4符号代码_ELF文件格式解析器 原理 + 代码
  10. www.12306.cn是安抚群众心灵的吧?
  11. oracle最难的多表查询,Oracle多表的复杂查询
  12. 图见-未来 | 创邻科技 Galaxybase免费版发布会回顾
  13. 跑分cpu_跑分完爆骁龙 865?明年这些中端处理器真的要起飞
  14. Java内存模型——《深入理解Java虚拟机》笔记
  15. µC/OS-II Release Notes
  16. 多层感知器(Muti-Layer Perception ,MLP)
  17. 睿智的目标检测32——TF2搭建YoloV4目标检测平台(tensorflow2)
  18. 【Element-ui】el-table大数据量渲染卡顿问题
  19. html轮播鼠标悬停效果,jQuery图片轮播加悬停效果
  20. Linux密码策略、连接空闲超时时间设置

热门文章

  1. Oracle学习教程2
  2. 入手不亏,4款简单易用的典藏软件,真正的电脑利器
  3. 计算语言学课程笔记(一)
  4. 谷歌浏览器自动升级关闭小方法
  5. Android数据库的使用
  6. 【数据结构】详解栈的应用之表达式求值
  7. 恐龙纪录片 - 为孩子
  8. 深度学习平台——PaddleCloud简介
  9. 人工智能Java SDK:文字识别(OCR)工具箱
  10. Streamsets 安装额外Stage包——CDH6.3.0包报错REST API call error: java.io.EOFException