# PWCT/Lessons/Intro

PWCT is a general purpose visual programming language and software development platform that enables the development of systems and applications, by generating interactive steps instead of writing code.
PWCT is a Free and open-source software under the GNU General Public License version 2.

## History

PWCT was conceived in the late 2005 and its implementation was started in January 2006 by Mahmoud Samir Fayed.
PWCT 1.0 was released on 18 October 2008 and PWCT 1.9, a major, backwards-compatible release, was released on 7 May 2013 after a long period of testing.
The latest release is PWCT 1.9 (Art) Rev. 2015.12.27
The software was developed first at Minoufiya University in Egypt then King Saud University in Saudi Arabia (from 2011).
PWCT is an acronym for "Programming Without Coding Technology".

## Concept

The visual source inside PWCT is designed using the Goal Designer where the programmer can generate the steps tree through the interaction with the visual language components.
Inside PWCT, the visual source is a collection of goals, each goal contains tree of steps and each step/node inside the steps tree may contains one or more of data entry forms. Steps tree uses colors that tell the programmer about the step type. Some steps allow containing sub steps, other steps don’t allow this, also some steps is not more than comments for the programmer. The steps tree gives the programmer two dimensions where the relationship between the node and another node could be “next to” or “contains” where the programmer can go depth-first or breadth-first when he/she interacts with the steps tree.
The programmer can use the dimension “contains” to do an operation on a group of steps/nodes at the same time (move up / move down / cut/ copy / delete).
The programmer can use the form designer to design the user interface.
The programmer can use the time dimension where he/she can know when each step is created (Date & Time) and can move along the time dimension to see only the steps at any point during the development process.
Inside the Goal Designer, the user can use the mouse or the keyboard to select the visual components and generate new steps in the steps tree. Using the mouse the programmer can explore the environment to see the components that are ready for use. Using the Keyboard by typing the component name, the programmer can quickly get any component and start using it.

## Features

* General Purpose.
* Visual Programming (More than one dimension, No Syntax Errors, Time Dimension and Colors).
* Visual Editor (Keyboard shortcuts, Customization, Cut, Copy, Paste, Search and Replace)
* Syntax Directed Editor (Avoid Errors).
* Free Editor and VPL Compiler.
* The programmer can see and edit the generated source code.
* The programmer can change the step name and the steps colors.
* Support code generation in C, Python, C#, Harbour and Supernova programming languages.
* The programmer can play programs as movie to learn how to create the program step by step
* Don't force a programming paradigm.
* Extension (Create new components).
* Run programs at any point in the past during the development process.

## Visual Languages

The PWCT visual programming language components are classified into the next categories
* HarbourPWCT : Visual Components that generate source code in the Harbour programming language.
* SupernovaPWCT : Visual Components that generate source code in the Supernova programming language.
* PythonPWCT : Visual Components that generate source code in the Python programming language.
* CPWCT : Visual Components that generate source code in the C programming language.
* C#PWCT : Visual Components that generate source code in the C# programming language.
The programmer can extend PWCT to support code generation in any text based programming language.
PWCT is a visual programming language and reading the text based code is optional.
The programmer can create and modify the programs using the visual source without any interaction with the text based source code.