以后的趋势必定是图形化编程语言的天下
用 ipad 或类似指点类设备,拖下程序逻辑图就可以了,为何还苦逼的敲键盘?
1
ayang23 2016-08-17 16:05:50 +08:00 1
不用太大,来个十万行的项目感受一下图形编程,效果我想是这样的:
|
2
ayang23 2016-08-17 16:05:57 +08:00 5
|
3
66beta 2016-08-17 16:06:43 +08:00
visual studio 笑而不语
|
4
shimanooo 2016-08-17 16:13:31 +08:00
10 万行大多是细节。
图形化普及的话 1. 有大量 high-level 模块 2. 模块间可以方便地组合 |
5
em70 2016-08-17 16:13:40 +08:00
UE4 的蓝图就是这种东西,没想象中那么好,但确实降低了动画设计师编程的难度,对普通人来说比代码更难
|
6
tabris17 2016-08-17 16:20:35 +08:00
有啊。
UML 不就是么,统一建模“语言” |
7
designer 2016-08-17 16:22:38 +08:00 via iPhone
能理解为 “前端设计师” 吗
|
8
nicevar 2016-08-17 17:03:25 +08:00
年轻啊,典型中二想法,楼主应该还没见过产品经理
|
9
lightening 2016-08-17 17:07:58 +08:00
因为并不方便。
硬件设计领域,初学都会用画电路图的方式。但是一旦规模增长到一定程度(这程度并不是很大,一个加法器就会很复杂了),图形的方法已经完全无法管理和维护了。于是硬件设计人员也会使用类似编程语言的方式(硬件描述语言)来开发硬件。 |
10
fjzjk 2016-08-17 17:24:33 +08:00
虚幻 4 有蓝图。
unity 有 play maker 。 这类就是图形化编程语言了。但是实际上本质还是编程语言,需要编程思想,只不过把手写代码改成了可拖动的图标。对于入门后的开发者来说效率太低,只适合一些美工、设计想独立开发游戏时使用。 当然虚幻 4 的蓝图是大量使用的,虽然大型项目不怎么用,但多少还是会有一点 |
11
ashchen OP 代码当然是由逻辑图自动生成的。变量名,赋值之类也是自动实现的。
程序员要做的就是把流程图拖来拖去。具体代码都封装成模块。一点某个对象,会列出对象,方法,供连线 几十万代码也不是问题,总归要根据层级归纳成函数,类。别告诉我你一个方法里有几十万代码。 |
12
xcodebuild 2016-08-17 19:11:21 +08:00
所以你觉得编程的痛点居然是敲键盘么=。=
|
13
dacapoday 2016-08-17 19:13:52 +08:00
图的表现力不行,而且已经有 UML 了,即使是 UML 也很难用一种类型的图表征整个程序。如果是顶层设计,用封装好的功能模块组合实现 DAG 可以(正如虚幻 4 的 blueprint 和犀牛的 Grasshopper 还有 nodebox3)。但是具体的细节实现不行,首先在模块图里怎么表征环,递归?模块是纯函数还是有自身状态的实例?如果使用时序图,作用域又怎么表示?
|
14
clino 2016-08-17 19:21:10 +08:00 via Android
为什么要有文字文章,用图形图片视频就好了?
|
15
loading 2016-08-17 19:23:33 +08:00 via Android
Talk is cheap
|
16
uxstone 2016-08-17 19:25:40 +08:00
不知道你是在哪里看到这个趋势的
|
17
7z7 2016-08-17 19:26:29 +08:00
|
18
7z7 2016-08-17 19:27:12 +08:00
|
19
shippo7 2016-08-17 19:27:14 +08:00 via iPhone
Storyboard
|
20
liuchang0812 2016-08-17 19:27:39 +08:00
先问是不是,再问为什么
|
21
vamxmen 2016-08-17 19:29:02 +08:00 via Android
编程最大的痛点是不知何处出来的 bug 啊,还有就是跨平台跨终端多分辨率适配这些。以后要是标准能统一,不用考虑性能优化应该就很方便了吧。小白勿喷
|
22
wsy2220 2016-08-17 20:09:58 +08:00
等项目大了你就知道有多坑了
|
23
acros 2016-08-17 20:13:05 +08:00
楼上说到了 UE4 的蓝图。
这个蓝图脚本,稍复杂一点的功能实现,各种方块线条绕在一起,看得我眼瞎啊···· |
25
caomaocao 2016-08-17 21:48:17 +08:00
知道梯形图吗?
|
26
levn 2016-08-17 21:53:40 +08:00 via Android
。。我们干嘛不画画交流呢
|
27
nevin47 2016-08-17 21:56:12 +08:00
我想了想至少以下几个方面必然不可能:
高性能编码场景 生产场景下的机器学习 /数据分析 嵌入式开发 图像化编程实际应用中我目前见到的只有 Simulink 建模,不过大型工程 Simulink 的图看得是非常蛋疼,最终落地还是需要人工转 C 实现 |
28
zpvip 2016-08-17 22:38:05 +08:00
|
29
RoundCat 2016-08-17 22:57:37 +08:00 via Android
用过 LabVIEW ,受不了图形编程,感觉特别不自由
|
31
canautumn 2016-08-17 23:07:51 +08:00 via Android
用过 labview 的应该有体会,除了简单的信息流,写着写着就有插入一段 matlab 脚本的冲动。如果你有洁癖,就得花很大功夫搞明白相同的功能用 labview 怎么实现,往往比用脚本花费多得多的时间。不是说图形编程一点用没有,还是要看适合干啥。
|
32
monnand 2016-08-17 23:29:00 +08:00 via Android 4
其实图像的表现力还是不如视频强。应该让程序员在摄像头前跳舞编程
|
33
yangff 2016-08-17 23:49:25 +08:00
感觉在写状态机上还是有点用的……
|
34
exoticknight 2016-08-18 00:13:25 +08:00
我感觉还不如发展一下自动生成代码实际点……
|
35
RqPS6rhmP3Nyn3Tm 2016-08-18 00:18:01 +08:00 via iPad
有
LEGO MINDSTORM |
36
msg7086 2016-08-18 01:11:52 +08:00
|
37
msg7086 2016-08-18 01:20:08 +08:00 1
#24 @ashchen
你这个就在瞎扯了。要说图形好,让你用 Windows 3.1 你用吗?还说 DOS 呢。 要举例的话也举个现代点的,至少是最近二十年内的技术吧。 Linux Shell 环境,全球的软件开发工程师、运维工程师,各路程序员都在用。 Windows CMD 命令行,也是一大堆人在用。 Windows Server 的最小化安装就是给你个 PowerShell 来管理,一样好用。 何必要把「命令行」概念代换成「二三十年前的软件」呢? |
38
jadecoder 2016-08-18 01:23:10 +08:00
前阵子我一直在找能够描述流程图的 DSL ,流程图复杂了比代码难搞多了。 LZ 做过正经项目吗?
|
39
scnace 2016-08-18 01:23:59 +08:00 via Android
https://github.com/google/blockly
是啊是这种只要拖一拖的?(你以为玩 Dreamweaver 啊? |
41
cxbig 2016-08-18 06:26:24 +08:00
Scratch...
|
42
paulagent 2016-08-18 06:43:33 +08:00
看注册日期, po 主也算是老人了啊。
|
43
sloppysop 2016-08-18 07:24:54 +08:00 via iPhone
其实说图形化不好的诸位,可以看一下特德姜的科幻小说 <<你一生的故事>>。
再比如,你在一秒钟看一幅图,可以明白的事,为什么要花十分钟去线性地一个字一个字阅读呢 |
44
doubleflower 2016-08-18 07:38:19 +08:00
@sloppysop 一副图本身包含大量的细节(你画过画就知道了),而一个程序也是,这些逻辑是不可压缩的,你假想变成可视化后这些本质性逻辑被粗粒的图形包含那是很可笑的,就象压缩后的文件不可再压缩。
|
45
sloppysop 2016-08-18 07:52:09 +08:00
@doubleflower 我感觉一幅图本身就像一个黑箱吧,你看一眼,有了结论,认知里有了输入和输出,这些逻辑的综合,也是有个结果的吧? 文字的输入是一个一个线性的,但是图片应该是块状的吧? 不是程序员,不懂,只是给个思路。
|
46
unique 2016-08-18 07:56:45 +08:00
服务器为何普遍用 linux
|
47
doubleflower 2016-08-18 08:15:12 +08:00
@sloppysop 那是因为大脑和眼睛的硬件本身为看图而设计,和程序不是一回事。一个程序算法的步骤是压缩不了的。
|
50
ashchen OP |
51
arens 2016-08-18 08:57:35 +08:00
当然有需求,这种领域不会毫无趋势的。只是没人愿意在这方面专注罢了,而且这种方式也不效率吧
|
52
finian 2016-08-18 08:59:54 +08:00
楼主还是太年轻,可视化编程早就出现了(看看 http://coolshell.cn/articles/11094.html )。国内大一点的 ERP 厂商基本上都有一套通过拖放业务组件生成业务代码的工具。印象中几年前普元的 EOS 有一套完全可视化编程的工具,就连 if 这种流程也是通过拖放组件来完成的。。。如果用在稍有点规模的项目上,这开发效率可想而知是有多酸爽啊。。。我用鼠标拖个组件并且配置(连接)各种参数的时间,估计够我敲百来行代码了。所以你去实际体验下这些可视化编程工具,就知道为什么不普及了。
|
53
ashchen OP @msg7086 都在用的就是好的?
之前之所以没有图形化,是因为触摸屏还没流行起来,现在谁在触摸屏的手机输入命令? 以后还会有 3D 的输入交互设备,全息影像。时代会变,那个时候的确还会有命令行,用的人会有多少? |
54
zlg881215 2016-08-18 09:05:19 +08:00
LabVIEW
|
55
ashchen OP @finian 其实就是在等这样的回复,考察下已有的图形编程。(看看 http://coolshell.cn/articles/11094.html )
|
56
sloppysop 2016-08-18 09:18:12 +08:00
@doubleflower 楼主的意思是,如果把语言模块化,比如一个模块对应一个功能,只考虑输入和输出,类似一个黑箱,不用去管黑箱内部的逻辑和算法。
|
58
incompatible 2016-08-18 09:30:24 +08:00 via iPhone
@sloppysop 你说的事情现实中已经存在了,就是 ppt 。
然而程序员并不能只靠 ppt 就升职加薪或者帮公司赚到钱,背后的代码是不可或缺的。 |
60
sloppysop 2016-08-18 09:43:03 +08:00
@incompatible 程序员也有不同程度的吧,有深层的,也有表层的吧,楼主的意思是,如何把编程更简单,面向的人群更广。比如我不是程序员,但是我想自己做一个小工具来实现某种自动化功能,这时候可视化的编程就比学习一门专业的语言更方便吧
|
62
Perry 2016-08-18 10:04:17 +08:00 via iPhone
LEGO VEX 都有图形化编程语言的
|
63
htfeng 2016-08-18 10:14:29 +08:00
目前的可视化编程还需要更明确更简洁的表达
|
64
nomemo 2016-08-18 10:16:57 +08:00
MC 世界里,不有人制作了个 1KB 的存储器?
|
65
murmur 2016-08-18 10:20:25 +08:00
图样,稍微复杂点的程序别说可视化编程,写成流程图都要吐血
|
66
Ixizi 2016-08-18 10:46:15 +08:00
之前玩 Arduino 有图形化编程工具,最后还是转换成 c 代码的。
|
68
sloppysop 2016-08-18 11:05:24 +08:00 via iPhone
@ashchen 或者说,我用标准化的零部件组装成了一个机器,我不需要关心零部件是用铁还是塑料,或者说我不用自己去炼铁吧?
|
69
autocar23 2016-08-18 11:59:16 +08:00
底层实现还是得有人写吧?抽象程度高了,想要某个不存在的功能还得等待别人开发。抽象程度低了,又失去了图像化编程的优势和魅力。
|
70
zhicheng 2016-08-18 12:07:37 +08:00
@sloppysop 你当然需要关心零部件是用铁还是塑料的,这和你的需求和成本相关的。是不是需要自己去 “炼铁” 首先要考虑是不是有人能给你提供 “铁” 和 “铁” 的价格你能不能承受。如果没有,当然要自己 “炼” 。简单来说,如果一个应用能够满足你的需求,你把它买过来,那你就是在 “图形化编程” 。
对于文字还是图像,根本区别在于表达方式是不是方便,目前看来在编程上文字更方便。即使是 Excel 这样图形化的软件,也需要记一些公式等命令。如果用 SQL 表达,就是一行代码。 计算机程序出现的本质目的在于提高效率,需要你思考的是如何提高效率,而不是纠结在提高效率的形式上。用鼠标拖一个 Button 和直接用代码写出 Button() 没有什么特别大的不同,但后者显然更容易传承和表达。 |
71
mikicomo 2016-08-18 12:58:48 +08:00
那个啥,图形化编程语言还缺不缺经纪人?.....那个,你看我可以吗?
|
73
zhicheng 2016-08-18 13:34:27 +08:00
@sloppysop 什么时候普通程序员需要关心内核和硬件的程序结构了?即使专业程序员也不会在写普通程序的时候关心内核和硬件啊。所有的程序和代码,都应该是为了解决一些特定的问题。如果你写代码的时候思考的是 “我一定要用上 XXX 语言, XXX 系统, XXX 框架” ,那么很可能你会犯一些错误,至少会走一些弯路。
|
75
msg7086 2016-08-18 13:59:40 +08:00
@ashchen 先纠正你的错误。
「现在谁在触摸屏的手机输入命令?」 首先,不仅仅是「现在」,从来就没有哪个触屏手机是命令行界面的,所以根本无法支持你的「从命令到图形的变迁」这么一说。 其次,对于安卓机来说,就我所知道的,是有人装上 linux shell 以后用命令行的,主要是在手机上编译软件、管理服务器,或者调用程序做处理等等,不管是过去还是现在,都可以这样做,所以同样无法支持你的「从命令到图形的变迁」这么一说。 至于你题目里问的为什么还没普及,上面也提到了,因为效率太低了。 不管你用了多么高效率的界面设计,最后还是没敲键盘来得快。 如果是 iPad 之类的触摸设备,正常情况下你只有一两个手指可以用,同时操作的物体就只能是一两个。 如果是虚拟现实,也一样还是用手和手指操作。 这和你 10 个手指可以全功率在键盘上生产的效率那真是差远了。 你说手机平板用手指操作快,纯粹是因为这些设备根本就没有键盘罢了。 以后就算是出了虚拟现实,在能够大脑直接干预输入之前,肯定还是虚拟键盘的输入效率最高。 不信的话,你可以试试,不要用键盘,然后输入一段这么长的回复来辩我。再试试看用键盘。你就知道为什么大家都还在用键盘输入了。 |
77
CharlesWu 2016-08-18 14:11:03 +08:00
什么算普及
|
79
torchmu 2016-08-18 14:17:34 +08:00
说好的论点不是为什么不普及吗,怎么后面就歪到行不行了?
|
80
ashchen OP 这是一个人机接口的问题,语音虽然不是代码,但对于人脑来说,语音比字符更容易被解析和执行
如果有电脑版的语音解析编译器的话,为何不是代码? 思想禁锢啦 |
81
ashchen OP 并没有说图形化编程以后就不敲字母了,而是像代码折叠一样向上整理。 比如 一坨代码实现一个函数,如果这个函数是完整的,我只需要知道它的功能和参数即可,然后以图形代替,可以移动可放置
|
84
ashchen OP 为了搬砖而图形
|
85
symeonchen 2016-08-18 16:13:29 +08:00
图形化编程为什么没普及?因为相比于代码没有显著优势。
图像化编程的优点是什么?我推测几个原因: 1. 操作方便(拖动放置) 2. 抽象程度高的时候易于使用。 但,既然抽象程度高,那抽象成一个函数 /对象也是可以的,复制粘贴的操作也很容易使用。既然图形化在开发效率上没有提升,占用的资源还更多,自然替代不了代码。 我认为,图形化编程在面向孩子( LEGO )、面向无编程基础的用户(教程)中会有不错的作用,但在日常开发中,图形化不见得是个好选择。 另外, Android 上触屏点击,是抽象化程度的高低,属于用户 [使用] 的范畴,与图形化 [开发] 无关。说白了,作为用户而言,图形化方便,作为开发而言,图形化编程的必要性大大降低了,毕竟没必要多抽象一层。 |
86
zaishanfeng 2016-08-18 17:05:22 +08:00 via Android
楼主你可以躺着赚钱
|
87
nekoyaki 2016-08-18 17:52:37 +08:00 2
都有飞机了楼主为什么还留着三条腿啊,锯了吧
|
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 页开始看 |
89
xuyl 2016-09-22 16:01:00 +08:00 via Android
玩过 PLC 的人都知道,梯形图可以算图形编程了。
|