# NESL

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/NESL
> Markdown URL: https://mediated.wiki/source/NESL.md
> Source: https://en.wikipedia.org/wiki/NESL
> Source revision: 1344370062
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

For the former New England School of Law, see [New England Law Boston](/source/New_England_Law_Boston).

NESL Paradigm parallel, functional, array Developer SCandAL project First appeared 1993 Stable release 3.1 / November 1995 License permissive license similar to the ISC and X11 licenses

**NESL** is a parallel [programming language](/source/Programming_language) developed at [Carnegie Mellon](/source/Carnegie_Mellon) by the SCandAL project and released in 1993. It integrates various ideas from [parallel algorithms](/source/Parallel_algorithm), [functional programming](/source/Functional_(programming)), and [array programming](/source/Array_programming) languages.

The most important new ideas behind NESL are

- **Nested data parallelism**: this feature offers the benefits of [data parallelism](/source/Data_parallelism), concise code that is easy to understand and debug, while being well suited for irregular algorithms, such as algorithms on trees, graphs or sparse matrices.

- **A language based performance model**: this gives a formal way to calculate the work and depth of a program. These measures can be related to running time on parallel machines.

The main design guideline for NESL was to make parallel programming easy and portable. Algorithms are typically significantly more concise in NESL than in most other parallel programming languages, and the code closely resembles high-level pseudocode.

NESL handles nested data parallelism by using the [flattening transformation](/source/Flattening_transformation) to convert nested data parallelism to flat data parallelism. This works by storing nested vectors as the nested data and a segment descriptor of vector lengths, separately.[1] This flattening transform, however, can increase the asymptotic work and space complexity of the original program, leading to a much less efficient result.[2]

## Influences

NESL heavily influenced Data Parallel [Haskell](/source/Haskell_(programming_language)).[3]

## See also

- [Cilk](/source/Cilk)

## References

1. **[^](#cite_ref-1)** Blelloch, Guy (1995). "NESL: A Nested Data-Parallel Language". {{[cite journal](https://en.wikipedia.org/wiki/Template:Cite_journal)}}: Cite journal requires |journal= ([help](https://en.wikipedia.org/wiki/Help:CS1_errors#missing_periodical))

1. **[^](#cite_ref-2)** Spoonhower, Daniel; Harper; Blelloch; Gibbons (2008). "Space profiling for parallel functional programs". {{[cite journal](https://en.wikipedia.org/wiki/Template:Cite_journal)}}: Cite journal requires |journal= ([help](https://en.wikipedia.org/wiki/Help:CS1_errors#missing_periodical))

1. **[^](#cite_ref-dph_3-0)** Jones, Simon Peyton (23 April 2010). ["Data Parallel Haskell"](https://www.youtube.com/watch?v=NWSZ4c9yqW8). *[YouTube](/source/YouTube)*. Retrieved 6 September 2011.

## External links

- [NESL homepage](https://www.cs.cmu.edu/~scandal/nesl.html)

This programming-language-related article is a stub. You can help Wikipedia by adding missing information.

- [v](https://en.wikipedia.org/wiki/Template:Prog-lang-stub)
- [t](/source/Template_talk%3AProg-lang-stub)
- [e](https://en.wikipedia.org/wiki/Special:EditPage/Template:Prog-lang-stub)

---
Adapted from the Wikipedia article [NESL](https://en.wikipedia.org/wiki/NESL) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/NESL?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
