食欲不振是什么原因| 心肌缺血做什么检查能查出来| 6月12日是什么星座| 倾巢出动是什么意思| 伺候是什么意思| 什么样的水花| 牛油果吃了有什么好处| 头发是什么组织| 脱式计算是什么意思| impress是什么意思| 8月18日什么星座| 姓傅的男孩取什么名字| 阑尾炎是什么症状| 孕晚期血糖高对胎儿有什么影响| 林是什么生肖| 前列腺炎吃什么药| 乐山大佛是什么佛| 1210是什么星座| 77年五行属什么| 淀粉是什么粉| 父母都是b型血孩子是什么血型| 潜血试验阳性什么意思| 小孩过敏吃什么药最好| 血脂稠是什么原因造成的| 腹胀屁多是什么原因| 手指长倒刺是什么原因| 牙齿痛什么原因| 草字头加叔念什么| 痛风吃什么食物好得快| 什么样的夜晚| 犹太人是什么人种| 梦想成真是什么意思| 碳素墨水用什么能洗掉| 脚板麻木是什么原因| 宫颈糜烂吃什么药| 贺喜是什么意思| 淋巴结肿大是什么样子| 盆腔钙化灶是什么意思| 尿道感染是什么原因引起| 请节哀是什么意思| a4纸可以做什么手工| 女性为什么会感染巨细胞病毒| pm是什么| 婴儿打嗝是什么原因引起的| 唵嘛呢叭咪吽什么意思| 脚底痛什么原因| 孔子姓什么名什么| 半夜脚抽筋是什么原因| 夫妻分房睡意味着什么| fresh是什么意思| 肿瘤手术后吃什么好| 雄五行属什么| 抽完血吃什么| 4月4日是什么星座| 水压低用什么花洒| 屁股疼痛是什么原因引起的| 青蛙怕什么| 咳嗽有痰吃什么药| 什么叫偶数| 有什么好用的vpn| 泡茶用什么水好| 团长是什么级别| 洗衣机不出水是什么原因| 子不孝父之过下一句是什么| 胸闷是什么原因引起的| 腰痛去医院挂什么科| 青龙男是什么意思| 离殇是什么意思| 什么是眼底病| 援交什么意思| 人工流产和无痛人流有什么区别| 什么是走读生| 91年的属什么生肖| 肚子痛是什么原因| 老三篇是什么意思| 黄疸是什么引起的| 有骨气是什么意思| 啤酒花是什么东西| 糟卤是什么| 格斗和散打有什么区别| 什么叫肾阴虚| 小三是什么意思| 粉刺长什么样图片| 武林外传的客栈叫什么| 茄子能治什么病| 2001年属蛇的是什么命| 没有精液是什么原因| 女生吃避孕药有什么副作用| b超回声不均匀是什么意思| 神经性耳鸣吃什么药| 手掌纹路多且杂乱是为什么| 肠道功能紊乱吃什么药效果好| 毛孔粗大做什么医美| 芭比q是什么意思| 迈之灵治什么病| 肺部做什么检查最准确| 海藻是什么植物| amy是什么意思| 道理是什么意思| 长期吃面条对身体有什么影响| 八月13号是什么星座| 腹水是什么意思| 秋葵与什么菜相克| 纪年是什么意思| 指甲长得快说明什么| 白带黄绿是什么原因| 2008年属鼠是什么命| 胃胀胃痛吃什么药| 半永久是什么意思| 鲁迅是著名的什么家| 开诚布公是什么意思| 胶原蛋白什么时候喝最好| 什么人不适合吃榴莲| 年柱亡神是什么意思| 吃什么东西可以降压| 湿气重吃什么药最好| 什么叫肺纤维化| 熬粥用什么锅好| 面粉是什么做的| 4月5号是什么星座| 百香果和什么搭配好喝| 三亚在海南的什么位置| 品是什么意思| 化验血能查出什么项目| 凤凰是什么生肖| 秋刀鱼是什么鱼| 女人卵巢保养吃什么好| 送女生什么礼物好| 脊柱侧弯有什么危害| 什么是应激反应| 什么情况下做肠镜| 肚子胀气是什么原因| 自来卷的头发适合什么发型| 7一9点是什么时辰| 1999年出生的属什么| 淋巴细胞百分比高是什么原因| 气血不足吃什么补最快| 秘语是什么意思| 出入是什么意思| 印度什么时候独立的| 人肉搜索是什么| 高血压可以吃什么水果| 射手属于什么象星座| 血燥吃什么好| 23年属什么生肖| 38岁属什么| 避孕药吃多了有什么副作用| 达瓦里氏什么意思| 梦见好多葡萄是什么意思| 甲状腺球蛋白高是什么原因| 什么食物含蛋白质多| 沈阳是什么省| 西瓜为什么是红色的| 七月份什么星座| 稀奶油是什么| 白马王子是什么意思| 高丽参适合什么人吃| 二拇指比大拇指长代表什么| 冬天吃什么| 维生素B6有什么功效| 砧木是什么意思| 什么水果可以解酒| 面粉是什么做的| 食管反流吃什么药| 休学什么意思| 跳蛋是什么感觉| 半夜十二点是什么时辰| 吃什么提神| 什么是职业年金| 蟠桃为什么是扁的| 自来水是什么水| 红豆有什么功效| 小狗吐白沫不吃东西没精神吃什么药| 7月一日是什么节| 霉菌孢子是什么意思| 牙龈紫黑是什么原因| 高血压吃什么水果好| 无名指和小指发麻是什么原因| 梦见旋风是什么预兆| 植物都有什么| 仔细的什么| 夏字五行属什么| 故是什么意思| 什么是耽美| 肺部疼痛是什么原因| 热射病是什么| 肉鸽是什么意思| 什么是优质碳水| 为什么一躺下就头晕目眩| 月经期喝什么水最好| 无冕之王是什么意思| 医美是什么意思| 今年43岁属什么生肖| 地钱是什么植物| 小孩发烧流鼻血是什么原因| 孤帆远影碧空尽的尽是什么意思| 石家庄古代叫什么名字| 三轮体空是什么意思| 苍苍什么| 什么样的花| 皮肤长小肉粒是什么原因| 鱼的偏旁部首是什么| 牛大力有什么功效| 属兔带什么招财| 痰湿吃什么食物| 9点是什么时辰| 婚检能检查出什么| 奇可以加什么偏旁| 户籍地址填什么| 富士康是做什么的| 眼睛散光是什么原因造成的| 94什么意思| 沙悟净是什么生肖| 梦见黄狗是什么意思| 1958年属什么生肖| 小孩啃指甲是什么原因| 喝酒眼睛红是什么原因| 小腿疼是什么原因| 茉莉毛尖属于什么茶| 同房出血什么原因| 助产学是干什么的| 五月十一是什么星座| 梅核气是什么症状| 心脏房颤吃什么药最好| 东盟为什么没有中国| 自理是什么意思| 膝盖有积液是什么症状| 国企混改是什么意思| 馒头吃多了有什么坏处| 7月什么星座| 为什么多喝水反而胖了| 藏在我回忆里的那个人什么歌| 拉肚子可以喝什么饮料| 左侧肚脐旁边疼是什么原因| 清风明月是什么意思| 疣体是什么| 再生牙技术什么时候能实现| 异常的反义词是什么| 身上为什么会长小肉球| 生辰八字是指什么| 鸡的祖先是什么| 晚上尿多是什么病| 什么开什么笑| 梦见流水是什么征兆| 什么动物是站着睡觉的| 戌时是什么时候| 明年是什么年| mn是什么单位| 肠胃炎适合吃什么食物| 子宫在什么位置| 噗什么意思| 八卦脸什么意思| 大闸蟹什么时候吃| 音字五行属什么| 喝什么水好啊| 瞳字五行属什么| 吃什么能让月经快点来| 姨妈血是黑褐色是什么原因| 金风玉露是什么意思| 理气是什么意思| 腹泻用什么药| 嗓子有粘痰什么原因| 头寸是什么意思| alan英文名什么意思| 百度Jump to content

