𝗗𝗲𝗰𝗹𝗮𝗿𝗮𝘁𝗶𝘃𝗼. 𝗜𝗺𝗽𝗲𝗿𝗮𝘁𝗶𝘃𝗼. 𝗜𝗻𝘁𝗲𝗻𝘁𝗶𝗼𝗻𝗮𝗹𝗲.

Gli sviluppatori parlano continuamente di paradigmi di programmazione.

Usiamo la programmazione imperativa. Usiamo la programmazione dichiarativa. Usiamo stili funzionali o orientati agli oggetti.

Ma ci manca un livello.

Il futuro è intenzionale.

La programmazione imperativa dice al computer esattamente cosa fare. Fornisci istruzioni passo dopo passo. Ti concentri sul processo. Controlli la sequenza. Questo ti garantisce precisione, ma ti assumi il peso di ogni singolo passaggio.

La programmazione dichiarativa ha cambiato tutto. Descrivi ciò che vuoi, non come farlo. SQL è un esempio perfetto. Richiedi i dati. Non scrivi i cicli né gestisci la memoria. Il sistema si occupa del lavoro. Questo aumenta la produttività.

Eppure, anche i sistemi dichiarativi spesso ti costringono a pensare all'implementazione.

Guarda il responsive web design. Scrivi codice per colonne e breakpoint. Stai ancora descrivendo la meccanica. Stai descrivendo come dovrebbe funzionare un layout.

Il sistema sa cosa stai facendo, ma non sa perché.

La programmazione intenzionale cambia l'obiettivo.

Invece di descrivere il CSS, descrivi il comportamento desiderato. Dici al sistema di adattarsi. Dici al sistema di riorganizzarsi in base al contesto. Il focus si sposta dal meccanismo allo scopo.

Il software si sta muovendo in questa direzione.

  • SQL: Descrivi i dati.
  • Infrastructure as Code: Descrivi le risorse.
  • Nectarine: Descrivi schemi e API.

Il sistema si occupa del resto.

Le migliori librerie software fanno molto più che fornire funzionalità. Forniscono un linguaggio. Ti insegnano come pensare. Ogni API e ogni nome aiuta a costruire una filosofia.

L'implementazione è importante, ma non dovrebbe trasparire in ogni livello. Gli sviluppatori non vogliono esprimere la meccanica. Vogliono esprimere l'intento. Sanno cosa vogliono ottenere.

Le buone astrazioni nascondono la complessità. Le grandi astrazioni rendono l'intento ovvio.

Gli stili imperativo e dichiarativo rimarranno. Ma ci stiamo muovendo verso sistemi che comprendono gli obiettivi. Abbiamo bisogno di sistemi che traducano lo scopo in risultati.

Concentrati su ciò che intendi, non solo su come funziona. Il significato è più importante della meccanica.

Fonte: https://dev.to/stinklewinks/declarative-imperative-intentional-4j60