Content deleted Content added
m Fixed list citations |
m →Compilers: Wording |
||
(21 intermediate revisions by 17 users not shown) | |||
Line 1:
{{unreliable sources|date=March 2024}}
{{About|translation of programming languages|translation of natural languages|Natural language processing|and|Machine translation}}
{{Program execution}}
Line 4 ⟶ 5:
{{Use dmy dates|date=February 2020|cs1-dates=y}}
A '''translator''' or '''programming language processor''' is a [[computer program]] that converts the programming instructions written in human convenient form into machine language codes that the computers understand and process. It is a generic term that can refer to a [[compiler]], [[assembler (computing)|assembler]], or [[interpreter (computing)|interpreter]]—anything that converts code from one computer language into another.<ref name="MCT"/><ref name="Intel_1983_SH"/> These include translations between [[high-level language|high-level]] and human-readable computer languages such as [[C++]] and [[Java (programming language)|Java]], intermediate-level languages such as [[Java bytecode]], [[low-level language]]s such as the [[assembly language]] and [[machine code]], and between similar levels of language on different [[computing platform]]s, as well as from any of these to any other of these.<ref name="MCT"/>
Software and hardware represent different levels of abstraction in computing. Software is typically written in high-level programming languages, which are easier for humans to understand and manipulate, while hardware implementations involve low-level descriptions of physical components and their interconnections. Translator computing facilitates the conversion between these abstraction levels.<ref>{{Cite web |last=Beaulieu |first=Adrien |date=2022 |title=A15. Front-End and Back-End Technologies: The Importance of Proficiency in Multiple Programming Languages |url=https://product.house/front-end-and-back-end-technologies-the-importance-of-proficiency-in-multiple-programming-languages/}}</ref> Overall, translator computing plays a crucial role in bridging the gap between software and hardware implementations, enabling developers to leverage the strengths of each platform and optimize performance, power efficiency, and other metrics according to the specific requirements of the application.<ref>{{Cite web |last=Pagadala |first=Santosh Kumar |date=2004 |title=Portable implementation of computer aided design environment for composite structures |url=https://researchrepository.wvu.edu/cgi/viewcontent.cgi?article=2455&context=etd}}</ref>
== Programming Language Processors ==▼
The software development process is noticeably different depending on the type of translator used by a developer. Stages of the development process that are influenced by a translator include the initial programming stage, the [[debugging]] stage, and most notably the execution process. Factors that are affected during these stages include code performance, feedback speed for the debugging process, language features, and platform independence.<ref>{{Cite web |last=Ivey |first=Alice |date=July 25, 2023 |title=Compiler vs. interpreter: Key differences |url=https://cointelegraph.com/news/compiler-vs-interpreter |website=Cointelegraph}}</ref> Some of the more notable programming language processors used to translate code are [[Compiler|compilers]], [[Interpreter (computing)|interpreters]], and [[Assembly language|assemblers]].<ref name=":0">{{Cite web |date=2018-08-09 |title=Language Processors: Assembler, Compiler and Interpreter |url=https://www.geeksforgeeks.org/language-processors-assembler-compiler-and-interpreter/ |access-date=2024-03-15 |website=GeeksforGeeks |language=en-US}}</ref>▼
▲The software development process is noticeably different depending on the type of translator used by a developer, this of course differs from translator to translator. Stages of the development process that are influenced by a translator include the initial programming stage, the [[debugging]] stage, and most notably the execution process. Factors that are affected during these stages include code performance, feedback speed for the debugging process, language features, and platform independence.
=== Compilers ===
Compiler software interacts with [[source code]] by converting it typically from a higher-level programming language into [[object code]] that can later be executed by the computer's [[
There are clear benefits when translating high-level code with a compiler.<ref name=":2">{{Cite web |date=March 15, 2024 |title=Translator Types |url=https://adacomputerscience.org/concepts/trans_assembler_compiler_interpreter?examBoard=all&stage=all |access-date=March 15, 2024 |website=Ada Computer Science}}</ref>
Line 19 ⟶ 22:
There are clear disadvantages when translating high-level code with a compiler.<ref name=":2" />
[[File:Compiler scheme (en).
* Object code produced during compilation is specific to a machine's [[instruction set architecture]] (ISA). This results in object code that is dependent on a specific type of machine in order to run.
Line 33 ⟶ 36:
* [[PL/I]]
* [[Java (programming language)|Java]]
* [[Rexx|REXX]]
=== Interpreters ===
Line 57 ⟶ 60:
=== Assemblers ===
An assembler program functions by converting low-level assembly code into a conventional machine code that is readable by the CPU. The purpose of assembly language, like other coding languages, is to make the programming process more user-friendly than programming in machine language. Assembler languages utilize mnemonic devices and symbolic addresses to differentiate between opcode, operands, and specific memory addresses. Many of these components are not easily readable by humans and therefore mnemonics, symbols, and labels make the code decipherable. The assembler works by processing code one line at a time and then moves on to the next instruction. To eliminate issues that occur due to addressing locations, the translation process known as assembly is typically done in a two-pass process. The first pass of assembly is done in order to identify binary addresses that correspond to the symbolic names. This is essential in order to guide pass two which is the line-by-line translation into machine language.<ref name=":3">{{Cite book |
Commonly used assemblers include:
* [[X86 assembly language|x86 assembly languages]] (used in
* [[ARM Assembly Language Programming|ARM assembly language]] (used in mobile devices)<ref name=":4" />
* [[MIPS architecture|MIPS]] assembly language (used in gaming consoles)<ref name=":4" />
* [[PowerPC]] assembly language<ref name=":4" />
* [[Little Computer 3|LC-3]] assembly language (used primarily in education
==See also==
Line 85 ⟶ 83:
<ref name="Intel_1983_SH">{{cite book |title=Software Handbook |chapter=Translators And Utilities For Program Development |page=3-1 |date=1984 |orig-date=1983 |publisher=[[Intel Corporation]] |id=230786-001 |url=http://bitsavers.trailing-edge.com/components/intel/_dataBooks/230786-001_Intel_Software_Handbook_1984.pdf |access-date=2020-01-29 |url-status=live |archive-url=https://web.archive.org/web/20200129010534/http://bitsavers.trailing-edge.com/components/intel/_dataBooks/230786-001_Intel_Software_Handbook_1984.pdf |archive-date=2020-01-29}}</ref>
<ref name="MCT">{{cite web |title=What are compilers, translators, interpreters, and assemblers? |date=2017-02-17 |author-first=Scott |author-last=Thornton |work=MicrocontrollerTips |url=http://www.microcontrollertips.com/compilers-translators-interpreters-assemblers-faq/ |access-date=2020-02-02 |url-status=live |archive-url=https://web.archive.org/web/20190719223609/https://www.microcontrollertips.com/compilers-translators-interpreters-assemblers-faq/ |archive-date=2019-07-19}}</ref>
<!-- <ref name="Pasteur_2008">{{cite book |author-first1=Katja |author-last1=Schuerer |author-first2=Catherine |author-last2=Letondal |author-first3=Eric |author-last3=Deveaud |date=2008-02-04 |orig-date=2003-01-06 |publisher=[[Pasteur Institute]] |title=Introduction to Programming using Python - Programming Course for Biologists at the Pasteur Institute |chapter=Chapter 5. Program execution, Section 5.2. Interpreter and Compiler |website=pasteur.fr |pages=37–40 |chapter-url=http://www.pasteur.fr/formation/infobio/python/ch05s02.html
}}
== Further reading ==
* {{cite book |title=Assemblers, Compilers, and Program Translation |author-first=Peter |author-last=Calingaert |editor-first=Ellis |editor-last=Horowitz |editor-link=Ellis Horowitz |date=1979 |orig-year=1978-11-05 |series=Computer software engineering series |publisher=[[Computer Science Press, Inc.]] |publication-place=Potomac, Maryland, USA |___location=[[University of North Carolina at Chapel Hill]] |edition=1st printing, 1st |isbn=0-914894-23-4 |issn=0888-2088 |lccn=78-21905 |url=https://books.google.com/books?id=x84mAAAAMAAJ |access-date=2020-03-20 |url-status=live |archive-url=https://web.archive.org/web/20200320183710/https://books.google.de/books?id=x84mAAAAMAAJ&redir_esc=y |archive-date=2020-03-20}} (2+xiv+270+6 pages)
Line 95 ⟶ 93:
[[Category:Programming language implementation]]
|