Home | Amazing | Today | Tags | Publishers | Years | Account | Search 
Reasoning About Program Transformations

Buy
The motivation of this text lies in what we believe is the inadequacy of current frameworks to reason about the flow of data in imperative programs. This inadequacy clearly shows up when dealing with the individual side effects of loop iterations. Indeed, we face a paradoxical situation where, on the one hand, a typical program spends most of its execution time iterating or recursing on a few lines of codes, and, on the other hand, current optimization frameworks are clumsy when trying to capture the effects of each incarnation of these few lines—frameworks we inherited from designs made decades ago.

The reasons are manyfold, but one of them stands out: The same concepts have been used, on the one hand, to represent and manipulate programs internally in compilers and, on the other hand, to allow us humans to reason about optimizations. Unfortunately, these two uses have different aims and constraints. An example of such a situation is given by control-flow graphs of basic blocks, which have been extremely useful in practice as an internal representation of programs, but which are not always adequate or convenient to formally think about programs and specify their transformations. In some cases, definitions based on control-flow graphs can be overly restrictive. Dominance, studied in Chapter 4, is a good example.

The consequence of these low-level representations is that many analyses and optimizations are defined constructively, by giving an algorithm instead of defining what the goal is: Instead of first telling what, they tell how. Then there is no specification against which the implementation can be checked.

In addition, implementation-oriented definitions of analyses and optimizations are often clumsy at representing one key aspect of programs: data flow. The flow of data is one key characteristic of algorithms, which programs implement. Unfortunately, because of its intrinsic reuse of memory, imperative programming blurs the data flow and hides the algorithm it implements even more so. If the compiler could extract the algorithm from the text of the program, it could apply extremely sophisticated optimizations.

We argue that the closer a compiler (or we humans) gets to the underlying algorithm, the wider the spectrum of transformations it can apply. And indeed, one sure way to understand the algorithm is to first understand the data flow.
(HTML tags aren't allowed.)

Andrology, An Issue of Endocrinology and Metabolism Clinics, 1e (The Clinics: Internal Medicine)
Andrology, An Issue of Endocrinology and Metabolism Clinics, 1e (The Clinics: Internal Medicine)

This issue of the Endocrinology and Metabolism Clinics of North America focuses on metabolic diseases and disorders unique to the male body, with an eye toward diagnosis and treatment options. Topics include evaluation and treatment of hypogonadism, andropause, & PADAM; erectile dysfunction=endothelial dysfunction; osteoporosis in men;...

Approximation Algorithms
Approximation Algorithms
Covering the basic techniques used in the latest research work, the author consolidates progress made so far, including some very recent and promising results, and conveys the beauty and excitement of work in the field. He gives clear, lucid explanations of key results and ideas, with intuitive proofs, and provides critical examples and numerous...
Selling Professional Services to the Fortune 500: How to Win in the Billion-Dollar Market of Strategy Consulting, Technology Solutions, and Outsourcing Services
Selling Professional Services to the Fortune 500: How to Win in the Billion-Dollar Market of Strategy Consulting, Technology Solutions, and Outsourcing Services

The secrets to grabbing your share of an $800 billion market!

“A recommended read for anyone in line-management or businessdevelopment roles, whether selling to the Fortune 500 or public sector. The book imparts commonsense information presented in a way that is easy to relate to and is useable.”
Lisa
...


Arguing with Zombies: Economics, Politics, and the Fight for a Better Future
Arguing with Zombies: Economics, Politics, and the Fight for a Better Future

An accessible, compelling introduction to today’s major policy issues from the New York Times columnist, best-selling author, and Nobel prize–winning economist Paul Krugman.

There is no better guide than Paul Krugman to basic economics, the ideas that animate much of our public...

Visual Basic.NET How to Program, Second Edition
Visual Basic.NET How to Program, Second Edition

For introductory and intermediate courses on Visual Basic programming offered in departments of Computer Science, CIS, MIS, IT, Business, Engineering, and Continuing Education. Teach Visual Basic .NET programming from the ground up! The introduction of Microsoft's .NET Framework marks the beginning of major revisions to all of Microsoft's...

Codermetrics: Analytics for Improving Software Teams
Codermetrics: Analytics for Improving Software Teams

Is there a rational way to measure coder skills and contributions and the way that software teams fit together? Could metrics help you improve coder self-awareness, teamwork, mentoring, and goal-setting? Could more detailed data help you make better hiring decisions, help make performance reviews fairer, and help your software teams...

©2021 LearnIT (support@pdfchm.net) - Privacy Policy