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

何谓编程思想?

  •  
  •   julia · 2011-02-09 08:23:20 +08:00 · 7970 次点击
    这是一个创建于 5038 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我朋友说,搞编程是要慢慢形成自己的编程思想,不能局限在语言自身层面。各位能谈谈吗?
    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   ·   实用小工具   ·   3010 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 14:42 · PVG 22:42 · LAX 06:42 · JFK 09:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.