рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЗ рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ

рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ

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

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

рдирдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг


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

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рд╕рднреА рдХреЛ рдЧреЗрдо рдЪреЗрдВрдЬрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рдлрд▓рддрд╛ рджрд┐рд▓рд╛рдПрдВрдЧреЗред



рдЖрдЗрдП рдХреБрдЫ рдкреНрд░рд╕рд┐рджреНрдз рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:

  1. DeepCode
  2. рдЗрдВрдлрд╝рд░, рд╕реИрдкрд┐рдПрдиреНрдЬрд╝, рд╕реИрдлрд╝рд┐рдХреНрд╕
  3. Embold
  4. рд╕реНрд░реЛрдд {d}
  5. рдЪрддреБрд░-рдХрдореЗрдЯреА, рдкреНрд░рддрд┐рдмрджреНрдз рд╕рд╣рд╛рдпрдХ
  6. CodeGuru

DeepCode


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



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

рдордИ 2018 рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХрд╣рд╛ рдХрд┐ C ++ рдХрд╛ рд╕рдорд░реНрдерди рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ, рдпрд╣ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╕рд╛рдЗрдЯ рдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдирдИ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдХреЗрд╡рд▓ рдПрдХ рдЪрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╣реИред





рд╕рд╛рдЗрдЯ рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред

рддрд░реНрдХ рдХрд░рдирд╛


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

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

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, Infer null pointer dereference рдФрд░ рдореЗрдореЛрд░реА рд▓реАрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдЗрдВрдлрд░ рд╣реЛрд░реЗ рдХреЗ рддрд░реНрдХ, рдкреГрдердХреНрдХрд░рдг рддрд░реНрдХ рдФрд░ рджреНрд╡рд┐-рдЕрдкрд╣рд░рдг, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рд╛рд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЗрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╡рд┐рдЦрдВрдбреВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдЗрдирдлреЗрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИ рдХрд┐ рдлреЗрд╕рдмреБрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рд▓рдЧрднрдЧ 80% рдЙрдкрдпреЛрдЧреА рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдХрдо рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЗрдирдлреЗрд░ рдЕрдм рддрдХ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

  • рд╕рд░рдгреА рд╕реВрдЪрдХрд╛рдВрдХ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░;
  • рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдЕрдкрд╡рд╛рдж;
  • рдЕрд╕рддреНрдпрд╛рдкрд┐рдд рдбреЗрдЯрд╛ рд▓реАрдХ;
  • рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ред

SapFix


SapFix рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрдкрд╛рджрди рдЙрдкрдХрд░рдг рд╣реИред рдпрд╣ Sapienz, рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдЙрдкрдХрд░рдг рдФрд░ Infer рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдФрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрдВрдлрд░ рдиреЗ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ред



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

рд▓реЗрдХрд┐рди рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП SapFix рдПрдХ-рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдИ рд╕рдорд╛рдзрд╛рди рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ: рдЪрд╛рд╣реЗ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрдВ, рдЪрд╛рд╣реЗ рд╡рд╣ рдХреНрд░реИрд╢ рд╣реЛ, рдЪрд╛рд╣реЗ рд╡рд╣ рдирдП рдХреНрд░реИрд╢ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗред рдПрдХ рдмрд╛рд░ рдЬрдм рд╕рдВрдкрд╛рджрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдВрдЪ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреИрдЪ рдХреЛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреМрди рд╕реЗ рд╕рдВрдкрд╛рджрди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

Embold


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



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



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



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



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

рд╕реНрд░реЛрдд {d}


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



рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ " рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдкреНрд░рд╛рдХреГрддрд┐рдХрддрд╛" рд▓реЗрдЦ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИред

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

рдЗрд╕ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреЛрдб рдХрд╛ рдЖрдзрд╛рд░ рдЬрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЧреБрдг рдЙрддрдиреЗ рд╣реА рдЕрдзрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╕реАрдЦрдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрддреЗ рд╣реИрдВред

рд╕реНрд░реЛрдд {d} рдореЗрдВ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Babelfish рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рдЙрдкрд▓рдмреНрдз рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╕рд╛рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЯреНрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред



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





рд▓рд░реНрдирд┐рдВрдЧ рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рддрддреНрд╡реЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ: рд░рд┐рдХреНрдд рд╕реНрдерд╛рди, рд╕рд╛рд░рдгреАрдХрд░рдг, рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдЖрджрд┐ред



рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ: " рд╕реНрдЯрд╛рдЗрд▓-рдПрдиреЗрд▓рд╛рдЗрдЬрд░: рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдЕрдкреНрд░рддрд┐рд╖реНрдард┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рдХреЛрдб рд╢реИрд▓реА рдХреА рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ "ред

рд╕рднреА рд╕рднреА, рд╕реНрд░реЛрдд {d} рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рд╡рд┐рдз рдЖрдБрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдордВрдЪ рд╣реИ: рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рджрдХреНрд╖рддрд╛ рдЧрдгрдирд╛ рд╕реЗ рд▓реЗрдХрд░ рд╕рдордп рдХреА рд▓рд╛рдЧрдд рддрдХред

рдЪрддреБрд░ рд╡рдЪрди


