目前主流的操作系统平台大部分是 Windows 和 MacOS,当然还有一个 Unix/Linux。
我们分成 2 部分来说说这个事情。
因为 Linux 是 Unix 的一个衍生版本,实际上还是有一些不一样的,但是很多服务器都会使用 Linux 部署,而且不少命令都能通用,因此我们认为 Linux 和 Unix 都是大致相同的。
至于一些小众的操作系统,我们就不在这里讨论了。
问题
既然要开发,就难免要选择开发用的电脑。
争议最多的就是到底是选 Windows 还是 MacOS。
结论
我的结论就是你现在用什么就用什么吧,没有必要单独换一个。
如果你要开发 iOS 程序,那么就只能跑 MacOS 了 。
如果你要跑 NodeJS,那么 MacOS 可能会有点优势,但是随着 Windows 已经有了 WSL 了,其实也都差不多了。
当然实际使用的时候还是有些不同的。
考虑的因素
计算机都是由硬件和软件组成的,我们先考虑考虑硬件。
硬件
但是主要考虑的点是 CPU,内存,硬盘。
简单来说就是越大越好。
CPU,如果你能跑服务器 CPU,那肯定性能比 i3 要好不少。
内存:32G 不嫌多,64G 跑着玩。
硬盘:目前固态是标配,但是还是不要太小。256 G 的硬盘有点小了,如果你再云同步下,下载些库什么的,很快就捉襟见肘了。相信我,去硬盘上移空间比死都难受。
显示屏:通常来说 MacOS 的显示屏标配要比 Windows 好一些。当然在 Windows 上也可以通过加装显卡来解决。在开发的时候也会使用多显示屏开发,直接盯着笔记本看的情况也不多了。
软件
软件部分要说的就相对多一点点了。
主要问题纠结在那些是 Windows 可以用的,那些是 Mac 可以用的。作为开发人员来说主要考虑的就是环境的兼容性和可能出现的一些问题。
Linux 环境
一个经常比较诟病的问题就是 Windows 上没有办法执行 Linux 的命令行工具。
在 Mac 上直接用就可以了。
殊不知,现在已经有了 WSL 了,Windows 已经直接给了你一个纯 Linux 操作平台了。
在这上面你可以直接运行 Linux 的相关命令,也可以直接部署。
回车换行
Windows 和 Linux 的回车换行表示方式是不一样的。
Windows 需要 \r\n, 而 Linux 只需要 \n。
这会导致一些程序在处理回车换行的时候出现问题。
对代码来说,通常问题不大,因为 Git 目前都是使用 \r\n 保存文件的。这个问题在以后有机会聊到 Git 的时候我们再展开说吧。
XCode
如果你要开发 iOS,最好的办法就是在 Mac 上开发。
Windows 上估计不是那么容易让你实现的。
通用软件
Windows 上有大量的通用软件在使用。
大部分常用的通用软件都有 2 个版本,但是 这 2 个版本的很多快捷键是不相同的。而且用得比较多的通用软件可能在 Mac 上是一个阉割版本,一些功能可能用不了。
有些软件还只能在 Windows 上面用,这个主要是因为一些老的动态库没有办法在 Mac 上加载。
有些优秀软件又只能在 Mac 上用,这个也是非常蛋疼的。
NodeJS 问题
NodeJS 和 JS 是目前前端用得非常多的。
Linux 上比较容易创建 symlink,或者叫做符号连接。
一些 NodeJS 的库,使用了 symlink,这个会导致一些项目没有办法在 Windows 下进行编译。
通常解决办法就是直接在 WSL 上重新编译运行了。
快速安装
如果你用过 Linux,你可能对 dnf 或者 yum 安装非常开心。
因为你不需要了解你安装的软件在那里,直接从库里面安装就好了。
在这个方面 Windows 做得还是比较弱,没有太好的办法进行快速安装。
大小写敏感
在 MySQL 数据库中,Windows 是大小写不敏感的,所有从 Linux 导入的数据库,在 Windows 上都会被转换为全部小写。
如果你是按照 Linux 的大小写敏感设计数据库的话,那么恭喜你,有些代码会出问题。
当然这个是可以从数据库设计约束中解决,在设计表和库的时候,必须全部小写来避免这个问题。
上面提到的一些问题都会在开发中遇到,不是完全没有解决办法,但是有时候解决办法不是那么好用。
如果实在没有办法解决,那么只能让数据库跑在 WSL ,或者 Docker 容器里面了。
如何思考
如果你是重度后端开发,其实影响不是非常大。
如果你是重度 JS 开发使用者,那么很有可能坑比较多。