外媒评美挑起贸易战:得不偿失,有百害而无一利

From Wikipedia, the free encyclopedia
百度 而今天的比赛中,两支上赛季从中甲降到乙级联赛的球队保定容大与云南飞虎狭路相逢,最终保定容大凭借本赛季从梅县铁汉加盟的侯哲上演大四喜、邸佑的梅开二度和王寒冰、杨浩、王新宇、丛敏航的各入一球,主场10-1大胜对手,创造了新的足协杯最大分差记录。

In computer science, an abstract machine is a theoretical model that allows for a detailed and precise analysis of how a computer system functions.[1] It is similar to a mathematical function in that it receives inputs and produces outputs based on predefined rules. Abstract machines vary from literal machines in that they are expected to perform correctly and independently of hardware.[2] Abstract machines are "machines" because they allow step-by-step execution of programs; they are "abstract" because they ignore many aspects of actual (hardware) machines.[3] A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter. They can be used for purely theoretical reasons as well as models for real-world computer systems.[2] In the theory of computation, abstract machines are often used in thought experiments regarding computability or to analyse the complexity of algorithms.[3] This use of abstract machines is fundamental to the field of computational complexity theory, such as with finite state machines, Mealy machines, push-down automata, and Turing machines.[4]

Classification

[edit]

