代码之家  ›  专栏  ›  技术社区  ›  Benoît photo_tom

用图形化的方式写C++?

  •  4
  • Benoît photo_tom  · 技术社区  · 16 年前

    我正在考虑设计一个应用程序,允许人们图形化地开发C++代码。当我发现刮痕时,我很惊讶(参见 site tutorial videos

    我相信大多数C++都可以图形化地表示,除了预处理器指令和可能的函数指针之外。

    你认为C++特征可以是(或不)由图形项目表示的吗? 这样一个应用程序的优缺点是什么?它比“普通”C++要简单得多?

    概述及更多:

    赞成的意见:

    • 简单适用于小型应用程序
    • 有助于避免打字错误

    欺骗:

    • 对于大型(中型?)应用程序可能无法读取
    • 对于有经验的程序员来说,手工编码速度更快
    • C++是这种方法过于复杂的语言。

    考虑到我们在我的工作中已经有了相当多的C++代码,我并不是在寻找一种全新的编程方式。我正在考虑另一种与遗留代码完全兼容的编程方法。某种“病毒性语言”,人们会用它来编写新代码,并希望最终用它来替换现有的代码(在可能有用的地方)。

    你对这种病毒式传播方式有何看法?

    说到手动编程和图形编程,我倾向于同意你的答案。这就是为什么,理想情况下,我会找到一种方法,让用户总是在键入和图形编程之间进行选择。逐行解析器(+部分解释器)可能能够将类型化代码转换为图形设计。信息技术 可能的让我们祈祷吧。

    在提供打字和图形编程功能时,我是否应该仔细考虑和分析这些功能?

    there 有关模板类的图形表示的示例,请参见。框表示类或类模板。第一个顶部节点是类本身,下一个(如果有)是类内部的typedef指令。底部节点是模板参数。当然,边将类连接到实例化的模板参数。 我已经有了一个处理此类类型级别图的原型。

    如果您觉得这种表示模板类的方法是完全错误的,请毫不犹豫地说出来,并说明原因!

    11 回复  |  直到 13 年前
        1
  •  9
  •   Salman A    16 年前

    虽然我很喜欢刮擦,但它仍然是 对于一个有经验的程序员来说,使用文本编辑器编写代码比拖动块更快,这一点在任何图形编程环境中都得到了反复的证明。

        2
  •  6
  •   JavaAndCSharp Matt Lacey    13 年前

    编写代码


    要剖析你的优点:

    直觉的 -将其替换为“误导”。它使它看起来简单,但事实并非如此:只要它简单,VB.NET就更简单。当它变得复杂时,视觉设计就会成为障碍。

    -这就是一个好的风格、一致性和最后一个重要的智能感知的意义所在。当事情不再简单时,你需要的东西。


    错误级别

    您的思路错误:C++语句不是可重用的、健壮的组件,它们更像是一大堆需要被组装在一起的齿轮。 正确地 . C++的复杂性和例外(对规则)甚至不适合。

    如果您想让事情变得简单,您需要更高级别的可重用组件。即使你有这些,把它们连在一起也不简单。尽管经过多年的努力,在许多环境中进行了多次尝试,但这种方法有时有效,但往往失败。


    病毒的


    IDE支持


    可视化

        3
  •  5
  •   grieve    16 年前

    C++的早期版本最初被编写成编译成C,然后C被编译为正常。

    CIL , Java ByteCode ,或者其他任何让你喜欢的东西。

    您可能希望签出的其他图形语言有 LabVIEW ,以及更普遍的 visual programming languages .

        4
  •  2
  •   John Feminella    16 年前

    非平凡程序的复杂性通常太高,无法用信息含量低的图形符号表示。

    因此,实际上,his仅用于教学目的和非常简单的程序。但对于这样的产品来说,这仍然是一个很好的目标市场。有时人们很难掌握基本原理,而视觉模型可能正是帮助人们点击的工具。

        5
  •  1
  •   MarkusQ    16 年前

    在你脑子里

    至于你的问题,我认为模板是一种更难/更有趣的东西。它们无处不在,携带着在设计工具时无法访问的信息。以一种有用的方式让用户了解这一点应该是一个有趣的挑战。

        6
  •  1
  •   dirkgently    16 年前

    面向对象设计。因此,类、继承、多态性、可变性、常量等以及模板。

    这样一个应用程序的优缺点是什么?

    对于初学者来说,开始编写程序可能更容易。对于有经验的人来说,也许可以摆脱编程中的枯燥部分。

    在我看来,最大的挑战是,任何这样的UI都必然会阻碍用户的想象力。

    它比“普通”C++要简单得多?

    此外,由于生成了大量代码,您不知道发生了什么——调试变得很困难。

    此外,对于有经验的人来说,发现生成的代码不符合他们首选的编码风格可能会有些恼怒。

        7
  •  1
  •   bayda    16 年前


    我认为图形开发工具也会发生同样的事情。许多人更喜欢手工编码。

    但是,源代码可视化工具应该是件好事。

        8
  •  1
  •   Phill    16 年前

    我喜欢这个想法,但我怀疑会出现这样的情况:事情变得太复杂,无法用图形表示。

    然而,鉴于最近的工作经验;将这样一个图形界面提供给非技术人员来创建基本的拖放程序会很有用,这样我就可以自由地进行一些“适当的”编程;-)如果它能让不熟练的人构建一些功能性的东西,那将是一件非常好的事情(即使编程逻辑逃过了他们)

    看看这样一个系统如何处理内存的动态分配,以及随着时间的推移程序的不同状态,会很有趣;我怀疑有些非常基本的编程概念可能很难用图形表示。。多态性。。?虚拟类、链接列表、堆栈/循环队列。我想知道,如果没有一个巨大的显示屏的帮助,你如何成功地解释一个图像压缩算法(比如jpg)。

    我还想知道这样一个系统是否会发展到如此低的水平,你是否会处理抽象的概念,编译器是否会找到做某事的最佳方法。

        9
  •  1
  •   Rui Curado    15 年前

    http://www.abse.info )它支持最终用户编程:它是一个基于模板的系统,可以用转换代码进行补充。我还有一个IDE(名为AtomWeaver)来实现ABSE,它现在处于alpha之前的阶段。

    使用AtomWeaver,作为专家/架构师,您可以构建知识模板,然后开发人员(或最终用户,如果您简化了元模型)可以通过构建块“组装”系统,然后在表单样式编辑器中填充模板参数。

    最后,按下“生成”按钮将创建建筑师/专家指定的最终系统。

        10
  •  0
  •   Daniel Earwicker    16 年前

    一种编程语言可以用节点的层次结构来表示——这正是编译器将其转换成的。非常奇怪的是,用于编辑程序的UI仍然是一系列被解析的字符,因为编辑器中的自由度远远大于可用的允许选择集。但是intellisense有助于大大减少这个问题。

        11
  •  0
  •   Gustavo Muenz    16 年前

    德尔福就是这样。但是,当我们开始在组件之间添加复杂的关系,开始添加设计模式等时,代码会增长到无法处理的大小,这对于开发某种应用程序来说是一个非常好的工具。

    我相信这也是因为图形化工具没有应用MVC的概念(或者,如果它们应用了MVC,那只是以IDE理解的方式)。

    它对原型和不倾向于增长的非常小的应用程序非常有帮助,否则会给开发人员带来麻烦

    推荐文章