LLST: рд▓рд┐рдЯрд┐рд▓ рд╕реНрдорд╛рд▓рдЯрд╛рдХ рдХрд╛ рдирдпрд╛ рдЬреАрд╡рди


рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рджреБрдирд┐рдпрд╛ рдХреЗ рдЕрдВрдд рдФрд░ рдЖрдЧрд╛рдореА рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде :)
рдУрдкрди рд╕реЛрд░реНрд╕ рд╕рдореБрджрд╛рдп рдХреЛ рдЙрдкрд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рд╛рде рд╣реА рдкреНрд░рд╛рдЪреАрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ (рд╕рд╛рдереА рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░) рдЕрдкрдиреЗ рдирдП рдЕрдиреБрд╕рдВрдзрд╛рди рд╡рд┐рдХрд╛рд╕ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╣рдо рд▓рд┐рдЯрд┐рд▓ рд╕реНрдорд╛рд▓рдЯрд╛рдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ C ++ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВред рдлрд┐рд▓рд╣рд╛рд▓, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛрдб рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореВрд▓ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡реНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдВрдмрдЧ рдиреЗ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓рд┐рдЦреА, рдЬрд┐рд╕рдиреЗ рдлрд┐рд░ рднреА рд╡реАрдПрдо рдХреЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреАред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╛рдВрдЪрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдореВрд▓ рдПрд▓рдПрд╕рдЯреА рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рдВрдЧрдд рд╣реИред

рдПрдХ рдорд╣реАрдиреЗ рдХрд╛ рдХрд╛рдо, 300+ рдХрдорд┐рдЯ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ, рдЖрдк рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ?


рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рд╕реЗ рд╕реНрдорд╛рд▓рдЯрд╛рдХ рдкрд╕рдВрдж рдерд╛ред рдЙрдирдХреА рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рд╛рджрдЧреА (рдореБрдЭреЗ рдорд╛рдл рдХрд░ рджреЛ, рд▓рд┐рд╕реНрдкрд░реНрд╕ рдФрд░ рдлреЛрд░реНрд╕) рдФрд░ рдХреЛрдИ рдХрдо рдЪрд┐рдХрд┐рддреНрд╕рдХреАрдп рд╡реНрдпрд╛рдкрдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдирд╣реАрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реЛрдВ рдХреЗ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд░реВрдк рд╕реЗ рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ 21 рд╡реАрдВ рд╢рддрд╛рдмреНрджреА рдореЗрдВ, рдЗрд╕рдХрд╛ рдмрд╣реБрдд рд▓рд╛рдн рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореМрдЬреВрджрд╛ рдФрджреНрдпреЛрдЧрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рдкрд░рд┐рдЪрд┐рдд рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмреЛрдЭрд┐рд▓ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд░реВрдкреЛрдВ рдХреА рд╕реБрдВрджрд░рддрд╛ рдХреЗ рд╕рд╛рде рдЪрдордХ рдирд╣реАрдВ рд╣реИред рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХрдкрдбрд╝реЗ рд╕реЗред рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рджреЗрдЦрд╛ рдерд╛, рдЗрд╕реЗ рдХреБрдЫ рдЖрдзреБрдирд┐рдХ рдФрд░ рдЕрднрд┐рдирд╡ рдорд╛рдирдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рд▓рд┐рдЯрд┐рд▓ рд╕реНрдореЙрд▓рдЯреЙрдХ рдПрдХ рджреЛ рдШрдВрдЯреЗ рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдпрд╣ рдПрдХ рдкреВрд░реНрдг-рд▓рдШреБ Smalltalk рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ Smalltalk-80 рдпрд╛ ANSI-92 рдорд╛рдирдХреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рддрдХрдиреАрдХреА рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдХреНрд╖рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рдЕрдЪреНрдЫреА рдорджрдж рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдУрдУрдкреА рдХреЗ рдЕрдзреНрдпрдпрди рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди, рдмрд╣реБрд░реВрдкрддрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рдХрдИ рдорд┐рддреНрд░ рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдореЗрдВ рдЙрд▓рдЭреЗ рд╣реБрдП рдереЗ рдпрд╛ рдЙрдирдХреЗ рдореВрд▓ рдЕрд░реНрде рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рдереЗред рд╣рд╛рде рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЙрдкрдХрд░рдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, 10 рдорд┐рдирдЯ рдореЗрдВ рдЖрдк рд╕рдЪрдореБрдЪ "рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░" рдУрдУрдкреА рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рддрдВрддреНрд░ рдХреЛ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпреЗ рд╕рд┐рджреНрдзрд╛рдВрдд "рджреВрд░ рдХреА рдХреМрдбрд╝реА" рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ, рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдХрд╛рдлреА рдордЬрд╝реЗрджрд╛рд░ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдкрдиреЗ рджрдо рдкрд░ рдФрд░ 100 рдХреЗрдмреА рдореЗрдВ, рдЬреЛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди, рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдПрдХ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдлрд┐рдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдмрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдкреЛрд╕реНрдЯ рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рдлреА рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рдмрд╛рдд рдХрд░реЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░,