Abstract machines are typically categorized into two types based on the quantity of operations they can execute simultaneously at any given moment: deterministic abstract machines and non-deterministic abstract machines.[2] A deterministic abstract machine is a system in which a particular beginning state or condition always yields the same outputs. There is no randomness or variation in how inputs are transformed into outputs.[5] In contrast, a non-deterministic abstract machine can provide various outputs for the same input on different executions.[2] Unlike a deterministic algorithm, which gives the same result for the same input regardless of the number of iterations, a non-deterministic algorithm takes various paths to arrive to different outputs.[6] Non-deterministic algorithms are helpful for obtaining approximate answers when deriving a precise solution using a deterministic approach is difficult or costly.[7]

A run of a Turing machine

Turing machines, for example, are some of the most fundamental abstract machines in computer science.[2] These machines conduct operations on a tape (a string of symbols) of any length. Their instructions provide for both modifying the symbols and changing the symbol that the machine’s pointer is currently at. For example, a rudimentary Turing machine could have a single command, "convert symbol to 1 then move right", and this machine would only produce a string of 1s.[8] This basic Turing machine is deterministic; however, nondeterministic Turing machines that can execute several actions given the same input may also be built.[2]

Implementation

[edit]

Any implementation of an abstract machine in the case of physical implementation (in hardware) uses some kind of physical device (mechanical or electronic) to execute the instructions of a programming language. An abstract machine, however, can also be implemented in software or firmware at levels between the abstract machine and underlying physical device.[9]

Programming language implementation

[edit]

An abstract machine is, intuitively, just an abstraction of the idea of a physical computer.[13] For actual execution, algorithms must be properly formalised using the constructs offered by a programming language. This implies that the algorithms to be executed must be expressed using programming language instructions.[3] The syntax of a programming language enables the construction of programs using a finite set of constructs known as instructions. Most abstract machines share a program store and a state, which often includes a stack and registers.[9][14] In digital computers, the stack is simply a memory unit with an address register that can count only positive integers (after an initial value is loaded into it). The address register for the stack is known as a stack pointer because its value always refers to the top item on the stack.[15] The program consists of a series of instructions, with a stack pointer indicating the next instruction to be performed. When the instruction is completed, a stack pointer is advanced. This fundamental control mechanism of an abstract machine is also known as its execution loop.[3] Thus, an abstract machine for a programming language is any collection of data structures and algorithms capable of storing and running programs written in the programming language. It bridges the gap between the high level of a programming language and the low level of an actual machine by providing an intermediate language step for compilation. An abstract machine's instructions are adapted to the unique operations necessary to implement operations of a certain source language or set of source languages.[9]

Imperative languages

[edit]

