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

以前的程序员要学 c++

  •  
  •   jtsai · 2017-08-13 11:11:17 +08:00 · 6268 次点击
    这是一个创建于 2666 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很久以前要做应用很麻烦,要学习很多底层的东西,要学习 c++。

    现在做应用很简单,很多底层的东西都封装好了,大部分人不要去了解这些细节,直接应用,像 python。

    是不是未来机器学习也是这样的,大部分人不用去研究什么高深的数学、宇宙真理,常见的应用都封装成库了,直接应用。

    那这样看,机器学习的未来很前端。

    44 条回复    2017-08-16 16:22:01 +08:00
    UnisandK
        1
    UnisandK  
       2017-08-13 11:13:00 +08:00
    底层可以不管,数学还是要学的老铁
    jtsai
        2
    jtsai  
    OP
       2017-08-13 11:14:07 +08:00
    @UnisandK 噢 是吗
    k9982874
        3
    k9982874  
       2017-08-13 11:15:06 +08:00 via iPad   ❤️ 1
    混一混可以用开源项目,想比别人强还是躲不开
    jtsai
        4
    jtsai  
    OP
       2017-08-13 11:19:33 +08:00
    @k9982874 我的想法是、一线的肯定是得深入,业余的也会有一大堆解决方案,而这样使用门口就低了,大部分人或企业也不需要那么深。就像 php 是世界上最好的语言。
    lovedebug
        5
    lovedebug  
       2017-08-13 11:51:36 +08:00
    代码质量和架构知识更重要了。
    底层在出现性能瓶颈时还是需要调优的,这时候懂得人就是大牛。
    当然,天天写异味代码的就算了。
    wweir
        6
    wweir  
       2017-08-13 12:05:12 +08:00 via Android   ❤️ 1
    任何封装,实际都是提高了对使用者的知识要求。
    降低的只是使用成本,而不是知识成本
    carlclone
        7
    carlclone  
       2017-08-13 12:12:36 +08:00 via Android
    那你现在讲中文干嘛,还是去学习甲骨文吧。。。
    jtsai
        8
    jtsai  
    OP
       2017-08-13 12:18:45 +08:00 via Android
    @wweir 你这是站在封装者的角度
    SuperMild
        9
    SuperMild  
       2017-08-13 12:33:57 +08:00
    其实只是分工的细化,以前被称为程序员的,就是很厉害的程序员,未来仍然需要一定数量很厉害的程序员,只不过社会分工细化出来一个普通程序员的工种。按照绝对人数来算,未来很厉害的程序员的人数甚至比以前的程序员更多。
    gamecreating
        10
    gamecreating  
       2017-08-13 12:57:00 +08:00 via iPhone
    不是针对谁。。。会 C/C++的人,能力真的是强一些
    现在招的人都是培训出来只会应用,遇到问题不会解决。
    比如某个 dump 有时候还需要看汇编。
    Shura
        11
    Shura  
       2017-08-13 13:01:20 +08:00 via Android
    http://www.ituring.com.cn/article/216181
    结城浩:其实在很多领域,数学知识都能够直接在编程中派上用场。比如说,如果不懂离散数学、集合、逻辑、进制的相关知识,可能没有办法很好地编程;如果不懂三角函数等函数以及几何学、矩阵和简单的微分方程,可能也很难去编写游戏方面的程序;对于最近流行的人工智能和机器学习,如果不懂概率和统计的话也很难下手。然而,对编程有用的并不只是数学“知识”,还有学习数学所接受的“训练”过程本身。将现实中的事物转化成模型,用抽象的概念和人造的语法与规则去表达出来,从这一点来看数学和编程其实是非常相似的智力活动呢。

    结城浩:“由于人工智能和机器学习的兴起,对于程序员来说学好数学变得越来越重要了”,对于这一点我觉得很难简单地做判断。程序员很善于对功能进行封装,就算是人工智能和机器学习这种看似高深的东西,将来必定会出现很多面向“用户”封装好的系统和服务。当然,精通数学并没有坏处,我也不是说数学就没那么重要了,我只是想说数学一直都很重要,和当下流行什么东西没有什么关系。

    关于对读者的建议,我就简单说说吧。很多程序员对数学,特别是数学公式有一种抵触情绪。我认为即便不懂具体的理论,也应该养成遇到公式都仔细看一遍的习惯,平常先掌握一些基本的数学知识,遇到需要深入学习的部分再去探索就好。
    sshpandas
        12
    sshpandas  
       2017-08-13 13:05:47 +08:00
    我感觉你还是要再想一想自己想说什么。比如“未来机器学习”是指什么?是指从事机器学习的学术研究的人吗?是指在企业里搭建机器学习平台的人吗?还是指一般的数据分析师,偶尔会用到机器学习?这点想清楚了,机器学习的未来会不会变成前端也就很显然了。
    gnaggnoyil
        13
    gnaggnoyil  
       2017-08-13 13:19:21 +08:00
    说真的除了 Rust 和 OCaml 等少数语言之外我还真找不出有哪些语言可以把提供功能的东西的封装程度做的比 C++更好的.
    jtsai
        14
    jtsai  
    OP
       2017-08-13 13:34:26 +08:00 via Android
    @gnaggnoyil
    @sshpandas
    @Shura
    @gamecreating

    这个问题有点反智。但不会操作系统原理,不会数据结构,不会计算机网络,之后 CRUD 的 phper 就是有市场。大部分人也很满足 CRUD 这个层级而不思进取。

    世界有无比多的层级,牛逼的只是少数。
    albertofwb
        15
    albertofwb  
       2017-08-13 13:34:58 +08:00
    计算机相关专业的我们大一都从 C/C++ 起步,一路玩转折腾。
    自从写上了 Python C# 之后,再回过头用 C++ 给发觉自己变得没有耐心了
    liuminghao233
        16
    liuminghao233  
       2017-08-13 13:44:17 +08:00 via iPhone
    最好是别人把全部逻辑代码都帮你写好,各种库各种功能各种模板封装好。

    以后超级前端程序员只要在 main 里面调用 run 函数就可以下班了
    遇到新问题新需求就等相关库更新
    没有更新的话那更好,直接放假。
    jtsai
        17
    jtsai  
    OP
       2017-08-13 13:47:59 +08:00 via Android
    @liuminghao233 能这样市场应该有很大,做成软件,像 Photoshop
    ETiV
        18
    ETiV  
       2017-08-13 13:54:11 +08:00 via iPhone
    > 是不是未来机器学习也是这样的,大部分人不用去研究什么高深的数学、宇宙真理,常见的应用都封装成库了,直接应用。

    社会发展就是这样。

    99%开车的没必要了解车载电脑、发动机是咋做的;
    99%操作数控机床的不会自己做数控机床。

    但封装好的高层库,可以让数学好的人立即开展自己的实践,更快的验证自己的想法。
    他们没必要清楚的知道计算机从开机到启动到接受用户输入、浏览器从敲网址到页面渲染完的整套流程,完全没必要。

    再往下一层,用这些搞数学的人发布的 ML、AI 库,也会降低更多的人的学习、应用成本
    jtsai
        19
    jtsai  
    OP
       2017-08-13 13:56:15 +08:00 via Android
    @ETiV 就你客观
    loveCoding
        20
    loveCoding  
       2017-08-13 13:57:52 +08:00
    确实是这样啊 , 在语言层面越来越完善 , 使用门槛必然会越来越低
    ys0290
        21
    ys0290  
       2017-08-13 14:26:49 +08:00 via iPhone
    啊?现在不用学吗?
    jtsai
        22
    jtsai  
    OP
       2017-08-13 14:33:06 +08:00
    @ys0290 以前是必须的,现在有更简单的方案。
    cabing
        23
    cabing  
       2017-08-13 14:54:02 +08:00
    还是要懂一些计算机的基本原理,比如操作系统怎么运行之类的。用封装库出现问题,你也得深入去看看,是哪里出了问题,比如 python 的扩展有个你绕不过去的 bug,你就得看看 c/c++实现是什么,怎么调试下,fix 这个 bug 啊。
    hjc4869
        24
    hjc4869  
       2017-08-13 15:08:32 +08:00
    不管什么东西,原理和应用从来都是两个不同的 area
    以前那些培训班学 Win32,MFC 的,不见得有现在学 python,js 的强……
    coderluan
        25
    coderluan  
       2017-08-13 15:16:14 +08:00
    未来什么都很简单,可惜大家都活到现在,目前 C++也不是过去,很多领域还是还是难以取代,更别提 ML 了。

    PS:讨论未来又不考虑时间,说出来的只能是正确的废话,比如我掐指一算,大家将来会死,准不准。
    chuxiwen
        26
    chuxiwen  
       2017-08-13 15:17:57 +08:00 via iPhone
    @ETiV

    > 99%开车的没必要了解车载电脑、发动机是咋做的
    但是造车、设计车的人需要知道
    > 99%操作数控机床的不会自己做数控机床。
    但是造数控机床、设计数控机床的人需要知道

    软件工程师不仅仅是电脑的使用者,更是创造者。有些事情还是需要知道的。
    Cbdy
        27
    Cbdy  
       2017-08-13 15:22:24 +08:00
    在人类作为食品采集者时代,每个人是一个“完全体”,他需要辨认环境中各类动物与植物,哪些可以使用,哪些有毒,哪些可以为我所用。采集者自己收集食物,制作衣物,与周围的人交流,自己制作石器、磨制武器。这个时代是的死亡率极高,出生率也极高(生殖崇拜),生产力低下,个体之间相对平等的田园时代

    当人类进入食品生产者时代以后,产生了一个个村庄,生产力提升,人口增加,为了使得社会能够正常运转,产生了分工,分工使得人的职能特化,产生了阶级,反而促进了生产力的发展
    Cbdy
        28
    Cbdy  
       2017-08-13 15:28:01 +08:00
    再补充几个:
    抽象渗漏法则
    c++不是系统编程必须的,c 语言和汇编通常是必须的
    程序设计和常见的工业不同,壁垒很小,只要有一台电脑,绝大多数事情都可以做
    afpro
        29
    afpro  
       2017-08-13 15:31:07 +08:00
    现在已经这样了吧 你随便找一个算法工程师让他手写 fft 算法公式 保守估计有一半写不出来。。。
    ivechan
        30
    ivechan  
       2017-08-13 15:37:48 +08:00
    应用和底层知识(或说科研)本来就是两码事, 这个很正常, 但是底层知识有助你解决问题。
    比如, 很多人用 keras 照着教程就能搭建一个深度学习网络, 但是如果让你迁移到其他场景中(甚至知识换个 dataset ),只要出个 bug, 他都无法处理。
    重要的就是能够解决问题,而不是会搭一个简单的东西。
    RyougiShiki
        31
    RyougiShiki  
       2017-08-13 17:27:03 +08:00
    产品和 UI 也很有意思,工具好用,把精力放在业务上。我支持编程门槛越低越好,未来希望图形编程 一键部署什么的。正是封装的越来越厉害,软件功能才能越做越复杂。
    TuxcraFt
        32
    TuxcraFt  
       2017-08-13 19:46:05 +08:00
    可以的老铁
    现在相比起以前大部分行业入门都很简单,可以不用学习太多知识就可以上手了。
    当然仅此而已,不管你干多少年。你只能留在搬砖工水平,不可能上升到工程师水平。
    知识的重要性不是尽快转换成吃饭的技术, 而是不知不觉提升了你思维的深度。

    一个复杂度上升到一个程度的项目就算给你现成的构建和代码模块,你也没有办法搭建一个合理方案出来。
    不学数学…… 你就不能以数学思维思考问题。
    不然大企业还招什么名校出身的? 不如多找找一些低水平的人找个师傅培训培训带带就上路的,低工资还肯干。多好?
    jtsai
        33
    jtsai  
    OP
       2017-08-13 20:18:20 +08:00 via Android
    @TuxcraFt
    这个世界那么多元,学编程也并不是为了成为程序员。当门槛降低,医生也能用 Python 开发预约系统,用深度学习库处理数据。这种场景很多。

    另外

    我也一直有再说,学数学肯定更好。是艰难模式,付出更多,回报更多。

    但是也有很多乐于搬砖的从业多人员选择简单模式,未来也有这条路让他们选择。
    jtsai
        34
    jtsai  
    OP
       2017-08-13 20:24:59 +08:00 via Android
    @TuxcraFt
    因为层次不同,一个没读过多少书,没有背景和特长 找不到工作的年轻人,因为报名了一个 php 的培训班,几个月后找到一份工作。

    对你的圈子来说,是搬砖是 low。但是对他的圈子来说,已经是可以了。

    噢 扯远了。。。
    TuxcraFt
        35
    TuxcraFt  
       2017-08-13 20:40:01 +08:00
    @jtsai

    从你的题目立意就是这个意思。
    按照你回复“学编程也并不是为了成为程序员……” 这个又是另外一回事了。 当我没说。
    jtsai
        36
    jtsai  
    OP
       2017-08-13 20:45:24 +08:00 via Android
    @TuxcraFt 是啊 被扯远了 我自己都不知道在聊什么 好想删帖
    yanchao7511461
        37
    yanchao7511461  
       2017-08-13 20:48:39 +08:00
    我听说,如果数学底子不好,去研究机器学习和深度学习,最终就只会沦为调参工程师。当然我不懂..
    xiangtianxiao
        38
    xiangtianxiao  
       2017-08-13 20:58:09 +08:00
    你信不信,计算机专业不少博士根本不会写代码...
    suantong
        39
    suantong  
       2017-08-13 22:51:04 +08:00 via Android
    感觉自己被淘汰了~
    fulvaz
        40
    fulvaz  
       2017-08-13 22:57:10 +08:00
    最多也就是多线程给你弄成了库

    不会还是不会,昨天群里有个哥们也问了类似的问题
    Felldeadbird
        41
    Felldeadbird  
       2017-08-14 09:30:13 +08:00
    楼主这么理解没错。但等你业务复杂度上去了,你会发现仅仅了解表面 已经开始不满足了。必须去了解底层了。、
    SwingCoder
        42
    SwingCoder  
       2017-08-14 10:17:39 +08:00
    计算机底层这个概念很宽泛的。学习“底层”和学习某一种计算机语言没有什么必然的关系。C 和 C++也不是“底层”的代名词。事实上,很多 C++类库相当“高层”、“应用层”和更加面向特定的问题域。使用这些类库在某些领域或针对某些特定问题域编程,完全可以简单到超越目前所有已知的其它语言。有一点点心计的程序员,在某个领域长期使用 C++等 OOP 语言,都会提炼并抽象出自己的专属类库……

    作为程序员,无论职业,还是玩票,就计算机编程语言来说,扎实掌握一种面向对象的语言或者说思维方式,在可以预见的未来,都会受益终生的,也是非常必须的。何况 C++并不纯粹是面向对象的语言,它完全可以过程式、函数式、模板、泛型、元等等……当然也可以把它打造或改造的和其他任何一种语言“基本一致”……

    C++的学习曲线相对陡峭,但也并不是高不可攀,也并非完全了解它的所有特性才可以动手干活。学习阶段,无非多花一点时间罢了。一旦掌握,还是那句话,受益无穷。多快好省,只是一劳永逸、很简单很轻松的一个小目标而已。

    相比语言,数据结构与算法、对多个专业领域的深刻洞察、精通与思考才是更重要的事……
    chmlai
        43
    chmlai  
       2017-08-14 10:22:37 +08:00
    现在也要学啊
    fzss
        44
    fzss  
       2017-08-16 16:22:01 +08:00 via iPhone
    @xiangtianxiao 不信,过分了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2577 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:58 · PVG 10:58 · LAX 18:58 · JFK 21:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.