PWCT

Last updated
PWCT
PWCT 1.9 - Goal Designer.png
Paradigm Multi-paradigm: Visual Programming, imperative, procedural, object-oriented
Designed by Mahmoud Samir Fayed
Developer The PWCT Development Team
First appearedDecember 26, 2005;19 years ago (2005-12-26)
Stable release
2.0 / January 1, 2025;4 days ago (2025-01-01)
Implementation language Visual FoxPro (PWCT 1.x)
Ring (PWCT 2.0)
OS Microsoft Windows (PWCT 1.x)
Windows, Linux and macOS (PWCT 2.0)
License GNU General Public License (PWCT 1.x)
MIT License (PWCT 2.0)
Filename extensions .ssf (PWCT 1.x)
.pwct (PWCT 2.0)
Website doublesvsoop.sourceforge.net OOjs UI icon edit-ltr-progressive.svg

PWCT (Programming Without Coding Technology) is a free open source visual programming language for software development. [1] [2] [3] [4] The project was founded in December 2005 as a free open-source project that supports designing applications through visual programming then generating the source code. The software supports code generation in many textual programming languages. [5] [6] [7] [8]

Contents

Goal

PWCT is designed to be a general-purpose visual programming language that can be used for applications and systems development. [9] [10] [11] PWCT can also be used for introducing programming concepts.

The environment supports a time dimension where the programmer can play programs as a movie to learn how to create them step-by-step and get better understanding of the program logic. Changing time is done using a timeline slider which allows the programmer to select a specific point in time to view. [12]

History

PWCT 1.9 Environment - Data Entry Forms PWCT 1.9 - Data Entry Forms.png
PWCT 1.9 Environment - Data Entry Forms

[13] [14]

Concept

PWCT 1.9 Environment - Components Browser PWCT 1.9 - Components Browser.png
PWCT 1.9 Environment - Components Browser
PWCT 1.9 Environment - Form Designer PWCT 1.9 - Form Designer.png
PWCT 1.9 Environment - Form Designer

The PWCT architecture contains three main layers: [15] [16]

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 contain 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 do not allow this, also some steps are 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 "contains" dimension to perform operations on a group of steps/nodes simultaneously (move up/move down/cut/copy/delete), utilize the form designer to create the user interface, and employ the time dimension to track when each step is created (Date & Time) and navigate through the time dimension to view 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 we 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. [17]

Features

[18] [19]

Visual languages

The PWCT visual programming language components are classified into the next categories [20]

Usage

Since the textual source code could be generated in different textual programming languages like C and Python, PWCT could be used in developing projects that have different requirements like Internet of Things (IoT) projects, [22] Artificial Intelligence and Machine Learning applications, [23] GUI projects [24] and Text processing applications. [25] Also, PWCT is used for developing and maintaining the Ring programming language Compiler and Virtual Machine [26] [27]

Criticism

See also

Related Research Articles

A fourth-generation programming language (4GL) is a high-level computer programming language that belongs to a class of languages envisioned as an advancement upon third-generation programming languages (3GL). Each of the programming language generations aims to provide a higher level of abstraction of the internal computer hardware details, making the language more programmer-friendly, powerful, and versatile. While the definition of 4GL has changed over time, it can be typified by operating more with large collections of information at once rather than focusing on just bits and bytes. Languages claimed to be 4GL may include support for database management, report generation, mathematical optimization, GUI development, or web development. Some researchers state that 4GLs are a subset of domain-specific languages.

An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as IntelliJ IDEA, Eclipse and Lazarus contain the necessary compiler, interpreter or both; others, such as SharpDevelop and NetBeans, do not.

<span class="mw-page-title-main">Macro (computer science)</span> Rule for substituting a set input with a set output

In computer programming, a macro is a rule or pattern that specifies how a certain input should be mapped to a replacement output. Applying a macro to an input is known as macro expansion.

<span class="mw-page-title-main">Programming language</span> Language for communicating instructions to a machine

A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their syntax (form) and semantics (meaning), usually defined by a formal language. Languages usually provide features such as a type system, variables, and mechanisms for error handling. An implementation of a programming language is required in order to execute programs, namely an interpreter or a compiler. An interpreter directly executes the source code, while a compiler produces an executable program.

<span class="mw-page-title-main">Plug-in (computing)</span> Software component that adds a specific feature to an existing software application