In the late 1950s, the Association for Computing Machinery (ACM) and other allied organisations developed many proposals for Universal Computer Oriented Language (UNCOL), such as Conway's machine. The UNCOL concept is good, but it has not been widely used due to the poor performance of the generated code. In many areas of computing, its performance will continue to be an issue despite the development of the Java Virtual Machine in the late 1990s. Algol Object Code (1964), P4-machine (1976), UCSD P-machine (1977), and Forth (1970) are some successful abstract machines of this kind.[3]

Object-oriented languages

[edit]

Abstract machines for object-oriented programming languages are often stack-based and have special access instructions for object fields and methods. In these machines, memory management is often implicit performed by a garbage collector (memory recovery feature built into programming languages).[16] Smalltalk-80 (1980), Self (1989), and Java (1994) are examples of this implementation.[3]

String processing languages

[edit]

A string processing language is a computer language that focuses on processing strings rather than numbers. There have been string processing languages in the form of command shells, programming tools, macro processors, and scripting languages for decades.[17] Using a suitable abstract machine has two benefits: increased execution speed and enhanced portability. Snobol4 and ML/I are two notable instances of early string processing languages that use an abstract machine to gain machine independence.[3]

Functional programming languages

[edit]
Pictorial representation of a Krivine machine

The early abstract machines for functional languages, including the SECD machine (1964) and Cardelli's Functional Abstract Machine (1983), defined strict evaluation, also known as eager or call-by-value evaluation,[3] in which function arguments are evaluated before the call and precisely once. Recently, the majority of research has been on lazy (or call-by-need) evaluation,[18] such as the G-machine (1984), Krivine machine (1985), and Three Instruction Machine (1986), in which function arguments are evaluated only if necessary and at most once. One reason is because effective implementation of strict evaluation is now well-understood, therefore the necessity for an abstract machine has diminished.[3]

Logical languages

[edit]

Predicate calculus (first order logic) is the foundation of logic programming languages. The most well-known logic programming language is Prolog. The rules in Prolog are written in a uniform format known as universally quantified 'Horn clauses', which means to begin the calculation that attempts to discover a proof of the objective. The Warren Abstract Machine WAM (1983),[3] which has become the de facto standard in Prolog program compilation, has been the focus of most study. It provides special purpose instructions such as data unification instructions and control flow instructions to support backtracking (searching algorithm).[19]

Structure

[edit]

A generic abstract machine is made up of a memory and an interpreter. The memory is used to store data and programs, while the interpreter is the component that executes the instructions included in programs.[9]

The structure of an abstract machine

The interpreter must carry out the operations that are unique to the language it is interpreting. However, given the variety of languages, it is conceivable to identify categories of operations and an "execution mechanism" shared by all interpreters. The interpreter's operations and accompanying data structures are divided into the following categories:[9][20]

  1. Operations for processing primitive data:
  2. Operations and data structures for controlling the sequence of execution of operations;
  3. Operations and data structures for controlling data transfers;
  4. Operations and data structures for memory management.

Processing primitive data

[edit]

An abstract machine must contain operations for manipulating primitive data types such as strings and integers.[9] For example, integers are nearly universally considered a basic data type for both physical abstract machines and the abstract machines used by many programming languages. The machine carries out the arithmetic operations necessary, such as addition and multiplication, within a single time step.[21]

Sequence control

[edit]

Operations and structures for "sequence control" allow controlling the execution flow of program instructions. When certain conditions are met, it is necessary to change the typical sequential execution of a program.[9] Therefore, the interpreter employs data structures (such as those used to store the address of the next instruction to execute) that are modified by operations distinct from those used for data manipulation (for example, operations to update the address of the next instruction to execute).[22]

Controlling data transfers

[edit]

Data transfer operations are used to control how operands and data are transported from memory to the interpreter and vice versa. These operations deal with the store and the retrieval order of operands from the store.[9]

Memory management

[edit]

Memory management is concerned with the operations performed in memory to allocate data and applications. In the abstract machine, data and programmes can be held indefinitely, or in the case of programming languages, memory can be allocated or deallocated using a more complex mechanism.[9]

Hierarchies

[edit]
A hierarchy of abstract machines

