Software Development for Dummies

@Luther Blissett

un esempio di come struttureresti in modo COMPLETAMENTE diverso, in un db a documenti, un set "complesso" (vabbe' ... questo e' ipersemplice ma per complesso intendo con dati relazionati/innestati) di dati, e' questo

Codice:
{
    _id: ObjectId("123456789"),
    email: "email@boh",
    name: {
        firstName: "Marc",
        lastName: "Overmars"
    },
    age: 99,
    addresses: [
        {
            label: "casa",
            street: "1000 San Siro Meazza",
            city: "Milan",
            region: "Lombardia",
            province: "Milan",
            zip: "20090",
            country: "IT",
            sqft: 3000
        },
        {
            label: "office",
            street: "101 5th Ave",
            city: "New York",
            state: "NY",
            country: "US"
         }
    ]
}

nota come ci sono informazioni completamente diverse tra casa e ufficio

in sql questa cosa e' quasi irrealizzabile, o perlomeno molto pasticciata, con tabelle con un sacoc di campi, vuoti, nullable, ... una vera *****

mentre in mongo puoi cercare tutte le persone che hanno un indirizzo con almeno 2000 sqft, o anche le persone che hanno gli occhi verdi, anche se non si e' mai parlato da nessuna parte del colore degli occhi

in sql avresti diverse tabelle relazionate. qui un documento che descerive le persone con i loro indirizzi innestati
 
facciamo un caso d'uso che mi invento ora

cerco di semplificare/banalizzare, altrimenti ci si perde dietro i dettagli
supponiamo tu voglia scrivere una agenda online

se tu usassi mysql per esempiop, creeresti una tabella "contatti" con i campi "nome", "email", "telefono"

se domani vuoi aggiungere lo stato dovresti modificare la struttura del mysql, e poi modificare l'applicazione per gestire il campo stato

se tu usassi invece mongo, non creeresti nulla, manco la collection "contatti"

semplicemente la useresti
e se devi aggiungere il campo stato, modifichi la applicazione, lo scrivi, lo usi, come esistesse

in mysql la tabella sarebbe

Codice:
= id = nome = email          = telefono        =
------------------------------------------------
= 1  = marc = marc@juvemerda = 30000 sul campo =

in mongo sarebbe
Codice:
{
  _id: ObjectId("123456789"),
  nome: "marc",
  email: "marc@juvemerda",
  telefono: "30000 sul campo"
}

la struttura del doc mongo puo' essere complessa a piacimento, array dentro oggetti, dentro array, ... e su quella struttura puoi fare query complesse in modo semplice, roba che in SQL ti uccidi

p.s. ho banalizzato in modo vergognoso l'importanza e i casi d'uso dei db nosql, me ne vergogno, ma non si puo' fare altrimenti per iniziare

è una spiegazione che funziona, è quello che chiedevo, grazie(y)
la struttura in mongo è simile (almeno per me non developer...) all'output ritornato da connessione ad una API di un sito da cui estraggo dati, json appunto
 
Ultima modifica:
Scopo di questo thread e' quello di mettere l'esperienza di qualche utente a disposizione di chi voglia capire, imparare, o avvicinarsi al modo delllo sviluppo software.

Non e' un thread dedicato a chi e' esperto (e di certo non ha bisogno di discutere qui dentro di Flutter vs React Native o di Design Patterns o Functional Programming) ma e' solo per chi vuole fare domande.

Nessuna domanda e' banale o stupida, questo e' proprio il luogo per rispondere a dubbi basic di chi non e' un professionista.

Taggo @Falkner e @Cirano994 solo perche' conosco loro come professionisti, chiunque e' benvenuto a dare contributi.

Personalmente credo di potere essere in grado di rispondere su quasi ogni tecnologia sw esistente in modo autorevole e professionale, visto che sono contemporaneamente dotato di enorme esperienza (aka vecchio di *****) e con una conoscenza trasversale su piu' o meno ogni tipo di tecnologia software a partire dall'assembler fino alle tecnologie piu' moderne, da embedded devices, fino a sistemi web e mobile, da Git a Kubernates, ecc ecc da potendo quindi aiutare piu' o meno tutti.

Questo thread ha una ragione di esistere molto simile a quello aperto da @maxichnusa sulle criptomonete, informare chiunque voglia avvicinarsi al mondo dello sviluppo o devops.
Un mondo che mi affascina e appena avrò un po' di tempo credo di iscrivermi ad un corso di programmazione universitario (qualcosa online), la mia curiosità è perchè ci siano così tanti linguaggi di programmazione, cioè non converrebbe averne uno universale imparare quello e basta?
 
