APE - The Software Revolution
The first real environment for assembling software applications. Your workbench where to build apps.
APE - The Software Revolution
The first real environment for assembling software applications. Your workbench where to build apps.
Deep in controller.
To place stronger emphasis on the key features of APE and to take a broader view of this issue, we are making a few introductory words to explain abstract concept of the controller, as the latter is the core of whole APE world.
The above figure shows the architecture of the controller: a notion of the virtual device that change the way of making software.
All streams entering input channels is being collected and stored in the relevant stacks, so called Input Data Stream Stack. As a stream is entering in an action channel, it is immediately caught from the Action Trigger with the task of activating the Action Processor in order to processing the requested action. The action data stream is also kept in a buffer, the Action Data Stream Buffer. The block Action Data Stream Reader read this latter stream at processor's request in order to retrieve both the action name and if any the arguments.
The Input Data Stream Reader is instead responsible for retrieving and formatting the input data from the relevant stacks, as it always done at processor's command. On the other hand the output streams are written from the block Output Data Stream Writer and they are stored in the relevant buffers, the Output Data Stream Buffer, ready to be sent in the output channels. Then, it is the Output Channel Selector who opens the output channels by allowing streams to flow in the connected pipes.
The Action Processor manage the business logic via the each individual Action Logic Unit and controls all steps for data stream transformation.
All the strength of this virtual device is quite clear from shown structure. It is possible to create a controller to meet more different needs as each problem has a solution in the data stream control domain. One of APE's basic advantages is that you can implement your controller in any programming language, but let it complies the architecture we described and the specifications we will provide. Once all the necessary requirements are met the controller can be deployed and made available to community for free or commercial use, to own discretion. Others may use your controller to build its own software application, from the hobbyists to the professionals.
The example in the next figure shows how to make a controller in Java language that it implements a simple adder component for purely educational purposes.
APE is Application Programming Environment.
We have seen programming languages being born for every need, over the last three quarters of a centuries. Languages were born for every hardware platform. They have become increasingly simpler while the visual languages took form. Each of the programming languages has different characteristics, strengths and advantages, but all are under similar shortcomings. No programming language (whether text or graphics based) solves the problem of software complexity in terms of development and maintenance and so also no programming paradigm.The computer programming has evolved considerably in the last years but we do not feel that there is been a real software revolution.
APE is not a new programming language, it is not an application framework, it is not a new programming paradigm and much less a code generator. APE is simply the programming environment where you create your software applications. That is where all programmers are able to take same language. Here, you must not strip away your thinking about programming. Everyone in APE makes a decisive contribution to growth of the software world.
Whenever we are reading the source code, be it large or small, for an application, we have the feeling that we are facing with a disaster. And as we are fighting for the hope to find a way-out as soon as possible, the burden of this effort bears down on our shoulders. There is no programming language that can stand up. There is no programming paradigm that can stand up. The collapse of software system is unavoidable. Because the simplicity of a computer program is not in the source lines of code, nor it is in structural design; it is in its "picture". That is why we need somewhere where we can really get a software application as it is in our head.
APE gives you an easy, immediate and clear view of the your whole software. In addition to be able to get a clean snapshot for the architecture of your application, you can observe how the program execution is proceeding, you can monitor the application developments, through a simple and effective visual debugging process.
DSC. Everything turns.
APE is based, fundamentally, on controlling data flow. In fact, everything boils down to the controlling a flow. As Lavoisier has said: "Dans la nature rien ne se crée, rien ne se perd, tout change.", that is "In nature nothing is created, nothing is lost, everything changes.". We say: in APE everything turns.
Let us think, for example, of the hardware revolution that took place with the advent of the transistor (it must be seen as a controlling a flow of electrons).
The notion of data stream controller (DSC) is the engine of the world of APE. A controller is a device (software kind, of course) that turns an input data stream into a output data stream. This processing happens by selecting an action amongst those the controller makes available. An action data stream flowing to the controller triggers it in order for it takes action. The controller is prepared to execute the related function and if all input data streams needed are flowing through it, the result of executing this function flows in the output data stream.
In the second figure shown (the one on the right), the controller math is used to add the number 1 to any number that is flowing as input data stream. The other input data stream is set to 1. And the action data stream is set to sum so that the required function be executed. After the controller has completed, the result will be available and it flows as output data stream.
Any DSC can be explained by the relevant datasheet (like the instruction set of a microcontroller) which is the set of the actions/functions that the controller can perform including required inputs and outputs.
The controller comes with a main channel where most streams will flow. You can select an infinite amount of other channels within which special streams can flow. You can do that by numbering the corresponding pin of the controller. The action data streams, on the other hand, go to the same channel always and if we are numbering the corresponding pin then the output of controller goes on the selected channel (with same number).
In the second figure shown (the one on the right), the controller calculates the square root on the main channel; the input number goes to the main channel and likewise the result of the square root function will be available into main channel. At the same time, the controller calculates the length of the hypotenuse of a right triangle if the values of the other two sides are entering into the selected channels 1 and 2. The result of the expression will be available into selected output channel 1.
The output of a controller turns on as the required action and input data stream have already entered and if the controller has finished its execution. The input streams (including the action stream) can also be not synchronized. The implementation of a stack is enabling the controller to wait for both streams must be available before the controller executes and turns on the output streams.
Pipe, source, sink. Data stream flows.
All streams flow on pipes. A pipe can have two states: closed and opened. All the pipes are closed at first. As soon the pipe is opened, the data stream flows right away from the opening handle to the closing handle and the pipe gets be closed. Usually the data stream that is flowing on the pipe comes from somewhere but you can set the data stream to any value; you can simply write this value right on pipe itself.
The pipe only allows the data stream to flow on it if it has being the opened state. A pipe opens the another pipe was connected to it. The same data stream also flows on the connected pipe (as the next figure shows).
In the figure shown, all the pipes are opening at the same time and, likewise, they get closed at the same time.
A source is the opening trigger for pipe and hence the pipe opening handle is connected to it. It is only when the source is being activated all the pipes connected to are opened. Instead, a sink is the end point for pipe and hence the pipe closing handle is connected to it. When any connected pipe is closing the sink gets activated and the data stream flows inside.
In the figure, more to the point, they are called power source and loss sink, respectively. Basically, a power source indicates the entry point for the application and, therefore, gets activated as soon the application is launching. Instead, a loss sink indicates the end point for a pipe and if no one controller is executing or waiting then the application exits immediately.
Sources and sinks can be given a name. If that happens, named sources and named sinks with same name together form a gate.
As shown in figure, in short, named sources and named sinks with same name are intended to be interconnected.
In the next sections, we'll briefly describe some of the features of the APE world.
Board. Hello, World!
All controllers will be put together on a board which would be a whole program, a function, a module of the application, similarly.
The figure shows a simple board (an application) which is just printing the message Hello, World! on a console (such as a terminal, a browser, a lcd display). When you launch your program, the power source gets activated and it is opening the pipe connected to it. The data stream Hello, World! flows on the pipe and goes into the controller console. At the same time the pipe which the action data stream flows, is opening and the stream print enables the controller. The controller in turn executes the related function (printing the string Hello, World! on console) and opens the output pipe which has activated the loss sink. Now, the application has finished.
The next figure, instead, shows how to put together more controllers.
When you launch the application you get the message Hello, World! on the console. Then, five seconds later, you get an other message that is Hello, APE! right on the console. On the board in figure, we see how the controller loop is able to enable different channels sequentially.
One of the great strengths of APE is the ability to debug and maintain in a very simple and intuitive way. The following animated figure is shown how the elements on the board get activated during the program execution.
The next figure shows how to make same application (Hello, World! Hello, APE!) using the gates.
Asynchronous and parallel. The independence of the controllers.
In APE, it is very easy and clear to implement the concepts of parallelism and asynchronism. You don't need digesting more new programming techniques. You don't have to look special tricks. You are free to assemble your boards somehow and you will be left to flow the streams how and where you want it. The following figure shows how to implement the earlier same application through fitting together the controllers in a way that they work in parallel.
As you can see, when the application is launched, the controllers console and timer are getting activated at the same time: the first one immediately prints the message on the console and the second one starts counting down. Then, at the end of the five seconds, the controller timer opens the output pipe which is enabling the stream to flow and to print the second message on the console.
APE not kill APP!
Anyone can become a part of APE. No knowledge of a programming language is required. And you don't have to learn a new development method. If you have an idea to be developed will be easy to design, implement and maintain it in a single programming environment. APE does not have any influence over your programming style, it is not intended to distort your modelling habits and standards. Everything you think possible to make with any programming language (and paradigm) you can to put in action in APE, in a very simple and secure way.
There is no an only programming language (or programming paradigm) able to be used on all real necessities. In APE you can whatever you want.
The programming languages will continue to be and the programming patterns and paradigms will continue to model the style of the programs. Coders and programmers must not distort their development customs and they must not get new concepts to create an application. But all will begin to live in one environment.
Programming in APE will be finally intended as an engineering discipline.
The next sections show how some programming common issues get implemented in APE.
This example makes clear how simple the click event on a button is handled.
The next example shows how to implement a simple calculator.
The following example implements an analog clock.
Collections and dynamic objects.
Which context of visual programming you can dinamically create objects and hold they in a container? Which hardware context you can do that? In APE world, all these things are possible. It is wonderfully, simply possible.
We have said that the controllers are asynchronous: each one is fully independent than any other. So what about enabling the controller only when all of its input streams are available? So if we just want to synchronize all the input pipe of the controller? In APE this is achieved using the controller comparator which includes the action sync for that.
The board in the figure lets you calculate the area of a triangle when you are setting the base and the height by text fields.
As in APE you can create your controller by putting simply together other controllers you use this feature for implementing the mechanism of the inheritance.
The board in the figure shows how to make a new controller extending all the actions of the controller math to implement a new action sign which extracts the sign of a integer number (it returns -1, 0, 1).
Yes. It's amazing. The board in the following figure implements a controller calculating Fibonacci function of an integer number recursively.
And so, to implement this mechanism of the recursion you have used what is called ghost controller.
Of course, as a first step we plan to implement the runtime engine of APE to allow all boards to be executed. In fact, this is being implemented. At this time, APE is a proprietary java framework which enables the board description to be interpreted and its instructions to be running.
This is the initial release of APE. This is a programming environment for web application supporting real time collaboration. The environment makes available online all controllers from APE in order to create any application: from a simple web site to more complex applications. It is not necessary to install any software. All of the APE world is quite simply accessible using an any web browser from any device.
In APE you take a profiled access and so this will encourage more users collaborating on the same project simultaneously. Each user profile gets an amount of resources that need to be dedicated to it. Above all, these resources will be made from the perspective of the CPU core count, RAM size and disc space available. From that point of view, APE is a distributed application environment. The DSCs are distributed. You never need to deal with knowledge about how the controllers has been implemented and how they communicate to one another. Just you put together the controllers on the board according to your personal needs.
This is the standalone programming environment for developing desktop application in APE. It is being installed on a single machine and it allow you to develop and run standalone applications. Of course, no user profiling is expected and all resources of the hosting machine are available.
This is the standalone programming environment for developing and running mobile applications in APE (including Android, iOS and Windows systems). This is as the previous one but it concerns mobile devices.
The code generator converts any application designed in APE into a program able to be compiled and executed in the desired programming language. You can generate source code for most programming languages and devices (including Arduino systems). You must of course specify the platform will host the application.
The marketplace of data stream controllers (DSC). With the APEweb release, this presents the real software revolution. It is the place where the controllers are stored, explained and marketed. As there are microcontrollers that basically have same features but different costs and performances in the hardware industry likewise there are data stream controllers with same features but different costs and performances in the software industry. You can create good controllers in order to put together they for implementing your application or to deploy they in the lab (market).
The required budget (with addition our resources) will make it possible to take the first release (APEeng+APEweb) as quickly as possible. And then the success and popularity of the project will allow us to achieve others founds in order to get all goals done (from now to the future).
Our gifts for givers.
Risks and challenges
Why 20K? Why not 20M?
No doubt about that we are facing a huge long-term project; we are standing at an historical turning point. As a consequence, it would make more sense to ask for a pledge of the same scale. Of course, the more funds are available, the larger the team, the easier it is to find the best skilled resources and less time it will take. We feel there are not great risks. In fact, we have been working on this project for some time. We have been spending it for planning and designing this project. Our team is well aware that they are able to put in place the essential parts of the project in a matter of just a few months. We are able to implement the whole hosting platform of APE. Naturally, how many controllers will be with the first release depends on the “pledged”. However, we are very grateful we can now to fulfill the dream of giving a house to our software applications.
- (30 days)