生物钟是什么| 咳嗽有黄痰吃什么消炎药| 12月13号是什么星座| 眼睛模糊吃什么药| 亩产是什么意思| 脑血栓前兆是什么症状表现| 麻长什么样子图片| 吃护肝片有什么副作用| 火烧是什么| 先天性心脏病有什么症状| 减脂晚餐吃什么| 什么食物利尿| 反流性食管炎是什么病| 筋膜是什么| 奶糕是什么| 世界上最硬的东西是什么| 天蝎女跟什么星座最配| 腹部痛是什么原因| 用膳是什么意思| 幽门螺旋杆菌有什么危害| 吃什么可以变胖| 限期使用日期是什么意思| 凉瓜是什么瓜| 山峰是什么意思| 环比增长什么意思| 双侧肾盂无分离是什么意思| 琼瑶什么意思| 广东有什么特产| 爽字代表什么生肖| 什么筷子好| 冰雹是什么季节下的| 中耳炎不能吃什么食物| 咖啡是什么| 做肠镜前一天可以吃什么| 可可和咖啡有什么区别| 阿托伐他汀治什么病| 辞海是什么书| 神戳戳是什么意思| 刺激是什么意思| 什么是性生活| 做什么饭简单又好吃| 车挂件挂什么保平安好| 桂皮是什么树的皮| 舌头肥大有齿痕是什么原因| 小孩子为什么老是流鼻血| 怕冷的人是什么原因| 什么化痰效果最好最快| 现在可以种什么农作物| 占位性病变是什么意思| 什么是继发性高血压| 化疗为什么要剃光头| 夜间抽搐的原因是什么| 夜莺是什么鸟| 二龙戏珠是什么意思| flour是什么意思| 小腿肚抽筋是什么原因| 什么是备皮| 吃什么可以回奶| 喉咙发炎吃什么食物| 养狗养不活是什么兆头| 履新是什么意思| 为什么同房后小腹隐隐作痛| 荷花是什么季节开放的| np是什么意思| 什么的孩子| 一什么老虎| 梦见家里水管漏水是什么意思| 猪横脷是什么| 貔貅什么人不能戴| 小孩尿不出来尿是什么原因| 缺硒有什么症状| 白细胞满视野是什么意思| 金匮肾气丸有什么作用| 受虐倾向是什么意思| 贵妇是什么意思| 甜瓜什么时候成熟| 吃什么食物可以减肥| 口腔溃疡挂什么科室| 恶心头晕是什么症状| 工口是什么意思| 14年属什么| 磷高吃什么药| 集训是什么| 南京五行属什么| 尿毒症小便有什么症状| 什么人吃天麻最好| 2001属什么生肖| 月经为什么来了一点又不来了| 异想天开什么意思| 来大姨妈不能吃什么| 胆囊炎什么症状| 减肥期间可以吃什么零食| 包皮发炎红肿用什么药| 清歌是什么意思| 单身领养孩子需要什么条件| 月经吃什么水果好| 什么鱼炖豆腐好吃| 八面玲珑什么意思| 二月初五是什么星座| 晚上吃什么有助于减肥| 屁眼痒是什么原因| 鬼斧神工是什么意思| 眼白出血是什么原因| 松花粉有什么功效| 995是什么意思| 橄榄菜长什么样子图片| 强碱是什么| 公粮是什么意思| 本帮菜是什么意思| 什么然起什么| 男性内分泌科检查什么| 非洲割礼是什么| 喝铁观音茶有什么好处| 来月经腰疼的厉害是什么原因| 什么颜色衣服显白| 最新奥特曼叫什么| 计算机二级什么时候考| 降噪是什么意思| 什么是追溯码| 蝙蝠侠叫什么| 牙出血是什么病的前兆| 吃生红枣有什么好处| 11月16是什么星座| 中焦不通用什么中成药| 十一月二十是什么星座| 口上长水泡是什么原因| 下巴反复长痘痘是什么原因| 运是什么结构| 关节炎吃什么药好得快| 常喝枸杞泡水有什么好处| 舌苔白是什么原因| 蚧壳虫用什么药最有效| 胃疼胃胀吃什么药好| 舌头两边锯齿状是什么原因| ccg是什么意思| 什么饮料解渴| chocker是什么| 4月26日什么星座| 男生喉结不明显是为什么| 什么床品牌最好| 秦时明月什么时候更新| vertu手机为什么那么贵| 未什么意思| 男人说做朋友代表什么| 幽门螺旋杆菌感染吃什么药| 极是什么意思| dfs是什么| 胸口痛是什么原因| sakura是什么牌子| 坐月子可以吃什么零食| 半夜胎动频繁是什么原因| 栀子花什么时候开花| 养胃喝什么茶好| 城市户口和农村户口有什么区别| 清明节有什么习俗| 兰精莫代尔是什么面料| 卉字五行属什么| 头部容易出汗是什么原因| 炮制是什么意思| 三个土是什么字怎么读| 金牛座前面是什么星座| 生普洱和熟普洱有什么区别| 脑供血不足吃什么食物好| 什么醒酒最快| 初中属于什么专业| 言外之意是什么意思| 杨梅有什么功效和作用| 什么病不能坐飞机| 周围神经炎是什么症状| 尿常规白细胞3个加号什么意思| 巧克力囊肿是什么| 紫癜有什么症状| 什么是双规| 死板是什么意思| 什么叫消融手术| 挺舌反应是什么| 血压低吃什么东西好| 荷尔蒙是什么东西| 汪星人什么意思| 治疗心率过快用什么药效果好| 喝酒不能吃什么药| roma是什么意思| 女生月经不规律的原因是什么| circle是什么意思| 技师是干什么的| 低骨量是什么意思| 什么是官方旗舰店| 胃炎吃什么药效果好| 口嫌体正直是什么意思| 有的没的是什么意思| 葡萄籽有什么功效和作用| 耄耋读什么| 看膝盖挂什么科| 避孕药叫什么| 验孕棒ct分别代表什么| 齁是什么意思| 相知是什么意思| 外阴灼热用什么药| top1什么意思| 骨蒸潮热是什么症状| 腹直肌分离是什么意思| 男人精子少吃什么药| 跳蚤吃什么| 智齿什么时候开始长| 短效避孕药什么牌子好| 做梦梦见考试是什么意思| 打嗝是什么原因| 不含而立是什么意思| 6月15是什么星座| 贫血不能吃什么| 拔苗助长告诉我们什么道理| 负离子是什么东西| 沙悟净的武器叫什么| Iud是什么| 电脑关机快捷键是什么| 什么时候有胎心胎芽| 黑枸杞泡茶是什么颜色| 3月27是什么星座| 海参是补什么的| 阑尾炎疼吃什么药| 皮肤痒吃什么药| 海兔是什么动物| 五香粉是什么| 惊悉是什么意思| 中学为体西学为用是什么意思| 天然气是什么味道| 黑五是什么时候| 喝茶对身体有什么好处| 半身不遂是什么原因引起的| 人为什么会自杀| 角膜炎用什么眼药水| 人生只剩归途什么意思| 孕妇抽筋是什么原因引起的| 牙齿发白是什么原因| 胎菊泡水喝有什么功效| 不检点是什么意思| cho是什么| 吃维生素b族有什么好处| 黄瓜敷脸有什么功效| 月经推迟一个月不来什么原因| 吃薄荷对人身体有什么好处| 阴茎疼是什么原因| 什么可以吃| 什么人容易得间质瘤| 憋尿会造成什么后果| 今天买什么股票| 11月28日是什么星座| 牙上有黑渍是什么原因| 脂肪肝用什么药| 甲状腺是什么原因引起的| 777是什么意思| 每天放很多屁是什么原因| 请辞是什么意思| 妞字五行属什么| 多少年婚姻是什么婚| 心电图电轴右偏是什么意思| 湿疹用什么药最有效| 喇叭裤配什么鞋子好看| 女生私密部位长什么样| 7.6是什么星座| 失信是什么意思| 梦见打死狗有什么预兆| 窝窝头是用什么做的| 涟漪什么意思| 百度
百度 (记者康劲通讯员任涛)

