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

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

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

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

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

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

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

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

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

    为了不卷去踩门槛高的行业,能不能入行看个人能力和抗风险能力( all in C++找不着工作怎么办)
    smallboy19991231
        36
    smallboy19991231  
       51 天前 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  
       51 天前
    就一个二本还想整 C++,能用得上 C++的领域都是有计算要求的,也就是有算法要求,也就是有高数要求。带着这些个要求 HR 不可能给二本一个面试机会。
    不想卷的就把电子电路学一下,把 C 学好,了解一下汇编嵌入式什么的,去深圳找个单片机开发,这个邻域不怎么卷学历。
    Akiya
        38
    Akiya  
       51 天前
    C++是门槛最高的,非科班+非名校而且认知也很有限还是算了
    Roi
        39
    Roi  
       51 天前
    🐎一下,我也思考在看哪个在大城市就业好点。然后转行
    hugebug
        40
    hugebug  
       51 天前
    @wusheng0 机会是留给有准备的人的 等开始火爆招人的时候再学就晚了
    cnbatch
        41
    cnbatch  
       51 天前
    插个楼,刚才有人提到说什么“Java 替代 C++”,纯粹是引战的,看看那个人自己发的主题贴就知道: /t/1021175
    hugebug
        42
    hugebug  
       51 天前
    可以说下为什么要转 c++ 真的是为了不卷去踩高门槛吗
    slideclick
        43
    slideclick  
       51 天前
    @cnbatch 不是引战,美帝都冲锋枪了,不忍心我们的少林弟子想先当剑客然后有机会转刀客
    emSaVya
        44
    emSaVya  
       51 天前
    唉 搜广推提都没人提了。。
    ygtq
        45
    ygtq  
       51 天前
    啥叫双非二本? 我只听过双非一本, 还是建议放弃 cpp
    sinopec
        46
    sinopec  
       51 天前   ❤️ 1
    对于 c++来说,最重要的是行业知识,其次才是编程能力
    zqhkey
        47
    zqhkey  
       51 天前
    语言是工具,不是方向,需要的是先确定方向,再讨论语言,不是说学了某个语言就不会失业,能找到感兴趣,有竞争力,或者被资本看中的行业,短视一点就是找个招聘岗位多的方向和行业才去讨论语言也不迟吧
    shijingshijing
        48
    shijingshijing  
       51 天前
    C++不卷是因为门槛太高,很多人根本没有卷的资本。
    cnbatch
        49
    cnbatch  
       51 天前   ❤️ 1
    @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  
       51 天前
    @emSaVya 搜广推那个学历歧视,硕士以下勿入
    xieren58
        51
    xieren58  
       51 天前
    使用 rust 就行, c++ 看得懂就行...
    zjsxwc
        52
    zjsxwc  
       51 天前
    还不如问问 GPT ,目前有哪些行业需要:高性能、行业专业要求高、最好是新兴行业的工具软件。
    zjsxwc
        53
    zjsxwc  
       51 天前
    @zjsxwc 得到回答是:

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

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

    ken tomson 和 linus 都狂喷 c++
    dododada
        57
    dododada  
       50 天前   ❤️ 1
    能做的东西挺多的,但是上面很多人说门槛高,只要下功夫就行了。不要说二本,原来的三本同事,做安全逆向的,不但精通 C++,还会 C ,还会汇编,java 什么的没学过但是捣鼓捣鼓就会了。
    不过说靠什么语言赚钱就很扯了,赚大钱当然是靠吹牛皮和拉关系了。
    65sqru
        58
    65sqru  
       50 天前
    我自己也是非 IT 科班出身,机械制造的硕士。
    入行的契机是同学做系里的博士生,给了我一个 C++的小项目,让我自学编程。
    后边论文也是跟他做的,也是 c++。
    最后面试的时候公司对交叉学科交叉学科有需求。
    bojue
        59
    bojue  
       48 天前
    @smallboy19991231 你收藏的我都有,没看过几页
    smallboy19991231
        60
    smallboy19991231  
       48 天前 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  
       44 天前
    介于 op 的情况先试一下 Qt ,入了行再考虑转方向
    bugmaker233
        62
    bugmaker233  
       37 天前
    24 届今年就毕业了,想在计算机行业吃饭,但是感觉你还没入门.....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   895 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 21:02 · PVG 05:02 · LAX 14:02 · JFK 17:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.