只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 网站建设公司 >  为什么那么多程序员推荐 Linux,是不是在 Linux 下开发效率高?


为什么那么多程序员推荐 Linux,是不是在 Linux 下开发效率高?

发布时间:2019-09-13 09:58:06  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
我想推荐Linux的程序员只是推荐你去学习Linux吧,并不是推荐你在Linux环境下编程,或者说,不是推荐你的工作电脑用Linux操作系统。
为什么那么多程序员推荐 Linux,是不是在 Linux 下开发效率高?

我想推荐Linux的程序员只是推荐你去学习Linux吧,并不是推荐你在Linux环境下编程,或者说,不是推荐你的工作电脑用Linux操作系统。

开发前端的,基本都会告诉你不是。

开发后端的,一半告诉你不是。

在linux下开发?

在win下开发?

在win下连接linux容器开发?

现在大多数服务段的程序都是运行在Linux上的。因此作为开发人员必须熟悉Linux。熟悉一个操作系统最好的办法就是不断的使用。

并不是所有人都推荐Linux,对于新手来说Linux的心智成本还是很大的,需要长时间的不断摸索。

在Linux下开发效率高不高要看每个人的熟练程度,如果说还在百度“如何退出Vim”这样的问题,那谈什么开发效率呢?开发效率必须要建立在对操作系统,开发工具和团队配合的基础上。

说一下我吧,我10年上大学,大一下学期就开始使用Linux了,一开始只是好奇,作为工作环境是从14年毕业以后开始(在学校主要因为要玩游戏 ,离不开Windows),16年买了一台xps15,刚收到货就安装了Linux,17年买了一台中配mbp,后来发现mbp又贵配置又不好~又换回了装有Linux的xps,现在公司的办公电脑和自己的电脑除了mbp全是Linux。

QQ和微信阻碍了广大开发人员对Linux的向往,而我就是那种基本上不在电脑上登录QQ和微信的人。

我使用Linux的主要原因并不是开发效率的问题,而是使用习惯。我不想看Windows桌面和窗口那么多图标,也不想用鼠标点击他们。

我更习惯于用命令行完成一项小事情;特别是代码方面的,能用终端完成的事情何必再打开个窗口呢?

回到正题。

开发效率高不高,非常重要的一个因素是编辑器;选择一个好的编辑器可以让你事半功倍。

另外一个很重要的,就是软件环境,我个人觉得linux的软件环境是最好安装的,比如jdk、python、golang、docker、node、docker等,基本上一个命令就能搞定。如果使用Windows安装这些,你还要去下载,然后配置环境变量,弄不好还给你补个钙( )。MacOS也挺好,如果不是纯粹的开发,最佳选择是MacOS,它拥有Linux的操作和Windows的体验,开发环境基本上homebrew就可以解决,倍爽,缺点是贵(当然,贵不是它的缺点,是我的缺点),配置还不咋地。

好了,附上几张我的桌面和编辑器吧。

我装的是Ubuntu 18.04,Gnome 3。

这一张是用emacs,准确的说是spacemacs编写React项目。以前一直用vim,后来插件多了变得不是很流程(可能配置姿势不对)就换spacemacs。

就我而言,Linux的开发效率比Windows、MacOS是高很多的,你要问有多高?

我的回答是“大概有三四层楼那么高吧”。

自从有了WSL,我就不怎么太推荐Linux了……

推荐linux肯定不是因为开发效率高,因为根本不高嘛,现在虚拟计算这么横行,完全没必要在弱势的Linux桌面系统下写代码,放着美观好用的Mac、兼具娱乐的windows不用???开几个虚拟机,或者docker,主力系统在Mac下面是多么舒服,shell下SSH随时切换,推荐linux肯定是做后端开发的程序员,毕竟后端基本就是跑linux。

并不是。

不可否认现在大部分Web App是跑在Linux上面的,掌握一定的Linux知识对于每个程序员都是必要的。但是在什么环境下开发是另一回事。

