agentsmith ha scritto:
Direi che la richiesta, cosi riformulata, corrisponde a quanto intendevo chiedere...
Molto bene. Stando così le cose, il mio suggerimento è il seguente:
-
APL e J, linguaggi
vettoriali (attenzione: non semplicemente "funzionali") di incredibile espressività e concisione, implementati anche (e soprattutto) sulle più spinte piattaforme di supercalcolo parallelo.
- Haskell, ML, F# e il progenitore Miranda come ottimi rappresentanti per il versante dei linguaggi funzionali puri;
- AIMMS, AMPL e GAMS come esempi di linguaggi 4GL per l'ottimizzazione matematica, con capacità multiparadigmatiche (in particolare, supporto esplicito di constraint);
-
Ada ed Eiffel, pur essendo sostanzialmente dei 3GL, per gli ottimi motivi spiegati nel link che apre questa proposizione.
Appoggio inoltre caldamente il suggerimento di studiare Lua, al quale aggiungo senz'altro Tcl, Erlang e (Win)Icon.
Questo per limitarsi ai semplici linguaggi di programmazione. Ma in realtà sarebbe ancora più importante padroneggiare almeno due o tre linguaggi formali di specifica e verifica: Z e OCL, CSP, VDM, CASL, logiche temporali, algebre di processo, reti di Petri...
Riguardo ai paradigmi, ne esistono almeno tre dozzine nelle classificazioni degli esperti di linguaggi di programmazione e software engineering. Di fatto, molti paradigmi si intersecano e si sovrappongono, limitandosi ad evidenziare un solo particolare aspetto: quasi tutti i linguaggi offrono più o meno implicitamente strumenti, librerie o semplici idiomi nativi per implementare questo o quel particolare (meta)paradigma. In
questa entry di wikipedia (che come il buon vecchio Cimabue ne fa una e ne sbaglia due) sono citati alcuni dei paradigmi riconosciuti, con più di qualche stiracchiatura e imprecisione. Per una visione più completa non posso che rimandare al
Sebesta e, in subordine, al
Friedman-Wand o al
Turbak-Gifford (che in generale costituiscono un'ottima lettura propedeutica prima di affrontare lo studio dei testi sacri su compilatori, interpreti e linguaggi formali).