Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Data Deserves a
Language Too
Bernard Lambeau
Université catholique de Louvain (Belgium)
@blambeau
csv,conf – Berlin – 15 J...
We’ve got
a serious
marriage issue
between
Code and Data
You can’t
disentangle
them when
designed
conjointly
e.g. try sending a Java Graph abstraction over the wire
to another (no...
You can’t
assemble
them when
designed
separately
e.g. try solving the Impedance Mismatch
in a sound and elegant way
Coupling issue known for ages
• Niklaus Wirth, 1976
– The father of Pascal,
Modula 2 and a lot more
• Main message
– Data ...
A solution used for ages
• Information Hiding
– Parnas, 1971
• Abstract Data Types
– Liskov, 1974
Avoid coupling between s...
Software: a black-box cathedral
?
?
?
A Possible Root Cause
• Programming languages & practices have
strong biases towards Behavior
– Type systems & Type checki...
To Be is to be a Value
that is, a member of a Type
• An interesting question is
– Are you, value v, a member of type T ?
•...
Data Deserves a Language Too
What would a language strongly
biased towards data look like?
OR
http://www.finitio.io/try
• Finitio is a language for …
– Enforcing
– Validating
– Documenting
– Coercing
• … Datatypes in...
Meet Finitio & Contribute
• http://www.finitio.io/
– The best starting point
• github.com/blambeau/finitio
– Language spec...
Nächste SlideShare
Wird geladen in …5
×

Finitio - Data deserves a language too

Finitio is a language to validate, coerce and document data in configuration files, data exchanges, data APIS, SQL and NoSQL databases.

It comes with a dedicated type system for data, and a interoperability layer with programming languages.

  • Als Erste(r) kommentieren

Finitio - Data deserves a language too

  1. 1. Data Deserves a Language Too Bernard Lambeau Université catholique de Louvain (Belgium) @blambeau csv,conf – Berlin – 15 July 2014
  2. 2. We’ve got a serious marriage issue between Code and Data
  3. 3. You can’t disentangle them when designed conjointly e.g. try sending a Java Graph abstraction over the wire to another (non Java) software Component
  4. 4. You can’t assemble them when designed separately e.g. try solving the Impedance Mismatch in a sound and elegant way
  5. 5. Coupling issue known for ages • Niklaus Wirth, 1976 – The father of Pascal, Modula 2 and a lot more • Main message – Data structures and Algorithms are highly related • Yields another coupling issue – Between software components – Hurts evolution
  6. 6. A solution used for ages • Information Hiding – Parnas, 1971 • Abstract Data Types – Liskov, 1974 Avoid coupling between software components • Encapsulate data • Access it only via behavioral interfaces • e.g. the Stack ADT and its axiomatic contract
  7. 7. Software: a black-box cathedral ? ? ?
  8. 8. A Possible Root Cause • Programming languages & practices have strong biases towards Behavior – Type systems & Type checking algorithms – APIs and documentation – Testing • They mostly ignore the Data perspective of engineering – To be is too often sacrificed over To Behave
  9. 9. To Be is to be a Value that is, a member of a Type • An interesting question is – Are you, value v, a member of type T ? • Examples – Are you 13 an Integer between 0 and 45 ? – Are you {…} a Member information with a valid Password, that is, a String of min 8 characters ? • Useful only if we can capture interesting Types in the first place – Sets of values, Arbitrary Subsets, Supersets – Weak or no support in conventional prog. languages
  10. 10. Data Deserves a Language Too What would a language strongly biased towards data look like? OR
  11. 11. http://www.finitio.io/try • Finitio is a language for … – Enforcing – Validating – Documenting – Coercing • … Datatypes in – Files – APIs – Exchanges – Databases • + an interoperability layer: Information Contracts – A proposed dual to ADTs’ axiomatic contracts
  12. 12. Meet Finitio & Contribute • http://www.finitio.io/ – The best starting point • github.com/blambeau/finitio – Language specification, e2e tests, doc source • github.com/blambeau/finitio-rb – Ruby binding • github.com/llambeau/finitio.js – Javascript binding

×