现在绝大部分的IDE都是跨平台的,当然XCode或者VS的话只能用mac或Windows。这些IDE在每个平台上的体验其实都差不多,文本编辑器的话在每个平台上都有不错的选择。很多人都说Windows环境配置有问题,我个人确实没有经历过任何在Windows环境下的特定问题,在大部分情况下环境配置这种一次性的东西我觉得都不是问题。

Linux的短处是生态太差了,工作中难免要使用比如Office这些的软件,你不可能强制其他部门全部使用Linux上面的替代品。

所以不用非得强求办公环境使用Linux,在Windows下面写好再部署也是一样的。当然日常使用Linux有助于熟悉基本操作,不过前提条件是你用命令行,如果用图形界面的话就没什么太大意义了,因为大部分生产环节是没有图形界面的。

效率高不高我不知道怎么我就是觉得linux好用

我用的Debian 想要啥软件就apt install

没有的就去github找源码 有打好的包更好

最重要的是shell比windows的cmd好用多了

软件环境不比windows差 大部分软件linux都有 不过玩游戏还是去windows玩吧 另外搞平面设计什么的也去用windows吧

熟悉系统之后很多操作都不用鼠标了 一行命令能做的事用鼠标得找半天

对我来说linux就一个问题 没有QQ 虽然深度搞的QQ也能用 但是太吃CPU了 我也不知道为什么

玩linux最重要的就是用好shell 能省很多事

是不是在linux下开发效率高?笼统地讲,不一定。具体到某些团队,尤其是后端团队,很可能是的。

就我们这个后端团队而言,则不是“推荐Linux”,而是强制使用Linux做日常开发。我自己面试的时候,对每个有可能被招进来的人选,都会事先告知:

我们开发统一用Linux,发行版不限,不管你会不会,都必须习惯。如果不认同这一点,我们不会招你进来。如果进来以后不能习惯或者不能流畅地用Linux完成工作,则会被辞退。

这个规矩我们已经实行了很长时间,一直没有发现太大的问题。

为什么要这样做呢?说起来原因很简单,就是因为懒。

首先我们是小团队,拢共不超过20人,没有太多的精力花在调配不同系统的开发环境上;开发的工作也往往不是单纯的开发,很多时候还要负责写启动脚本,部署应用到测试环境,诊断和解决各环境的问题。

比如,

“测试团队需要个 xxx, 我们在 xx 环境给他们部署一个 xx 吧。”“啊你没玩过?不要紧,看下他家官方文档就行了,注意下数据库该怎样balabala”“噢好。”

“咦,压力这么低的测试,怎么把 TIME_WAIT 搞得这么高,不知道是 Nginx 没配好还是你自己代码里 akka-http 用得有问题,我们来 debug 一下?”

“我们为了确认 xx 问题,需要统计下日志里满足 xx 条件的 xx 的数量,日志我已经打了,放在 xx 机器 xx 目录下,我要去处理 xxx, 你来帮我一下好不好?”

这些日常工作,还是需要一点 Linux 基础知识基本技能的。

而最近两年来面试的开发,5 年以内工作经验的,绝大多数,Linux 技能不是很烂,也不是非常烂,而是稀烂,基本无法在 Linux 下生存,更别谈开发工作了。

所以我们第一件事情就是强制他在 Linux 下工作,让他习惯。不想花费时间手把手地教他 Linux 服务器下怎么搞。这就是懒,图省事。

另外,常见的开发工作配置,我们在 Linux 下基本都有比较标准的工作流程和解决方案,但是 Windows 下我们没有。我们也不会有心思去帮他解决那些 Windows 下特有的奇形怪状的问题。这还是懒,图盛事。

那么,适应 Linux 下开发工作需要多长时间呢?在我们的工作流下,一个完全没有用过 Linux 的,还算合格的程序员,三四天应该就差不多了。

是不是所有人都要这样呢?总结我上面的中心思想,你会发现:只要你自己能搞得掂,你想怎么浪都行。比如最新加入的那位小伙伴,人家 Surface Pro 上 Windows + Linux 玩得溜溜的。我们根本不管他是 Windows 虚拟机里跑 Linux, 还是 Linux 虚拟机里跑 Windows, 又或者是 WSL. 反正溜溜的,我们完全没有必要吃饱了撑着管他,也没必要跟他争论哪个系统效率高。

