
C++
概括而言,C++后端技术栈需学好五个方面。关键之处在于:了解操作系统原理是学好C++语言的关键。
小提示:不少人挑选经典计算机图书时,一开始就选大部头的经典之作。有些书虽极为经典,可能否坚持读完是个问题,读完能否消化吸收为自己的知识体系也是个问题。因此,建议优先挑选那些理论和实践相结合、能快速用于C++工程实践的图书。不管做什么开发,我个人认为,C语言是所有想成为高手者最该熟悉的语言。这本书是C语言经典教材,也是我考研时用过的教材。

计算机
如今出去从事C++开发工作,C++11是基本要求,要学习C++11/14/17。若想学好C++,就必须学习操作系统原理。学习该原理不一定要读遍所有相关书籍,但要把进程、线程、内存模式等基础概念弄明白,不然遇到复杂些的C++程序就会不知所措。在此推荐TaneNBAum.A.S的现代操作系统。C++开发者需要弄清楚从.cpp文件到可执行程序要经历哪些阶段,每个阶段的任务是什么,可执行文件包含哪些内容,以及可执行文件怎样被装载到进程地址空间从而成为可执行进程等问题。强烈推荐俞甲子的程序员的自我修养:链接、装载与库。这本书涵盖Windows和linux两个操作系统平台,借助多种辅助工具深入剖析程序从源码到二进制文件,再到装载进进程地址空间各个环节的细节,就连进程地址空间中的堆结构、栈结构也解析得明明白白。它还对C Runtime(CRT)、glibc这类操作系统接口库的原理与执行逻辑进行了分析,是一本能真正助力实践操作系统原理的好书。搞C++开发,不看这本书,即便学遍C++知识也是白搭。
一个C++程序员若不懂汇编,就不算真正的C++程序员。因为不懂汇编的话,就很难理解C++的函数调用方式、栈结构,在写switch - case语句时,也难以明白怎样布局case分支效率才高之类的问题。要是你能熟练掌握汇编,就会比别人多出许多优势。你能够深入了解自己所写的每一行C/C++代码背后机器指令的效率,这对安全工程或者自身技术提升都很有好处。在此推荐王爽老师的汇编语言(第3版),这本书不厚,语言浅显易懂,无需刻意记忆,差不多像看小说一样很快就能读完。还有一本汇编实战类图书——老码识途:从机器码到框架的系统观逆向修炼之路,我特别喜欢这本书。上学时看到它我欣喜不已,在宿舍花了两周时间就读完了。这本书在网络的评分为9.1分。
其中一位读者的书评,让我感同身受。如今,C++自带的STL库对操作系统功能的封装愈发完善,可进行C++开发时,若不熟悉常见操作系统的API函数是不行的。上学时,我C++语言学得挺好,但要实现自己想要的功能却很费劲。就像做五子棋项目时,不知如何在棋盘上画方格;做网盘项目时,也不懂怎样高效利用多线程分割和组装文件。看他人开源项目时我才发觉,让我为难的不是C++语言,而是各种陌生的操作系统API及其参数。要做好C++开发,就得熟悉操作系统平台的常用API函数,像操作文件、内存、进程线程、线程同步(互斥体、条件变量、信号量)以及管道等的各类API接口函数。这并不是要求把每个接口函数的签名都背下来,而是要清楚何时使用哪个接口、怎样使用以及有哪些注意事项。我刚开始接触linux系统时,看的是Robert Love写的linux系统编程。这本书对linux系统中常用的API函数及其原理做了介绍。Robert Love是Google的工程师,同时也是linux内核设计与实现这本书的作者。
对于Windows操作系统,我向大家推荐Windows程序设计这本书。不过要注意的是,在第六版以后,它不再使用Windows Native API来编写C程序了。Windows操作系统在计算机领域占据着极为重要的地位。许多软件开发者或者计算机爱好者在深入学习Windows相关知识时,都需要一本全面且权威的书籍作为参考,Windows程序设计在这方面是一个不错的选择。在早期版本中,其利用Windows Native API写C程序的方式,让读者能够深入到Windows操作系统的底层,了解程序与系统交互的机制。然而随着版本的更新,到了第六版之后有了一些转变。这种转变虽然改变了编写方式,但也可能是为了适应新的技术发展趋势、开发需求或者是为了提高代码的可维护性、可读性等多方面的考量。对于那些想要深入研究Windows操作系统编程的人来说,即便有这样的转变,Windows程序设计仍然具有很高的参考价值。它可能在新的版本中引入了新的编程理念、方法或者框架,这些内容有助于读者跟上Windows编程技术的发展步伐。无论是构建图形用户界面应用程序,还是处理系统级别的任务,如文件管理、进程管理等,书中的知识都能够提供一定的指导意义。而且,通过研究这本书的内容演变,也可以从侧面了解到Windows操作系统在不同阶段的发展重点和技术走向。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号