首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉勾
V2EX  ›  程序员

关于 C++和其他语言

  •  
  •   Leigg · 232 天前用 iPhone 发布 · 2918 次点击
    这是一个创建于 232 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 golang 论坛看到一句话:
    「 C++语言好比珠穆拉玛峰,爬过最高的山,再爬其他的山简直轻而易举。 」
    说这句话的人精通 C++/python/golang 各种编程语言,改过比特币 /以太坊源码。。。
    没别的,就想问问熟练 C++语言的大佬们在学习其他编程语言的时候真的是这种感觉吗,觉得语法特简单,很快就能上手开发?
    先感谢分享。
    第 1 条附言  ·  232 天前
    41 回复  |  直到 2018-08-03 14:51:16 +08:00
        1
    CEBBCAT   232 天前 via Android
    他骗你的
        2
    lhx2008   232 天前   ♥ 7
    [中文好比珠穆拉玛峰,爬过最高的山,再爬其他的山简直轻而易举]
    说这句话的人从事该语言超过 20 年,读过几百年前的项目的代码。。。
        3
    zhustec   232 天前 via iPad
    关键是 C++这座山来说,怎么样才算爬过。
        4
    D3EP   232 天前 via iPhone
    因为 go 太简单了,特性和语法糖都很少,像个平胸的妹子,没有手感
        5
    AngelCriss   232 天前 via Android   ♥ 1
    不谦虚的说,真是这样。谦虚的说,还是要认真看看语法,才能写。
        6
    Leigg   232 天前 via iPhone
    @zhustec 母鸡啊,目前只会 py 和 golang,golang 正在深入学习中...
        7
    changdy   232 天前   ♥ 1
    假的,
    珠穆拉玛峰 并不是最难爬的. 有些山峰都还没被破处
        8
    Leigg   232 天前 via iPhone
    @D3EP 哈哈,听老哥一讲好像还真是,比起 python 都算少
        9
    kunluanbudang   232 天前 via Android
    话术而已
        10
    ashong   232 天前
    实际上精通任何一种编程语言,再学新的语言都应该很快
        11
    prolic   232 天前 via Android
    把 c++的每种编程范式学会之后再碰新语言确实容易很多啊
        12
    luozic   232 天前 via iPhone
    C++是多范式语言,简单点说,一个项目不统一风格,最后 C++能写出屎一样的巨山
        13
    dtgio   232 天前 via iPhone
    总的学习成本一样的,在 c++上面消耗的时间会在其他语言上补回来९😌
        14
    SuperMild   232 天前
    其实难点主要还是算法,以及真实业务本身的复杂性、多变性。语言特性啥的,来来去去就是那些,也就纯函数式比较需要脑袋转弯,其他流行的 py js go php java 等等用起来都是很直白的东西,已经被改进到很符合人类直觉了。
        15
    K0   232 天前 via iPhone
    是的
        16
    farseeraliens   232 天前 via iPhone
    然而在上手函数式编程语言方面,感觉还不如学完 java 有优势。
        17
    danc   232 天前
    哈哈,还真是这样的。不仅是 CPP,你去学会一种比 CPP 稍简单点的语言,比如 Rust,然后再回过头来看 golang、python 等一些简单的语言,就觉得不过如此了。但是,不踏踏实实搞 2 年 Rust,你也不敢说熟悉它,但是,2 年时间你足够熟悉 golang+python 吧?
        18
    glues   232 天前   ♥ 2
    井底之蛙而已
    C++ 也就是坑多而已,本身哪有什么难度。
    先把 Haskell 搞明白了再来装逼吧。。
        19
    lance6716   232 天前 via Android
    因为其他语言的解释器、编译器一般就是 CPP 写的…
        20
    young6   232 天前 via Android
    写代码是为了实现需求,而不是为了装逼。比较语言不如比较项目。学 C++不如学 Java,顺带学 jvm 上的其他语言。大厂有多少新项目会选择用 C++?
        21
    DOLLOR   232 天前   ♥ 1
    我不太相信精通 C++后能轻松学习 haskell、lisp 这种另一个世界的语言
        22
    chai2010   231 天前
    觉得 Go 语言简单的同学可以尝试玩下 Go 汇编语言或 cgo 等特性 :)
        23
    junmoxiao   231 天前 via Android
    重要的是系统,架构,语言特性就是细枝末节。要知道 c++很多语言特性是妥协出来的,你把这些奉为圭臬,学不到什么有用的东西
        24
    iConnect   231 天前 via Android
    会说中文不是每个人都能李白杜甫,会英文也不是每个人都能莎士比亚,主要看你用语音干了啥
        25
    tt67wq   231 天前   ♥ 1
    实际上,珠穆朗玛峰应该不是最难爬的山吧
        26
    hitmanx   231 天前   ♥ 2
    “” C++是多范式的“”+1.
    很多时候大家用的是同一个 C++,又不是同一个 C++,有些人用的只是 C with classes,有些人会用到一些高级技巧例如模板元编程,不一而足。
    长期用 C++的人给我的最大的印象是对于内存的分配和管理非常敏感,比如这个内存是在栈还是在堆上,是浅拷贝还是深拷贝,指针、引用何时失效,空间是何时分配(例如 copy on write 等技术)又是何时释放的(尤其在智能指针中)。C 也有很多类似的通用的概念,但是 C++由于引入了 operator overloading 以及一些广泛应用的 smart pointers,导致这个情况要比 C 里复杂很多,比如只是简单的一个 a = b,背后会发生什么得仔细分析才知道

    另外 C++11 里用 std::for_each, std::transform,std::copy_if 等配合 lambda 也可以写出**类似**函数范式的代码,map,filter,reduce 这些都不是问题,当然不是说这就是完全的函数式编程了。
        27
    hitmanx   231 天前
    忘了回核心的问题了,没觉得会 c++的人能很容易掌握其它语言。如果一定程度上有,是因为 c++的多范式,而不完全是因为 c++自己的难度。但是其它语言还是有太多语法糖和语言自己独特的特性是 C++没有的,另外熟悉一门语言的基本语法是很容易的,别的语言的基础主要是用在这儿, 但是真正掌握是很难的,不花功夫是不行的,放在哪门语言里都是一样的。
        28
    abc612008   231 天前
    其实是因为其他语言的特性大部分都能在 c++里找到类似的东西,所以类比学习很好学。( lisp haskell 这种语言除外)
        29
    Leigg   231 天前
    @tt67wq 最高的啊,只是例证而已,(我记得你哈哈被领导摸的那位兄 dei )
        30
    BBCCBB   231 天前
    学的时候和用的时候 根本不是一回事, 一大堆生态要花时间看, 就算看得快也要花时间不是?
        31
    Leigg   231 天前
    @hitmanx 老哥例举的这些特性好像其他语言都有但都没有被人们过于注意的地方,比如 py 的深浅拷贝,引用计数,go 的指针类型 /传递,如果在 C++中这些原理都熟悉的话,不说其他语言,光是上手其他 python 和 golang 肯定是事半功倍的啊。。
        32
    Leigg   231 天前
    @hitmanx 语法糖这种就是各自语言的“招式”了,这个应该算不上有难度的东西。而每个语言共性的(比较根本的)地方应该就是那几个吧。 当然,要说精通的话,那一定得另当别论了。我也不是说无脑把 C++往神坛上推 :)
        33
    chungzh   231 天前
    你先爬过 C++这座山再说。。。。。。。
        34
    firebroo   231 天前
    珠穆拉玛峰不是最难爬的山,贡嘎的攀登死亡率了解一下,还有梅里雪山。。没人爬上去过。。
        35
    wzxlovesy   231 天前 via Android
    原话没什么毛病
        36
    jm00   231 天前 via Android
    我觉得这里的 c++应该换成 c,因为 c++大部分新特性都是对 c 的 hack 或者包装,之所以他会说学会了 c/c++学其他的简单,是因为他通过学 c/c++掌握了或者很了解程序语言的实现原理,如果换一个人,这个人不会去主动学习,对原理不感兴趣,那么所有语言对他来说都是一个功能的集合体,他会发现 c 语言需要自己管理内存,而 java 不需要,至于为什么,他不感兴趣也就不会知道,你再给他一门语言,他就会当作一个全新的功能集合来学习,完全不去思考程序语言之间的共性和每种程序语言独有的特性。程序语言就是对实现它的语言的特性或者语法的包装,举个例子:当你理解了 c 程序到底是怎么执行的时候你就会明白 js 里通过字符串索引的数组只不过是经过分类的、语法包装的 hashmap 或者字典,达到这种程度,当你要学一门新语言的时候只需要掌握基础语法就够了(无非就是那些标点符号),至于这门语言那些花里胡哨的功能只不过是一些“工具”根本谈不上“学”。
        37
    missdeer   231 天前   ♥ 1
    假的,C++难是真的,但主要原因是 Go 简单易学。
        38
    northisland   231 天前 via Android
    感觉 c++的设计缺陷是异常,各种 programming guide 都禁止用异常
        39
    hotdogwc   231 天前
    @danc 你确定 Rust 是稍简单一点的语言?我感觉突破天际了。。
        40
    Wicked   231 天前 via iPhone
    C/C++熟悉的同学,对内存,数据结构会更敏感。其他语言的高级特性,本质上就是这二者的封装,知道原理之后至少会用得更恰当
    例如,我在学 python 的时候,很自然就会将 str,list,dict 等映射成 C++的实现,然后我就知道该用 join 而不是 a+b+c,该用 iterkeys 而不是 keys,对循环引用这些也是天然敏感
    之所以会有顶楼的说法,我觉得是从上述的角度来考虑的。至于 C++复杂的语法,其实是缺点…
        41
    danc   230 天前
    @hotdogwc 我确定啊
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   844 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 19:48 · PVG 03:48 · LAX 12:48 · JFK 15:48
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1