рд╕рдВрдХрд▓рдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдкрд░рд┐рдЪрдп

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


рдпрджрд┐ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рд╕рдлрд▓ рд╣реИ, рддреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдк рд╕рдВрдХрд▓рдХреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЕрдиреНрдп 15-рдорд┐рдирдЯ рдХреЗ "рд╕реНрдХреЗрдЪ" рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреА


рдЪрд▓реЛ рдПрдХ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рдВрдХрд▓рдХ рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХ рдЬреЛ рд╕реНрд░реЛрдд рдкрд╛рда рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдкреЛрд▓рд┐рд╢ рдиреЛрдЯреЗрд╢рди рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ (рдЗрд╕реЗ RPN рдпрд╛ POLIZ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдордзреНрдпрд╡рд░реНрддреА рдХреЛрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣рд╛рдБ рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдо рддреБрд░рдВрдд рдкрд░рд┐рдгрд╛рдо рдХреЛ C рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред рдпрд╛рдиреА рд╣рдореЗрдВ RPN рд╕реЗ C рддрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдорд┐рд▓рддрд╛ рд╣реИред


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


рдПрдл # рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ( gsomix рджреНрд╡рд╛рд░рд╛):
рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг
рдПрд╕рдПрд╕рдП рд╕рдВрд╕реНрдХрд░рдг


рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реЗ


def scan(source): tokens = source.split() return [("Push", int(x)) if x[0].isdigit() else ("Op", x) for x in tokens] 

рд╣рдордиреЗ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ? рд╕реНрдХреИрди рдлрд╝рдВрдХреНрд╢рди рд░рд┐рд╡рд░реНрд╕ рдкреЛрд▓рд┐рд╢ рдиреЛрдЯреЗрд╢рди ("2 2 +") рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред


рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


 [ ('Push', 2), ('Push', 2), ('Op', '+') ] 

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


рд╕реА рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


 def trans(ir): code = [] for tag, val in ir: if tag == "Push": code.append("st[sp] = %d;" % val) code.append("sp += 1;") elif tag == "Op": code.append("st[sp - 2] = st[sp - 2] %s st[sp - 1];" % val) code.append("sp -= 1;") return "\n".join(code) 

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдЖрдЗрдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦреЗрдВ ("2 2 +" рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред


 st[sp] = 2; sp += 1; st[sp] = 2; sp += 1; st[sp - 2] = st[sp - 2] + st[sp - 1]; sp -= 1; 

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


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


рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рддреИрдпрд╛рд░ рдХрдореНрдкрд╛рдЗрд▓рд░


 ST_SIZE = 100 C_CODE = r"""#include <stdio.h> int main(int argc, char** argv) { int st[%d], sp = 0; %s printf("%%d\n", st[sp - 1]); return 0; }""" def scan(source): tokens = source.split() return [("Push", int(x)) if x[0].isdigit() else ("Op", x) for x in tokens] def trans(ir): code = [] for tag, val in ir: if tag == "Push": code.append("st[sp] = %d;" % val) code.append("sp += 1;") elif tag == "Op": code.append("st[sp - 2] = st[sp - 2] %s st[sp - 1];" % val) code.append("sp -= 1;") return "\n".join(code) def rpn_to_c(source): return C_CODE % (ST_SIZE, trans(scan(source))) print(rpn_to_c("2 2 +")) 

рдпрд╣ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред


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


рдПрд╕рдПрд╕рдП рдлреЙрд░реНрдо рд╕рдВрдХрд▓рдХ


рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╢реАрд░реНрд╖рдХ рдкрд╕рдВрдж рд╣реИ? рдПрд╕рдПрд╕рдП - рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдареЛрд╕ рд▓рдЧрддрд╛ рд╣реИред рдФрд░ рдЕрдм рд╣рдо рдЗрд╕реА SSA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдХреНрдпрд╛ рд╣реИ? рдЪрд▓реЛ рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред


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


рдпрд╣рд╛рдБ рд╣рдорд╛рд░рд╛ рдирдпрд╛ рд╕рдВрдХрд▓рдХ рд╣реИред


 C_CODE = r"""#include <stdio.h> int main(int argc, char** argv) { %s printf("%%d\n", %s); return 0; }""" def scan(source): tokens = source.split() return [("Push", int(x)) if x[0].isdigit() else ("Op", x) for x in tokens] def trans(ir): stack, code = [], [] name_cnt = 0 for tag, val in ir: if tag == "Push": code.append("int t%d = %d;" % (name_cnt, val)) stack.append("t%d" % name_cnt) name_cnt += 1 elif tag == "Op": a, b = stack.pop(), stack.pop() code.append("int t%d = %s %s %s;" % (name_cnt, b, val, a)) stack.append("t%d" % name_cnt) name_cnt += 1 return "\n".join(code), stack.pop() def rpn_to_c(source): return C_CODE % trans(scan(source)) print(rpn_to_c("2 2 +")) 

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


рдпрд╣рд╛рдБ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рд╣реИ:


 #include <stdio.h> int main(int argc, char** argv) { int t0 = 2; int t1 = 2; int t2 = t0 + t1; printf("%d\n", t2); return 0; } 

рдкрд░рд┐рдгрд╛рдо


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдВрдпреБрдХреНрдд рдкрд╛рда рдХрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдХ рднрд╛рд╖рд╛ рд╕реЗ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рдереЗред рдЗрд╕реЗ рд╕реНрд░реЛрдд-рд╕реЗ-рд╕реНрд░реЛрдд рдЕрдиреБрд╡рд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛ - рд╕рд┐рд░реНрдл рдПрдХ рдЕрдиреБрд╡рд╛рдж, рдЬрд┐рд╕реЗ рд╕рдВрдХрд▓рди рдХрд╛ рдкрд░реНрдпрд╛рдп рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╕реЗ рдирд┐рдореНрди-рд╕реНрддрд░ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рд╕реНрд░реЛрдд-рд╕реЗ-рд╕реНрд░реЛрдд рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рд▓рд┐рдП buzzword "transpiler" рднреА рд╣реИред рд▓реЗрдХрд┐рди "рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░" рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╕рдВрдХрд▓рдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ!


рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ!

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


All Articles