Talk:Low-level programming language

message: I've always known low-level and high-level programming languages to be absolute terms. The former refers to programming languages that provide no abstraction from the instructions that the processor implements, this is binary code (maybe written in hexadecimal), and assembler language, which is a mnemonic for the binary code and is assembled. The latter refers to programming languages that can be used independently of the processor because there is a software layer that abstracts that detail (something an assembler does not do), as a compiler or an interpreter.
The crisp and absolute difference between low-level programming languages and high-level programming languages, for what I knew, is that the code is done for a specific hardware (or group of them) as may be the x86 group of processors, or it is done for a software (or group of them) as is the group of C compilers.
Unfortunately I haven't been able to find references as this is more a terminological matter than a informatics matter, that's why I've required the citation (as there may be one). All that I got by now is this a definition in the webopedia.
Kind regards.  —Preceding unsigned comment added by Trylks (talk • contribs) 23:26, 19 February 2008 (UTC)
thread_title:  Absolute terms 

message: There are no controversial statements of fact in this article, so no citations are needed.  Nor is the Utah State Office of Education reference needed.  "a low level language is one that does not need a compiler or interpreter to run" is a simple statement of fact.  "Mars is a planet" does not need an "according to..." reference.  The article may be a stub, but what's there is an example of content which does not need references, besides the one instance with the citation tag. And sometimes, especially in the long-winded Wikipedia, a term can be explained perfectly well with a stub. J M Rice (talk) 13:37, 11 October 2008 (UTC)
thread_title:  Removed  two-year old citation tag 

message: It's rediculous to require a citation for the statement that programmers rarely code in machine code. That's like requiring a citation to state that Elvis is dead.
:"Rediculous" or not, it's Wikipedia policy.Diego (talk) 10:26, 27 October 2008 (UTC)
thread_title:  Old citation 

message: I have moved the C example code out of this section and provided a point by point comparison between it and the assembly language example, to emphasise the difference between high level abstraction and low level architecture specifics.  The C example served absolutely no purpose in this section - it is absolutely not an example of low-level programming in a high level language.
I do not think this section is very useful as currently written.  It makes no mention of the most pertinent mechanism (inline assembler) and I think causes confustion by mostly refering to systems programming.  Systems programming is not by definition low-level programming.  UNIX (and UNIX-like) operating systems are written in C but almost all of that code is completely portable.  Porting such an operating system to a specific architecture mostly means simply specifying values for operating system constants and in some places choosing implementations which will operate most efficiently on a particular architecture (over implementations which would function poorly but would work).  Even those parts which are achitecture-specific are mostly high-level C code written with an awareness of the architecture rather than code which directly manipulates that architecture in a low-level way. Actual low-level programming is a very small part of operating system design.  As it stands, this section is as vague in its worning and uncertain in its purpose. 
I think this also applies to the "relative meaning" section, which seems equally ill informed.  The beginning of the article gives a clear definition of "low level".  This is computer-science jargon, where words and phrases which might be ambiguous in general language have specific meanings.  Whoever wrote that doesn't realise that C is still considered a high level language.  The emergence of more abstract languages hasn't changed that basic fact.  
I am going to make the following changes to this section:
* Add mention of inline assembler and other techniques for low-level hardware control by high level programmes.
* Remove mention of Forth (off topic).
* Remove the paragraph which is entirely devoted to systems programming in C, does not contribute to the definition of Low-level programming languages and is off topic.
* Remove the small bullet list of other types of programmig languages.  It is not relevant to this section, very limited and entirely redundant given the automatically-generated category-relevant lists at the bottom of the page.
Itsbruce (talk) 17:39, 25 August 2014 (UTC)
replies: text: I am not sure by now, how well low and high are defined. Seems to me that there needs to be a name for something above assembler, but that still allows for low-level coding at the register level, and other machine specific abilities. PL/360, for example, allows operations on specific machine registers. As well as I know, BLISS and PL/S also allow specification at the hardware level.  PL/M does similarly for the 8080 and 8086. I believe some C compilers allow writing interrupt routines, with, for example, proper interrupt enable and disable. While C is still a high-level language, one can cast an integer constant to a pointer, and read or write from specific hardware addresses. On machines with memory-mapped I/O, one can do I/O operations directly.  Those are things one normally is not able to do in a high-level language, yet C allows for them. Gah4 (talk) 13:04, 11 July 2019 (UTC)
replies: text: ESPOL is another high-level language that supports hardware-specific operations - including, with , what amounts to inline assembler. Guy Harris (talk) 22:28, 11 October 2023 (UTC)
thread_title:  Low-level programming in high-level languages - needs edit, possible removal 

message: Seems to me that languages like PL/360 and PL/M should be described here.  They are designed to look like higher-level languages, but operate more like an assembler.  In PL/360, variables with names like R1 and R2 represent actual processor registers. Even more, the translation is more direct than for high level languages. In PL/360, for example, R1:=R1+R1+R1; will result in R1 holding four times its previous value, LR R1,R1; AR R1,R1; AR R1,R1, as the modified value is used for the last AR.  Gah4 (talk) 18:57, 29 June 2018 (UTC)
thread_title:  more examples 

message: There is no mentioning of C being used as a low-level language. C could be used as a high-level language, but the modern day go-to low-level programming language is pretty much C. 
* People publishing books about "low-level programming" with C in the title.
* Columbia University offering course in Low-level programming with C
Based on my observation, the only people who potentially disagree about C being low level are hardware developers. However if this article only takes their point of view, then it is basically NPOV. --Voidvector (talk) 07:54, 27 December 2019 (UTC)
replies: text: No idea about the WP:NPOV, but I do agree that C is commonly used as a low-level language.  One common example is assigning addresses (often of memory-mapped I/O devices) to pointers, and then dereferencing them. While the standard is meant to be used as a high-level language, that doesn't mean that people do it. Gah4 (talk) 00:32, 31 December 2019 (UTC)

text: C is often used to control low-level machine details, however that statement does not imply that C is a low-level programming language. For instance, many languages uncontroversially considered high-level (e.g. Haskell, Java) can also perform low-level operations if suitable abstractions are provided. As evidence, House is an operating system written in Haksell. I argue the correct way to think about C is as a high-level language with implementations that often provide out-of-the-box support for low-level operations. I suggest that this article can be improved by mentioning very high-level languages   so as to distinguish C from languages like Java and Haskell.  — Preceding unsigned comment added by 65.60.139.183 (talk) 14:00, 27 March 2020 (UTC)
thread_title:  C as a low-level language 

message: This article gets a lot of traffic and is especially underdeveloped. I am just remarking on this; I have no ideas for organizing editing of this topic.  Bluerasberry (talk) 23:15, 12 June 2022 (UTC)
thread_title:  Very popular, little development 

message: The entire of the introduction section and portions of the Machine Code section is almost entirely copied from this source, with little changes made.  Bxshan 09:04, 3 April 2023 (UTC)
thread_title:  Only one source present in majority of the article 

message: — Assignment last updated by Phoenixpinpoint (talk) 21:20, 21 April 2024 (UTC)
thread_title: Wiki Education assignment: Introduction to Digital Humanities Spring 2024