Abstract machine hierarchies are often employed, in which each machine uses the functionality of the level immediately below and adds additional functionality of its own to meet the level immediately above. A hardware computer, constructed with physical electronic devices, can be added at the most basic level. Above this level, the abstract microprogrammed machine level may be introduced. The abstract machine supplied by the operating system, which is implemented by a program written in machine language, is located immediately above (or directly above the hardware if the firmware level is not there). On the one hand, the operating system extends the capability of the physical machine by providing higher-level primitives that are not available on the physical machine (for example, primitives that act on files). The host machine is formed by the abstract machine given by the operating system, on which a high-level programming language is implemented using an intermediary machine, such as the Java Virtual machine and its byte code language. The level given by the abstract machine for the high-level language (for example, Java) is not usually the final level of hierarchy. At this point, one or more applications that deliver additional services together may be introduced. A "web machine" level, for example, can be added to implement the functionalities necessary to handle Web communications (communications protocols or HTML code presentation). The "Web Service" level is located above this, and it provides the functionalities necessary to make web services communicate, both in terms of interaction protocols and the behaviour of the processes involved. At this level, entirely new languages that specify the behaviour of so-called "business processes" based on Web services may be developed (an example is the Business Process Execution Language). Finally, a specialised application can be found at the highest level (for example, E-commerce) which has very specific and limited functionality.[9]

See also

[edit]

References

[edit]
  1. ^ Weisstein, Eric W. "Abstract Machine". mathworld.wolfram.com. Retrieved 2025-08-05.
  2. ^ a b c d e f "What is an Abstract Machine?". EasyTechJunkie. Retrieved 2025-08-05.
  3. ^ a b c d e f g h i j Diehl, Stephan; Hartel, Pieter; Sestoft, Peter (May 2000). "Abstract machines for programming language implementation". Future Generation Computer Systems. 16 (7): 739–751. doi:10.1016/S0167-739X(99)00088-6.
  4. ^ "9.1.1: Finite-State Machine Overview". Engineering LibreTexts. 2025-08-05. Retrieved 2025-08-05.
  5. ^ "What is Deterministic System? - Definition from Techopedia". Techopedia.com. 29 August 2019. Retrieved 2025-08-05.
  6. ^ Stearns, Richard E. (January 2003). "Deterministic versus nondeterministic time and lower bound problems". Journal of the ACM. 50 (1): 91–95. doi:10.1145/602382.602409. ISSN 0004-5411. S2CID 2194820.
  7. ^ Armoni, Michal; Gal-Ezer, Judith (December 2007). "Non-determinism: An abstract concept in computer science studies". Computer Science Education. 17 (4): 243–262. Bibcode:2007CSEd...17..243A. doi:10.1080/08993400701442885. ISSN 0899-3408. S2CID 41928460.
  8. ^ Gill, John (December 1977). "Computational Complexity of Probabilistic Turing Machines". SIAM Journal on Computing. 6 (4): 675–695. doi:10.1137/0206049. ISSN 0097-5397.
  9. ^ a b c d e f g h i j k l m Gabbrielli, Maurizio; Martini, Simone (2010), "Abstract Machines", Programming Languages: Principles and Paradigms, London: Springer London, pp. 1–25, doi:10.1007/978-1-84882-914-5_1, ISBN 978-1-84882-913-8, retrieved 2025-08-05
  10. ^ Bair, Ray; Chien, Andrew; Cook, Jeanine; Donofrio, Dave; Grider, Gary; Kuehn, Jeff; Moore, Shirley; Shalf, John; Vetter, Jeff (2025-08-05). Hardware Evaluation: Abstract Machine Models and Proxy Architectures for Exascale Computing (Technical report). U.S. Department of Energy Office of Scientific and Technical Information. doi:10.2172/1733300. OSTI 1733300.
  11. ^ "abstract machine from FOLDOC". foldoc.org. Retrieved 2025-08-05.
  12. ^ Gee, J.; Melvin, S. W.; Patt, Y. N. (1986). "The implementation of Prolog via VAX 8600 microcode". Proceedings of the 19th annual workshop on Microprogramming. New York, New York, USA: ACM Press. pp. 68–74. doi:10.1145/19551.19538. ISBN 081860736X. S2CID 3846072.
  13. ^ "abstract machine". Oxford Reference. Retrieved 2025-08-05.
  14. ^ García-Martín, Julio Manuel; Sutil-Martin, Miguel (August 15, 1999). "The Abstract Machine: A Pattern for Designing Abstract Machines" (PDF). Proceedings of Pattern Languages of Programs '99.
  15. ^ upscfever.com (2025-08-05). "Computer Organization and Architecture (Stack Organization) - UPSC FEVER". upscfever.com. Retrieved 2025-08-05.
  16. ^ "What is Object-Oriented Programming (OOP)?". SearchAppArchitecture. Retrieved 2025-08-05.
  17. ^ "Design considerations for string processing languages", A Study in String Processing Languages, Lecture Notes in Computer Science, vol. 205, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 17–37, 1985, doi:10.1007/3-540-16041-8_2, ISBN 978-3-540-16041-0, retrieved 2025-08-05
  18. ^ Hackett, Jennifer; Hutton, Graham (2025-08-05). "Call-by-need is clairvoyant call-by-value". Proceedings of the ACM on Programming Languages. 3 (ICFP): 1–23. doi:10.1145/3341718. ISSN 2475-1421. S2CID 195782686.
  19. ^ "Prolog | An Introduction". GeeksforGeeks. 2025-08-05. Retrieved 2025-08-05.
  20. ^ Accattoli, Beniamino; Barenbaum, Pablo; Mazza, Damiano (2025-08-05). "Distilling abstract machines". ACM SIGPLAN Notices. 49 (9): 363–376. doi:10.1145/2692915.2628154. ISSN 0362-1340. S2CID 234775413.
  21. ^ baeldung (2025-08-05). "Introduction to Java Primitives | Baeldung". www.baeldung.com. Retrieved 2025-08-05.
  22. ^ Kuchana, Partha (2004), "Interpreter", Software Architecture Design Patterns in Java, Auerbach Publications, doi:10.1201/9780203496213, ISBN 978-0-8493-2142-9

