前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么说当代大学研究生即使是文科都要懂点Linux?(附学习资料)

为什么说当代大学研究生即使是文科都要懂点Linux?(附学习资料)

作者头像
PP鲁
发布2019-12-26 14:31:59
1.1K0
发布2019-12-26 14:31:59
举报
文章被收录于专栏:皮皮鲁的AI星球皮皮鲁的AI星球

在操作系统领域,Windows可谓是笔记本和台式机上的绝对霸主,iOS和安卓在手机上分庭抗礼,而对于Linux,很多朋友有所耳闻,但了解并不多。今天我将简单介绍一下为什么有志于进一步深造的研究生都要学习一下Linux,Linux的现状以及如何开始入门学习Linux。

为什么说研究生都该懂点Linux?

当前大数据和人工智能技术已经从科幻电影走入了百姓生活。从学术研究的领域来看,不仅仅是传统的理工科要使用“数据驱动”的方法来的进行研究,即使是那些我们认为是“文科”的学科也已经与数据接轨。

且不说信息学科中的计算机和电子工程两大专业是计算机的重度用户,当代物理、化学和生物分别有计算物理、计算化学和生物信息学作为其重要分支,数学和统计学更是当前人工智能技术的基础。

再来看看那些传统意义上的文科。中文是传统意义非常“文科”的一门学科,主要研究汉语言文学。随着人工智能技术的成熟,计算语言学正在兴起,研究者开始用计算机来分析和处理大规模的人类语言和文本数据,人工智能界通常称之为自然语言处理技术。以中文领域最高学府北大中文系为例,中文系开设了计算语言学相关的专业和课程,并正在与一些计算机背景的学术机构进行合作,开展了大量的研究。另外一个对计算有强烈需求的专业就是金融。很多人包括我在内,之前认为金融是个文科专业,一般是西装革履,在商界指点江山,其实金融领域有个重要的分支叫做量化金融,正在使用机器学习等技术进行金融交易分析,这个方向对从业人员的数理背景和计算机基础要求极高。还有就是经济学,当前最流行的研究方法是计量经济学,使用量化的方式来对经济数据进行建模分析。中国人民大学新闻学院是国内顶级的新闻类院系,这两年也在引入计算机背景的青年教师,以建设计算传播学和新闻大数据等相关研究方向。随着大数据和人工智能渗入到我们日常生活的方方面面,更多的学科包括经济学、社会学、法学、新闻学等学科都开始依赖数据支撑和决策,这些学科最前沿的研究方法都离不开数据和计算。

Linux无处不在

一旦数据量庞大,需要更复杂计算的时候,就离不开Linux操作系统。几乎所有带有复杂计算功能的设备都在运行着Linux或其变种,上到航空航天,下到手机平板,以及BAT、Google、亚马逊在内的各大互联网巨头的服务器上都运行着Linux。正在打破美国垄断的华为鸿蒙操作系统,也是基于Linux做的开发。为了迎合计算领域对Linux的庞大需求,微软在Windows 10上提供了一个Windows Subsystem for Linux(WSL),用户可以在Windows上运行Linux程序。可见,Linux的需求是多么巨大。

  1. Linux对科学计算支持非常好,部分大数据软件只能部署在Linux上。
  2. 国内外顶尖高校科研机构均设有高性能计算中心或超级计算中心,大多使用Linux操作系统,在校学生能以极低的价格获取校内计算资源;国内外顶尖商业公司大多使用Linux作为服务器操作系统,需要在Linux上进行研究和开发。无论是前往海外交流还是参加公司实习,都需要使用Linux。

对于想在相关领域进一步深入下去的研究生,学习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发行版

Linux内核起到软件与硬件桥梁的作用 来源:wikipedia

我们通常所说的Linux其实是指操作系统内核。操作系统是一种管理计算机硬件的软件集合,可以管理CPU、存储、网络、键盘、鼠标等,内核是操作系统中最核心的部分。所有的软件都需要在操作系统内核的基础上,再进一步与底层的计算机硬件交互,比如Office、浏览器Chrome、MATLAB等应用软件,提供网络服务的HTTP服务器,进行科学计算的Python等。

