Login | Register
My pages Projects Community openCollabNet

Project home

If you were registered and logged in, you could join this project.

Message from the owner(s)

Essence of this project is to create a programming environment for large scale s/w development. Graphical in nature but not UML. Graphical Programming Language SKS attempts to have a 3D based graphical environment. It will move from 'multiple source txt files' to a rich content 2D/3D environment which has threaded architecture for - editing/compiling/code analysis/rules checking.
Summary A Visual Programming Language software IDE for developers.
Categories design, construction
License Other OSI-certified license
Owner(s) sureshkrshukla

This project is no longer maintained.

Those interested to know the reason: (1) my personal time is very limited (I got tired of working on weekends) (2) I admit scope bloat (3) primary job of embedded programming has made my GUI construction skills average at best (4) Initially started as standalone program, later started to look for plugin model for Netbeans (but its internals are not clean) then Eclipse (high upfront learning plus SWT :(  (5) I could have performed better if I were more pragmatic, but I leart few good things anyway.



A visual approach to programming.

The scope of project is very big, I will mention key points :

  1. The IDE which will permit simulink like left to right and top to bottom graphical layout based development. This includes threads, functions, control and data flow through the program. IDE is based on a 2D/3D GUI environment would provide visuals of the program. Data flow, cohesion, coupling, function stack, module complexity etc problems yield themselves when program is laid out in a 2D/3D graphical environment.

  2. A new Language but pretty similar to Java/C#. (say 80 % same). The difference will lie in constructs which support a visual programming approach. Language would help a programming solution be expressed easily and then expanded through various levels of performance optimizations and platform dependencies

  3. Backend compiler/translator which will translate new language code into one of the selected target languages : Java/C#/C++/C.

      Putting User Centered Design to the most neglected users - developers themselves. Trying to understand other developers code. Every developer trying to win the same battle of readability. Drawing a lots of sketches. Lots of 'Find' and 'Find in Files'. Trying to decipher the huge bundle of information stored here and there in programs.

In addition to above there are going to be multiple small consolidations which will make a simulink kind of easy debugging using scopes. Also language features will have a model like Car gears. The features will be marked similar to gear level.

Concept is If you look closely enough we can solve problems in any language - assembly, C. C++, Java, C#, Python, Ruby and LISP.

But did you notice that as we moved in the above list we decreased in development speed (LOC/day) and increased in program execution speed (iterations/day or transactions/day).

Very similar to car gears - as we shift through them torque keeps decreasing and speed keeps increasing.

I believe we should do similar for SW development. Start in first gear (4th gen language) and prototype successfully.

As the solution starts to emerge and features are getting stable the performance can be elaborated around hotspots.

This gear shifting would translate into - further elaboration of type system and manual memory management.

Original posting at the time when I was thinking of a new programming language idea at comp.os.minix group on Oct 11, 2006 11:12 am : http://groups.google.co.in/group/comp.os.minix/browse_thread/thread/f2be95be189ee7d1/ff811ff4b5f3ffe2?hl=en&lnk=gst&q=programming+language+SKS#ff811ff4b5f3ffe2

The IDE tries to solve following problems :

  • Problem Lack of visual structure in multiple text source code files

  • Solution Visually rich environment which can express known visualizations in software domain - stack, ring (onion-peel), layer etc TBD

  • Problem Data flow of program not easily judged by starting from 'main' function

  • Solution Environment in which data flow through program is expressed easily and intuitively. Flow is left to right and from top to bottom

  • Problem One powerful way of improving quality is to look at data flowing through function boundary

  • Solution Debug points are clear identifiable. Adding, removing, enabling and disabling of data probes should be easy. TBD

  • Problem To trace a point currently we add prints and recompile, then later remove these prints or comment them

  • Solution Mechanism of recording of a variable or a set of variables in a log at a click of button as part of environment TBD.

  • Problem Unused functions left in code, accumulating over many years.

  • Solution Function usage (compile time) count by doing a static analysis should be available as Function statistics TBD

  • Problem Profile is not intuitive, developers often optimize non - hotspots. Real cause being difficulty of profile statistics.

  • Solution Function usage (run time) count to be collected and kept in Function statistics TBD

  • Problem Development tools spread out unrelated - compiler, make, OS/language unaware debugger.

  • Solution As part of IDE - in time compilation, OS aware debugger etc TBD

  • Problem Lots of manual steps for developer during development, enhancement etc

  • Solution To make a unified tool which eliminates fragmented development of requirements in a doc, design in doc + visio etc, code in text files, test cases in scripts and user manuals separate. Utilize the full power of developer workstation like modern 3D games. TBD

This IDE aims at consolidation of improvements in development methods happened over years. Moving away from 'multiple text source files' to one integrated project file. Easing the solution to problem of : "it is hard to read code". Categorization of language features as beginner, medium and advanced. This aim will be achieved by utilizing the available computing, graphics and sound infrastructure available on most developer machines. In this IDE all developer assisting activities will be carried out in background in parallel.

Related resources

    • Develop full project life cycle functionality from requirements, design, coding to testing

    • Use the issue tracker to track features and enhancement requests. It is not just for bugs, pre-populate it with feature descriptions so that potential contributors know what you would like them to work on.

    The technologies used are – Rich client application using WinForms. The decision is based on speed of development.

    • We will consider certain functional areas like - set wise programming language construct.

  • Microsoft Visual C# 2008 Express Edition

          • Iteration Three [April-2008]
  • Input/output connection.

  • Code generation to selected source language C#

  • Interfacing with C# compiler for compilation and running.

          • Iteration Two [March-2008]
  • Same as last iteration plan with C# and WinForms.

  • Editing of functions and input/output connection.

  • Code generation to selected source language C#

  • Status : completed GUI in C# WinForm, editing of functions, loading and saving in XML.

Iteration One [Feb-2008]
  • Basic GUI in Java/Netbeans with open/save of created function in XML file

  • Editing of functions and input/output connection.

  • Code generation to selected source language Java

  • Status : Not completed.

        Wishlist for future Iterations

  • Ring, onion-peel

  • 3D version of GUI

  • Code generation to multiple source language

  • DB instead of XML for scaling projects to big size and/or team development