рдХреНрд▓реЗрд╡рд░-рдХрдорд┐рдЯ Ubisoft рдХреЗ рд╕рд╣рдпреЛрдЧ рд╕реЗ рдореЛрдЬрд╝рд┐рд▓рд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИред рдпрд╣ Ubisoft рдФрд░ рдЗрд╕рдХреЗ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрдбрдХреНрдЯ рдХрдорд┐рдЯ рдЕрд╕рд┐рд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдПрдХ CLEVER (рдХрдВрдмрд╛рдЗрдирд┐рдВрдЧ рд▓реЗрд╡рд▓ рдСрдл рдмрдЧ рдкреНрд░рд┐рд╡реЗрдВрд╢рди рдПрдВрдб рд░рд┐рдЬреЙрд▓реНрдпреВрд╢рди рдЯреЗрдХреНрдирд┐рдХреНрд╕) рд╕реНрдЯрдбреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдРрд╕реЗ рд╕рдВрджрд┐рдЧреНрдз рдХрдорд┐рдЯреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрддреА рд╣реИред рдЪреВрдВрдХрд┐ CLEVER рдХреЛрдб рддреБрд▓рдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЦрддрд░рдирд╛рдХ рдХреЛрдб рдкрд░ рджреЛрдиреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, 60-70% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреНрд▓реЗрд╡рд░-рдХрдорд┐рдЯ рдХреЛ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рди рдорд┐рд▓рддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╛рди рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд╕рд╣реА рд╕рдВрдкрд╛рджрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред

CodeGuru


рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдбрдЧреБрд░реБ, рдЬреЛ рдХрд┐ рдЕрдореЗрдЬрд╝реЕрди рдХрд╛ рдПрдХ рдЙрддреНрдкрд╛рдж рд╣реИ, рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХреА рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рд╕рд╛рде рд╣реА рдЗрд╕рдореЗрдВ рдорд╣рдВрдЧреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рднреА рдХрд░рддреА рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдм рддрдХ рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦрдХ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕рдХреА рдШреЛрд╖рдгрд╛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди AWS (Amazon Web Services) рдХреЗ рд╕реАрдИрдУ рдПрдВрдбреА рдЬреЗрд╕реА рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдореЗрдЬрд╝рди рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдХреЛрдбрдЧреБрд░реБ рдЕрдореЗрдЬрд╝реЕрди рдХреЛрдб рдЖрдзрд╛рд░ рдкрд░ рд╕реАрдЦ рд░рд╣рд╛ рдерд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде 10,000 рд╕реЗ рдЕрдзрд┐рдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рднреАред

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



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

рдпрд╣ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдЙрди рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реБрдзрд╛рд░ рдХрд░рддреА рд╣реИрдВред

рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА, рдЬрд┐рдирдХрд╛ рд╕рдореАрдХреНрд╖рдХ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ, рд╡реЗ рдХрд╛рдлреА рдзреБрдВрдзрд▓реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рддреНрд░реБрдЯрд┐ рдкреНрд░рд▓реЗрдЦрди рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  • рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрднреНрдпрд╛рд╕ AWS
  • рд╕рдВрдЧрд╛рдорд┐рддрд┐
  • рд╕рдВрд╕рд╛рдзрди рд▓реАрдХ
  • рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХрдореА
  • рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп "рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕"

рд╣рдорд╛рд░рд╛ рд╕рдВрд╢рдпрд╡рд╛рдж


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

  1. рдЬреЛ рд▓реЛрдЧ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рд┐рдЦрд╛рддреЗ рд╣реИрдВ;
  2. рдЬреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рд╕рдВрд╢реЛрдзрди рдЗрддрд┐рд╣рд╛рд╕ (GitHub) рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреАрдбрд╝реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрдкрд╛рджрди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред

рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рджрд┐рд╢рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдкрд╛рдардХреЛрдВ рдХреЛ рдорд┐рд▓реЗрдЧрд╛ рдХрд┐ рд╣рдо рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рд╕реЗ рдЗрдирдХрд╛рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЙрддреНрд╕рд╛рд╣ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдиреЛрдЯред рд╣рдо рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕реНрдерд┐рд░ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВ, рдЬрд┐рд╕реЗ рдХреЛрдИ рднреА рдЯреАрдо рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдПрдЧреА, рди рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдЖрдзрд╛рд░ рдкрд░ рдХреЗрдВрджреНрд░рд┐рддред

рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдореИрдиреБрдЕрд▓ рд╢рд┐рдХреНрд╖рдг


рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдЦрд╛рдорд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

if (A == A) 

рдЕрдкрдиреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЕрдЬреАрдм рд╣реИред рд╣рдо рд╕рд╣реА рдФрд░ рдЧрд▓рдд рдХреЛрдб рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рд╕рд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рдП рдЧрдП рдмрдЧ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЦреИрд░, рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╣рд╛рдВ рдорд┐рд▓реЗрдВрдЧреЗред рдареАрдХ рд╣реИ, рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ: V501 , V3001 , V6001 ред

рддреЛ рдХреНрдпрд╛ рдПрдордПрд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдореЗрдВ рдРрд╕реЗ рджреЛрд╖реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рд╣рд╛рдБ, рдпрд╣ рд╣реИред рдмрд╛рдд рдпрд╣ рд╣реИ - рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

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

рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдо рди рдХреЗрд╡рд▓ (рдП == рдП) рдорд╛рдорд▓реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐:

  • рдпрджрд┐ (X && A == A)
  • рдЕрдЧрд░ (A + 1 == A + 1)
  • рдЕрдЧрд░ (A [i] == A [i])
  • рдЕрдЧрд░ (рдП) == (рдП))
  • рдФрд░ рдЗрд╕реА рддрд░рд╣ред


рдЖрдЗрдП, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдРрд╕реЗ рд╕рд░рд▓ рдирд┐рджрд╛рди рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреЗрдВ:

 void RulePrototype_V501(VivaWalker &walker, const Ptree *left, const Ptree *right, const Ptree *operation) { if (SafeEq(operation, "==") && SafeEqual(left, right)) { walker.AddError("Oh boy! Holy cow!", left, 501, Level_1, "CWE-571"); } } 

рдФрд░ рд╡рд╣ рдпрд╣ рд╣реИ! рдЖрдк рдПрдордПрд▓ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рдХрд┐рд╕реА рднреА рдЖрдзрд╛рд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ!

рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдирд┐рджрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдХрдИ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╕реАрдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ ([[0] == рдП [рез-рез]] рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рдиреА рд╣реЛрдЧреАред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдЪреАрдЬреЗрдВ рдЦрд░рд╛рдм рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг, рдкреНрд░рд▓реЗрдЦрди рдЖрджрд┐ рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдирдП рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдмрдирд╛рдиреЗ рдкрд░ рд╢реНрд░рдо рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рд╕рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдЬрд╣рд╛рдВ рдирд┐рдпрдо рдХреЛ рдХреЛрдб рдореЗрдВ рдХреНрд░рдорд╛рджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реАрдб рд▓реЗрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдпрд╣ рдПрдХ рдФрд░ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рд╕рдордп рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреБрдЫ рдХрд╛рд░реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • malloc
  • memcmp
  • рд╕реНрдЯреНрд░рд┐рдВрдЧ :: рдЦрд╛рд▓реА

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡реА 530 рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдХрд░рддрд╛ рд╣реИред

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

рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде V530 рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдХреЛрдб рдХреА 258 рд▓рд╛рдЗрдиреЗрдВ рд▓реАрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ 64 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рднреА рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЯреЙрдк рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

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

 uint32_t* BnNew() { uint32_t* result = new uint32_t[kBigIntSize]; memset(result, 0, kBigIntSize * sizeof(uint32_t)); return result; } std::string AndroidRSAPublicKey(crypto::RSAPrivateKey* key) { .... uint32_t* n = BnNew(); .... RSAPublicKey pkey; pkey.len = kRSANumWords; pkey.exponent = 65537; // Fixed public exponent pkey.n0inv = 0 - ModInverse(n0, 0x100000000LL); if (pkey.n0inv == 0) return kDummyRSAPublicKey; // <= .... } 

рдЙрджрд╛рд╣рд░рдг " рдХреНрд░реЛрдорд┐рдпрдо: рдореЗрдореЛрд░реА рд▓реАрдХреНрд╕ " рд▓реЗрдЦ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рд╕реНрдерд┐рддрд┐ (pkey.n0inv == 0) рд╕рддреНрдп рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдмрдлрд░ рд╕реЗ рдореБрдХреНрдд рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреЙрдЗрдВрдЯрд░ рдХреЛ n рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

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

рд╣рдо рдПрдордПрд▓ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдПрдБ рдпрд╣рд╛рдБ рдХреЗ рдХреЛрдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИрдВред рд╕реНрдореГрддрд┐ рд▓реАрдХ рдХреЗ рд╕рд╛рде рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдорд╢реАрди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реАрдЦрддреА рд╣реИ рдХрд┐ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдпрд╣ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рднреА рд╣реИрдВред

рд╣рдореЗрдВ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХрд╛рд░реНрдп рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИред рд╣рдореЗрдВ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрдирд╛рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рд╛рджреГрд╢реНрдпред рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЬреЛ рдЖрддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рд╣реИ, рдЬрд╣рд╛рдВ рдирд┐рджрд╛рди рдХреЗ рдмрдЬрд╛рдп, рдХрд┐рд╕реА рдХреЛ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рд╣рдореЗрдВ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдПрдордПрд▓ рдЖрдзрд╛рд░рд┐рдд рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЛ 1 + 1 = 2, 1 + 2 = 3, 2 + 1 = 3, 100 + 200 = 300 рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЦрд┐рд▓рд╛рдХрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рдЕрдиреБрджрд╛рди рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ :)ред рдХреЛрдб рдореЗрдВ рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди "+" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╣реБрдд рд╕рд░рд▓, рддреЗрдЬ, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖ рдЦреИрд░, рдпрд╣ рддрд░реАрдХрд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ, рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо - рдХрдо рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд╕рдЯреАрдХ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрдЯрд┐рд▓ рдирд┐рджрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред

рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдкрд░ рд╕реАрдЦрдирд╛


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

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

рдкрд╣рд▓реА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБред рдбреЗрдЯрд╛ рд╕реНрд░реЛрддред

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

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

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

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

рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрднреА рддрдХ рд╕реАрдЦрдиреЗ рдХреЛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ :)ред

