1
00:00:14,800 --> 00:00:17,800
Benvenuti ad un nuovo episodio. 
Prima iniziare con l'argomento 

2
00:00:17,800 --> 00:00:19,800
di oggi. 
Vi invito a iscrivervi, attivare

3
00:00:19,800 --> 00:00:22,320
la campanella e a lasciare una 
valutazione positiva. 

4
00:00:23,000 --> 00:00:25,480
Il vostro supporto è 
fondamentale per far crescere 

5
00:00:25,480 --> 00:00:29,400
questa comunità e migliorare un 
episodio se avete dubbi, domande

6
00:00:29,400 --> 00:00:35,790
ocuriositapoteteiscrivermiamauro.spezzafero@gmail.com.
Nella puntata di oggi 

7
00:00:35,790 --> 00:00:38,910
affrontiamo un tema che spesso 
genera confusione, soprattutto 

8
00:00:38,910 --> 00:00:42,960
perché all'inizio il percorso. 
La differenza tra linguaggio di 

9
00:00:42,960 --> 00:00:45,360
programmazione, libreria e 
framework. 

10
00:00:46,310 --> 00:00:49,310
Molto spesso questi tre termini 
vengono usati come se fossero 

11
00:00:49,310 --> 00:00:52,390
sinonimi. 
Si sente dire, sto studiando un 

12
00:00:52,390 --> 00:00:55,710
nuovo linguaggio riferendosi 
magari a una libreria, oppure 

13
00:00:55,710 --> 00:00:58,790
questo è un framework, quando in
realtà si tratta semplicemente 

14
00:00:58,790 --> 00:01:01,910
di un'insieme di funzioni 
riutilizzabili, capire la 

15
00:01:01,910 --> 00:01:05,550
differenza è fondamentale, non 
solo per usare correttamente le 

16
00:01:05,550 --> 00:01:08,110
parole, ma per comprendere 
davvero cosa stiamo utilizzando 

17
00:01:08,110 --> 00:01:12,670
quando scriviamo codice. 
Partiamo dal primo concetto, che

18
00:01:12,670 --> 00:01:14,230
cos'è un linguaggio di 
programmazione? 

19
00:01:14,470 --> 00:01:17,910
Ne abbiamo parlato più volte, ma
in questo caso raggrupperemo il 

20
00:01:17,910 --> 00:01:21,750
tutto in una breve definizione. 
Un linguaggio programmazione è 

21
00:01:21,750 --> 00:01:23,710
lo strumento con cui 
comunichiamo con il computer. 

22
00:01:24,350 --> 00:01:27,030
E un'insieme di regole 
sintattiche e semantiche che ci 

23
00:01:27,030 --> 00:01:29,430
permette di scrivere istruzioni 
comprensibili da una macchina. 

24
00:01:29,430 --> 00:01:33,670
Definisce come si dichiara una 
variabile, come si costruisce un

25
00:01:33,670 --> 00:01:36,470
ciclo, come si scrive una 
funzione, come si organizzano i 

26
00:01:36,470 --> 00:01:39,830
dati. 
In altre parole, è la grammatica

27
00:01:39,830 --> 00:01:42,350
con cui costruiamo il nostro 
discorso verso il computer. 

28
00:01:44,000 --> 00:01:46,480
Ma il linguaggio da solo non 
basta a costruire applicazioni 

29
00:01:46,480 --> 00:01:49,680
complesse, potremmo riscrivere 
tutto da zero, ma 

30
00:01:49,680 --> 00:01:51,840
significherebbe tempi 
lunghissimi e un rischio 

31
00:01:51,840 --> 00:01:55,790
maggiore di errori. 
Ogni gestione di file, ogni 

32
00:01:55,790 --> 00:01:59,110
richiesta di rete, ogni calcolo 
dovrebbe essere implementato 

33
00:01:59,110 --> 00:02:02,350
manualmente, anche se qualcuno 
l'ha già fatto in modo più 

34
00:02:02,350 --> 00:02:05,070
efficiente. 
Ed è qui che entrano in gioco le

35
00:02:05,070 --> 00:02:08,030
librerie. 
Una libreria è un'insieme di 

36
00:02:08,030 --> 00:02:10,389
codice già scritto, pensato per 
essere riutilizzato. 

37
00:02:10,389 --> 00:02:14,150
Serve a svolgere compiti 
specifici senza doverli 

38
00:02:14,150 --> 00:02:17,910
riscrivere da zero. 
La caratteristica principale è 

