Talk:Compiler/Archive 4

Restructure: Compiler Article
Comments: A. Introduction could focus and limit topic coverage. Example: The class of specialized programs that transform a Computer Language program into executable Machine Language Programs fall into two major categories: Interpreters and Compilers. ... B. Table of Contents 1. Compilation 1.1 Classic Model 1.1.1 Front End 1.1.2 Optimizer 1.1.3 Back End 1.2 Other Models 2. Dependencies 2.1 Language Architectures 2.2 Standards 2.3 Operating Systems 2.4 Target Architectures 3. Other Compiler Types 4. History C. See Also (add links to topics such as Linker, Intermediate Representation, DIANA, a Descriptive Intermediate Attributed Notation for Ada ...) D. Reference updates to include some of the Compiler Books and papers e.g. "Crafting a Compiler" by Fischer/LeBlanc, "The Architecture of Open Source Applications" Chapter 11 by Chris Lattner E. About Models General model of compilation can be viewed as the front end which that analyzes the input program; the middle section that optimizes the analyzed program; the back end that produces the code for the target architecture. (similar diagram in current article 'Three phases compiler structure' These phases are supported by constructs such as -         Language Architecture formed by the formalized syntax and semantics.             Libraries         Target ISA - Instruction Set Architecture There are other useful views such as the LLVM project. Also Other Compiler types can cover things like programmable arrays, graphic, specification and so on  P.S. Interpreter Article could benefit from some additional details Nodorf (talk) 20:29, 13 July 2017 (UTC)nodorf

External links modified
Hello fellow Wikipedians,

I have just modified one external link on Compiler. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20161010221724/https://www.altera.com/products/design-software/fpga-design/quartus-prime/features/spectra-q.html to https://www.altera.com/products/design-software/fpga-design/quartus-prime/features/spectra-q.html

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 11:39, 22 December 2017 (UTC)

interpreted language
There are languages that allow dynamic redefinition, such that compilation is not possible. TeX, for example, allows dynamic changes to character codes, which affects tokenizing. In Mathematica, it is possible to write self modifying source code. That is, the back end can modify the input source when using the GUI. Gah4 (talk) 18:18, 27 May 2018 (UTC)

Correct focus in compliance of the page's title expectations.
The page is called Compiler but the whole focus of it is about the programming languages and not on the compilers, in fact you learn barely anything (mostly basic stuff) about the compilers themselves, most of them are even hidden inside the programming language sentences, implied, but completely silent about the compilers. I wonder if anyone would agree this should be addressed and fixed, I lack the knowledge to do so, which is why I came to the page on the first place.

Thank you very much, i hope this isn't uncalled for. — Preceding unsigned comment added by 190.39.192.31 (talk) 14:17, 2 May 2018 (UTC)


 * You can't really separate the idea of a compiler from the idea of a language needing compiling. Also, many details will be too esoteric for an article.  Still, it might be that some things could be done better. Gah4 (talk) 19:35, 9 October 2018 (UTC)

Section with verifiability issues moved from article
The following section was moved from the article because I couldn't find sufficient information to verify it fully.

Compiler construction and compiler optimization are taught at universities and schools as part of a computer science curriculum. Such courses are usually supplemented with the implementation of a compiler for an educational programming language. A well-documented example is Niklaus Wirth's PL/0 compiler, which Wirth used to teach compiler construction in the 1970s. In spite of its simplicity, the PL/0 compiler introduced several influential concepts to the field, including uses of:
 * 1) akin to the 1971 paper by Wirth, program development by stepwise refinement;
 * 2) a recursive descent parser;
 * 3) an extended Backus–Naur form (EBNF) to specify the syntax of a language;
 * 4) a code generator producing portable P-code; and
 * 5) tombstone diagrams in the formal description of the bootstrapping problem.

Feel free to reinstate it if sources are found. Enterprisey (talk!) 21:42, 10 September 2018 (UTC)


 * If you want to find out if it is taught in universities, a look through the catalog of two of them (since it is plural) should be enough. Those catalogs could even be references.  Also, the existence of textbooks for such courses is a strong hint that courses exist, and could also be references. Gah4 (talk) 19:39, 9 October 2018 (UTC)

highlighting them in the source code
There is a dubious/discuss for highlighting them in the source code. At first I also thought it was dubious, the way it sounds, but compilers from the 1960's and 1970's would normally (optionally) print out a source listing, with error messages at the appropriate point. Then usually with an indication of where in the line the error was, as well as it was known, sometimes with an arrow pointing at the position. I would consider that highlighting. Some GUI compilers might actually highlight with color or font, or otherwise make obvious in the source. Some now just indicate the line number, and usually where in the line, which is a less obvious definition of highlight. Gah4 (talk) 18:09, 27 May 2018 (UTC)

I can see both sides of this. I'm sure it's true that some compilers out there do some kind of highlighting of the source code. However, I would expect an encyclopedia article describing the different stages of the compiler to describe what they fundamentally and generally do, rather than what all the possibilities are. The next sentence, which notes that the front-end performs lexical, syntactic, and semantic analysis is much more true to the spirit of what this component does, and that's the thing to focus on. Unless there's further discussion of this in the near future I'll edit this out. Rm9820 (talk) 14:28, 3 December 2018 (UTC)

translators
There are computer language translators that are not compilers. Specifically, that don't fully parse the source language. When given invalid input, they tend to produce invalid output, possibly unrecognizable, without any error messages. This used to be commonly done with macro processors, that would read a file of macros and apply them to the input. One language that does still work this was is TeX. Gah4 (talk) 23:54, 5 April 2019 (UTC)


 * A macro processor is clearly a type of compiler; the input is written in macro language, the output is a different language. GliderMaven (talk) 00:33, 6 April 2019 (UTC)


 * I suppose so, but I tend to make a distinction between ones that actually parse the input, vs. simple, or slightly less than simple, string substitution. But yes, there are macro processors that do complex parsing. Otherwise, you could call sed a compiler, which most people don't. Otherwise, there are macro-processors that can fully parse the input. Gah4 (talk) 07:41, 6 April 2019 (UTC)


 * Sed, in and of itself, doesn't specifically perform a translation, although some sed commands might be considered to be extremely simple compilers. GliderMaven (talk) 15:58, 6 April 2019 (UTC)

Primary Sources??
I see this article tagged as "depending too much on primary sources". What on earth would be "primary sources" for such a broad term as "compiler"? I'd guess the person who tagged the article didn't have an understanding what "primary source" means. As I don't really see an explanation why the article was tagged, I'd say the tag should be removed. Comments anyone? --Arny (talk) 15:49, 4 May 2019 (UTC)


 * The only way to answer your question would be to look at the history of the topic and see if the problem that was noticed when the tag was placed was resolved, rather than making snide comments about other editors. TEDickey (talk) 16:03, 4 May 2019 (UTC)


 * The tag was over two years ago. There were no additions to the talk page for months after, and especially not near, the time when the tag was added. Changes in the mean time may, or may not, have fixed the problems noted.  Besides, I thought Wikipedia wanted secondary sources!  Gah4 (talk) 23:59, 4 May 2019 (UTC)

A Commons file used on this page has been nominated for deletion
The following Wikimedia Commons file used on this page has been nominated for deletion: Participate in the deletion discussion at the. —Community Tech bot (talk) 23:38, 26 July 2019 (UTC)
 * Octicons-terminal.svg