V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kmakise
V2EX  ›  C++

想学 C++,以后靠 C++吃饭,但我不清楚该选哪个方向?有推荐的吗?我该怎么样学习 C++?

  •  
  •   Kmakise · 75 天前 · 4487 次点击
    这是一个创建于 75 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人是双非二本的 24 应届生,无实习经历,未来是想要在计算机行业吃饭。我清楚现在工作不好找,但我依然希望能做这行。 我想问问靠 Java 入行计算机,接着转 C++,这规划可行吗? 以及我想学习 C++,但不知如何下手,例如:我不太清楚当前 C++的市场具体情况,也不清楚相应赛道的学习规划,我该怎么办呢? 求解答。

    63 条回复    2024-05-11 13:15:02 +08:00
    blackcat888
        1
    blackcat888  
       75 天前 via Android
    考个研吧
    Sinksky
        2
    Sinksky  
       75 天前
    不同行业虽然都是写 C++,但是区别其实挺大的,更多需要的是行业内的一些知识。所以还是看你打算做什么吧,校招可以靠着会 C++ 拿到敲门砖,但具体学习还是看方向吧,建议先去招聘网站上找些 JD 去了解一下。
    ivvei
        3
    ivvei  
       75 天前
    报个培训班吧,甚至不用真报班,试听就行,会有讲的。
    abcbuzhiming
        4
    abcbuzhiming  
       75 天前
    C++不同领域之间的区别极大,如果你都已经到毕业了,对 C++认知还是这个程度的话,那我强烈的建议你,先找一门 C 系其它语言工作,然后再慢慢的图 C++,否则你这样很难落地
    coderluan
        5
    coderluan  
       75 天前
    和 Java 主要做后端不同,C++的方向其实非常分散,后端,图像处理,音视频编码,高性能计算等等,需求不多,薪资不错,相对更稳定,但是不容易自学,因为这些方向使用 C++只是因为性能好,要学的都是相关领域的工具库算法这些。所以你得想清楚做哪个啊,如果你非得从 Java 入行,那样其实基本上还是做后端,也谈不上转方向。
    tool2d
        6
    tool2d  
       75 天前
    年轻人好学,精力旺盛,可以先入行,再转语言。

    C++出活慢,企业真不一定愿意招新人,慢慢培养。
    Qiane
        7
    Qiane  
       75 天前
    现在要学 Rust
    wusheng0
        8
    wusheng0  
       75 天前 via Android   ❤️ 1
    @Qiane 哥们看看招聘软件岗位再说吧
    masterclock
        9
    masterclock  
       75 天前
    现在还有 Java 转 C++ 的非转行路线吗?
    C++ 在很多行业有应用,但除了语言都叫 C++,区别非常大
    Rooger
        10
    Rooger  
       75 天前   ❤️ 11
    我分别有五年的 C++ 和五年的 Go 的经验,然而几乎所有的 C++ 职位我都不合适, @coderluan 说的非常现实,C++ 的细分领域太多了,现在整个市场感觉就是个饱和状态。虽然职位上写着 C++,其他要求基本上都有熟悉某某优先,压根就不是可选,实际就是个必选项,用人单位一看,没有相关经验,直接就 Pass 掉了。

    现在整个行情都比较糟糕,我建议你先找份工作,找一份有前途的或者是有钱图的,先活下来才是最重要的。有了工作,也不要放松警惕,好好学习。

    工作久了之后,你就会明白,语言只是工具,钱也是只是工具。对工具不要有执念,对钱也一样。
    luoqeng
        11
    luoqeng  
       75 天前
    饭碗少
    nevermoreluo
        12
    nevermoreluo  
       75 天前
    双非二本,Java 入行转 C++感觉路有点难。
    但是如果你心意已决。。。给点想法吧,仅供参考

    尽量找有 C++岗位的公司,但是行业区别很大(影响以后就业的,希望你自己再调研清楚),珍之甚之。
    1. 游戏,找 C#, C++的公司,C#甚至 Lua 进公司,慢慢找机会搞 C++
    2. 嵌入式或者带软硬件科的制造业(靠近公权力机关的制造业,政务大厅叫号系统之类或者马路监控抓拍系统之类) 这类可能会既有 Java (管理平台)+ Cpp (接入硬件)+ 前端
    3. 金融,高频交易还是要 C++的,不过这个不清楚内部是否可以转岗
    Motorola3
        13
    Motorola3  
       75 天前   ❤️ 1
    做外挂然后卖外挂
    slideclick
        14
    slideclick  
       75 天前   ❤️ 1
    @Rooger 不建议新人学 c++
    已经有别的语言饭碗的别学 c++
    c++是落后语言,已经有两代语言替代它了:
    第一代 java
    第二代 golang/rust
    我国从 C 起步,学校里面也传 c++好,造成了一些项目是 c++
    现在除了量化和游戏,图像,其它领域 c++技术上没有必要 c++
    sunny352787
        16
    sunny352787  
       75 天前
    我建议是别学 C++了,你学不明白。你这个问题描述就说明你实际上啥也不知道,不知道听谁说的 C++挣钱多你就想往这方面发展,大概率 C++这碗饭你吃不上。去卷 Java 吧,做个 curd boy 至少饿不死。
    slideclick
        17
    slideclick  
       75 天前
    @chobitssp 来这里都是能翻的
    挺悲哀的,国外大学教编程 c++ 到 java 到 python
    国内大学生还在"" c++挣钱多的"" 错误观念里面
    中美脱钩,两国技术会继续拉大差距
    slideclick
        18
    slideclick  
       75 天前
    @sunny352787 是的,我也面过 java 的说容易被替代所以想 c++
    面试应届生,要她给我背诵虚函数为啥 virtual 我都替大学生悲哀
    我的祖国我的同胞
    archxm
        19
    archxm  
       75 天前
    为啥不从政啊,当个政治家,成为曹操或刘备那样的一代枭雄
    dc2002007
        20
    dc2002007  
       75 天前
    rust 是你唯一的选项
    aa514758835
        21
    aa514758835  
       75 天前
    c++语言和 linux 系统学好后。选择自己喜欢的方向很重要,有音视频,cv ,服务器,ai ,图形学等方向,这些方向如隔山一样,所以要选一个喜欢的
    zsxzy
        22
    zsxzy  
       75 天前
    简单点可以先走 C++ QT 方向, 可能工资不是太高..
    后面再去其他细分领域. cuda , 音视频
    Qiane
        23
    Qiane  
       75 天前
    @wusheng0 也许等到招聘写明了要 Rust 已经晚了,不是吗?
    Qiane
        24
    Qiane  
       75 天前
    @dc2002007 是的,只是可能大部分人还没有意识到,但这又有什么奇怪的呢,所有的事情都是这样,春江水暖鸭先知
    slideclick
        25
    slideclick  
       75 天前
    @chobitssp
    @dc2002007 国外已经用上冲锋枪了,国内的少林弟子想先当剑客然后有机会转刀客
    weeei
        26
    weeei  
       75 天前
    微信 iOS App 端,全是 C++ ,Swift 都没有用。
    littlewing
        27
    littlewing  
       75 天前
    还在纠结语言而不是搞什么方向,我觉得你还是继续 java web 吧
    mightybruce
        28
    mightybruce  
       75 天前   ❤️ 1
    C++ 不适合非科班,如果连数据结构和算法、操作系统编程、软件工程的知识都没学过, 建议还是 java/go/C# 吧。

    C++ 的任何一个领域都不适合你, 上面很多人已经列出了 C++ 领域,我整理一下

    C++ 领域
    计算机图形学,游戏引擎开发( unreal ),游戏服务器开发 (本身是服务器网络编程),
    AI 领域
    非科班不要想了,数学不行算法论文是看不懂的, 只能做调包的,c++ (边缘终端编程、opencv\libpytorch\tensorflow)
    音视频处理
    需要懂编解码 如 hevc\h264\aac 图像和视频封装格式如 mpeg-4 这方面 ffmepg\ librtmp\ live555)
    数据库开发
    需要对操作系统以及并发编程有深入了解
    有 postgresql 二次开发、rocksdb redis 等
    虚拟机开发
    需要对操作系统有深入了解
    qemu\ kvm 的开发
    容器开发
    需要对 linux 内核虚拟化有深入了解。
    HPC 高性能计算
    对 CPU 指令 和 高性能计算的技巧需要了解

    其他的如 GIS 地理信息系统等一堆 由于太过小众,就不列举了。
    littlewing
        29
    littlewing  
       75 天前
    语言只是工具,招聘要求 C++ 的更多只是必要非充分条件,需要相关专业或经验
    greycell
        30
    greycell  
       75 天前
    来这问 c++ 不如去知乎。
    AFOX
        31
    AFOX  
       75 天前
    别学了,看我的帖子吧。想换方向找不到工作
    afeiche
        32
    afeiche  
       75 天前
    现在学 c++感觉有点晚了,学习曲线陡,等你学入门了,说不定很多都迁移到 rust 或者其他语言了
    noahlias
        33
    noahlias  
       75 天前
    c++太危险了 未成年不要学
    ajaxgoldfish
        34
    ajaxgoldfish  
       75 天前 via Android
    觉得 java 卷想找个不卷的而学 c++,如果有这个想法我劝你放弃,因为大概率找不到工作,想玩指针或者硬件无脑入。
    leaflxh
        35
    leaflxh  
       75 天前
    不卷是因为门槛高

    为了不卷去踩门槛高的行业,能不能入行看个人能力和抗风险能力( all in C++找不着工作怎么办)
    smallboy19991231
        36
    smallboy19991231  
       75 天前 via iPhone
    虽然我跟楼主也是一样想 C++方向、不过为了让自己更有全面能力、我建议语言 C++语言只看一本、叫做 C++程序设计原理与实践。这本是 C++之父和 C 语言之父一起写的 C++入门书、主要讲的就是编程技术、各种方面都涉及一点、足够入门 C++。然后就是计算机基础了、深入理解计算机系统,算法,操作系统,和计算机网络或者➕个软件工程。就几乎很全能了。到时候找不到 C++还能用这些来找其他语言的。我本背景跟你差不多、大专刚毕业。
    C++语言真的博大精深、我收藏了很多好书。
    https://www.douban.com/doulist/152337129/?dt_dapp=1
    还有计算机科学的经典好书
    https://www.douban.com/doulist/149619605/?dt_dapp=1
    不过我最近一年的路线是

    C++程序设计原理与实践
    算法第四版
    C 程序设计语言
    深入理解计算机系统
    操作系统导论
    计算机网络自顶向下
    谷歌软件工程
    pingpz
        37
    pingpz  
       75 天前
    就一个二本还想整 C++,能用得上 C++的领域都是有计算要求的,也就是有算法要求,也就是有高数要求。带着这些个要求 HR 不可能给二本一个面试机会。
    不想卷的就把电子电路学一下,把 C 学好,了解一下汇编嵌入式什么的,去深圳找个单片机开发,这个邻域不怎么卷学历。
    Akiya
        38
    Akiya  
       75 天前
    C++是门槛最高的,非科班+非名校而且认知也很有限还是算了
    Roi
        39
    Roi  
       75 天前
    🐎一下,我也思考在看哪个在大城市就业好点。然后转行
    hugebug
        40
    hugebug  
       75 天前
    @wusheng0 机会是留给有准备的人的 等开始火爆招人的时候再学就晚了
    cnbatch
        41
    cnbatch  
       75 天前
    插个楼,刚才有人提到说什么“Java 替代 C++”,纯粹是引战的,看看那个人自己发的主题贴就知道: /t/1021175
    hugebug
        42
    hugebug  
       75 天前
    可以说下为什么要转 c++ 真的是为了不卷去踩高门槛吗
    slideclick
        43
    slideclick  
       75 天前
    @cnbatch 不是引战,美帝都冲锋枪了,不忍心我们的少林弟子想先当剑客然后有机会转刀客
    emSaVya
        44
    emSaVya  
       75 天前
    唉 搜广推提都没人提了。。
    ygtq
        45
    ygtq  
       75 天前
    啥叫双非二本? 我只听过双非一本, 还是建议放弃 cpp
    sinopec
        46
    sinopec  
       75 天前   ❤️ 1
    对于 c++来说,最重要的是行业知识,其次才是编程能力
    zqhkey
        47
    zqhkey  
       75 天前
    语言是工具,不是方向,需要的是先确定方向,再讨论语言,不是说学了某个语言就不会失业,能找到感兴趣,有竞争力,或者被资本看中的行业,短视一点就是找个招聘岗位多的方向和行业才去讨论语言也不迟吧
    shijingshijing
        48
    shijingshijing  
       75 天前
    C++不卷是因为门槛太高,很多人根本没有卷的资本。
    cnbatch
        49
    cnbatch  
       75 天前   ❤️ 2
    @slideclick 类比不合适,看得出对于语言的印象还停留在 C89 、C++98 时代,然后用旧时代的印记忽视新进展再来对比新产品,这就是引战。


    我自己工作就是写 C# 的(就是大家说“写起来优雅、上限可以很高”的那个),但想要精确控制资源释放的话,仍然是 C++更为方便。我是踩过坑的,有部份程序我并不用 C# 来做,而是用 C++ 去做。

    尽管我不是前面楼层那些细分行业,也用不上那些专业知识,但并不妨碍我使用 C++。


    最后 C++还有一个优势,源码级跨平台横跨 Windows 、BSD 、Linux ,只要底层 library 能够在包管理器当中找得到(或者自己编译并不难),那么移植起来非常简单,也不用考虑 runtime 怎么搞,更不用考虑语言是否支持特定硬件平台,只要编译器能够编译就行了。

    我个人就是 BSD 使用者,制作出来的部份程序需要跨 Windows 、BSD 运行(然后顺便编一个 Linux 版本),只有 C 和 C++可以使用内置编译器简单地编译,最起码的我会把编译前置步骤弄得比 Golang 之类的更简单,让小众硬件平台的 BSD 环境也能顺利编译(恰好,那些新语言并不支持小众平台的 BSD 环境)。
    nyxsonsleep
        50
    nyxsonsleep  
       75 天前
    @emSaVya 搜广推那个学历歧视,硕士以下勿入
    xieren58
        51
    xieren58  
       75 天前
    使用 rust 就行, c++ 看得懂就行...
    zjsxwc
        52
    zjsxwc  
       75 天前
    还不如问问 GPT ,目前有哪些行业需要:高性能、行业专业要求高、最好是新兴行业的工具软件。
    zjsxwc
        53
    zjsxwc  
       75 天前
    @zjsxwc 得到回答是:

    生物医药与基因编辑
    自动驾驶与智能交通
    区块链技术
    云计算与边缘计算
    虚拟现实与增强现实
    人工智能与机器学习
    cnbatch
        54
    cnbatch  
       75 天前
    如果 OP 确实想入行,其实是有相对更“传统”的:金融高频交易

    同样需要对操作系统底层很了解,对于算法、语言本身也要很了解。懂点金融则更好。
    hkdcl
        55
    hkdcl  
       75 天前 via Android
    @slideclick 兄弟,推荐几门有前途的语言
    slideclick
        56
    slideclick  
       74 天前
    @hkdcl 先学 go 或者 java 入门,
    然后根据决定进入的领域选语言,
    底层是 c rust
    游戏是 c++

    ken tomson 和 linus 都狂喷 c++
    dododada
        57
    dododada  
       74 天前   ❤️ 1
    能做的东西挺多的,但是上面很多人说门槛高,只要下功夫就行了。不要说二本,原来的三本同事,做安全逆向的,不但精通 C++,还会 C ,还会汇编,java 什么的没学过但是捣鼓捣鼓就会了。
    不过说靠什么语言赚钱就很扯了,赚大钱当然是靠吹牛皮和拉关系了。
    65sqru
        58
    65sqru  
       74 天前
    我自己也是非 IT 科班出身,机械制造的硕士。
    入行的契机是同学做系里的博士生,给了我一个 C++的小项目,让我自学编程。
    后边论文也是跟他做的,也是 c++。
    最后面试的时候公司对交叉学科交叉学科有需求。
    bojue
        59
    bojue  
       72 天前
    @smallboy19991231 你收藏的我都有,没看过几页
    smallboy19991231
        60
    smallboy19991231  
       72 天前 via iPhone   ❤️ 2
    我有一个收藏很久的关于 C++方向选择的评论如下

    感谢已发送 Reply 26cxytz01 335 天前 ❤️ 13
    本人曾经的 c++老码农,现在已经找不到适合的 c++工作,这里给你一些建议。
    ps:我对适合的定义是:薪资福利、行业前景、工作强度、工作可持续性,公司可靠性,leader 是否和眼缘等综合考虑。

    c++路线:
    1.后端工程(业务、基础设施) -- 现在已经绝迹,只有腾讯、百度老业务在使用。
    其中后端工程曾经是就业面最广泛的,但是后端已经弃用 c++,所以你几乎找不到 c++的后端工程。
    2.计算密集 -- 数据库公司,ai 公司,实现一些 nlp 算法。
    你学历不行,不建议走工程算法方向。也十分的小众。
    3.图形学 -- 游戏引擎,cad ,eda 工业软件,医疗软件
    游戏引擎投入大,国内资本没耐心投入,游戏也是挣快钱行业,国内游戏领域做技术不切实际,不要盯着几个游戏技术大神看,低概率事件。 工业软件受到国外打压,国内目前有政策、资本投入的趋势,但依然小众。打不过就加入,国外工业软件,以及国外工业软件云原生公司(cad 上云,做成 app)。
    4.游戏业务 -- 动视暴雪之类的公司
    游戏业务,国内受到政策打压,而且常态化加班。
    5.音视频 -- 流媒体,音视频云服务公司,直播秀场,在线教育类公司
    音视频于 2021 年之前十分的火爆,原因在于在线教育、秀场直播的火爆,随着政策对相关互联网业务的打压,音视频正回归往常。
    6.网络安全
    商业化公司不了解。
    有极低几率可以进入国家队(不过也是垃圾地方,体制内不适合技术人生存。)
    7.转嵌入式做 c -- 通信厂商华为,中兴
    通信业,使用 c 最多的地方。
    8.存储 -- 对象存储、块存储、分布式存储
    大厂 infra 部门,需求少。
    9.区块链公链 -- 公链投入成本极大,有 c++、golang 、rust 、js 选择。
    需求少,投入大,几乎都在国外。我国全面落后。
    10.数据库内核 -- 有被 go 替代的趋势,极少公司使用 rust ,更多使用 go 替代。
    行业小,不挣钱。如果遇到阿里系,不光不争气,还会 996.
    11.操作系统 -- 记得 v 站有个操作系统公司招人,嗯,就这么一个公司。
    12.转 c 做内核网络层 -- dpdk 这类的,做的人不算多,也不算少。
    13.软件定义汽车 -- 自动驾驶、新能源,资本涌入,卷。
    13.转 go(做基建、做业务),闭着眼睛转。遇到有水平的伯乐,是不会在乎你会不会 go 的,因为你会 c++。

    c++是有许多的分支路线的,多数分支路线要么很小众,要么被被政策打压,要么被国外垄断,要么投入产出比低。少数分支(转 c 语言),偏通信,发展比较稳健。

    分支和分支直接相互关联不大,图形学和游戏引擎一类,音视频一类,存储、infra 、数据库、公链一类,通信一类,网络安全一类、nlp 一类,业务一类(除了游戏逻辑,其他已经绝迹)。

    综上所述,如果你要走 c++路线,建议下面几条路:
    1.存储、infra 、数据库、公链
    存储很卷(互联网中大厂)
    infra(很卷,互联网中大厂)
    数据库(可能很卷,因为有阿里人)
    公链(不卷,机会十分少)

    以上的方向有些许关联,可以互相转。
    2.图形学、工业软件 -- 不倦,小众,钱少
    3.网络安全 -- 需求较多
    4.自动驾驶、新能源 -- 目前资本涌入,需求量大。新能源也符合国际形势:碳中和。


    java 路线:
    1.大数据
    2.许多的业务 - 电商,物流,云计算,币圈等等等诸多业务

    java 选择太多了,就第二点,全是业务,够你选择了。需求十分的多,人也很多,钱比 c++多。题外话:高级语言的目的就是为了不让程序员关系内存,一个 java 却卷到了面试要关心 jvm 内存调优。

    个人愚见,不一定正确。鱼与熊掌,不可兼得。结合自己的情况,做选择吧。
    sanbuks
        61
    sanbuks  
       68 天前
    介于 op 的情况先试一下 Qt ,入了行再考虑转方向
    bugmaker233
        62
    bugmaker233  
       61 天前
    24 届今年就毕业了,想在计算机行业吃饭,但是感觉你还没入门.....
    xuelang
        63
    xuelang  
       10 天前
    从找工作角度,不如学 Java 或者 go ,你看大厂里 c++岗位很少的。

    不过我平常用 c++写业务,也整理了些博客,自荐下 https://selfboot.cn/tags/c/

    想学的话,可以一起交流。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2573 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:49 · PVG 22:49 · LAX 07:49 · JFK 10:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.