рджреВрд╕рд░реА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБред рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкрд┐рдЫрдбрд╝ рдЧрдпрд╛ред

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

C # 8.0 рдХреЗ рдмрд╛рдж рд╕реЗ Nullable Reference type рд╣реБрдП рд╣реИрдВ, рдЬреЛ Null Reference Exception (NRE) рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓рдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред JDK 12 рдореЗрдВ, рдПрдХ рдирдпрд╛ рд╕реНрд╡рд┐рдЪ рдСрдкрд░реЗрдЯрд░ ( JEP 325 ) рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рд╕реА ++ 17 рдореЗрдВ, рд╕рдВрдХрд▓рди-рд╕рдордп рд╕рд╢рд░реНрдд рдирд┐рд░реНрдорд╛рдг ( рдпрджрд┐ рд╣реЛ рддреЛ рд╡рд┐рд╡рд╢ ) рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдФрд░ рдЗрд╕реА рддрд░рд╣ред

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

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдПрдордПрд▓ рд╡рд┐рдзрд┐ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреА рд╣реИ: рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЛрдб рдЖрдзрд╛рд░ рдирд╣реАрдВ рд╣реИред

рдЖрдЗрдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦреЗрдВред рд▓реВрдк рдХреЗ рд▓рд┐рдП рд░реЗрдВрдЬ-рдЖрдзрд╛рд░рд┐рдд C тАЛтАЛ++ 11 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЖрдк рдирд┐рдореНрди рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдкреАрдЫреЗ рдЫреЛрдбрд╝рддреЗ рд╣реБрдП:

 std::vector<int> numbers; .... for (int num : numbers) foo(num); 

рдирдпрд╛ рд▓реВрдк рдЕрдкрдиреЗ рд╕рд╛рде рдирдпрд╛ рдПрд░рд░ рдкреИрдЯрд░реНрди рд▓рд╛рдпрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЛ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ "рдЫрд╛рдпрд╛" рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧрд▓рдд рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 for (int num : numbers) { numbers.push_back(num * 2); } 

рд╕рдВрдХрд▓рдХ рдЗрд╕реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджреЗрдЧрд╛:

 for (auto __begin = begin(numbers), __end = end(numbers); __begin != __end; ++__begin) { int num = *__begin; numbers.push_back(num * 2); } 

рдкреБрд╢_рдмреИрдХ рдХреЗ рджреМрд░рд╛рди, __begin рдФрд░ __end рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдореЗрдореЛрд░реА рд╡реЗрдХреНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдкрд░рд┐рдгрд╛рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕рд╛рд╣рд┐рддреНрдп рдореЗрдВ рдЬреНрдЮрд╛рдд рдФрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ V789 рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдирд┐рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╣реА рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛ рдЪреБрдХрд╛ рд╣реИред

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

рдХрд┐рддрдиреЗ рд╕рд╛рд▓ рд▓рдЧреЗрдВрдЧреЗ? рдкрд╛рдВрдЪ? рджрд╕?

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

рдЕрдм рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде: рд╕реВрдЪрдХ рдЪреЗрдХ рд╕реЗ рдкрд╣рд▓реЗ dereferenced рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп 1,716 рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред

рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЫреЛрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдЬ-рдЖрдзрд╛рд░рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП? рдирд╣реАрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВ, рдФрд░ рдпрд╣ рдСрдкрд░реЗрдЯрд░ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рд░рд╣рд╛ рд╣реИред рдзреАрд░реЗ-рдзреАрд░реЗ, рдХреНрд░рдорд╢рдГ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдЕрдзрд┐рдХ рдХреЛрдб рд╣реЛрдВрдЧреЗред

C ++ 11 рдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХреЗ 10-15 рд╕рд╛рд▓ рдмрд╛рдж рд╣реА рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ рдПрдХ рджрд╛рд░реНрд╢рдирд┐рдХ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреНрд░реБрдЯрд┐ рдкреИрдЯрд░реНрди рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдХрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рди рд╣реЛрдВред рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реЛрдЧрд╛?

рдпрджрд┐ "рд╣рд╛рдБ", рд╕рднреА рдПрдордПрд▓ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП "рдорд╛рдирд╕рд┐рдХ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рджреЗрд░реА" рдХрд╛ рдирд┐рджрд╛рди рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред

рдпрджрд┐ "рдирд╣реАрдВ", рддреЛ рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреЗрдВ? рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣, рд╣рдо рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдордиреЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рд╣реИ рдЬрдм рд▓реЛрдЧ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдкреИрдХ рд▓рд┐рдЦреЗрдВрдЧреЗред

рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реАрдШреНрд░рддрд╛ рдХрд╛ рд╕рд╡рд╛рд▓ рдлрд┐рд░ рд╕реЗ рдЙрдарддрд╛ рд╣реИред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде V789 рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдХреА рдХреЗрд╡рд▓ 118 рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ 13 рд▓рд╛рдЗрдиреЗрдВ рдЯрд┐рдкреНрдкрдгреА рд╣реИрдВред рдпрд╣реА рд╣реИ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдирд┐рджрд╛рди рд╣реИ, рдЬрд┐рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреНрд▓рд╛рд╕рд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рддреАрд╕рд░реА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБред рдкреНрд░рд▓реЗрдЦрдиред

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

