0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么说可视化编程是糟糕的想法?

电子工程师 来源:lq 2018-12-16 11:14 次阅读

可视化编程语言可以让程序员通过操纵图形元素来创建程序,而无需键入文本命令。

众所周知的例子是 Scratch,这是一种麻省理工学院开发的可视化编程语言,用来教孩子们学编程。

该语言的优势在于新手和普通用户可以更容易接触编程。二十世纪九十年代曾经有一种非常流行的运动,即通过所谓的 CASE 工具将这类工具带入企业,这些企业的系统可以通过 UML 进定义和生成,而无需雇佣训练有素的软件开发人员。

这涉及“round tripping”的概念,即通过可视化的手法为系统建模,根据模型生成程序代码,而且任何代码的变更都可以反向反映到模型上。但最终这些工具未能兑现承诺,而且大多数这类尝试现在也已基本放弃了。

因此,除了一些非常有限的领域外,可视化编程都未能成功。其中的原因基本上可以归于以下几种对编程的误解:

文本编程语言混淆了本质上很简单的过程。

抽象和解耦是外围问题,对编程的意义不大。

为支持编程而开发的工具并不重要。

误解一:文本编程语言混淆了编程本质

第一个误解认为软件开发的门槛很高,因为文本编程语言混淆了编程的本质。Scratch 在教育学家中的流行就属于这种误解。

该观点认为编程实际上非常简单,我们只需通过清晰的图形来表现,就可以大大降低创建和阅读软件所需的学习曲线和努力程度。

我认为这种误解是因为有些人未能真正读懂用标准的文本编程语言编写的程序,并想象可以将程序转换成盒子和箭头等图形元素。

如果你这样做,很快就会发现一行代码经常需要映射到多个盒子上,一个简单的程序包含数百行代码的情况是常态,因此这将转化为成百上千个图形元素。在头脑中理解如此复杂的图形往往比阅读同等的文本更加困难。

在这个问题上,大多数可视化编程语言的解决方案是使用“块”来代表更为复杂的操作,从而可以让每个可视化元素都代表一大段文本代码。可视化流程工具是罪魁祸首。

问题是我们需要在某个地方定义这些代码。于是,这就成了“属性对话编程”。可视化元素本身仅代表最高级别的程序流程,而大多数的工作是通过隐藏在盒子中的标准文本代码完成。这种做法酿成了现如今两边皆难堪的局面。一边的文本编程语言没有现代工具支持。

属性对话编程通常是低配版的标准开发环境,而且你必须选择特定的语言,通常是某种脚本语言。而在另一边,可视化元素只能等待有经验的程序员创建,而且只有通过阅读底层的代码才能读懂程序,所以大多数视觉化表现手法的优势都丧失了。

视觉上的“代码”和文本代码之间存在着阻抗失配,而且程序员必须不断在两者之间来回切换,时间都浪费在满足图形编程工具的需求上,而不是解决手头的问题。

误解二:抽象和解耦是外围问题

因此才有了第二个误解,即抽象和解耦是外围问题。可视化编程假设大多数程序都是简单的程序序列,有点像流程图。实际上,这也是大多数新手程序员想象的软件工作原理

然而,一旦程序的规模超出了简单的示例,新手程序员很快就会被复杂性压垮。他们发现很难推断程序的代码库,而且常常难以大规模地创建稳定又高效的软件。

编程语言中的大多数创新都是为了管理复杂性,最常见的是通过抽象、封装和解耦。面向对象和函数式编程中所有类型的系统和装置实际上都是为了努力控制这种复杂性。大多数专业程序员会持续不断地抽象和解耦代码。

实际上,好代码和差代码之间的本质区别也在于此。可视化编程工具很少拥有有效的机制来执行这些操作,而开发人员也必将陷入二十世纪七十年代 BASIC 的漩涡中。

误解三:为支持编程而开发的工具并不重要

最后一个误解是即使没有现代编程工具的支持,可视化程序员也可以编程。想想代码编辑器和 IDE 漫长的演变过程。

例如,Visual Studio 支持高效的智能感知,可以单独查找基类库中数千个 API。缺乏良好的源代码控制是绝大多数可视化编程工具的另一个主要的缺点。即使这些可视化工具的布局保存为文本的格式,代码的差异也毫无可读性可言,因此毫无意义。

