# Presentation: 845063

## What online mathematical content could be useful for commercial software development?

- Earlin Lutz
- 1335 Jackson Lane
- West Chester PA 19380
- 610-692-4054
- elutz@bellatlantic.net

- Earlin Lutz
- Bentley Systems Inc
- 685 Stockton Dr
- Exton PA 19341
- 610-458-2734
- earlin.lutz@bentley.com

## GF Experts Quiz Question:  What is this?

- /

- 1

- sqrt

## The programming connection

## Multiple Targets are the norm

- C functions

- java methods

- jni wrapper

- VB wrapper

- C# methods

- C# wrapper

## A Special property of Green’s Functions....

- Complex Expressions Big Benefit for automated processing

- (Fill in the most complex expression
- from your paper)

## Outline

- Review “common practice” for transfering mathematical content to commercial software
- Common practice is repetitive, unreliable
- “programmer centric”
- Envision highly automated process
- Structured primary content in “web library”
- programmer change from *doer* to *specifier* of implementation
- Full benefit requires changes at every phase of overall process
- academic providers
- programmer
- management

## Programmer-Centric Software Workflow

## Programmer Centric Systemdoes not identify ....

- Repetitive Problem
- Modest library of 3D point, 3x3 matrix, affine 3d transform functions can easily have 100 functions of comparable complexity
- Highly structured primary material
- Highly structured “output” of programming process
- Programming languages are precisely defined
- Good SW organizations have precise conventions for
- data structures
- argument list ordering
- parameter passing
- local variable creation

## Data Centric Software Workflow

- Structured Mathematical
- Expressions

- source

- local style rules

- Prog. Langauge

- Translation Spec

- Translation
- Tool

-  Library of Pure
- Mathematical Expressions

- Query

**No human intervention !!**

## Automated Code Generation ..

- Widely used for isolated steps of SW development
- Huge benefits in ideal situation
- Widely distrusted
- Stepping back to one deeper level of abstraction is difficult concept
- Most programmers like tangible feel of producing CODE
- Management distrust.   Programmers are expected to produce code directly, not indirectly.

## Current Online-Library Content

- Journal paper/tech report -- pdf
- hard to extract structured mathematical content
- Source code
- Useful, but requires extensive manual (I.e. error prone) analysis & manipulation to adapt to new language, coding standards, OS
- “all or nothing”

## Improved online Content

- Computer-readable
- Data intended for further processing, not for visual inspection
- Tree structured
- Any equation must be present as tree structure
- Granularity
- Anything as small as an equation within a paper must be addressable
- Structural properties application independent
- like XML concepts of well formed, validated files

## “Data Language” Candidates

- XML & derivatives
- Widely recognized lexical/syntax rules
- slick editing & presentation tools available (??)
- visually ugly
- lisp-like
- Use lisp form as data structure, not programming language
- maple/mathematica
- widespread experience as language for expression entry rather than execution
- need to identify subset that is meaningful outside proprietary SW

## What (who!) has to change

- Online library needs to contain mathematical content with highly annotated tree structures suitable for query and downstream processing
- Primary creators (academics in many disciplines) need to “write” into the library at this level of granularity
- won’t happen until their research process uses the same data!!
- Programmers need to redefine their jobs from “write code” to “write queries and transformation specs”
- Management needs to understand that “transformation specs” are “real” programming.

## Conclusions

- “Programmer Centric” SW development places programmer “between” paper-based/paper-like publications and working code
- In “Data Centric” model,
- Primary data form must be machine-friendly
- Transfer of data from “Primary Library” to “Production code” should be
- highly automated
*controlled by* programmer
- not *carried out* by programmer
- Lesson from history: Programming practice changes in response to successful demonstrations (“bottom up”), not in response to great plans (“top down”)