mac 和 windows 现在能不用虚拟机稳定跑 docker 了吗?哪天可以了,就不给你推荐linux。

首先,要看公司有没有异质环境办公的文化和意识。包括但不限于:

  1. 文档。

我有主导权的公司或者团队,之前已经全面切换到石墨文档。用了几年了至今没遇到什么瓶颈:这东西只能office去写石墨不能用,抱歉真没遇到过。

api文档是postman。

原型文档axture有mac版 产品又不用linux…… 可以导出html,不过其实我们很久也没用axture了。

切图标注sketch或者蓝湖。

2. 压缩包

一律是用zip。基本上产品用mac的也多,没有windows下蛋疼的乱码文件名问题。

rar其实linux也能解压。

程序员互相发东西直接tar -zcvf 然后scp了…更快捷

3. 开发工具

9102年了还在嘲讽linux用vim的…

编辑器一大堆,从06-07年开始就有komodo edit,后面sublime、atom、vscode都可以用。

其实gedit我都用过挺久的。以前写c++时候codeblock,eclipse也用过挺久的。总之vim只是连服务器上操作用的。

git工具基本上gitkraken或者命令行。其实有图形界面我也喜欢用命令行,快好多好多。

基本上如果你发布平台是linux,基本上linux开发只会更顺滑。

4. 沟通工具

正式需求都是邮件,没问题。涉及文档石墨了没问题。

简单需求也是石墨记进去,有版本追溯,很方便。你们公司如果聊天工具说一嘴就当需求了………………

当我没说吧…………

背锅快乐……

微信基本上看手机和网页版,确实不如windows下方便,不过够用。

5. 科学上网

ss比mac版难用,windows版也不好用凑合。

laten有linux版本。


换言之,如果反过来,你们公司必须用ms office写文档,libreoffice都不兼容那种;必须用rar;必须在微信qq里沟通需求发布需求…

还有需要以windows为目标平台开发…

你费啥劲,老实用windows就完了。

写C++的时候开发效率尤其低

“会使用Linux服务器,以Linux作为目标平台开发”和“使用Linux桌面作为工作环境”是两个概念。前者对于大部分开发者来说是必须练好的基本功,而后者对于除了特定几个方向的其他开发者来说,通常反而会降低工作效率。

比如你如果开发基于ROS的无人机,那你确实需要Ubuntu桌面,而且还得是真机,虚拟机和Mac都不行。但如果你开发UE4,那你用Ubuntu就基本上是纯装13

对于计算机专业的学生,我推荐尽量用Linux 。因为Linux 开源,耐折腾……以及不好用。

Linux有无数的优点,但好用不是其中之一。

为什么要推荐不好用的?因为不好用了,你才能想办法解决这些问题,解决了,顺便也学到了很多知识。

举个例子,固态硬盘。在Win7之后系统,你装上就能用,系统会自动优化;在很多Linux版本中,系统不会自动优化,但都有优化功能,所以需要你自己修改fstab文件或者写个cron,或者其他什么方法。这个过程中,就使你能够了解到更多的知识。

所以我推荐计算机专业的学生尽量使用Linux。但等你不是学生了,当然是习惯哪个用哪个吧。要说效率,用IDE ,尤其是JAVA、Python之类的,都差不多,反正多数这类IDE都有不同系统版本的。用文本编辑器的,那些说vim或者emacs多么高效的,请注意,vscode之类的编辑器也不逊色。当然vim或者vscode也有不同系统版本。至于安装开发环境,apt或者yum确实比win下面快得多,但这个时间所占比例很低,加分不高。

至于对硬件的支持,win对Linux,可以说是完胜。硬件厂商至少都会有win的驱动,但不一定会有Linux的驱动。

如果看看附加软件,office、QQ、微信就基本只能在win上面用了——别提wine,那也只是能用,达不到好用,至少达不到win那么好用。

Linux安装软件稍微方便一点,bash和一些小工具也确实更强,IDE之类的工具反正都有相应的版本,基本算持平,总体来说,Linux略占上风。

但考虑到office等软件生态和硬件驱动支持,win则是大幅度领先。

