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

如何从 c++菜鸟转型 c++高手

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

    一晃工作几年了,从第一次加入 V2EX 起的名字 csfreshman 到现在 c++开发了几年,大都是 ctrl cv ,遇到让自己挑大梁,设计 重构某些大项目时就无从下手,真的太难了。

    再次求问,有没有那么些免费或付费教程,教你如何实现某些类,如何设计某些类,类与类之间怎么样设计合理,方便扩展等?

    第 1 条附言  ·  257 天前
    最近在看这几本书,收货挺大:
    1.提高 c++新能的编程技术 efficient c++ performance programming techniques
    中英文 pdf 对照着看,挺好(买不到实体书了)

    2.深度探索 C++对象模型
    好书,推荐
    24 条回复    2024-05-11 13:17:42 +08:00
    LeegoYih
        1
    LeegoYih  
       263 天前
    学 Rust 吧,WH 现在看到 c/c++都急了
    csfreshman
        2
    csfreshman  
    OP
       263 天前
    @LeegoYih 哈哈,贪多嚼不烂呀,我现在 c++主学,偶尔看下 go,先搞深一点 c++再说
    proxytoworld
        3
    proxytoworld  
       263 天前
    @LeegoYih 哈哈哈,虽然我也挺喜欢 rust 的,但不得不承认,某些人就想用 rust 重写一切。
    lesismal
        4
    lesismal  
       263 天前
    有学 cpp 这功夫,早把 rust 玩 6 了,如果懒得学 rust ,go 可是太容易上手了。

    https://m.thepaper.cn/newsDetail_forward_26518590

    直接贴一部分吧:

    其实,这并不是美国官方机构第一次呼吁放弃使用 C 和 C++ 了。
    去年 12 月,美国网络安全和基础设施局( CISA )联合其他机构颁发了一份《内存安全路线图指南》, 其中就指出了 C 和 C++ 是内存不安全的编程语言,并呼吁软件开发商采用 Rust 、Java 等其他内存安全的编程语言。
    2022 年 11 月,美国国家安全局 (NSA) 发布了一份网络安全信息表,详细介绍了它认为内存安全的编程语言
    Rust
    Go
    C#
    Java
    Swift
    JavaScript
    Ruby
    Python
    Delphi/Object Pascal
    Ada
    mightybruce
        5
    mightybruce  
       263 天前
    "教你如何实现某些类,如何设计某些类,类与类之间怎么样设计合理" 设计模式和 UML 吗? 这东西不是 C++ 内容, 相当一部分靠经验积累以及看优秀项目源码, 否则都是过度设计的例子。
    BeiChuanAlex
        6
    BeiChuanAlex  
       263 天前
    学汇编,把底层补一补
    leimao
        7
    leimao  
       263 天前 via iPhone
    C++不 memory safe 是软件架构师和开发者自己的问题
    Rust 和 Python 也有可以写成不 memory safe 的例子
    Nosub
        8
    Nosub  
       263 天前 via iPhone   ❤️ 1
    op 都开发几年 c++,这个帖子是不会有答案的,建议去知乎看。
    hello2090
        9
    hello2090  
       263 天前 via iPhone
    不懂啥叫大部分都是 copy paste,从哪 copy 来的?
    airchaoz
        10
    airchaoz  
       263 天前
    和我一样,忙于增删改查缺少高级实践和正向反馈。看源码和别人优秀的设计可能会有帮助
    sjkdsfkkfd
        11
    sjkdsfkkfd  
       263 天前
    看 cppcon
    xyzos
        12
    xyzos  
       263 天前
    真的可以试着学一下 rust ,我就是通过学 rust 反而让我对 c++ 有了更深的理解,我实际工作中也是用的 c++
    nnegier
        13
    nnegier  
       263 天前 via Android
    楼主要不讲下如何成为 c++菜鸟吧?我现在连 c++的门都没有摸到,楼主都已经用它工作几年了
    agagega
        15
    agagega  
       263 天前
    如果想知道 C++模板设计 API 的好思路,可以看看 LLVM ,当然不是编译器那块,而是 utils: https://github.com/llvm/llvm-project/tree/main/llvm/include/llvm/Support
    huahsiung
        16
    huahsiung  
       263 天前
    当然是使用 arch 滚动更新,然后使用 pacman 安装 rustc 和 cargo 。一次可以入两个神教,岂不美哉。

    对于 rust ,我的观点是:“你写我推荐,我写我不写”。

    哪个语言实现功能能满足需求(功能,开发效率,运行效率等等)就用那个语言。什么内存安全,老夫从来都是把指针当飞刀玩的一把梭。

    > XX 机构呼吁放弃使用 C 和 C++ 了。

    你看见有多少程序员忽略 warning 了,只要( CC )编译器能正常跑,这些又算什么。“呼吁”的优先等级可能还不及“warning”。最优先的当然是"error"了,其他的都可以忽略。
    yolee599
        17
    yolee599  
       263 天前 via Android
    当然了多造轮子啦,写 GUI 库,写加密解密库,写网络协议库……rust 魔教和 ArchLinux 魔教真是无处不在,恼!
    tyzandhr
        18
    tyzandhr  
       263 天前 via Android
    学类型论。c++就是一部活生生的类型运算手册,rust 这种伪 ml 可不会有
    slideclick
        19
    slideclick  
       262 天前
    @tyzandhr ml 是啥?一般指机器学习
    weeei
        20
    weeei  
       262 天前
    C++ 能把智能指针用好就差不多合格了,再去理解其他语言的内存管理设计简直不要太简单。
    kneo
        21
    kneo  
       262 天前 via Android
    但凡自己上点心,也不至于工作几年还在求教程。
    Evovil
        22
    Evovil  
       262 天前
    都写几年 c++了,修炼点内功心法,你现在要提高就系统的体系的看书,而不是看各种教程。
    经典那几本书撸一遍吧,看你兴趣在哪块选择自己感兴趣的看起来,计算机原理,数据,架构,网络,设计,然后再付诸实践理解为什么这样设计。

    当然逆向学习,从优秀代码阅读,反思,举一反三,在落实实践也可以,效率会比上面高,但是理解并不一定透彻。

    如果 c++要成为高手,只能成为时间的朋友了,很多坑没写个三五六七八年是遇不到的,也淌不过去的。我一般选择 c 或者 rust 。
    tyzandhr
        23
    tyzandhr  
       262 天前 via Android
    @slideclick 元语言
    xuelang
        24
    xuelang  
       194 天前
    深度探索 C++对象模型这本书确实很好,我最近也在看。

    然后梳理了一篇文章,欢迎一起交流。

    [结合实例深入理解 C++ 对象的内存布局]( https://selfboot.cn/2024/05/10/c++_object_model/)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2721 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:20 · PVG 23:20 · LAX 07:20 · JFK 10:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.