A high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language elements, be easier to use, or may automate (or even hide entirely) significant areas of computing systems (e.g. memory management), making the process of developing a program simpler and more understandable than when using a lower-level language. The amount of abstraction provided defines how "high-level" a programming language is.[1]

In the 1960s, a high-level programming language using a compiler was commonly called an autocode.[2] Examples of autocodes are COBOL and Fortran.[3]

The first high-level programming language designed for computers was Plankalkül, created by Konrad Zuse.[4] However, it was not implemented in his time, and his original contributions were largely isolated from other developments due to World War II, aside from the language's influence on the "Superplan" language by Heinz Rutishauser and also to some degree ALGOL. The first significantly widespread high-level language was Fortran, a machine-independent development of IBM's earlier Autocode systems. The ALGOL family, with ALGOL 58 defined in 1958 and ALGOL 60 defined in 1960 by committees of European and American computer scientists, introduced recursion as well as nested functions under lexical scope. ALGOL 60 was also the first language with a clear distinction between value and name-parameters and their corresponding semantics.[5] ALGOL also introduced several structured programming concepts, such as the while-do and if-then-else constructs and its syntax was the first to be described in formal notation – Backus–Naur form (BNF). During roughly the same period, COBOL introduced records (also called structs) and Lisp introduced a fully general lambda abstraction in a programming language for the first time.