单就开发来说,Linux很好;综合来说,win更好。

所以,服务器上推荐Linux,开发的话看你的习惯,如果不仅仅做开发,win要好得多


我现在就是在Kubuntu下工作的。之前一直在win下面,想尝尝鲜,所以换掉了笔记本的硬盘,安装了Linux 。

说说感受。

文件同步问题。我一直用网盘备份重要文件。win下面用的是坚果云 ,万幸的是,坚果云有Linux版,但其他云盘就不一定了,比如onedrive。但Linux版不如win版好用。

写文档。LibreOffice已经被我删掉了,换成了wps,能用,但不好用,毕竟wps号称但实际上不能完全兼容MSOffice。

安装软件。各有千秋吧,apt和yum都很好用,但仅限于仓库中有的软件,有些就一言难尽了。比如思科的packettracker模拟器,在win只需要下载、安装,就能用了。Linux中需要安装几个特定版本的依赖,注意,是特定版本,新版本都不行。有类似问题的软件还有不少。

至于开发,如果写前端,反正开发工具都一样,没多少区别;其他开发,如果是Java、Python之类的,反正IDE也都一样,区别不明显;如果是C/C++,说真的,Linux下面能和VS相比的……好像还没有。其他和平台相关的就不说了,这个是没办法的。

至于硬件兼容性,Linux在PC上的表现还不如WPS和OFFICE的对比,驱动支持实在是……一言难尽啊。我的TP的指纹识别还是没有win10中好用,无线网卡也是最近才能用。

如果是服务器方面,Linux 则可以甩win几条街。不说别的,光是Docker就是一大优势(别说win上也有docker,那是依赖虚拟机,而且好像只能跑Linux应用)。

所以,个人认为,如果没有平台相关等特殊需要,Linux最好在服务器上发光发热,win用来平时办公,包括开发。

当然,想学习计算机知识,Linux更好。

小姐姐味道【ID:xjjdog】
作者:十年架构,日百亿流量经验,与你分享。

Linux这么多命令,通常会让初学者望而生畏。下面是我结合日常工作,以及在公司的内部培训中,针对对Linux不是很熟悉的同学,精选的一批必须要搞懂的命令集合。

任何一个命令其实都是可以深入的,比如tail -ftail -F的区别。我们不去关心,只使用最常见的示例来说明。本文不会教你具体的用法,那是抢man命令的饭碗。这只是个引导篇,力求简洁。

学习方式:多敲多打,用条件反射替代大脑记忆–如果你将来或者现在要用它来吃饭的话。 其中,也有一些难啃的骨头,关注小姐姐味道微信公众号,我们一起用锋利的牙齿,来把它嚼碎。


目录操作

工作中,最常打交道的就是对目录和文件的操作。linux提供了相应的命令去操作他,并将这些命令抽象、缩写。

基本操作

可能是这些命令太常用了,多打一个字符都是罪过。所以它们都很短,不用阿拉伯数字,一个剪刀手就能数过来。


看命令。
mkdir 创建目录 make dir
cp 拷贝文件 copy
mv 移动文件 move
rm 删除文件 remove
例子:
# 创建目录和父目录a,b,c,d mkdir -p a/b/c/d # 拷贝文件夹a到/tmp目录 cp -rvf a/ /tmp/ # 移动文件a到/tmp目录,并重命名为b mv -vf a /tmp/b # 删除tmp目录的所有文件 rm -rvf /tmp/

漫游

linux上是黑漆漆的命令行,依然要面临人生三问:我是谁?我在哪?我要去何方?
ls 命令能够看到当前目录的所有内容。ls -l能够看到更多信息,判断你是谁。
pwd 命令能够看到当前终端所在的目录。告诉你你在哪。
cd 假如你去错了地方,cd命令能够切换到对的目录。
find find命令通过筛选一些条件,能够找到已经被遗忘的文件。
至于要去何方,可能就是主宰者的意志了。

文本处理

这是是非常非常加分的技能。get到之后,也能节省更多时间来研究面向对象。小姐姐味道已经输出了“最常用的vim、sed、awk技巧系列”。


查看文件

