百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

BAT老程序员分享:Linux C/C++ 开发程序员的黄金方向和学习路线

ahcoder 2025-02-28 14:36 25 浏览

目前从事 Linux C/C++ 开发的程序员很多,尤其是像百度、腾讯、阿里这样的大公司,他们的网站流量巨大,业务逻辑复杂,会遇到很多瓶颈,需要开发底层服务来提高程序效率,快速响应用户请求。

这些公司的 Linux C/C++ 开发属于底层开发(后台服务、算法支持等),而不是应用开发,编写的程序在后台运行,没有界面,不直接面向用户。

从事应用开发(尤其是网站开发)的程序员,工作的前几年提升很快,工资也嗖嗖嗖往上涨,不知不觉年薪就到了 30W。但是这个时候,很多人会遇到瓶颈期,如果没有成为领导,工资就长得慢了。

习惯了自我进步的程序员,怎么能让工资停滞呢,不进步就是退步呀,怎么办?领导不是每个人都能当的。

可以转底层开发呀!!!有了数年应用开发的经验,对用户、业务、交互等都非常了解了,转底层开发很容易,也知道应用层的瓶颈在哪里,明白如何在底层做优化。

底层开发比应用开发的工资要高一些,再过几年,年薪到五六十万不是问题。

当然,上面说的是努力并且聪明的程序员,还有很多程序员工作十来年了依然在做应用层的开发。

那么,这个方向到底适合不适合初学者呢?初学者肯定可以学习,也肯定能找到相关的工作,但是,如果没有应用开发的经验,个人认为只学底层开发是非常枯燥的,因为你做不出一个有趣的东西来,每天面对一堆理论,早晚吐血。

初学者可以给自己树立一个目标,做一个类似 QQ 这样的软件出来,它可以有无限的优化空间,比如:刚开始只是用 Qt、GTK+、WxWidgets、Fltk 等 GUI 库构建了一个界面,并不能发送和接受信息。增加一对一聊天功能,在这个过程中可以学习通信(socket)。同时支持多人聊天,每增加一个对话就开启了一个线程,这个过程中可以学习多线程编程。提高服务器的性能,让单台服务器同时抗住一万个人聊天,这个时候你可能就需要去优化程序了,就需要关注线程创建、调度的开销,关注通信过程中的缓存。增加群聊功能,让服务器可以给多个用户发送消息,这个时候你对通信的理解将更加深入。最后呢,你可以将多台服务器联合起来,抗住几十万人甚至上百万人聊天。

你可以自己完成这个项目,也可以组队完成,在这个过程中你将会全方位的学习 Linux C/C++ 编程。

总之,初学者要让学习过程变得有趣,不要天天研究操作系统、数据结构、算法、内存、线程进程、通信等理论,一定要去实践。

学习路线

上面说了 Linux 服务器开发的前景和学习方式,接下来再说一下学习线路。

1) 语言&工具

C语言和C++是传统的 Linux 开发的语言,需要掌握。除了基本的语法,还要玩转一套工具链。

经典的组合是 GCC(编译器)+ Make/Makefile(构建中大型项目必须的工具)+ GBD(调试器)+ Valgrind(内存分析工具)+ Vim/EMACS/Gedit/Sublime Text(编辑器)。

现在有越来越多的新项目使用 Clang/LLVM 来构建了,例如 Android NDK 已经放弃GCC,全面转向 Clang。

由于 C++ 语法变态,到处都是奇*巧*淫*技,并且没有内存回收机制,所以被最近几年大火的 Golang 完爆了,不少底层项目开始转向 Golang,弃用 C++。嗯,这是好事,作为《C++教程》的作者我已经恶心透了,C++ 这种垃圾语言早就该被替代了。

对于初学者来说,不要贪多嚼不烂,先学好 C/C++ 语言,掌握 GCC 就可以,Clang/LLVM 和 Golang 留着以后再学。

2) 数据结构和算法

学习基本的,了解概念就可以,很多库已经封装好了常用的数据结构和算法,实际开发中你不用从零开始,所以千万不要陷在里面不能自拔,算法是个无底洞,耗死你。记住,以后需要了可以再来回顾,不用一开始就吃透。

3) 操作系统

除了基本的 Linux 操作,还有必要了解一些常用命令;当然,这不是重点,只要你经常使用 Linux 操作系统,慢慢就会了。

内存(虚拟地址空间、内存分配策略)+ 进程线程(进程通信、线程调度、死锁) + 文件系统 + 输入输出 + 中断等才是重点。这些都是理论,要和实践相结合起来。

4) 通信(Socket)

在服务器上做开发,通信是必不可少的,而且是重中之重。除了了解 TCP/IP 协议族,还要学习 socket 编程,将理论和实践集合起来。

ACE、Libevent、Libev 等知名的网络库也要掌握一两个的,毕竟在实际开发中不可能直接调用 Linux API 吧,怎么也得搞个库来提高效率。

5) 界面库

当然,在服务器领域一般不需要界面,但是掌握一个界面库会让你做出一个好玩的软件来,学以致用,提高兴趣。