In computing, a plug-in is a software component that adds a specific feature to an existing computer program. When a program supports plug-ins, it enables customization.

Zope is a family of free and open-source web application servers written in Python, and their associated online community. Zope stands for "Z Object Publishing Environment", and was the first system using the now common object publishing methodology for the Web. Zope has been called a Python killer app, an application that helped put Python in the spotlight.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

Software design is the process of conceptualizing how a software system will work before it is implemented or modified. Software design also refers to the direct result of the design process – the concepts of how the software will work which consists of both design documentation and undocumented concepts.

<span class="mw-page-title-main">Delphi (software)</span> General-purpose programming language and a software product

Delphi is a general-purpose programming language and a software product that uses the Delphi dialect of the Object Pascal programming language and provides an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software, currently developed and maintained by Embarcadero Technologies.

<span class="mw-page-title-main">Visual programming language</span> Programming language written graphically by a user

In computing, a visual programming language, also known as diagrammatic programming, graphical programming or block coding, is a programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations. VPLs are generally the basis of low-code development platforms.

<span class="mw-page-title-main">IRAF</span> Software collection for astronomical data reduction and data analysis

IRAF is a collection of software written at the National Optical Astronomy Observatory (NOAO) geared towards the reduction of astronomical images and spectra in pixel array form. This is primarily data taken from imaging array detectors such as CCDs. It is available for all major operating systems for mainframes and desktop computers. IRAF was designed cross-platform, supporting VMS and UNIX-like operating systems. Use on Microsoft Windows was made possible by Cygwin in earlier versions, and can be today done with the Windows Subsystem for Linux. Today, it is primarily used on macOS and Linux.

<span class="mw-page-title-main">Embedded software</span> Computer software written to control machines not typically thought of as computers

Embedded software is computer software, written to control machines or devices that are not typically thought of as computers, commonly known as embedded systems. It is typically specialized for the particular hardware that it runs on and has time and memory constraints. This term is sometimes used interchangeably with firmware.

In computer science, automatic programming is a type of computer programming in which some mechanism generates a computer program, to allow human programmers to write the code at a higher abstraction level.

In computing, data transformation is the process of converting data from one format or structure into another format or structure. It is a fundamental aspect of most data integration and data management tasks such as data wrangling, data warehousing, data integration and application integration.

In Microsoft Windows applications programming, OLE Automation is an inter-process communication mechanism created by Microsoft. It is based on a subset of Component Object Model (COM) that was intended for use by scripting languages – originally Visual Basic – but now is used by several languages on Windows. All automation objects are required to implement the IDispatch interface. It provides an infrastructure whereby applications called automation controllers can access and manipulate shared automation objects that are exported by other applications. It supersedes Dynamic Data Exchange (DDE), an older mechanism for applications to control one another. As with DDE, in OLE Automation the automation controller is the "client" and the application exporting the automation objects is the "server".

mlpack

mlpack is a free, open-source and header-only software library for machine learning and artificial intelligence written in C++, built on top of the Armadillo library and the ensmallen numerical optimization library. mlpack has an emphasis on scalability, speed, and ease-of-use. Its aim is to make machine learning possible for novice users by means of a simple, consistent API, while simultaneously exploiting C++ language features to provide maximum performance and maximum flexibility for expert users. mlpack has also a light deployment infrastructure with minimum dependencies, making it perfect for embedded systems and low resource devices. Its intended target users are scientists and engineers.

<span class="mw-page-title-main">Blockly</span> JavaScript library

Blockly is a client-side library for the programming language JavaScript for creating block-based visual programming languages (VPLs) and editors. A project of Google, it is free and open-source software released under the Apache License 2.0. It typically runs in a web browser, and visually resembles the language Scratch.

<span class="mw-page-title-main">Ring (programming language)</span> Dynamically typed, general-purpose programming language

Ring is a dynamically typed, general-purpose programming language. It can be embedded in C/C++ projects, extended using C/C++ code or used as a standalone language. The supported programming paradigms are imperative, procedural, object-oriented, functional, meta, declarative using nested structures, and natural programming. The language is portable and can be used to create console, GUI, web, game and mobile applications.

<span class="mw-page-title-main">Mahmoud Samir Fayed</span> Computer programmer and creator of PWCT

