Efficient Polymorphic Calls

┬╖ The Springer International Series in Engineering and Computer Science рдкреБрд╕реНрддрдХ 596 ┬╖ Springer Science & Business Media
рдИ-рдкреБрд╕реНрддрдХ
216
рдкреЗрдЬ
рд░реЗрдЯрд┐рдВрдЧ рдЖрдгрд┐ рдкрд░реАрдХреНрд╖рдгреЗ рдпрд╛рдВрдЪреА рдкрдбрддрд╛рд│рдгреА рдХреЗрд▓реЗрд▓реА рдирд╛рд╣реА ┬ардЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛

рдпрд╛ рдИ-рдкреБрд╕реНрддрдХрд╛рд╡рд┐рд╖рдпреА

The implementation of object-oriented languages has been an active topic of research since the 1960s when the first Simula compiler was written. The topic received renewed interest in the early 1980s with the growing popularity of object-oriented programming languages such as c++ and Smalltalk, and got another boost with the advent of Java. Polymorphic calls are at the heart of object-oriented languages, and even the first implementation of Simula-67 contained their classic implementation via virtual function tables. In fact, virtual function tables predate even Simula-for example, Ivan Sutherland's Sketchpad drawing editor employed very similar structures in 1960. Similarly, during the 1970s and 1980s the implementers of Smalltalk systems spent considerable efforts on implementing polymorphic calls for this dynamically typed language where virtual function tables could not be used. Given this long history of research into the implementation of polymorphic calls, and the relatively mature standing it achieved over time, why, one might ask, should there be a new book in this field? The answer is simple. Both software and hardware have changed considerably in recent years, to the point where many assumptions underlying the original work in this field are no longer true. In particular, virtual function tables are no longer sufficient to implement polymorphic calls even for statically typed languages; for example, Java's interface calls cannot be implemented this way. Furthermore, today's processors are deeply pipelined and can execute instructions out-of order, making it difficult to predict the execution time of even simple code sequences.

рдпрд╛ рдИ-рдкреБрд╕реНрддрдХрд▓рд╛ рд░реЗрдЯрд┐рдВрдЧ рджреНрдпрд╛

рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рд╡рд╛рдЯрддреЗ рддреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧрд╛.

рд╡рд╛рдЪрди рдорд╛рд╣рд┐рддреА

рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдЖрдгрд┐ рдЯреЕрдмрд▓реЗрдЯ
Android рдЖрдгрд┐ iPad/iPhone рд╕рд╛рдареА Google Play рдмреБрдХ рдЕтАНреЕрдк рдЗрдВрд╕реНтАНрдЯреЙрд▓ рдХрд░рд╛. рд╣реЗ рддреБрдордЪреНтАНрдпрд╛ рдЦрд╛рддреНтАНрдпрд╛рдиреЗ рдЖрдкреЛрдЖрдк рд╕рд┐рдВрдХ рд╣реЛрддреЗ рдЖрдгрд┐ рддреБрдореНтАНрд╣реА рдЬреЗрдереЗ рдХреБрдареЗ рдЕрд╕рд╛рд▓ рддреЗрдереВрди рддреБрдореНтАНрд╣рд╛рд▓рд╛ рдСрдирд▓рд╛рдЗрди рдХрд┐рдВрд╡рд╛ рдСрдлрд▓рд╛рдЗрди рд╡рд╛рдЪрдгреНтАНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рджреЗрддреЗ.
рд▓реЕрдкрдЯреЙрдк рдЖрдгрд┐ рдХреЙрдВрдкреНрдпреБрдЯрд░
рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдХрд╛рдБрдкреНрдпреБрдЯрд░рдЪрд╛ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЭрд░ рд╡рд╛рдкрд░реВрди Google Play рд╡рд░ рдЦрд░реЗрджреА рдХреЗрд▓реЗрд▓реА рдСрдбрд┐рдУрдмреБрдХ рдРрдХреВ рд╢рдХрддрд╛.
рдИрд╡рд╛рдЪрдХ рдЖрдгрд┐ рдЗрддрд░ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕
Kobo eReaders рд╕рд╛рд░рдЦреНрдпрд╛ рдИ-рдЗрдВрдХ рдбрд┐рд╡реНтАНрд╣рд╛рдЗрд╕рд╡рд░ рд╡рд╛рдЪрдгреНтАНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдПрдЦрд╛рджреА рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВрди рддреА рддреБрдордЪреНтАНрдпрд╛ рдбрд┐рд╡реНтАНрд╣рд╛рдЗрд╕рд╡рд░ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╕рдкреЛрд░реНрдЯ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ eReaders рд╡рд░ рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдорджрдд рдХреЗрдВрджреНрд░ рдордзреАрд▓ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╕реВрдЪрдирд╛ рдлреЙрд▓реЛ рдХрд░рд╛.

рдорд╛рд▓рд┐рдХрд╛ рд╕реБрд░реВ рдареЗрд╡рд╛

рдпрд╛рдВрд╕рд╛рд░рдЦреА рдИ-рдкреБрд╕реНтАНрддрдХреЗ