39
00:02:17,910 --> 00:02:20,670
che siamo noi a decidere quando 
e come usarla. 

40
00:02:22,190 --> 00:02:24,950
Il flusso del programma rimane 
sotto il nostro controllo, 

41
00:02:25,150 --> 00:02:28,470
chiamiamo le sue funzioni quando
ne abbiamo bisogno e come una 

42
00:02:28,470 --> 00:02:31,070
cassetta degli attrezzi, 
continui strumenti pronti 

43
00:02:31,070 --> 00:02:34,030
all'uso, ma siamo noi a 
scegliere quale utilizzare. 

44
00:02:35,230 --> 00:02:37,150
Con le librerie restiamo al 
volante. 

45
00:02:37,470 --> 00:02:40,630
Attenzione però, anche usando 
una libreria stiamo introducendo

46
00:02:40,630 --> 00:02:42,590
un livello di astrazione nel 
nostro progetto. 

47
00:02:43,150 --> 00:02:47,310
Stiamo delegando un compito, ma 
il controllo generale rimane 

48
00:02:47,310 --> 00:02:50,150
nostro. 
Ma cosa succede quando vogliamo 

49
00:02:50,150 --> 00:02:54,030
sviluppare applicazioni più 
grandi e complesse, dove servono

50
00:02:54,030 --> 00:02:57,830
regole chiare, una struttura 
precisa e convenzioni condivise?

51
00:02:58,590 --> 00:03:00,070
Qui entrano in gioco i 
framework. 

52
00:03:01,230 --> 00:03:04,910
Un framework non è solo codice 
riutilizzabile, è un'insieme di 

53
00:03:04,910 --> 00:03:08,550
regole, strutture e convenzioni 
che definisce come deve essere 

54
00:03:08,550 --> 00:03:13,070
organizzata un'applicazione. 
La differenza fondamentale è 

55
00:03:13,070 --> 00:03:16,950
questa, con una libreria siamo 
noi a chiamare il codice, con un

56
00:03:16,950 --> 00:03:20,750
framework il framework a 
chiamare il nostro codice e lui 

57
00:03:20,750 --> 00:03:24,070
a stabilire il flusso. 
Noi implementiamo determinate 

58
00:03:24,070 --> 00:03:26,870
parti, ma lo facciamo seguendo 
una struttura già definita, 

59
00:03:27,430 --> 00:03:30,710
seguiamo convinzioni precise ad 
un certo modo di organizzare i 

60
00:03:30,710 --> 00:03:35,400
file e responsabilità. 
In cambio otteniamo velocità, 

61
00:03:35,400 --> 00:03:38,640
ordine e una base solida su cui 
costruire progetti complessi. 

62
00:03:39,400 --> 00:03:42,560
Un modo semplice per ricordare 
le differenze è questo, il 

63
00:03:42,560 --> 00:03:46,360
linguaggio e la grammatica, la 
libreria sono gli strumenti che 

64
00:03:46,360 --> 00:03:49,160
scegliamo di usare, il framework
e la struttura che guida il 

65
00:03:49,160 --> 00:03:52,200
flusso. 
Ma ovviamente non è tutto oro 

66
00:03:52,200 --> 00:03:54,950
ciò che luccica. 
Quando scegliamo un framework, 

67
00:03:54,950 --> 00:03:57,390
stiamo scegliendo anche la sua 
visione dello sviluppo, 

68
00:03:57,990 --> 00:04:01,550
accettiamo il suo modo di 
organizzare il codice, la sua 

69
00:04:01,550 --> 00:04:06,310
logica, le sue convinzioni. 
E potente, ma vincolante. 

70
00:04:07,070 --> 00:04:10,470
Se cerchiamo di forzarlo a fare 
cose a modo nostro rischiamo 

71
00:04:10,470 --> 00:04:13,150
confusione e codici difficili da
mantenere. 

72
00:04:14,720 --> 00:04:16,920
Se siamo concentrati nello 
studio di una metodologia 

73
00:04:16,920 --> 00:04:19,320
specifica, come ad esempio 
l'embou C, può essere 

74
00:04:19,320 --> 00:04:23,480
controproducente iniziare con 
framework troppo articolati, non

75
00:04:23,480 --> 00:04:26,040
perché siano sbagliati, ma 
perché introducono un livello di

76
00:04:26,040 --> 00:04:28,640
astrazione che può confondere 
l'apprendimento. 

77
00:04:29,520 --> 00:04:32,480
Quando studiamo un pattern 
architetturale, l'obiettivo è 

