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

рд╢рд╛рдпрдж рдХреЛрдИ рдЙрдкрд╛рдп рд╣реИред рдЬреВрд▓рд┐рдпрд╛ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдФрд░ рд▓рдЪреАрд▓рд╛ рдЕрднреА рддрдХ рддреЗрдЬ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИред рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдкрд╛рд╕ рдХрдИ рдкреНрд░реЗрд╖рдг, рдПрдХ рдПрдХреАрдХреГрдд рд╕реНрдорд╛рд░реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЙрдкрдХрд░рдг рд╣реИрдВред
Gleb Ivashkevich (
phtRaveller ),
рдбреЗрдЯрд╛рд░реАрдереЗрдорд┐рдХреНрд╕ рдХреЗ рд╕рдВрд╕реНрдерд╛рдкрдХ, рдЬреЛ рдЙрджреНрдпреЛрдЧ рдФрд░ рдЕрдиреНрдп рдЙрджреНрдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдкреВрд░реНрд╡ рднреМрддрд┐рдХ рд╡рд┐рдЬреНрдЮрд╛рдиреА, рдЖрдкрдХреЛ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдмрддрд╛рдПрдЧрд╛ред
Gleb рд╕рдордЭрд╛рдПрдЧрд╛ рдХрд┐ рдирдИ рднрд╛рд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдкрд╛рдпрдерди рдХреНрдпреЛрдВ рдЧрд╛рдпрдм рд╣реИред рд╡рд╣ рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЗрд╕рдХреА рддрд╛рдХрдд рдФрд░ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдФрд░ рджрд┐рдЦрд╛рдПрдВ рдХрд┐ рднрд╛рд╖рд╛ рдореЗрдВ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреНрдпрд╛ рд╣реИред
рдЕрд╕реНрд╡реАрдХрд░рдгред рдХреЛрдИ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╣рдмреНрд░рд╛рдЬрд╝рд┐рдЯреЗрд▓реА рдиреЗ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓реВрдк рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИредрджреЛ рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕рдорд╕реНрдпрд╛
рдпрджрд┐ рдЖрдк рдХреЛрдб рдлрд╛рд╕реНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдЪрд▓рддреЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓рд┐рдЦреЗрдВред
рдХреНрд▓рд╛рд╕рд┐рдХ рдкрд╛рдпрдерди рдкрд╣рд▓реА рд╢реНрд░реЗрдгреА рдореЗрдВ рдЖрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк NumPy рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рд╢реБрджреНрдз рдкрд╛рдпрдерди рдореЗрдВ рдХреБрдЫ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рджреВрд╕рд░реА рдУрд░, C рдФрд░ C ++ рдЬреИрд╕реА рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВред рдПрдХ рд╕рдВрддреБрд▓рди рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдХреНрд╕рд░ рд╡реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рд▓рдЪреАрд▓реЗрдкрди рдкрд░ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реЗ рдЗрд╕реЗ рддреЗрдЬреА рд╕реЗ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдпрд╣
рджреЛ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: рдПрдХ рд▓рдВрдмрд╛ рдЪрдХреНрд░ рдЬрдм рдЖрдкрдХреЛ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕реА рдпрд╛ рд╕рд╛рдЗрдерди рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдФрд░ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдХреЗ рд╕реНрдкреЗрд╢рд▓рд┐рд╕реНрдЯреНрд╕ рдореЗрдВ NumPy, Sklearn, TensorFlow рд╣реИред рд╡реЗ рд╕реА рдореЗрдВ рдПрдХ рдПрдХрд▓ рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд┐рдирд╛ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рд╕реНрд╡рдпрдВ
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ NumPy рдпрд╛ TensorFlow рдореЗрдВ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рдпрдерди рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрдЯрд▓рдВрдЧрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИред рдЕрдВрджрд░ рдмрд┐рд▓реНрдХреБрд▓ C / Fortran (NumPy рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдпрд╛ C ++ (TensorFlow рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рд╣реИред
рдпрд╣ "рд╕реБрд╡рд┐рдзрд╛" рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PyTorch рдореЗрдВ, рд▓реЗрдХрд┐рди Numpy рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЧрдгрдирд╛ рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдкрд╛рдпрдерди рдЪрдХреНрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рддреЛ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ред рдЙрддреНрдкрд╛рджрдХ рдХреЛрдб рдореЗрдВ, рдЫреЛрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ NumPy рдЗрд╕реЗ рд╡реЗрдХреНрдЯрд░ рдХрд░ рд╕рдХреЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдЧрдгрдирд╛ рдХрд░ рд╕рдХреЗред
рдЗрд╕реА рд╕рдордп, рдпрд╣ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреНрдпреВрдордкреА рддреЗрдЬ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП NumPy рдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИред
- NumPy рдкрд╛рдпрдерди рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рдЦреНрдд рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рд╣реИ ред рдпрджрд┐ рд╕рд░рдгреА рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐
Float64
рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред - рднреЗрдЬрдиреЗред рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЦреБрдж рдХреЗ рдЕрдВрджрд░ NumPy рдпрд╣ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреНрд▓рд╛рд╕рд┐рдХ рдкрд╛рдпрдерди рдХреЛ рд╕рдВрдЧрдгрдирд╛ рдкрд╛рд╢ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧреАред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ Numpy рдЙрддрдирд╛ рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐
рд╕рд╛рдЗрдереЙрди рдпрд╛
рдиреБрдореНрдмрд╛ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред рдкрд╣рд▓рд╛ рдкрд╛рдпрдерди рдФрд░ рд╕реА рдХреЗ "рд╣рд╛рдЗрдмреНрд░рд┐рдб" рд╕реЗ рд╕реА-рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдкрд╛рдпрдерди рдореЗрдВ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рддреЗрдЬреА рд╕реЗ рд╣реЛрддрд╛ рд╣реИред
рдЕрдЧрд░ рдиреБрдореНрдкреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддрдиреА рд╣реА рддреЗрдЬ рдереА, рдЬрд┐рддрдирд╛ рдХрд┐ рдмрд╣реБрддреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рд╕рд╛рдЗрдерди рдФрд░ рдиреБрдореНрдмрд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рд╣рдо рд╕рд╛рдЗрдереЙрди рдореЗрдВ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЕрдЧрд░ рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдХреБрдЫ рдмрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рд╛рдЗрдерди рдореЗрдВ рдПрдХ рдЖрд╡рд░рдг рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдирджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореЗрдВ рд╢реБрджреНрдз рдкрд╛рдпрдерди рдХреЙрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реИред
рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг: рд╣рдо рдкреНрд░рдХрд╛рд░ (рдЕрдЪреНрдЫрд╛) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдпрд╛ рдЬреЛрдбрд╝рддреЗ рдирд╣реАрдВ рд╣реИрдВ (рдЦрд░рд╛рдм), рдФрд░ рд╣рдореЗрдВ рджреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдХрд▓реНрдк рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВред

рдЬрдм рд╣рдо C рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:
__pyx_t_4 = __pyx_v_i; __pyx_v_result = (__pyx_v_result + (*((double *) ( (__pyx_v_a.data + __pyx_t_4 * __pyx_v_a.strides[0]) ))));
рдФрд░ рджреВрд╕рд░реЗ
result =0.
рдЗрд╕ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛:
__pyx_t_6 = PyFloat_FromDouble((*((double *) ( (__pyx_v_a.data + __pyx_t_4 * __pyx_v_a.strides[0]) )))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_7); __pyx_t_7 = 0;
рдЬрдм рдПрдХ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реА рдХреЛрдб рддреЗрдЬ рдЧрддрд┐ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдпрдерди рджреЗрдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реА рд╕рд╛рдЗрдб рд╕реЗ: рдорд╛рдирдХ рдкрд╛рдпрдерди рдХреЙрд▓, рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ
double
рд╕реЗ
float
рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓рд┐рдВрдХ рдЧрд┐рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрдЪрд░рд╛ рдХреЛрдбред рдпрд╣ рдХреЛрдб рдзреАрдорд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рд░ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ
рдпрд╣ рдордЬреЗрджрд╛рд░ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╢реБрджреНрдз рдкрд╛рдпрдерди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред
- рд╕рд╛рдЗрдерди рдпрд╛ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдРрд╕реЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╕рд╛рдЗрдереЙрди рдХреЛрдб рдХреЛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдкрд╛рдпрдерди рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рд╕реБрдЦрдж рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ: рд╕рд╛рдЗрдерди рдореЗрдВ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рд╕рдордп рд╡реНрдпрддреАрдд рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рд╕реА рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╛рдпрдерди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рдХреЛрдб рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
- Numba рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреЛ рдПрдХ JIT рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣
рдЬреВрд▓рд┐рдпрд╛ рд╣реИ ред
рдЬреВрд▓рд┐рдпрд╛
рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ
рддреЗрдЬ ,
рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдФрд░
рд▓рдЪреАрд▓реА рднрд╛рд╖рд╛ рд╣реИ, рдЬреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╛рдпрдерди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЬреВрд▓рд┐рдпрд╛ рдПрдХ
рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рддрд░рд╣ рд╣реИ
: рдЖрдкрдХреЛ рд╕реА рдореЗрдВ рдЬреЛ рдХрд░рдирд╛ рд╣реИ, рд╡рд╣ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╕рд╣рд┐рдд рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдХрдо-рд╕реНрддрд░ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЖрдк рдПрдХ рдирд┐рдпрдорд┐рдд рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдкрд╛рдпрдерди рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рдеред
рдЬреВрд▓рд┐рдпрд╛
рдЬрд╕реНрдЯ-рдЗрди-рдЯрд╛рдЗрдо рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдЙрди рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рднрд╛рд╖рд╛ рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рдереАред рдЬреВрд▓рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдорд┐рд▓рддрд╛ рд╣реИред
рдпрджреНрдпрдкрд┐ рдЬреВрд▓рд┐рдпрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдХреА рддрд░рд╣ рд▓рдЧрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реА рд╣реИ, рдЬреВрд▓рд┐рдпрд╛ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Django рдХреЗ рдмрдЬрд╛рдп рдЬреВрд▓рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред
рдЖрдЗрдП рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдХ рдЖрджрд┐рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВред
function f(x) ╬▒ = 1 + 2x end julia> methods(f)
рдЗрд╕ рдХреЛрдб рдореЗрдВ рдЪрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред
- рдпреВрдирд┐рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ ред рдЖрдк рдЧрд╣рд░реА рд╢рд┐рдХреНрд╖рд╛ рдпрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореЙрдбрд▓рд┐рдВрдЧ рдкрд░ рдПрдХ рд▓реЗрдЦ рд╕реЗ рд╕реВрддреНрд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╣реА рд╡рд░реНрдг рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ - рдпреВрдирд┐рдХреЛрдб рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рд╕рд┐рд▓рдирд╛ рд╣реИред
- рдХреЛрдИ рдЧреБрдгрди рдЪрд┐рд╣реНрди рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2.x (рдПрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдирдВрдмрд░ рдПрдХреНрд╕) рдЬреВрд▓рд┐рдпрд╛ рдХрд╕рдо рдЦрд╛рдПрдЧреАред
- рдХреЛрдИ
return
рдирд╣реАрдВ ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк return
рд▓рд┐рдЦреЗрдВ рддрд╛рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг ╬▒
рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред - рдХреЛрдИ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЧрддрд┐ рд╣реИ, рддреЛ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдЪрд╛рд╣рд┐рдП? рд╣рд╛рдВ, рд╡реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВред
рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рддреАрди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рдЧрддрд┐ рджреЗрддреЗ рд╣реИрдВ:
рдХрдИ рдкреНрд░реЗрд╖рдг, рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░рд╡рд╛рдж ред рд╣рдо рдкрд╣рд▓реЗ рджреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирд╛рдВрддрд░ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред
рдПрдХрд╛рдзрд┐рдХ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ
methods(f)
рд▓рд┐рдП рдХреЙрд▓ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ - рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ? рд╣рдо рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдХреНрд╖рд╛ рдХреА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЕрдВрджрд░ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рднрд╛рд╖рд╛ рдХрдИ рдкреНрд░реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред
рдорд▓реНрдЯреАрдкрд▓ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдкреВрд░реЗ рд╕реЗрдЯ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
function f(x) ╬▒ = 1 + 2x end function f(x::AbstractFloat) ╬▒ = 1 + sin(x) end julia> methods(f)
рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рд╡рд┐рдзрд┐рдпрд╛рдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ рджреЛ рд╣реИрдВ: рд╕рднреА рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛, рдФрд░ рджреВрд╕рд░рд╛ рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдПред рдЬрдм рд╣рдо рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬреВрд▓рд┐рдпрд╛ рддрдп рдХрд░реЗрдЧреА рдХрд┐ рдХрд┐рд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреБрд▓рд╛рдпрд╛ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рд╣рдо рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЗ рдУрдУрдкреА рдХреЗ рдЕрд░реНрде рдореЗрдВ рдЯрд╛рдЗрдк рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╣ рдлрд╝реАрд▓реНрдб рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐
рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╛рди рдкреВрд░реНрдг-рдкреВрд░реНрдг рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рд╣реИред
рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рдореИрдХреНрд░реЛрдЬрд╝ рд╣реИрдВред рд╡реЗ
@
рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ,
@which
рдореИрдХреНрд░реЛ
@which
рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
@which
рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреВрд▓рд┐рдпрд╛ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЪреВрдВрдХрд┐ 2 рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣
AbstractFloat
рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрд╕рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣
Float
рдерд╛
Float
рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рд▓рдЧрднрдЧ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдПрд▓рдПрд▓рд╡реАрдПрдо рдФрд░ рдЬреЗрдЖрдИрдЯреА
рдЬреВрд▓рд┐рдпрд╛ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП LLVM рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред JIT рд╕рдВрдХрд▓рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рднрд╛рд╖рд╛ рдкреИрдХ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреВрд▓рд┐рдпрд╛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдХреЙрд▓ рдХреЗ рд╕рдордп рдлрд╝рдВрдХреНрд╢рди рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрдХрд▓рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ
- рд╕рдВрдХрд▓рдХ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдЪрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрд▓рдПрд▓рд╡реАрдПрдо рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрддреНрдкрд╛рдж рд╣реИред
- рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдиреНрдирдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
- рдЬреВрд▓рд┐рдпрд╛ рдФрд░ рдиреБрдореНрдмрд╛ рдХрд╛ рд╕рдВрдХрд▓рди рд╕рдорд╛рди рд╣реИ ред Numba рдореЗрдВ, рдЖрдк рдПрдХ JIT рдбреЗрдХреЛрд░реЗрдЯрд░ рднреА рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди Numba рдореЗрдВ рдЖрдк рдЗрддрдирд╛ "рдирд╣реАрдВ" рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
рд╕рдВрдХрд▓рдХ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдп рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
function f(x) ╬▒ = 1 + 3x end julia> @code_llvm f(2) define i64 @julia_f_35897(i64) { top: %1 = mul i64 %0, 3 %2 = add i64 %1, 1 ret i64 %2 }
рдореИрдХреНрд░реЛ
@code_llvm
рдЖрдкрдХреЛ рдкреАрдврд╝реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣
рдПрд▓рдПрд▓рд╡реАрдПрдо рдЖрдИрдЖрд░ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ , рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдбрд╛рдВрддрд░рдХред
рдХреЛрдб рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдХреЛ 3 рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, 1 рдХреЛ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕реАрдзрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 3 рдХреЛ 2 рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
function f(x) ╬▒ = 1 + 2x end julia> @code_llvm f(2) define i64 @julia_f_35894(i64) { top: %1 = shl i64 %0, 1 %2 = or i64 %1, 1 ret i64 %2 }
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ: 2, 3, 10? рд▓реЗрдХрд┐рди рдЬреВрд▓рд┐рдпрд╛ рдФрд░ рдПрд▓рдПрд▓рд╡реАрдПрдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдереЛрдбрд╝рд╛ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рджреЛ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рдПрдХ рдмрд╛рдИрдВ рдУрд░ рдПрдХ рдмрд┐рдЯ рд╣реИ - рдпрд╣ рдЙрддреНрдкрд╛рдж рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬ рд╣реИред рд▓реЗрдХрд┐рди, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣
Float
1 рдмрд┐рдЯ
Float
рдмрд╛рдИрдВ рдУрд░ рд╢рд┐рдлреНрдЯ
Float
рдФрд░ 2 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд
Float
рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░
рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рдЙрди рдкрд░ рдПрдХрд╛рдзрд┐рдХ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддрдиреА рд╣реА рддреЗрдЬрд╝ рд╣реЛрдЧреАред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ, рдПрдХрд╛рдзрд┐рдХ рдкреНрд░реЗрд╖рдг рддрдВрддреНрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИред
рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдЪрд░ рдХрд╛ рдХреЛрдИ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдореВрд▓реНрдп рдЙрдирдХреЗ рдкрд╛рд╕ рд╣реИрдВред рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдЪрд░ рдХреЗрд╡рд▓ рдПрдХ рдорд╛рд░реНрдХрд░, рдХреБрдЫ рдХрдВрдЯреЗрдирд░ рдкрд░ рдПрдХ рд▓реЗрдмрд▓ рд╣реЛрддрд╛ рд╣реИред
рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╣реИред рд╣рдо рдареЛрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рдВрд╢рдЬ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ, рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдкрд╛рд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рддреНрд╡рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдкреАрд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬреВрд▓рд┐рдпрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА, рддреЛ рд╡реЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рдФрд░ рдЕрдЧрд░ рдХреБрдЫ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛, рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдордирд╛ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдерд╛ред рдпрд╣ рдПрдХ рднрдпрд╛рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рд╕рд┐рд░ рдкрд╣рд▓реЗ рд╕реЗ рдЕрдВрджрд░ рдХреА рдУрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред
рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдЬреЛ рдХрд┐ C / C ++ рдХреА рддрд░рд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рднреАрддрд░ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ - рдпреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рд╣рдо рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдЖрдорддреМрд░ рдкрд░ рдЗрдирдХреА рдЬрд░реВрд░рдд рддрдм рдкрдбрд╝рддреА рд╣реИ рдЬрдм рдЯрд╛рдЗрдк рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рднреА рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдХреНрдпрд╛ рддреНрд╡рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХрд╛
AbstractPoint
рддрддреНрдХрд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрднрд┐рднрд╛рд╡рдХ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдХрд╣рддреА рд╣реИ рдХрд┐
PlanarPoint{T}
рдЗрд╕ рд╕рд╛рд░ рдмрд┐рдВрджреБ рдХрд╛ рдПрдХ рд╡рдВрд╢рдЬ рд╣реИред рдЦреЗрддреЛрдВ рдХреЗ рдиреАрдЪреЗ рд╢реБрд░реВ - рдпрд╣рд╛рдБ рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдпрд╣рд╛рдВ рдПрдХ
float
,
int
рдпрд╛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓рд╛ рдкреНрд░рдХрд╛рд░ рддреНрд╡рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рд╕рднреА рдХреЗ рд▓рд┐рдП рд╡рдВрд╢рдЬ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡реЗ
рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ ред рдЦреЗрддреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡рд┐рдорд╛рди рдкрд░ рдкрд╣рд▓рд╛ рдмрд┐рдВрджреБ
PlanarPoint
, рдлрд┐рд░ рдЧреЛрд▓реЗ рдкрд░ рдФрд░ рд╕рд┐рд▓реЗрдВрдбрд░ рдкрд░ред рдХрд┐рди рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдмреАрдЪ рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
function describe(p::AbstractPoint) println("Point instance: $p") end
Float64
,
Float32
,
Float16
рдпрд╣ рд╣реЛрдЧрд╛:
function distance(pf::PlanarPoint{T}, ps::PlanarPoint{T}) where T<:AbstractFloat sqrt((pf.x-ps.x)^2 + (pf.y-ps.y)^2) end
рдФрд░ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рджреВрд░реА рдЧрдгрдирд╛ рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
function distance(pf::PlanarPoint{T}, ps::PlanarPoint{T}) where T<:Integer abs(pf.x-ps.x) + abs(pf.y-ps.y) end
рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рдЖрдк рдзреЛрдЦрд╛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
distance(f1, i2)
рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬреВрд▓рд┐рдпрд╛ рд╢рдкрде рд▓реЗрдЧреА: тАЬрдореБрдЭреЗ рдпрд╣ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ! рдЖрдкрдиреЗ рдореБрдЭрд╕реЗ рдРрд╕реЗ рддрд░реАрдХреЗ рдкреВрдЫреЗ, рдФрд░ рдХрд╣рд╛ рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВред рдЖрдкрдиреЗ рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рдХрд┐ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░
float
рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХреИрд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛
int
ред "
рдЧрддрд┐
рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╕рдиреНрди рдереЗ: тАЬрдПрдХ рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди рд╣реИ: рд▓реЗрдЦрди рдЖрд╕рд╛рди рд╣реИ, рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдкрд╛рдпрдерди рдХреЛ рдмрд╛рд╣рд░ рдлреЗрдВрдХреЛ рдФрд░ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЛ! "
рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рд╣рд░ рдлреАрдЪрд░ рддреЗрдЬ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рджреЛ рдХрд╛рд░рдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
- рдбреЗрд╡рд▓рдкрд░ рд╕реЗ ред рдРрд╕реА рдХреЛрдИ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рднреА рдХрд╛рд░реНрдп рддреЗрдЬреА рд╕реЗ рд╣реЛред рдПрдХ рдЕрдиреБрднрд╡рд╣реАрди рдбреЗрд╡рд▓рдкрд░ рд╕реА рдореЗрдВ рднреА рдХреЛрдб рд▓рд┐рдЦреЗрдЧрд╛ рдЬреЛ рдПрдХ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдкрд╛рдпрдерди рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХреА рдЕрдкрдиреА рдЪрд╛рд▓ рдФрд░ рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рди рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╕рдВрдХрд▓рдХ, рдЪрд╛рд╣реЗ рд╡рд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдереИрддрд┐рдХ рдпрд╛ JIT рд╣реЛ, рд╕рднреА рдмреЛрдзрдЧрдореНрдп рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдерд┐рд░рддрд╛ рд╕реЗ ред рдПрдХ рддреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реНрдерд┐рд░рддрд╛ рд▓рд┐рдЦреЗрдВ
рдкреНрд░рдХрд╛рд░ рд╕реНрдерд┐рд░рддрд╛ рдХреНрдпрд╛ рд╣реИ? рдЬрдм рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░реИрдкрд░ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╣реЛрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рд░ рд╡рд╣ рдЪреАрдЬ рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рдХрд╛рдо рдЖрддреА рд╣реИред
рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгред

рдорд╢реАрди рд╕реАрдЦрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░рд┐рд▓реЗ рд╕рдХреНрд░рд┐рдпрдг рд╣реИ: рдпрджрд┐ x> 0, рддреЛ рдЗрд╕реЗ рдЙрд╕реА рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдПрдВ, рдЕрдиреНрдпрдерд╛ рд╢реВрдиреНрдп рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВред рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рдмрд╛рдж рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╢реВрдиреНрдп рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдирдВрдмрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ, рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХред
рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реЗ рднреА рдЕрд░реНрде рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рд╣рдо 0 рд╕реЗ 1 рддрдХ 100 рдкреНрд░рддрд┐ 100 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ 0.5 рд╕реЗ рдмрджрд▓рдХрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдорд╛рдкрддреЗ рд╣реИрдВред рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рд╣реИрдВ: рдмрд┐рдВрджреБ рдФрд░ рдлрд╝рдВрдХреНрд╢рдиред
rand(100,100)
рдмрд╛рдж рдбреЙрдЯ рдХрд╛ рдЕрд░реНрде рд╣реИ "рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВред" рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд╕реНрдХреЗрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЬреВрд▓рд┐рдпрд╛ рдмрд╛рдХреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд▓реВрдк рдХреА рддрд░рд╣ рдкреНрд░рднрд╛рд╡реА рд╣реИред рд▓рд┐рдЦрдиреЗ рдХреЗ
for
рдХреЛрдИ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ - рд╕рдм рдХреБрдЫ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдмрд┐рдВрджреБ рдкрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИрдВ -
рд╕рдорд╕реНрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╣реА рд╣реИ ред рдРрд╕реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рднреНрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЕрдиреБрдорд╛рдирд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдорд┐рд▓реАрд╕реЗрдХрдВрдб, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред
рд╕рд┐рд░реНрдл рдПрдХ рд▓рд╛рдЗрди рдмрджрд▓реЗрдВред

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

рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк (рдмрд╛рдПрдВ) рдореЗрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛
Float64
рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдЖрдк рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдХрдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХреЗрдВред
рдпрд╣ рдЕрднреА рддрдХ рдПрд▓рдПрд▓рд╡реАрдПрдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдмрд▓ рдХрд┐рдП рдЧрдП рдЬреВрд▓рд┐рдпрд╛ рдХреЛрдб,
return 0
рдпрд╛
return 0.0
рдореЗрдВ рдкрд░рд┐рдорд╛рдг рдХреЗ рджреЛ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рд╣реИред
metaprogramming
рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╣ рд╣реИ рдЬрдм рд╣рдо рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рддреЗ-рдлрд┐рд░рддреЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рдпрд╣ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг Django ORM рд╣реИ, рдЬреЛ рдореЗрдЯрд╛рдХреНрд▓рд╛рд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реАрд▓реНрдб рдмрдирд╛рддрд╛ рд╣реИред
рдХрдИ рд▓реЛрдЧ
рдЯрд┐рдо рдкреАрдЯрд░ рдХреЗ рд▓реЗрдЦрдХ,
рдкрд┐рдереЙрди рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдЕрд╕реНрд╡реАрдХрд░рдг рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ:
тАЬрдореЗрдЯрд╛рдХреНрд▓рд╕ рдПрдХ рдЧрд╣рд░рд╛ рдЬрд╛рджреВ рд╣реИ, рдЬрд┐рд╕реЗ 99% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрднреА рднреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдореЗрдЯрд╛рдХреНрд▓рд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдФрд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред тАЭ
рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рд╕реНрдерд┐рддрд┐ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЧрд╣рд░рд╛ рд╣реИ, рдпрд╣ рдкреВрд░реА рднрд╛рд╖рд╛ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЬреВрд▓рд┐рдпрд╛ рдХреЛрдб рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЖрдк рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
julia> x = 4; julia> typeof(:(x+1)) Expr julia> expr = :(x+1) :(x + 1) julia> expr.head :call julia> expr.args 3-element Array{Any,1}: :+ :x 1
рдореИрдХреНрд░реЛрдЬрд╝ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЯреВрд▓реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВ : рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рджреЗрддреЗ рд╣реИрдВ, рд╡реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╕рд╣реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВред рдкрд┐рдЫрд▓реЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдкрд╛рд╕ рдХрд┐рдпрд╛, рдФрд░ рдореИрдХреНрд░реЛ рдиреЗ рдХреЙрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ред рдпрд╣ рд╕рдм рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдЯреНрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИред
рдЖрдк рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рднрд╛рд╡реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдпрджрд┐ рдпрд╣ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
(x+1)
, рддреЛ рдпрд╣
+
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИ (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдлрд╝рдВрдХреНрд╢рди) рдФрд░ рджреЛ рддрд░реНрдХ: рдПрдХ рдЪрд░рд┐рддреНрд░ (рдПрдХ рдХреЛрд▓реЛрди рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЪрд░рд┐рддреНрд░ рд╣реИ ), рдФрд░ рджреВрд╕рд░рд╛ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдерд┐рд░ рд╣реИред
рдПрдХ рдФрд░ рд╕рд░рд▓ рдореИрдХреНрд░реЛ рдЙрджрд╛рд╣рд░рдг:
macro named(name, expr) println("Starting $name") return quote $(esc(expr)) end end julia> @named "some process" x=5; Starting some process julia> x 5
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рдХреЗ рд▓рд┐рдП рдкреНрд░рдЧрддрд┐ рд╕рдВрдХреЗрддрдХ рдпрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ - рдпрд╣ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрдВрддреНрд░ рд╣реИред
рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдХреЙрд▓ рдХреЗ рд╕рдордп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордпред
рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдпрд╣ рдореБрдЦреНрдп рдореИрдХреНрд░реЛ рдлреАрдЪрд░ рд╣реИред - , . , , .
,
Julia тАФ . .
- Julia . .
- , . , , C .
- Julia JIT- . , , , , .
- тАФ . .
- ( ). , . , , .
- Julia тАФ .
рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░
, , Julia . , , data science , , , Python. , Python Pandas, , , , Julia .
Julia , Python 2008 . Python, , Julia. , . , Julia.
( ) Python Julia
. Julia: , , .тАж
. .
- DataFrames.jl .
- JuliaDB , .
- Query.jl . Pandas тАФ - , ..
Plotting .
Matplotlib , Julia. :
VegaLite.jl ,
Plots.jl , ,
Gadfly.jl .
.
TensorFlow , Flux.jl. Flux , , , Keras TensorFlow, . .
Scikit-learn . , , sklearn, , .
XGBoost . , Julia .
?
Jupyter . IDE тАФ Juno, Visual Studio, .
. GPU/TPU . CUDAnative.jl Julia . Julia-, - , . , , , , .
: C, Fortran, Python .
, .
Packaging : Julia: , , ..
, , . , , . ,
PyTorch , TensorFlow, , .
, , , . Julia, , , . ,
,
Zygote.jl . Flux.jl.
julia> using Zygote julia> ╧Ж(x) = x*sin(x) julia> Zygote.gradient(╧Ж, ╧А/2.) (1.0,) julia> model = Chain(Dense(768, 128, relu), Dense(128, 10), softmax) julia> loss(x, y) = crossentropy(model(x), y) + sum(norm, params(model)) julia> optimizer = ADAM(0.001) julia> Flux.train!(loss, params(model), data, optimizer) julia> model = Chain(x -> sqrt(x), x->x-1)
╧Ж
, , , .
Zygote ┬лsource-to-source┬╗: , , .
differentiable programming тАФ тАФ backpropagation , .
Julia : ┬лsource-to-source┬╗ , . , .
Julia ?
, тАФ . .
- , , , тАФ .
, , .
Julia , .
- , , . Julia ┬л┬╗ .
- , API, , .
Moscow Python Conf++ , 27 , Python Julia. , , telegram- MoscowPython.