рдПрдордПрд▓ рдЖрдзрд╛рд░рд┐рдд рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореБрджреНрджрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрд╕ рдПрдХ рдРрд╕реА рдЬрдЧрд╣ рдХреА рдУрд░ рд╕рдВрдХреЗрдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдЙрд╕реЗ рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рднреА рджреЗ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдкрд╛рджрди рдХрд░рдиреЗ рдпрд╛ рди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд╡реНрдпрдХреНрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдмрд╕ рдпрд╣реАрдВ рд╕реЗ рдореБрд╕реАрдмрдд рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ ... рдмрд┐рдирд╛ рдкрдврд╝реЗ рдХреЛрдИ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреЛрдб рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╕рдВрджреЗрд╣ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕ рдХреЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ:

 char *p = (char *)malloc(strlen(src + 1)); strcpy(p, src); 

рдФрд░ рд╕реБрдЭрд╛рд╡ рджреЗрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 char *p = (char *)malloc(strlen(src) + 1); strcpy(p, src); 

рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдПрдХ рдЯрд╛рдЗрдкреЛ рдмрдирд╛рдпрд╛ рдФрд░ рдЧрд▓рдд рдЬрдЧрд╣ рдкрд░ 1 рдЬреЛрдбрд╝рд╛ред рдирддреАрдЬрддрди, рдЖрд╡рд╢реНрдпрдХ рд╕реЗ рдХрдо рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рдПрдЧреАред

рдпрд╣рд╛рдБ рдпрд╣ рд╕рдм рдмрд┐рдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╣рдореЗрд╢рд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ "рдЪреБрдкрдЪрд╛рдк" рдЗрд╕ рдХреЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ:

 char check(const uint8 *hash_stage2) { .... return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE); } 

рдФрд░ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдо int рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗ рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВ:

 int check(const uint8 *hash_stage2) { .... return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE); } 

рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рдВрджреЗрд╢ рдореЗрдВ рдХреЛрдИ рдкрд╛рда рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ? рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рдХреНрдпрд╛ рдРрд╕рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ?

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

рдЕрдм, рдЕрдЧрд░ рдЖрдкрдХреЛ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдПрдбрд┐рдЯ рдХреНрдпрд╛ рд╣реИ, рддреЛ V642 рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рджреЗрдЦреЗрдВ ред рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрдЧ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдПрдХ рднреЗрджреНрдпрддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред

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

 ObjectOutputStream out = new ObjectOutputStream(....); SerializedObject obj = new SerializedObject(); obj.state = 100; out.writeObject(obj); obj.state = 200; out.writeObject(obj); out.close(); 

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

 ObjectOutputStream out = new ObjectOutputStream(....); SerializedObject obj = new SerializedObject(); obj.state = 100; out.writeObject(obj); obj = new SerializedObject(); // The line is added obj.state = 200; out.writeObject(obj); out.close(); 

рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рд╡рд░реНрдгрди рдирд╣реАрдВ рд╣реИред рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВред рдХреЛрдб рд▓рдВрдмрд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдРрд╕рд╛ рд╕рдВрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ?

рдЖрдк рдХрд╣реЗрдВрдЧреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдФрд░ рдРрд╕рд╛ рд╣рд░ рд╕рдордп рд░рд╣реЗрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ "рдореВрдХ" рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдПрдХ рдЕрдВрддрд╣реАрди рдЕрдзреНрдпрдпрди рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреБрдЫ рднреА рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдкреНрд░рд▓реЗрдЦрди рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрдЧ java.io.ObjectOuputStream рдЬреЛ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рд┐рдЦрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдХреЛ рджреЛ рдмрд╛рд░ рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрдХреНрд╖рд╛ рдПрдХ рдмрд╛рд░ рд╡рд╕реНрддреБ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рд░ рдзрд╛рд░рд╛ рдореЗрдВ рдЙрд╕реА рдкрд╣рд▓реА рд╡рд╕реНрддреБ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓рд┐рдЦрддреА рд╣реИред рдФрд░ рдкрдврд╝реЗрдВ: V6076 - рдЖрд╡рд░реНрддрдХ рдХреНрд░рдорд╛рдВрдХрди рдкрд╣рд▓реЗ рдХреНрд░рдорд╛рдВрдХрди рд╕реЗ рдХреИрд╢реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдпрд╣рд╛рдБ рд╕рд╡рд╛рд▓ рдЖрддрд╛ рд╣реИред рдПрдордПрд▓ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ?

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

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

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдЪреВрдВрдХрд┐ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдкрд░ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдореБрджреНрджреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдЧреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдмрд╕ рдПрдХ рдФрд░ рдмрдбрд╝реА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд┐ рд╣рдо рдмрд╛рд╣рд░ рдмрд╛рдд рдХреА рд╣реИред

рдиреЛрдЯред рдЖрдк рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ GitHub рдФрд░ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдкрд░ рдХрд┐рдП рдЧрдП рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХрдорд┐рдЯ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦ рдХрд░ рд╕рдордЭ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣реИред рд╣рд╛рдВ, рдРрд╕рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рдЖрдХрд░реНрд╖рдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдпрд╣рд╛рдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмреБрд░рд╛ рджреЛрд╕реНрдд рд╣реИ, рдЬреЛ рдЙрд╕рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдкрд╣реЗрд▓реА рдХрд░реЗрдЧрд╛ред