cat
最常用的就是cat命令了,注意,如果文件很大的话,cat命令的输出结果会疯狂在终端上输出,可以多次按ctrl+c终止。
# 查看文件大小 du -h file # 查看文件内容 cat file

less
既然cat有这个问题,针对比较大的文件,我们就可以使用less命令打开某个文件。
类似vim,less可以在输入/后进入查找模式,然后按n(N)向下(上)查找。
有许多操作,都和vim类似,你可以类比看下。

tail
大多数做服务端开发的同学,都了解这么命令。比如,查看nginx的滚动日志。
tail -f access.log

tail命令可以静态的查看某个文件的最后n行,与之对应的,head命令查看文件头n行。但head没有滚动功能,就像尾巴是往外长的,不会反着往里长。
tail -n100 access.log head -n100 access.log

统计

sort和uniq经常配对使用。
sort可以使用-t指定分隔符,使用-k指定要排序的列。
下面这个命令输出nginx日志的ip和每个ip的pv,pv最高的前10
# 2019-06-26T10:01:57+08:00|nginx001.server.ops.pro.dc|100.116.222.80|10.31.150.232:41021|0.014|0.011|0.000|200|200|273|-|/visit|sign=91CD1988CE8B313B8A0454A4BBE930DF|-|-|http|POST|112.4.238.213 awk -F"|" '{print $3}' access.log | sort | uniq -c | sort -nk1 -r | head -n10
其他

grep
grep用来对内容进行过滤,带上--color参数,可以在支持的终端可以打印彩色,参数n则输出具体的行数,用来快速定位。
比如:查看nginx日志中的POST请求。
grep -rn --color POST access.log

推荐每次都使用这样的参数。

如果我想要看某个异常前后相关的内容,就可以使用ABC参数。它们是几个单词的缩写,经常被使用。
A after 内容后n行
B before 内容前n行
C count? 内容前后n行
就像是这样:
grep -rn --color Exception -A10 -B2 error.log

diff
diff命令用来比较两个文件是否的差异。当然,在ide中都提供了这个功能,diff只是命令行下的原始折衷。对了,diff和patch还是一些平台源码的打补丁方式,你要是不用,就pass吧。

压缩
为了减小传输文件的大小,一般都开启压缩。linux下常见的压缩文件有tar、bzip2、zip、rar等,7z这种用的相对较少。


.tar 使用tar命令压缩或解压
.bz2 使用bzip2命令操作
.gz 使用gzip命令操作
.zip 使用unzip命令解压
.rar 使用unrar命令解压

最常用的就是.tar.gz文件格式了。其实是经过了tar打包后,再使用gzip压缩。
创建压缩文件
tar cvfz archive.tar.gz dir/

解压
tar xvfz. archive.tar.gz

快去弄清楚它们的关系吧。

日常运维
开机是按一下启动按钮,关机总不至于是长按启动按钮吧。对了,是shutdown命令,不过一般也没权限-.-!。passwd命令可以用来修改密码,这个权限还是可以有的。


mount
mount命令可以挂在一些外接设备,比如u盘,比如iso,比如刚申请的ssd。可以放心的看小电影了。
mount /dev/sdb1 /xiaodianying

chown
chown 用来改变文件的所属用户和所属组。
chmod 用来改变文件的访问权限。
这两个命令,都和linux的文件权限777有关。
示例:
# 毁灭性的命令 chmod 000 -R / # 修改a目录的用户和组为 xjj chown -R xjj:xjj a # 给a.sh文件增加执行权限(这个太常用了) chmod a+x a.sh
yum
假定你用的是centos,则包管理工具就是yum。如果你的系统没有wget命令,就可以使用如下命令进行安装。
yum install wget -y

systemctl
当然,centos管理后台服务也有一些套路。service命令就是。systemctl兼容了service命令,我们看一下怎么重启mysql服务。 推荐用下面这个。
service mysql restart systemctl restart mysqld

对于普通的进程,就要使用kill命令进行更加详细的控制了。kill命令有很多信号,如果你在用kill -9,你一定想要了解kill -15以及kill -3的区别和用途。

su
su用来切换用户。比如你现在是root,想要用xjj用户做一些勾当,就可以使用su切换。
su xjj su - xjj

