How to Think about Parallel Programming: Not! [video] (2021)

原始链接: https://www.infoq.com/presentations/Thinking-Parallel-Programming/

Guy L. Steele Jr. argues that programmers shouldn't need to explicitly manage parallelism. Instead, programming languages should automatically handle parallel execution, freeing developers to focus on problem-solving. This shift necessitates a new language design philosophy centered on algorithms built around independence and "build-and-conquer" approaches, moving away from traditional linear problem decomposition. Steele, a Sun Fellow, advocates for this approach as part of Sun Microsystems Laboratories' Programming Language Research project. His presentation, recorded at Strange Loop 2011, aligns with the conference's focus on innovation at the intersection of diverse technologies, including data storage, alternative languages, concurrent and distributed systems, web development, and mobile apps. Strange Loop fosters exploration of emerging technologies, enterprise solutions, and academic research, making it a suitable venue for Steele's vision of transparently parallel programming.

The Hacker News thread discusses parallel programming and the limitations of using "for loops" for parallel execution. A key idea is that traditional for loops enforce order and allow breaking, hindering parallelization. Commenters suggest constructs like "parallel for" (found in languages like C# and Rust) and task-based approaches, where tasks are stateless and orchestrated by frameworks like Spark or Tensorflow. The discussion highlights challenges like the overhead of thread coordination and cache contention, favoring task-level parallelism with minimal synchronization. Some argue that language features like map, reduce, and comprehensions already provide solutions for dependency-free iteration. OpenMP is mentioned as a pragma-based extension for parallel for loops, but some find it less than ideal. The complexities of handling dependencies between iterations, without strict serialization, are also acknowledged. One commenter points out that even "break" introduces a dependency, requiring a shared cancellation token for coordinated termination in parallel loops. The need for a new, inherently parallel programming paradigm is expressed.
相关文章

原文

InfoQ Homepage Presentations How to Think about Parallel Programming: Not!

Summary

Guy L. Steele Jr. believes that it should not be the programmer’s job to think about parallelism, but languages should provide ways to transparently run tasks in parallel. This requires a new approach in building languages supporting algorithms built on independence and build-and-conquer principles rather than on linear decomposition of problems.

Bio

Guy Steele is a Sun Fellow for Sun Microsystems Laboratories, working on the Programming Language Research project. He received his A.B. in applied mathematics from Harvard College (1975), and his S.M. and Ph.D. in computer science and artificial intelligence from MIT (1977 and 1980). Prior to joining Sun Microsystems, he was an assistant professor of computer science at Carnegie-Mellon University

About the conference

Strange Loop is a developer-run software conference. Innovation, creativity, and the future happen in the magical nexus "between" established areas. Strange Loop eagerly promotes a mix of languages and technologies in this nexus, bringing together the worlds of bleeding edge technology, enterprise systems, and academic research. Of particular interest are new directions in data storage, alternative languages, concurrent and distributed systems, front-end web, semantic web, and mobile apps.

Recorded at:

Jan 14, 2011

联系我们 contact @ memedata.com