рдЪреМрдерд╛ рд╕рдВрдЬреНрдЮрд╛ред рдЕрддрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛рдПрдБред

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

рдЖрдЗрдП рдЗрд╕реЗ рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, GitHub рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЦреЛрдЬреЗрдВред

рдкрд░рд┐рдгрд╛рдо: рднрд╛рд╖рд╛: "рдЬрд╛рд╡рд╛": 3,128,884 рдЙрдкрд▓рдмреНрдз рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░рд┐рдгрд╛рдо

рдЕрдм рд░реВрд╕реА рдХрдВрдкрдиреА 1 рд╕реА рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рджрд┐рдд рд▓реЗрдЦрд╛рдВрдХрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╡рд┐рд╢реЗрд╖ рднрд╛рд╖рд╛ "1 рд╕реА рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ" рдХреЛ рд▓реЗрдВред

рдкрд░рд┐рдгрд╛рдо: рднрд╛рд╖рд╛: "1 рд╕реА рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ": 551 рдЙрдкрд▓рдмреНрдз рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░рд┐рдгрд╛рдо

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ? рдирд╣реАрдВ, рд╡реЗ рд╣реИрдВред рдРрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреБрдХреНрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдкрдиреА " рд╕рд┐рд▓реНрд╡рд░ рдмреБрд▓реЗрдЯ " рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рд╕реЛрдирд╛рд░рдХреНрдпреВрдм 1 рд╕реА (рдмреАрдПрд╕рдПрд▓) рдкреНрд▓рдЧрд┐рди рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╢реЗрд╖ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдордПрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрдард┐рди рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛ред

рдкрд╛рдБрдЪрд╡реА рдмрд╛рд░реАред C, C ++, #include ред

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

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

рдПрдХ рд╕рд╛рд░ рд╕реА / рд╕реАрдкреАрдкреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдЖрдк GitHub рд╕реЗ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реАрдкреАрдкреА рдлрд╝рд╛рдЗрд▓ рдЪреБрдиреЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред рдЕрдм рд╣рдо рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╕рдм рдПрдордПрд▓ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдкрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдордиреЗ GitHub рд╕реЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ред рд╣рдо рдкреИрдЪ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдВрдкрд╛рджрди рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдПрдХ .cpp рдлрд╝рд╛рдЗрд▓ рд╣реИред

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

рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдкрд╣рд▓реЗ, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:

 bool Class::IsMagicWord() { return m_name == "ML"; } 

рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

 bool Class::IsMagicWord() { return strcmp(m_name, "ML") == 0; } 

рдХреНрдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (x == "y") рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди forstrcmp (x, "y")?

рд╡рд░реНрдЧ рдореЗрдВ m_name рд╕рджрд╕реНрдп рдХреИрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдЖрдк рдЙрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реЗ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

 class Class { .... char *m_name; }; class Class { .... std::string m_name; }; 

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

рдХреНрд▓рд╛рд╕ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╣ C рдФрд░ C ++ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдпрджрд┐ рдХреЛрдИ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рд╡рд╣ рдпрд╛ рддреЛ рдзреЛрдЦрд╛рдзрдбрд╝реА рд╣реИ, рдпрд╛ рдХреЗрд╡рд▓ рд╕реА рдпрд╛ + ++ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реИред

рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╣реА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╣рд╛рдБ рдФрд░ рдХрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред рдЖрдкрдХреЛ рдпрд╣ рднреА рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ cpp рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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



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

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

рд╕рдм рдХреЗ рдмрд╛рдж, рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдмреАрдорд╛ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдм рдмрд╣реБрдд рдХрдард┐рди рдФрд░ рд╢реНрд░рдо-рдЧрд╣рди рд╣реИред C рдФрд░ C ++ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, GitHub рдкрд░ рд╕реНрдерд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

рдиреЛрдЯред рдпрджрд┐ рдкрд╛рдардХ рдХреЛ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рдХреА рдЧрд╣рд░рд╛рдИ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рд╣рдо рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдпреЛрдЧ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред GitHub рд╕реЗ рджрд╕-рдордзреНрдп рдЖрдХрд╛рд░ рдХреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд▓реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ .cpp рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдкреВрд░реНрд╡рдкреНрд░рдХрд░рдгрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЗрд╕ рдХрд╛рд░реНрдп рдХреА рд╢реНрд░рдорд╢реАрд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ :)ред

рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ C рдФрд░ C ++ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред

рдЫрдареА рдмрд╛рд░реАред рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреА рдХреАрдорддред