Features

edit

"High-level language" refers to the higher level of abstraction from machine language. Rather than dealing with registers, memory addresses, and call stacks, high-level languages deal with variables, arrays, objects, complex arithmetic or Boolean expressions, subroutines and functions, loops, threads, locks, and other abstract computer science concepts, with a focus on usability over optimal program efficiency. Unlike low-level assembly languages, high-level languages have few, if any, language elements that translate directly into a machine's native opcodes. Other features, such as string handling routines, object-oriented language features, and file input/output, may also be present. One thing to note about high-level programming languages is that these languages allow the programmer to be detached and separated from the machine. That is, unlike low-level languages like assembly or machine language, high-level programming can amplify the programmer's instructions and trigger a lot of data movements in the background without their knowledge. The responsibility and power of executing instructions have been handed over to the machine from the programmer.

Abstraction penalty

edit

High-level languages intend to provide features that standardize common tasks, permit rich debugging, and maintain architectural agnosticism; while low-level languages often produce more efficient code through optimization for a specific system architecture. Abstraction penalty is the cost that high-level programming techniques pay for being unable to optimize performance or use certain hardware because they don't take advantage of certain low-level architectural resources. High-level programming exhibits features like more generic data structures and operations, run-time interpretation, and intermediate code files; which often result in execution of far more operations than necessary, higher memory consumption, and larger binary program size.[6][7][8] For this reason, code which 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. In many cases, critical portions of a program mostly in a high-level language can be hand-coded in assembly language, leading to a much faster, more efficient, or simply reliably functioning optimised program.

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.[9] High-level languages are designed independent of a specific computing system architecture. This facilitates executing a program written in such a language on any computing system with compatible support for the Interpreted or JIT program. High-level languages can be improved as their designers develop improvements. In other cases, new high-level languages evolve from one or more others with the goal of aggregating the most popular constructs with new or improved features. An example of this is Scala which maintains backward compatibility with Java, meaning that programs and libraries written in Java will continue to be usable even if a programming shop switches to Scala; this makes the transition easier and the lifespan of such high-level coding indefinite. In contrast, low-level programs rarely survive beyond the system architecture which they were written for without major revision. This is the engineering 'trade-off' for the 'Abstraction Penalty'.

Relative meaning

edit

Examples of high-level programming languages in active use today include Python, JavaScript, Visual Basic, Delphi, Perl, PHP, ECMAScript, Ruby, C#, Java and many others.