-可以让你干净纯洁的降临另一个账号,不出意外,推荐。

系统状态概览
登陆一台linux机器,有些命令能够帮助你快速找到问题。这些命令涵盖内存、cpu、网络、io、磁盘等。如需要更多了解,参考五件套。比较高阶一些。


uname
uname命令可以输出当前的内核信息,让你了解到用的是什么机器。
uname -a

ps
ps命令能够看到进程/线程状态。和top有些内容重叠,常用。
# 找到java进程 ps -ef|grep java

top
系统状态一览,主要查看。cpu load负载、cpu占用率。使用内存或者cpu最高的一些进程。下面这个命令可以查看某个进程中的线程状态。
top -H -p pid

free
top也能看内存,但不友好,free是专门用来查看内存的。包括物理内存和虚拟内存swap。

df
df命令用来查看系统中磁盘的使用量,用来查看磁盘是否已经到达上限。参数h可以以友好的方式进行展示。
df -h

ifconfig
查看ip地址,不啰嗦,替代品是ip addr命令。

ping
至于网络通不通,可以使用ping来探测。(不包括那些禁ping的网站)

netstat
虽然ss命令可以替代netstat了,但现实中netstat仍然用的更广泛一些。比如,查看当前的所有tcp连接。
netstat -ant

此命令,在找一些本地起了什么端口之类的问题上,作用很大。
工作常用
还有一些在工作中经常会用到的命令,它们的出现频率是非常高的 ,都是些熟面孔。


export
很多安装了jdk的同学找不到java命令,export就可以帮你办到它。export用来设定一些环境变量,env命令能看到当前系统中所有的环境变量。比如,下面设置的就是jdk的。

export PATH=$PATH:/home/xjj/jdk/bin

有时候,你想要知道所执行命令的具体路径。那么就可以使用whereis命令,我是假定了你装了多个版本的jdk。

crontab
这就是linux本地的job工具。不是分布式的,你要不是运维,就不要用了。比如,每10分钟提醒喝茶上厕所。

*/10 * * * * /home/xjj/wc10min

date
date命令用来输出当前的系统时间,可以使用-s参数指定输出格式。但设置时间涉及到设置硬件,所以有另外一个命令叫做hwclock

xargs
xargs读取输入源,然后逐行处理。这个命令非常有用。举个栗子,删除目录中的所有class文件。
find . | grep .class$ | xargs rm -rvf #把所有的rmvb文件拷贝到目录 ls *.rmvb | xargs -n1 -i cp {} /mount/xiaodianying

网络
linux是一个多作业的网络操作系统,所以网络命令有很多很多。工作中,最常和这些打交道。

ssh
这个,就不啰嗦了。你一定希望了解ssh隧道是什么。你要是想要详细的输出过程,记得加参数-v

scp
scp用来进行文件传输。也可以用来传输目录。也有更高级的sftp命令。

scp a.txt 192.168.0.12:/tmp/a.txt scp -r a_dir 192.168.0.12:/tmp/

wget
你想要在服务器上安装jdk,不会先在本地下载下来,然后使用scp传到服务器上吧(有时候不得不这样)。wget命令可以让你直接使用命令行下载文件,并支持断点续传。

wget -c http://oracle.fuck/jdk2019.bin

mysql
mysql应用广泛,并不是每个人都有条件用上navicat的。你需要了解mysql的连接方式和基本的操作,在异常情况下才能游刃有余。

mysql -u root -p -h 192.168.1.2

End
不要觉得复杂,命令是有限的,但激情无限;都会也不要骄傲,一个vim就够折腾一辈子。捷径就是总结,深入只有探索。白马过隙,终会行云流水,手到擒来。
物是人非,年华易老。唯有时光,不会辜负。


作者:小姐姐味道
链接:http://www.imooc.com/article/289217
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作

2018 年 W3Techs 数据统计,服务器端,Unix-Like OS 占的比例近70%,其中 Linux 可以称得上是中流砥柱;移动端, Android 也是基于 Linux 内核,可以说,编程世界中,Linux 是主流,不会 Linux 操作系统的你会格格不入。

