Finitio - Data deserves a language too

12
Data Deserves a Language Too Bernard Lambeau Université catholique de Louvain (Belgium) @blambeau csv,conf Berlin 15 July 2014

description

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.

Transcript of Finitio - Data deserves a language too

Page 1: Finitio - Data deserves a language too

Data Deserves a Language Too

Bernard Lambeau Université catholique de Louvain (Belgium)

@blambeau

csv,conf – Berlin – 15 July 2014

Page 2: Finitio - Data deserves a language too

We’ve got a serious marriage issue between Code and Data

Page 3: Finitio - Data deserves a language too

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

Page 4: Finitio - Data deserves a language too

You can’t assemble them when designed separately

e.g. try solving the Impedance Mismatch in a sound and elegant way

Page 5: Finitio - Data deserves a language too

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

Page 6: Finitio - Data deserves a language too

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

Page 7: Finitio - Data deserves a language too

Software: a black-box cathedral

?

? ?

Page 8: Finitio - Data deserves a language too

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

Page 9: Finitio - Data deserves a language too

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

Page 10: Finitio - Data deserves a language too

Data Deserves a Language Too

What would a language strongly biased towards data look like?

OR

Page 11: Finitio - Data deserves a language too

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

Page 12: Finitio - Data deserves a language too

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