start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
start [2009/10/19 14:56]
aspectscript
start [2010/04/22 12:00] (current)
aspectscript
Line 1: Line 1:
-**AspectScript** is a [[http://en.wikipedia.org/wiki/JavaScript|JavaScript]] extension for Aspect-Oriented Programming (AOP) that currently supports [[http://www.mozilla.com|Mozilla Firefox]]. AspectScript is an aspect language that integrates with the characterizing features of JavaScript such as first-class and higher-order functions, dynamic typing, and prototype-based programming. AspectScript is based on the pointcut-advice mechanism and includes the followings state-of-the-art AOP features:+**AspectScript** is a [[http://en.wikipedia.org/wiki/JavaScript|JavaScript]] extension for Aspect-Oriented Programming (AOP) that currently supports [[http://www.mozilla.com|Mozilla Firefox]], [[http://www.apple.com/safari/|Safari]], [[http://www.google.com/chrome|Chrome]], and [[http://www.opera.com|Opera]] (no plug-ins or add-ons required!). AspectScript is an aspect language that integrates with the characterizing features of JavaScript such as first-class and higher-order functions, dynamic typing, and prototype-based programming. AspectScript is based on the pointcut-advice mechanism and includes the followings state-of-the-art AOP features:
   * **Higher-order aspects**: AspectScript is directly inspired by [[http://www.cs.usask.ca/~cjd032/downloads/AspectScheme/|AspectScheme]], in which aspects, pointcuts, and advices are first-class values. Consequently, they can be created and manipulated at runtime. An aspect in AspectScript is a pointcut-advice pair; pointcuts and advices are plain JavaScript functions. This feature allows programmers to use the full power of higher-order programming in AOP.   * **Higher-order aspects**: AspectScript is directly inspired by [[http://www.cs.usask.ca/~cjd032/downloads/AspectScheme/|AspectScheme]], in which aspects, pointcuts, and advices are first-class values. Consequently, they can be created and manipulated at runtime. An aspect in AspectScript is a pointcut-advice pair; pointcuts and advices are plain JavaScript functions. This feature allows programmers to use the full power of higher-order programming in AOP.
  
Line 6: Line 6:
   * ** Hybrid join point model**: At its core, AspectScript adopts a join point model in the line of that of [[http://www.eclipse.org/aspectj/| AspectJ]] (see [[jp_list|the join point model]]), but tailored for the JavaScript language. However, AspectScript not only supports implicitly-generated join points following the language model, but also provides the possibility to define custom join points triggered explicitly, as in [[http://www.cs.iastate.edu/~ptolemy/|Ptolemy]].   * ** Hybrid join point model**: At its core, AspectScript adopts a join point model in the line of that of [[http://www.eclipse.org/aspectj/| AspectJ]] (see [[jp_list|the join point model]]), but tailored for the JavaScript language. However, AspectScript not only supports implicitly-generated join points following the language model, but also provides the possibility to define custom join points triggered explicitly, as in [[http://www.cs.iastate.edu/~ptolemy/|Ptolemy]].
      
-Despite its featuresAspectScript is very easy to use, thanks to sensible default semantics. For instance, to define an aspect that shows a message before calls to the **foo** function, it is only necessary to write:+Despite the numerous aspect-oriented features of AspectScript, it is still very easy to use, thanks to sensible default semantics. For instance, to define an aspect that shows a message before calls to the **foo** function, it is only necessary to write:
  
 <code java> <code java>
Line 15: Line 15:
 AspectScript.before(pointcut, advice); AspectScript.before(pointcut, advice);
 </code> </code>
 +
 +  * Do you want to see AspectScript in action? Please try the tetris game [[tetris|here]].
  
   * Do you need more examples? You can find them [[examples|here]].   * Do you need more examples? You can find them [[examples|here]].
  
-  * Does it seem complex? Do not give up!, you can follow our [[tutorial|tutorial]].+  * Do you want to learn more? You can follow our [[tutorial|tutorial]].
  
   * Do you have any doubt? Please, do not hesitate to ask in our [[http://groups.google.com/group/aspectscript|mailing list]].   * Do you have any doubt? Please, do not hesitate to ask in our [[http://groups.google.com/group/aspectscript|mailing list]].
Line 31: Line 33:
  
 We are convinced that AspectScript can be useful for both researchers and developers: We are convinced that AspectScript can be useful for both researchers and developers:
-  * **For developers**: AspectScript is a useful aspect language to modularize crosscutting concerns in the Web. Many common problems can be modularly solved using AspectScript! Take a look at the [[examples]] page)+  * **For developers**: AspectScript is a useful aspect language to modularize crosscutting concerns in the Web. Many common problems can be modularly solved using AspectScript! Take a look at the [[examples]] page. 
  
   * **For researchers**: AspectScript provides an extensible testbed for the experimentation with new AOP features.   * **For researchers**: AspectScript provides an extensible testbed for the experimentation with new AOP features.
  • start.1255975015.txt.gz
  • Last modified: 2009/10/19 14:56
  • by aspectscript