Crafting Interpreters

Crafting Interpreters

Author: Robert Nystrom

Publisher: Genever Benning

Published: 2021-07-27

Total Pages: 1021

ISBN-13: 0990582949

DOWNLOAD EBOOK

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.


History of Programming Languages

History of Programming Languages

Author: Richard L. Wexelblat

Publisher: Academic Press

Published: 2014-05-27

Total Pages: 784

ISBN-13: 1483266168

DOWNLOAD EBOOK

History of Programming Languages presents information pertinent to the technical aspects of the language design and creation. This book provides an understanding of the processes of language design as related to the environment in which languages are developed and the knowledge base available to the originators. Organized into 14 sections encompassing 77 chapters, this book begins with an overview of the programming techniques to use to help the system produce efficient programs. This text then discusses how to use parentheses to help the system identify identical subexpressions within an expression and thereby eliminate their duplicate calculation. Other chapters consider FORTRAN programming techniques needed to produce optimum object programs. This book discusses as well the developments leading to ALGOL 60. The final chapter presents the biography of Adin D. Falkoff. This book is a valuable resource for graduate students, practitioners, historians, statisticians, mathematicians, programmers, as well as computer scientists and specialists.


High-Level Language Computer Architecture

High-Level Language Computer Architecture

Author: Yaohan Chu

Publisher: Academic Press

Published: 2014-05-10

Total Pages: 286

ISBN-13: 1483271366

DOWNLOAD EBOOK

High-Level Language Computer Architecture offers a tutorial on high-level language computer architecture, including von Neumann architecture and syntax-oriented architecture as well as direct and indirect execution architecture. Design concepts of Japanese-language data processing systems are discussed, along with the architecture of stack machines and the SYMBOL computer system. The conceptual design of a direct high-level language processor is also described. Comprised of seven chapters, this book first presents a classification of high-level language computer architecture according to the proximity of the machine language and the programming language. This classification gives four types: von Neumann architecture, syntax-oriented architecture, indirect execution architecture, and direct execution architecture. In order to illustrate the possible evolution of computer architecture, design concepts of Japanese-language data processing systems are chosen as an example. Subsequent chapters focus on the syntax-oriented architecture; the historical SYMBOL computer system which makes use of an indirect execution architecture; and design concepts of direct-execution architecture for the ALGOL 60 language. The final chapter describes the architecture for the processor for an APL subset. This monograph will be of interest to specialists in electronics and computer science.


An Assembly Language Introduction to Computer Architecture

An Assembly Language Introduction to Computer Architecture

Author: Karen Miller

Publisher: Oxford University Press, USA

Published: 1999

Total Pages: 335

ISBN-13: 9780195123760

DOWNLOAD EBOOK

Ideal for undergraduate courses in computer organization, assembly language programming, and computer architecture, An Assembly Language Introduction to Computer Architecture: Using the Intel Pentium introduces students to the fundamentals of computer architecture from a programmer's perspective by teaching them assembly language, the interface between hardware and software. Designed for students in computer science and engineering who have taken one high-level language programming course, it uses a top-down approach, introducing an abstract (registerless) assembly language first. This approach enables students to build on previous knowledge and allows them to write programs from the beginning of the course. Topics covered include basic computer organization, data representation, data structures, the assembly process, exception handling, and more. Examples are developed using the very popular Intel Pentium architecture; however, the concepts covered are valid with any system. This accessible text is supplemented with a helpful website (http: //www.cs.wisc.edu/ smoler/x86text.html) that contains macros to use with programming tools, lecture notes to accompany the text, sample programs, and other useful items.


Low-Level Programming

Low-Level Programming

Author: Igor Zhirkov

Publisher: Apress

Published: 2017-06-27

Total Pages: 446

ISBN-13: 1484224035

DOWNLOAD EBOOK

