因为Linux有程序员专属的系统内置应用商店(软件源),全免费,而且全世界有大量的镜像站点保证你的下载速度(国内也有各高校教育网以及各大互联网企业以及部分电信运营商建立的镜像),而其他系统没有如此优秀的机制。
这也就意味着,Linux装起来,几条命令下去,就自动从应用商店配好了开发环境。而且由于所有软件都来自官方应用商店,他们天然就已经是配合好的。你在Linux天然的有gcc,天然的所有lib动态库都是围绕系统gcc编译好,pkgpath自动设置好了你编程立等可取可用。就算第三方库,它也一定是围绕gcc编译的,根本不存在兼容性问题。
Windows?你得知道到哪去下(光下载软件这个环节很多小白就会被坑),下完了知道怎么装,装完知道怎么配置。配完了还得知道怎么把不同的工具结合起来。可以说Windows下要整个编译器都得纠结,你是下什么编译器呢?cl,msvc还是icc还是mingw,msys,cygwin环境还是apple clang?
你打算用什么样的第三方库?第三方库是用哪个编译器编译的?你下载的第三方库要怎么才能编译通过,要怎么才能跟你的程序链接上?这些环节,每一个在Windows平台下都会难倒一堆人。在Linux下则全部都已经帮你解决了。
如果你要开发点硬件,嵌入式,那需要交叉编译工具,很多都是只提供Linux版本的。因为服务器cicd,自动部署肯定是用的Linux端,那么Linux版本的交叉编译工具链一定会提供一份,但Windows版本跟Mac版本工具链则大概率不会提供,除非工具链组的工程师们特别闲。。。
如果你要搞java?装java是一句话的事,配环境全自动,装web服务器也是一句话的事,配环境也基本全自动,这些都是Linux自带的软件商店帮你做好了。但是你试试在Windows环境搞个java?知道去oracle下载java还需要注册账号吗?知道装了java还要配环境变量吗?知道Mac一个小白能折腾出一套可用的brew系统,连接到一个靠谱的国内镜像站有多麻烦吗?
linux配个ssh私钥,一句话的事,配个python,一句话的事,配个svn,git版本管理,一句话的事。。。
所以其实Linux受到一部分程序员欢迎,还是直指人类本质: 不折腾 。
iOS的核心竞争力就是AppStore。而Linux的核心竞争力正是软件源。两者其实非常相似,都在特定小众客户群内特别受欢迎。
搞C/C++开发,Linux就是一个啥环境都给你直接准备到位的系统,其他系统离这个距离就非常远。