78
00:04:32,480 --> 00:04:36,240
capire davvero che cos'è il 
model che ruola la bioe, come si

79
00:04:36,240 --> 00:04:39,590
comporta il controller. 
Come fluiscono i dati tra questi

80
00:04:39,590 --> 00:04:42,070
componenti? 
Se uno strumento automatizza 

81
00:04:42,070 --> 00:04:45,230
gran parte di questi meccanismi,
rischiamo di non distinguere più

82
00:04:45,230 --> 00:04:47,630
dove finisce il Pattern e dove 
inizia il framework. 

83
00:04:48,870 --> 00:04:51,910
Il rischio, quindi, è credere di
aver compreso un'architettura 

84
00:04:52,150 --> 00:04:55,030
quando in realtà abbiamo solo 
imparato a usarla all'interno di

85
00:04:55,030 --> 00:04:59,390
uno specifico strumento. 
Per questo motivo all'inizio può

86
00:04:59,390 --> 00:05:02,630
essere più utile lavorare su 
progetti piccoli, scrivere più 

87
00:05:02,630 --> 00:05:05,870
codici manualmente e osservare 
con chiarezza la separazione 

88
00:05:05,870 --> 00:05:09,150
delle responsabilità. 
Solo dopo aver compreso davvero 

89
00:05:09,150 --> 00:05:13,150
i concetti ha senso adattare 
strumenti più strutturati perché

90
00:05:13,150 --> 00:05:15,750
sapremo riconoscere quali 
problemi stanno risolvendo per 

91
00:05:15,750 --> 00:05:18,390
noi e quali decisioni stiamo 
delegando. 

92
00:05:19,270 --> 00:05:21,910
E questo punto potrebbe sembrare
un invito a non utilizzare i 

93
00:05:21,910 --> 00:05:25,160
framework, ma. 
Non è questo il messaggio, il 

94
00:05:25,160 --> 00:05:29,880
punto non è evitarli, il punto è
usarli nel momento giusto e con 

95
00:05:29,880 --> 00:05:33,550
consapevolezza. 
Gli strumenti devono potenziare 

96
00:05:33,550 --> 00:05:35,750
la nostra comprensione, non 
sostituirla. 

97
00:05:36,870 --> 00:05:39,510
La differenza tra chi usa un 
framework e chi lo padroneggia 

98
00:05:39,510 --> 00:05:42,270
sta proprio nella capacità di 
capire cosa succede sotto al 

99
00:05:42,270 --> 00:05:44,670
cofano. 
Spero di essere riuscita a 

100
00:05:44,670 --> 00:05:46,990
trasmettervi non solo la 
differenza tecnica tra 

101
00:05:46,990 --> 00:05:49,550
linguaggio, libreria e 
framework, ma soprattutto il 

102
00:05:49,550 --> 00:05:52,470
modo corretto di guardarli. 
Non è una questione 

103
00:05:52,470 --> 00:05:55,350
terminologica, è una questione 
di consapevolezza. 

104
00:05:55,470 --> 00:05:58,390
Un linguaggio ci dà le parole, 
una libreria ci dà gli 

105
00:05:58,390 --> 00:06:01,030
strumenti, il framework ci dà 
una struttura. 

106
00:06:01,870 --> 00:06:04,790
Ogni scelta tecnica è anche una 
scelta di mentalità. 

107
00:06:05,510 --> 00:06:08,630
Il mio invito è semplice, come 
sempre, non fermatevi alla 

108
00:06:08,630 --> 00:06:10,230
superficie. 
Chi? 

109
00:06:10,280 --> 00:06:13,760
Edetevi chi controlla il flusso,
chiedetevi quali decisioni state

110
00:06:13,760 --> 00:06:16,840
delegando perché diventare 
sviluppatori consapevoli 

111
00:06:16,840 --> 00:06:19,760
significa comprendere davvero 
gli strumenti che utilizziamo. 

112
00:06:21,210 --> 00:06:23,370
Io vi ringrazio per aver 
ascoltato questa puntata di 

113
00:06:23,370 --> 00:06:26,410
informatica per tutti, se 
l'episodio vi è stato utile 

114
00:06:26,410 --> 00:06:29,450
condividetelo, Lasciatelo una 
votazione e fatemi sapere cosa 

115
00:06:29,450 --> 00:06:32,790
ne pensate. 
Noi ci sentiamo al prossimo 

116
00:06:32,790 --> 00:06:33,270
episodio.