рд▓рдХреНрд╖реНрдп # 1 рдирдпрд╛ рд╡реАрдПрдо (рдкреНрд░рд╛рдкреНрдд)ред


C ++ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдХреЛрдб рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ, рдореВрд▓ рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рджреЛрд╖реЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ, рдХреЛрдб рдХреЛ рдЯрд┐рдкреНрдкрдгреА рджреЗрдВ, рдЗрд╕реЗ рдкрдардиреАрдп рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореВрд▓ рдХреЛрдб рдпрд╛ рддреЛ рднрд╛рд░рддреАрдп рдЫрд╛рддреНрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╛ рдХрд┐рд╕реА рдФрд░ рджреНрд╡рд╛рд░рд╛ред рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╢реИрдХреНрд╖рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реЛрдирд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдШреБ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдХреЛ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдЧреЛрдЯреЛ рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдЫрд┐рдбрд╝рдХреЗ рдЧрдП рдПрдХ рд╣рдЬрд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдмреНрд▓реЙрдХ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рдВрдЪ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдЪрд░ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ ... рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдордЬреЗрджрд╛рд░ред рд╕рд╛рде рд╣реА, рдкреВрд░реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдбреЗрдврд╝ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд▓реИрдВрдбрд╢рдЯреНрд╕ рд╢реИрд▓реА рдореЗрдВ рд╣реИрдВ, рдЗрд╕ рд░реВрдк рдореЗрдВ: "рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ ..."ред

рдмреЗрд╢рдХ, рдЙрд╕ рддрд░рд╣ рд╕реЗ рдЬреАрдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░, рдЧреНрд░реЗрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ, рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА, рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдвреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рд╡рд╕реНрддреБ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХреЗрдВред рдЕрдм рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдирд┐рдпрдорд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ C ++ рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рд╕рднреА рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдЙрдЪрд┐рдд рд╢реБрд░реБрдЖрдд рдЕрдм рд╕рдВрдХрд▓рдХ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рд╣реЛрддреА рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдУрдкрдХреЛрдб рдирдВрдмрд░ 12 "рдкреБрд╢рдмреНрд▓реЙрдХ" рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рджреВрдВрдЧрд╛ред

рддреЛ рдпрд╣ рдерд╛ (рд╕реНрд╡рд░реВрдкрдг рдФрд░ рд▓реЗрдЦрдХ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╕рд╣реЗрдЬреА рдЧрдИ):
case PushBlock: DBG0("PushBlock"); /* create a block object */ /* low is arg location */ /* next byte is goto value */ high = VAL; bytePointer += VALSIZE; rootStack[rootTop++] = context; op = rootStack[rootTop++] = gcalloc(x = integerValue(method->data[stackSizeInMethod])); op->class = ArrayClass; memoryClear(bytePtr(op), x * BytesPerWord); returnedValue = gcalloc(blockSize); returnedValue->class = BlockClass; returnedValue->data[bytePointerInContext] = returnedValue->data[stackTopInBlock] = returnedValue->data[previousContextInBlock] = NULL; returnedValue->data[bytePointerInBlock] = newInteger(bytePointer); returnedValue->data[argumentLocationInBlock] = newInteger(low); returnedValue->data[stackInBlock] = rootStack[--rootTop]; context = rootStack[--rootTop]; if(CLASS(context) == BlockClass) { returnedValue->data[creatingContextInBlock] = context->data[creatingContextInBlock]; } else { returnedValue->data[creatingContextInBlock] = context; } method = returnedValue->data[methodInBlock] = context->data[methodInBlock]; arguments = returnedValue->data[argumentsInBlock] = context->data[argumentsInBlock]; temporaries = returnedValue->data[temporariesInBlock] = context->data[temporariesInBlock]; stack = context->data[stackInContext]; bp = bytePtr(method->data[byteCodesInMethod]); stack->data[stackTop++] = returnedValue; /* zero these out just in case GC occurred */ literals = instanceVariables = 0; bytePointer = high; break; 

рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрди рдЧрдпрд╛:
 void SmalltalkVM::doPushBlock(TVMExecutionContext& ec) { hptr<TByteObject> byteCodes = newPointer(ec.currentContext->method->byteCodes); hptr<TObjectArray> stack = newPointer(ec.currentContext->stack); // Block objects are usually inlined in the wrapping method code // pushBlock operation creates a block object initialized // with the proper bytecode, stack, arguments and the wrapping context. // Blocks are not executed directly. Instead they should be invoked // by sending them a 'value' method. Thus, all we need to do here is initialize // the block object and then skip the block body by incrementing the bytePointer // to the block's bytecode' size. After that bytePointer will point to the place // right after the block's body. There we'll probably find the actual invoking code // such as sendMessage to a receiver (with our block as a parameter) or something similar. // Reading new byte pointer that points to the code right after the inline block uint16_t newBytePointer = byteCodes[ec.bytePointer] | (byteCodes[ec.bytePointer+1] << 8); // Skipping the newBytePointer's data ec.bytePointer += 2; // Creating block object hptr<TBlock> newBlock = newObject<TBlock>(); // Allocating block's stack uint32_t stackSize = getIntegerValue(ec.currentContext->method->stackSize); newBlock->stack = newObject<TObjectArray>(stackSize, false); newBlock->argumentLocation = newInteger(ec.instruction.low); newBlock->blockBytePointer = newInteger(ec.bytePointer); // Assigning creatingContext depending on the hierarchy // Nested blocks inherit the outer creating context if (ec.currentContext->getClass() == globals.blockClass) newBlock->creatingContext = ec.currentContext.cast<TBlock>()->creatingContext; else newBlock->creatingContext = ec.currentContext; // Inheriting the context objects newBlock->method = ec.currentContext->method; newBlock->arguments = ec.currentContext->arguments; newBlock->temporaries = ec.currentContext->temporaries; // Setting the execution point to a place right after the inlined block, // leaving the block object on top of the stack: ec.bytePointer = newBytePointer; stack[ec.stackTop++] = newBlock; } 

рдФрд░ рд▓рдЧрднрдЧ рд╕рднреА рдХреЛрдб рдХреЗ рд╕рд╛рде рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИред рдкрдардиреАрдпрддрд╛, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдереЛрдбрд╝реА рдЧрд┐рд░рд╛рд╡рдЯ рдХреА рдХреАрдордд рдкрд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдЕрднреА рддрдХ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИред рд╕рд╛рде рд╣реА, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд▓реЗрд╕реНрдЯ рдлреЛрд░реНрдХ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЕрдзрд┐рдХ рд╣реИред

рд▓рдХреНрд╖реНрдп рд╕рдВрдЦреНрдпрд╛ реиред рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдгред


рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдХреЗ рд▓рд┐рдП рдЬреЗрдЖрдИрдЯреА рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреА рдЙрдЪреНрдЪ рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА рдХреЗ рдХрд╛рд░рдг рдЕрдиреБрддреНрдкрд╛рджрдХ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ JIT рдХреЛрдб рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ "рд╢рд╛рдмреНрджрд┐рдХ" рдЕрдиреБрд╡рд╛рдж рд╣реИред

рдПрд▓рдПрд▓рд╡реАрдПрдо, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреЗрдЖрдИрдЯреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЛ "рд╕рдордЭрд╛рдирд╛" рд╣реИ рдЬрд┐рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ "рд╢рддреНрд░реБрддрд╛рдкреВрд░реНрдг" рд╡рд╛рддрд╛рд╡рд░рдг (рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЫреЛрдЯреЗ рддрд░реАрдХреЗ, рд╕реБрдкрд░-рд▓реЗрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ, рдЖрджрд┐) рдореЗрдВ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдЧрд▓рд╛ рдкреНрд░рдореБрдЦ рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕реЗ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред LLVM рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╣реИ ред

рд▓рдХреНрд╖реНрдп рд╕рдВрдЦреНрдпрд╛ 3ред рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢реЛрдз рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рд╡реАрдПрдо рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рд╕рд┐рд╕реНрдЯрдо рдХрдВрдЯреНрд░реЛрд▓ рдореЙрдбреНрдпреВрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдПрдХ рдФрд░ рд╣реИрдмрд░рдореИрди ( рдбреНрд░реЛрди ) рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрддрд┐рд╣рд╛рд╕ рдЗрд╕рдХреЗ рд╕рдлрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЬрд╛рдирддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЗрдХреНрдЯреНрд░реЛрдирд┐рдХреНрд╕ TDS 500 рд╢реНрд░реГрдВрдЦрд▓рд╛ osprey рдСрд╕реАрд▓реЛрд╕реНрдХреЛрдк рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╕реНрдорд╛рд▓рдЯрд╛рдХ (рдЪрд┐рддреНрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред

рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдмреЛрд░реНрдб рдкрд░ MC68020 + DSP рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИред рдирд┐рдпрдВрддреНрд░рдг рдХреЛрдб рд╕реНрдореЙрд▓рдЯрд╛рдХ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдбред рдЫрд╡рд┐ рдореЗрдВ рд▓рдЧрднрдЧ 250 рд╡рд░реНрдЧ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ ROM рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП 64 KB рд╕реЗ рдХрдо DRAM рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрдкрдпреЛрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рдХрдИ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреЗрддрд╛рд╡рдиреА! рдЯреНрд╡рд┐рд╕реНрдЯрд┐рдВрдЧ рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдХреЙрдорд┐рдХ рд╕рдВрд╕ рдПрдо.рдПрд╕.

рд▓рдХреНрд╖реНрдп рд╕рдВрдЦреНрдпрд╛ 4ред рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд╕реНрдореЙрд▓рдЯреЙрдХ "рдорд╛рдирд╡ рдЪреЗрд╣рд░реЗ рдХреЗ рд╕рд╛рде" рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


80 рдХреЗ рджрд╢рдХ рдореЗрдВ рдЬрд╝реЗрд░реЙрдХреНрд╕ PARC рд▓реИрдм рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓рди рдХреЗ рдиреЗ рд╕реНрдореЙрд▓рдЯрд╛рдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдмрд╛рдд рдХреА рдиреАрдВрд╡ рд░рдЦреА рдХрд┐ рдЕрдм рд╣рдо рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗрд╡рд▓ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдЖрдИрдбреАрдИ рдореЗрдВ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрди рд╡рд┐рдХрд╛рд╕реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд┐рд╕рд╛ рдФрд░ рдордХрд┐рдВрдЯреЛрд╢ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рдФрд░ рдлреБрд░реНрддреАрд▓реЗ рд╕рд╛рдереА рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдм рдХрдИ рд▓реЛрдЧ "рдЬреАрдпреВрдЖрдИ рдХреЗ рдкрд┐рддрд╛" рдФрд░ рдкреАрд╕реА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд╣рддреЗ рд╣реИрдВред

рд╣рд░реНрд╖ рд╡рд┐рдЬреБрдЕрд▓рдПрдЬ рдХрдареЛрд░ (рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп) рд╣реИ

рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдореЙрд▓рдЯрд╛рдХ рд╣рдореЗрд╢рд╛ рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд╡рд░реНрдЧ-рдиреЗрд╕реНрдЯреЗрдб рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореЛрдЯрд┐рдл рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЧрдВрднреАрд░рддрд╛ рдиреЗ рдХрднреА рдЕрдкреАрд▓ рдирд╣реАрдВ рдХреАред

рдЖрдЬ, рдЧреНрд░рд╛рд╣рдХ "рдЧреАрд▓реЗ рдлрд░реНрд╢" рдФрд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреЗ рдЖрджреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдЫреБрдЖ рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде "рдкреНрд░реЛрдлреЗрд╕рдирд▓" рдЪрд╢реНрдореЗ рдореЗрдВ рдХреЗрд╡рд▓ Nerds рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдореЙрд▓рдЯрд╛рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рдЕрдЧрд░ рдХреЗрд╡рд▓ рдЧреНрд░рд╛рд╣рдХ рд╕реНрд╡рдпрдВ рдРрд╕реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рдбреЙрд▓реНрдлрд┐рди


рд▓рдЧрднрдЧ рдПрдХрдорд╛рддреНрд░ рд╕реНрдХреНрд╡реАрдХ, рдлреЗрд░реЛ рдФрд░ рдЕрдиреНрдп рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдЬ рдЬреЛ рдкрддрд▓рд╛ рд░реИрдВрдХреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рдбреЙрд▓реНрдлрд┐рди рд╕реНрдореЙрд▓рдЯреЙрдХ рд╣реИ , рдЬреЛ рд╢реБрд░реВ рдореЗрдВ рдУрдПрд╕ рдХреЗ рд╕рд╛рде рддрдВрдЧ рдПрдХреАрдХрд░рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рдерд╛ред

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕рдореБрджрд╛рдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрдВрдЧ рдЦрд╛рдП рдХрддрд░рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рдЕрдЪреНрдЫрд╛, рд╡реИрд╕реЗ), рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦрдирд╛, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреЗрдЬ рджреЗрд╢реА рд╡рд┐рдЬреЗрдЯ, рдкрд╛рд░рджрд░реНрд╢реА WinAPI рдХреЙрд▓ рдФрд░ рд╢реВрдиреНрдп рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рд╣реИред рдЙрддреНрдХреГрд╖реНрдЯ рд╡рд┐рдХрд╛рд╕, рдЬреЛ рд╡реЗ рд╡рд┐рддреНрддреАрдп рдХрдмреНрдЬреЗ рдХреЗ рдЦрд╛рдИ рд╕реЗ рдЬрдВрдЧрд▓реА рдореЗрдВ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдПрд▓рдПрд▓рдПрд╕рдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдХреНрдпреВрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдПрдХреАрдХрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рднреА рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдФрджреНрдпреЛрдЧрд┐рдХ рд╕реНрдорд╛рд▓рдЯрд╛рдХ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрд░реЛрдд рдХрд╣рд╛рдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?


рдЪреВрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдЬрдЧрд╣ рдХреЛ рдкрдврд╝рд╛ рд╣реИ (рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЕрджреНрднреБрдд рд╣реИ!), рдЖрдк рд╢рд╛рдпрдж рд╕реНрд░реЛрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ! рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореБрдЦреНрдп рдХрд╛рдордХрд╛рдЬреА рднрдВрдбрд╛рд░ рдХреЛ рдмрд┐рдЯрдмреБрдХреЗрдЯ рдЬреАрдереВрдм рдкрд░ github.com/0x7CFE/llst ( llst.org рдбреЛрдореЗрди рднреА рд╡рд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ ) рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдиреЛрдЯ 1: рдЗрд╕рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдХреЛрдб рдХреЛ 32-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, x64 рдкрд░ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ 32 рдмрд┐рдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ( ia32-libs рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ ia32-libs ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде g++-multilib ред
 sudo apt-get install ia32-libs g++-multilib 

рдиреЛрдЯ 2: рдЬреЛ рдХреЛрдИ рднреА рд╕рдВрдХрд▓рди рд╕реЗ рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд╡рд╣ рд░рд┐рд▓реАрдЬрд╝ рдкреЗрдЬ рдкрд░ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рд╕реНрдЯреИрдЯрд┐рдХрд▓реА рдЕрд╕реЗрдВрдмрд▓ рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред

UPD: рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЗ рдЙрдкрдпреЛрдЧ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдирдП рдмрд┐рд▓реНрдб рдирд┐рдпрдореЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ ( рдПрд▓рдПрд▓рд╡реАрдПрдо рдЕрдиреБрднрд╛рдЧ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВ)ред

рдЗрд╕ рддрд░рд╣ рд▓реАрдЬрд┐рдП:
 ~ $ git clone https://github.com/0x7CFE/llst.git ~ $ cd llst ~/llst $ mkdir build && cd build ~/llst/build $ cmake .. ~/llst/build $ make llst 

рд╕рд╣реА рдЪрд╛рдБрдж рдЪрд░рдг рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рднрд╛рдЧреНрдп рдХреЗ рд╕рд╛рде, llst рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрд┐рд▓реНрдб рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
 build$ ./llst 

рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
рдХрдИ рдмреАрдЪреЗрд╕
  рдЪрд┐рддреНрд░ рдкреВрд░рд╛ рдкрдврд╝рд╛ред  4678 рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЛрдб рдХрд┐рдП рдЧрдП

 рддреБрд▓рдирд╛ рдХрд░рдирд╛
 рдмрд░рд╛рдмрд░ (1) рдареАрдХ рд╣реИ
 рдмрд░рд╛рдмрд░ (2) рдареАрдХ рд╣реИ
 рдЕрдзрд┐рдХ (int int) рдареАрдХ рд╣реИ
 рдЕрдзрд┐рдХ (int рдкреНрд░рддреАрдХ) ERROR

 рд╕рдЪ (рд╡рд░реНрдЧ рд╕рдЪ): asmallInt рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИ
 рд╡реАрдПрдо: рд╕рдВрджрд░реНрдн 0xf728d8a4 рдкрд░ рддреНрд░реБрдЯрд┐ рдЬрд╛рд▓

 рдкрд╢реНрд╡-рдЕрдиреБрд░реЗрдЦрди:
 рддреНрд░реБрдЯрд┐: (рд╕рдЪ, рд╕реНрдЯреНрд░рд┐рдВрдЧ)
 doNotUnderstand: (рд╕рдЪ, рдкреНрд░рддреАрдХ)
 = (рд╕реНрдореЙрд▓рдЖрдИрдВрдЯ, рдЯреНрд░реВ)
 assertEq: withComment: (рдмреНрд▓реЙрдХ, рдЯреНрд░реВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ)
 рджрд╛рд╡рд╛: (рдмреНрд▓реЙрдХ, рд╕реНрдЯреНрд░рд┐рдВрдЧ)
 рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ (рддреБрд▓рдирд╛)

 рдХрдо (int int) рдареАрдХ рд╣реИ
 рдХрдо (рдкреНрд░рддреАрдХ int) рдареАрдХ рд╣реИ
 nilEqNil рдареАрдХ рд╣реИ
 nilIsNil рдареАрдХ рд╣реИ

 рд░рдирд┐рдВрдЧ рд╕реНрдорд╛рд▓рдЗрдВрдЯрдЯреЗрд╕реНрдЯ
 рдареАрдХ рдЬреЛрдбрд╝реЗрдВ
 рдареАрдХ рд╣реИ
 mul рдареАрдХ рд╣реИ
 рдЙрдкреЗрдХреНрд╖рд┐рдд (1) рдареАрдХ рд╣реИ
 рдЙрдкреЗрдХреНрд╖рд┐рдд (2) рдареАрдХ рд╣реИ
 рдирдХрд╛рд░рд╛рддреНрдордХ (1) рдареАрдХ рд╣реИ
 рдирдХрд╛рд░рд╛рддреНрдордХ (2) рдареАрдХ рд╣реИ
 quo (1) рдареАрдХ рд╣реИ
 quo (2) рдареАрдХ рд╣реИ
 рд╕рдм рдареАрдХ рд╣реИ

 рд▓реВрдкрд╕реНрдЯреЗрд╕реНрдЯ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
 рд▓реВрдкрдХрд╛рдЙрдВрдЯ рдареАрдХ рд╣реИ
 рдпреЛрдЧ рдареАрдХ рд╣реИ
 рдареАрдХ рд╣реИ

 рд░рдирд┐рдВрдЧ рдХреНрд▓рд╛рд╕рдЯреЗрд╕реНрдЯ
 className (1) рдареАрдХ рд╣реИ
 className (2) рдареАрдХ рд╣реИ
 SendSuper рдареАрдХ рд╣реИ

 рдЪрд▓ рд░рд╣рд╛ рд╣реИ MethodLookupTest
 newline (рдЪрд╛рд░) рдареАрдХ рд╣реИ
 newline (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдареАрдХ рд╣реИ
 parentModods (1) рдареАрдХ рд╣реИ
 parentModods (2) рдареАрдХ рд╣реИ

 рд╕реНрдЯреНрд░реЗрдВрдЬрдЯреЗрд╕реНрдЯ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
 asNumber рдареАрдХ рд╣реИ
 asSymbol рдареАрдХ рд╣реИ
 (рдЪ) рдареАрдХ рд╣реИ
 рдкрд░ (рдУ) рдареАрдХ рд╣реИ
 рдкрд░ (рдПрдХреНрд╕) рдареАрдХ рд╣реИ
 at (b) рдареАрдХ рд╣реИ
 at (A) рдареАрдХ рд╣реИ
 at (r) рдареАрдХ рд╣реИ
 рдХреЙрдкреА рдУрдХреЗ рдХрд░реЗрдВ
 indexOf рдареАрдХ рд╣реИ
 рд▓реЛрдЕрд░рдХреЗрд╕ рдУрдХреЗ
 рдкреНрд▓рд╕ (рдСрдкрд░реЗрдЯрд░ + 1) рдареАрдХ рд╣реИ
 рдкреНрд▓рд╕ (2) рдареАрдХ рд╣реИ
 рдкреНрд▓рд╕ (3) рдареАрдХ рд╣реИ
 рдкреНрд▓рд╕ (4) рдареАрдХ рд╣реИ
 рдкреНрд▓рд╕ (5) рдареАрдХ рд╣реИ
 рдкреНрд▓рд╕ (6) рдареАрдХ рд╣реИ
 рдкреНрд▓рд╕ (7) рдареАрдХ рд╣реИ
 рдкреНрд▓рд╕ (8) рдареАрдХ рд╣реИ
 рдкреНрд▓рд╕ (9) рдареАрдХ рд╣реИ
 рдареАрдХ рд╣реИ
 рдЖрдХрд╛рд░ (1) рдареАрдХ рд╣реИ
 рдЖрдХрд╛рд░ (2) рдареАрдХ рд╣реИ
 рдЖрдХрд╛рд░ (3) рдареАрдХ рд╣реИ
 рдЖрдХрд╛рд░ (4) рдареАрдХ рд╣реИ

 рдПрд░реЗрд╕реНрдЯреЗрд╕реНрдЯ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
 at (int) рдареАрдХ рд╣реИ
 рдкрд░ (рдЪрд╛рд░) рдареАрдХ рд╣реИ
 atPut рдареАрдХ рд╣реИ

 рдЪрд▓ рд░рд╣рд╛ рд╣реИ gctest
 рдХреЙрдкреА рдУрдХреЗ рдХрд░реЗрдВ

 рдкреНрд░рд╕рдВрдЧ рдЪрд▓рд╛рдирд╛
 рдмреИрдХрдЯреНрд░реЗрд╕ (1) рдареАрдХ рд╣реИ
 рдмреИрдХрдЯреНрд░реЗрд╕ (2) рдареАрдХ рд╣реИ
 instClass рдареАрдХ рд╣реИ

 рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЖрджрд┐рдо рдЬрд╛рддрд┐
 рд╕реНрдореЙрд▓рдЗрдВрдЯрд╛рдб рдУрдХреЗ
 рдЫреЛрдЯреЗрдЗрдВрдЯреАрдбрд┐рд╡ рдУрдХреЗ
 рд╕реНрдорд╛рд▓рдЗрдВрдЯреЗрдХреНрд╡рд▓ рдУрдХреЗ
 рд▓рдШреБрдЙрдкрд╛рдп рдареАрдХ рд╣реИ
 рд╕реНрдореЙрд▓рдЗрдВрдЯрдореЙрдб рдУрдХреЗ
 рдЫреЛрдЯреЗрдЗрдВрдЯрдореБрд▓ рдУрдХреЗ
 рд╕реНрдореЙрд▓рдЗрдВрдЯрд╕рдм рдУрдХреЗ
 рдмрд▓реНрдХрдкрд┐рдпрд░ рдареАрдХ рд╣реИ
 objectClass (SmallInt) рдареАрдХ рд╣реИ
 рдСрдмреНрдЬреЗрдХреНрдЯрдХреНрд▓рд╛рд╕ (рдСрдмреНрдЬреЗрдХреНрдЯ) рдареАрдХ рд╣реИ
 ObjectSize (SmallInt) рдареАрдХ рд╣реИ
 objectSize (рдЪрд╛рд░) рдареАрдХ рд╣реИ
 ObjectSize (рдСрдмреНрдЬреЗрдХреНрдЯ) рдареАрдХ рд╣реИ
 рдСрдмреНрдЬреЗрдХреНрдЯрдПрдпрд░рдХреНрд╡рд╛рд▓ (1) рдареАрдХ рд╣реИ
 рдСрдмреНрдЬреЗрдХреНрдЯрдПрдпрд░рдХреНрд╡рд╛рд▓ (2) рдареАрдХ рд╣реИ
 smallIntBitAnd рдареАрдХ рд╣реИ
 smallIntBitOr рдареАрдХ рд╣реИ
 smallIntShiftLeft рдареАрдХ рд╣реИ
 smallIntShiftRight рдареАрдХ рд╣реИ
 -> 

рдЕрд╡рд▓реЛрдХрди рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐ рдЫрд╡рд┐ рдХреЛрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ VM рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдореВрд▓ lst5 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЫрд╡рд┐ рдХреЛ рдЪрд▓рд╛рддреЗ рд╕рдордп рдПрдХ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рд╕реЗ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 -> 2 + 3 5 -> (2+3) class SmallInt -> (2+3) class parent Number -> Object class MetaObject -> Object class class Class -> 1 to: 10 do: [ :x | (x * 2) print. $ print ] 2 4 6 8 10 12 14 16 18 20 1 


... рдФрд░ рдЗрд╕реА рддрд░рд╣ред listMethods , viewMethod рдФрд░ allMethods рд╡рд┐рдзрд┐рдпрд╛рдВ рднреА allMethods :
 -> Collection viewMethod: #collect: collect: transformBlock | newList | newList <- List new. self do: [:element | newList addLast: (transformBlock value: element)]. ^ newList 


рдЖрдк рдорд╛рддрд╛-рдкрд┐рддрд╛ ( parent рдорд╛рдзреНрдпрдо рд╕реЗ) рдФрд░ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ:
 -> Collection subclasses Array ByteArray MyArray OrderedArray String Dictionary MyDict Interval List Set IdentitySet Tree Collection -> 

рдЖрдк рд╕рдВрдпреЛрдЬрди Ctrl + D рднреЗрдЬрдХрд░ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 -> Exited normally GC count: 717, average allocations per gc: 25963, microseconds spent in GC: 375509 9047029 messages sent, cache hits: 4553006, misses: 53201, hit ratio 98.85 % 

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдЫрд╡рд┐ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддреЗрдВ рдмрддрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдлрд╝рд╛рдЗрд▓ llst / image / imageSource.st рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ ред

рдЖрд╕рд╛рди рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреЗрдЯрдкрд╛рд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рд▓рд┐рдЦреА, рдЬреЛ рдЕрднреА рднреА llst / misc / smalltalk.xml рдореЗрдВ рдЙрд╕реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИред рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / usr / share / kde4 / apps / katepart / syntax / рдпрд╛ ~ / .kde рдореЗрдВ рдПрдирд╛рд▓реЙрдЧ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Katepart: Kate, Kwrite, Krusader, KDevelop, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рднреА рд╕рдВрдкрд╛рджрдХреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рдирд┐рд╖реНрдХрд░реНрд╖


рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╕реНрдореЛрд▓рдЯреЙрдХ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдЗрд╕рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд▓рдВрдмреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдмреЛрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреА рдкрдардиреАрдпрддрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рд╕реНрдореЙрд▓рдЯрд╛рдХ рднрд╛рд╖рд╛ рдкрд░ рд╣реА рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд░реЛрдд рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмреБрдирд┐рдпрд╛рджреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реЛрдЧреА рдЬрд╣рд╛рдВ рдореИрдВ рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред рдЕрдВрдд рдореЗрдВ, рдЕрдВрддрд┐рдо рд▓реЗрдЦ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдПрд▓рдПрд▓рд╡реАрдПрдо рдФрд░ рдХреНрдпреВрдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдВрдЧреЗред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! :)

рдкреБрдирд╢реНрдЪ: рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рдЕрдкрдиреА рддрд╛рдХрдд (рдХрд╛рдо, рд╡рд╣ рд╣реИ) рдХреЗ рднреБрдЧрддрд╛рди рдХрд┐рдП рдЧрдП рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рддрд▓рд╛рд╢ рд░рд╣рд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдпреЛрдЬрдирд╛) рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдкреАрдПрдо рдореЗрдВ рджрд╕реНрддрдХ рджреЗрдВред рдореИрдВ рдЦреБрдж рдиреЛрд╡реЛрд╕рд┐рдмрд┐рд░реНрд╕реНрдХ рдПрдХреЗрдбрд╛рдореЛрдбреЛрд░реЛрдХ рдореЗрдВ рд╣реВрдВред

Source: https://habr.com/ru/post/In164153/


All Articles