La programación funcional y las arquitecturas multicore: estado del arte

Contenido principal del artículo

Jorge Gabriel Hoyos Pineda
Álex Puertas-González

Resumen

Este artículo presenta una revisión bibliográfica tendiente a identificar los conceptos fundamentales de la programación funcional, los diferentes enfoques y las aplicaciones que se han dado a este paradigma de programación. En una segunda parte, la revisión se centra en los trabajos orientados a la aplicación y el aprovechamiento de la programación funcional para el procesamiento paralelo sobre arquitecturas multicore. Se concluye que gracias a las características especiales que presenta, el paradigma funcional ha venido ganando terreno en diferentes campos de aplicación y paulatinamente se ha venido incorporando en los planes de estudio de programas universitarios en el área de la computación y afines. 

Descargas

La descarga de datos todavía no está disponible.

Detalles del artículo

Cómo citar
Pineda, J. G. H., & Puertas-González, Álex. (2016). La programación funcional y las arquitecturas multicore: estado del arte. Ingenio Magno, 6(2), 124-136. Recuperado a partir de http://revistas.ustatunja.edu.co/index.php/ingeniomagno/article/view/1100
Sección
Artículos Vol. 6-2
Biografía del autor/a

Jorge Gabriel Hoyos Pineda, Universidad Santo Tomas seccional Tunja

Grupo GIBRANT, Facultad de Ingenieria de Sistemas. Universidad Santo Tomás seccional Tunja, Boyacá, Colombia

Citas

