Rappresentazione di un oggetto nella programmazione. - pagina 2

 
Реter Konow:
Non c'è modo di aggirare il problema senza un concetto filosofico. Combinare semplicemente funzioni e variabili senza seguire un "blueprint" ben studiato dell'oggetto? Ci vengono dati certi strumenti: classi, strutture, modificatori di accesso... ma potrebbero esserci altri strumenti... per esempio stato, campionamento, mappatura... perché no? Il mio punto è che il formato OOP e il toolkit possono avere versioni...

Esiste una cosa come la "sufficienza ottimale".

Perché una persona ha due gambe e due braccia? Perché un cane non ha cinque zampe? Ecco perché vi sorgono delle domande: perché vi inventate dei Frankenstein? Su base regolare. Ti prude? Se non te li inventassi nel tentativo di lasciare il segno, l'avresti già fatto da tempo. Insomma, state mettendo i vostri sforzi nella direzione sbagliata.

 
transcendreamer:
In generale, quando si definisce l'Oggetto, si deve definire anche il Soggetto, altrimenti questa è una descrizione incompleta del mondo, inoltre nei concetti filosofici più moderni c'è il Traiettoria con uno status relazionale indipendente come legame intermedio/legame tra l'Oggetto e il Soggetto.
Sì, l'ontologia si occupa della definizione dell'oggetto in quanto tale. Ovviamente, i creatori dell'OLP si appoggiavano al modello filosofico ontologico ampiamente accettato. Ma questo modello è soggettivo. E sì, da un oggetto, la programmazione va a un sotto-oggetto (AI).
 
Реter Konow:
È qui che un concetto filosofico non può essere evitato. Semplicemente per combinare funzioni e variabili senza seguire un "blueprint" ben pensato dell'oggetto? Ci vengono dati certi strumenti: classi, strutture, modificatori di accesso... ma potrebbero esserci altri strumenti... per esempio stato, campionamento, mappatura... perché no? Il mio punto è che il formato OOP e il toolkit possono avere versioni...
E in certi casi, una versione diversa del formato di descrizione dell'oggetto può essere più efficace.

Lingue diverse hanno caratteristiche OOP diverse.

 
Artyom Trishkin:

Esiste una cosa come la "sufficienza ottimale".

Perché un uomo ha due gambe e due braccia? Perché un cane non ha cinque zampe? Ecco perché le domande sorgono spontanee: perché si inventa dei Frankenstein? Su base regolare. Prude? Se non te li inventassi nel tentativo di lasciare il segno, l'avresti già fatto da tempo. Insomma, state mettendo i vostri sforzi nella direzione sbagliata.

Stai parlando per te stesso o per l'amministrazione?
 

Mi è piaciuta la seguente definizione da Wikipedia:

Laprogrammazione orientata ai generici (OOP) è unametodologia di programmazione basata sulla rappresentazione di un programma come un insiemedi oggetti, ognuno dei quali è un'istanza di una certaclasse, e le classi formano una gerarchia di eredità[1].

Questa è pura filosofia. Quindi, coloro che pensano che non c'è filosofia nella programmazione si sbagliano. La programmazione a oggetti è costruita sulla base filosofica e, di conseguenza, i programmatori dovrebbero essere in grado di pensare in modo astratto e filosofico. Io, per esempio, sono in grado di farlo e ho domande filosofiche sul concetto. Questo è logico e legittimo. Nessun "Frankenstein". Sono guidato dalla domanda "e se la Terra non fosse piatta?


Ecco l'articolo completo:

https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование

È tutta filosofia.

 

Dal wiki:

Storia[modifica|modifica codice]


OOP è nata come risultato dello sviluppo dell'ideologia dellaprogrammazione procedurale, dove i dati e i sottoprogrammi (procedure, funzioni) della loro elaborazione non sono formalmente collegati. Per un ulteriore sviluppo della programmazione orientata agli oggetti le nozioni di evento (la cosiddettaprogrammazione orientata agli eventi) e di componente(programmazione dei componenti, COP) sono spesso di grande importanza.

L'interazione degli oggetti avviene per mezzo dimessaggi. Il risultato dell'ulteriore sviluppo dell'OOP sembra essere laprogrammazione basata sugli agenti, dove gliagenti sono parti indipendenti del codice a livello di run-time. Gli agenti interagiscono cambiandol'ambiente in cui risiedono.

I costrutti del linguaggio non strutturalmente legati direttamente agli oggetti, ma che li accompagnano per il loro funzionamento sicuro(situazioni eccezionali, controlli) ed efficiente, sono incapsulati da essi in aspetti(nellaprogrammazione orientata agli aspetti). Laprogrammazione orientata al soggetto estende la nozione di oggetto fornendo un'interazione più unificata e indipendente degli oggetti. Può essere una fase di transizione tra OOP e programmazione basata su agenti nella parte della loro interazione indipendente.

Il primo linguaggio di programmazione a proporre i concetti di base che più tardi formarono il paradigma fuSimula, ma il termine "orientato agli oggetti" non fu usato nel contesto dell'uso di questo linguaggio. Al momento della sua introduzione nel1967, proponeva idee rivoluzionarie: oggetti, classi, metodivirtuali, ecc. ma tutto questo non era percepito come qualcosa di grandioso dai suoi contemporanei. Infatti, Simula era un "Algol con classi", semplificando l'espressione nellaprogrammazione procedurale di molti concetti complessi. La nozione di classe in Simula può essere completamente definita attraverso la composizione di costrutti Algol (cioè una classe in Simula è qualcosa di complesso descritto per mezzo di primitive).

