为什么要学习 Linux

来自知乎:https://www.zhihu.com/question/20117703

==================

回答这个问题之前,我们先来看看 Linux 与 Windows 最本质的区别在哪里。有人会说前者免费,后者需要买 (或偷)。这只是对 “free software” 的曲解。在我看来,二者最重要的区别乃是它们对自己的用户所做的假设。

对于 Linux,这个假设是:

用户知道自己想要什么,也明白自己在做什么,并且会为自己的行为负责。

而 Windows 则恰好相反:

用户不知道自己想要什么,也不明白自己在做什么,更不打算为自己的行为负责。

说得更直接一些,前者假定用户是负责任的聪明人,后者反之。

Linux 用户不必沾沾自喜,Windows 用户先把刀放下。这些只是假设,它们的 (不是我的) 假设。

==================

什么是**典型的windows思维**?

从我自己的经历来概括,大概是以下几个方面。(这里的“典型”并不说是使用windows的人全部都这样,而是整个用户群体现出来的整体倾向,我自己在一开始便是个不折不扣的windows思维者,有志之士请勿要妄自菲薄)

1、索取与将就。不愿意花费时间、金钱去满足自己个性化的需求,把需求都寄望于企业和他人的产品,期待不劳而获,甚至在无偿享受他人的服务的时候还经常性的挑挑拣拣,不懂感恩,如果他人暂时没有解决方案就只能将就。

2、不愿意分享。一是自己本身没有创造,何来分享一说?二是把分享看作一种损失。

3、动手困难症候群。人并不是生来就谁动手能力强,大都是环境的氛围影响造成的。windows上面的产品级程序大多不能重用,这也是GUI的一个弊病吧,想做出任何一点小修改都可能要打破重来,这样的实操代价太大,让人如何大展拳脚。

4、缺乏一颗寻根问底的心。windows把全部的细节都葳了起来,这对用户是一件省心的事,但对计算机专业的学生却绝对是毒药,在windows的易用性中满足而不思进取,留流于表面的技术。

Linux 让一切都联系起来:《操作系统》、《计算机网络》、《计算机组成原理》

为什么会接触Linux?

它提供了一个驱动力让你去真正掌握你应该要掌握的知识——编译原理、计算机网络、操作系统……想要用XXX功能?学啊!想要插U盘?学mount!想要定时备份文件?学crontab!每一个功能都或多或少让你明白Linux背后的机理。Linux高昂的学习成本对于开发人员来说,才是正常的。因为操作系统就是有这么复杂,就是有这么多知识要掌握,使用系统的本身和**Linux正统的C语言**让你把所有计算机的基础知识都串了起来,不再只是空中楼阁不可触摸。而且毫无疑问它可以提高你解决问题的能力。

它提供了无数可以重用可以**自由定制的工具**。“君子生非异也,善假於物也”。以命令行而不是GUI为界面有一个巨大的好处——管道风格的重用。虽然命令行使用起来不如GUI直观,但它在可扩展性上有无与伦比的潜力;甚至连操作系统本身都是开源的,你可以定制属于自己的个性化系统。你的生产力会大大提高,而且你不必再重复发明轮子,你可以专注造你的dream car。

它提供了一个以分享、协作、创新的开源自由环境。“Linux上每个程序都是半成品。”个人撰写的程序在最初是为了满足自己的需求,而后他将他分享出来;你想要使用他的程序,但程序不够完善,你将它修改之后满足了自己的使用,而后又将它分享了出来。就是这样一个又一个的使用者和开发者双重身份的协作,让程序越来越优秀,没有止境。

它提供了一个历史悠久、经受了考验的技术框架。技术发展日新月异,今天所学明日可能已成糟粕。windows下面的技术从win32 api到.net便是一例。但从Unix上传承下来的底层技术却少有变动,一直广为使用。从知识的长期投资性价比来说,Linux也应当作为可靠的选择之一。

它提供了一个机会让你去接触更为广大的群体和世界。由于国内Linux资源的稀缺你不可避免要去阅读国外的资料来解决问题,强迫你去阅读英文文档,作为提供外语也不失为一种好办法,并且与远在地球另一边的朋友一起开发和讨论,也是一件很激动人心的事情吧?

==================

知乎:https://www.zhihu.com/question/19934684/answer/171239965

对于计算机系的学生来讲,使用Linux是个不错的选择。

<p>
  因为它确实有很多优点。
</p>

<h2>
  <span style="color: #ff0000;">1.省心</span>
</h2>

<p>
  如果经常重装系统(对于那些经常捣鼓系统或是有软件洁癖的人),或是偶尔需要来那么一两次。那么肯定就能体会到在<strong><span style="color: #ff0000;">Windows下配置环境的麻烦:</span></strong>
</p>

<ul>
  <li>
    以Java为例:
  </li>
</ul>

<p>
  在Windows下:
</p>