Abel, S. (2011). Nested Lambda Expressions with Let Expressions in C++ Template Metaprograms. Electronic Notes in Theoretical Computer Science, 279(3), 27-41. doi: 10.1016/j.entcs.2011.11.036
Al Zain, A., Trinder, P., Aswad, M., Michaelson, G., Hammond, K. y Berthold, J. (2009). Low-pain, high-gain multicore programming in Haskell. Paper presented at the DAMP’09, Savannah, Georgia, USA.
Aswad, M., Thinder, P. W. y Loidl, H. (2012). Architecture aware parallel programming in glasgow parallel Haskell (GPH). Procedia Computer Science, 9, 1807-1816. Doi: 10.1016/j.procs.2012.04.199
Bailes, P. y Kemp, C. (2004). Obstacles to a totally functional programming style. Paper presented at the 2004 Australian Software Engineering Conference.
Bergstrom, L., Rainey, M., Reppy, J., Shaw,A. y Fluet, M. (2010). Lazy tree splitting. Paper presented at the International Conference on Functional Programming.
Berthold, J., Marlow, S., Hammond, K. y Al Zain, A. (2009). Comparing and optimising parallel Haskell implementations for multicore machines. Paper presented at the 2009 International Conference on Parallel Processing Workshops.
Blelloch, G. E. (1996). Programming parallel algorithms. Communications of the ACM, 39(3), 13. Doi: 10.1145/227234.227246
Bousdira, W., Gava, F., Gesbert, L., Loulergue, F. y Petiot, G. (2010). Functional parallel programming with revised bulk synchronous parallel ML. Paper presented at the Networking and Computing (ICNC), 2010 First International Conference on.
Cerný, D. y Josef, D. (2014). Functional programming languages in computer simulation of electronics circuits. 2014 International Conference on Computational Science and Computational Intelligence, 229-235. Doi: 10.1109/ CSCI.2014.46
Collins, G. y Doug, B. (2011). The snap framework: a web toolkit for Haskell. Recuperado de http://static. googleusercontent.com/media/research.google.com/ en//pubs/archive/37267.pdf
Commercial Users of Functional Programming (CUFP) (2014a). Functional Programming at Verizon OnCue. Recuperado de http://cufp.org./2014/timothy-perrett-functional-programming-at-verizon-oncue.html
Commercial Users of Functional Programming (CUFP) (2014b). Haskell in the Misson Control Domain. Recuperado de http://cufp.org./2014/michael-oswald-haskell-in-the-misson-control-domain.html
Commercial Users of Functional Programming (CUFP) (2014c). Haskell tools for satellite operations. Recuperado de http://cufp.org./2014/bjrn-buckwalter-haskell-tools-for-satellite-operations.html
Chakravarty, M., Leshchinskiy. R., Peyton, S., Keller, G. y Marlow, S. (2007). Data parallel Haskell: a status report. Paper presented at the Workshop on Declarative Aspects of Multicore Programming.
Choppella, V., Kumar, H., Manjula, P. y Viswanath, K. (2012). From high-school algebra to computing through functional programming. Paper presented at the Technology for Education (T4E), 2012 IEEE Fourth International Conference.
Damjanovic, V. y Dragan, D. (2010). Functional programming way to interact with software attacks and vulnerabilities. Third International Conference of Software Testing, Verification, and Validation Workshops, 388- 393. doi: 10.1109/ICSTW.2010.53
Diaz, J., Muñoz-Caro, C. y Niño, A. (2012). A survey of parallel programming models and tools in the multi and many-core era. IEEE Transactions on Parallel and Distributed Systems, 23(8).
Dung, P. y Hansen, M. (2011). From functional programming to multicore parallelism: A case study based on Presburger Arithmetic. Paper presented at the Nordic Workshop on Programming Theory.
Fenwick, M., S,esanker, C., Schiller, M. R., Ellis, H. J., Vyas, J. y Grik, M. R. (2012). An open-source sandbox for increasing the accessibility of functional programming to the bioinformatics and scientific communities. Paper presented at the Ninth International Conference on Information Technology- New Generations. IEEE computer Society.
Gibbons, J. (2015). Functional programming for domain-specific languages. Recuperado de http://www.cs.ox. ac.uk/jeremy.gibbons/publications/fp4dsls.pdf
Glaser, H. y Henderson, P. (1991) Functional programming. Software Engineer’s Reference Handbook. Butterworth, 35/1-35/6.
González, F. (1998). Programación funcional: conceptos y perspectivas. Ingeniería e Investigación, 40, 65-71.
Hansen, M. y Rischel, H. (2013). Functional programming using F#. Cambridge: Cambridge University Press.
Henderson, P. (1986). Functional programming, formal specification, and rapid prototyping. IEEE Transactions on Software Engineering, SE-I2(2), 10.
Hinsen, K. (2009). The promises of Functional Programming. Computing in Science & Engineering, 86-90. Doi: 10.1109/MCSE.2009.129
Hudak, P. (1989). Conception, evolution, and application of functional programming languages. ACM Computing Surveys, 21(3), 359-411.
Hughes, J. (1990). Why functional programming matters. Recuperado de https://www.cs.kent.ac.uk/people/staff/ dat/miranda/whyfp90.pdf
Jones, S., Leshchinskiy, R., Keller, G. y Chakravarty, M. M. (2008). Harnessing the multicores: nested data parallelism in Haskell. Paper presented at the FSTTCS.
Karczmarczuk, L. (1999). Scientific computation and functional programming. Computing in Science and Engineering Magazine, 9.
Läufer, K. y George, K. (2009). The promises of typed, pure, and lazy functional programming: Part II. Recuperado de http://ecommons.luc.edu/cgi/ viewcontent.cgi?article=1022&context=cs_facpubs
Machado, R. (2013). An introduction to lambda calculus and functional programming. 2013 2nd Workshop-School on Theoretical Computer Science, 26-33. Doi: 10.1109/ WEIT.2013.40
Marlow, S. (2012). Parallel and concurrent programming in Haskell. Cambridge: Microsoft Research Ltd.
Meijer, E. (2014). The curse of the excluded middle. Communications of de ACM, 12(4), 50-55.
Muranushi, T. (2012). Paraiso: an automated tuning framework for explicit solvers of partial differential equations. Computational Science & Discovery, 5, 1-40. Doi: 10.1088/1749-4699/5/1/015003
Nelson, B., Archer, J. y Rushton, N. (2014). Easel: purely functional game programming. Paper presented at the SERP 2014.
Nelson, B. y Rushton, N. (2013). Fully automatic parallel programming. Paper presented at the International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA).
OCaml.org. (2015). Companies using OCaml. Recuperado de http://ocaml.org/learn/companies.html
Ortiz, S. (2012). Computing trends lead to new programming languages. Computer, 45(7).
Pankratius, V., Schmidt, F. y Garreton, G. (2012). Combining functional and imperative programming for multicore software: An empirical study evaluating Scala and Java. Paper presented at the 34th International Conference on Software Engineering (ICSE).
Perry, A. (2007). System level design with Rosetta. San Francisco: Morgan Kaufmann.
Phan, A.-D. y Hansen, M. (2014). An approach to multicore parallelism using functional programming: A case study based on Presburger Arithmetic. Journal of Logical and Algebraic Methods in Programming, 84(1), 1-17. Doi: 10.1016/j.jlamp.2014.07.002
Reck, F. y Fischer, S. (2009). Towards a parallel search for solutions of non-deterministic computations. Paper presented at the 39th Annual Meeting of the German Informatics Society.
Ren, S. y Nogiec, J. (2008). Developing concurrent applications on emerging multicore platforms. Paper presented at the International Conference on Complex, Intelligent and Software Intensive Systems (CISIS).
Rivoire, S. (2010). A breadth-first course in multicore and manycore programming. Proceedings of the 41st ACM technical symposium on Computer Science education, 214-218. Doi: 10.1145/1734263.1734339

