Cuneiform (programming language): Difference between revisions

Content deleted Content added
FalyKio (talk | contribs)
Created page with '{{ Infobox programming language | name = Cuneiform | logo = 200px | screenshot = File:Cf sc...'
 
FalyKio (talk | contribs)
No edit summary
Line 38:
| url = http://ceur-ws.org/Vol-1330/paper-03.pdf
}}</ref>
It is a workflow [[Domain-specific language|DSL]] in the form of a [[Functional programming|functional programming language]] promoting parallelizable [[Algorithmic skeleton|algorithmic skeletons]]. External tools and libraries, in, e.g., [[R (programming language)|R]] or [[Python (programming language)|Python]], can be integrated via a [[Foreign function interface|foreign function interface]]. Cuneiform's data-driven evaluation model and integration of external software originate in scientific workflow languages like [[Apache Taverna|Taverna]], [[KNIME]], or [[Galaxy (computational biology)|Galaxy]] while its algorithmic skeletons ([[Higher-order function|second-order functions]]) for parallel execution originate in data-parallel programming models like [[MapReduce]] or [[Pig (programming tool)|Pig Latin]]. Cuneiform scripts can be executed on top of [[Apache Hadoop|Hadoop]]<ref>https://github.com/marcbux/Hi-WAY</ref><ref>http://www.saasfee.io</ref><ref>
{{Cite journal
| last1 = Bux | first1 = Marc
Line 80:
| url = http://www.di.fc.ul.pt/~bessani/publications/dmah15-bbc.pdf
}}
</ref>.
 
==External Software Integration==
 
External tools and libraries are integrated in a Cuneiform script through its [[Foreign function interface|foreign function interface]]. By defining a task in a foreign language it is possible to use the API of an external tool or library. This way, tools can be integrated directly without the need of writing a wrapper or reimplementing the tool.
By defining a task in a foreign language it is possible to use the API of an external tool or library.
This way, tools can be integrated directly without the need of writing a wrapper or reimplementing the tool.
 
Currently supported foreign programming languages are:
Line 99 ⟶ 97:
This dependency graph constrains the order in which tasks can be evaluated.
Apart from data dependencies tasks can be evaluated in any order, assuming tasks are always [[Side effect (computer science)|side effect]]-free and deterministic.
I.e., tasks without data dependencies can be evaluated in parallel.
In addition, Cuneiform promotes [[Algorithmic skeleton|algorithmic skeletons]] many of which allow parallel evaluation.
 
;[[Map (higher-order function)|Map]]: Applies a task to each element in a list. Each task applications can run in parallel.