技术人:Windows vs MacOS

技术人:Windows vs MacOS

上大学后,忍受不了Windows难用程度突破天际的cmd,日常工作学习转向Linux和Mac,不知不觉,在shell里已经度过了差不多十年。最近,win10发布了大量的针对开发者的优化,而我在Windows下开发的体验也表明,Windows用来开发真是太好用了。因此,是时候重新审视一下,作为一个技术人,在日常开发中,到底windows更好用还是Mac更好用了。


首先当然还是是 shell。

windows下可选的terminal 并不多,比较出名是cmder。在Windows Terminal发布之前,cmder也是最佳选择。但是,微软官方的Windows Terminal 出现之后,风头就全被Windows Terminal抢走了。(官网 https://devblogs.microsoft.com/commandline/introducing-windows-terminal/ ,在 今天,2019/07/07,windows terminal的preview版已经可以在win10商店中下载)
windows下可选的shell有三个,cmd,powershell,和跨平台的pwsh,对于技术而言,前两个并没有什么可比较性,因此使用pwsh。在windows上pwsh也比 系统自带的powershell好用不少。

mac下可选的terminal就不用说了,肯定是iterm。shell的话可选的可能要稍微多一些,现在比较流行的是bash、zsh还有fish。有新闻说在macOs 15中,由于一些开源协议问题,zsh将取代bash成为默认shell,而且zsh也是当前程序员大大最爱的shell,当仁不让选择zsh。

因此windows下使用Windows Terminal + Powershell,在mac下使用 iterm2 + oh-my-zsh + powerlevel9k。下面是截图:(windows这张图是我在我的5K显示器上截的,如今windows在高分屏上面的显示效果也丝毫不输mac了 )

windows terminal 点击放大
iterm2 点击放大

总结一下,单纯的从terminal和shell的角度,mac已经领先不了太多了,大有持平的架势。这里值得一提的是,powerline字体和 Nerd Hack字体虽然已经支持windows,但在windows上的效果还是一般。因此喜欢用powerlevel主题的人可能在windows下要换个主题。


然后再说shell的功能。Mac 作为Unix系统,提供了全部的unix 标准的shell工具。这点是windows目前最大的劣势。但是,还是有但是,windows 10现在已经原生内置了openssh,因此在使用ssh、scp等功能的时候,已经非常接近mac的体验了。至于你说windows没有grep、cat、awk、sed这些命令,这确实是windows的一个劣势。最最坑爹的还是windows没有sudo命令,如果你想用管理员权限运行一个程序,唯一的选择就是重新用管理员权限打开一个terminal,这体验可以说差到家了。

那么windows有什么优势呢?有的。pwsh是 powershell的跨平台版本,powershell如今在服务器管理界已经非常非常出名了,大有超过传统的linux管理的意思。因为powershell真的 太好用,比如powershell中的ls,就是用powershell脚本实现的。powershell脚本的强大之处这里不展开,在linux下必须用ansible之类才能实现的服务器批量管理,powershell脚本可以轻松完成。

windows如何弥补他的劣势呢?答案也有的,就是wsl。windows发布wsl很多年了, 在windows 中使用wsl运行linux,完全无缝的体验,唯一的缺点是,wsl是运行在windows的虚拟层之上的,并没有linux内核。这带来了一方面的好处,wsl性能极高,它不是虚拟机,而是windows容器,相比宿主机几乎没有性能损耗。而害处就是,wsl里面的机器, 不能执行systemd的相关命令,不能使用docker,好多功能不能用。

然而,这个也有了解决办法,微软今年同时发布了windows terminal和wsl2。wsl2将运行在完整的linux内核之上,不再是windows容器。当然,它比起wsl会有更大的性能损耗,但微软正在持续优化,估计明年wsl2正式上线的时候,应该已经达到了不错的程度。

说了这么多,总结一下,拿mac和windows比shell功能,其实是在拿mac和windows上运行的linux子系统比,几乎打平,是再正常不过了。


软件丰富程度。终于有一个windows可以完胜的项目了。

先说IDE,最常用的可能是Intellij-idea。它是跨平台的,在windows和mac上运行都非常稳定。第二流行的IDE可能就是visual-studio,它也算是跨平台的吧,但是在mac上的功能和表现都大幅缩水,实在是没法看。而在windows上, VS强大到不可想象。在往后的IDE可能就是Eclipse之流了, Eclipse也跨平台。因此 ,不用比了,这个应该是windows 赢了。

再说编辑器,最流行的编辑器们都有哪些?Vim,Emacs,接下来是VS-code,SublimeText,Atom,再往后的话,可能还有notepad++等等。VSCode,这个微软才发布几年的编辑器,现在已经成为全球开发者最爱的编辑器之一。不管是开发C++还是JAVA都非常好用。经过我 个人体验,在重构方面功能还差一些,而重构是日常经常用的功能,因此替代IDE可能还差点事,但是已经非常好用了。我们上面提到的所有编辑器,都是跨平台的,而且在MAC和Win上体验没有多少差距。这点算是打平。

再说其它软件,这点mac就更没话说了,windows上软件丰富程度有目共睹,毕竟有最大的市场份额在那,还有多年的累积。windows完胜。


这节介绍四个工具,大幅减小了windows和mac的差距。他们是hyper-v,wsl, vagrant,还有docker。

wsl上面已经介绍过了,这里不 再重复。

hyper-v,是windows自带的虚拟机,尽管被很多人诟病,但是也越来越好用了。windows上的wsl、vagrant和docker都是基于hyper-v实现的,非常稳定好用。缺点是,启用hyper-v之后,就不能在用别的虚拟机跑64位虚拟机了,vmware和virtualbox都不行,好在我也没有这个需求。

docker,也不用介绍,神器。docker这个项目我也是从它出第一个beta版就开始用了,实在是好用。 Build once, Run anywhere, Configure once, Run anything 。docker的标语可以说生动形象的解释了它的功能。基于hyper-v, docker在windows上也有着不俗的性能,还能实现从虚拟机到主机的自动端口映射。以前windows有个问题,mysql、nginx 、redis等软件,安装使用都很麻烦。现在好了,有docker,再加上docker-compose,windows上安装 使用常用软件和mac、linux的体验一模一样。

最后说一下vagrant,勉强叫虚拟机管理工具吧。这个有点难说清楚,要实际体验一下才知道它是干嘛的,可能用laravel+php的人知道它多点。需要用虚拟机而不是docker和wsl这种容器的时候,使用virtualbox或者parallels或者vmware都很麻烦,而且ip会经常变化, 还要配置一堆东西。有了vagrant,这些事情都解决了。而且vagrant在windows上原生支持hyper-v,连虚拟机软件都省了。如果是mac,要先装一个virtualbox。在windows下vagrant有个缺点,必须用管理员权限运行,这是hyper-v带来的坑爹之处,vagrant想跟hyper-v交互,也只能用管理员权限运行。而上面也说到了,windows上没有sudo这个命令,所以。。。。


windows还有很多其它的坑。以前,windows上经常遇到中文乱码的问题。现在偶尔还会遇到命令行参数太长的错误,这在linux上是不存在的。但是总而言之,我觉得,在短短四五年之后,windows在开发这件事上,可能真的要彻底替代*nix了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注