你好,我是只说代码的大饼,很高兴你的问题。
首先,说下这几年自己使用过的开发工具,
1.VS2010 到现在的VS2019.。
2.IntelliJ IDEA。
3.Android Studio。
4.VSCode。
5.微信开发者工具。
6.HBuilder。
以上这些工具都是在Win10下使用的,感觉也没什么问题,编译好的项目也没发现过因为是win下编译的而出现问题。
其次,在上家公司有使用虚拟机里写代码的,那是因为使用了商用控件,所以才去虚拟机里装的开发环境,而且虚拟机里安装的操作系统还是Windows,也没安装Linux的。
最后,最近几年流行docker部署应用,一次打包,多处运行。不管是Linux还是win10现在都可以使用docker打包应用程序。
总结:
身边还真的没有使用Linux下编程的,但有在虚拟机里写代码的。
还有就是现在都流行程序在docker里跑,把程序打包成镜像就能在不同系统环境下跑 了,关系型数据库可能还是不太适合在docker里跑,一般可能还是在linux操作系统下 直接运行,所以并没有像你说的程序员都在Linux下编程的问题,反而使用Windows或 者mac开发的程序员更多,大厂有可能是在Linux下开发 。
完毕,谢谢,我是只说代码的大饼。
这个问题其实是伪命题,因为虽然网络上使用linux的用户发出的声音更大,但是毫无疑问,还是使用windows的程序员更多。只不过使用windows的程序员一般都没什么必要讨论windows的使用方法,毕竟大家都会。
而使用linux的程序员光是linux的桌面配置就可以单独拿出来讨论很久,更别提各种linux版本直接的比较等等。
当然有一说一,linux的优势就在于包管理器可以很方便的安装编程所需的各种sdk,而且会自动配置环境变量。通过用户目录下的一些配置文件可以比较方便的迁移开发环境,这一点确实是windows做不到的。
但是其实吧,这个问题也不是那么重要。因为一般情况下程序员的开发环境变动的并不是很大。你搭建好一个java8的开发环境,可能好几年都不用换了。
就我个人而言,linux下的docker等工具,才是更吸引我的地方。这也是linux上独有而windows上没有的功能。也是我使用windows编程的一个痛点。好在现在vmware等虚拟化软件也支持hyperv了,大家可以在使用vmware的时候同时使用windows版的docker,也是算是一个小小的补偿吧。
Linux和Windows实际上不是环境而是操作系统,除了这两个以外,还有苹果电脑支持的macOS,当然这只是指电脑的操作系统,毕竟目前程序员主要还是使用电脑来编程的,虽然iPad作为编程工具现在也是可行的。实际上,现在很多程序员会喜欢用macOS来,不过喜欢使用哪个操作系统来用作编程用电脑的操作系统还是主要取决于几个方面。
IDE的支持IDE实际上才是开发环境,Windows作为主流的操作系统IDE支持肯定是最全的,除了iOS App开发环境XCode不支持外,其他编程语言基本都能支持,而且因为比较大的用户量,所以面对Windows操作系统开发的IDE还是比较完善的,而且基本都有不错的用户界面。
对于Linux来说,因为原本就是一个来自开源社区的操作系统,所以本身就自带了很多开发工具。但是因为Linux的用户界面没有Windows那么成熟,所以有些IDE界面上来说并不是那么好,不过功能来说还是差不多的,而且来自开源社区的开发力量可以让Linux很多技术支持比较前沿,IDE也同样道理。不过没有大厂的背景,所以对于Windows应用或者Mac/iOS App的开发支持会相对弱一点。
顺便也说一下macOS,现在因为iPhone的崛起,所以苹果电脑作为开发用电脑开始逐步普遍起来了,所以基本上主流开发语言都能在macOS上找到相应的IDE,到时对于Windows软件的开发可能支持就没有Windows好了,比如.Net Framework等等。
IDE支持来说三个操作系统都不错,不过也有各自的短板,基本算是打平吧。
与发布环境的一致性程序员开发完成后需要测试,如果测试环境和实际发布环境差距比较大的话,那么测试就没有意义了,所以开发所处于的操作系统和上线后使用的操作系统一致性就比较重要了。
Windows来说,如果开发的是Windows软件的话,无容置疑是最一致的操作系统,不过目前更多的应用是在移动端或者服务器端,也就是说Windows作为模拟环境并不是那么的一致。而且,作为服务器来说,Windows还是和Linux有一定差距。
Linux这点上就比较有优势了,基本不同Linux版本占据了80%以上的服务器市场,所以使用Linux来开发服务器端的应用大概率来说是和发布环境是类似的。但是,对于App或者软件前端的开发,Linux的支持就比较差一点了,毕竟Windows和macOS有更大的普通用户基础,这样开发的应用主要还是在这两个平台上的。Android是一个Linux内核的系统,但是Android的应用是在Java虚拟机上运行的,所以三个操作系统的支持都差不多。
macOS因为是基于Unix开发的系统,所以底层是Linux很接近,不过还是没有直接在Linux上开发那么直接方便,不过优势可以对于macOS/iOS下的App开发提供比较好的模拟发布环境。
与发布环境的一致性来说,服务器端开发Linux是有绝对优势的,其他就不同平台有不同平台的优势,所以Linux在这点上略胜一筹。
其他软件支持编程不单单只有开发环境支持,还需要其他软件的支持,对于这点来说Windows作为占有率最高的操作系统,软件支持还是非常好的,基本上能找到任何想要的软件,尤其是想Adobe全家桶之类的软件。
Linux在软件支持上就优劣参半了,毕竟源自开源社区,所以基础开放方面需要的软件还是能找得到的,不过其他软件就比较难找到了,例如聊天软件、协同软件等
macOS因为最近一段时间的崛起,很多软件都能有mac版,不过Mac版软件的使用成本比较高,比较难找到破解版软件,绝大开发相关的正版软件收费都不便宜的。
对于其他软件支持来说,Linux支持相对比较弱一点,Windows和macOS应该不相伯仲。
硬件支持硬件支持主要是指电脑和其他设备。Windows这点上因为已经有那么长的发展历史了,基本电脑都能支持Windows,就是是苹果也能安装Windows,那么这样购买开发用电脑的时候就比较灵活,而且能更好的控制成本。对于其他设备的支持,Windows的驱动支持还是不错的,不过要更深一层的控制其他设备可能就比较困难了。
Linux在发展初期就是以替换Windows为目标的,所以基本Windows的能用的电脑,Linux都能用,不过对于一些开发相关的设备驱动比较难找,不过开发者功力够的话,Linux内核开源的特性可以让开发者更容易开发底层驱动。
macOS电脑要求就比较高了,虽然现在有很多黑苹果电脑出现,不过毕竟还是在Apple电脑上比较稳定,所以成本就相对高了。对于其他设备的支持,Apple电脑支持也不是那么好。
所以硬件支持来说,对于一般开发者Windows和Linux成本比较可控,macOS成本比较高,不过支持程度上差不多。对于高手来说Linux就更灵活了,毕竟Windows和macOS都不是开源系统。
总结实际通过几个方面的比较,整体来说对于高手来说Linux的确会有非常大的灵活性,但是普遍的开发者来说,三个操作系统差别不大,只能说萝卜青菜各有所好了。
而且因为Linux一般不是开箱即可用,所以选择使用Linux作为日常工作开发操作系统还是比较少的。
对编程、产品感兴趣,可以关注我一起讨论
这是由目标程序环境和人员使用习惯决定的。
很多后台程序或者说服务端开发喜欢在linux环境开发,开发环境和目标发布环境一致,减少中间环节,而且是开源,免费,运行流畅,专注,使用习惯了。
但同样,也有更多的人喜欢在windows环境下开发,除了gui操作方便顺畅,各类软件多,游戏多,硬件驱动支持的好外,同样也是使用习惯了,很多人一开始就在用windows,习惯成自然,现在如go语言之类还可以跨平台编译,vs都内嵌了ssh工具,docker的必备,特别是我们常用的java大部分无需考虑平台特性的特点,实际上我周围开发的人还没有一个人在用非windows,少量有人用mac是为了苹果端的开发。
现阶段环境下,用哪种开发环境已经不是屏障了,主要就是使用习惯决定的。