Intentional Programming

1,241 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,241
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Intentional Programming

  1. 1. Transformation and Visualization of Abstractions using the Intentional Programming System Lutz Roeder
  2. 2. _ ! “ # $ % & ‘ ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ _ Programming 2000
  3. 3. Programming 2000 <ul><li>Raise Abstraction Level </li></ul>Recycling existing C++ language… Visual Basic: 50% source code and 50% UI language… <ul><li>Improve Software Productivity </li></ul>Text editor… Syntax errors… Using text search and replace… Out of sync architecture diagrams… <ul><li>Enable Software Maintenance </li></ul>
  4. 4. Source Code (Syntax) Syntax is Limited !!! Source Documents Abstract Syntax Tree Parsing Syntactic Analysis Target Code Semantic Analysis Code Generation
  5. 5. Target Code Transformation Visual Rendering Visualization Editing Debugging Abstract Source Tree Code is Data Source Documents
  6. 6. Abstract Source Tree Intention Instance Intention (Abstraction) Tree Element if Reference DCL Declaration cond then else Parameterization
  7. 7. Example Tree int x ; x = 3 ; while (x < 5 ) { } User Project Used Libraries { } “ 5” “ 3” x while < = Literal DCL Type int
  8. 8. Rendering Display Tree Regions Source Graph List if < “ 5” Constant x if _( )_ Indent x > 5 { } if ( x > 5 ) { }
  9. 9. Transformation { continue: if ( <cond> ) { <body> ; goto continue; } break; }; Expansion list if continue break label goto while cond body
  10. 10. Environment Abstract Source Tree Reduction Legacy Parsers Code Generation Extension Libraries Target Code Rendering Type-in Debugger Version Control
  11. 11. Environment
  12. 12. Summary <ul><li>Raise Abstraction Level </li></ul>… by allowing new abstractions and new notations. (e.g. matrix library, string concatenation, foreach, …) <ul><li>Improve Software Productivity </li></ul>… by making source more accessible for tools. (e.g. auto-complete, search, reference search, …) … by enabling source tree level re-factoring. (e.g. auto-rename references, replace API, …) <ul><li>Enable Software Maintenance </li></ul>

×