Sivaramakrishnan, K. C. Z., L ; Jagannathan, S. (2014). MultiMLton: Amulticore-aware runtime for standard ML. Journal of Functional Programming, 24(6), 1-62. Doi: 10.1017/S0956796814000161

Slonneger, K. (1995). Formal syntax and semantics of programming languages: a loboratory-based approach. Reading, Massachusetts: Addison-Wesley.

Subramaniam, V. (2014). Functional Programming in Java- Harnessing the Power of Java 8 Lambda Expressions. Dallas, Texas: The Pragmatic Programmers

Thiry, L. y Hassenforder, M. (2013). Surfing with fun. Paper presented at the 2013 International Symposium of Theoretical Aspects of Software Engineering.

Tran, N.-L., Skhiri, S., Lesuisse, A. y Zimányi, E. (2012). AROM: processing big data with data flow graphs and functional pogramming. IEEE 4th International Conference on Cloud Computing Technology and Science, 875-882. Doi: 10.1109/CloudCom.2012.6427487

Vara, A. (2008). Formalizando el proceso de depuraciónen programación funcional paralela y perezosa (tesis de doctorado). Madrid: Universidad Complutense de Madrid.

Veldema, R. y Philippsen, M. (2010). Safe and familiar multi-core programming by means of a hybrid functional and imperative language. Recuperado de http://link. springer.com/chapter/10.1007%2F978-3-642 13374- 9_11#page-2

Vichare, A. (2013). Algorithms, the lambda calculus and programming - An intuitive approach. Resonance, 18(4), 345-367.

Vinoski, S. (2012). The Nitrogen Erlang Web Framework. The Functional Web, 4.

Voellmy, A., Wang, J., Hudak, P. y Yamamoto, K. (2014). Mio: a high-performance multicore IO manager for GHC. Recuperado de http://haskell.cs.yale.edu/wp-content/uploads/2013/08/hask035-voellmy.pdf

Wadler, P. (2001). Monads for functional programming. Computing science. Glasgow: Universidad de Glasgow.

Wampler, D. (2011a). Functional programming for Java developers. Estados Unidos: O’Reilly.

Wampler, D. (2011b). Scala web frameworks: looking beyond lift. The Functional Web, 8.

Winter, V. (2014). Bricklayer: an authentic introduction to the functional programming language SML. Paper presented at the TFPIE 2014.