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

为什么图形化编程语言还没出现还没普及???

  •  
  •   ashchen · 2016-08-17 15:56:24 +08:00 · 13006 次点击
    这是一个创建于 3021 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以后的趋势必定是图形化编程语言的天下

    用 ipad 或类似指点类设备,拖下程序逻辑图就可以了,为何还苦逼的敲键盘?

    89 条回复    2016-09-22 16:01:00 +08:00
    ayang23
        1
    ayang23  
       2016-08-17 16:05:50 +08:00   ❤️ 1
    不用太大,来个十万行的项目感受一下图形编程,效果我想是这样的:
    66beta
        3
    66beta  
       2016-08-17 16:06:43 +08:00
    visual studio 笑而不语
    shimanooo
        4
    shimanooo  
       2016-08-17 16:13:31 +08:00
    10 万行大多是细节。

    图形化普及的话
    1. 有大量 high-level 模块
    2. 模块间可以方便地组合
    em70
        5
    em70  
       2016-08-17 16:13:40 +08:00
    UE4 的蓝图就是这种东西,没想象中那么好,但确实降低了动画设计师编程的难度,对普通人来说比代码更难
    tabris17
        6
    tabris17  
       2016-08-17 16:20:35 +08:00
    有啊。
    UML 不就是么,统一建模“语言”
    designer
        7
    designer  
       2016-08-17 16:22:38 +08:00 via iPhone
    能理解为 “前端设计师” 吗
    nicevar
        8
    nicevar  
       2016-08-17 17:03:25 +08:00
    年轻啊,典型中二想法,楼主应该还没见过产品经理
    lightening
        9
    lightening  
       2016-08-17 17:07:58 +08:00
    因为并不方便。

    硬件设计领域,初学都会用画电路图的方式。但是一旦规模增长到一定程度(这程度并不是很大,一个加法器就会很复杂了),图形的方法已经完全无法管理和维护了。于是硬件设计人员也会使用类似编程语言的方式(硬件描述语言)来开发硬件。
    fjzjk
        10
    fjzjk  
       2016-08-17 17:24:33 +08:00
    虚幻 4 有蓝图。
    unity 有 play maker 。
    这类就是图形化编程语言了。但是实际上本质还是编程语言,需要编程思想,只不过把手写代码改成了可拖动的图标。对于入门后的开发者来说效率太低,只适合一些美工、设计想独立开发游戏时使用。

    当然虚幻 4 的蓝图是大量使用的,虽然大型项目不怎么用,但多少还是会有一点
    ashchen
        11
    ashchen  
    OP
       2016-08-17 17:49:20 +08:00
    代码当然是由逻辑图自动生成的。变量名,赋值之类也是自动实现的。
    程序员要做的就是把流程图拖来拖去。具体代码都封装成模块。一点某个对象,会列出对象,方法,供连线
    几十万代码也不是问题,总归要根据层级归纳成函数,类。别告诉我你一个方法里有几十万代码。
    xcodebuild
        12
    xcodebuild  
       2016-08-17 19:11:21 +08:00
    所以你觉得编程的痛点居然是敲键盘么=。=
    dacapoday
        13
    dacapoday  
       2016-08-17 19:13:52 +08:00
    图的表现力不行,而且已经有 UML 了,即使是 UML 也很难用一种类型的图表征整个程序。如果是顶层设计,用封装好的功能模块组合实现 DAG 可以(正如虚幻 4 的 blueprint 和犀牛的 Grasshopper 还有 nodebox3)。但是具体的细节实现不行,首先在模块图里怎么表征环,递归?模块是纯函数还是有自身状态的实例?如果使用时序图,作用域又怎么表示?
    clino
        14
    clino  
       2016-08-17 19:21:10 +08:00 via Android
    为什么要有文字文章,用图形图片视频就好了?
    loading
        15
    loading  
       2016-08-17 19:23:33 +08:00 via Android
    Talk is cheap
    uxstone
        16
    uxstone  
       2016-08-17 19:25:40 +08:00
    不知道你是在哪里看到这个趋势的
    7z7
        17
    7z7  
       2016-08-17 19:26:29 +08:00
    7z7
        18
    7z7  
       2016-08-17 19:27:12 +08:00
    shippo7
        19
    shippo7  
       2016-08-17 19:27:14 +08:00 via iPhone
    Storyboard
    liuchang0812
        20
    liuchang0812  
       2016-08-17 19:27:39 +08:00
    先问是不是,再问为什么
    vamxmen
        21
    vamxmen  
       2016-08-17 19:29:02 +08:00 via Android
    编程最大的痛点是不知何处出来的 bug 啊,还有就是跨平台跨终端多分辨率适配这些。以后要是标准能统一,不用考虑性能优化应该就很方便了吧。小白勿喷
    wsy2220
        22
    wsy2220  
       2016-08-17 20:09:58 +08:00
    等项目大了你就知道有多坑了
    acros
        23
    acros  
       2016-08-17 20:13:05 +08:00
    楼上说到了 UE4 的蓝图。
    这个蓝图脚本,稍复杂一点的功能实现,各种方块线条绕在一起,看得我眼瞎啊····
    ashchen
        24
    ashchen  
    OP
       2016-08-17 21:41:36 +08:00
    @uxstone 请你用回 dos 你愿意吗? 智能手机让你输入命令行你愿意吗?
    caomaocao
        25
    caomaocao  
       2016-08-17 21:48:17 +08:00
    知道梯形图吗?
    levn
        26
    levn  
       2016-08-17 21:53:40 +08:00 via Android
    。。我们干嘛不画画交流呢
    nevin47
        27
    nevin47  
       2016-08-17 21:56:12 +08:00
    我想了想至少以下几个方面必然不可能:
    高性能编码场景
    生产场景下的机器学习 /数据分析
    嵌入式开发

    图像化编程实际应用中我目前见到的只有 Simulink 建模,不过大型工程 Simulink 的图看得是非常蛋疼,最终落地还是需要人工转 C 实现
    zpvip
        28
    zpvip  
       2016-08-17 22:38:05 +08:00
    RoundCat
        29
    RoundCat  
       2016-08-17 22:57:37 +08:00 via Android
    用过 LabVIEW ,受不了图形编程,感觉特别不自由
    uxstone
        30
    uxstone  
       2016-08-17 22:57:49 +08:00
    @ashchen 软件使用者,软件生产者..............
    canautumn
        31
    canautumn  
       2016-08-17 23:07:51 +08:00 via Android
    用过 labview 的应该有体会,除了简单的信息流,写着写着就有插入一段 matlab 脚本的冲动。如果你有洁癖,就得花很大功夫搞明白相同的功能用 labview 怎么实现,往往比用脚本花费多得多的时间。不是说图形编程一点用没有,还是要看适合干啥。
    monnand
        32
    monnand  
       2016-08-17 23:29:00 +08:00 via Android   ❤️ 4
    其实图像的表现力还是不如视频强。应该让程序员在摄像头前跳舞编程
    yangff
        33
    yangff  
       2016-08-17 23:49:25 +08:00
    感觉在写状态机上还是有点用的……
    exoticknight
        34
    exoticknight  
       2016-08-18 00:13:25 +08:00
    我感觉还不如发展一下自动生成代码实际点……
    RqPS6rhmP3Nyn3Tm
        35
    RqPS6rhmP3Nyn3Tm  
       2016-08-18 00:18:01 +08:00 via iPad

    LEGO MINDSTORM
    msg7086
        36
    msg7086  
       2016-08-18 01:11:52 +08:00
    不要耍××,先问×××,再问×××。

    Macromedia Authorware 二十年前我们就在玩了。

    msg7086
        37
    msg7086  
       2016-08-18 01:20:08 +08:00   ❤️ 1
    #24 @ashchen
    你这个就在瞎扯了。要说图形好,让你用 Windows 3.1 你用吗?还说 DOS 呢。
    要举例的话也举个现代点的,至少是最近二十年内的技术吧。
    Linux Shell 环境,全球的软件开发工程师、运维工程师,各路程序员都在用。
    Windows CMD 命令行,也是一大堆人在用。
    Windows Server 的最小化安装就是给你个 PowerShell 来管理,一样好用。
    何必要把「命令行」概念代换成「二三十年前的软件」呢?
    jadecoder
        38
    jadecoder  
       2016-08-18 01:23:10 +08:00
    前阵子我一直在找能够描述流程图的 DSL ,流程图复杂了比代码难搞多了。 LZ 做过正经项目吗?
    scnace
        39
    scnace  
       2016-08-18 01:23:59 +08:00 via Android
    https://github.com/google/blockly
    是啊是这种只要拖一拖的?(你以为玩 Dreamweaver 啊?
    cuebyte
        40
    cuebyte  
       2016-08-18 03:38:44 +08:00
    @scnace 乍一看上去很有意思,但是一细看也不过是给代码加了个背景色
    cxbig
        41
    cxbig  
       2016-08-18 06:26:24 +08:00
    Scratch...
    paulagent
        42
    paulagent  
       2016-08-18 06:43:33 +08:00
    看注册日期, po 主也算是老人了啊。
    sloppysop
        43
    sloppysop  
       2016-08-18 07:24:54 +08:00 via iPhone
    其实说图形化不好的诸位,可以看一下特德姜的科幻小说 <<你一生的故事>>。
    再比如,你在一秒钟看一幅图,可以明白的事,为什么要花十分钟去线性地一个字一个字阅读呢
    doubleflower
        44
    doubleflower  
       2016-08-18 07:38:19 +08:00
    @sloppysop 一副图本身包含大量的细节(你画过画就知道了),而一个程序也是,这些逻辑是不可压缩的,你假想变成可视化后这些本质性逻辑被粗粒的图形包含那是很可笑的,就象压缩后的文件不可再压缩。
    sloppysop
        45
    sloppysop  
       2016-08-18 07:52:09 +08:00
    @doubleflower 我感觉一幅图本身就像一个黑箱吧,你看一眼,有了结论,认知里有了输入和输出,这些逻辑的综合,也是有个结果的吧? 文字的输入是一个一个线性的,但是图片应该是块状的吧? 不是程序员,不懂,只是给个思路。
    unique
        46
    unique  
       2016-08-18 07:56:45 +08:00
    服务器为何普遍用 linux
    doubleflower
        47
    doubleflower  
       2016-08-18 08:15:12 +08:00
    @sloppysop 那是因为大脑和眼睛的硬件本身为看图而设计,和程序不是一回事。一个程序算法的步骤是压缩不了的。
    scnace
        48
    scnace  
       2016-08-18 08:40:37 +08:00 via Android
    @cuebyte 好像是面向 小学的吧 我大天朝以后小学开课可以用这个呀(逃
    ashchen
        49
    ashchen  
    OP
       2016-08-18 08:50:38 +08:00
    @unique 编程是服务器的日常吗?
    ashchen
        50
    ashchen  
    OP
       2016-08-18 08:57:04 +08:00
    @sloppysop 对,我就是这个意思,编程到底是编逻辑还是敲表达式? 流程图更直观

    现在需要的是将各类程序代码转化成图形表达。这应该是个世纪工程, po 主也也只是个思想的巨人,行动的矮子
    arens
        51
    arens  
       2016-08-18 08:57:35 +08:00
    当然有需求,这种领域不会毫无趋势的。只是没人愿意在这方面专注罢了,而且这种方式也不效率吧
    finian
        52
    finian  
       2016-08-18 08:59:54 +08:00
    楼主还是太年轻,可视化编程早就出现了(看看 http://coolshell.cn/articles/11094.html )。国内大一点的 ERP 厂商基本上都有一套通过拖放业务组件生成业务代码的工具。印象中几年前普元的 EOS 有一套完全可视化编程的工具,就连 if 这种流程也是通过拖放组件来完成的。。。如果用在稍有点规模的项目上,这开发效率可想而知是有多酸爽啊。。。我用鼠标拖个组件并且配置(连接)各种参数的时间,估计够我敲百来行代码了。所以你去实际体验下这些可视化编程工具,就知道为什么不普及了。
    ashchen
        53
    ashchen  
    OP
       2016-08-18 09:03:30 +08:00
    @msg7086 都在用的就是好的?

    之前之所以没有图形化,是因为触摸屏还没流行起来,现在谁在触摸屏的手机输入命令? 以后还会有 3D 的输入交互设备,全息影像。时代会变,那个时候的确还会有命令行,用的人会有多少?
    zlg881215
        54
    zlg881215  
       2016-08-18 09:05:19 +08:00
    LabVIEW
    ashchen
        55
    ashchen  
    OP
       2016-08-18 09:12:25 +08:00
    @finian 其实就是在等这样的回复,考察下已有的图形编程。(看看 http://coolshell.cn/articles/11094.html
    sloppysop
        56
    sloppysop  
       2016-08-18 09:18:12 +08:00
    @doubleflower 楼主的意思是,如果把语言模块化,比如一个模块对应一个功能,只考虑输入和输出,类似一个黑箱,不用去管黑箱内部的逻辑和算法。
    WhatIf
        57
    WhatIf  
       2016-08-18 09:27:23 +08:00
    @jadecoder 参考 bpmn2.0 ,配合一些设计器
    incompatible
        58
    incompatible  
       2016-08-18 09:30:24 +08:00 via iPhone
    @sloppysop 你说的事情现实中已经存在了,就是 ppt 。
    然而程序员并不能只靠 ppt 就升职加薪或者帮公司赚到钱,背后的代码是不可或缺的。
    fjzjk
        59
    fjzjk  
       2016-08-18 09:32:20 +08:00
    @msg7086 确实,这是我们小学玩的。当然玩玩就算了,没有拿他做什么
    sloppysop
        60
    sloppysop  
       2016-08-18 09:43:03 +08:00
    @incompatible 程序员也有不同程度的吧,有深层的,也有表层的吧,楼主的意思是,如何把编程更简单,面向的人群更广。比如我不是程序员,但是我想自己做一个小工具来实现某种自动化功能,这时候可视化的编程就比学习一门专业的语言更方便吧
    ashchen
        61
    ashchen  
    OP
       2016-08-18 09:58:01 +08:00
    @sloppysop 要管的,黑箱内部的逻辑也是一个 mitrix ,黑箱套黑箱,就是怎么展现的事情,需要大智慧
    Perry
        62
    Perry  
       2016-08-18 10:04:17 +08:00 via iPhone
    LEGO VEX 都有图形化编程语言的
    htfeng
        63
    htfeng  
       2016-08-18 10:14:29 +08:00
    目前的可视化编程还需要更明确更简洁的表达
    nomemo
        64
    nomemo  
       2016-08-18 10:16:57 +08:00
    MC 世界里,不有人制作了个 1KB 的存储器?
    murmur
        65
    murmur  
       2016-08-18 10:20:25 +08:00
    图样,稍微复杂点的程序别说可视化编程,写成流程图都要吐血
    Ixizi
        66
    Ixizi  
       2016-08-18 10:46:15 +08:00
    之前玩 Arduino 有图形化编程工具,最后还是转换成 c 代码的。
    ashchen
        67
    ashchen  
    OP
       2016-08-18 10:48:30 +08:00
    @murmur 看代码不是更要吐成河了?
    sloppysop
        68
    sloppysop  
       2016-08-18 11:05:24 +08:00 via iPhone
    @ashchen 或者说,我用标准化的零部件组装成了一个机器,我不需要关心零部件是用铁还是塑料,或者说我不用自己去炼铁吧?
    autocar23
        69
    autocar23  
       2016-08-18 11:59:16 +08:00
    底层实现还是得有人写吧?抽象程度高了,想要某个不存在的功能还得等待别人开发。抽象程度低了,又失去了图像化编程的优势和魅力。
    zhicheng
        70
    zhicheng  
       2016-08-18 12:07:37 +08:00
    @sloppysop 你当然需要关心零部件是用铁还是塑料的,这和你的需求和成本相关的。是不是需要自己去 “炼铁” 首先要考虑是不是有人能给你提供 “铁” 和 “铁” 的价格你能不能承受。如果没有,当然要自己 “炼” 。简单来说,如果一个应用能够满足你的需求,你把它买过来,那你就是在 “图形化编程” 。

    对于文字还是图像,根本区别在于表达方式是不是方便,目前看来在编程上文字更方便。即使是 Excel 这样图形化的软件,也需要记一些公式等命令。如果用 SQL 表达,就是一行代码。

    计算机程序出现的本质目的在于提高效率,需要你思考的是如何提高效率,而不是纠结在提高效率的形式上。用鼠标拖一个 Button 和直接用代码写出 Button() 没有什么特别大的不同,但后者显然更容易传承和表达。
    mikicomo
        71
    mikicomo  
       2016-08-18 12:58:48 +08:00
    那个啥,图形化编程语言还缺不缺经纪人?.....那个,你看我可以吗?
    sloppysop
        72
    sloppysop  
       2016-08-18 13:20:07 +08:00
    @zhicheng 至少应该是一个趋势吧,普通程序员不需要去关心内核和硬件的程序结构吧?
    zhicheng
        73
    zhicheng  
       2016-08-18 13:34:27 +08:00
    @sloppysop 什么时候普通程序员需要关心内核和硬件的程序结构了?即使专业程序员也不会在写普通程序的时候关心内核和硬件啊。所有的程序和代码,都应该是为了解决一些特定的问题。如果你写代码的时候思考的是 “我一定要用上 XXX 语言, XXX 系统, XXX 框架” ,那么很可能你会犯一些错误,至少会走一些弯路。
    jadecoder
        74
    jadecoder  
       2016-08-18 13:51:58 +08:00
    @WhatIf 我试了一下 processon 的 BPMN ,好像不能用代码生成图形
    msg7086
        75
    msg7086  
       2016-08-18 13:59:40 +08:00
    @ashchen 先纠正你的错误。
    「现在谁在触摸屏的手机输入命令?」
    首先,不仅仅是「现在」,从来就没有哪个触屏手机是命令行界面的,所以根本无法支持你的「从命令到图形的变迁」这么一说。
    其次,对于安卓机来说,就我所知道的,是有人装上 linux shell 以后用命令行的,主要是在手机上编译软件、管理服务器,或者调用程序做处理等等,不管是过去还是现在,都可以这样做,所以同样无法支持你的「从命令到图形的变迁」这么一说。

    至于你题目里问的为什么还没普及,上面也提到了,因为效率太低了。
    不管你用了多么高效率的界面设计,最后还是没敲键盘来得快。
    如果是 iPad 之类的触摸设备,正常情况下你只有一两个手指可以用,同时操作的物体就只能是一两个。
    如果是虚拟现实,也一样还是用手和手指操作。
    这和你 10 个手指可以全功率在键盘上生产的效率那真是差远了。
    你说手机平板用手指操作快,纯粹是因为这些设备根本就没有键盘罢了。

    以后就算是出了虚拟现实,在能够大脑直接干预输入之前,肯定还是虚拟键盘的输入效率最高。

    不信的话,你可以试试,不要用键盘,然后输入一段这么长的回复来辩我。再试试看用键盘。你就知道为什么大家都还在用键盘输入了。
    ashchen
        76
    ashchen  
    OP
       2016-08-18 14:04:59 +08:00
    @msg7086 微信直接发语音甩你几条街
    CharlesWu
        77
    CharlesWu  
       2016-08-18 14:11:03 +08:00
    什么算普及
    msg7086
        78
    msg7086  
       2016-08-18 14:16:06 +08:00
    @ashchen 语音并不能生产出代码。
    torchmu
        79
    torchmu  
       2016-08-18 14:17:34 +08:00
    说好的论点不是为什么不普及吗,怎么后面就歪到行不行了?
    ashchen
        80
    ashchen  
    OP
       2016-08-18 14:21:52 +08:00
    这是一个人机接口的问题,语音虽然不是代码,但对于人脑来说,语音比字符更容易被解析和执行
    如果有电脑版的语音解析编译器的话,为何不是代码?

    思想禁锢啦
    ashchen
        81
    ashchen  
    OP
       2016-08-18 14:25:39 +08:00
    并没有说图形化编程以后就不敲字母了,而是像代码折叠一样向上整理。 比如 一坨代码实现一个函数,如果这个函数是完整的,我只需要知道它的功能和参数即可,然后以图形代替,可以移动可放置
    Actrace
        82
    Actrace  
       2016-08-18 15:41:19 +08:00   ❤️ 1
    @msg7086 产品经理不是一直语音编程吗
    hxsf
        83
    hxsf  
       2016-08-18 15:50:07 +08:00
    @ashchen #81
    按照你这么说,和原来的“通过函数名来调用” 有何区别? 为了图形而图形?
    ashchen
        84
    ashchen  
    OP
       2016-08-18 16:05:38 +08:00
    为了搬砖而图形
    symeonchen
        85
    symeonchen  
       2016-08-18 16:13:29 +08:00
    图形化编程为什么没普及?因为相比于代码没有显著优势。
    图像化编程的优点是什么?我推测几个原因: 1. 操作方便(拖动放置) 2. 抽象程度高的时候易于使用。
    但,既然抽象程度高,那抽象成一个函数 /对象也是可以的,复制粘贴的操作也很容易使用。既然图形化在开发效率上没有提升,占用的资源还更多,自然替代不了代码。
    我认为,图形化编程在面向孩子( LEGO )、面向无编程基础的用户(教程)中会有不错的作用,但在日常开发中,图形化不见得是个好选择。
    另外, Android 上触屏点击,是抽象化程度的高低,属于用户 [使用] 的范畴,与图形化 [开发] 无关。说白了,作为用户而言,图形化方便,作为开发而言,图形化编程的必要性大大降低了,毕竟没必要多抽象一层。
    zaishanfeng
        86
    zaishanfeng  
       2016-08-18 17:05:22 +08:00 via Android
    楼主你可以躺着赚钱
    nekoyaki
        87
    nekoyaki  
       2016-08-18 17:52:37 +08:00   ❤️ 2
    都有飞机了楼主为什么还留着三条腿啊,锯了吧
    WhatIf
        88
    WhatIf  
       2016-08-18 18:00:26 +08:00
    @jadecoder bpmn 只是协议, 具体要看工具, 又很多成熟工具 ,比如 lambardi
    http://www.slideshare.net/yuvalbi/what-is-bpm-and-why-lombardi-eng 从第 8 页开始看
    xuyl
        89
    xuyl  
       2016-09-22 16:01:00 +08:00 via Android
    玩过 PLC 的人都知道,梯形图可以算图形编程了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5584 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 07:17 · PVG 15:17 · LAX 23:17 · JFK 02:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.