Il "nuovo angolo" (diverso da quello procedurale) di programmazione è stato suggerito daAlan Kay eDan Ingalls inSmalltalk. Qui, la nozione di classe è diventata l'idea di base per tutti gli altri costrutti del linguaggio (cioè la classe in Smalltalk è una primitiva attraverso la quale vengono descritti costrutti più complessi). È stato il primolinguaggio di programmazione orientato agli oggetti diffuso.

Al giorno d'oggi, il numero di linguaggi di programmazione applicati(lista di linguaggi) che implementano il paradigma orientato agli oggetti è il più grande rispetto agli altri paradigmi. I linguaggi più usati nell'industria (C++, Delphi, C#, Java, ecc.) incorporano il modello a oggetti di Simula. Esempi di linguaggi che si basano sul modello Smalltalk sono Objective-C, Python, Ruby.

 

L'estratto qui sopra dall'articolo di Wikipedia descrive come si sono evolute le idee OOP. All'inizio, pensavo che il concetto fosse solo qualcosa che qualcuno si era seduto e aveva escogitato. Mi sbagliavo. È stato un processo di evoluzione.

Forse il concetto continuerà ad evolversi. Perché no?

 

Un altro estratto da Wiki, che conferma la soggettività del concetto:

OOP ha una storia di più di quarant'anni, ma nonostante questo non c'è ancora una chiara definizione accettata della tecnologia[14]. I principi di base dei primi linguaggi e sistemi a oggetti sono stati sostanzialmente modificati (o distorti) e aggiunti in numerose implementazioni da allora. Inoltre, da circa lametà degli anni '80, il termine "orientato agli oggetti" è diventato dimoda, e come risultato è successa la stessa cosa che è successa con il termine "strutturato" (che è diventato di moda dopo la diffusione della tecnologia diprogrammazione strutturata) un po' prima- è diventato artificialmente "attaccato" a qualsiasi nuovo sviluppo per garantire la loro attrattiva.Björn Straustrup ha scritto nel 1988 che la giustificazione di qualcosa che è "orientato agli oggetti" si riduce per lo più alsillogismo difettoso: "X è buono. L'orientamento agli oggetti è buono,quindi X è orientato agli oggetti".

Così, un programma è un insieme di oggetti con stato e comportamento. Gli oggetti interagiscono attraverso messaggi. Si costruisce naturalmente una gerarchia di oggetti: il programma nel suo insieme è un oggetto, chiama i suoi oggetti costituenti per eseguire le sue funzioni che, a loro volta, eseguono la funzione richiesta chiamando altri oggetti del programma. Naturalmente, per evitare unaricorsione infinita nelle chiamate, a un certo punto l'oggetto trasforma il messaggio indirizzato a lui in messaggi a oggetti di sistema standard forniti dal linguaggio e dall'ambiente di programmazione.

La stabilità e la controllabilità del sistema sono fornite dalla chiara divisione della responsabilità degli oggetti (un certo oggetto è responsabile di ogni azione), dalla definizione non ambigua delle interfacce di interazione tra gli oggetti e dal completo isolamento della struttura interna dell'oggetto dall'ambiente esterno (incapsulamento).

OOP può essere definito in molti altri modi.

//-----------------------------------------------------------------------

Fine della citazione.

 
Реter Konow:

Mi è piaciuta la seguente definizione da Wikipedia:

Laprogrammazione orientata ai generici (OOP) è unametodologia di programmazione basata sulla rappresentazione di un programma come un insiemedi oggetti, ognuno dei quali è un'istanza di una certaclasse, e le classi formano una gerarchia di eredità [1].

Questa è pura filosofia. Quindi, coloro che pensano che non c'è filosofia nella programmazione si sbagliano. La programmazione a oggetti è costruita sulla base filosofica e, di conseguenza, i programmatori dovrebbero essere in grado di pensare in modo astratto e filosofico. Io, per esempio, sono in grado di farlo e ho domande filosofiche sul concetto. Questo è logico e legittimo. Nessun "Frankenstein". Sono guidato dalla domanda "e se la Terra non fosse piatta?


Ecco l'articolo completo:

https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование

È tutta filosofia.

Questa non è affatto filosofia, questi sono principi di controllo di un veicolo (automobile), un insieme di ingranaggi, perni, pignoni formano strutture più complicate e così via fino alla cosa principale in questa gerarchia - la guarnizione tra una ruota e una sede

quindi quelli che pensano che guidare una macchina sia diverso dalla programmazione sono fuori strada.


Per continuare il gioco di parole, suggerisco di familiarizzare con i termini tassonomia e/oclassificazione dalla stessa Wiki e ulteriormente dai link proposti negli articoli della Wiki

 

Potrei sbagliarmi nelle mie previsioni, ma se il concetto continua ad evolversi, ci sarà un nuovo modello di Oggetto, che richiederà molto meno sforzo per costruire, e quindi i sistemi cresceranno più velocemente. Questo porterà all'abolizione del processo di programmazione e alla scomparsa di molti linguaggi che diventano rudimentali. Questo futuro è probabile, perché ha senso.

Ecco alcune tesi che portano a tali conclusioni:

1. Dall'Oggetto, la programmazione va al Soggetto (AI).

2. Per scrivere un'IA è necessario accelerare notevolmente il processo di programmazione e ridurre l'input di lavoro.

3. Grazie alle nuove tecnologie e a una nuova rappresentazione dell'oggetto, la programmazione può andare oltre la tastiera e diventare molto più interattiva.


Se l'evoluzione continua, dovremo inevitabilmente sperimentare una ridistribuzione globale, che include la scomparsa di intere professioni e specializzazioni. E l'emergere di nuovi.