我们很难从大块的 XML 或 JSON 找出每行代码的修改来源。一些对程序的功能执行没有任何影响的因素,比如图形元素的位置和大小,也会导致元数据的变化,这让解析差异变得更加困难。

文本编程语言知道将不同的代码保存到不同的源代码文件中,因此系统某一部分的变更很容易与另一部分的变更合并。

可视化编程工具通常会将每个图表保存在一个文件中,这意味着合并也会成问题,当遇到难以解析差异的语义时,难度会更大。

总之,可视化编程工具提供的优势,即简化程序的创建和理解只是一个海市蜃楼。

只有在非常简单的编程中才可行,在这种不理想的形势下,最好的结果也不过是说:可视化元素是具有混淆副作用的文本代码的容器。

补充说明

可能在第一段中加上 Scratch 的截图并用作主要示例是错误的做法。我不是一名教育工作者,我不知道 Scratch 是否可以作为一种有效的教学工具。

许多人提到,Scratch 在编程教学方面非常有用,特别是对儿童而言。任何可以引导人们进入精彩纷呈的编程世界的东西,我都欢迎。

我并不想通过这篇文章抨击 Scratch,提到它只是因为它是大多数人都听过的最有名的可视化编程系统。

有人在 Reddit 上提到的另一个反面例子是静态结构工具,例如 UI 设计工具、数据库模式设计工具或类设计工具。

我同意这些工具非常有用。任何有助于可视化数据结构、或程序的大规模结构的工具都是好东西。

但这些不足以支撑他们的论点。PowerBuilder 等 90 个试图通过在图形可视化之上构建工具,来开发出一个完全不用写代码的开发环境,可是最终都失败了,这恰恰证明了我的观点。

你如何看待可视化编程?

针对可视化编程并不是理想的想法,评论区的不少网友也发表了不一样的看法:

评论1:

你混淆了图形数据流语言(带有隐藏选项框和连接这些框的箭头)与Scratch。Scratch 是一种文本语言,里面的程序语句和类型是预定义的形状,可以消除语法错误。

你无法在 Scratch 中犯语法错误,因为这些框无法组合在一起。 除了这种语法帮助之外,Scratch 不会隐藏任何内容,并且格式也与纯文本语言没有差别。

也就是说,我同意你说的有关其他教学语言的大部分内容,例如用于 Lego Mindstorms 机器人套件的语言。

该语言源自 LabView,大多数初学者发现很难超越几个块或连接变量之类的东西。我的猜测是,一种能够通过变量赋值来达到复杂性障碍的语言并不能很好地扩展:-)。

评论 2:

我认为你的文章的出发点不正确,因为可视化编程根本不是为程序员准备的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    10

    文章

    1945

    浏览量

    34784
  • 可视化
    +关注

    关注

    1

    文章

    1195

    浏览量

    20960