рд╕реНрдЯреЗрдЯрд┐рдХ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рдг рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЭреВрдареА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рджрд╛рди рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдм рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдорд╛рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ V789 рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗ , рд▓реВрдк рдХреЗ рд▓рд┐рдП рд░реЗрдВрдЬ-рдЖрдзрд╛рд░рд┐рдд рдЕрдВрджрд░ рдХрдВрдЯреЗрдирд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ ред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рд▓рд┐рдЦрддреЗ рд╕рдордп рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рд╡рдзрд╛рди рдирд╣реАрдВ рдереЗ, рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд▓реВрдк рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рд╡рд╣ рдХреЛрдб рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рджреЗрддрд╛ рд╣реИ:

 std::vector<int> numbers; .... for (int num : numbers) { if (num < 5) { numbers.push_back(0); break; // or, for example, return } } 

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

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

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

рд╕рд╛рддрд╡реАрдВ рдмрд╛рд░реАрдХрд┐рдпрд╛рдБред рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рд▓рдВрдмреА рдкреВрдВрдЫред

рдкрд╣рд▓реЗ, рд╣рдо рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ (рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд▓реЗ, WinAPI, рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЖрджрд┐ рд╕реЗ) рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИред

рдпрджрд┐ рд╣рдо рд╕реНрдЯреНрд░реИрдореНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕реА рднрд╛рд╖рд╛ рд╕реЗ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реАрдЦрдиреЗ рдХрд╛ рдПрдХ рдЖрдзрд╛рд░ рд╣реИред GitHub, рдЙрдкрд▓рдмреНрдз рдХреЛрдб рдкрд░рд┐рдгрд╛рдо:

  • strcmp - 40,462,158
  • рд╕реНрдЯреНрд░рд┐рдХрдореНрдк - 1,256,053

рд╣рд╛рдВ, рдЙрдкрдпреЛрдЧ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рд╢рд╛рдпрдж рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдкреИрдЯрд░реНрди:

  • рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдЕрдЧрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЦреБрдж рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдЕрдЧрд░ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ NULL рд╣реИред рдпрд╣ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рдХреНрдпрд╛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ? рдирд╣реАрдВред рдпрд╣рд╛рдВ рд╣рдо "рд▓рдВрдмреА рдкреВрдВрдЫ" рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рдмрд╣реБрдд рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ "рд▓рдВрдмреА рдкреВрдВрдЫ" рдХрд╛ рдмрд┐рдВрджреБред рдПрдХ рдХрд┐рддрд╛рдмреЛрдВ рдХреА рджреБрдХрд╛рди рдореЗрдВ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдЕрдм рдкрдврд╝реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рддрд╛рдмреЛрдВ рдореЗрдВ рд╕реЗ Top50 рдХреЛ рдмреЗрдЪрдирд╛ рдЕрд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рд╣реИред рд╣рд╛рдВ, рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реА рдкреБрд╕реНрддрдХ рдЦрд░реАрджреА рдЬрд╛рдПрдЧреА, рдЬреЛ рдХрд╣рддреА рд╣реИ, рдЗрд╕ рд╕реВрдЪреА рдХреА рдкреБрд╕реНрддрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 100 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдп рдЕрдиреНрдп рдкреБрд╕реНрддрдХреЛрдВ рд╕реЗ рдмрдиреА рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рдардХ рдЦреЛрдЬреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ Amazon.com 130,000 "рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд╕реНрддреБрдУрдВ" рд╕реЗ рдмрд╛рд╣рд░ рдХреЗ рдореБрдирд╛рдлреЗ рд╕реЗ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░реНрдп рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВред рдЕрд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреБрд▓рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд╣реИрдВ:

  • g_ascii_strncasecmp - 35,695
  • lstrcmpiA - 27,512
  • _wcsicmp_l - 5,737
  • _strnicmp_l - 5,848
  • _mbscmp_l - 2,458
  • рдФрд░ рдЕрдиреНрдпред

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

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ, рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕рдордп рддрдХ C рдФрд░ C ++ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 7,200 рдХрд╛рд░реНрдп рдХрд┐рдП рдЧрдП рдереЗред рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдо рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

  • WinAPI
  • рдорд╛рдирдХ рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА,
  • рдорд╛рдирдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (STL),
  • glibc (GNU C рд▓рд╛рдЗрдмреНрд░реЗрд░реА)
  • рдХреНрдпреВрдЯреА
  • MFC
  • zlib
  • libpng
  • OpenSSL
  • рдФрд░ рдЕрдиреНрдпред

рдПрдХ рдУрд░, рдпрд╣ рдПрдХ рдореГрдд-рдЕрдВрдд рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдЖрдк рд╕рдм рдХреБрдЫ рдПрдиреЛрдЯреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

рдЖрдк рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд╡рдпрдВ ML рдкрд░ рдирд┐рд░реНрдорд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреИрдЯрд░реНрди рдкрд╛рдПрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдиреЛрдЯреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рдБ, рдпрд╣ рд╕рдЪ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдПрдиреЛрдЯреЗрдХ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдЯреНрд░реИрдореНрдк рдпрд╛ рдореЙрд▓реЛрдХ ред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓реЗрдВ, рдЬреИрд╕реЗ рдХрд┐ _fread_nolock ред рдмреЗрд╢рдХ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝реНрд░реЗрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╣реА рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдлрд░ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЖрдХрд╛рд░ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рдЖрдк рдРрд╕рд╛ рдЧрд▓рдд рдХреЛрдб рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

 int buffer[10]; size_t n = _fread_nolock(buffer, size_of(int), 100, stream); 

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 C_"size_t _fread_nolock" "(void * _DstBuf, size_t _ElementSize, size_t _Count, FILE * _File);" ADD(HAVE_STATE | RET_SKIP | F_MODIFY_PTR_1, nullptr, nullptr, "_fread_nolock", POINTER_1, BYTE_COUNT, COUNT, POINTER_2). Add_Read(from_2_3, to_return, buf_1). Add_DataSafetyStatusRelations(0, 3); 

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

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

 #define fread_unlocked _fread_nolock 

рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИрдВ?
  1. рдХреБрдЫ рдордд рдХрд░реЛред рдпрд╣ рдХрд╣реАрдВ рдирд╣реАрдВ рд╣реИред
  2. рдЬрд░рд╛ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕реИрдХрдбрд╝реЛрдВ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрдХрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╕рд┐рдЦрд╛рдПрдВ рддрд╛рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрдлрд░ рдФрд░ рдУрд╣рд░ рддрд░реНрдХреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░рд╕рдВрдмрдВрдз рдХреЛ рд╕рдордЭреЗред рд╣рд╛рдВ, рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд░реНрдерд┐рдХ рд░реВрдк рд╕реЗ рддрд░реНрдХрд╣реАрди рд╣реИред рдпрд╣ рдПрдХ рдбреЗрдб-рдПрдВрдб рд╕реНрдЯреНрд░реАрдЯ рд╣реИред
  3. рдЖрдк рд╣рдорд╛рд░реЗ рд╕рд╛рде рдПрдХ рддрд░рд╣ рд╕реЗ рдЖ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛, рд╕рдордЭрджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдордПрд▓ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЗрд╕рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ :)ред рдпрд╣ рд╕реНрдЯреИрдЯрд┐рдХ рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рддрд░реАрдХреЗ рдХрд╛ рдПрдХ рдлреЗрдВрдХ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдордПрд▓ рдФрд░ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд▓рдВрдмреА рдкреВрдВрдЫ рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИрдВред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдПрдордПрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЛрдЧ рдереЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЖрдкрддреНрддрд┐ рдЬрддрд╛рдИ рдФрд░ рдХрд╣рд╛ рдХрд┐ рд╣рдордиреЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдерд╛ рдЬрдм рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реАрдЦреЗрдВрдЧреЗ рдФрд░ рд╡реЗ рдЬреЛ рдХрд░ рд░рд╣реЗ рдереЗ рдЙрд╕рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗред рдпрд╣рд╛рдБ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдпрд╛ рддреЛ рд╣рдо рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ, рдпрд╛ рд╡реЗ рд╣рдорд╛рд░реА рдмрд╛рдд рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВред

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

рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рдХрд╛рдп рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦреЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рдореЗрдореЛрд╡ ред рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 void *memmove (void *dest, const void *src, size_t len) { return __builtin___memmove_chk(dest, src, len, __builtin_object_size(dest, 0)); } 

__Builtin___memmove_chk рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рд╣реИред

рдпрд╛ рдореЗрдореНрдореЛрд╡ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдВрд╕реНрдХрд░рдг ред рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╕рд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЧрд▓рдд рд▓рдЧрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдХрднреА-рдХрднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХреЛрдб рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рднреА рдЬрд╛рдирддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдордПрд▓ рдХреЛ рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рд╕реЗ рднрд╛рд░реА рд▓рд╛рдн рдорд┐рд▓рддрд╛ рд╣реИред

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

рдЕрдиреНрдп рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ

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

  • Outdated recommendations. As mentioned, languages change, and recommendations for their use change, respectively. If the analyzer learns on old source code, it might start issuing outdated recommendations at some point. Example. Formerly, C++ programmers have been recommended using auto_ptr instead of half-done pointers. This smart pointer is now considered obsolete and it is recommended that you use unique_ptr .
  • Data models. At the very least, C and C++ languages have such a thing as a data model . This means that data types have different number of bits across platforms. If you don't take this into account, you can incorrectly teach the analyzer. For example, in Windows 32/64 the long type always has 32 bits. But in Linux, its size will vary and take 32/64 bits depending on the platform's number of bits. Without taking all this into account, the analyzer can learn to miscalculate the size of the types and structures it forms. But the types also align in different ways. All this, of course, can be taken into account. You can teach the analyzer to know about the size of the types, their alignment and mark the projects (indicate how they are building). However, all this is an additional complexity, which is not mentioned in the research articles.
  • Behavioral unambiguousness. Since we're talking about ML, the analysis result is more likely to have probabilistic nature. That is, sometimes the erroneous pattern will be recognized, and sometimes not, depending on how the code is written. From our experience, we know that the user is extremely irritated by the ambiguity of the analyzer's behavior. He wants to know exactly which pattern will be considered erroneous and which will not, and why. In the case of the classical analyzer developing approach, this problem is poorly expressed. Only sometimes we need to explain our clients why there is a/there is no analyzer warning and how the algorithm works, what exceptions are handled in it. Algorithms are clear and everything can always be easily explained. An example of this kind of communication: " False Positives in PVS-Studio: How Deep the Rabbit Hole Goes ". It's not clear how the described problem will be solved in the analyzers built on ML.

Conclusions


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

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

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

рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдЖрд▓рд╛ рднрд░ рджреЗрдЧреА, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдПрдордПрд▓ рдХреЗ рдкрд░рд┐рдЪрдп рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрдХрдиреАрдХ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЕрддрд┐рд░рдВрдЬрд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдкреБрдирд╢реНрдЪ


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

Luddites


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

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

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЖрдкрдХреЛ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ "рдЖрдкрдХреЛ рдЕрдкрдиреА рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЪрдпрди рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред "

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


All Articles