<commit_before>
* McLab
** goal of project
   - Provide an extensible 
** basic structure
* Extensible design
** intro
   provide different abstractions and paradigms to scientific
   programmers
   - new data structure capabilities
   - new control flow 
   - different language constructs
** Tools
*** Metalexer
    boxy picture with colours explaining how it merges new stuff
*** JastAdd Parser
*** JastAdd
*** Analysis system
    Just a brief mention saying we think this is important hav
* Aspect Matlab
  glue that sticks the general discussion of the frontend to the
  specific case 
  This is a specific extension
  Maybe talk about the possibility of having other extensions of the
  main project and 
* Anton applications
** Matlab intro
   - scope of matlab. Who does Matlab?

** language
   - dynamically typed
   - everything is an array
   - all operations are on matrizes
   - functions and array indexing looks the same

   - scripts 
   - functions

** why an aspect matlab?
   seems weird:
   matlab programs small, scientific computing doesn't rely on classes


   matlab has some domain
   aspect matlab has some domain
   - so far aspects are not written for specific programs
   - two scopes
     - profiling existing programs
     - extending functionality

* Domain specific challenges
** describe matlab issues
*** Matlab very dynamic
*** confusing syntax and semantics
**** change depending on environment
     fn vs script
*** weaving 
    - if you can't tell if a name use is a variable access or a
      function call then how do you weave gets
    - simple runtime checks could work, but naive ones change
      semantics of the code and introduce unwanted use of unwanted
      features
*** need analysis
**** how it fits into the projects
**** what it does
* Use cases
** profiling
*** overview
    - extra pointcuts allow very detailed view of whats going on
    - all the context information provides even more info
      at the same time
    - scientific programming is basically matrix computations
    - performance is of paramount importance
    - also, knowing all sorts of other properties of your programs helps
      --> it's a domain where you want to know exactly what's going on in your program

*** examples
**** flops 1)
     just count flops - could be done in matlab
     -- aspects: one file

**** flops 2)
     enclosing balablabla
     -- need aspects now
     -- keep 'stack'

**** track sparsity
**** numerical errors?
     -- now we are doing something crazy, overriding all data etc.
     -- override loops, too

** extending functionality
   - we have an extensible toolkit (McLab)
   - we can use aspects for rapid prototyping of new functionality

*** examples
**** case 1)
     add some functions
     - really simple, could be done with just dumping some .m files in the
       same dir

**** case 2)
     iteration space tricks
     consier new sntax addition
     for [x,i] = Z
     ...
     end

     - more complicated - functions expose context information

**** case 3)
     unit benchmark
     consider new addition of units
     x = 3*m
     ... (example from example)

     - we have some functions, but they affect all the data types. we have
       to annotate all data
     - we need to override loops as well

* outlook
** theme in current examples
   all these ideas regarding abstract interpretation
   - many aspects attach information to variables
   - one cold create a special kind of aspect that allows one to attach
     data like attributes, and then specifies how this data changes
     (flows) through operations etc.
<commit_msg>changed structure to match talk structur<commit_after>
* McLab
** goal of project
   - Provide an extensible 
** basic structure
** Extensible design
*** intro
    provide different abstractions and paradigms to scientific
    programmers
    - new data structure capabilities
    - new control flow 
    - different language constructs
*** Tools
**** Metalexer
     boxy picture with colours explaining how it merges new stuff
**** JastAdd Parser
**** JastAdd
**** Analysis system
     Just a brief mention saying we think this is important hav
* Aspect Matlab
  glue that sticks the general discussion of the frontend to the
  specific case 
  This is a specific extension
  Maybe talk about the possibility of having other extensions of the
  main project and 
** Anton applications
*** Matlab intro
    - scope of matlab. Who does Matlab?

*** language
    - dynamically typed
    - everything is an array
    - all operations are on matrizes
    - functions and array indexing looks the same

    - scripts 
    - functions

*** why an aspect matlab?
    seems weird:
    matlab programs small, scientific computing doesn't rely on classes


    matlab has some domain
    aspect matlab has some domain
    - so far aspects are not written for specific programs
    - two scopes
      - profiling existing programs
      - extending functionality

** Domain specific challenges
*** describe matlab issues
**** Matlab very dynamic
**** confusing syntax and semantics
***** change depending on environment
      fn vs script
**** weaving 
     - if you can't tell if a name use is a variable access or a
       function call then how do you weave gets
     - simple runtime checks could work, but naive ones change
       semantics of the code and introduce unwanted use of unwanted
       features
**** need analysis
***** how it fits into the projects
***** what it does
** Use cases
*** profiling
**** overview
     - extra pointcuts allow very detailed view of whats going on
     - all the context information provides even more info
       at the same time
     - scientific programming is basically matrix computations
     - performance is of paramount importance
     - also, knowing all sorts of other properties of your programs helps
       --> it's a domain where you want to know exactly what's going on in your program

**** examples
***** flops 1)
      just count flops - could be done in matlab
      -- aspects: one file

***** flops 2)
      enclosing balablabla
      -- need aspects now
      -- keep 'stack'

***** track sparsity
***** numerical errors?
      -- now we are doing something crazy, overriding all data etc.
      -- override loops, too

*** extending functionality
    - we have an extensible toolkit (McLab)
    - we can use aspects for rapid prototyping of new functionality

**** examples
***** case 1)
      add some functions
      - really simple, could be done with just dumping some .m files in the
        same dir

***** case 2)
      iteration space tricks
      consier new sntax addition
      for [x,i] = Z
      ...
      end

      - more complicated - functions expose context information

***** case 3)
      unit benchmark
      consider new addition of units
      x = 3*m
      ... (example from example)

      - we have some functions, but they affect all the data types. we have
        to annotate all data
      - we need to override loops as well

** outlook
*** theme in current examples
    all these ideas regarding abstract interpretation
    - many aspects attach information to variables
    - one cold create a special kind of aspect that allows one to attach
      data like attributes, and then specifies how this data changes
      (flows) through operations etc.

{'fraction_non_alphanumeric': 0.05831181187984233, 'fraction_numerical': 0.0016310996330025826, 'mean_word_length': 2.8065183652353856, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1115464', 'n_tokens_mistral': 1835, 'n_tokens_neox': 1728, 'n_words': 967}