原文标题:为什么说可视化编程是糟糕的想法?

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是大屏数据可视化?特点有哪些?

    大屏数据可视化是指通过大屏幕展示大量数据和信息,以直观、可视化的方式帮助用户理解和分析数据。这种展示方式通常用于展示复杂的数据集、实时监控系统、企业管理仪表盘等。以下是关于 大屏数据可视化 的详细
    的头像 发表于 12-16 16:59 210次阅读

    智慧能源可视化监管平台——助力可视化能源数据管理

    博达可视化大屏设计平台在智慧能源领域的价值体现在实时监控、数据可视化、决策支持和效率提升等方面。借助该平台,企业可以轻松搭建智慧能源类可视化大屏,更加精确和高效地管理生产和生活,实现能源的可持续发展。
    的头像 发表于 11-29 10:00 347次阅读
    智慧能源<b class='flag-5'>可视化</b>监管平台——助力<b class='flag-5'>可视化</b>能源数据管理

    智慧楼宇可视化的优点

    智慧楼宇可视化是指通过数据可视化技术来展示和分析楼宇的各种数据,为楼宇管理者和用户提供直观、清晰的信息展示和决策支持。以下是智慧楼宇可视化的优点,详细介绍其在楼宇管理和运营中的重要作用: 1.实时
    的头像 发表于 11-19 14:25 190次阅读

    三维可视化的魅力与应用

    三维可视化是一种强大的工具,它融合了艺术、科学和技术,通过在三维空间中呈现数据、概念和想法,为人们提供了一种直观而生动的方式来理解和探索信息。这项技术在当今世界中的应用非常广泛,涵盖了科学、教育
    的头像 发表于 07-17 14:19 267次阅读

    大屏数据可视化 开源

    在当今信息爆炸的时代,数据已经成为各个行业决策制定和业务发展的关键。为了更直观、准确地理解和利用海量数据, 大屏数据可视化 成为一种强大的工具。通过将数据以图表、图形等形式展示在大屏幕上,不仅
    的头像 发表于 06-27 16:06 419次阅读
    大屏数据<b class='flag-5'>可视化</b> 开源

    如何实现园区大屏可视化

    孪生可视化 构建平台利用Web三维可视化技术对现实场景进行仿真,实现园区级业务场景 的可视化呈现,助力企业快速完成项目的实施。实现园区场景立体可先,极致可视。那么,今天古河云科技就来给
    的头像 发表于 06-19 15:39 439次阅读
    如何实现园区大屏<b class='flag-5'>可视化</b>?

    态势数据可视化技术有哪些

    智慧华盛恒辉态势数据可视化技术是一种将数据以图形、图像、动画等视觉形式展现出来的技术,特别是在处理和分析态势数据时,该技术能够将复杂的数据转化为直观、易于理解的视觉表现。以下是态势数据可视化技术
    的头像 发表于 06-11 15:47 385次阅读

    上位机可视化界面编程软件有哪些

    上位机可视化界面编程软件是一类用于开发图形用户界面(GUI)的软件工具,它们通常提供了丰富的界面元素、易于使用的编程接口和强大的功能。这些软件可以帮助开发者快速构建出美观、易用且功能丰富的应用程序
    的头像 发表于 06-06 10:48 2565次阅读

    c语言怎么做可视化界面

    C语言是一种通用的编程语言,广泛应用于系统编程、嵌入式开发等领域。虽然C语言本身并不支持直接创建可视化界面,但通过结合一些图形库和工具,我们可以为C语言程序开发出直观、易用的可视化界面
    的头像 发表于 06-06 10:46 2390次阅读

    智慧大屏是如何实现数据可视化的?

    智慧大屏,作为数据可视化的重要载体,已在城市管理、交通监控、商业运营等领域广泛应用。本文旨在阐述智慧大屏实现数据可视化的关键技术和方法,包括数据源管理、数据处理、视觉编码、用户界面与交互设计等。
    的头像 发表于 06-04 15:02 627次阅读
    智慧大屏是如何实现数据<b class='flag-5'>可视化</b>的?

    大屏数据可视化的作用和意义

    大屏数据可视化是指利用大屏幕设备展示数据信息,通过图表、图像、动画等视觉手段将数据呈现出来,以便用户能够直观、清晰地理解数据背后的含义和关联。在信息化时代,数据已经成为企业决策和运营的重要依托,而
    的头像 发表于 06-03 17:56 687次阅读

    数据可视化:企业数字建设效果的呈现

    数据可视化即通过图表的形式将数据的内在信息有逻辑性地呈现给用户,使用户更容易发现数据中蕴藏的规律,找出问题,进而做出决策;另一方面,数据可视化项目也是一张重要的名片,是企业数字建设效果的呈现。本文
    的头像 发表于 04-29 10:18 473次阅读
    数据<b class='flag-5'>可视化</b>:企业数字<b class='flag-5'>化</b>建设效果的呈现

    FUXA基于Web的过程可视化软件案例

    FUXA——基于Web的过程可视化软件
    发表于 04-24 18:32 2次下载

    态势数据可视化技术有哪些

    智慧华盛恒辉态势数据可视化技术是一种将复杂、动态的态势数据以直观、易于理解的方式展现出来的技术手段。以下是几种主要的态势数据可视化技术: 网络安全态势指标可视化分析系统及方法,针对安全态势指标不准
    的头像 发表于 04-22 15:17 418次阅读

    可视化全程追溯,可视化资产管理系统

    摘要:本文将从应用价值、系统功能、资产盘点、资产出入库、资产定位以及系统实现能效等几个方面,阐述新导物联可视化资产管理系统为企业提供的优势,以提升资产管理的效率和准确度。 一、应用价值 可视化资产
    的头像 发表于 01-11 13:54 527次阅读
    <b class='flag-5'>可视化</b>全程追溯,<b class='flag-5'>可视化</b>资产管理系统