欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

为什么 Linux 搭建各种开发环境相较 Windows 如此简洁容易?

程序员文章站 2022-05-06 20:59:41
...
如题

回复内容:

我至今觉得Linux/Unix写python方便,后端开发确实有优势,shell好用,各种包管理方式(apt,yum)相对来讲方便很多。我在win下写python的时候很多包安装都自己编译一遍,否则容易出问题。

但是开发也分很多种啊,做.Net的,做底层(MCU/FPGA/PLC)的,做WP的等等等等。平台还是要需求决定的,需要做什么就选什么平台是最务实的,粉这个黑那个最没意思了。Win作为面向大众同时要兼容各家硬件的通用系统绝对算得上工程史上的经典,不管怎么样win还是大部分工程师选用的平台啊,visual studio还是很好用的。有时候在ubuntu下面经常能遇到各种无语的bug,系统组件丢这个丢那个自己还要再装一遍。

这个问题题主有挑起双方对喷的嫌疑啊,谷歌就可以解决了。


有些软饭也有点神经过敏,有人说win不好就忍不住跳出来开启嘲讽题主模式,就跟知乎上很多女权主义者一样。Mac黑得,Win就黑不得? 首先, 是的. Linux搭建 *各种**开发环境* 相较Windows确实简洁很多.

为毛?
原因很简单, 就是因为Linux发行版大部分都有自己的包管理系统. 所以其搭建"各种""开发环境"确实就是比Windows简洁很多.
对于包管理系统, 你可以理解为一个接口或者用户界面, 这样你就会更好的明白包管理系统的作用.

注意加黑的两个词语:

第一, 各种
意思是你可能需要安装各种环境, 比如今天需要Python, 明天需要Ruby, 后天RoR, 后面还有有Java, Scheme, Clojure....等等.
包管理提供了一个囊括了很多软件的安装/卸载/配置等管理操作的统一接口. 当你需要安装软件的时候, 只需要通过这个统一的接口, 使用统一的调用规范, 这样就保证了"简洁". 只要是软件库中的软件, 你都可以以同样的方式来安装(我们不讨论更具体的是命令行界面还是图形界面的点鼠标, 因为大部分包管理都同时提供了两者供你选择, 这属于更上层的接口, 你甚至可以包装成Siri一样的语音接口), 比如:
  • 需要Ruby, 可以: "xxx 安装 Ruby"
  • 需要python的源码, 可以: "xxx 安装 python的源码"
  • 单独需要某个库(这个其实不常见), 可以: "xxx 安装 某某库"
  • 开发需要用到某个库, 可以: "xxx 安装 某某库的开发版"

这里的xxx就是包管理系统, 任何额外的工作都不需要. 看到这里, 你已经很清楚了, 包管理就是你的软件管家, 你安装软件, 要得就只是向管家提要求, 管家负责满足你需求, 其实, 管家还负责他帮你安装的软件的稳定性, 保证他帮你安装的版本肯定是经过充分测试的.

换作Windows, 你需要做的是, 去每个软件的官方网站, 下载相应的软件包, 自己安装, 然后使用. 当然, 可能还不能满足你的需求, 需要安装额外的软件库, 由于没有管家, 你是需要自己去找好了下载安装的. 我想玩游戏的同学很多都曾经体验过"Directx 9.0c"的痛苦. 即使现在, 我在自己机器上安装Nvidia显卡驱动的时候, 还可以看到显卡驱动的安装程序内显示正在帮你安装.Net环境提示. 这或许是Windows系统有机制在帮你安装(也可能是显卡驱动自己帮你下载安装), 但是这个逻辑却需要在显卡驱动的安装程序内考虑, 并且在界面中表示出来, 其实并不是一个很好的设计范例.

卸载软件, 同理, 不赘述.
第一点, 总结来说就是, 如果你需要装各种各样的软件, 当然有个软件管家比较方便.