The terms high-level and low-level are inherently relative. Some decades ago,[timeframe?] the C language, and similar languages, were most often considered "high-level", as it supported concepts such as expression evaluation, parameterised recursive functions, and data types and structures, while assembly language was considered "low-level". Today, many programmers might refer to C as low-level, as it lacks a large runtime-system (no garbage collection, etc.), basically supports only scalar operations, and provides direct memory addressing; it therefore, readily blends with assembly language and the machine level of CPUs and microcontrollers. Also, in the introduction chapter of The C Programming Language (second edition) by Brian Kernighan and Dennis Ritchie, C is described as "not a very high level" language.[10]

Assembly language may itself be regarded as a higher level (but often still one-to-one if used without macros) representation of machine code, as it supports concepts such as constants and (limited) expressions, sometimes even variables, procedures, and data structures. Machine code, in turn, is inherently at a slightly higher level than the microcode or micro-operations used internally in many processors.[11]

Execution modes

edit

There are three general modes of execution for modern high-level languages:

Interpreted
When code written in a language is interpreted, its syntax is read and then executed directly, with no compilation stage. A program called an interpreter reads each program statement, following the program flow, then decides what to do, and does it. A hybrid of an interpreter and a compiler will compile the statement into machine code and execute that; the machine code is then discarded, to be interpreted anew if the line is executed again. Interpreters are commonly the simplest implementations of the behavior of a language, compared to the other two variants listed here.
Compiled
When code written in a language is compiled, its syntax is transformed into an executable form before running. There are two types of compilation:
Machine code generation
Some compilers compile source code directly into machine code. This is the original mode of compilation, and languages that are directly and completely transformed to machine-native code in this way may be called truly compiled languages. See assembly language.
Intermediate representations
When code written in a language is compiled to an intermediate representation, that representation can be optimized or saved for later execution without the need to re-read the source file. When the intermediate representation is saved, it may be in a form such as bytecode. The intermediate representation must then be interpreted or further compiled to execute it. Virtual machines that execute bytecode directly or transform it further into machine code have blurred the once clear distinction between intermediate representations and truly compiled languages.
Source-to-source translated or transcompiled
Code written in a language may be translated into terms of a lower-level language for which native code compilers are already common. JavaScript and the language C are common targets for such translators. See CoffeeScript, Chicken Scheme, and Eiffel as examples. Specifically, the generated C and C++ code can be seen (as generated from the Eiffel language when using the EiffelStudio IDE) in the EIFGENs directory of any compiled Eiffel project. In Eiffel, the translated process is referred to as transcompiling or transcompiled, and the Eiffel compiler as a transcompiler or source-to-source compiler.

Note that languages are not strictly interpreted languages or compiled languages. Rather, implementations of language behavior use interpreting or compiling. For example, ALGOL 60 and Fortran have both been interpreted (even though they were more typically compiled). Similarly, Java shows the difficulty of trying to apply these labels to languages, rather than to implementations; Java is compiled to bytecode which is then executed by either interpreting (in a Java virtual machine (JVM)) or compiling (typically with a just-in-time compiler such as HotSpot, again in a JVM). Moreover, compiling, transcompiling, and interpreting is not strictly limited to only a description of the compiler artifact (binary executable or IL assembly).

High-level language computer architecture

edit

Alternatively, it is possible for a high-level language to be directly implemented by a computer – the computer directly executes the HLL code. This is known as a high-level language computer architecture – the computer architecture itself is designed to be targeted by a specific high-level language. The Burroughs large systems were target machines for ALGOL 60, for example.[12]

See also

edit

References

