在操作系统领域,Windows可谓是笔记本和台式机上的绝对霸主,iOS和安卓在手机上分庭抗礼,而对于Linux,很多朋友有所耳闻,但了解并不多。今天我将简单介绍一下为什么有志于进一步深造的研究生都要学习一下Linux,Linux的现状以及如何开始入门学习Linux。
当前大数据和人工智能技术已经从科幻电影走入了百姓生活。从学术研究的领域来看,不仅仅是传统的理工科要使用“数据驱动”的方法来的进行研究,即使是那些我们认为是“文科”的学科也已经与数据接轨。
且不说信息学科中的计算机和电子工程两大专业是计算机的重度用户,当代物理、化学和生物分别有计算物理、计算化学和生物信息学作为其重要分支,数学和统计学更是当前人工智能技术的基础。
再来看看那些传统意义上的文科。中文是传统意义非常“文科”的一门学科,主要研究汉语言文学。随着人工智能技术的成熟,计算语言学正在兴起,研究者开始用计算机来分析和处理大规模的人类语言和文本数据,人工智能界通常称之为自然语言处理技术。以中文领域最高学府北大中文系为例,中文系开设了计算语言学相关的专业和课程,并正在与一些计算机背景的学术机构进行合作,开展了大量的研究。另外一个对计算有强烈需求的专业就是金融。很多人包括我在内,之前认为金融是个文科专业,一般是西装革履,在商界指点江山,其实金融领域有个重要的分支叫做量化金融,正在使用机器学习等技术进行金融交易分析,这个方向对从业人员的数理背景和计算机基础要求极高。还有就是经济学,当前最流行的研究方法是计量经济学,使用量化的方式来对经济数据进行建模分析。中国人民大学新闻学院是国内顶级的新闻类院系,这两年也在引入计算机背景的青年教师,以建设计算传播学和新闻大数据等相关研究方向。随着大数据和人工智能渗入到我们日常生活的方方面面,更多的学科包括经济学、社会学、法学、新闻学等学科都开始依赖数据支撑和决策,这些学科最前沿的研究方法都离不开数据和计算。
Linux无处不在
一旦数据量庞大,需要更复杂计算的时候,就离不开Linux操作系统。几乎所有带有复杂计算功能的设备都在运行着Linux或其变种,上到航空航天,下到手机平板,以及BAT、Google、亚马逊在内的各大互联网巨头的服务器上都运行着Linux。正在打破美国垄断的华为鸿蒙操作系统,也是基于Linux做的开发。为了迎合计算领域对Linux的庞大需求,微软在Windows 10上提供了一个Windows Subsystem for Linux(WSL),用户可以在Windows上运行Linux程序。可见,Linux的需求是多么巨大。
对于想在相关领域进一步深入下去的研究生,学习Linux未来收益很大,是一种必备技能。
Linux是一种类Unix的开源操作系统,由一位名为Linus Torvalds的程序员在1991年发布。它的Logo是一个可爱的小企鹅。
Unix及其衍生变种
说起操作系统,就不得不提Unix,它由美国AT&T公司贝尔实验室在70年代发布,是现代操作系统的鼻祖。Unix是贝尔实验室开发的商用操作系统,后不断演变,产生了很多子孙后代。当前我们享受的很多科技成果均来自贝尔实验室,贝尔实验室应该是人类历史上最牛的实验室,可以说改变了人类的命运。回到操作系统领域,现在我们使用的很多操作系统几乎都与贝尔实验室的Unix有血缘关系,包括iOS、安卓、macOS等,即使以开发自家操作系统为主营业务的微软也曾经一度购买了世界上最多的Unix版权。Unix最初更多应用在商用领域,当前商用领域使用最多的Unix有IBM AIX,包括工农中建在内的绝大多数大型银行和国企还在使用着AIX。
与付费的商业软件不同,Linux设计之初就秉承着开源和免费的宗旨。
Linux内核起到软件与硬件桥梁的作用 来源:wikipedia
我们通常所说的Linux其实是指操作系统内核。操作系统是一种管理计算机硬件的软件集合,可以管理CPU、存储、网络、键盘、鼠标等,内核是操作系统中最核心的部分。所有的软件都需要在操作系统内核的基础上,再进一步与底层的计算机硬件交互,比如Office、浏览器Chrome、MATLAB等应用软件,提供网络服务的HTTP服务器,进行科学计算的Python等。
因为开源和免费,谁都可以参与进来,因此各组织和个人在开源的Linux基础上进行了二次开发,形成了自己的Linux开发版。不同Linux发行版主要区别在于一些预装软件以及软件包管理方式。Linux开发版可谓百花齐放,截止现在,可能有上百个不同类型的Linux发行版。因为操作系统的设计初衷和目标用户不同,软件也有很大区别。比如一部分Linux发行版交互界面更友好,适合在个人电脑上安装,以Ubuntu为代表;还有一部分Linux发行版更稳定,经过严格测试,更适合在有商业用途的服务器上运行,以CentOS为代表。还有很多Linux操作系统运行在物联网IoT设备上。
不同Linux发行版各有优势,但核心内容几乎大同小异,比如目录结构、基本命令、编译和运行软件的方式等。熟悉了一种操作系统,可以很快上手另外的操作系统。
那么,为什么要使用Linux,而不是在Windows上进行研究和计算呢?
使用SSH远程登录到Linux服务器进行计算
Linux发行版可能有上百种,从我的个人经历来看,在大数据和人工智能领域,使用最多的Linux主要有Ubuntu和CentOS。Ubuntu和CentOS也是各大云厂商主要支持的操作系统,阿里云和腾讯云等云厂商主要支持的Linux中前两位就是Ubuntu和CentOS。
Ubuntu(英文发音:乌班图)是Canonical公司开发的一款Linux发行版,它的各种软件和包安装起来很简单方便,是最好用的Linux之一,因此在个人电脑领域赢得了大批用户。Ubuntu这个词语出自一种非洲哲学,有“人性”之意。Ubuntu的软件安装管理器属于Debian系。
Ubuntu 19.04
Ubuntu每半年发行一个新版本,分别叫xx.04和xx.10,其中xx为所在年份。另外,每两年会发行一个长期支持版(Long-Term Support ,LTS) ,长期支持版更稳定,能获得公司的长期官方支持。
随着深度学习和人工智能时代的到来,AI工程师开始在Ubuntu上安装进行深度学习的实验,Ubuntu再次风靡世界,成为对深度学习支持最好的Linux操作系统。TensorFlow和PyTorch这些深度学习框架的官方docker镜像都是基于Ubuntu的。
CentOS,英文全称为Community Enterprise Operating System。从名字中的Enterprise看出,这是一款企业级操作系统。它是Red Hat公司开发的免费版本。Red Hat公司是全球领先的云计算厂商,其商业级操作系统产品为Red Hat Enterprise Linux(RHEL),CentOS集成了RHEL的很多优秀特性,并且免费。IBM为进军云计算市场,已经将Red Hat公司收购。CentOS的软件管理器属于RPM系。
CentOS 7
与Ubuntu不同,CentOS为企业服务,因此它的设计初衷就是稳定。一切新鲜的事物都要经过大量时间验证后才能集成到CentOS中。因此,同样一个功能,Ubuntu上已经使用很新的版本,CentOS似乎还停留在几年前。也正因为稳定,CentOS被各大公司的线上服务器所采用。
Ubuntu简单易用,适合进行学习和实验,并且对深度学习非常友好。CentOS为企业而生,性能稳定,是线上服务器的首选操作系统。
Linux现在虽然有了可视化界面,但是比起Windows,它的办公和应用软件还是相对比较匮乏,比如Office不如Windows好用,没有微信电脑版,没有一些专业领域的软件如Photoshop等。而且使用Linux进行科学计算,主要还是使用命令行与操作系统交互。命令行对于小白用户来说,看起来非常极客,还没开始使用就让人有种畏惧感。的确,Linux的命令行对于初学者来说有一定的学习曲线,但是也没有那么难,只要耐下心来读一本关于Linux的书或者学习一门在线课程,一个星期之内就可以完全掌握Linux命令行。
虽然命令行一开始的学习成本陡峭,但它对编程的支持比Windows强大,掌握后可获得非常大的收益。
macOS上的命令行
这里我推荐一本通俗易懂的Linux入门书籍:《鸟哥的Linux私房菜基础学习篇》。鸟哥是一个中国台湾人,环境工程出身,并不是计算机背景,也因为在做本专业的科学研究过程中必须用到Linux,所以开始研究Linux的使用,十几年前网络学习资料并没有现在这么丰富,他把Linux的学习笔记整理后,很多朋友非常喜欢,后来不断整理和更新,现在已经成中文Linux学习领域的标杆。大家可以在京东购买纸质书,也可以登录鸟哥的网站,同时网络上也有很多可下载的PDF版本。
鸟哥网站:http://cn.linux.vbird.org/
对于Windows的用户,可以使用下面的办法来学习Linux:
我个人推荐第一和第二种方案。不过第二种方案是微软新推出的功能,网上的教程还不多。
Linux的远房亲戚macOS也是Unix的一种变体,虽然从严格的技术角度上,macOS并不是Linux,但其背后的思想与Linux很像。macOS交互体验极佳,软件日渐丰富,对软件开发友好,是程序开发者经常选择的操作系统。网络上各类编程类课程对macOS兼容非常好,能在macOS上实现很多大数据和人工智能的编程实验。我是从2011年开始接触mac的,一直使用到现在,可以说mac已经能够完成99%的Windows功能。
苹果之前的做工和品质非常不错,我的上一个MacBook用了将近6年,依然可以应付绝大多数的使用场景,不会感到卡顿。但是苹果的产品相比竞品价格高很多,而且最近的苹果品质正在下降,出现了键盘失灵的丑闻,目前没有好的解决方案,对于想购入MacBook的朋友可能还需要考虑考虑。
对于想进一步深造的研究生,个人建议接触一下Linux这个操作系统,并尝试在Linux下编程。短期内有一定的学习曲线,但长期看来收益很大。Linux主要依赖命令行,Windows用户可以使用虚拟机来安装Linux,macOS可以使用系统自带的命令行。