Mahmoud Samir Fayed is a computer programmer, known as the creator of the PWCT programming language. PWCT is a free open source visual programming language for software development. He also created or designed Ring. He is a researcher at King Saud University. Prior to that, he worked at the Riyadh Techno Valley in the Information and Communication Technology Incubator.

References

  1. Fercalo, Andrei (11 March 2014). "Programming without coding technology review". Softpedia.
  2. Al-Khalifa, Hend (29 February 2008). "Free Open Source Visual Programming Language". Al Riyadh.
  3. Hawas, Mones (23 November 2016). "Developing Programming Without Coding Technology 2.0". youm7.com. youm7.
  4. Mutha, Abhishek A. (September 2015). "This Month's DVD Contents". Electronics For You Magazine. EFY Group.
  5. Almesahuge, Khaled (17 June 2010). "Useful open source projects - Programming Without Coding Technology". Al Riyadh.
  6. Elsayed, Naglaa (2009). "Programming Without Coding Technology - Innovative Project (offline source)" (PDF). Al Gomhuria. Archived from the original (PDF) on 2019-06-18.
  7. Hawas, Mones (29 May 2018). "Progress in developing PWCT 2.0". youm7.com. youm7.
  8. "Top 5 Education Software of the Week". SourceForge . 27 April 2018.
  9. "Free software: the best freeware from October 2018 - Includes (You can make almost anything with PWCT)". Computer Total Magazine. Computer!Totaal. 7 October 2018.
  10. "Programming Without Coding Technology Review" (PDF). AL-AALEM Magazine. AL-AALEM the Scientists Magazine, Issue No. 116, Pages 26-27 Deposit number 18/0157. November 2008. ISSN   1319-6545.
  11. 1 2 Chin, Jerry M.; et al. (2013). "A String Search Marketing Application Using Visual Programming" (PDF). e-Journal of Business Education and Scholarship of Teaching.
  12. Frandsen, A. B., Jensen, R., & Lisby, M. Ø. (2013). Auditory & Visual Debugging.
  13. PWCT Team (26 December 2005). "PWCT Home (Sourceforge)". SourceForge.
  14. PWCT Team (3 January 2025). "PWCT News (New Releases)". pwct.org.
  15. Phalake, V.S. and Joshi, S.D. Low Code Development Platform for Digital Transformation. In Information and Communication Technology for Competitive Strategies (ICTCS 2020) (pp. 689-697). Springer, Singapore.
  16. da Silva, A.M.O.P., Orchestration for Automatic Decentralization in Visually-defined IoT, 2020.
  17. PWCT Team (2 January 2021). "PWCT Environment Reference". pwct.org.
  18. PWCT Team. "Visual Programming in PWCT". pwct.org.
  19. PWCT Team. "PWCT Features - Practical Editor". pwct.org.
  20. SRINIVAS N.C. A (January 2013). "Educational Software Tools - Programming Without Coding Technology - Electronics For You Magazine" (PDF). EFY Group.
  21. PWCT Team (5 January 2025). "PWCT2 visual components". pwct.org.
  22. Patel, S. and Jena, S.R., 2022. Internet of Things (IoT): Theory and Applications. Scholars' Press.
  23. Dhanaraj, R.K., Jena, S.R., Yadav, A.K. and Rajasekar, V., 2021. Mastering Disruptive Technologies: Applications of Cloud Computing, IoT, Blockchain, Artificial Intelligence & Machine Learning Techniques. HP Hamilton Limited, UK.
  24. Alohali, Y.A. et al, A machine learning model to predict citation counts of scientific papers in otology field. BioMed Research International, 2022.
  25. Alohali, Y.A. et al, 2023. Machine Learning and Cochlear Implantation: Predicting the Post-Operative Electrode Impedances. Electronics, 12(12), p.2720.
  26. Fayed, Mahmoud Samir, and Yousef A. Alohali. "Ring: A Lightweight and Versatile Cross-Platform Dynamic Programming Language Developed Using Visual Programming." Electronics 13, no. 23 (2024): 4627.
  27. Ayouni, M., 2020. Beginning Ring programming (Vol. 978, No. 1, pp. 4842-5832). Apress.
  28. Sen, Arnab. GALADE: A Round-Trip Graphical Modelling Tool for Abstraction Layered Architecture Applications. Diss. Auckland University of Technology, 2021.

Further reading