edit
  1. ^ "HThreads - RD Glossary". Archived from the original on 26 August 2007.
  2. ^ London, Keith (1968). "4, Programming". Introduction to Computers. 24 Russell Square London WC1: Faber and Faber Limited. p. 184. ISBN 0571085938. The 'high' level programming languages are often called autocodes and the processor program, a compiler.{{cite book}}: CS1 maint: location (link)
  3. ^ London, Keith (1968). "4, Programming". Introduction to Computers. 24 Russell Square London WC1: Faber and Faber Limited. p. 186. ISBN 0571085938. Two high level programming languages which can be used here as examples to illustrate the structure and purpose of autocodes are COBOL (Common Business Oriented Language) and FORTRAN (Formular Translation).{{cite book}}: CS1 maint: location (link)
  4. ^ Giloi, Wolfgang, K. [de] (1997). "Konrad Zuse's Plankalkül: The First High-Level "non von Neumann" Programming Language". IEEE Annals of the History of Computing, vol. 19, no. 2, pp. 17–24, April–June, 1997. (abstract)
  5. ^ Although it lacked a notion of reference-parameters, which could be a problem in some situations. Several successors, including ALGOL W, ALGOL 68, Simula, Pascal, Modula and Ada thus included reference-parameters (The related C-language family instead allowed addresses as value-parameters).
  6. ^ Surana P (2006). "Meta-Compilation of Language Abstractions" (PDF). Archived (PDF) from the original on 17 February 2015. Retrieved 17 March 2008. {{cite journal}}: Cite journal requires |journal= (help)
  7. ^ Kuketayev, Argyn. "The Data Abstraction Penalty (DAP) Benchmark for Small Objects in Java". Application Development Trends. Archived from the original on 11 January 2009. Retrieved 17 March 2008.
  8. ^ Chatzigeorgiou; Stephanides (2002). "Evaluating Performance and Power Of Object-Oriented Vs. Procedural Programming Languages". In Blieberger; Strohmeier (eds.). Proceedings - 7th International Conference on Reliable Software Technologies - Ada-Europe'2002. Springer. p. 367.
  9. ^ Manuel Carro; José F. Morales; Henk L. Muller; G. Puebla; M. Hermenegildo (2006). "High-level languages for small devices: a case study" (PDF). Proceedings of the 2006 International Conference on Compilers, Architecture and Synthesis for Embedded Systems. ACM.
  10. ^ Kernighan, Brian W.; Ritchie, Dennis M. (1988). The C Programming Language: 2nd Edition. Prentice Hall. ISBN 9780131103627. Archived from the original on 25 October 2022. Retrieved 25 October 2022.{{cite book}}: CS1 maint: bot: original URL status unknown (link)
  11. ^ Hyde, Randall. (2010). The art of assembly language (2nd ed.). San Francisco: No Starch Press. ISBN 9781593273019. OCLC 635507601.
  12. ^ Chu, Yaohan (1975), "Concepts of High-Level Language Computer Architecture", High-Level Language Computer Architecture, Elsevier, pp. 1–14, doi:10.1016/b978-0-12-174150-1.50007-0, ISBN 9780121741501
edit
ppm是什么 察言观色是什么意思 红色学士服是什么学位 阿米巴病是什么病 苹果a1660是什么型号
大便很臭什么原因 类风湿挂什么科室 神经性头疼吃什么药效果好 月经时间过长是什么原因引起的 营养不良会导致身体出现什么症状
马桶对着卫生间门有什么不好 嘴角烂了涂什么药 阿昔洛韦片治什么病 巡警是做什么的 什么主食含糖量低
fps是什么意思 绿色加蓝色是什么颜色 rj什么意思 繁字五行属什么 钾低是什么原因造成的
心慌挂什么科hcv9jop1ns7r.cn 护发素什么牌子好hcv8jop0ns3r.cn 陈皮是什么皮做的bfb118.com honey什么意思hcv9jop0ns2r.cn 肉便器是什么东西hcv8jop9ns1r.cn
八髎区疼是什么原因hcv9jop3ns0r.cn 头晕耳鸣是什么原因引起的hcv8jop0ns8r.cn 白事是什么意思zhiyanzhang.com 属鼠的是什么命hcv8jop1ns6r.cn 女人湿气重吃什么药效果好hcv9jop0ns4r.cn
感觉心慌是什么原因hcv8jop3ns8r.cn 喝酒手掌发红是什么原因hcv9jop2ns4r.cn 芍药什么时候开花hcv9jop6ns3r.cn 泌尿科属于什么科hcv8jop2ns4r.cn 长江后浪推前浪是什么意思hcv9jop3ns4r.cn
脚环肿是什么原因引起的hcv7jop6ns0r.cn 梦见自己在洗澡是什么意思520myf.com 大黄蜂是什么车hcv8jop8ns1r.cn 浪花像什么1949doufunao.com 排酸肉是什么意思jinxinzhichuang.com
百度