所谓的编程思维是什么, 各位是怎么理解的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Mr0C
V2EX    程序员

所谓的编程思维是什么, 各位是怎么理解的

  •  1
     
  •   Mr0C 2020-07-10 20:03:51 +08:00 7074 次点击
    这是一个创建于 1920 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人作为几个月的前端开发,求各位大佬解惑一下,我个人的理解应该是解决问题的能力,新手要怎么锻炼所谓的编程思维,谢谢各位

    60 条回复    2020-07-12 18:08:19 +08:00
    mirrorman
        1
    mirrorman  
       2020-07-10 21:50:28 +08:00   1
    能够正确地使用 ctrl c + ctrl v
    fightingZ
        2
    fightingZ  
       2020-07-10 21:53:27 +08:00 via Android   1
    我理解的是高内聚低耦合易扩展
    yousabuk
        3
    yousabuk  
       2020-07-10 22:04:55 +08:00 via iPhone   1
    能够把现实问题转化为:数据结构+算法
    crella
        4
    crella  
       2020-07-10 22:05:38 +08:00
    代码对机器友好,对程序员友好
    mx8Y3o5w3M70LC4y
        5
    mx8Y3o5w3M70LC4y  
       2020-07-10 22:17:43 +08:00 via iPhone   3
    怎么样才能说服自己“单休也挺好的”
    ljw97
        6
    ljw97  
       2020-07-10 22:29:23 +08:00 via iPhone
    我觉得应该是一种将 现实生活中的问题抽象出来,并写出具体的代码用计算机去解决的能力。
    niubee1
        7
    niubee1  
       2020-07-10 22:33:36 +08:00   5
    其实就是解构问题,抽象问题,最后解决问题的能力
    djbc
        8
    djbc  
       2020-07-10 22:35:37 +08:00
    最近也觉的编程不是一件简单的事情,我用的是 python3 + tkinter 编写一个应用小程序,但是很多时候会报一些特别邪门的异常,debug 也找不到所在,所以我现在都有一种幻觉了,到底是的编程能力有问题还是开发环境不行。
    CEBBCAT
        9
    CEBBCAT  
       2020-07-10 23:02:13 +08:00
    从实习算起,我已经工作六个半月了。我觉得「编程思维」这个名词在未经明确定义之前,不适合对它明确定义(笑)

    我现在受困于快速完成功能、不要把数据库查挂、一遍遍检查需求文档哪里有不明确的地方、让代码可维护可 review 历史行为中

    @djbc #8 也许只是键盘的问题
    pabupa
        10
    pabupa  
       2020-07-10 23:14:25 +08:00
    抽象。
    dremy
        11
    dremy  
       2020-07-10 23:16:09 +08:00 via iPhone   1
    把代码写的像艺术品
    wqhui
        12
    wqhui  
       2020-07-10 23:18:59 +08:00
    将现实中的问题解决方案用代码描述,至于代码写的漂不漂亮我觉得是另一回事了吧
    wy
        13
    wy  
       2020-07-10 23:20:25 +08:00 via Android   1
    首先需要想,而后才有可能形成思想。平时多问为什么。不要停留在使用层面,而是去思考这个工具的原理。另外,不要局限于前端,要视野开阔。编程思想,不分前后端。比如大多数前端路由都在使用 path-to-exp 这个库,如果你花时间研究了,就能掌握最简单的 LL(k) parser 的写法,之后遇到需要解析什么东西的时候就有思想了。多去了解自己在用的东西,从中学习他人的智慧。
    Chowe
      &nbs; 14
    Chowe  
       2020-07-10 23:31:52 +08:00 via iPhone   1
    对于任意的输出,都有其对应的输入
    这就是输入-处理-输出模型
    也是最基本的计算思维之一
    TreStone
        15
    TreStone  
       2020-07-10 23:32:01 +08:00 via iPhone
    一个字,抽象
    TransAM
        16
    TransAM  
       2020-07-11 00:02:50 +08:00 via Android
    现实生活中:

    抽象就是从一个执行流程中找到重复的部分,并加以自动化,智能化或者流程化。

    组合就是把大任务拆小任务,再找出高优先级的步骤,找现有轮子解决他。
    TransAM
        17
    TransAM  
       2020-07-11 00:05:55 +08:00 via Android
    OO 就是找一些事物的共性,并只关注你需要的部分,忽略可有可无的部分。

    封装就是只告诉别人它应该知道 /想让他知道的东西

    继承就是开始一个项目的时候先从现有方案(最好是现有开源项目)开始改

    多态就是在什么场合就装成那个场合的老手,其他人管他叫赋能
    levelworm
        18
    levelworm  
       2020-07-11 01:09:03 +08:00 via Android   1
    我觉得是把现实问题模型化并求解模型的能力。
    huweic
        19
    huweic  
       2020-07-11 01:19:15 +08:00
    理解计算机体系的运行,从沙子到二极管再到集成电路,从集成电路到 CPU 到操作系统再到 Java 、Golang 、JS,就像知道了每一条数学定理都是怎么推导而来的之后,也就不会再有什么是数学思维这种问题了。
    araaaa
        20
    araaaa  
       2020-07-11 01:24:59 +08:00 via iPhone   1
    像计算机一样思考
    Mac
        21
    Mac      2020-07-11 01:27:17 +08:00 via Android
    if then else 然后万物 crud
    chihiro2014
        22
    chihiro2014  
       2020-07-11 02:20:12 +08:00
    做事思维
    w99w
        23
    w99w  
       2020-07-11 02:24:01 +08:00
    看完这一页,感觉我还可以
    winnerczwx
        24
    winnerczwx  
       2020-07-11 04:41:13 +08:00 via iPhone
    每过一段时间,你对这个词都会有新的认识
    Building
        25
    Building  
       2020-07-11 07:16:10 +08:00 via iPhone
    没有什么问题是一个中间层解决不了的。
    wenlele
        26
    wenlele  
       2020-07-11 07:23:08 +08:00
    去年想过类似的问题于是写了一些简单的文章《平凡却又深刻的编程理念》。以下是自己在系列文字里前言里讲为什么写这个主题的原因:

    “第一,在工作的六年里,无论是在与面试者或与同事的接触中,人和人之间的差距往往直接表现在他们是否习惯性地运用一些基础理念来思考所面对的问题。思考哪些基础理念造成的差距,有利于提高基本的技术素养。
    第二,技术日新月异,理念却依旧千篇一律。我看过许多圈内的文章,其中有大量贩卖学习焦虑的文章。的确,新技术层出不穷,一一跟上都学会是一件很困难的事情,当然,也是一件十分厉害让人佩服的事情。我不是技术狂热分子,也不喜欢学习各种具体技术,如果与工作无关。对我来说,能大致理解新技术的目的和意义就足够了。
    第三,一些平凡的理念应该是共通的,而我喜欢聊些共通的东西。通过编程的基础理念去思考工作中其他软技能,甚至生活中的各种问题,往往也能够打开新的认知视角。我喜欢学习和思考一些普世的观念,也喜欢从具体的事情去反思其中影响行为决策的最基本的因素。其实,编程技术在我生活的比重较小。生活还是有许多比技术和职业更重要的事情。我选择当一名程序员,更多在于我对高度信息化社会发展的向往以及信心,而不是我有多么地热爱计算机的某某技术。当一名程序员,便于让自己更容易融入信息技术发展的大浪潮中。”

    文章不多,主体就四篇文章,围绕着程序员的最基本职责、优秀程序员最根本的品质,怎么理解抽象、生命周期和迭代等问题的个人思考。

    感兴趣的话欢迎阅读和点评。(我还分享不了链接,所以你们只能上网搜索了。搜索引擎搜索的话,至少能搜索我在简书上的文章;注,我的简书不再更新了。在微信搜一搜能找到文章和我的公众号叻道,一个程序员养生类公众号)
    weixiangzhe
        27
    weixiangzhe  
       2020-07-11 07:33:36 +08:00 via Android
    现实问题也能画个时序图 和 关系图吧
    AlphaTr
        28
    AlphaTr  
       2020-07-11 07:51:29 +08:00 via iPhone
    “下班回来带一个西瓜。如看到番茄,就买两个。”
    lraining
        29
    lraining  
       2020-07-11 08:02:08 +08:00 via Android
    主要有命令式,声明式,面向对象以及函数式,前端函数式较多,比较抽象,后端主要是面向对象以及像 sql 一样的声明式,写驱动主要就是命令式
    raaaaaar
        30
    raaaaaar  
       2020-07-11 08:06:27 +08:00 via Android
    我认为没有什么编程思维,只有逻辑。只要你逻辑性好,讲求科学方法。
    科学的分析问题,科学的解决问题。
    dlsflh
        31
    dlsflh  
       2020-07-11 08:10:32 +08:00 via Android
    @djbc 我推荐一个 pysimplegui 。
    GBdG6clg2Jy17ua5
        32
    GBdG6clg2Jy17ua5  
       2020-07-11 08:13:22 +08:00 via iPhone
    你的理解是对的。锻炼就是要多练。模仿这个某宝某东之类的
    crclz
        33
    crclz  
       2020-07-11 08:25:54 +08:00
    掌握你需要用到的库的最佳实践
    xuanbg
        34
    xuanbg  
       2020-07-11 08:42:20 +08:00
    编程思维这个概念就比较飘,我认为具体落地就是「封装」。写出能运行的代码不难,但要写出易扩展易维护并且高效稳定的代码,就要各种灵活地并且正确地运用「封装」这个概念。
    12tall
        35
    12tall  
       2020-07-11 08:49:12 +08:00
    让事情变得简单吧。简单好用
    zjsxwc
        36
    zjsxwc  
    /div>   2020-07-11 08:52:01 +08:00   1
    除了编程思维外,我们还有:

    拉屎思维
    吃饭思维
    穿衣思维
    搬砖思维
    投机思维
    ...
    只要是人脑子出现的都是 xx 思维。


    当然理性的思维都是符合“逻辑守恒”的,就算是赌徒思维也是符合概率论的。
    zisen
        37
    zisen  
       2020-07-11 08:53:18 +08:00
    少做重复的事
    rb6221
        38
    rb6221  
       2020-07-11 09:23:52 +08:00 via iPhone
    我觉得有两种,一个是抽象,一个是拆分
    Shaikh
        39
    Shaikh  
       2020-07-11 09:42:46 +08:00 via Android
    黑客帝国后面的 Neo
    chenyu0532
        40
    chenyu0532  
       2020-07-11 10:05:50 +08:00   1
    个人的理解:你可以放到平时生活中理解,比如你做一件事之前,都会想一想这件事分几步做,每一步应该怎么做,
    跟写代码一个道理吧,要先想明白了,问题太大的话,就用流程图记录下来,拆分成一个个小的问题,再去写。。
    这个熟练了,就是想着有没有什么简单方法来做同一件事了。。
    venster
        41
    venster  
       2020-07-11 10:15:10 +08:00 via iPhone
    老婆让老公去买菜:去楼底下买二斤鸡蛋,如果碰上卖西瓜的,买一个。半小时后,老公拿着一个鸡蛋回家了。
    touno
        42
    touno  
       2020-07-11 10:22:46 +08:00
    如果你不是产品经理就把这个问题丢给产品经理,如果你是产品经理那么辞职吧!别再坑我们程序员了~
    justin2018
        43
    justin2018  
       2020-07-11 10:32:32 +08:00
    感觉 有时候我都懂了~ 但是~

    脑袋:都看懂了 字母都认识

    手:咋写 咋写 我不会写呀 咋搞~~~
    qiumaoyuan
        44
    qiumaoyuan  
       2020-07-11 11:51:54 +08:00
    首先,能不能实现客户想要的功能就不说了,这都满足不了,就更谈不上什么思想。

    在能实现功能的前提下,如何利用你使用的编程语言消除代码复杂度,这是心法。软件工程所有方法论都围绕着这个目的。什么抽象、封装、各种设计模式、重构手法,都是为了这个,无它。

    复杂度消除了,bug 自然少,维护也轻松,事情本质上简单得很。
    qiumaoyuan
        45
    qiumaoyuan  
       2020-07-11 11:53:02 +08:00
    然后你如此因此开始琢磨“究竟什么是‘复杂’”,恭喜你,找到方向了。
    shellus
        46
    shellus  
       2020-07-11 11:53:21 +08:00
    编程思维就像猪爸爸说的:“像泥坑一样去思考”
    就是一句装逼的话,去较真你就是真傻,因为这句话本身就没有意义,或者说没有准确的,普遍认可的含义。
    就是一句俏皮话而已。
    qiumaoyuan
        47
    qiumaoyuan  
       2020-07-11 11:54:43 +08:00
    订正:如此 -> 如果
    hellocy
        48
    hellocy  
       2020-07-11 12:13:55 +08:00
    Wincer
        49
    Wincer  
       2020-07-11 13:23:34 +08:00 via Android   1
    最近正好在看《 the pragmatic programmer 》这本书,前言有一个例子很有意思,给楼主分享一下,希望有帮助。
    “设想你在开会,或许你在想这个会没完没了,还不如去写程序有意思。而 dave 和 Andy (本书的作者)会想,他们为什么在开会,他们想知道是否能通过另外的方式来取代开会,并决定是否可以将某样事情自动化,使开会的工作推后,然后他们就会这么做。”
    读完这段话之后,再看到楼主这个帖子,我想这应该就是编程思维了。
    1900Yin
        50
    1900Yin  
       2020-07-11 15:32:50 +08:00 via iPhone
    将业务抽象成代码,能够实现业务,然后再在此基础上进行合理的优化吧。我的理解是这样。
    agoodob
        51
    agoodob  
       2020-07-11 15:52:35 +08:00
    (狗头) 是幼儿编程机构用来揽客的宽泛名词
    agoodob
        52
    agoodob  
       2020-07-11 15:54:25 +08:00
    (严肃讲) 感觉"编程思维"这个描述过于宽泛,大部分场景下不是一个值得拿出来专门提的事情,没有明确定义。
    我个人不纠结这个词,无所谓
    lucifer9
        53
    lucifer9  
       2020-07-11 16:12:30 +08:00
    @Wincer #49 这俩作者写续集了没。我这么年轻时候这么做过然后就离职了
    Wincer
        54
    Wincer  
       2020-07-11 16:45:55 +08:00 via Android
    @lucifer9 出了个 2nd,没听说有续集
    killeder
        55
    killeder  
       2020-07-11 16:57:50 +08:00 via Android
    逻辑+悟性
    yulitian888
        56
    yulitian888  
       2020-07-11 17:07:14 +08:00
    所有行业,所有领域,都一样:知其然,知其所以然
    35aZ4P8mT576683q
        57
    35aZ4P8mT576683q  
       2020-07-11 23:11:25 +08:00
    计算机科学和软件工程的十字路口
    kelvin_fly
        58
    kelvin_fly  
       2020-07-12 10:40:18 +08:00
    @wenlele 和我的想法比较契合,会去看一下
    wenlele
        59
    wenlele  
       2020-07-12 13:28:56 +08:00
    @kelvin_fly 谢谢!
    shuigui
        60
    shuigui  
       2020-07-12 18:08:19 +08:00
    程序员:抽象+严谨+逻辑+算法
    码农:大力出奇迹,搬就完事了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3046 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 00:34 PVG 08:34 LAX 17:34 JFK 20:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86