Apple ha presentato Pkl (si pronuncia Pickle, letteralmente salamoia), un linguaggio di programmazione pensato per la configurazione dei prodotti. In un post su blog del sito dedicato a Pkl, la società spiega che quando si pensa alla configurazione, sorge spontaneo pensare a formati di interscambio quali JSON, a quelli per la serializzazione di dati come YAML o ai Property List (file che consentono, tre le altre cose, di memorizzare le preferenze impostate dall’utente); benché ognuno di questi formati/linguaggi abbia i suoi meriti, tendono secondo Apple a essere carenti quando le necessità di configurazione crescono in termini di complessità.
“Per esempio”, spiega la società, “sono carenti i termini di espressività e questo comporta spesso la necessità di ripetizioni”. “Inoltre, può essere semplice creare errori di configurazione perché questi formati non forniscono da parte loro alcun meccanismo di convalida. Per sopperire a tali carenze, a volte i formati sono arricchiti da strumenti complementari necessari per aggiungere logica ad hoc”.
In alcuni casi è necessario tenere conto di risolvere riferimenti e unire oggetti insieme, altre volte tenere conto di valori per tipi di dati non previsti, e altre complicazioni che stanno portando questi formati a diventare linguaggi difficili da scrivere e comprendere.
Secondo la multinazionale di Cupertino è necessario un linguaggio di uso generico. Linguaggi di programmazione quali Kotlin, Ruby o JavaScript, sono diventati la base dei Domain-specific language (DSL), linguaggi dedicati a particolari problemi di un dominio, a una particolare tecnica di rappresentazione e/o a una particolare soluzione tecnica.
È complicato usare Kotlin e sikili come linguaggi di configurazione, ad esempio per un’applicazione scritta in Go e ritiene necessaria un trait d’union fra un linguaggio statico e un linguaggio di programmazione generico, “il meglio dei due mondi” che sia dichiarativo, con codice semplice da leggere e scrivere ,ma con funzionalità avanzate prese in prestito da linguaggi general-purpose.
“Usando Pkl”, scrive ancora Apple, “sarete in grado di usare funzionalità dei linguaggi che vi aspettate, quali classi, funzioni, condizionali e loop”. “È possibile creare livelli di astrazione e condividere codice creando package e pubblicarli. Cosa più importante, è possibile usare Pkl per soddisfare diversi tipi di esigenze di configurazione. Può essere usato per creare file con configurazioni statiche in qualsiasi formato, o integrato in librerie di altri runtime applicativi”.