因为开源和免费,谁都可以参与进来,因此各组织和个人在开源的Linux基础上进行了二次开发,形成了自己的Linux开发版。不同Linux发行版主要区别在于一些预装软件以及软件包管理方式。Linux开发版可谓百花齐放,截止现在,可能有上百个不同类型的Linux发行版。因为操作系统的设计初衷和目标用户不同,软件也有很大区别。比如一部分Linux发行版交互界面更友好,适合在个人电脑上安装,以Ubuntu为代表;还有一部分Linux发行版更稳定,经过严格测试,更适合在有商业用途的服务器上运行,以CentOS为代表。还有很多Linux操作系统运行在物联网IoT设备上。

不同Linux发行版各有优势,但核心内容几乎大同小异,比如目录结构、基本命令、编译和运行软件的方式等。熟悉了一种操作系统,可以很快上手另外的操作系统。

Linux在计算领域的优势

那么,为什么要使用Linux,而不是在Windows上进行研究和计算呢?

  1. 开源免费。使用者无需为操作系统的版权付费,非常适合个人、高校和研究机构等非营利性组织。
  2. 稳定可靠。众多使用者为Linux贡献代码,修复问题,目前已经非常稳定。
  3. 对科学计算尤其是高性能计算支持更好。Linux在计算领域的积累非常深厚,并形成了一系列的开源软件生态体系。
  4. 集群优势。Linux可以轻松组成集群,集群是成百上千台服务器。用户可以在集群上同时提交多个作业并行计算,个人电脑上一般只能运行一到两个计算密集型任务。当数据量和计算规模大到个人电脑无法承受时,就必须将计算迁移到Linux集群。
  5. 远程计算,不影响本地工作。使用Linux的流程一般是:在个人电脑上进行代码编写和开发,使用SSH隧道将代码同步到服务器,利用服务器高性能CPU和GPU计算资源来进行计算。计算任务在数据中心的服务器上,不占用个人电脑的计算资源,不影响本地的工作。

使用SSH远程登录到Linux服务器进行计算

哪种Linux适合你?

Linux发行版可能有上百种,从我的个人经历来看,在大数据和人工智能领域,使用最多的Linux主要有Ubuntu和CentOS。Ubuntu和CentOS也是各大云厂商主要支持的操作系统,阿里云和腾讯云等云厂商主要支持的Linux中前两位就是Ubuntu和CentOS。

Ubuntu

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

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

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:

  1. 安装一个虚拟机软件,如VirtualBox ,在虚拟机中安装一个Ubuntu,在不影响现在的工作的前提下学习Linux。
  2. 在Windows 10上安装Windows Subsystem for Linux。
  3. 在Windows上安装GitBash,模拟Linux命令行环境。

我个人推荐第一和第二种方案。不过第二种方案是微软新推出的功能,网上的教程还不多。

macOS

Linux的远房亲戚macOS也是Unix的一种变体,虽然从严格的技术角度上,macOS并不是Linux,但其背后的思想与Linux很像。macOS交互体验极佳,软件日渐丰富,对软件开发友好,是程序开发者经常选择的操作系统。网络上各类编程类课程对macOS兼容非常好,能在macOS上实现很多大数据和人工智能的编程实验。我是从2011年开始接触mac的,一直使用到现在,可以说mac已经能够完成99%的Windows功能。

苹果之前的做工和品质非常不错,我的上一个MacBook用了将近6年,依然可以应付绝大多数的使用场景,不会感到卡顿。但是苹果的产品相比竞品价格高很多,而且最近的苹果品质正在下降,出现了键盘失灵的丑闻,目前没有好的解决方案,对于想购入MacBook的朋友可能还需要考虑考虑。

小结

对于想进一步深造的研究生,个人建议接触一下Linux这个操作系统,并尝试在Linux下编程。短期内有一定的学习曲线,但长期看来收益很大。Linux主要依赖命令行,Windows用户可以使用虚拟机来安装Linux,macOS可以使用系统自带的命令行。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 皮皮鲁的AI星球 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么说研究生都该懂点Linux?
  • Linux是什么
    • Linux的历史
      • Linux发行版
        • Linux在计算领域的优势
        • 哪种Linux适合你?
          • Ubuntu
            • CentOS
              • 如何选择
              • 如何学习Linux
                • macOS
                • 小结
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档