Linux 下常用的界面库有 Qt、GTK、WxWidgets 等,其中 Qt 是老大。

搞 Linux 开发,操作系统原理和通信是重点,也是最难学的部分,这是你跨进 Linux 开发这扇大门的标志,不学这些即使耍流流氓。

想要在程序员生涯内有更高的成就的话,C/C++就是一个既可以强化思维能力,又可以打好编程基础的编程语言,你想要做软件开发,成为核心程序员的话,学习C/C++的话笔者有一个C/C++的编程千人羣(Q艘索:C语言编程学习聚集地(无言建立))你如果感觉自学C/C++语言有困难的话,有兴趣学习或者了解一下C/C++编程的小伙伴就可以进来交流。

笔者分享的C/C++学习路线图:

相关推荐

什么是Linux的Snap应用?(linux sln 使用方法)

如果你在使用Ubuntu18.04/20.04LTS版本的Ubuntu系统,会发现系统里面多了一个应用格式包——.snap包。Snap包是Ubuntu16.04LTS发...

俄罗斯联邦税务局拨款17亿用于购买搭载俄国产版本Linux的计算机

据cnews网站11月5日报道,俄罗斯联邦税务局已拨款16.9亿卢布用于购买搭载该国国产版Linux操作系统的计算机——这包括AltSP、AstraLinux、RedOS和CentOS。有关部门...

Linux dpkg命令详解(dpkg -l | grep)

一、简介dpkg是基于Debian发行版Linux系统的低级包管理工具,可以手动安装、配置、移除.deb包,与apt命令不同的是,dpkg不会自动处理包之间的依赖关系。二、常用选项...

从 Windows 7 切换到 Linux 的最简单方法

欢迎来到Windows7的最后一天——也就是微软为这个过时的操作系统提供安全更新的最后一天。虽然你有很多升级Windows7的选项,甚至还有可能将更新延长数年的黑客攻击,但如果你不想升级到...

VMware Workstation 17.0 Pro 发布:新增 TPM 2.0 完美兼容Win11

IT之家11月18日消息,VMwareWorkstation17.0Pro现已发布,它带来了许多新特性,例如微软Windows11硬性要求:虚拟可信平台模块(TPM)2.0。...

虚拟机怎么玩?Android MAC Linux 统统拿下

VMWare虚拟机软件是一个"虚拟PC"软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与"多启动"系统相比,VMWare采用了完全不同的概念。多启动系统在一个时...

Linux正式进入4.0时代(linux 4.0)

胡卷卷o2015/04/1311:58今早,LinusTorvalds在Kernel的GitHubmaster中提交了一个改动,Kernel正式进入4时代。该项目代号为“Hurr...

为什么说linux操作系统要比windows稳定?

正常人说windows的时候是指一整套桌面系统,而说linux的时候是一个命令行+内核。后者从原理上就比前者稳定。如果你日常使用的是linux的发行版桌面系统,看到这话估计直接想骂娘。就我12年的ub...

12 款最佳免费开源 Linux 渲染器 | 火狐浏览器 130.0 版本更新

12款最佳免费开源Linux渲染器Linux的一大优势在于其拥有丰富的开源软件,可以满足艺术家、摄影师、动画师和设计师的需求。凭借价格低廉的硬件、免费的软件以及少量的才能和灵感,任何人都可以创...

开源新闻速递:Linux 4.7 内核发布了第二个 RC 版本

今天关注Linux4.7内核发布了第二个RC版本。被很多Linux发行版都作为默认桌面主题的ArcGTK主题发布了相配合的图标主题ArcIcon,不过目前该图标主题还不够完整,缺少...

Linux Kernel最新稳定版4.4.4版本发布

葛雷格·克罗哈曼(GregKroah-Hartman)于今天正式发布了LinuxKernel最新稳定版--4.4.4版本。尽管官方网站并未更新关于该版本的更新日志,但LinuxKernel4....

Escuelas Linux教育系统4.4版本发布

援引外媒SoftPedia报道,基于Ubuntu系统的EscuelasLinux教育操作系统于4月18日正式上线4.4版本,现已开放下载。EscuelasLinux4.4已经重新基于最新发布的的...

Linux Kernel 4.5系列第4个维护版本发布

LinuxKernel开发者GregKroah-Hartman今天宣布最新稳定和最先进的Linux4.5内核分支迎来第4个维护版本。尽管目前没有太多GNU/Linux操作系统适配LinuxKe...

Linux Kernel 4.5 RC6已开放公测:最终版本3月到来

LinuxKernel4.5RC6已于2月28日开放公测,此外LinusTorvalds也宣布最终版本将于3月到来。他表示,4.5版Linux内核的第6个候选发布版本中整合了一个针对网络驱动头...

Linux Kernel 4.5首个候选版本发布

现在长期支持的Linux4.4内核已经结束,接下来内核开发者将研发重心转移至下个重要版本LinuxKernel4.5。就在几分钟前,LinusTorvalds宣布Linux4.5内核系列的首...