作为程序员是否熟练使用 Linux,一定程度上会影响到你的工作效率。因为排查问题,网络分析、性能诊断等都是一把命令,只有深入了解 Linux 操作系统才能在关键时刻挺身而出。

由于 Linux 操作系统完全免费且可用作开源软件,通过开源方式,您可以轻松查看用于创建Linux内核的可用代码,还可以修改代码以修复任何错误等。因此学习 Linux 能够给程序员带来以下好处:

1.研究操作系统内核代码,能够将数据结构与设计模式进行有效的实践。甚至还能看到系统对于并发情况保护等复杂场景,对于自己后续的工作有着极大的帮助。

2.拥抱Linux操作系统生态,能够让你更快速的学会新技术。无数优秀软件运行在 Linux 上,比如数据 MySQL、消息队列 RabbitMQ、大数据 Hadoop、虚拟化 KVM 等等,学习 Linux,多学习大牛思想,对于自身的成长助益不少。

下面直接对比下Linux 和 Windows,直观看下为什么大部分软件开发会选择 Linux?

1. 免费与收费

  • 最新正版 Windows 10,需要付费购买;
  • Linux 免费或少许费用。

2. 软件与支持

  • Windows 平台:数量和质量的优势,不过大部分为收费软件;由微软官方提供重要支持和服务;
  • Linux 平台:大都为开源自由软件,用户可以修改定制和再发布,由于基本免费没有资金支持,部分软件质量和体验欠缺;由全球所有的 Linux 开发者和自由软件社区提供支持。

3. 安全性

  • Windows 平台:三天两头打补丁安装系统安全更新,还是会中病毒木马;
  • Linux 平台:要说 Linux 没有安全问题,那当然是不可能的,这一点仁者见仁智者见智,相对来说肯定比 Windows 平台要更加安全,使用 Linux 你也不用装某杀毒、某毒霸。

4. 使用习惯

  • Windows:普通用户基本都是纯图形界面下操作使用,依靠鼠标和键盘完成一切操作,用户上手容易,入门简单;
  • Linux:兼具图形界面操作(需要使用带有桌面环境的发行版)和完全的命令行操作,可以只用键盘完成一切操作,新手入门较困难,需要一些学习和指导(这正是我们要做的事情),一旦熟练之后效率极高(对于程序来说,so easy)。

5. 可定制性

  • Windows:这些年之前算是全封闭的,系统可定制性很差;
  • Linux:你想怎么做就怎么做,Windows 能做到得它都能,Windows 做不到的,它也能。


6. 应用范畴

或许你之前不知道 Linux ,要知道,你之前在 Windows 使用百度、谷歌,上淘宝,聊 QQ 时,支撑这些软件和服务的,是后台成千上万的 Linux 服务器主机,它们时时刻刻都在忙碌地进行着数据处理和运算,可以说世界上大部分软件和服务都是运行在 Linux 之上的。

7. Windows 没有的

  • 稳定的系统
  • 安全性和漏洞的快速修补
  • 多用户
  • 用户和用户组的规划
  • 相对较少的系统资源占用
  • 可定制裁剪,移植到嵌入式平台(如安卓设备)
  • 可选择的多种图形用户界面(如 GNOME,KDE)

8. Linux 没有的

  • 特定的支持厂商
  • 足够的游戏娱乐支持度
  • 足够的专业软件支持度


最后,推荐下特别适合新手入门的Linux基础课程:

Linux 基础入门(新版)_Linux - 实验楼

我推荐Linux的主要原因是写不可移植玩意儿的时候,自己只会用Linux系统调用;而服务端线上环境也正好不少是这个,可以实现吹哔、部署、掉坑一体化的体验,提高言行一致度。

但我不知道那么多同学是怎么想的,同时也有点好奇,这位那姓同行是不是那英的某位亲戚。

有一次我用 windows 下载了个什么软件,又中毒了。据小伙伴说,用 Linux 的话就很少中毒。于是我把 windows 卸载了,变成了 linux。真的没有再中过毒。于是我就再也没换回 windows。

是因为linux生态对程序员比较友好。

责任编辑:
热门阅读排行
© 16货源网 1064879863