The book explores the technical as well as cultural imaginaries of programming from its insides, demonstrating the reflexive practice of aesthetic programming, to understand and question existing technological objects and paradigms.
The aesthetic and political implications of working with code as procedure, expression, and action. Speaking Code begins by invoking the “Hello World” convention used by programmers when learning a new language, helping to establish the interplay of text and code that runs through the book. Interweaving the voice of critical writing from the humanities with the tradition of computing and software development, in Speaking Code Geoff Cox formulates an argument that aims to undermine the distinctions between criticism and practice and to emphasize the aesthetic and political implications of software studies. Not reducible to its functional aspects, program code mirrors the instability inherent in the relationship of speech to language; it is only interpretable in the context of its distribution and network of operations. Code is understood as both script and performance, Cox argues, and is in this sense like spoken language—always ready for action. Speaking Code examines the expressive and performative aspects of programming; alternatives to mainstream development, from performances of the live-coding scene to the organizational forms of peer production; the democratic promise of social media and their actual role in suppressing political expression; and the market's emptying out of possibilities for free expression in the public realm. Cox defends language against its invasion by economics, arguing that speech continues to underscore the human condition, however paradoxical this may seem in an era of pervasive computing.
Who are computer hackers? What is free software? And what does the emergence of a community dedicated to the production of free and open source software--and to hacking as a technical, aesthetic, and moral project--reveal about the values of contemporary liberalism? Exploring the rise and political significance of the free and open source software (F/OSS) movement in the United States and Europe, Coding Freedom details the ethics behind hackers' devotion to F/OSS, the social codes that guide its production, and the political struggles through which hackers question the scope and direction of copyright and patent law. In telling the story of the F/OSS movement, the book unfolds a broader narrative involving computing, the politics of access, and intellectual property. E. Gabriella Coleman tracks the ways in which hackers collaborate and examines passionate manifestos, hacker humor, free software project governance, and festive hacker conferences. Looking at the ways that hackers sustain their productive freedom, Coleman shows that these activists, driven by a commitment to their work, reformulate key ideals including free speech, transparency, and meritocracy, and refuse restrictive intellectual protections. Coleman demonstrates how hacking, so often marginalized or misunderstood, sheds light on the continuing relevance of liberalism in online collaboration.
Elements of Programming provides a different understanding of programming than is presented elsewhere. Its major premise is that practical programming, like other areas of science and engineering, must be based on a solid mathematical foundation. This book shows that algorithms implemented in a real programming language, such as C++, can operate in the most general mathematical setting. For example, the fast exponentiation algorithm is defined to work with any associative operation. Using abstract algorithms leads to efficient, reliable, secure, and economical software.
This collection of short expository, critical and speculative texts offers a field guide to the cultural, political, social and aesthetic impact of software. Experts from a range of disciplines each take a key topic in software and the understanding of software, such as algorithms and logical structures.
Apparitions takes a new look at the critical legacy of one of the 20th century's most important and influential thinkers about music, Theodor W. Adorno. Bringing together an international group of scholars, the book offers new historical and critical insights into Adorno's theories of music and how these theories, in turn, have affected the study of contemporary art music, popular music, and jazz.
Peter Seibel interviews 15 of the most interesting computer programmers alive today in Coders at Work, offering a companion volume to Apress’s highly acclaimed best-seller Founders at Work by Jessica Livingston. As the words “at work” suggest, Peter Seibel focuses on how his interviewees tackle the day-to-day work of programming, while revealing much more, like how they became great programmers, how they recognize programming talent in others, and what kinds of problems they find most interesting. Hundreds of people have suggested names of programmers to interview on the Coders at Work web site: www.codersatwork.com. The complete list was 284 names. Having digested everyone’s feedback, we selected 15 folks who’ve been kind enough to agree to be interviewed: Frances Allen: Pioneer in optimizing compilers, first woman to win the Turing Award (2006) and first female IBM fellow Joe Armstrong: Inventor of Erlang Joshua Bloch: Author of the Java collections framework, now at Google Bernie Cosell: One of the main software guys behind the original ARPANET IMPs and a master debugger Douglas Crockford: JSON founder, JavaScript architect at Yahoo! L. Peter Deutsch: Author of Ghostscript, implementer of Smalltalk-80 at Xerox PARC and Lisp 1.5 on PDP-1 Brendan Eich: Inventor of JavaScript, CTO of the Mozilla Corporation Brad Fitzpatrick: Writer of LiveJournal, OpenID, memcached, and Perlbal Dan Ingalls: Smalltalk implementor and designer Simon Peyton Jones: Coinventor of Haskell and lead designer of Glasgow Haskell Compiler Donald Knuth: Author of The Art of Computer Programming and creator of TeX Peter Norvig: Director of Research at Google and author of the standard text on AI Guy Steele: Coinventor of Scheme and part of the Common Lisp Gang of Five, currently working on Fortress Ken Thompson: Inventor of UNIX Jamie Zawinski: Author of XEmacs and early Netscape/Mozilla hacker
Answer set programming (ASP) is a programming methodology oriented towards combinatorial search problems. In such a problem, the goal is to find a solution among a large but finite number of possibilities. The idea of ASP came from research on artificial intelligence and computational logic. ASP is a form of declarative programming: an ASP program describes what is counted as a solution to the problem, but does not specify an algorithm for solving it. Search is performed by sophisticated software systems called answer set solvers. Combinatorial search problems often arise in science and technology, and ASP has found applications in diverse areas—in historical linguistic, in bioinformatics, in robotics, in space exploration, in oil and gas industry, and many others. The importance of this programming method was recognized by the Association for the Advancement of Artificial Intelligence in 2016, when AI Magazine published a special issue on answer set programming. The book introduces the reader to the theory and practice of ASP. It describes the input language of the answer set solver CLINGO, which was designed at the University of Potsdam in Germany and is used today by ASP programmers in many countries. It includes numerous examples of ASP programs and present the mathematical theory that ASP is based on. There are many exercises with complete solutions.
These days, we take for granted that our computer screens—and even our phones—will show us images in vibrant full color. Digital color is a fundamental part of how we use our devices, but we never give a thought to how it is produced or how it came about. Chromatic Algorithms reveals the fascinating history behind digital color, tracing it from the work of a few brilliant computer scientists and experimentally minded artists in the late 1960s and early ‘70s through to its appearance in commercial software in the early 1990s. Mixing philosophy of technology, aesthetics, and media analysis, Carolyn Kane shows how revolutionary the earliest computer-generated colors were—built with the massive postwar number-crunching machines, these first examples of “computer art” were so fantastic that artists and computer scientists regarded them as psychedelic, even revolutionary, harbingers of a better future for humans and machines. But, Kane shows, the explosive growth of personal computing and its accompanying need for off-the-shelf software led to standardization and the gradual closing of the experimental field in which computer artists had thrived. Even so, the gap between the bright, bold presence of color onscreen and the increasing abstraction of its underlying code continues to lure artists and designers from a wide range of fields, and Kane draws on their work to pose fascinating questions about the relationships among art, code, science, and media in the twenty-first century.
An essential guide for teaching and learning computational art and design: exercises, assignments, interviews, and more than 170 illustrations of creative work. This book is an essential resource for art educators and practitioners who want to explore code as a creative medium, and serves as a guide for computer scientists transitioning from STEM to STEAM in their syllabi or practice. It provides a collection of classic creative coding prompts and assignments, accompanied by annotated examples of both classic and contemporary projects, and more than 170 illustrations of creative work, and features a set of interviews with leading educators. Picking up where standard programming guides leave off, the authors highlight alternative programming pedagogies suitable for the art- and design-oriented classroom, including teaching approaches, resources, and community support structures.