Programming Language Cultures


Book Description

In this book, Brian Lennon demonstrates the power of a philological approach to the history of programming languages and their usage cultures. In chapters focused on specific programming languages such as SNOBOL and JavaScript, as well as on code comments, metasyntactic variables, the very early history of programming, and the concept of DevOps, Lennon emphasizes the histories of programming languages in their individual specificities over their abstract formal or structural characteristics, viewing them as carriers and sometimes shapers of specific cultural histories. The book's philological approach to programming languages presents a natural, sensible, and rigorous way for researchers trained in the humanities to perform research on computing in a way that draws on their own expertise. Combining programming knowledge with a humanistic analysis of the social and historical dimensions of computing, Lennon offers researchers in literary studies, STS, media and digital studies, and technical fields the first technically rigorous approach to studying programming languages from a humanities-based perspective.




Crafting Interpreters


Book Description

Despite using them every day, most software engineers know little about how programming languages are designed and implemented. For many, their only experience with that corner of computer science was a terrifying "compilers" class that they suffered through in undergrad and tried to blot from their memory as soon as they had scribbled their last NFA to DFA conversion on the final exam. That fearsome reputation belies a field that is rich with useful techniques and not so difficult as some of its practitioners might have you believe. A better understanding of how programming languages are built will make you a stronger software engineer and teach you concepts and data structures you'll use the rest of your coding days. You might even have fun. This book teaches you everything you need to know to implement a full-featured, efficient scripting language. You'll learn both high-level concepts around parsing and semantics and gritty details like bytecode representation and garbage collection. Your brain will light up with new ideas, and your hands will get dirty and calloused. Starting from main(), you will build a language that features rich syntax, dynamic typing, garbage collection, lexical scope, first-class functions, closures, classes, and inheritance. All packed into a few thousand lines of clean, fast code that you thoroughly understand because you wrote each one yourself.




A Programmer's Rantings: On Programming-Language Religions, Code Philosophies, Google Work Culture, and Other Stuff


Book Description

This book grew out of a lot of angst. Well, and wine. Put enough angst in me, and I’ll start ranting. Pour in some wine, and the rants get mean—and funny. I still go back and read these posts now and then, and I always laugh. I was so mean. My angst grew out of traveling different roads than most programmers. Those roads forced me to see the world differently. Now I see all sorts of patterns that many experienced programmers fail to see—because, well, to put it bluntly, they’re stuck in ruts. Over the past 25 years I’ve done a bunch of dramatically different types of programming, and I’ve also written far more code than any programmer ever should. The long roads I’ve traveled have basically given me a sixth sense. I see dead people. And it sucks. If you’re ever unlucky enough to acquire a dreadful sixth sense, there are really only two choices: you can be angry and depressed about it, or you can laugh about it. So I try to laugh. It’s hard, but I’m getting better at it. The wine helps. Practice helps, too. You need to get in the habit of laughing—at yourself, at others, at the crazy world we live in—or in time you’ll just stop laughing altogether. When I first started ranting, I was the ugly American, stomping around in my posts, and essentially yelling “What the hell is wrong with all you people?” But over the next ten years or so, I like to think I’ve grown into more of an amateur software anthropologist. I now take cultural relativism seriously, and I try hard not to judge people who think differently from me. Of course I don’t mind poking fun at them, because I don’t mind people poking fun at me. And ultimately I would like to convince undecided programmers to share my view of the programming world, because programming works best if everyone nearby does it the same way. So I’ll continue to argue that my view, which I’ve recently taken to calling “software liberalism,” is a perfectly valid and perhaps even preferable way to do a lot of software development. Converting everyone to be more liberal is doomed to fail, of course. But even so, I hope I can still help people in radically different software cultures to understand each other better. I’m going to keep ranting, because it appears to be the only way to make a message sink in to a very large audience. Some people still tell me that my blog posts are too long. They tell me I could have made my “point” in under a hundred words. I have noticed that this complaint comes most often from people who disagree with me. They’re really just saying they want less work to voice their disagreement. But even some folks who agree with me find the posts too long to carry their attention, and they complain too. They’re missing the point, though. The posts aren’t too long. You need a certain minimum “heft” to penetrate. Through years of trial and error, I’ve found that the best way to get a lot of people to listen to you is to tell them a story. And you can’t spin a good yarn without settling in and enjoying the ride. So that’s what this book is. It’s really a bunch of stories. Each might take the form of an article, essay, guide, rant, or occasionally a fiction tale. But behind the structure, each one of them is sharing a story. Even if you don’t always agree, I’m hoping you’ll at least find the stories entertaining and, with luck, sometimes even eye-opening. The guys at Hyperink chose which of my posts to include, by and large, and they also came up with the overall chapter organization. I made a couple of tweaks, but what you’re looking at is largely their vision of how to curate this stuff into a cohesive book. I think they did an admirable job. I hope you enjoy the journey as much as I did. Steve Yegge August 2012




Functional Approaches to Language, Culture, and Cognition


Book Description

This volume contains functional approaches to the description of language and culture, and language and cultural change. The approaches taken by the authors range from cognitive approaches including Stratificational grammar to more socially oriented ones including Systemic Functional linguistics. The volume is organized into two sections. The first section 'Functional Approaches to the Structure of Language: Theory and Practice' starts with contributions developing a Stratificational model; these are followed by contributions focusing on some related functional model of language; and by articles describing some particular set of language phenomena.In the second section 'Functional Approaches to the History of Language and Linguistics' general studies of language change are addressed first; a second group of contributions examines language change, lexicon and culture; and the last cluster of contributions treats the history of linguistics and culture.




