Tutto in informatica può essere classificato come dato o come processo?

1

Lavorando in un campo chiamato "garanzia dei ricavi" fondamentalmente costruisco sistemi per convalidare altri sistemi.

Dopo un po 'di tempo in questo mercato mi sembra che tutte queste "validazioni" stiano verificando un processo dall'ambiente del mio cliente o dai dati utilizzati da questi processi.

Con questo in mente sto pensando di utilizzare tale definizione per orientare i venditori e persino gli architetti che lavorano sui prodotti. Tuttavia, ricercando questo argomento non sono riuscito a trovare una risposta definitiva, anche se non ho scartato la possibilità.

Allora è tutto uno dei due?

    
posta flpgdt 06.09.2013 - 13:52
fonte

4 risposte

0

A livello di massima questo è ciò che riguarda il computer. Hai qualche input, hai il tuo processore e quel processore trasformerà l'input in qualche output. Questo schema è ripetuto e può essere riconosciuto su diversi livelli. Input e output possono essere classificati come dati, qualunque sia il processo che fa il tuo processo.

Questo modello è più vecchio del computing, vale anche per la produzione o qualsiasi processo di produzione. È possibile sostituire l'input con il materiale (grezzo) e l'output con il prodotto (di fine).

Lo stato e il comportamento sono astrazioni di questi principi di base. È bene essere consapevoli di loro, sono la base di ogni sistema. Per preparare il palco, come antipasto, sarà utile indicarlo. Ma spesso avrete bisogno di alcuni concetti aggiuntivi per modellare in modo significativo un sistema. Il semplice puntamento dei mattoni non fornirà un'immagine completa di un edificio.

    
risposta data 18.12.2016 - 13:38
fonte
2

Sì. La macchina di Turing consiste di dati, in forma di alfabeto e nastro infinito che salva questo alfabeto. E elaborare come trasformare questi dati in una tabella di regole. E considerando che la TM può calcolare tutto ciò che può essere calcolato, si può dire che i dati e i processi sono l'unica cosa di cui hai bisogno nel calcolo.

Ma TM è un concetto altamente astratto e usato principalmente nell'informatica. Nel mondo pratico, è usato raramente. E non puoi utilizzarlo come esempio quando parli di sistemi e sviluppi di alto livello.

    
risposta data 06.09.2013 - 14:59
fonte
1

Non ho intenzione di trattare gli argomenti epistemologici o ontologici qui, ma ci sono una varietà di diversi modelli di programmazione che hanno categorizzazioni abbastanza rigorose del loro "universo".

Ad esempio:

  • I linguaggi imperativi di prima generazione sono basati sulla Turing Machine che modella tutto con dati (variabili) e istruzioni. Non c'è nessun problema che non puoi rappresentare con questo modello; il suo lato negativo è che molti problemi sono molto difficili da rappresentare.

  • OOP definisce un oggetto come una combinazione di stato e comportamento . Quello che chiami "dati" sarebbe lo stato , ma gli oggetti trattano anche con input e devono produrre un output (che non è generalmente considerato "dati" a meno che / fino a quando non viene effettivamente memorizzato). A rigor di termini, è ancora basato sulla macchina di Turing, ma relazioni e eredità tra gli oggetti possono semplificare enormemente il problema. La vita diventa molto più semplice quando hai un sistema di organizzare tutti questi processi.

  • SOA definisce il concetto di servizi , che sono ortogonali agli oggetti e allineati con una particolare funzione aziendale. I servizi sono un modo per raggruppare non solo i comportamenti ma (a differenza di OOP) anche i dati che li riguardano, poiché i servizi non sono autorizzati a condividere lo stato. La cosa interessante di questo modello è che si avvicina molto strettamente a come le persone interagiscono con l'un l'altro a differenza di come interagiscono con cose . Quasi tutte le aziende e le comunità in generale sono organizzate in dipartimenti e set di competenze, con aree di specializzazione abbastanza rigide; senza questo tipo di organizzazione, la maggior parte della società umana crollerebbe. In questo modello, quello che tu definisci un "processo" è in realtà più di una "operazione", e un "processo" è in realtà una "saga" di lunga data che coordina tutti i diversi servizi e le operazioni coinvolte.

  • Linguaggi funzionali, basati sul calcolo lambda, solo utilizzano le funzioni. Una funzione è diversa da un "processo" perché una funzione non può cambiare stato (e infatti non c'è stato da modificare). Questo è un esempio di come è possibile rompere il problema ancora più di quello che hai già. Ovviamente, per le persone che non sono abituate a farlo, può essere incredibilmente difficile modellare il problema in questo modo.

Il mondo può essere semplice o complesso quanto vuoi modellarlo. Se rompere tutto semplicemente in "dati" e "processi" è appropriato per il tuo scopo, allora fallo con tutti i mezzi, ma tieni presente che un tale modo di pensare è più naturale per i computer che per gli umani. I programmatori sono bravi a modellare e capire le cose in questo modo, i non programmatori non lo sono.

I non programmatori, secondo la mia esperienza, sono più a proprio agio con il modello di servizio: Ho un ragazzo che prepara i pasti, un altro che mi guida in città, un altro che tiene al sicuro i miei soldi, e così su, e non so davvero né mi interessa come lo fanno, faccio solo ciò che I faccio e dico loro che I bisogno. Questo ultimo paragrafo sembrerà totalmente irrilevante alla tua domanda, che è esattamente il motivo per cui i programmatori e gli uomini d'affari sembrano avere così tanti problemi a comunicare. ☺

    
risposta data 06.09.2013 - 22:24
fonte
0

Questa sembra una domanda di etimologia. Non sembra adatto per Programmers.Stackexchange.

(0.1) Che cosa sono i dati? I dati sono tutto ciò che può essere copiato (replicato)

(0.2) Che cos'è il processo? Il processo è qualcosa che prende input (dati) e produce output (dati) e di solito richiede una quantità di tempo non zero (e finita).

(0.2.1) Il processo può essere computazionale o esterno - l'azione umana può essere coinvolta.

(1) risorsa (o capacità / vincolo) - una delle condizioni necessarie affinché un calcolo abbia successo, senza timeout o esaurimento di memoria o spazio su disco.

(2.1) evento - un pezzo di dati che è ancorato a un timestamp. Alcuni eventi possono essere anticipati; alcuni non possono. Una volta che si è verificato un evento, può essere propagato ad altri agenti sul sistema.

(2.2) casualità: un vincolo di ordinamento posto sugli eventi.

(3) giurisdizione - alcuni tipi di dati non sono autorizzati a fuoriuscire all'esterno di un determinato edificio per legge. Allo stesso modo, alcuni tipi di processi non possono verificarsi al di fuori di un determinato luogo.

    
risposta data 06.09.2013 - 21:54
fonte

Leggi altre domande sui tag