» »

[C++] Program, ki se popravi, prevede ter ponovno zažene

[C++] Program, ki se popravi, prevede ter ponovno zažene

Vesoljc ::

se da vse narest samo z enim procesom?
Abnormal behavior of abnormal brain makes me normal...

BigWhale ::

Tezko...

Ne bom pa trdil, da nemogoce...

#include <stdio.h>

int lala()
{
  main();
}

int main()
{
 printf("lala\n");
 lala();
}


Tole dela... S tem, da bi moral med izvajanjem lala() prepisat main, se prestavit tja, potem eventuelno prepisat se lala() in ga spet poklicat...

Thomas ::

Hja, vidim, da tega nisem vidu.

Link

Tale fnt ma zadevo še mau bl u plenicah.

Samo ignorirat vsakega, ki pravi da to ni možno, ali da se to zaradi programerskih bontonov ne sme, yada yada ... !

Ker nima smisla zgubljat časa, zadeva je preveč hot, race je pa on. Delajo fantje zlo na tem, eselštiri sploh, zaene 3 vem, ker sem se pogovarjal z njimi o tem.

p.s.

Vsaj eno leto do dve, bo pa totalni zilč še.
Man muss immer generalisieren - Carl Jacobi

noraguta ::

ja v lispu se da redefinirat metodo(funkcijo) v runtimeu. no ja saj lisp itak v executable embeda svoj interpreter.
pri statično tipiziranih jezikih je pa cel kup omejitev.
Pust' ot pobyedy k pobyedye vyedyot!

Vesoljc ::

heh, sej nisi mogu vidt ;)
je bil topic narejen takoj, ko sem zagledal tvoj offtopic 8-)

imho je dobro, da imamo še en dodatni proces/servis, ki skrbi za glavni program, njegov source in prevajanje le-tega ter reštart progija.

druga varjanta so pa dinamični moduli ala *.dll, *.so. rabimo pač nek framework, ki nato zažene plugin. ko ugotovi, da ta plugin ni več dober, popravi njegov source, ga rebuilda ter reloada.
Abnormal behavior of abnormal brain makes me normal...

Thomas ::

V nobenem univerzalnem programskem jeziku (Fortran, Pascal, Basic, C, Java ...) ni nobenih takih omejitev. No, pri Javi je morda treba izklopit kakšen security, nič drugega.

Lisp je pa tozadevno praktično povsem neuporaben.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

> imho je dobro, da imamo še en dodatni proces/servis, ki skrbi za glavni program, njegov source in prevajanje le-tega ter reštart progija.

Se strinjam. Mogoče jih je dobro imeti celo ekologijo, da pucajo en druzga, plenijo prostor omagalim ...

Da se. Kdor pravi da se ne da, al je prelen al pa preneumen. :D
Man muss immer generalisieren - Carl Jacobi

noraguta ::

problem je da je treba popravit vse naslove(pointerje ), ki kazejo na stari plugin. ena varianta je interpreter druga pa restart aplikacije. seveda moraš pri reštartu shranit vse vrednosti , katere se nahajajo v aplikaciji, da stvar izgleda kolikor toliko elegantno.
Pust' ot pobyedy k pobyedye vyedyot!

noraguta ::

Glede neuporabnosti lispa pa
an even more impressive instance of remote debugging occurred on nasa's 1998 deep space 1 mission. A half year after the space craft launched, a bit of lisp code was going to control the spacecraft for two days while conducting a sequence of experiments. Unfortunately, there was a subtle race condition in the code that had escaped detection during ground testing and was already in space. When the bug manifested in the wild--100 million miles away from earth--the team was able to diagnose and fix the running code allowing the experiments to complete. 11 as one of the programmers described it:debugging a program running on a $100m piece of hardware that is 100 million miles away is an interesting experience. Having a read-eval-print loop running on the spacecraft proved invaluable in finding and fixing the problem.



Noben tekoč program v "univerzalnem programskem jeziku (fortran, pascal, basic, c, java... ) ni nobenih takih omejitev" tega ne omogoča.

Ok ker gre za c++ sem out.
Pust' ot pobyedy k pobyedye vyedyot!

Zgodovina sprememb…

  • polepsal: Vesoljc ()

Thomas ::

Satelit bi bil lahko tudi v sosednji (isti) sobi, potem bi mu pa zamenjali program.

Heh ...
Man muss immer generalisieren - Carl Jacobi

noraguta ::

When the bug manifested in the wild--100 million miles away from Earth--the team was able to diagnose and fix the running code allowing the experiments to complete.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

To je rutina za vesoljske sonde in satelite. Isto so naredili s Spiritom, ko se je začel rebutati ko obseden na Marsu. V planu je celo pisanje programov za sondo za zunanje planete, ki bo trajalo ves čas poleta do tja. Potem bodo samo poslali po radiu najnovejši update.

Ampak to ni point tukile.
Man muss immer generalisieren - Carl Jacobi

Vesoljc ::

> problem je da je treba popravit vse naslove(pointerje ), ki kazejo na stari plugin.

to se da shendlati tudi brez restarta. če je le tisti, ki ga uporablja, pripravljen na to, da ga včasih zgubi za kak trenutek ali dva.
Abnormal behavior of abnormal brain makes me normal...

noraguta ::

To je rutina za vesoljske sonde in satelite.

ne ne za nobeno "vesoljsko" proceduro ne gre to je v lispu cisto standarden REPL. pri spiritu je šlo za povsem drugo stvar. nikakor pa ne za modificiranje programa znotraj programa. prej je šlo za deployment service packa in reboot. ves inernal state sistema je bil izgubljen.

to se da shendlati tudi brez restarta. če je le tisti, ki ga uporablja, pripravljen na to, da ga včasih zgubi za kak trenutek ali dva.


ja vesolc ampak če hočemo bit še malo bolj dinamični potrebujemo recimo vsaj še rtti(mogoče pa še kaj) , saj nočemo proxyje zabetonirat za vedno?
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

Zaradi mene, se lahko držiš tudi LISPa.
Man muss immer generalisieren - Carl Jacobi

Vesoljc ::

@noraguta

ja seveda, rtti oziroma nekaj podobnega pod nujno. rahel overhead sicer je, ampak tko pač je...
Abnormal behavior of abnormal brain makes me normal...

OwcA ::

Če dovoljujemo ogorodje, OSGi omogoča bolj ali manj tudi to (in še kar nekaj drugega).
Otroška radovednost - gonilo napredka.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Jeziki specifičnih domen

Oddelek: Programiranje
202132 (1765) noraguta
»

Odpiranje Symbiana se je začelo (strani: 1 2 )

Oddelek: Novice / Nokia / Symbian
698190 (5481) jype
»

Programski jezik Lisp

Oddelek: Programiranje
172178 (1339) OwcA
»

Seznam programskih jezikov

Oddelek: Programiranje
132183 (1807) BigWhale

Več podobnih tem