Language, Culture, Computation: Computing - Theory and Technology


Book Description

This Festschrift volume is published in Honor of Yaacov Choueka on the occasion of this 75th birthday. The present three-volumes liber amicorum, several years in gestation, honours this outstanding Israeli computer scientist and is dedicated to him and to his scientific endeavours. Yaacov's research has had a major impact not only within the walls of academia, but also in the daily life of lay users of such technology that originated from his research. An especially amazing aspect of the temporal span of his scholarly work is that half a century after his influential research from the early 1960s, a project in which he is currently involved is proving to be a sensation, as will become apparent from what follows. Yaacov Choueka began his research career in the theory of computer science, dealing with basic questions regarding the relation between mathematical logic and automata theory. From formal languages, Yaacov moved to natural languages. He was a founder of natural-language processing in Israel, developing numerous tools for Hebrew. He is best known for his primary role, together with Aviezri Fraenkel, in the development of the Responsa Project, one of the earliest fulltext retrieval systems in the world. More recently, he has headed the Friedberg Genizah Project, which is bringing the treasures of the Cairo Genizah into the Digital Age. This first part of the three-volume set covers a range of topics in computer science. The papers are grouped in topical sections on: the jubilaris: Yaacov and his oeuvre; theory of computation; science computing and tools for engineering; information retrieval.




Language, Culture, Computation: Computing for the Humanities, Law, and Narratives


Book Description

This Festschrift volume is published in Honor of Yaacov Choueka on the occasion of this 75th birthday. The present three-volumes liber amicorum, several years in gestation, honours this outstanding Israeli computer scientist and is dedicated to him and to his scientific endeavours. Yaacov's research has had a major impact not only within the walls of academia, but also in the daily life of lay users of such technology that originated from his research. An especially amazing aspect of the temporal span of his scholarly work is that half a century after his influential research from the early 1960s, a project in which he is currently involved is proving to be a sensation, as will become apparent from what follows. Yaacov Choueka began his research career in the theory of computer science, dealing with basic questions regarding the relation between mathematical logic and automata theory. From formal languages, Yaacov moved to natural languages. He was a founder of natural-language processing in Israel, developing numerous tools for Hebrew. He is best known for his primary role, together with Aviezri Fraenkel, in the development of the Responsa Project, one of the earliest fulltext retrieval systems in the world. More recently, he has headed the Friedberg Genizah Project, which is bringing the treasures of the Cairo Genizah into the Digital Age. This second part of the three-volume set covers a range of topics related to the application of information technology in humanities, law, and narratives. The papers are grouped in topical sections on: humanities computing; narratives and their formal representation; history of ideas: the numerate disciplines; law, computer law, and legal computing.




Language, Culture and Identity in the Early Years


Book Description

In this engaging guide, the authors identify and disseminate good practice relating to language, culture and identity. They explore how children from a variety of cultural and linguistic backgrounds are supported through a number of pedagogical practices which are based on knowledge and understanding of the social and emotional development of young children. Topics covered include: - Perspectives on personal, social and emotional development - Maintaining home languages in early years settings - Supporting communication and oracy - Developing strategies for parental involvement Essential reading for those working with young children from a diverse range of cultural and linguistic backgrounds.




The Art of UNIX Programming


Book Description

The Art of UNIX Programming poses the belief that understanding the unwritten UNIX engineering tradition and mastering its design patterns will help programmers of all stripes to become better programmers. This book attempts to capture the engineering wisdom and design philosophy of the UNIX, Linux, and Open Source software development community as it has evolved over the past three decades, and as it is applied today by the most experienced programmers. Eric Raymond offers the next generation of "hackers" the unique opportunity to learn the connection between UNIX philosophy and practice through careful case studies of the very best UNIX/Linux programs.




Language, Culture, Computation: Computational Linguistics and Linguistics


Book Description

This Festschrift volume is published in Honor of Yaacov Choueka on the occasion of this 75th birthday. The present three-volumes liber amicorum, several years in gestation, honours this outstanding Israeli computer scientist and is dedicated to him and to his scientific endeavours. Yaacov's research has had a major impact not only within the walls of academia, but also in the daily life of lay users of such technology that originated from his research. An especially amazing aspect of the temporal span of his scholarly work is that half a century after his influential research from the early 1960s, a project in which he is currently involved is proving to be a sensation, as will become apparent from what follows. Yaacov Choueka began his research career in the theory of computer science, dealing with basic questions regarding the relation between mathematical logic and automata theory. From formal languages, Yaacov moved to natural languages. He was a founder of natural-language processing in Israel, developing numerous tools for Hebrew. He is best known for his primary role, together with Aviezri Fraenkel, in the development of the Responsa Project, one of the earliest fulltext retrieval systems in the world. More recently, he has headed the Friedberg Genizah Project, which is bringing the treasures of the Cairo Genizah into the Digital Age. This third part of the three-volume set covers a range of topics related to language, ranging from linguistics to applications of computation to language, using linguistic tools. The papers are grouped in topical sections on: natural language processing; representing the lexicon; and neologisation.




Berkshire Encyclopedia of Human-computer Interaction


Book Description

Presents a collection of articles on human-computer interaction, covering such topics as applications, methods, hardware, and computers and society.