The D Programming Language

The D Programming Language

D is a programming language built to help programmers address the challenges of modern software development. It does so by fostering modules interconnected through precise interfaces, a federation of tightly integrated programming paradigms, language-enforced thread isolation, modular type safety, an efficient memory model, and more. The D Programming Language is an authoritative and comprehensive introduction to D. Reflecting the author’s signature style, the writing is casual and conversational, but never at the expense of focus and pre¿cision. It covers all aspects of the language (such as expressions, statements, types, functions, contracts, and modules), but it is much more than an enumeration of features. Inside the book you will find In-depth explanations, with idiomatic examples, for all language features How feature groups support major programming paradigms Rationale and best-use advice for each major feature Discussion of cross-cutting issues, such as error handling, contract programming, and concurrency Tables, figures, and “cheat sheets” that serve as a handy quick reference for day-to-day problem solving with D Written for the working programmer, The D Programming Language not only introduces the D language—it presents a compendium of good practices and idioms to help both your coding with D and your coding in general.

D Cookbook

D Cookbook

A recipepacked reference guide filled with practical tasks that are concisely explained to develop and broaden the user's abilities with the D programming language. If you are an experienced programmer who is looking to explore a language that offers plenty of advantages over more established programming languages, this is the book for you. We assume that you are already familiar with general programming language basics, but you do not need to be a proficient user of D.

Learning D

Learning D

Leverage the modern convenience and modelling power of the D programming language to develop software with native efficiency About This Book Acquire the skills to understand the fundamentals of D through its support for imperative and object-oriented programming Take advantage of D's powerful compile-time features, templates and ranges to apply generative, generic, and functional style A systematic guide that will help you become familiar with the concepts in D with the help of simple and easy-to-understand examples Who This Book Is For This book is intended for those with some background in a C-family language who want to learn how to apply their knowledge and experience to D. Perhaps you're a college student looking to use D for hobby projects, or a career programmer interested in expanding your skillset. This book will help you get up to speed with the language and avoid common pitfalls that arise when translating C-family experience to D. What You Will Learn Compile programs with DMD and manage projects with DUB Work efficiently by binding your D programs with new and existing C libraries Generate code at compile-time to enhance runtime performance Implement complex templates for more powerful generic code Write idiomatic D with range-based functional pipelines Use the DUB repository to find a link with a variety of D libraries Implement a web-app in D from the ground up In Detail D is a modern programming language that is both powerful and efficient. It combines multiple paradigms in a way that opens up a whole new world of software design. It is used to develop both desktop and web applications, with future targets including mobile, and is available on multiple platforms. It is familiar to anyone with some experience in one or more of the C-family languages. However, hidden in the similarities are several differences that can be surprising when trying to apply common idioms from other languages. When learning D on your own, this can make it more time-consuming to master. In order to make the most of the language and become an idiomatic D programmer, it's necessary to learn how to think in D. This book familiarizes you with D from the ground up, with a heavy focus on helping you to avoid surprises so that you can take your D knowledge to the next level more quickly and painlessly. Your journey begins with a taste of the language and the basics of compiling D programs with DMD, the reference D compiler developed by Digital Mars, and DUB, a community-developed build utility and package manager. You then set out on an exploration of major language features. This begins with the fundamentals of D, including built-in types, conditionals, loops and all of the basic building-blocks of a D program, followed by an examination of D's object-oriented programming support. You'll learn how these features differ from languages you may already be familiar with. Next up are D's compile-time features, such as Compile-Time Function Evaluation and conditional compilation, then generic programming with templates. After that, you'll learn the more advanced features of ranges and functional pipeline programming. To enhance your D experience, you are next taken on a tour of the D ecosystem and learn how to make D interact with C. Finally, you get a look at D web development using the vibe.d project and the book closes with some handy advice on where to go next. Style and approach A friendly guide to the D programming language and its ecosystem that walks programmers through all they need to know for a painless experience in learning D.

D Web Development

D Web Development

