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

  • 1957 – FORTRAN (77, 90, …)
  • 1958 – ALGOL (60, 68)
  • 1959 – LISP
  • 1961 – COBOL (68, 74, 85, 2002)
  • 1964 – BASIC
  • 1967 – LOGO
  • 1970 – Pascal
  • 1972 – C
  • 1979 – Ada (83, 95, …)
  • 1983 – C++
  • 1991 – Python – Visual Basic
  • 1995 – ASP – Delphi – Java – Javascript – PHP
In ordine alfabetico


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

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

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, …)
  3. tekh.io

Codifiche dei caratteri

La codifica dei caratteri e delle cifre è necessaria per poterli rappresentare all’interno dei computer

Storici

  • Morse
  • Baudot
  • BCD, EBCDIC, PETSCII, …

Attuali

  • US-ASCII
  • ASCII
    • American Standard Code for Information Interchange
    • 7 bit, 1 pagina
  • ASCII esteso
    • 8 bit, 2 pagine
    • La seconda pagina è localizzata
  • UNICODE
    • Universal Code
    • UTF 8
    • UTF 16
    • UTF 32

RISORSE ONLINE

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. Visuale: Blocchi, frecce, …
  9. Concorrente: Processi
  10. Parallela: Concorrenza
  11. Genetica: Apprendimento automatico
  12. Orientata agli eventi: Eventi, gestori degli eventi
  13. 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…
Download sorgente VB6 (13 KB)


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…
Download sorgente VB6 (18 KB)

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…
Download sorgente VB6 (25 KB)

minato2

RISORSE ONLINE