Un mondo che mi affascina e appena avrò un po' di tempo credo di iscrivermi ad un corso di programmazione universitario (qualcosa online), la mia curiosità è perchè ci siano così tanti linguaggi di programmazione, cioè non converrebbe averne uno universale imparare quello e basta?

domanda anche questa profonda come quella di carlo, anche se sembra banale, non lo e'

la risposta semplice e': linguaggi diversi sono piu' mirati a usi diversi

esattamente come un giocatore fa meglio il centrale difensivo che l'esterno offensivo.

puoi giocare con giocatori universali? si ma giocherai sempre sotto le tue possibilita' e male in tutti i casi.

puoi usare un coltellino svizzero per costruire professionalmente qualcosa? si ma e' scomodo, lavorerai malissimo, ci metterai un sacco di tempo, meglio usare un attrezzo dedicato ma magari scomodo e pericoloso.

linguaggi "universali" non potranno mai essere mirati all'uso che intendi farne. quando devi fare le cose "seriamente" purtroppo diventa complicato, e hai bisogno di strumenti mirati..

se usi un linguaggio "ad alto livello", cioe' comodo e facile, che ti fornisce un sacco di features, in generale hai bisogno di un runtime per eseguirlo (come vale per javascript, java, e molti altri) e quindi spesso sono inefficienti per funzionare su device dove devono essere estremamente performanti e leggeri (su piccoli device, che so un router, il set top box di Sky, ...). E quindi scrivi programmi usando linguaggi molto vicino alla macchina, scomodi, con poche features, ma che ti permettono di fare le cose in modo estremamente performante.
Se invece devi scrivere un sito web, devi fare le cose rapidamente, non puoi permetterti di scrivere un sito web in C, perche' ci metteresti anni invece di setitmane, e allora magari usi java, javascript, ecc ecc, le risorse non sono un problema, e non puoi perdere tempo dietro ai dettagli.
 
Un mondo che mi affascina e appena avrò un po' di tempo credo di iscrivermi ad un corso di programmazione universitario (qualcosa online), la mia curiosità è perchè ci siano così tanti linguaggi di programmazione, cioè non converrebbe averne uno universale imparare quello e basta?
aggiungo solo una cosa a quanto detto da overmars, devi farti la domanda FONDAMENTALE: imparare a programmare per far COSA? dalla risposta dipende la scelta del linguaggio
 
Il problema è quello per ora non mi serve, la mia è semplice curiosità e ho difficoltà anche a capire da cosa partire.
Se vuoi iniziare a programmare per diletto e vedere un po' come funziona il meccanismo puoi provare con un linguaggio facile e immediato, per esempio Python oppure Javascript.

In questo modo senza dover sbattere necessariamente la testa in problemi che esulano dal coding in se, puoi già iniziare a capire un po' i rudimenti della programmazione (costrutti, semplici strutture dati, ecc)

@winston_smithII ha imparato qualcosa in python per esempio

Se poi ci si appassiona alla materia nel suo complesso (non solo coding) e si vuole approfondire, beh c'è un mondo dietro e allora può arrivare il momento di iniziare con qualcosa di teorico, quindi studiare effettivamente come funziona un elaboratore/calcolatore (così viene chiamato in letteratura :ghigno), come funziona un sistema operativo, strutture dati ecc ecc
 
Se vuoi iniziare a programmare per diletto e vedere un po' come funziona il meccanismo puoi provare con un linguaggio facile e immediato, per esempio Python oppure Javascript.

In questo modo senza dover sbattere necessariamente la testa in problemi che esulano dal coding in se, puoi già iniziare a capire un po' i rudimenti della programmazione (costrutti, semplici strutture dati, ecc)

@winston_smithII ha imparato qualcosa in python per esempio

Se poi ci si appassiona alla materia nel suo complesso (non solo coding) e si vuole approfondire, beh c'è un mondo dietro e allora può arrivare il momento di iniziare con qualcosa di teorico, quindi studiare effettivamente come funziona un elaboratore/calcolatore (così viene chiamato in letteratura :ghigno), come funziona un sistema operativo, strutture dati ecc ecc
Orgoglioso di essere citato come caso limite :cod
 
Alto