Posted in Uncategorized

开发应与开发环境相适应:Windows下的开发环境最优解

最近尝试各种开发环境后,逐渐明白所谓的开发环境,还是原生态最好。

什么叫原生态呢?

比如C语言在Linux上就叫原生态,在Windows上就不叫原生态。最典型的例子是Visual Studio一直不支持C语言,直到最近一两年才终于开始支持C语言的开发。

在Windows上用C语言编程,可以选择的IDE少之又少,无论是界面还是功能,都不尽然如人意,甚至不乏很多老古董,比如Turbo C/C++(如图)。

这原始而又朴素的画风简直欲罢不能,但的确有很多高手当年就是靠这款IDE走上了封神之路

老手应该都知道通过编译器配合VS Code会有比较现代化的C语言编程体验,但是在Windows上找编译器那叫一个困难。

在Windows上最受欢迎的编译器是MinGW64,但是它内置的GCC版本是8.1.0,上GCC官网一查这是2018年的版本。GCC 9.0早就出了,MinGW64卡在8.0也就算了,但好歹得升级到最新的8.4吧?没办法,MinGW64的升级进度就卡在8.1不动了,基本不怎么更新。

如果你直接用Linux,一条命令就可以安装GCC,版本直接就是最新的9.0以上(也要看什么发行版,Debian应该是8.0的)。在Windows上安装MinGW64也谈不上顺畅,要下载、安装、配置环境变量等等,较为繁琐。

除了编译器版本老旧外,在Windows写C还会出现一些和Linux环境完全不同的结果。

比如用VS Code编译运行C文件,即便不加”\n”在string的结尾,最终printf()出来的结果仍然是自动换行的。但是在Linux下编译运行,结果会被忠实地还原,不加”\n”就不会换行。这样一来,在Windows下写C,一方面不利于养成添加“\n”的习惯,另一方面自己也很难排查出实际结果,以为自己当初写的时候并没有问题。

再比如在使用pointer(指针)时,Windows环境下的内存地址并不是0x开头的。

当然,最经典而且最现实的问题是,基本上经典、权威的C语言教程都是基于Linux环境,那么你用Windows编译、运行、调试时往往跟教程讲的不一样,要自己想办法解决。

可能有人比较好奇,为什么教程是基于Linux的呢?因为C语言本来就是为Unix系统而生的,C语言之父同时也是Unix系统之父,而Linux和MacOS都是基于Unix开发的,但是只有Linux是开源免费的,所以自然用Linux教学了。另一方面,如今C语言使用的场景除了教学和嵌入式开发以及Linux系统开发外,使用场景有限,真有需求都转Python和C++了,所以C语言有点old school的感觉,而old school的专家学者都很钟情Linux,说是情怀也好,但更多的是一种精神和理念的认同与传承。

用Windows作为C语言默认系统的教程不是没有,但是基本上都是不值一看的垃圾。教程作者认为在Windows装个IDE更方便学习C语言,其实是作者自己既没有精神和理念的传承,水平也比较低,甚至都不清楚C语言的核心运作原理和操作系统原理,著名代表人物自然是谭浩强了。

所以结论是,直接在Linux上写C是最不折腾的。

但是如果只有一台电脑,又比较依赖图形界面,且兼顾工作、软件生态、娱乐,怎么办呢?

最好的解决方案是主系统仍然为Windows,然后开启一台Linux虚拟机(使用Server版本即可),然后在Windows上通过VS Code、Terminal等连接那台虚拟机。VS Code现在对SSH远程开发的支持非常好,所以我非常推荐使用这一方式进行开发。

VS Code SSH远程连接教程:https://jaylinwu.wordpress.com/2020/12/30/vs-code-ssh-remote-connect-to-linux-server-real-solution/

长期开启虚拟机,其实对CPU的要求不算太高,一般最近几年生产的CPU都能轻松搞定。主要是宿主机内存要大,磁盘IO性能要好。内存建议16G起步,磁盘至少是SATA SSD且创建虚拟机时把虚拟硬盘存放在SSD上。

如果是跨平台的编程语言,则对开发环境要求没那么高,比如Java、Python,可以直接在Windows上用IDE或者VS Code。在这种情况下,我倒是比较愿意直接在Windows上跑,因为这样可以节省下开启虚拟机的资源,且代码直接在实体机上跑性能也会更好。此外,同时打开的窗口数量更少,系统UI更为统一,操作和切换的体验较好。

除了在实体机上开启虚拟机,有条件可以在本地搭建一台专门跑代码的Linux服务器。

购买一台VPS(云主机)也是不错的选择,然而,国外的云主机常常卡掉线,跑SSH极度不稳定,国内的VPS价格更加昂贵,性价比很低。根据我的初步测算,在实体机上开启本地虚拟机,哪怕只分配单核、1GB内存,其性能应该比Vultr上5美元/月的一款还要强得多。

用远程VPS的好处大概就是24小时不关机且网络条件更好(访问外网,可以开启80端口)。远程VPS当然也不用另外掏电费,但是本地虚拟机的耗电量也非常低(取决于当前任务的负载),就算跑满CPU,也不过是60W而已。除此之外,本地虚拟机使用快照等功能也是完全免费的,而VPS有可能另外收费。

当然,如果你的预算足够充足,购买高配VPS的体验应该是非常好的。

Vultr的价目表。
高配主机的性能很强,但租金价格一样不便宜,自己配一台本地实体机显然划算很多。

不过,整体而言,现在云端远程开发是一个流行的大趋势,倘若云端VPS的价格能一降再降,那么本地虚拟机的优势会被压缩。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.