Further reading

[edit]
  • Peter van Emde Boas, Machine Models and Simulations pp. 3–66, appearing in:
Jan van Leeuwen, ed. "Handbook of Theoretical Computer Science. Volume A: Algorithms and Complexity, The MIT PRESS/Elsevier, 1990. ISBN 0-444-88071-2 (volume A). QA 76.H279 1990
眉心长痘痘什么原因 尿隐血弱阳性是什么意思 逼格什么意思 ca是什么意思 双氧水又叫什么名字
老是掉头发是什么原因 祛风是什么意思 dan什么意思 爱出汗什么原因 低密度脂蛋白胆固醇偏高是什么意思
四月二十五是什么星座 女生喜欢男生什么行为 生不逢时什么意思 26岁属什么的生肖 高血压饮食上注意什么
滥竽充数的充是什么意思 肤色黑穿什么颜色 6月26是什么星座 右肺上叶为什么恶性多 绿茶有什么功效
开窍是什么意思mmeoe.com 雅诗兰黛属于什么档次hcv9jop1ns6r.cn 大腿根部痒是什么原因beikeqingting.com 眉目比喻什么hcv8jop0ns8r.cn 为什么睡觉会张嘴wuhaiwuya.com
痣是什么hcv9jop1ns2r.cn 头发偏黄是什么原因hcv9jop1ns6r.cn 蓝莓树长什么样clwhiglsz.com 醛固酮高吃什么降压药0735v.com 外阴白斑是什么症状hcv7jop9ns4r.cn
卵巢筛查要做什么检查hcv9jop4ns4r.cn 手脚软无力是什么原因引起的hcv8jop7ns6r.cn 狗翻肠子什么症状hcv8jop1ns9r.cn 喉咙干痒是什么原因hcv8jop3ns2r.cn 水嘴是什么hcv7jop5ns0r.cn
彬字五行属什么hcv9jop3ns5r.cn 强直性脊柱炎什么症状hcv9jop4ns4r.cn 嗓子疼吃什么药见效最快hcv8jop1ns6r.cn 开口腔诊所需要什么条件hcv8jop1ns8r.cn 今天农历什么日子jingluanji.com
百度