Come consentire a un client di interrogare un database grafico in Smalltalk, senza esporre tutto su Smalltalk? [chiuso]

1

C'è qualche esempio di Smalltalk usato come linguaggio di query?

Quello che sto cercando è: un sistema o un'applicazione in cui la natura Smalltalk dell'applicazione è nascosta o irrilevante all'utente finale e porzioni della lingua sono esposte solo per interrogare il modello oggetto sottostante (sia esso oggetti applicazione , oggetti del documento, una simulazione o simili). Ad esempio un'interfaccia utente in cui l'utente definisce le query in Smalltalk: o come parte del predicato della query o del predicato + alcune altre informazioni immesse tramite altri elementi dell'interfaccia utente. L'applicazione quindi lo avvolge in blocchi e applica le funzioni di filtro appropriate come select: o detect: a seconda dell'obiettivo della query.

Analogy sarebbe un'interfaccia SQL, tuttavia ciò richiederebbe un modello di relazione per trarne benefici reali. Sto cercando un uso della lingua in cui il modello interrogato è solo un grafico ad oggetti ad hoc.

@JavierBurroni suggerisce "Guida alla programmazione di GemStone / S 64 bit capitolo 6" (in realtà Capitolo 7 nell'edizione 2012 ) come esempio. Che è ben spiegato, ma ancora tipico uso di smalltalk nell'ambiente Smalltalk dagli sviluppatori Smalltalk.

C'è una cosa del genere?

    
posta Stiivi 18.11.2014 - 16:25
fonte

1 risposta

4

.NET lo fa già; si chiama Linq. Linq è fondamentalmente SQL per le raccolte di oggetti.

In C #, appare come segue:

var q =
  customers.
  where(c => c.City == "Montreal").
  select(c => c.CompanyName);

e in Smalltalk, assomiglia a questo:

q :=
  customers
    where: [ :c | c city = 'Montreal' ]
    select: [ :c | c companyName ].

o questo:

((people
    select:  [ :person | person type = #adult ])
    reject:  [ :person | person location = 'New York' ])

Per nascondere la rappresentazione Smalltalk dai tuoi utenti, dovresti creare una sorta di linguaggio specifico per il dominio che viene analizzato ed elaborato da Smalltalk. SQL è uno di questi linguaggi, ma potrebbe essere più semplice di così. Potrebbe semplicemente essere un involucro attorno alla semantica Smalltalk.

Per un esempio di come potrebbe funzionare, consulta il progetto Biosmalltalk .

Naturalmente, tutto questo dipende dall'avere una sorta di struttura organizzativa ragionevole per i tuoi dati. Se il tuo obiettivo è di interrogare i dati con una rappresentazione arbitraria , allora devi esaminare elementi come database di grafici o query generate dinamicamente.

Ulteriori letture
Is C # trasformarsi in Smalltalk?
Le funzionalità linguistiche sono le mie librerie
Linq dinamico

    
risposta data 18.11.2014 - 18:35
fonte

Leggi altre domande sui tag