65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C#.NET 和无代码编程技术

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.93/5 (24投票s)

2013年3月17日

CPOL

8分钟阅读

viewsIcon

34157

无代码编程技术的理念和技术

引言

我将讨论 PWCT ( http://doublesvsoop.sourceforge.net ) 背后的理念和技术。

处理问题的两种方法

csharpwithoutcoding3/p1.png

要成为一名计算机程序员/软件开发人员并开始您的实际软件开发生涯,您需要三者兼备(科学、艺术和技术),在这里我们需要经历两个阶段

  1. 学习编程基础(教育)
  2. 开始软件开发(获得实践经验)

关于学习编程,您可能从技术(选择一门编程语言)开始,然后您可以根据所学知识(科学)进行练习,并运用您的艺术(思考 - 富于创造力 - 发现 - 试错 - 学习新技术)。

实际上,在经历了这种教育方式之后,您将受限于技术(您首先选择的语言的力量),并且您将开始跳出思维定势,或者您将受到限制,并且由于技术随着时间的变化和发展以适应现实世界的需求而仍然面临局限性。

一段时间后,您将达到艺术的水平(基于您的教育和技能),并且需要学习更多的科学(向他人学习)并尝试新技术(获得更多力量)。

关于开发软件,这将取决于您所处的阶段,如果您处于教育阶段,您将使用您已知的编程语言,并根据您的艺术和知识开发软件,并可能使用

  1. 试错法
  2. 先解决问题,然后再实现

程序员过去会混合使用这两种方法,但当他们遇到新问题时(现在艺术起着最大的作用),通常会采用第一种方法(试错),而当他们遇到基于经验的简单问题时,通常会采用第二种方法。

但这是否理想?

答案因程序员而异,并取决于项目、截止日期、环境等其他因素。

开发软件的理想方法是(先解决问题,然后再实现),并且不受限于技术技术应基于问题而成为一种选择,而不是在问题出现之前就做出的决定。

但是,当程序员只知道一门语言时,如何决定技术呢?答案很简单,程序员可以学习尽可能多的其他编程语言来赢得技术挑战,并将技术作为一种选择而不是一个决定,如果第一门编程语言需要数年才能学会,那么第二门可能只需要几周或几个月(取决于编程范式、语言的性质以及所需的学习曲线)。

这里的问题与优秀的程序员无关。问题与新手程序员有关。

当用户来学习编程时,他们期望一种(自顶向下)的方法,而这种方法很困难,因此许多人不喜欢编程;如果用户采用第二种方法(自下而上),结果将是不可预测的,我们可能只会得到半吊子程序员(我的意思是糟糕的程序员)。

这只是在教新学生编程后的一种观点,我们也可以注意到,大多数优秀的程序员都结合使用了这两种方法,从(自下而上)开始,然后(自顶向下),或者从(自顶向下)开始,然后(自下而上)。

要学习编程并面对这些问题,您需要有耐心,而要有耐心,您需要热爱编程并乐在其中。

然后,要将编程带给用户,我们需要一个计划

  1. 他们需要热爱编程……因为他们需要有耐心
  2. 他们需要从自下而上开始
  3. 他们需要切换到自顶向下

PWCT 只是尝试实现这一理念,以便我们能够吸引更多用户进行编程。

但现在的问题是,PWCT 如何做到这一点?

关于第一点(他们需要热爱编程……因为他们需要有耐心),这可以通过增加互动性来实现。

用户喜欢游戏,因为游戏易于使用且互动性强,当用户执行任何简单的操作时,游戏都会做出反应,并且会发生很多事情。

用户喜欢浏览网页,因为网页浏览轻松且具有互动性,因此他们可以在使用网页浏览器的情况下度过数小时,并且仍然乐在其中。

PWCT 不会让用户独自一人,并对用户的任何操作做出反应,而且反应应该很大,以满足用户的需求。

关于第二点(他们需要从自下而上开始),PWCT 可以为用户提供即用型编程系统,该系统可以直接创建程序,而无需花费大量时间研究编程科学,并且快速入门可以为初学者带来良好的结果,用户可以实现自己的想法并最终获得应用程序。

关于第三点(他们需要切换到自顶向下)。

csharpwithoutcoding3/p2.png

将数据与指令分离

csharpwithoutcoding3/p3.png

看看下面的伪代码

 x = 1
 print x on screen
  for x = 1 to 10 step 1 do
        print x value on screen
  end of for loop

此伪代码中的每条指令都可以用 F(X) 来描述,其中我们确定函数和数据。

第一行

 x = 1 

函数 ( F ) 是赋值,数据是 ( X ) 和 ( 1 )。

所以 F(X) = 赋值 (X, 1)

第二行

print x on screen 

函数 ( F ) 是在屏幕上打印文本,数据是 ( X )。

所以 F(X) = 在屏幕上打印文本 ( X )。

  for x = 1 to 10 step 1 do 

函数 ( F ) 是启动 for 循环,数据是 ( 1, 10, 1)。

所以 F(X) = 启动 for 循环 ( 1, 10, 1)。

end of for loop 

函数 ( F ) 是 for 循环的结束,数据是 ( NULL )。

所以 F(X) = for 循环的结束 ( NULL )。

当我们编写代码来实现此逻辑时,我们需要选择一门编程语言并开始编写代码(与语法相关),然后我们需要一个编译器来编译此代码。

人类编写代码时会遇到(语法错误)问题,但如果我们的代码没有语法错误,我们的编译器就会接受它,并生成另一种语言(例如 ASM)编写的代码。

编译器生成的代码没有语法错误,这引出了一个想法。

如果所有的代码都是生成代码怎么办?那么我们就没有语法错误了,PWCT 试图做到这一点,而这个想法是 PWCT 最重要的想法之一。

语法是函数 ( F ) 和数据 ( X ) 之间的连接点,PWCT 用托管的 GUI 对象(组件/传输器)替换了这个连接点,您可以创建和使用它们。

获得最大的可读性和最大的可写性

csharpwithoutcoding3/p4.png

当您设计一种基于文本的编程语言时,您会面临这个挑战。

您需要就可读性和可写性做出决定,而且它们常常会发生冲突。

PWCT 解决了这个程序问题,我们可以获得最大的可读性,因为我们将指令视为步骤树(目标设计器),并且步骤名称可以任意长且易于阅读,我们可以无限制地更改任何步骤名称,并且在创建和/或修改步骤时,我们会得到易于使用且目的明确的交互页面。

此外,在可写性方面,我们比手动编写代码更快地获得代码,并且机器编写的代码具有高度预先设计的质量,取决于组件创建者的才华,我们可以创建自己的组件并确定我们想要的任何名称,然后我们使用该名称来获取我们的组件并使用它。

基于 GUI 的步骤编辑器(目标设计器)与基于文本的代码编辑器

当我们使用基于 GUI 的步骤编辑器(目标设计器)时,我们可以获得使用 GUI 的优点,因为 GUI 可以更好地组合事物,使其更清晰、易于使用且易于记忆。

例如,而不是使用帮助来了解语法……

csharpwithoutcoding3/p5.png

我们可以进行交互并使用组件浏览器

csharpwithoutcoding3/p6.png

在组件浏览器中,我们可以按域和/或组件名称获取组件

csharpwithoutcoding3/p7.png

现在不是展示使用基于 GUI 的步骤编辑器(目标设计器)获得的所有新功能的时候,但我们可以通过另一个例子来参考。

在目标设计器中,我们可以选择一个步骤,而不是选择多行代码。

选择步骤后,您可以复制、剪切和粘贴它。

我们也可以在步骤树中上下移动它。

csharpwithoutcoding3/p8.png

csharpwithoutcoding3/p9.png

关注点

当有多种工具可用于同一任务时,我们就需要做出选择,但实际上我使用了不止一种工具,我根据任务本身做出选择,因为每种工具都有其优点和缺点。

Visual Studio 代码编辑器非常棒,但它围绕代码和语法;而 PWCT 目标设计器是一个简单的工具,但它围绕步骤和 GUI 交互。

从使用代码编辑器的基于文本的编程切换到使用目标设计器的基于 GUI 的编程并不复杂,但最困难的部分是改变一个您已经习惯的工具,并且您需要看到这种改变的结果来鼓励自己这样做。

请记住,使用目标设计器,我们有代码(生成代码),因此使用目标设计器并不危险。

历史

在 PWCT-目标设计器的早期,第一个问题是目标设计器本身在处理大量步骤时的性能(但这个问题已经解决,并且 PWCT 已在构建业务应用程序中得到实际应用)。

如果您想获得 PWCT 的强大功能,那么您需要创建自己的组件并实际使用它们,当您创建自己的组件时,您将体验到使用为您需求定制的语言的感觉。

© . All rights reserved.