Human-Centered Programming Languages

edited by Rose Bohrer

1st edition

This book is designed as a flexible textbook for teaching about programming languages through the different kinds of people that study them, and through an interdisciplinary approach. Its largest audience is upper-level undergraduates in computing majors, but is intended to have something for everyone from newcomers to experts

Chapter 1

Introduction

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 2

What is a Language?

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 3

Programming in Rust

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 4

Regular Expressions

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 5

Context-Free Grammars

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 6

Parsing Expression Grammars

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 7

Abstract Syntax Trees and Interpreters

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 8

Operational Semantics

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 9

Types

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 10

Users and Designers

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 11

Quantitative Methods & Surveys

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 12

Qualitative Studies

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 13

Gender

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 14

Disability

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 15

Media Programming

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 16

Play

by Rose Bohrer

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 17

Natural Language

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 18

Diagramming

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 19

Process Calculus

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }
Chapter 20

Cost Semantics

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }

More Instructor Materials

function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); }

References

Everything cited

Index

Common words and where they are

Search

Find where words occur

Media

Images and video in the book

All Rights Reserved

Want to print this book or generate a PDF? See all chapters on a single page and then print or export. Long books can take some time to render.

Reading on an e-reader? Build an EPUB of this book. Images are shrunk to fit the size you choose, so pick the one closest to your device. Long books with many images can take a minute.

Rose Bohrer (2026). Human-Centered Programming Languages. …, retrieved 9/9/2026.

1st 7/13/2023   read

This edition of HCPL is a living document. It is not a mere work-in-progress but is subject to substantial change as the work evolves.