[BrainStorming] Quali sono le caratteristiche del linguaggio di programmazione ideale (didatticamente e non)?

Invece di scegliere un linguaggio di programmazione, mi piacerebbe che elencassimo le caratteristiche ideali di un linguaggio di programmazione che sia utile ma anche facile da imparare, in modo da poter poi valutare, sulla base di criteri ben ragionati, quelli esistenti o realizzarne uno nuovo.

1 Mi Piace

Non imporre limitazioni al paradigma che rendano difficoltoso passare a un altro linguaggio.

1 Mi Piace

Cioè un linguaggio multi paradigma?

No, un linguaggio che non imponga la sua visione del paradigma. (Esempio, se scegli oop: c++ no. smalltalk sì.)

1 Mi Piace

Didatticamente parlando, penso che LOGO sia imbattibile come linguaggio di programmazione.

Ecco questo è ciò che questo thread non vuole essere: una lista di linguaggi.

Dobbiamo discutere di caratteristiche.

Direi che la caratteristica principale del linguaggio didattico è non mettersi in mezzo. Quindi un linguaggio che evita bug stupidi (tipizzazione forte e statica?) sarebbe utile.

E sarebbe anche bello andare di programmazione funzionale.

1 Mi Piace

I processori non sono funzionali.

Così come i protocolli di comunicazione.

Ma tu vuoi fare informatica, o solo macchine di von Neumann?

Informatica.

Ma ho sufficiente esperienza da non seguire le mode del momento.

La programmazione funzionale è molto interessante perché permette di costruire il software su solide basi matematiche.

Ma per quanto elegante, non è priva di difetti.

Se è vero che un buon programmatore deve saper programmare in modo funzionale, non partirei assolutamente da un linguaggio esclusivamente funzionale (con Haskell o Idris) per insegnare a programmare ad un neofita.


Non abbiate fretta di scegliere un linguaggio esistente e che vi piace. Proviamo a ragionare prima su cosa ci serve e poi troveremo il linguaggio adatto.

No, che mode del momento. Ti stavo per suggerire di iniziare da SICP.

1 Mi Piace

Provo a buttar giù alcune delle caratteristiche che ritengo importanti, in ordine sparso:

  • sintassi semplice
    • un solo modo di esprimere un concetto
    • niente syntactic sugar
    • niente macro (eccetto se stiamo parlando di un linguaggio omoiconico)
  • modulare
    • namespace gerarchici
    • controllo di visibilità (per insegnare incapsulamento)
  • semplice da implementare
    • portabile (ben oltre Linux e Windows)
    • piccolo
  • usabile
    • facile da installare
    • tipizzazione sufficiente a dare buoni messaggi d’errore
    • buon debugger

Hai descritto Python

1 Mi Piace

SICP è un classico… ma è un testo universitario.

Io sto cercando qualcosa che si possa imparare alle elementari, approfondire alle medie e alle superiori ed usare tutta la vita.

1 Mi Piace

Python non è piccolo.

Ed è pieno di zucchero sintattico ed espressioni ridondanti.

Sì, è pesantuccio e ti nasconde le cose, però:

There should be one-- and preferably only one --obvious way to do it.

Secondo me Wirth dovrebbe togliere il FOR da Oberon perché può essere espresso con un WHILE. :wink:

per i ragazzi, il metodo usato da “scratch” mi pare ottimo, ma per gli altri… non riesco a concepire “facile da imparare” che sia anche utile, concetti astratti come puntatori, oggetti, STL, richiedono un po di pratica… Sui linguaggi piu comuni sbbiamo sentito troppo…