==Abstraction penalty==
HighA high-level languages intend tolanguage provideprovides features that standardize common tasks, permit rich debugging, and maintain architectural agnosticism;. whileOn low-levelthe languagesother oftenhand, producea morelow-level efficientlanguage coderequires throughthe [[programcoder optimizationto |optimization]]work forat a specificlower-level [[Computerof architectureabstraction |system architecture]]. ''Abstraction penalty''which is thegenerally costmore thatchallenging, high-levelbut programmingdoes techniques payallow for being[[program unableoptimization to|optimizations]] optimizethat performanceare ornot usepossible certainwith hardwarea because they don't take advantage of certain lowhigh-level architectural resourceslanguage. High-levelThis programming''abstraction exhibitspenalty'' featuresfor likeusing morea generichigh-level datalanguage structuresinstead andof operations,a runlow-timelevel interpretation,language andis intermediatereal, code files; which often resultbut in executionpractice, oflow-level faroptimizations morerarely operationsimprove thanperformance necessary,at higherthe memory[[user consumption, andexperience]] larger binary program sizelevel.<ref>{{cite journal
|author=Surana P
|title=Meta-Compilation of Language Abstractions.
| pages = 367
| publisher = Springer
}}</ref> ForNone thisthe reasonless, code whichthat needs to run particularly quickly and efficiently may require the use of a lower-level language, even if a higher-level language would make the coding easier to write and maintain. In many cases, critical portions of a program mostly in a high-level language canare be hand-coded in [[assembly language]],in leadingorder to meet tight timing or memory constraints. A well-designed compiler for a muchhigh-level faster,language morecan efficientproduce code comparable in efficiency to what could be coded by hand in assembly, orand simplythe reliablyhigher-level functioningabstractions [[Programsometimes optimisation|optimisedallow program]]for optimizations that beat the performance of hand-coded assembly.<ref>
However, with the growing complexity of modern [[microprocessor]] architectures, well-designed compilers for high-level languages frequently produce code comparable in efficiency to what most low-level programmers can produce by hand, and the higher abstraction may allow for more powerful techniques providing better overall results than their low-level counterparts in particular settings.<ref>
{{Cite journal
|author1=Manuel Carro |author2=José F. Morales |author3=Henk L. Muller |author4=G. Puebla |author5=M. Hermenegildo | journal = Proceedings of the 2006 International Conference on Compilers, Architecture and Synthesis for Embedded Systems
| year = 2006
| publisher = ACM
}}</ref> Since a high-level language is designed independent of a specific computing [[Computer architecture |system architecture]], a program written in such a language can run on any computing context with a compatible compiler or interpreter.
}}</ref>
High-level languages are designed independent ofUnlike a specificlow-level computinglanguage [[Computerthat architecture|systemis architecture]].inherently Thistied facilitatesto executingprocessor a program written in suchhardware, a language on any computing system with compatible support for the Interpreted or [[Just-in-time compilation|JIT]] program. Highhigh-level languageslanguage can be improved, as their designers develop improvements. In other cases,and new high-level languages can evolve from one or more others with the goal of aggregating the most popular constructs with new or improved features. AnFor example of this is, [[Scala (programming language)|Scala]] which maintains backward compatibility with [[Java (programming language)|Java]],. meaning that programs and librariesCode written in Java will continue to be usable even if a programming shopdeveloper switches to Scala;. thisThis makes the transition easier and extends the lifespan of sucha high-level coding indefinite[[codebase]]. In contrast, low-level programs rarely survive beyond the [[Computer architecture |system architecture]] which they were written for without major revision. This is the engineering 'trade-off' for the 'Abstraction Penalty'.
== Relative meaning ==
|