Leverage the power of D and the vibe.d framework to develop web applications that are incredibly fast About This Book Utilize the elegant vibe.d framework to build web applications easily and REST backends with the D programming language Learn about all components of vibe.d to enhance your web development with D A hands-on guide to the vibe.d framework; from static web pages to template-based, interactive and localized web applications with database access and REST backends Who This Book Is For Whether you are new to the world of D, or already have developed applications in D, or if you want to leverage the power of D for web development, then this book is ideal for you. Basic knowledge of core web technologies like HTML 5 is helpful but not required. This book explains the difficult details to speed your web development. What You Will Learn Create amazingly fast web applications with D Use Diet templates to easily create a web user interface Utilize the web framework for interactive applications with input validation and internationalization Access a database to provide persistent storage for your application Extend your application with a REST interface and access other applications via REST Understand vibe.d's fiber-based approach to asynchronous I/O and use it for integration of existing components Create GUI applications with vibe.d In Detail D is a programming language with C-like syntax and static typing. The vibe.d framework builds on powerful D concepts like template meta-programming and compile-time function execution to provide an easy-to-use environment for web applications. The combination of a feature-rich web programming framework with a language compiling to native code solves two common issues in web development today: it accelerates your development and it results in fast, native web applications. Learning the vibe.d framework before you start your application will help you to choose the right features to reach your goal. This book guides you through all aspects of web development with D and the vibe.d framework. Covering the popular operating systems today, this guide starts with the setup of your development system. From the first Hello World-style application you will move on to building static web pages with templates. The concise treatment of web forms will give you all the details about form handling and web security. Using the abstractions of the web framework you will learn how to easily validate user input. Next, you will add database access to your application, providing persistent storage for your data. Building on this foundation, you will expose your component and integrate other components via REST. Learning about the internals of vibe.d you will be able to use low-level techniques such as raw TCP access. The vibe.d concepts can also be used for GUI clients, which is the next topic that you will learn. vibe.d is supported by an active community, which adds new functionality. This comprehensive guide concludes with an overview of the most useful vibe.d extensions and where to find them. It also shows you how to integrate these extensions in your application. The concepts are always illustrated with source code, giving you an insight into how to apply them in your application. Style and approach A tutorial-style guide to develop web applications with D and the vibe.d framework. Each topic is explained in detail and illustrated with source code, providing you with hands-on assistance for your application.

Object, Models, Components, Patterns

50th International Conference, TOOLS Europe 2012, Prague, Czech Republic, May 29-31, 2012, Proceedings

Object, Models, Components, Patterns

This book constitutes the refereed proceedings of the 50th International Conference on Objects, Models, Components, Patterns, TOOLS Europe 2012, held in Prague, Czech Republic, during May 29-31,2012. The 24 revised full papers presented were carefully reviewed and selected from 77 submissions. The papers discuss all aspects of object technology and related fields and demonstrate practical applications backed up by formal analysis and thorough experimental evaluation. In particular, every topic in advanced software technology is adressed the scope of TOOLS.

Programming Language Fundamentals by Example

Programming Language Fundamentals by Example

Written in an informal yet informative style, Programming Language Fundamentals by Example uses active learning techniques, giving students a professional learning experience based on professional methods applied with professional standards. It provides an understanding of the many languages and notations used in computer science, the formal models

Programming Language Translation

A Practical Approach

Programming Language Translation

For students of systems programming, this book provides a pragmatic and practically orientated course in programming language translation. Using standard Pascal throughout, students are encouraged to explore areas of language design and implementation through carefully integrated practical work. Complete case studies, suitable for use on small systems, serve as a foundation and provide a stimulating challenge in the many projects and exercises that are suggested.

Lecture Slides for Programming in C++ (Version 2019-02-04)

The C++ Language, Libraries, Tools, and Other Topics

Lecture Slides for Programming in C++ (Version 2019-02-04)

This document, which consists of approximately 2500 lecture slides, offers a wealth of information on many topics relevant to programming in C++, including coverage of the C++ language itself, the C++ standard library and a variety of other libraries, numerous software tools, and an assortment of other programming-related topics. The coverage of the C++ language and standard library is current with the C++17 standard. C++ PROGRAMMING LANGUAGE. Many aspects of the C++ language are covered from introductory to more advanced. This material includes: the preprocessor, language basics (objects, types, values, operators, expressions, control-flow constructs, functions, and namespaces), classes, templates (function, class, variable, and alias templates, variadic templates, template specialization, and SFINAE), lambda expressions, inheritance (run-time polymorphism and CRTP), exceptions (exception safety and RAII), smart pointers, memory management (new and delete operators and expressions, placement new, and allocators), rvalue references (move semantics and perfect forwarding), concurrency (memory models, and happens-before and synchronizes-with relationships), compile-time computation, and various other topics (e.g., copy elision and initialization). C++ STANDARD LIBRARY AND VARIOUS OTHER LIBRARIES. Various aspects of the C++ standard library are covered including: containers, iterators, algorithms, I/O streams, time measurement, and concurrency support (threads, mutexes, condition variables, promises and futures, atomics, and fences). A number of Boost libraries are discussed, including the Intrusive, Iterator, and Container libraries. The OpenGL library and GLSL are discussed at length, along with several related libraries, including: GLFW, GLUT, and GLM. The CGAL library is also discussed in some detail. SOFTWARE TOOLS. A variety of software tools are discussed, including: static analysis tools (e.g., Clang Tidy and Clang Static Analyzer), code sanitizers (e.g., ASan, LSan, MSan, TSan, and UBSan), debugging and testing tools (e.g., Valgrind, LLVM XRay, and Catch2), performance analysis tools (e.g., Perf, PAPI, Gprof, and Valgrind/Callgrind), build tools (e.g., CMake and Make), version control systems (e.g., Git), code coverage analysis tools (e.g., Gcov, LLVM Cov, and Lcov), online C++ compilers (e.g., Compiler Explorer and C++ Insights), and code completion tools (e.g., YouCompleteMe, and LSP clients/servers).