自学点什么可以赚钱c++如何赚钱?

首先,不要慌,不只是你,很多刚开始学 C++ 的同学都是这个感觉。我在刚上大一的时候也是深受困扰。对于零基础想要学学 C++ 的同学,我希望你们要先明白一件事:C++ 是一门极难掌握的编程语言,内容多且杂且难懂。所以如果你想要想要学好 C++,你要花很多的时间和精力。当然这件事我也想告诉你:如果你在刚开始学或者学了很短的一段时间,发现自己学不会,默默告诉自己“这不是我的原因,是 C++ 的原因,都赖它太难”。我不希望同学们还没入门就放弃。C++ 较底层,语法非常的灵活,这就造成了它的语法规则比较的繁杂,这里面包含了 C 语言的内容,相比较于 Python、Java 等同等的高级语言,学习 C++ 的时间成本更大。C++ 是和 C 语言完全不同的编程语言,但是在基础语句和语法上,C++ 和 C 很像,我认为 C++ 可以看成是 C 语言的延展:C ++ 就是一个加了面向对象特性的 C 语言。如果你有 C 语言基础的话,学习 C++ 会快一些,有余力可以先学 C 语言的同学,可以看我下面这篇文章:当然没有 C 语言,直接学 C++ 也是没问题的。C++的上限非常高,但是分阶段性逐步学习是没有问题的,一步步的学,慢慢领悟,总有一天会熟练掌握的。C++ 语言的学习其实就三个阶段就好了:(1) 入门阶段这个阶段的学习主要是熟悉 C++ 语言的语法知识。在这个阶段要做到理解对象的思想方法,培养自己的编程思维能力。目标是可以开发一些像贪吃蛇这种简单的控制台小程序。(2) 进阶阶段进阶阶段的学习主要是要掌握 C++ 标准模板库(STL)、设计模式、数据结构基础以及 UI 界面开发、数据库开发等高级技能。在这个阶段是要达到可以开发复杂的程序,达到工作中 C++ 开发程序员的能力。(3) 应用阶段这个是实战阶段,要具备一定的综合性应用软件开发能力。这个阶段就是多观摩别人的项目,看人家的写法,模仿项目,学习其中的思想,一点点的积累,一步步形成自己的东西,厚积而薄发,慢慢你就会发现你也可以了。一、入门阶段入门阶段的学习主要是熟悉 C++ 语言的语法知识。题主现在就是处在这个阶段。除了基础的变量、常量、关键字、数据类型、运算符、数组、函数、指针、结构体外,还要学习 C++ 的面向对象编程思想、命名空间 namespace、引用、函数扩展、类的封装、构造和析构、继承、多态、异常处理等内容。语言部分的学习建议不要拖太久,一定要规划好时间,一鼓作气,不然自己容易泄气!1.视频推荐此时同学们应该是毫无基础或者稍微有点 C 语言基础的小白。对于小白来说,不建议上来就看书,因为干看看不懂,容易劝退。可以先从视频教程开始,教材为辅。我当初 C++ 视频是在 b 站看的黑马程序员的 C++ 课程(我不是他们的托儿从 0 到 1 教 C++,三百多个小节,每个小节时间都不是很长,除了个别几个在二十多分钟,其余的基本上都在几分钟到十几分钟之间。每一个阶段都会有相应的小项目教学,对初学者来说是很友好的。看视频的时候不是看看就过去了,编程毕竟是门一门手艺活,孰能生巧。建议一边看,一边将视频中的示例或者小项目教学自己也实现一下,刚开始不会可以照着敲,比只看不动手强一百倍。2.书籍推荐入门阶段的书籍为辅,怎么为辅呢?就是视频看完一个阶段,然后就可以去看书上对应阶段的内容,这样看书,一方面看书的时候会很快,容易理解,另一方面可以印证自己在看视频的时候一些不太理解的地方。入门阶段推荐两本书,一本薄的,一本厚的,都是超级经典的书籍。《Essential C++》《Essential C++》是一本内容不多但很实用的 C++ 入门书籍,这本书强调的是快速上手与理解 C++ 编程。主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解。你不只学到 C++ 的函数和结构,也会学习到它们的设计目的和基本原理。《C++ Primer》很多人 C++ 入门的时候会推荐《C++ Primer Plus》,但是我更强烈推荐的是这本《C++ Primer》!这两本书我都看过,很有发言权,当时我学习的时候《C++ Primer》还是第 4 版,现在都到第 5 版了!《C++ Primer》堪称 C++ 语法学习的最权威书籍,非常全面地讲解了C++的语法以及C++11的各种新特性,看完之后真的帮助特别大!如果有时间建议至少看两遍以上!时面向 C++ 语言的初学者,是一本很友好的自学教材!而且例程和习题丰富,相信认真读过之后,可以完成 C++ 语言入门这个目标!!书籍地址:二、进阶阶段在进阶阶段,你已经对 C++ 有一定的认知了。这个时候我们可以深入学习 C++ 标准模板库(STL)、设计模式、数据结构基础以及 UI 界面开发、数据库开发等高级技能。1.书籍推荐《C++标准程序库》关于 STL,可以先读这本侯捷老师翻译的《C++ 标准程序库》。通过这本书对STL有个基本认识,学会使用 STL。《STL源码剖析》读完 《C++ 标准程序库》,就可以来读这本侯捷老师编写的《STL源码剖析》了。这本书建议必读!这本书讲解了 C++ 底层实现,主要包括 C++ 底层内存管理、各种容器的数据结构实现、常见算法的实现等。可以帮助深入理解C++底层,同时也是对数据结构的复习和巩固。《Effective C++》《Effective C++》讲了 C++ 编程的 55 条准则,提高你的 C++ 编程质量,也是侯捷老师翻译的!这本书有助于梳理在编写 C++ 程序时的一些常见错误和注意事项,也是面试常考的。《深度探索C++对象模型》《深度探索C++对象模型》这本书讲解了C++面向对象特性的底层实现机制。侯捷老师翻译的,看完这本书,对C++面向对象的理解帮助极大,建议必读!书籍地址:2.视频推荐不知道大家注意了没,上面我推荐了四本书,都和一个人有关:侯捷老师。书要么是他翻译的,要么是他写的,C++ 领域 YYDS!同意吧?侯捷老师当然也有讲课,针对书都有对应内容的视频课程!怎么样?香吧!原先这些课本来可以在 B 站看的,但是不知道为啥,都下架了,sad。我搜集了一套非常全的侯捷老师的 C++ 视频,有需要的可以去下载保存备用。视频地址:三、应用阶段其实编程语言就是要多练,怎么多练,就是代码量。自己多写,然后多观摩别人的项目,看人家的写法,模仿项目,学习其中的思想,一点点的积累,一步步形成自己的东西,厚积而薄发,慢慢你就会发现你也可以了。我在这里推荐几个非常优秀的 GitHub 上的实战项目。一共推荐 14 个开源项目,7 个入门级,7 个企业级,保证都是值得学习的开源项目!入门级1.TinyWebServer(3.6k+ star)Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.使用 线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor和模拟Proactor均实现) 的并发模型使用状态机解析HTTP请求报文,支持解析GET和POST请求访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件实现同步/异步日志系统,记录服务器运行状态经Webbench压力测试可以实现上万的并发连接数据交换传送门:GitHub - qinguoyi/TinyWebServer: Linux下C++轻量级Web服务器要想看懂顶尖开源代码,计算机经典书籍必须经常读起来。不仅能提升大家的技能能力和技术认知,更能在阅读真正经典的代码之际发挥巨大作用,我整理好了,大家自取。2.libqalculate(545 star)使用 C++ 编写的多功能计算器桌面应用、库和 CLI 程序。它易于使用功能强大,支持大型可定制函数库、单位计算和转换、符号计算(包括积分和方程)。作为用户你可以直接在命令行中使用,作为开发者你也可以在自己的项目中使用这个库。官方还制作了Qt和GTK两个版本的 GUI 计算器应用。3.spdlog(12.7k+)快速、上手简单的 C++ 日志库。示例代码:#include "spdlog/spdlog.h"
int main()
{
spdlog::info("Welcome to spdlog!");
spdlog::error("Some error message with arg: {}", 1);
spdlog::warn("Easy padding in numbers like {:08d}", 12);
spdlog::critical("Support for int: {0:d};
hex: {0:x};
oct: {0:o}; bin: {0:b}", 42);
spdlog::info("Support for floats {:03.2f}", 1.23456);
spdlog::info("Positional args are {1} {0}..", "too", "supported");
spdlog::info("{:<30}", "left aligned");
spdlog::set_level(spdlog::level::debug); // Set global log level to debug
spdlog::debug("This message should be displayed..");
// change log pattern
spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v");
// Compile time log levels
// define SPDLOG_ACTIVE_LEVEL to desired level
SPDLOG_TRACE("Some trace message with param {}", 42);
SPDLOG_DEBUG("Some debug message");
}4.CPlusPlusThings(15.4k+star)这是一个适合 C++ 初学者从入门到进阶的教程。解决了面试者想要深入 C++ 及如何入坑 C++ 的问题。除此之外,该仓库拓展了更加深入的语法分析、多线程并发等的知识,是一个比较全面的 C++ 从入门学习到进阶提升的项目。5.indicators(1.7k+star)一个使用 C++ 编写的进度条库,你可以用它在命令行中实现美观的进度条。它使用方便、线程安全、支持多种进度条样式。6.sudoku(299 star)C++ 实现的命令行数独游戏。600 余行代码,初学者也可以轻松学习。7.dbg-macro(1.7k+)打日志是 C++ 开发中必不可少的一种 debug 方式,dbg-macro 受 rust-lang 中 的 dbg 启发,提供比 printf 和 std::cout 更好的宏函数。主要有如下特点:美观的彩色输出(当输出不是交互式终端时,颜色将自动禁用)兼容 C++11,并且是 header-only支持基础类型和 STL 容器类型的输出除了基本信息外,还输出变量名和类型启用 DBGMACRODISABLE 生成 release 版#include <vector>
#include <dbg.h>
// You can use "dbg(..)" in expressions:
int factorial(int n) {
if (dbg(n <= 1)) {
return dbg(1);
} else {
return dbg(n * factorial(n - 1));
}
}
int main() {
std::string message = "hello";
dbg(message);
// [example.cpp:15 (main)] message = "hello" (std::string)
const int a = 2;
const int b = dbg(3 * a) + 1;
// [example.cpp:18 (main)] 3 * a = 6 (int)
std::vector<int> numbers{b, 13, 42};
dbg(numbers);
// [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector<int>)
dbg("this line is executed");
// [example.cpp:23 (main)] this line is executed
factorial(4);
return 0;
}企业级1.rocksdb(21.1k+ star)该项目是由 Fackbook 数据库团队基于 levelDB 开发,用 C++ 编写的高性能键值存储引擎。键值均支持二进制流,能够充分利用多核 CPU 获得高性能,并兼容 levelDB 的 API 可谓是青出于蓝而胜于蓝。RocksDB 当下十分流行,一些开源数据库底层存储用的就是它。传送门:https://github.com/facebook/rocksdb要想看懂顶尖开源代码,计算机经典书籍必须经常读起来。不仅能提升大家的技能能力和技术认知,更能在阅读真正经典的代码之际发挥巨大作用,我整理好了,大家自取。2.winmerge(2.2k+ star)一个用 C++ 编写的 Windows 比较和合并工具。它可以比较文件和文件夹,以直观的可视化格式来显示两者甚至三者之间的差异,操作简单。传送门:GitHub - WinMerge/winmerge: WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and handle.3.workflow(6.1k+ star)搜狗开源的 C++ 服务器引擎。支撑搜狗几乎所有后端 C++ 在线服务:所有搜索服务云输入法广告....每日处理超百亿请求。这是一个设计轻盈优雅的企业级程序引擎,可以满足大多数 C++ 后端开发需求。传送门:https://github.com/sogou/workflow4.srpc(825 star)搜狗基于 C++ Workflow 的高性能 RPC 框架。与 thrift/brpc 协议兼容,支持 protobuf/thrift IDL一键迁移,核心代码量仅 1w 行。传送门:GitHub - sogou/srpc: RPC based on C++ Workflow. Supports Baidu bRPC, Tencent tRPC, thrift protocols.5.nvui(1.2k+ star)跨平台现代的 Neovim 前端。它使用起来流畅,动画效果细腻、美观,你可以用 Neovim 和 nvui 自由定制出一个高颜值、最懂你的编辑器。传送门:https://github.com/rohit-px2/nvui6.filament(12.1k+ star)filament 是轻量级实时物理渲染引擎。能够用来做游戏渲染引擎或者音视频编辑工程,当你需要处理 3D 渲染效果,又不想引入庞大的游戏引擎时,可以考虑使用它尤其是 Android 平台。传送门:GitHub - google/filament: Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL27.hplayer(451 star)一个基于 C++ 实现的多画面播放器。能播放文件源、网络源、设备捕获源,界面为多画面监控网格,可自由切换多画面风格,支持拖拽与合并。适合想要入门音视频、播放器开发的小伙伴们学习,该项目用到的技术栈:Qt 实现界面FFmpeg 获取帧、编解码、转码OpenCV 处理图片OpenGL 渲染视频帧传送门:https://github.com/ithewei/hpla希望对你有所帮助其实说实话,本科的同学 C++ 水平真是天差地別的。你能学到什么程度,就看你的努力程度了。最后再送给学习 C++ 的同学一段浙大翁凯老师讲课说的话:学 C++ (计算机)一定要有一个非常强大的心理状态。为什么呢?C++ (计算机)的所有东西都是人做出来的,别人能想出来的我也一定想得出来,在 C++(计算机)里头没有任何黑魔法,所有的东西只不过是我现在不知道而已。总有一天我会把它里面的细节搞明白的!大家加油!码字不易,如果觉得不错,记得帮我 @Rocky0429 点赞呀。}
本人2000年开始学习程序设计,2002年开始学习C++,现在使用C++从事开发靠底层的高性能数值计算应用程序,从vc6到.net03再到vs05,也写了不少行了,虽然大家的开发方向可能与我相距较远,但我还是想把这些年来写代码的心得和如何入门告诉大家,如果您是高手,全当娱乐一笑,如果您还未入门,希望这篇文章能对您有所帮助。 我是在信息工程学院读的大学,现在叫北信科大了吧,实际上,想靠学校上课老师教就学会一门语言,是不可能的。总看到有人问学C++要先学C么的问题,个人理解,标准C89和14882C++是比较不同的两种语言,由于C没有泛型库,想写程序,一定要学好数据结构。C++则不然,除了要求掌握红黑树外,其他如链表等数据结构并不需要会实现,取而代之的是要求熟练掌握迭代器的运用。中心意思:如果你确立要学C++,不必先看C。下面还有一些问题,是我经常看到的,在这里回答一下。 问:我想学C++,要有计算机基础么? 答:基本不需要,如果您很踏实,甚至可以在身边没有电脑的情况下,先用本子练习写小段程序,当您写了一个本子的时候,再去上机编译,事半功倍。 问:学习C++,要有英文基础么? 答:如果只看书,不需要。如果上机很多,又去看msdn,则需要至少cet4的水平。 问:学习C++,要有数学基础么? 答:虽然C++本身不需要,但所学的范例较多是数学问题,大概要高中毕业的水平。 问:学C++,是自学还是去什么班好? 答:无论从哪方面来讲,都是自学好。看书学的话,至少是作者一级的人在教你,然自学即苦闷又吃力,恰逢C++十分庞大,坚持下来者恐怕不多。 问:学C++,得多长时间才能学会?所谓学会了又是什么水平? 答:至少5年。“纯”的C++语言已十分庞大,再加上环境提供厂商的类库以及各种多如牛毛的小变动,掌握已属不易,所谓5年的学会,应已可编写小规模代码,但若想解决自己使用电脑中实际所碰到的问题(例如:导出媒体播放器播放列表内的媒体文件到指定文件夹),仍然不够。 问:怎样自学? 答:最开始先集中看一阵,然后写一阵代码以便熟练所学,再看接下来的一部分。如果看不懂,反复研读,如10遍仍不会,跳过看后面的。最好用实体书学习。不要指望在一本书上学会C++。在小有成就后,可放松学习进度,不少思想是要假以时日的。 问:学C++,要看哪些书? 答:入门书这三本是必须入手并且要一起用的:C++ Primer第六版,潘爱民 张丽 译,中国电力出版社,此书作教材。C++标准程序库,侯捷 孟岩 译,华中科技大学出版社,此书是对C++ Primer的补充,讲解标准库部分。这两本书来说,“C++标准程序库”比较容易看懂,“C++ Primer第三版”则稍难。第三本书:C语言大全 第四版,赫伯特·希尔特 著,王子恢等 译,电子工业出版社,此书提供常用函数,如求平方根的sqrt(),但若用vs05编译环境的话还要看联机手册(它的crt库改写了较多接口)。不作推荐的书:Essential C++,侯捷 译,此书号称“轻薄短小,适合初学者”,但其实进度过快,比较晦涩,初学C++,用此书看不过100页。C++程序设计教程 钱能 主编,此书为国内C++大学教科书权威,但至少从我手中的版本(02年10月版)来看,已与14882标准有较大出入,并且有些吹捧面向对象思想的意味,会给人不好的暗示。C++程序设计语言 特别版,裘宗燕 译,此书不适合初学者,有几年C++经验再来反查此书,或有较大帮助。 问:谭浩强的那本“C语言程序设计”我要看么? 答:谭浩强的C为国内经典,我看到有不少学生认为自己能写出比书中例子要好的代码,便看不起此书,实在不该。此书指针那部分的讲解堪称酣畅透彻,浅显易懂。又,对编程感到困难重重而失去信心者可看此书。 问:学C++也有一段时间了,看到别人聊语言,每每仍听不懂,怎么回事? 答:隔行便隔山。人家聊JSP你当然不懂了,这没有什么。人家讲UML、XP你又不懂了,不要紧,一定要明白一个道理,便是:方法是给会者准备的,还不懂win2000框架便要写WinMain(),急功近利,急于求成,迷信速成,都是于己有害的。语言讲究,库讲究,编译器的使用还讲究,哪个看不起都不行。 问:我自学了一段时间,卡住了,怎么办? 答:不会的,C++是如此庞大,以至于你不会遇到什么东西卡住而绕不开。 其实,学习知识,各人有各自的方法,自学一路颇艰险,非大毅力者不能成。最后祝大家工作顺利,生活愉快。}
附:近期高赞回答Linux的功能有多强大?学习Linux有没有比《鸟哥的Linux私房菜》更好的书?有没有学习Linux比较好的入门书籍?我相信很多人接触编程都是源于大学期间的那堂C++语言程序编程,但是这门课却只告诉了你编程语言是什么,却没告诉你要怎么去熟练掌握编程。所以,不可避免的是许多人在毕业前夕才发现虽然学会了C++,但是好像却不知道能干什么,能找什么样的工作,能去什么样的公司。所以呢本文就从C++的角度出发,谈谈我对C++这门语言的理解。咱这回不去谈什么复杂的应用场景,也不去聊语言底层的优化特性,就说说在大学里学了C++出来到底能干啥。当然了,由于C语言跟C++亲密的关系,咱就混淆一并讲了,道理是差不多的。1 实验室开发不敢说C++是世界上最好的语言,但敢说C++绝对是工科生中的第一大语言。暂且不说计算机专业,很多工科专业,比如电信、电气、通信等专业,基本上正常的学习中都会使用到C++。甚至是我像我这个学生医的,本科硕士几年基本都是在写C++,最后校招也是靠C++拿到的大厂offer。可以说,我对C++还是有很深的感情的。都说C++兼具面向过程以及面向对象的特性,既拥有比较优秀的运行速度,又有良好的大型项目开发能力,那简直可以制霸高校实验室了。当然我们知道,另外一门同样在高校实验室里与C++不相上下的语言,就是Matlab了。像我研究生期间就是左手Matlab试探,右手C++优化。论文专利什么的就靠这两种语言双管齐下。还记得在实验室里,基本所有的算法都是用C/C++写的,包括各种图像处理、信号处理以及数据分析的算法。最开始就学C++的基本都是老理工男了。就算指针再怎么难理解,虚函数表再怎么无情,也磨不灭我们这些工科生对编程的热情。2 后端开发不过等到真正要找工作的时候,就不是那么回事了。听说现在由于算法岗已经是诸神黄昏了,导致一大批人冲向了后端开发。而主流的后端开发语言就那么几种,以Java、C++领衔,Python和Go紧跟其后。作为写了这么多年的老C++ coder了,哪能不去凑个热闹。所以呀,学了C++之后,第一选择当然就是去面试后台开发的岗位啦。只不过我们都常说一句话,语言都不是最重要的。那对于学了C++想找后端开发的同学而言,什么最重要呢?其实软件开发工程需要掌握的技能不外乎那么几点,各种经验分享和面经都已经说烂了。但是那些只是大的方向,具体涉及到的概念和技术点非常多,在这里也没办法全部罗列。总的来说,想通过C++找一份合适的后端开发工作,我建议可以从以下几个方面来提升自己:一是扎实的编程基础。这个基础扎实首先意味着你比较熟悉C++这门语言了,知道不同版本的语言特性(比如C++11以及新出的C++20的区别),对常见的语言机制(比如多态、虚函数表、模板等)的底层有自己理解。虽然说不看重你用什么语言,但是最起码你得比较熟练的使用一门语言吧。怎么才算熟练呢,大概C++底层机制、多线程编程、跨平台编程这些你都需要有所了解吧。除此之外,编程能力的素养还体现在算法思想和数据结构的理解上。毕竟程序的基础就是算法和数据结构嘛。所以一些基本的数据结构,比如链表、数组、二叉树、队列之类的,还有一些基本的算法思想,比如贪心、分治、动态规划等都最好需要好好掌握一下。二是系统的理论知识。这个就是科班与非科班比较明显的差距所在了。很多非科班的同学其实编程能力很强,但是由于没有接受过系统的理论学习,所以在理论学习上会比较吃亏。而后端开发涉及的东西比较多,从网络到性能再到架构,都需要系统的计算机理论来支撑的。所以如果连计算机网络、操作系统、计算机组成原理、编译原理这些书都没见过的同学,需要赶紧买几本回来压压惊了。三是后端基础。想去做后端开发,起码得知道后端是什么吧。这就意味着你得知道一些基本的软件工程、软件架构、设计模式等知识。同时,搞个后端哪能不懂数据库呢,那你不得再学些诸如MySQL、Redis等数据库的基本操作吗?当然到这,可能也就算是个入门水平。真正上手后端开发的时候,像微服务、中间件(Kafka/Zookeeper/Hadoop等)等相关概念与技术的学习不也得提上日程了嘛。当然对于校招生来说,由于的确是缺少大型的上线项目经验,所以对后端基础的要求不会太高,更多的是看编程能力和计算机理论基础。不过倘若是已经工作想转行的同学来说,后端基础还是会比较看重的。这三点是在我看来目前互联网公司比较看重的地方,大家可以对照着反思自己是否具备这样的能力了。如果还没有,可以抓紧时间好好准备准备。3 客户端开发毕竟C++``已经是一个很成熟的语言了,所以除了后端开发其实它还有很多其它的开发岗位可以选择。自然而然的,就是客户端开发了。相信大多数学C++的同学都用过C++写桌面软件吧。那时候估计还是用MFC,照着代码书上敲一遍就能写一个比较简单的界面了。所以如果不想做后端,完全可以靠C++找一份客户端开发的工作。只不过,客户端也并不容易呀。做客户端同样也需要扎实的编程基础和计算机理论基础,同时可能还要熟悉Windows/C++编译链接机制、QT客户端开发技术体系、Windows消息机制等技术。所以,假如你学的是C++,同时也不在乎业内莫名其名的岗位歧视链的话,找一个客户端开发的工作也是非常不错的。只不过相较于后端开发,你可能需要重新审视客户端这个角色。在我看来,客户端与后端在职业发展上的区别主要有以下几点:一、技术天花板这就是岗位歧视链中最经常拿来讨论的一个点。普遍认为客户端的天花板较低,长期在市场上的竞争力不高。甚至还有人拿CTO基本全是后端开发出身的例子来验证这个歧视链。怎么说呢,我觉得对于大多数人来说,客户端的天花板的确比后端要低。因为客户端是一个两级分化比较严重的技术,厉害的人天花板可以突破天际,而一般的人真的就很一般。而后端相较之下,的确职业高度的分布稍微均匀一些。但是,当客户端开发达到一定深度后,难度绝对不比后端开发难度低。反而有时候为了获得更好的端上体验以及更快的用户响应,涉及到的技术会更加底层,更加硬核。记住一点,客户端开发绝不是改改UI,改改文案这么简单。所以我特别不喜欢这种歧视链,从非常片面的角度去论证某个职业或者技术的好与坏,甚至还上升到歧视的层面。我比较认同的是兴趣爱好论,而不是这种天花板论。二、发展方向客户端客户端,很显然是面向用户的。这就意味着客户端的开发是直接接触到用户,这也是与后端开发最主要的区别。说简单一点,客户端开发就是为用户服务,优化用户体验,让产品变得更好用。所以客户端有一个天然的优势,就是离用户很近,知道用户想要的是什么。问问自己,你觉得自己干技术能干几年,写代码还能写到多少岁。身体熬得住吗,头发还剩多少?干技术这行,还是需要天赋和意识的,特别是真正顶尖的技术大牛。不是所有人能够在技术这条道上一直走下去。那走不下去怎么办?转型。所以客户端的发展从来都不只是技术,而是业务技术两手抓,当然会有所侧重。业务能力意味着产品思维,放大点说就是互联网思维。这就是客户端的一大优势。三、就业选择这的确是目前客户端发展的一个痛点。放开到二三四线城市,后端的需求的确要比客户端要大。因为在小公司里,往往不需要那么复杂的客户端支撑。很多时候都是把后端开发程序员当作全栈来用。很多人都会考虑说,假如干了客户端,之后跳回老家就找不到合适的公司了。虽然这的确很有可能,但也没这么夸张。只要你的基础扎实,并且善于学习,其实到哪儿都能找到差不多的工作的。不过在一线城市,后端和客户端并没有明显的差别,互联网大厂对这两种岗位的需求都是很大的。4 音视频开发/多媒体开发我们知道现在基本各个大平台都在做短视频,同时也不断接入各种直播模式。在这个趋势中,对于音视频/多媒体方向的开发需求越来越广。比较成熟的互联网大厂通常会把音视频/多媒体技术方向独立出来,作为为全公司所有产品线提供中台的支撑。然后相关的处理算法会封装成SDK给各个业务中调用。这说明音视频/多媒体开发是很重要的一份工作,而在对音视频或流媒体进行处理的时候,算法效率就是很重要的评价标准。这不就是C++所擅长的场景嘛。所以呢,学了C++还可以选择去做音视频开发的方向。这个方向更偏向于具体的场景,比如播放器,比如直播平台,比如音视频特效等。当然了,C++更多的还是偏算法实现的方向,许多多媒体开发本身还是立足于平台,比如基于Android、iOS或者Windows,来进行满足平台特性的开发。不过想要找这个方向的岗位,基本的音视频开发的理论知识得掌握吧。这里同样也包括了很多理论层面的知识,比如图像、音频、视频的采集、渲染、处理、传输等方面的问题,图像和音视频的加工、裁剪、编解码等处理。一些基本的处理库,用于图像处理的像OpenGL、OpenCV等,用于视频编解码的x264、OpenH264、ffmpeg,用于音视频处理的speexdsp、libfaac、opus等库不也得熟悉熟悉吧。还有音视频传输的协议、直播推/拉流的协议,如RTMP、RTSP等也可以掌握掌握。哈哈不要被吓到,毕竟会C++只是基本的编程能力,但是具体的岗位肯定有业务能力上的要求。5 游戏开发游戏开发也是C++的可以进军领域之一,像很多游戏引擎都是基于C++开发的。只不过游戏开发真的需要兴趣和热情。如果不是因为喜欢游戏,建议还是不要选择游戏开发的岗位。不是说游戏开发前景不好,而是说这件事如果没有足够的热情很难走得很远,并且因为方向不是很大众,到时候想换方向了,可选择性就不是很多。国内比较出名的游戏厂商就那么几家,但是投递的人却很多。这也导致这个行业的竞争很大,所以在招聘的时候会更看中你的游戏开发经历。如果是校招生,很少会有比较多的游戏开发经验,但是可以通过许多途径去弥补这一缺陷,比如参加游戏开发比赛,比如自己开发demo。起码也得了解过或者用过一些游戏引擎,这样简历也会更加饱满一点。对于游戏开发的业务能力要求刚刚也提到过一点,大概包括游戏引擎的使用和了解,比如常见的Cocosa2d、Unity3D等,游戏引擎的实现原理和机制,还有面试时候基本都会问到的计算机图形学理论。计算图形学是游戏开发领域及其重要的理论基础,毕竟游戏离不开各种图像模型的渲染和处理。所以呢,如果你在大学期间有基础过一些图像学的工作,比如一些模型绘制、三维渲染的工作就可以去尝试一下游戏开发的岗位。我之前有个师兄在研究生阶段是做医学图像处理的,主要的工作就是对人体脏器和血管进行三维显示的,然后就去做了游戏开发。美滋滋。6 嵌入式开发上面几种岗位选择都是偏软件方向想的,而C/C++还有一类非常大的就业方向,就是去做嵌入式。嵌入式本身可能是偏硬件一点,但是现在做个什么事,都是软硬不分家的。嵌入式的开发同样也会涉及到网络编程、并发编程等方面。通俗点解释可能就是,嵌入式代码是运行在别的小系统上,而不是传统意义的计算机上。所以嵌入式开发更适合原来专业是电信、微电子之类的专业,毕竟这个方向除了需要编程能力,还需要基本的电路理论素养。一般招聘嵌入式开发岗的公司大多是以硬件产品为主的互联网+公司,比如小米、华为等。进去公司很多都是在做物联网相关的工作,毕竟这是热点。当然也会有其它的业务方向,例如芯片、机器人等。7 总结说了这么多,有没有发现好像只会C++是找不到工作的。不管是哪个岗位,在对C++基础的要求上,还会有额外的东西。这其实很好理解,毕竟C++只是一门语言,只是一个工具。就好比你光有一把弓箭,是没办法射大雕的。你还需要许多额外的能力和知识储备,甚至还需要一点预判的意识,才能够在合适的时机以合适的力度射出那一箭。而C++,只是那支射出的箭罢了。你越熟悉它,箭头便愈发锃亮,破坏力也就越强。并且同时,空中盘旋的也不只有一只大雕,你还需要选择机会最大的那一只。————————————————原链接:学了C++能去找什么样的岗位?_业余码农Amazing10的博客-CSDN博客原作者:业余码农安酱原出处:CSDN另外,想进大厂的同学,一定要好好学算法,这是面试必备的。这里准备了一份 BAT 大佬总结的 LeetCode 刷题宝典,很多人靠它们进了大厂。附:近期高赞回答Linux的功能有多强大?学习Linux有没有比《鸟哥的Linux私房菜》更好的书?有没有学习Linux比较好的入门书籍?码字不易,硬核码字更难,希望大家不要吝啬自己的鼓励。我是:@程序员良许欢迎关注我!我的个人网站,满满的都是Linux干货:良许Linux教程网如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力}

我要回帖

更多关于 学什么技术最赚钱 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信