第二, 开发环境.
Linux本身的目标人群就大部分是程序员/系统管理员, 其特点就是默认开放了系统的各个部分. 你可以理解为, Linux默认是提供给开发人员或者系统管理员使用的. 你会更多的与系统交互, 时刻知道系统的存在. 作为Windows, 其实默认是给普通用户使用的, 努力的是隐藏系统的存在, 让用户使用系统上的各个软件. 一般的发行版, 其实默认就会提供一个shell环境, 以及python或者其他类似的脚本语言环境, 当然, 再进一步的其他开发环境, 可能需要你使用你的软件管家来安装了.
再说一下开发环境选择的灵活性, 开发环境是一个多个部分组成的系统, 每个开发人员对系统的组成都有自己偏好的组合. 比如使用不同的IDE. 这里的意思就是, 开发环境是没有生产环境那样的严格要求的. 必须安装什么软件或者必须安装某个版本, 在开发环境中大部分情况下是不存在的. 那么, 作为开发人员, 如果追求简洁的安装开发环境, 就可以完全使用包管理给你提供的软件和版本.
第二点, 总结来说, Linux默认提供给开发者使用, 不需要重新设置, 同时, 开发环境都可以直接使用软件包里的东西, 只要你追求简洁安装.



无关的废话:
在我看来, 每个人造的系统都有其背后的一套逻辑. 当你使用这个系统的时候, 需要看到这套背后的逻辑. 这个逻辑, 如果你可以接受, 便可以正常使用这套系统了, 如果你喜欢, 那么就可以欢快的使用了. 如果不喜欢, 那么可能这套系统真的并不适合你, 换个就是了. 怕的是: 你不喜欢这套系统的逻辑, 却失去了选择的*, 我想, 这就是保持多样性的意义.

如果题主的问题, 确实是想知道问题中的为什么. 那么, 我对这个问题为什么的回答其实就是一句话, "Linux大部分发行版自带包管理系统". 如果是想要引战, 确实意义不大. 因为, 光Linux用户里面, 各种各样的内战就此起彼伏(其实大部分的信仰之战都来自于这群用户, 因为确实选择太多), 真的没有太多的用户(本来人数就不多)去考虑Linux与Windows这块战场. Windows 也有装起来非常简单的开发环境啊。
但是卖钱。
为什么 Linux 搭建各种开发环境相较 Windows 如此简洁容易? 主要是包管理器比较方便,ubuntu为例,需要libevent直接apt-get install libevent-dev就好,win大概就需要从编译源码走起了。

为了避免引起不适,我还是匿了吧。 yum,apt-get之类绝对是个好东西。事实上,需要不同软件组合起来用的场景,Linux是要比Windows来的更简单。

上面好多吐槽的,解释一下Windows8开始的软件商店,是微软闲着无聊推出的么?360软件管家那么多人用,也是因为360是个流氓么? 包管理器大法好,另外效率也是一个加分项。 哪个简单哪个复杂我不知道。

只记得当年,会装MS SQL Server的就是全班女生的男神。
像我这种只会apt-get mysql的,活该孤独一生。

所以,
微软大法就是好!
就是好!
就是好!
就!是!好! 前人种树,后人乘凉。

只要有人把包给你做好,装个开发环境,分分钟搞定,没有你只能一个个包自己下载编译,以it业的人工那么贵,要是每个员工每个包都要自己编译一次,老板肯定要在厕所哭死。

这几年freebsd干得最正确的事情就是加入了pkg。不然编译小工具还好,大部件那是死的心都有了 ! 想到第一个是Yum源

第二个是不需要经常重启 小白听说boost挺好用的,装一下呗

VS下面 (*.com/a/265):
下载, 解压, b2 --参数一大坨(什么鬼), 用zlib还要装个啥...

Ubuntu下面 (How to Install boost on Ubuntu?):
sudo apt-get install libboost-all-dev

您说呢