Jump to content

Talk:Control-flow analysis

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 188.27.81.64 (talk) at 00:51, 21 July 2014 (It Appears That Hecht Coined Control Flow Analysis in 1977). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
WikiProject iconComputer science Unassessed
WikiProject iconThis article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
???This article has not yet received a rating on Wikipedia's content assessment scale.
???This article has not yet received a rating on the project's importance scale.
Things you can help WikiProject Computer science with:

It Appears That Hecht Coined Control Flow Analysis in 1977

The article claims that the term Control Flow Analysis was coined by Olin Shivers Neil D. Jones in the 1980s. I don't think this is true because I have a book published in 1977 called "Flow Analysis of Computer Programs" and written by Matthew S. Hecht which defines Control Flow Analysis on page 4 as "... the encoding of pertinent, possible program 'control flow structure' or 'flow of control' for an ensuing data flow analysis." Danking00 (talk) 15:11, 7 July 2011 (UTC)[reply]

Indeed. Any compiler book has citation to papers before claimed as "firsts" in this article, although those guys may have coined the term... in their specific sub-field (see below). But wp:secondary sources should be used to ascertain such claims to priority in terminology, which isn't even that important compared to priority in the actual techniques. 188.27.81.64 (talk) 21:35, 20 July 2014 (UTC)[reply]
The CFA term is used for completely different analyses in the functional and imperative programming worlds. Which probably explains the massive confusion in this article, including as to who termed it. It's probably true that guys listed in the article "coined" the term in the functional programming analysis field, as in [re/mis]appropriated it for their use in functional programming... The PLDI10 paper, which I've added to the external links, sheds some light on the issue. The kind of CFA done in functional programming is called points-to analysis in the imperative/OOP world; it's only an issue there when function pointers are used (like dynamic dispatch). The run of the mill interprocedural CFA in imperative programming (i.e. with no function pointers involved) just revolved around creating a call graph (cf. Muchnick Advanced Compiler Design, p. 609) However "Procedure-valued variables present a more difficult problem. Weihl [Weih80] has shown that constructing the call graph of a recursive program with procedure variables is PSPACE-hard, so this process can be very expensive in both time and space." (Muchnick, p. 612) In general, anyone using NNH as reference needs to be highly aware that whatever they say in there (terminology too) is from their own little world of doing analysis on functional programs, which while may give some people successful academic careers, it's a very niche topic in the world of programming at large, so it shouldn't take over articles in Wikipedia with that perspective. Muchnick's book has 3K citation in GS (and 700+ in ACM) while NNH (published at about the same time) only has about half of those in either source, and it's impact outside academia is practically nil; it's also written in much more less approachable manner so it's easy for inexperienced readers to misinterpret stuff from NNH (which seems to have happened a lot in this article, as it is now).188.27.81.64 (talk) 23:43, 20 July 2014 (UTC)[reply]
Forgot to give the paper referenced there: Weihl, William E. Interprocedural Data Flow Analysis in the Presence of Pointers, Procedure Variables, and Label Variables, in [POPL80], pp. 83-94. 188.27.81.64 (talk) 00:43, 21 July 2014 (UTC)[reply]

Rewrite needed

Also, this article consists mostly of irrelevancies. None of the core material that a compiler class would cover under this heading is even mentioned. See the external link I added for comparison, if a compiler book is too expensive for you... 188.27.81.64 (talk) 21:37, 20 July 2014 (UTC)[reply]

Besides, this article doesn't even try to distinguish when it's talking about intra-procedural vs. inter-procedural CFA and makes sweeping claims that absolutely don't apply to both. 188.27.81.64 (talk) 22:22, 20 July 2014 (UTC)[reply]