Ci sono stati tentativi di creare contenitori di oggetti che cercano programmi validi mediante componenti compatibili con il cablaggio automatico? [chiuso]

5

Spero che questo post non sia troppo "Fringe" - Sono sicuro che qualcuno lo ucciderà solo se è:)

Tre cose mi hanno portato a voler parlare di questo ora:

  1. Il disaccoppiamento è così all'avanguardia del design.
  2. TDD ispira l'idea che non importa come un programma possa esistere finché funziona.
  3. Vedendo quanto spesso viene applicato il pattern dell'adattatore per ottenere (1).

Sono quasi certo che questo è stato provato da un ricordo di averlo letto intorno all'anno 2000 circa. Se dovessi indovinare, si trattava forse della versione precedente di Java Spring. A quel tempo non eravamo così lontani dai giorni in cui credevamo che i programmi per computer potessero mostrare un utile comportamento emergente. Penso che l'articolo dicesse che non ha funzionato, ma non ha detto che era impossibile.

Mi chiedo se da allora sia stato ritenuto impossibile o semplicemente un'illusione dovuta a una falsa ipotesi di somiglianza tra un cervello e una CPU. So che questa illusione esisteva perché ho avuto uno stage nel 1996 dove ho programmato reti neurali che avrebbero dovuto mostrare "danni cerebrali".

ANCORA, dopo tutto questo, sono seduto stamattina e non sono in grado di scuotere l'idea che dovrebbe essere possibile avere un metodo di programmazione per consentire ai componenti autonomi di trovarsi l'un l'altro, tentare di collaborare e le loro uscite valutate rispetto a un set di risultati desiderati.

    
posta Aaron Anodide 14.04.2012 - 22:43
fonte

1 risposta

1

Dichiarazione di non responsabilità: non sono un ricercatore, ma solo uno sviluppatore interessato.

La risposta breve è Sì, questo è stato fatto, almeno con i servizi web e con i requisiti formali, non con i test.

Presumo che la tua domanda significhi, "dato che esistono numerosi algoritmi e esiste una serie di test, un programma può tentare di combinare questi algoritmi in modo casuale cercando di superare i test?"

Sono d'accordo con l'affermazione di Charles E. Grant che una volta che inizi a creare casualmente dei programmi ti imbatti nel problema di stallo (è impossibile determinare se c'è un ciclo infinito in un programma), quindi questo può essere un problema, ma può essere superato creando metodicamente il programma, non in modo casuale.

Allo stesso modo, ogni volta che inizi a porre la domanda, "possiamo automatizzare questo in generale?" molto probabilmente ti avvicini al completamento dell'IA. In altre parole, qualsiasi problema sufficientemente complesso richiede una intelligenza a livello umano da risolvere. Per ovviare a questo, è necessario limitare l'ambito della domanda. Ad esempio, può un programma automaticamente ...

  1. generare codice in base ai requisiti? La NASA ha fatto ricerche approfondite sulla generazione del codice, ma le specifiche formali richieste sono difficili quanto la codifica. Questo risale almeno al 1971, chiamato "Sintesi automatica del programma"
  2. combina i servizi Web esistenti in base ai requisiti (vedere "Composizione dei servizi Web a valore aggiunto mediante la sintesi automatica dei programmi")
  3. combinare servizi Web di sola lettura (vedere Composizione automatica di servizi di informazione che forniscono informazioni basate sulla riscrittura delle query )
  4. crea un programma per l'analisi dei dati statistici (vedi "AutoBayes")
  5. generalizza una modifica del testo (vedi Avi Bryant alle 27:01 che lo ha rubato dal MIT / MassEdit)
  6. creare regole per la categorizzazione del testo? Vedi sotto.

Una domanda più semplice nell'informatica è "dati due cluster di dati esistenti, creare un filtro in grado di classificare nuovi dati con bassi tassi di errore". La categorizzazione del testo, come il filtro antispam, rientra in questo ambito. Questa è un'area ben studiata e esistono molti algoritmi per risolvere questo problema. RIPPER è uno di questi algoritmi, che crea il più piccolo insieme di regole che categorizzano il testo in modo accurato, proprio come il vincolo di Einstein: "Tutto dovrebbe essere il più semplice possibile, ma non più semplice."

Questo è tutto ciò che ho potuto trovare / sapere. Se qualcuno potesse trovare qualcosa di più simile a ciò che questa domanda pone, sarei molto interessato. Penso che ciò che scoprirai sia che il programma risultante sarà valido quanto il tuo input. La quantità di "Test" che avresti dovuto scrivere sarebbe così grande, staresti meglio scrivendo il programma.

PS: avevo molti più link ma stackexchange non mi permette di pubblicarli: - (

    
risposta data 14.05.2012 - 16:21
fonte

Leggi altre domande sui tag