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

Learnable Programming

  •  
  •   jjgod · 2012-09-27 07:07:45 +08:00 · 5417 次点击
    这是一个创建于 4442 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://worrydream.com/LearnableProgramming/

    Bret Victor 大神的新作一出,Twitter 上纷纷传阅,其核心思想和 Inventing on Principle (https://vimeo.com/36579366) 其实没有大的差异,还是重在编程过程的可视化。但假如不是直接用 Processing、JavaScript 这种简单的绘图程序,实际应用中这种方法该如何呈现呢?比如如何帮助程序员理解下面这些概念?

    * 多线程编程的并发处理机制
    * UI 编程的 MvC 模型、data source、delegate 机制 (例如 UICollectionView 这样新的类怎样快速理解它的运作)

    会是很有趣的问题。
    10 条回复    1970-01-01 08:00:00 +08:00
    tedd
        1
    tedd  
       2012-09-27 08:20:05 +08:00
    OMG, this is soooo cool! Thank you so much for sharing!
    flyingkid
        2
    flyingkid  
       2012-09-27 08:54:07 +08:00
    想知道vimeo真实地址,switchysharp加一下白名单。
    flyingkid
        3
    flyingkid  
       2012-09-27 08:57:25 +08:00
    There was an error encountered while loading this video.

    无法加载。
    jjgod
        4
    jjgod  
    OP
       2012-09-27 09:00:50 +08:00
    Bret Victor 在文章的总结段落里认为,前面提的这个问题“现实世界如何应用”是提了一个错误的问题,真正的问题应该是如何*重新设计*现实世界中的编程语言和环境,使得应用这些可视化原理成为必备。

    然而我不禁想到:既然现在我们不依赖可视化工具,采用盲人摸象 (文中说 blindfolded) 的办法已经可以创造出如此复杂的软件,是否正说明了人类的逻辑推理能力并不很依赖可视化呢?

    而假定可视化真的有很大的作用,以此作为踏脚石,我们能否更快地创造出漏洞更少而更复杂的系统呢?现实地想,不完全重新设计现有系统,而是在 IDE 上添加片段的可视化,哪怕只是对一个循环、一个函数的简单可视化,以此作为垫脚石,也许我们就能触及比现在高得多的东西。

    当然,如果能在更宏观的角度上,提供对大型复杂系统的 X-ray 方式的透视,把大型系统的模块之间的相互作用关系自动用简单的图形表示出来,也能大大方便人的理解吧——想象一下假如可以把 Core Animation 或者 Core Data 的运作方式简单表现出来。
    picasso250
        5
    picasso250  
       2012-09-27 11:22:10 +08:00
    新方法有时会带来新的结果,尤其是好玩的方法。
    dreamer
        6
    dreamer  
       2012-09-27 11:48:24 +08:00
    我觉得这家伙更像个艺术家,而不是工程师。视频里他说当看到一个 idea 无法实现的时候,他觉得自己看到了一个 tragedy.

    如果他的关于“可视化”的方法可以实现,影响最大的应该是那些利用新媒介进行创作的艺术家,他用来做 demo 的那些东西也几乎都是绘画、游戏和动画。以前的那些艺术形式,比如绘画和雕塑,都是“可视化的”,随时可以在创作的时候进行调整,而现在新兴的艺术形式,比如游戏和动画,要做到以前那种程度的控制就要多花好多心血。希望他早点儿把 demo 中的工具公布出来,这样应该会促进很多好作品的出现。
    jjgod
        7
    jjgod  
    OP
       2012-09-27 15:25:28 +08:00
    @dreamer: 影响肯定不只是艺术作品,我自己在做比较复杂的程序时,往往需要在大脑里或者纸上反复推演这段程序的执行过程,以至于我相信这种推演能力和程序员的经验是正相关的,假如这个过程可以让计算机自动完成,程序员的思维就能解放出来去处理更抽象更复杂的逻辑了。
    dreamer
        8
    dreamer  
       2012-09-27 16:43:16 +08:00
    @jjgod 恩,“验证自己的推演是否正确”其实更多是测试工作,如果能在编码的同时做测试工作,就不用在事后回想 Bug 可能出现的地方,会节省很多精力。
    yinyunqiao
        9
    yinyunqiao  
       2012-09-29 21:07:55 +08:00
    @jjgod 在我们给QtQuick 2.0做demo的时候,Alan和我们的UX designer 为QML设计了一个和Bret Victor演示的效果类似的QML editor,现在不知遗落到了何处了。

    关于多线程的代码的可视化,在写QtQuick 2.0的时候,每天穿越renderer thread, main thread无数次时, 我曾想过如果在注释中给点hints,比如在一个method前//@thread:render这样,然后IDE给出不同的highlight提醒,这也会对我这种非常粗心的程序员有很大帮助了。
    jjgod
        10
    jjgod  
    OP
       2012-09-30 00:22:51 +08:00
    @yinyunqiao: Andrew Baldwin 的这个也是 QML 的:
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2710 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:25 · PVG 23:25 · LAX 07:25 · JFK 10:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.