linux C++ 与Windows C++ 领域之争,作为C++学习者,你怎么看?

简介: 我之所以把这一个标题单独列出来,是想纠正现在很多 C/C++ 新人和初学者的一些的不当认识,一般有以下几种观点:linux C++开发就是后台开发,而 Windows C++ 开发就是客户端开发;后端开发比客户端开发(前端)高级,因此后端开发行业薪资水平比客户端开发薪资要高;我只学 linux,不学Windows。我相信对于80和90这一代的开发者来说,当初接触计算机并进入软件行业,都是从接触 Windows 开始的。时至今日,大数据、人工智能等各种新技术方兴未艾,移动互联网如火如荼。但是无论是 linux 还是 Windows,尤其是Windows,还是我们大多数人工作、学习

我之所以把这一个标题单独列出来,是想纠正现在很多 C/C++ 新人和初学者的一些的不当认识,一般有以下几种观点:

linux C++开发就是后台开发,而 Windows C++ 开发就是客户端开发;

后端开发比客户端开发(前端)高级,因此后端开发行业薪资水平比客户端开发薪资要高;

我只学 linux,不学Windows。

我相信对于80和90这一代的开发者来说,当初接触计算机并进入软件行业,都是从接触 Windows 开始的。时至今日,大数据、人工智能等各种新技术方兴未艾,移动互联网如火如荼。但是无论是 linux 还是 Windows,尤其是Windows,还是我们大多数人工作、学习、娱乐使用最多的操作系统,我们每天都会使用上运行在其上的各种软件。我们使用这些软件像喝水、呼吸空气一样自然,所以很多人就忽视了这类软件的“基础作用”。对于 Windows 上的软件开发由于其发展了很多年了,这些领域也比较成熟,一般不再招初中级开发,而是需要水平较高、经验较丰富的高级开发者,这让很多人造成了“Windows C++”开发市场需求已经很小了的错觉。试问,PC QQ部门这些年对外招了多少人?

另外,linux C++ 和 Windows C++ 一样,没有孰高孰低之分,只是两种不同的操作系统而已,不要觉得在linux 下敲命令就比在 Windows 的图形化界面点击鼠标高级。图形化界面之于命令行,是人们对更高级、更方便的工具的追求的必然结果。linux C++ 也不一定就是后台开发,Windows C++ 也不一定就是客户端开发;所谓的服务器与客户端是个相对的概念,即谁给谁提供服务,提供服务的我们认为是服务端(后台),被服务的我们认为是客户端(前台)。而 Windows 作为后台服务的应用也比比皆是,如笔者之前所在的某交易所的服务器后台都是Windows下的C++程序;另外如一些游戏类的服务器端,也不少是Windows的。

借用《UNIX编程艺术》这本书的观点,Windows 和linux 的哲学理念不一样,Windows是假设你不会操作,它教你如何操作,而 linux 是假设你会操作然后进行操作;根据这个理念,Windows 一般普通人用的多,而linux 程序员用的多。从编程的角度来说,Windows的代码风格是使用所谓的匈牙利命名法,而linux使用的短小精悍的连字符风格,例如同一个表示屏幕尺寸的整型变量,Windows 上可能被命名为 iScreen 或 cxScreen ,而 linux 可能是 screen;再例如 Windows 上创建线程的函数叫 CreateThread,linux 下叫pthread_create。有时候,我觉得 Windows 的匈牙利命名法反而更容易理解代码。

这里既然提到前端(客户端)开发和后端开发,这里不得不提一下,买手机号平台这二者没有优劣之分。其侧重点和开发思维是不一样的,前端(客户端)开发一般有较多的界面逻辑,它们是直接与用户打交道的,因而一款客户端软件的好坏很大程度上取决于其界面的易用性和流畅性,开发者只要把这一端的“一亩三分地”给管理好即可;而后端服务,对于普通用户是透明的,开发者的程序必须尽量体现“服务”这个字眼,即更有效地为更多的客户端服务,这就要求兼顾请求响应的正确性、及时性和流畅性,由于服务软件也是运行在某台物理机器上的程序,鉴于CPU、内存、网络带宽资源有限,而服务程序一般是长周期运行的,因此必须合理的分配和使用资源(如尽量回收不再使用的各种资源),开发者应从全局考虑,不能在某个“客户端”这一棵树上“吊死”。

从个人的职业发展来看,建议从事客户端开发的读者适当地了解一下服务器开发的思路,反过来也建议从事后端开发去学习一下客户端开发,二者相得益彰。从个人的技术提高来说,也是很有帮助的。例如您要学习一套开源的软件代码,如果您熟悉客户端和服务器的基本开发和调试技巧,您可以更好地学习它。而在工作上,一个项目,往往是由客户端和服务器程序组成,如果您都熟悉,您可以站在一个更高的角度去审视它、规划它,这也是架构师的基本要求之一。

最后就是很多读者关心的客户端和服务器的薪资问题,这个没有绝对的谁高谁低,因人而异,因能力而异,因岗位而异。

目录
相关文章
|
27天前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
|
1月前
|
存储 安全 Linux
|
9天前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
31 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
2月前
|
Ubuntu 安全 Linux
|
9天前
|
自然语言处理 安全 Java
Nexpose 7.0.1 for Linux & Windows - 漏洞扫描
Nexpose 7.0.1 for Linux & Windows - 漏洞扫描
31 6
|
12天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
1月前
|
Linux Shell 数据安全/隐私保护
|
26天前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
49 4
|
2月前
|
编译器 C语言 C++
配置C++的学习环境
【10月更文挑战第18天】如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。 一、本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 二、文本编辑器 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。 C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 Visual Studio Code:虽然它是一个通用的文本编辑器,但它有很多插
|
2月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)