何谓编程思想? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
julia
V2EX    程序员

何谓编程思想?

  •  
  •   julia 2011-02-09 08:23:20 +08:00 8547 次点击
    这是一个创建于 5368 天前主题,其中的信息可能已经有所发展或是发生改变。
    我朋友说,搞编程是要慢慢形成自己的编程思想,不能局限在语言自身层面。各位能谈谈吗?
    20 条回复    1970-01-01 08:00:00 +08:00
    myrual
        1
    myrual  
       2011-02-09 09:32:42 +08:00
    编程9年了,我觉得自己还是没啥编程思想。
    面向对象的编程思想不懂,设计模式不懂。
    目前仅仅坚持一下几个原则:
    先做一个简陋的,然后慢慢丰富。
    先用笨方法实现,然后用高科技重构一下。
    随着丰富的过程,不断的把代码按着业务逻辑分成模块。
    不断的重新回头看代码,然后把不好的地方修改掉。
    julia
        2
    julia  
    OP
       2011-02-09 09:45:41 +08:00
    @myrual 前辈是否太过谦虚!我朋友不过才学了一年,看了几本书,就敢说自己有编程思想,难道真是天赋问题!
    roamlog
        3
    roamlog  
       2011-02-09 09:57:08 +08:00 via iPod
    我觉得个人的编程思想还是比较难形成的,大部分人只是掌握了一些编程方法或叫编程理论,oop、设计模式、重构和测试驱动开发等等都是前人总结的方法或理论而已,无需太过纠结于此
    dreampuf
        4
    dreampuf  
       2011-02-22 13:44:13 +08:00
    编程思想能否理解为"编程经验".只有有了经验,慢慢得才会形成思想.
    imstand
        5
    imstand  
       2011-02-22 13:48:10 +08:00
    两个视角,从硬件看代码,从需求看代码。让信息流在你眼里透明。
    zhouhua97
        6
    zhouhua97  
       2011-02-22 15:33:56 +08:00
    你朋友的思想不知道是什么思想,但是觉得不管什么思想还是要从实践中来。
    zhaiduo
        7
    zhaiduo  
       2011-02-22 15:34:12 +08:00
    感觉编程思想应该是经验的总结吧,很多新手一开始就去学设计模式,这个不太合适啦。
    WarWithinMe
        8
    WarWithinMe  
       2011-03-01 12:33:47 +08:00
    @dreampuf 同意。。。思想从经验来。。@zhaiduo 个人觉得设计模式更在于实践,大摇大摆的说自己懂设计模式的人,其实是说他能背出其中内容,未必就能灵活应用到实际的问题中。
    welling
        9
    welling  
       2011-03-11 19:31:24 +08:00
    我的理解是,复用复用,再复用.
    momo5269
        10
    momo5269  
       2011-03-18 05:55:12 +08:00
    我觉得编程思想是通过长时间接触和大量实际运用得到的经验,而这些经验能够告诉你编程语言作为“语言”的本质是什么,可以用来干什么。不同的语言是不同的思维模式,编程语言也一样:是不同的表达方式和解决问题的办法。

    不过我不是程序员,你可以无视我的话。
    obiwong
        11
    obiwong  
       2011-03-20 01:39:57 +08:00
    我想你朋友的意思是建议你不要去钻语言的奇淫技巧,比如C语言的「c+++++c+++c++值是多少」诸如此类问题,而多去关注解决问题之道,比如「清晰胜于机巧」、「策略同机制分离」等。

    不过我认为「语言自身层面」和「编程思想」谁更重要是个见仁见智的问题,两者并不具备可比性:谁能证明出乘法和加法哪个更重要呢。不管哪方面,能做到极致就是大师。

    「语言自身层面」是指的是某一种语言的的特性,上面举的c+++++c+++c++例子比较极端。不那么极端的例子是C++的机巧or取巧模版元编程或者是perl那如诗般or晦涩的代码:
    C++:
    template<unsigned n> struct factorial {
    static const unsigned value = n * factorial < n-1 > ::value;
    };

    template<> struct factorial<0> {
    static const unsigned value = 1;
    };

    int main() {
    std::cout << factorial<6>::value << "\n";
    return 0;
    }

    perl:
    #!/usr/bin/perl

    APPEAL:

    listen (please, please);

    open yourself, wide;
    join (you, me),
    connect (us,together),

    tell me.

    do something if distressed;

    @dawn, dance;
    @evening, sing;
    read (books,$poems,stories) until peaceful;
    study if able;

    write me if-you-please;

    sort your feelings, reset goals, seek (friends, family, anyone);

    do*not*die (like this)
    if sin abounds;

    keys (hidden), open (locks, doors), tell secrets;
    do not, I-beg-you, close them, yet.

    accept (yourself, changes),
    bind (grief, despair);

    require truth, goodness if-you-will, each moment;

    select (always), length(of-days)

    # listen (a perl poem)
    # Sharon Hopkins
    # rev. June 19, 1995
    ray58750034
        12
    ray58750034  
       2011-03-20 02:57:09 +08:00
    思想是自己的事情; 重构和设计是团队的事情。
    如果只是编程思想,那就是自己对写代码的积累和认识, 我觉得只要是从学习阶段转为了创造阶段的程序员都是有思想的,只不过有的人想的更深一点而已。

    你朋友和 @obiwong 说的对,千万不要局限在语言本身。 就我个人感受而言,最重要的还是需求理解,然后是解决问题的手段,最后才是实现技巧。 而语言只是实现技巧的细节。
    morganjaw
        13
    morganjaw  
       2011-03-20 08:02:46 +08:00
    将个性融入代码,将技术变为艺术,其他只是一些技巧而已
    elfkid
        14
    elfkid  
       2011-04-02 13:09:47 +08:00
    我觉得还是要往底层挖掘..深入到机器语言,然后再深入到硬件层,要是有物理基础可以深入到微观粒子层(当然这个可以只限于思想实验)。最后再一步步递归上来形成的一样类似代码的东西一定很有趣。
    yiyang
        15
    yiyang  
       2011-04-02 13:18:17 +08:00
    @morganjaw 其实这些都不重要关键是 好用,能改变世界,能赚钱 这才是最终目的。
    Kid
        16
    Kid  
       2011-04-02 13:49:14 +08:00
    道可道,非常道。程思想若能下,自然也就成了。

    至於怎得“技能”,@elfkid 的很有趣,我也烈建能上到下的解一下基本原理,下到布和路就差不多了。
    mxfli
        17
    mxfli  
       2011-04-08 00:18:25 +08:00
    踏踏实实写代码吧。思想在代码和语言之中,又在语言和代码之外。反者,道之动,弱者,道之用。
    dbfox
        18
    dbfox  
       2011-04-17 16:42:12 +08:00
    呃,我写代码 2 年了,也不知道啥是 面向对象,比如写Javascript
    我总是喜欢 用 function $(_id){ return document.getElementById(_id)}
    但是有时候会和 其他的 js 框架 冲突,如 和prototype 冲突
    这个时候,我就只有 使用 $G 来标识,很烦
    soulhacker
        19
    soulhacker  
       2011-04-17 17:54:04 +08:00
    思想比较难说,一般提的较多的是编程范式(paradiagm),也有叫范型或者模式的,比如:imperative、functional、dynamic、meta-programming、declarative、parallelism 等等,每种 paradigm 都是针对某些问题的一种思考和经验汇集,作为编程者需要不断实践,并且在实践中去了解和熟悉这些 paradigm(当然未必需要全都了解)。我觉得这是最接近“编程思想”这个词儿的东西。
    kayue
        20
    kayue  
       2011-04-18 04:10:32 +08:00
    @dbfox front end(web ui) 比较少需要面向对像,一般都是事件导向。

    所以光写fornt end 进步有限 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5353 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 07:35 PVG 15:35 LAX 00:35 JFK 03:35
    Do have faith in what you're doing.
    ubao msn 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