<ul>
  <li>
    首先我们得先弄一个JDK安装包,确保没有选错,等待下载完成,然后准确地从文件中找到他。
  </li>
  <li>
    然后开始安装,配置路径(如果你有文件整理的习惯)和环境变量,等待安装完成。
  </li>
  <li>
    最后因为环境变量的原因我们得注销一下验证结果。
  </li>
  <li>
    至此Over,但如果其中出了什么问题,恐怕我们还得再倒腾一会儿。
  </li>
</ul>

<p>
  在Linux下:
</p>

<ul>
  <li>
    首先连上网络
  </li>
  <li>
    其次在命令行下输入  <strong><span style="color: #ff0000;">sudo apt-get update && sudo apt-get install openjdk-7-jdk  </span></strong>键入口令,开始安装。
  </li>
  <li>
    等待进度条,然后Over。
  </li>
</ul>

<p>
  重复几次之后,我们就会发现使用apt-get进行安装真是屡试不爽。除此之外还有很多东西都可以用它来完成:g++,scrapy,GIMP,jdk,ruby等等。
</p>

<p>
  敲两行命令就搞定。而在Windows下这都需要一个又一个的软件来补充。
</p>

<h2>
  <span style="color: #ff0000;">2.便利</span>
</h2>

<p>
  提到便利,主要针对的是刚刚装完系统时的情况。此时Linux(笔者使用的是Ubuntu)下很多东西都会便利许多。
</p>

<ul>
  <li>
    如果使用C语言,python进行开发,那么在不依靠IDE的情况下那么就已经可以开工了,因为这些都是系统自带的。
  </li>
  <li>
    如果需要处理办公文件,那么系统自带的Libre Office(或金山的WPS Office)已经基本可以满足需求。
  </li>
</ul>

<p>
  浏览器也无需担心,FireFox(Ubuntu自带)、Chrome都可以使用。
</p>

<ul>
  <li>
    最实在的一点是,系统是免费的。
  </li>
</ul>

<p>
  这些便利的地方也往往是<span style="color: #ff0000;"><strong>Windows下普遍的短处:</strong></span>
</p>

<ul>
  <li>
    首先开发环境需要自行搭建,系统是不带任何工具的,这都得自己动手,丰衣足食。
  </li>
  <li>
    使用Office需要单独安装,这需要一定的时间。
  </li>
  <li>
    IE应该也不是大家普遍常用的吧,装一个浏览器,这又是一个活儿。
  </li>
  <li>
    最关键的一点,上面的许多工具都不是免费的午餐。除了在工具上我们可以使用替代的产品外,Windows这个系统本身,我们是跑不掉的。激活就是一个麻烦事儿。花钱还是花时间破解,二选其一吧。
  </li>
</ul>

<h2>
  <span style="color: #ff0000;">3.安全</span>
</h2>

<ul>
  <li>
    安全问题最早也是在Windows上流行起来的,Windows在系统方面做得很完整,不过在安全问题上确实不怎么把关。Windows平台下一个软件的执行,可以直接更改注册表,启动项,文件关联,文件系统,开关机等等。而Windows平台本身却并不为此提供多少安全方面的保障(这与Windows平台的主要适用人群有关)。所以,这部分缺陷不得不留给各大厂商的杀毒软件来弥补。于是各种杀毒软件大行其道。这对系统本身来说就像是一种讽刺。
  </li>
  <li>
    Linux下相对来说要安全很多,首先因为他是开源的,里里外外一清二楚,众目睽睽之下,群众的眼睛是雪亮的。大的漏洞往往少很多。<br /> 其二,干什么事儿都得验证一下。软件安装卸载,系统更改,文件权限设置,开关机等等,都得先报上口令,看看是不是本人操作。这些东西看起来挺麻烦,不过也确实为系统提供了很好的保障。至少针对与Linux的杀毒工具还是比较少的。
  </li>
</ul>

<h2>
  <span style="color: #ff0000;">缺陷</span>
</h2>

<p>
  事物往往都有正有反,Linux也未能例外。
</p>

<ol>
  <li>
    首先图形界面并非尽善尽美,界面很炫酷(Ubuntu Unity),bug也不少。我使用时就时常报错。
  </li>
  <li>
    没有配置同步的功能。如果之前改过系统,那么重装之后可能还得接着改,或者是自己手动导入备份,没有微软账户那么方便。
  </li>
  <li>
    软件不支持。因为没有钱赚,所以很多Windows下的软件(游戏,PS,CAD等图形软件)很多都没有Linux版本,或者有也很难用(没有维护),不过大都与开发无关,影响不大。
  </li>
</ol>

<h2>
  总结
</h2>

<p>
  如果一定要给个总结,那么<strong><span style="color: #ff0000;">计算机系的学生可以用Linux,也应该去学习、熟悉Linux</span></strong>。但是请不要认为Linux能给你带来什么附加价值,从而去鄙视使用Windows的同学,用Linux一点也不酷炫,真的。
</p>