* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Embedded Functional Programming in Hume
Scala (programming language) wikipedia , lookup
C Sharp syntax wikipedia , lookup
Control flow wikipedia , lookup
Corecursion wikipedia , lookup
Abstraction (computer science) wikipedia , lookup
Join-pattern wikipedia , lookup
Programming language wikipedia , lookup
Object-oriented programming wikipedia , lookup
Reactive programming wikipedia , lookup
Falcon (programming language) wikipedia , lookup
Structured programming wikipedia , lookup
Go (programming language) wikipedia , lookup
Embedded Functional Programming Gergely Patai patai@iit.bme.hu Budapest University of Technology and Economics Department of Control Engineering and Information Technology RCEAS 2007, Budapest 23 November 2007 1 Outline     Functional programming in a nutshell Motivation: desirable properties Reasons of neglect Real-life examples in embedded systems development  Further directions RCEAS 2007, Budapest 23 November 2007 2 Functional programming  Declarative programming paradigm  Programs defined as series of equations  Typical characteristics:  Lack of side effects (a.k.a. ‘purity’)  Strong, static typing and type inference  Succinctness  Some languages: Haskell, ML family, Scheme, Clean, F# RCEAS 2007, Budapest 23 November 2007 3 FP properties: purity  Referential transparency  Function return values depend only on the explicit arguments, not the context  Context-free expressions: easier testing and debugging, richer static analysis possible  No variables  Comparatively little state space  Safe concurrency  Loops expressed with recursion  I/O clearly separated from logic RCEAS 2007, Budapest 23 November 2007 4 FP properties: type system  Strong typing  Protection against misinterpreting data  Type inference  Types don’t need to be specified explicitly  Every subexpression has a well-defined type  Inconsistencies detected at compile time RCEAS 2007, Budapest 23 November 2007 5 FP properties: succinctness  Typically little boilerplate  Code/structure reuse possible at a small level of granularity  Loops are often abstracted away  In general shorter by a factor of two to ten RCEAS 2007, Budapest 23 November 2007 6 Why is it not widely used?  FP originates around 1960 with LISP  Too resource intensive for that time (garbage collection, reflection…)  Imperative languages pervaded the industry  Programmers got used to thinking imperatively RCEAS 2007, Budapest 23 November 2007 7 Is it really not used?  Modern languages keep adopting features of functional languages  Managed memory  Type inference  Lambda expressions (unnamed functions)  Why not adopt the whole paradigm? RCEAS 2007, Budapest 23 November 2007 8 Example: Lava  Haskell library to aid hardware design  Generating VHDL code from functional description  Mary Sheeran: Hardware Design and Functional Programming: a Perfect Match RCEAS 2007, Budapest 23 November 2007 9 Example: Erlang      Concurrent functional language Asynchronous IPC (message passing) Fault tolerance mechanism Hotswap support http://www.erlang.org RCEAS 2007, Budapest 23 November 2007 10 Example: Lustre  Synchronous dataflow language, a declarative relative of Esterel  Used in commercial safety critical products (mostly avionics) since 1993  http://www-verimag.imag.fr/SYNCHRONE RCEAS 2007, Budapest 23 November 2007 11 Example: Hume  Experimental language, still developing  Programs: boxes connected with wires  Wires: persistent state, one input and one output each  Boxes: buffered combination networks     Compile-time resource limit guarantees Execution: VM, native code (C), FPGA http://www.hume-lang.org http://www.embounded.org RCEAS 2007, Budapest 23 November 2007 12 Where to go from here?  Functional languages viable in a wide range of applications  An underrated (or just unknown) paradigm  Our ongoing experiments:  Hume on embedded platforms (Tmote Sky, Mindstorms NXT, mitmót)  Haskell on the desktop for remote controlling robots  What about you?  RCEAS 2007, Budapest 23 November 2007 13 Thank you for your attention! RCEAS 2007, Budapest 23 November 2007 14
 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                            