рдкрд░рд┐рдЪрдп
2016 рд╕реЗ (рд░реБрдХрд╛рд╡рдЯ рдХреЗ рд╕рд╛рде) рдореИрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдирд╛рдо тАЬisтАЭ рд╣реИред рдХреНрдпреЛрдВ ├Ь рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдХ-рдЕрдХреНрд╖рд░ рдХрд╛ рдирд╛рдо рдЪрд╛рд╣рд┐рдП рдерд╛, рдФрд░ AZ рдХреЗ рд╕реЗрдЯ рд╕реЗ рд╕рднреА рдкрддреНрд░ рдкрд╣рд▓реЗ рд╣реА рд▓реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЬрдирддрд╛ рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдиреЗ рдХрд╛ рдХрд╛рдо рд╣реИ, рдЗрд╕рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рджреЗрдирд╛ред рд▓реЗрдЦ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рднрд╛рд╖рд╛ рдХрд╛ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг, рдмрд╛рдж рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╣рдореЗрдВ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдореИрдВрдиреЗ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рдореМрдЬреВрджрд╛ рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреА рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдЬрд╛рдиреА-рдорд╛рдиреА рднрд╛рд╖рд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА, рдФрд░ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрди рд╕рднреА рдореЗрдВ "рдШрд╛рддрдХ" рджреЛрд╖ рд╣реИрдВред
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд┐рдВрджреБ:
- рд╕реА - рдмрд╣реБрдд рдХрдо рд╕реНрддрд░ рдФрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд
- рд╕реА ++ - рдХрдИ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рджреЛрд╖реЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛, рдкреИрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдЧреЛрд▓реА рдорд╛рд░рдиреЗ рдХреЗ рдирдП рддрд░реАрдХреЗ, рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреА рдХрдореА
- рдбреА - рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░
- рдЬрд╛рд╡рд╛ рдПрдХ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╛рд╣рдХ рд╣реИ, рд╕рднреА рдорд┐рд╢реНрд░рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рд▓рдЧрд╛рд╡ред рдЗрд╕рдХрд╛ рдмрд╣реБрдд рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ JVM- рдЖрдзрд╛рд░рд┐рдд рднрд╛рд╖рд╛рдУрдВ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
- C # - рджреЛрд╖ рдЬрд╛рд╡рд╛ рдХреА рддрд░рд╣ рд╣реИрдВ
- рдЬрдВрдЧ - рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд░реЛрдХрдирд╛, (рд╡рд┐рд╖рдпрд╡рд╕реНрддреБ) рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЦрддрд░рд╛ рдЬрдм рд╕рдм рдХреБрдЫ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рд╡рд┐рд░рд╛рд╕рдд рдХреА рдХрдореА
- рдЧреЛ - рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛, рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреА рдХрдореА
- рд╕реНрд╡рд┐рдлреНрдЯ - рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреА рдЕрдкреВрд░реНрдгрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛, рдЗрд╕рд╕реЗ рд░рд╣рд┐рдд, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╕рднреА рджреЛрд╖реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА
Iled рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдХрд▓рд┐рдд, рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рднрд╛рд╖рд╛ рд╣реИред рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐: рд╢реБрд▓реНрдХ рдХрд╛рд░реНрдп, рд╕рдВрд░рдЪрдирд╛рдПрдВ, рдХрдХреНрд╖рд╛рдПрдВ, рд╕рдВрд░рдЪрдирд╛рдПрдВ рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд░ - рдореМрд▓рд┐рдХ, рд╕рдВрд░рдЪрдирд╛рддреНрдордХ (рд╕рдВрд░рдЪрдирд╛рдПрдВ, рд╡рд░реНрдЧ), рдирд┐рд░рдВрддрд░ рдЖрдХрд╛рд░ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ, рдЯреНрдпреВрдкрд▓реНрд╕, рдЧрдгрдирд╛, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддред рдХрдХреНрд╖рд╛рдПрдВ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИрдВред рднрд╛рд╖рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ, рдкреНрд░рдХрд╛рд░реЛрдВ, рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВред рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдПрдХ рдЕрдзрд┐рднрд╛рд░ рд╣реИ (рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде)ред
рднрд╛рд╖рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд╛рд╢рдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рд╡рд┐рдирд╛рд╢рдХрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореЗрдореЛрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред
рдкрд╣рд▓реЗ рд╕реЗ рдХреНрдпрд╛ рд╣реИ
рд▓рд╛рдЧреВ рдПрд▓рдПрд▓рд╡реАрдПрдо рдЖрдзрд╛рд░рд┐рдд рд╕рдВрдХрд▓рдХред рд╕рдВрдХрд▓рдХ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ, рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб, рдмрд╛рдЗрдирд░реА рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ llvm рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕реА рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬреЛ рд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП to-рд╣реЗрдбрд░ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИред
рд▓рдХреНрд╖реНрдп рдФрд░ рдЙрджреНрджреЗрд╢реНрдп
рднрд╛рд╖рд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рди рдХреА рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗред рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдкрд░ рдирд┐рд░реНрдгрдп рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рд▓рдХреНрд╖реНрдп рд╣реИ (рд░рд┐рд╢реНрддреЗрджрд╛рд░) рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреАред
рднрд╛рд╖рд╛ рдореЗрдВ рдРрд╕реЗ рдирд┐рд░реНрдорд╛рдг рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдЧрд▓рдд рдХреЛрдб рдХреЗ рд▓реЗрдЦрди рдХреЛ рдЙрддреНрддреЗрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдордЭ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрдкрд░реЛрдХреНрдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рджрд░реНрд╢рди рдХреА рд░реБрдХрд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП, рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рддреЛ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ let's рдореЗрдВ рдХреМрди рд╕реЗ рдХреНрд╖рдг рд╣реИрдВ рдЬреЛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред
рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА
C ++ рдХреЗ рд╡рд┐рдкрд░реАрдд, ├Ь рдореЗрдВ рдХреЛрдИ рдмрд┐рдВрджреБ рдФрд░ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИрдВ, рд▓рд┐рдВрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХ рд▓рд┐рдВрдХ, рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрдн рддрд░реНрдХ, рд╕рдВрджрд░реНрдн рдлрд╝реАрд▓реНрдб рдХреЗ рд░реВрдк рдореЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, mut / imut рд╕рдВрд╢реЛрдзрдХ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЪрд░, рд╕рдВрджрд░реНрдн, рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ, рдлрд╝реАрд▓реНрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред
рдЗрд╕ рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕ рдмрд╛рдд рдХреА рдЕрдзрд┐рдХ рд╕рдордЭ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдореЗрдВред рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓рд┐рдВрдХ рдпрд╛ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЯрд╛рдЗрдкреЛрдл рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдВрджреЗрд╣ (рд╕реА ++ рд╕реЗ рдбрд┐рдХреНрд▓реЗрдкрдЯ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ), рдирд┐рд░рдВрддрд░ / рдЧреИрд░-рдирд┐рд░рдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╣ред
рдЗрд╕ рд╕рд░рд▓реАрдХрд░рдг рдХрд╛ рджреВрд╕рд░рд╛ рдкрд╣рд▓реВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рд▓рд┐рдВрдХ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯрддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрдм рдПрдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
initializers
рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рдШреЛрд╖рд┐рдд рдЪрд░ рдХреЗ рдХрд┐рд╕реА рднреА рдмрд╛рдЗрдЯ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореМрд▓рд┐рдХ (рдФрд░ рдХреБрдЫ рдЕрдиреНрдп) рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЖрд░рдВрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
var i32 x= 22, y(12345);
:
struct Vec{ f32 x; f32 y; }
...
var Vec v{ .x= -56.1f, .y= 42.0f };
var Vec v_uninit; //
, :
struct Vec
{
f32 x; f32 y;
fn constructor()
( x= 0.0f, y= 0.0f )
{}
}
...
var Vec v; //
, .
, :
struct Vec
{
f32 x= 0.0f;
f32 y= 0.0f;
}
, [] , :
var [ i32, 4 ] a[ 1, 1, 3, 4 ];
var tup[ i32, f32 ] t[ 8, 0.5f ];
var [ f32, 16 ] a_uninit; // , .
var[ i32, 3 ] aa[ 0, 1 ]; // ,
C++, , . , , тАФ .
. , , тАФ . this, - /, :
struct Vec
{
f32 x; f32 y;
fn constructor()
( x= y, y= 0.0f ) // , ┬лy┬╗
{}
fn constructor( f32 val )
( x= val, y= x ) // . ┬лx┬╗ ┬лy┬╗
{}
}
. , , . .
:
var i32 mut x= 0;
var i32 &mut ref0= x;
++x; // ,
var i32 &imut ref1= x; // , , . .
:
var i32 mut x= 0;
var i32 &imut ref0= x;
var i32 &mut ref1= x; // , ,
:
var i32 mut x= 0;
var i32 &mut ref0= x;
var i32 &mut ref1= ref0; // , . . ,
:
fn Mutate( i32 &mut x, i32 &mut y );
...
var i32 mut x= 0;
Mutate( x, x ); // ,
. C++
std::vector<int> vec;
vec.push_back(1);
int& ref= vec.front();
vec.push_back(2); // , ref
├Ь :
var ust::vector</i32/> mut vec;
vec.push_back(1);
var i32 &imut ref= vec.front();
vec.push_back(2); // , vec,
( ). тАФ polymorph, interface, abstract . . , .
:
- . , , .
:
class A interface
{
fn virtual pure Foo(this);
}
- . . . , this, , . . . abstract call, , , C++.
:
class A abstract
{
fn virtual pure Foo(this);
fn virtual Bar(this){}
i32 x= 0;
}
- . . . - , .
:
class A interface
{
fn virtual pure Foo(this);
}
class B : A
{
fn virtual override Foo(this){}
}
- . , , .
. .
fn virtual pure Foo(this); // . , , .
fn virtual Foo(this){} // . , .
fn virtual override Foo(ths){} // , . , .
fn virtual final Foo(this){} // , . , . - , .
2019тАФ , , ├Ь . . , , , , .
:
fn Foo( i32 mut x ) : i32
{
while(x < 100 )
{
x+= 10;
continue;
x+= 20; // ,
}
return x;
++x; // ,
}
:
fn Foo( i32 x ) : i32
{
if( x < 10 ) { return 0; }
else if( x > 100 ) { return 1; }
// ,
}
else , return .
, - , halt ( ). , , , return.
. , (. ). () .
:
struct CallableObject
{
i32 &mut x;
op()( mut this )
{
++x;
}
}
...
var i32 mut x= 0;
var CallableObject mut obj{ .x= x };
auto thread= ust::thread_create( move(obj) );
++x; // , ┬лx┬╗, ┬лthread┬╗
++ obj.x; //
- , , - , .
(mutable C++), . . . , - , .
, ? тАФ shared_ptr_mt . , , lock_mut() lock_imut(), . ┬л , ┬╗.
:
struct Incrementer
{
ust::shared_ptr_mt_mut</ i32 /> ptr;
op()( mut this )
{
auto mut lock= ptr.lock_mut(); // ┬лlock┬╗
++lock.get_ref();
}
}
...
var ust::shared_ptr_mt_mut</ i32 /> ptr(0);
var size_type mut i(0);
var ust::vector</ ust::thread</Incrementer/> /> mut threads;
while( i < size_type(64) )
{
var Incrementer incrementer{ .ptr= ptr };
threads.push_back( ust::thread_create(incrementer) );
++i;
}
threads.clear(); // .
halt if( ptr.lock_imut().get_ref() != 64 ); // , ,
, , . . ┬лshared┬╗. , , , - , ┬лshared┬╗.
. , , constexpr . , .
, ├Ь, - , C.
C++, (=, +=, *= . .) , , . ++ тАУ.
:
if( x = 0 ) {}
x++; // ++
x += x += x; // , +=
x+= x++ + ++x; //
. void, .
, , . :
auto a = select( condition ? x : y );
select .
. . . .
? , - :
- . - , , .
- . . - NullPointerException - , - . , , . . .
- . , , , . - - , . , .
- . , , .
, , ?
, . . ┬л┬╗ , , std::optional/std::variant C++ Option/Result Rust.
, -, , halt. ( ├Ь ) , , , .
, - . , import, , . C++, , .
. , *.cpp *.hpp C++.
, , , .
, , . , , , . , - , .
тЖТ
тЖТ
, , .
тЖТ
.
, . . , .