Learn Intel 64 assembly language and architecture, become proficient in C, and understand how the programs are compiled and executed down to machine instructions, enabling you to write robust, high-performance code. Low-Level Programming explains Intel 64 architecture as the result of von Neumann architecture evolution. The book teaches the latest version of the C language (C11) and assembly language from scratch. It covers the entire path from source code to program execution, including generation of ELF object files, and static and dynamic linking. Code examples and exercises are included along with the best code practices. Optimization capabilities and limits of modern compilers are examined, enabling you to balance between program readability and performance. The use of various performance-gain techniques is demonstrated, such as SSE instructions and pre-fetching. Relevant Computer Science topics such as models of computation and formal grammars are addressed, and their practical value explained. What You'll Learn Low-Level Programming teaches programmers to: Freely write in assembly language Understand the programming model of Intel 64 Write maintainable and robust code in C11 Follow the compilation process and decipher assembly listings Debug errors in compiled assembly code Use appropriate models of computation to greatly reduce program complexity Write performance-critical code Comprehend the impact of a weak memory model in multi-threaded applications Who This Book Is For Intermediate to advanced programmers and programming students


Computer Organization and Design RISC-V Edition

Computer Organization and Design RISC-V Edition

Author: David A. Patterson

Publisher: Morgan Kaufmann

Published: 2017-05-12

Total Pages: 700

ISBN-13: 0128122765

DOWNLOAD EBOOK

The new RISC-V Edition of Computer Organization and Design features the RISC-V open source instruction set architecture, the first open source architecture designed to be used in modern computing environments such as cloud computing, mobile devices, and other embedded systems. With the post-PC era now upon us, Computer Organization and Design moves forward to explore this generational change with examples, exercises, and material highlighting the emergence of mobile computing and the Cloud. Updated content featuring tablet computers, Cloud infrastructure, and the x86 (cloud computing) and ARM (mobile computing devices) architectures is included. An online companion Web site provides advanced content for further study, appendices, glossary, references, and recommended reading. - Features RISC-V, the first such architecture designed to be used in modern computing environments, such as cloud computing, mobile devices, and other embedded systems - Includes relevant examples, exercises, and material highlighting the emergence of mobile computing and the cloud


Introduction to Compilers and Language Design

Introduction to Compilers and Language Design

Author: Douglas Thain

Publisher: Lulu.com

Published: 2016-09-20

Total Pages: 248

ISBN-13: 0359138047

DOWNLOAD EBOOK

A compiler translates a program written in a high level language into a program written in a lower level language. For students of computer science, building a compiler from scratch is a rite of passage: a challenging and fun project that offers insight into many different aspects of computer science, some deeply theoretical, and others highly practical. This book offers a one semester introduction into compiler construction, enabling the reader to build a simple compiler that accepts a C-like language and translates it into working X86 or ARM assembly language. It is most suitable for undergraduate students who have some experience programming in C, and have taken courses in data structures and computer architecture.


Principles of Big Data

Principles of Big Data

Author: Jules J. Berman

Publisher: Newnes

Published: 2013-05-20

Total Pages: 288

ISBN-13: 0124047246

DOWNLOAD EBOOK

Principles of Big Data helps readers avoid the common mistakes that endanger all Big Data projects. By stressing simple, fundamental concepts, this book teaches readers how to organize large volumes of complex data, and how to achieve data permanence when the content of the data is constantly changing. General methods for data verification and validation, as specifically applied to Big Data resources, are stressed throughout the book. The book demonstrates how adept analysts can find relationships among data objects held in disparate Big Data resources, when the data objects are endowed with semantic support (i.e., organized in classes of uniquely identified data objects). Readers will learn how their data can be integrated with data from other resources, and how the data extracted from Big Data resources can be used for purposes beyond those imagined by the data creators. - Learn general methods for specifying Big Data in a way that is understandable to humans and to computers - Avoid the pitfalls in Big Data design and analysis - Understand how to create and use Big Data safely and responsibly with a set of laws, regulations and ethical standards that apply to the acquisition, distribution and integration of Big Data resources