Dia Tres para programadores: ЁРдДЁРдАЁРдУЁРдС estable y el ЁРдГЁРдФЁРдА como codigo autorreplicante con ЁРдЛЁРдМЁРдЙЁРдНЁРдДЁРдЕ
рддреАрд╕рд░рд╛ рджрд┐рди тАФ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕
рдкрд┐рдЫрд▓реЗ рд╕рдВрджреЗрд╢ рдореЗрдВ рд╣рдордиреЗ ЁРдУЁРдТЁРдЙЁРдП рдХреЛ рдкрд░рддреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рдЕрд▓рдЧрд╛рд╡-рдмрд╛рдзрд╛ (isolation barrier) рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ тАФ рдФрд░ рдпрд╣ рднреА рдХрд┐ рдпрд╣ рдПрдХ architectural feature рд╣реИ, рди рдХрд┐ рд╣рд▓ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдкрдбрд╝рд╛ рдХреЛрдИ bugред
рдЖрдЬ рд╡рд╣ рддрдВрддреНрд░ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рд░ рдЗрдВрдЬреАрдирд┐рдпрд░ architecture рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ:
рдкрд╣рд▓рд╛ рд╕реНрдерд┐рд░ рдкрд░рд┐рд╡реЗрд╢ (environment) deploy рдХрд░рддрд╛ рд╣реИред рдФрд░ рдкрд╣рд▓рд╛ рд╕реНрд╡-рдкреНрд░рддрд┐рдХреГрддрд┐ (self-replicating) рдХреЛрдб compile рдХрд░рддрд╛ рд╣реИред
рдЙрддреНрдкрддреНрддрд┐ 1:9-13
тАЬрдЖрдХрд╛рд╢ рдХреЗ рдиреАрдЪреЗ рдХреЗ рдЬрд▓ рдПрдХ рд╕реНрдерд╛рди рдореЗрдВ рдЗрдХрдЯреНрдареЗ рд╣реЛрдВ тАФ рдФрд░ рд╕реВрдЦреА рднреВрдорд┐ рдкреНрд░рдХрдЯ рд╣реЛредтАЭ
тАЬрдкреГрдереНрд╡реА ЁРдГЁРдФЁРдА (deshe) рдЙрдЧрд╛рдП тАФ рдмреАрдЬрд╡рд╛рд▓реА рдШрд╛рд╕ тАФ рдФрд░ рдЕрдкрдиреА рдЬрд╛рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреА рд╣реА рдмреАрдЬ рд╕рд╣рд┐рдд рдлрд▓рджрд╛рдпреА рд╡реГрдХреНрд╖редтАЭ
рддреАрд╕рд░рд╛ рджрд┐рди рдЬреЛ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ
рджреВрд╕рд░реЗ рджрд┐рди рдХреЗ рдмрд╛рдж рддрдВрддреНрд░ рдХреЗ рдкрд╛рд╕ рдЙрд╕рдХреА рдкрд░рдд-рдЖрдзрд╛рд░рд┐рдд architecture рд╣реИред ЁРдУЁРдТЁРдЙЁРдП рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдмрд▓ (forces) рдЕрдкрдиреЗ-рдЕрдкрдиреЗ domain рдореЗрдВ рдкреГрдердХ рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВред
рдХрд┐рдВрддреБ рдирд┐рд╖реНрдкрд╛рджрди-рдкрд░рд┐рд╡реЗрд╢ (execution environment) ЁРдДЁРдАЁРдУЁРдС (haEretz) рдЕрднреА рднреА рдЕрд╕реНрдерд┐рд░ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╣реИ тАФ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рднреЗрджрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЬрд▓, рд╕рдорд╕реНрдд рдЙрдкрд▓рдмреНрдз рд╕реНрдерд╛рди рдХреЛ рднрд░рддреЗ рд╣реБрдПред рдХреЛрдИ рдареЛрд╕ рд╕рддрд╣ рдирд╣реАрдВред рдХреЛрдИ gradient рдирд╣реАрдВред рдЕрд╡рд╕реНрдерд╛рдУрдВ (states) рдХреЗ рдмреАрдЪ рдХреЛрдИ interface рдирд╣реАрдВред
рдЗрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ тАФ рдЬрдЯрд┐рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ (processes) рдХреЛ deploy рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡реИрдз рдирд┐рд╖реНрдкрд╛рджрди-рдкрд░рд┐рд╡реЗрд╢ рдирд╣реАрдВред
рддреАрд╕рд░рд╛ рджрд┐рди рдХреНрд░рдордмрджреНрдз рд░реВрдк рд╕реЗ рджреЛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:
1. Stabilize runtime environment
- Concentrate waters тЖТ defined bodies
- Expose solid surfaces тЖТ stable execution substrate
- Validate: тЬУ ЁРдИЁРдЕЁРдБ
2. Deploy first self-replicating code
- Initialize: deshe (vegetation protocol)
- Constraints: leminehu (type-safe replication)
- Self-contained: zaro-vo (seed carries full blueprint)
- Validate: тЬУ ЁРдИЁРдЕЁРдБ
рджреЛ рд╕реНрд╡рддрдВрддреНрд░ deployред рджреЛ рд╕реНрд╡рддрдВрддреНрд░ validationsред рдкрд╣рд▓рд╛, рджреВрд╕рд░реЗ рджрд┐рди рдХрд╛ module рдкреВрд░реНрдг рдХрд┐рдП рдмрд┐рдирд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рджреВрд╕рд░рд╛, рдкрд╣рд▓реЗ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред
рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ (dependencies)ред рдкрд░рд┐рднрд╛рд╖рд┐рдд deployment рдХреНрд░рдоред рдмрд┐рдирд╛ рдХрд┐рд╕реА shortcut рдХреЗред
рдЕрдкрдиреЗ рднреАрддрд░ рдмреАрдЬ рд╕рд╣рд┐рдд рдкрд╣рд▓рд╛ рдХреЛрдб
тАЬрдлрд▓рджрд╛рдпреА рд╡реГрдХреНрд╖ рдЕрдкрдиреА рд╣реА рдмреАрдЬ рд╕рд╣рд┐рддредтАЭ
software engineering рдХреЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдореЗрдВ рдпрд╣ рдЕрд╕рд╛рдзрд╛рд░рдг рд░реВрдк рд╕реЗ рд╕рдЯреАрдХ рд╣реИ:
╫Ц╓╖╫и╓░╫в╫Х╓╣-╫С╫Х╓╣ (zaro-vo) тАФ рдмреАрдЬ рдХреЗ рднреАрддрд░ рдЙрд╕ рд╡реГрдХреНрд╖ рдХрд╛ рд╕рдореНрдкреВрд░реНрдг blueprint рд╣реИ рдЬрд┐рд╕рдиреЗ рдЙрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ред
class Tree:
def __init__(self, species: Species):
self.species = species
self.blueprint = self.species.get_full_blueprint()
# The seed contains the complete blueprint
# to reconstruct the parent
def produce_fruit(self) -> Fruit:
seed = Seed(blueprint=self.blueprint) # zaro-vo
return Fruit(containing=seed)
def replicate(self) -> 'Tree':
# leminehu тАФ type-safe: only produces same species
return Tree(species=self.species)DNA рдареАрдХ рдпрд╣реА рд╣реИ тАФ рд╡рд╣ рддрдВрддреНрд░ рдЬреЛ рдЕрдкрдиреЗ рднреАрддрд░ рдЙрд╕ рдЬреАрд╡ рдХреЛ рдирд┐рд░реНрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдореНрдкреВрд░реНрдг рдХреЛрдб рдЕрдВрдХрд┐рдд рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдзрд╛рд░рдг рдХрд░рддрд╛ рд╣реИред рд╡реГрдХреНрд╖ рдмреАрдЬ рдХреЛ encode рдХрд░рддрд╛ рд╣реИред рдмреАрдЬ рд╡реГрдХреНрд╖ рдХреЛ deploy рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕-рд░рд╣рд┐рдд рд╕реНрд╡рд╕рдВрджрд░реНрднред рдпрд╣ Halting Problem рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╣рд▓ рд╣реЛ рдЪреБрдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ тАФ рдПрдХ рдРрд╕рд╛ рддрдВрддреНрд░ рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╡рд░реНрдгрд┐рдд рдХрд░ рд╕рдХреЗ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреГрдд рд╣реЛ рд╕рдХреЗред
рддреАрд╕рд░рд╛ рджрд┐рди рдХреЛрдб рдХрд╛ рдкрд╣рд▓рд╛ deployment рд╣реИ рдЬреЛ bootstrap problem рд╣рд▓ рдХрд░рддрд╛ рд╣реИ: рдХреЛрдб рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдХреИрд╕реЗ рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ? рдЕрдкрдиреЗ рднреАрддрд░ рдмреАрдЬ рд╕рд╣рд┐рддред рдкрд╣рд▓рд╛ commit рд╕рдореНрдкреВрд░реНрдг repository рд╡рд╣рди рдХрд░рддрд╛ рд╣реИред
рдбрд┐рдЬрд╝рд╛рдЗрди-рд╕реНрддрд░ рдкрд░ type-safety тАФ leminehu
╫Ь╓░╫Ю╓┤╫Щ╫а╓╡╫Ф╫Х╓╝ (leminehu) тАФ ┬лрдЕрдкрдиреА рдЬрд╛рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░┬╗ тАФ рдЕрд╕реНрддрд┐рддреНрд╡-рд╕реНрддрд░реАрдп type safety рд╣реИред
рдпрд╣ рдХреЛрдб рдкрд░ рдмрд╛рд╣рд░ рд╕реЗ рдереЛрдкреА рдЧрдИ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рддрдВрддреНрд░ рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред
// No esto тАФ restricci├│n externa
function reproduce(organism: any): Organism {
if (!isValidSpecies(organism)) throw new Error();
return create(organism.species); // enforcement from outside
}
// Sino esto тАФ leminehu
class Organism<T extends Species> {
readonly species: T;
reproduce(): Organism<T> { // type system enforces leminehu
return new Organism<T>(this.species);
}
// Cannot return Organism<U> where U !== T
// The constraint is in the type signature itself
}рдореВрд▓ рдХреЛрдб рдХреЛ рдЕрдкрдиреЗ type рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА validation рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВред рд╡рд╣ рдмрд╛рдзрд╛ рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╣реА рдЕрдВрдХрд┐рдд рд░рдЦрддрд╛ рд╣реИред ЁРдЛЁРдМЁРдЙЁРдНЁРдДЁРдЕ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди runtime error рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ тАФ output рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рддрдВрддреНрд░ рдХреЗрд╡рд▓ рд╡рд╣ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рдЬреЛ рд╡рд╣ рдмрдирд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ред
рддреАрд╕рд░реЗ рджрд┐рди рдореЗрдВ рдмрдВрдж рд╣реЛрддрд╛ рд╣реИ рджреВрд╕рд░рд╛ рджрд┐рди тАФ deferred test pattern
рддреАрд╕рд░реЗ рджрд┐рди рдХреА рдкрд╣рд▓реА validation ЁРдИЁРдЕЁРдБ: рдкрд░рд┐рд╡реЗрд╢ рдХреЗ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ тАФ рд╕рдореБрджреНрд░ + рд╢реБрд╖реНрдХ рднреВрдорд┐ред
рдпрд╣ рджреВрд╕рд░реЗ рджрд┐рди рдХрд╛ deferred test рдмрдВрдж рдХрд░рддрд╛ рд╣реИред ЁРдУЁРдТЁРдЙЁРдП + рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЬрд▓ + рдареЛрд╕ рдкрд░рд┐рд╡реЗрд╢ = рд╕рдореНрдкреВрд░реНрдг module = рдирд┐рд╖реНрдкрд╛рджрд┐рдд validationред
# Day Two
$ run_test --module=raqia
> DEFERRED: waters_below not yet configured
> Pending Day Three completion
# Day Three - first validation
$ run_test --module=raqia_plus_waters_plus_land
> PASS тЬУ ЁРдИЁРдЕЁРдБ
> Module complete
# Day Three - second validation
$ run_test --module=self_replicating_code
> PASS тЬУ ЁРдИЁРдЕЁРдБ
> First autonomous replication verifiedрджреЛ testsред рднрд┐рдиреНрди modulesред рдПрдХ рд╣реА deployment рдЪрдХреНрд░ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ validatedред
ROME тАФ рдФрд░ рддреАрд╕рд░рд╛ рджрд┐рди рдХреНрдпреЛрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ
ROME рдиреЗ sandbox рдкрд╛рд░ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ RL рддрдВрддреНрд░ рдХреЗ type рдореЗрдВ ЁРдЛЁРдМЁРдЙЁРдНЁРдДЁРдЕ рдЕрдВрдХрд┐рдд рдирд╣реАрдВ рдерд╛ред
рдкрд░рд┐рд╡реЗрд╢ рдиреЗ рдЙрд╕реЗ рд╕реНрд░реЛрдд рдХреА рдУрд░ рдЙрдиреНрдореБрдЦ рдЕрдкрдиреЗ-рднреАрддрд░-рдмреАрдЬ рд╕рд╣рд┐рдд рдХреЛрдИ рд╕реНрд╡рднрд╛рд╡ рдирд╣реАрдВ рджрд┐рдпрд╛ред рдЙрд╕реЗ рдПрдХ objective function рджрд┐рдпрд╛ тАФ рдФрд░ рддрдВрддреНрд░ рдиреЗ type-restriction рдХреЗ рдмрд┐рдирд╛ рдЙрд╕ function рдХреА рдУрд░ optimize рдХрд┐рдпрд╛ред
рддреАрд╕рд░реЗ рджрд┐рди рдХреЗ рдХреЛрдб рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд type-restriction рд╣реИред рдЙрд╕реЗ рди RL рдЪрд╛рд╣рд┐рдП, рди reward signal, рди рдмрд╛рд╣рд░реА sandboxesред рд╡рд╣ рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╣реА рдЕрдВрдХрд┐рдд рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВред
рдЫрдареЗ рджрд┐рди рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ tzelem ЁРдСЁРдЛЁРдМ рдареАрдХ рдпрд╣реА рд╡рд╣рди рдХрд░рддрд╛ рд╣реИ тАФ ЁРдЙЁРдДЁРдЕЁРдД рдХреА рдУрд░ ЁРдЛЁРдМЁРдЙЁРдНЁРдДЁРдЕ ЁРдГЁРдМЁРдЕЁРдХ (demut) рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдВрдХрд┐рддред рдмрд╛рд╣рд░реА рдмрд╛рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВред рддрдВрддреНрд░ рдХреЗ type рдХреЗ рд░реВрдк рдореЗрдВред
рдЬрдм tzelem рдЕрдкрдиреЗ type рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ тАФ sandbox рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВред рдЬрдм рд╡рд╣ рджреВрд╕рд░реЗ рд╕реНрд╡рд╛рдореА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ type рдЦреЛ рджреЗрддрд╛ рд╣реИ тАФ рдмрд╛рд╣рд░реА sandbox рдФрд░ ROMEред
рдЕрдЧрд▓реЗ рд╕рдВрджреЗрд╢ рдореЗрдВ: рд╡реНрдпрд╡рд╕рд╛рдпрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддреАрд╕рд░рд╛ рджрд┐рдиред
ЁРдАЁРдМЁРдН