Linguaggi di programmazione

Definizioni

  • simboli + regole
  • parole + regole
  • Linguaggio naturale – artificiale – formale – logico/matematico – di programmazione – di progetto – pseudolinguaggio – metalinguaggio – di alto livello – di basso livello – linguaggio macchina – lato client – lato server – di script – di comandi – esoterico – …
Storia

In ordine alfabetico

I linguaggi possono essere classificati a seconda del paradigma di programmazione che realizzano

  • Funzionale: LISP – LOGO – AutoLISP – Mathematica- Common Lisp, Scheme, Scala
  • Logico: PROLOG (Programming logic – PROgrammation en LOGique)
  • Orientato agli oggetti: Simula – Smalltalk – C++ – Eiffel – Delphi, Java, VisualBasic 4
  • Script: ActionScript (Flash) – AppleScript – ASP – Bash (Unix, Linux, …) – Javascript – JSP (Java server page) – PHP – VBScript – Perl, Python, Ruby, Tcl, …

Molti linguaggi si presentano come multiparadigma, forniscono al programmatore una sintassi molto flessibile / completa

  • Adaprogrammazione modulare, orientata agli oggetti, concorrente, distribuita
  • C#: … imperativa, dichiarativa, funzionale, generica, object-oriented, component-oriented
  • Common Lispprocedurale, imperativa, funzionale, object-oriented
  • F#: … imperativa, funzionale, object-oriented
  • Scala… funzionale, object-oriented

Strumenti di sviluppo

Forse non hai bisogno di un linguaggio di programmazione tradizionale, considera


RISORSE ONLINE

  1. Lista dei linguaggi di programmazione
  2. tutorialspoint (C, C++, C#, Java, Pascal, Python, …)

I paradigmi di programmazione

Negli anni sono stati codificati diversi modi per passare dal problema all’algoritmo

Programmazione imperativa

Un programma è costituito da una sequenza di comandi che l’esecutore eseguirà ordinatamente

  1. Comando A
  2. Comando B
  3. Comando C

Il controllo dell’esecuzione si realizza tramite delle istruzioni di salto

  • condizionato (JGT, JLT, …)
  • incondizionato (JUMP…)
  • GOTO, …

I linguaggi di basso livello e i primi linguaggi di programmazione avevano questo approccio (oggi è da evitare).

Programmazione strutturata

Il controllo dell’esecuzione non si realizza con le istruzioni di salto ma con

  • selezioni (per i salti in avanti)
    • singola
    • doppia
    • multipla
  • ripetizioni (per i salti indietro)
    • indefinita
    • predefinita

Paradigma procedurale

Divido il problema in sotto-problemi e li risolvo singolarmente (con dei sotto-programmi) fino a risolvere tutto il problema.

PARA3


PARA1

Da dove si parte?

Metodologia TOP-DOWN

Affronto qualsiasi problema partendo dall’aspetto più alla superficie.
Continuo strato dopo strato fino ad arrivare alla radice.

Ad ogni passo risolvo l’aspetto più immediato/semplice fino ad arrivare a risolvere completamente il problema.

Metodologia BOTTOM-UP

Affronto subito la risoluzione del nucleo del problema.
Risalgo strato dopo strato fino alla superficie esterna.

PARA2

Inizio risolvendo l’aspetto più caratteristico (significativo / difficile) del problema e poi aggiungo strato dopo strato il codice necessario.


Riepilogo dei paradigmi di programmazione

  1. Imperativa: Variabili, comandi, istruzioni per il controllo del flusso
  2. Strutturata: Sequenza, cicli, alternative
  3. Procedurale: Sottoprogrammi, procedure, funzioni
  4. Modulare: Moduli, interfacce
  5. Orientata agli oggetti: Classi, incapsulamento, ereditarietà, polimorfismo
  6. Funzionale: Valutazione di funzioni
  7. Logica: Clausole, unificazione
  8. Concorrente: Processi
  9. Parallela: Concorrenza
  10. Genetica: Apprendimento automatico
  11. Orientata agli eventi: Eventi, gestori degli eventi
  12. Di script: Shell, interpretato

Ricerca sequenziale con sentinella

 

Si tratta di una versione leggermente migliorata dell’algoritmo di ricerca sequenziale.

Il confronto (i <= n) ripetuto a ogni passo può essere eliminato se si introduce la sentinella, la chiave della ricerca, alla prima posizione libera nell’array.

Il ciclo si chiude comunque nel caso in cui la chiave non esista.

Se l’array è ordinato si può introdurre un ulteriore miglioramento…

Visual Basic

Storia

  • 1991 VisualBasic
  • 1992 VisualBasic 2.0
  • 1993 VisualBasic 3.0
  • 1995 VisualBasic 4.0 (Object Oriented)
  • 1997 VisualBasic 5.0
  • 1998 VisualBasic 6.0
  • 2002 VisualBasic.NET, 2003, 2005, 2008, 2010, 2012, …

Linguaggi derivati: VBA (Visual Basic for Applications), VBScript (Visual Basic Script), Small Basic


Rendo disponibili agli appassionati le mie versioni VisualBasic 6.0 di alcuni giochi famosi.


15Un altro gioco del 15

1998/99

Un gioco storico ancora in vendita in formato tascabile con numeri fino a 15 (31)
Sezione dedicata al gioco del 15

In questa versione

  • ha dimensioni variabili da 2×2 a 10×10
  • si gioca con il mouse e/o con la tastiera (molto più veloce)
  • conteggia il numero di mosse e il tempo trascorso
  • si può giocare con i numeri o con frasi a piacere (diventa quasi impossibile…)

Con il download ottieni una cartella con il progetto completo quindi per giocare è necessario l’ambiente di sviluppo del VisualBasic 6.0…


minatoUn altro campo minato

1998

Rispetto all’originale è possibile scegliere la modalità di indicazione delle mine per renderlo più difficile!

Con il download ottieni una cartella con il progetto completo quindi per giocare è necessario l’ambiente di sviluppo VisualBasic 6.0…


La versione successiva con in più

  • dimensioni variabili da 2×2 a 20×20
  • si può giocare indifferentemente con il mouse e con la tastiera (molto più veloce…)
  • grafica rinnovata.

Con il download ottieni una cartella con il progetto completo quindi per giocare è necessario l’ambiente di sviluppo VisualBasic 6.0…

minato2

RISORSE ONLINE