Apprendimento di ciascun tipo di linguaggio di programmazione

24

Ho sentito più volte che ogni programmatore dovrebbe imparare uno di ogni tipo di lingua. Ora, questo non è necessariamente vero, ma credo che sia una buona idea.

Ho imparato un linguaggio procedurale (Perl), ma quali sono gli altri tipi?

Quali sono le differenze tra loro e quali sono alcuni esempi di ciascuno?

    
posta Dynamic 31.10.2011 - 19:58
fonte

5 risposte

34

Anche se la terminologia è lontana dalla standardizzazione, un modo comune per classificare i principali paradigmi di programmazione in

  • procedurale
  • Funzionale
  • Logical
  • Object Oriented
  • Generico

Sembri già sapere com'è la programmazione procedurale.

Nelle funzioni funzionali vengono trattate come oggetti di prima classe. In altre parole, è possibile passare una funzione come argomento a un'altra funzione oppure una funzione può restituire un'altra funzione. Il paradigma funzionale si basa sul calcolo lambda e gli esempi di linguaggi funzionali sono LISP, Scheme e Haskel. È interessante notare che JavaScript supporta anche la programmazione funzionale.

Nella programmazione logica vengono definiti i predicati che descrivono le relazioni tra entità, ad esempio president(Obama, USA) o president(Medvedev, Russia) . Questi predicati possono diventare molto complicati e coinvolgere variabili, non solo valori letterali. Una volta specificati tutti i predicati, è possibile porre domande sul proprio sistema e ottenere risposte coerenti dal punto di vista logico.

La grande idea nella programmazione logica è che invece di dire al computer come per calcolare le cose, gli dici quali sono le cose. Esempio: PROLOG.

Il paradigma

orientato agli oggetti è in qualche modo un'estensione della programmazione procedurale. Nella programmazione procedurale si hanno i dati, che possono essere tipi primitivi, come interi e float, tipi composti, come matrici o liste e tipi definiti dall'utente, come le strutture. Hai anche le tue procedure, che operano sui dati. Al contrario, in OO ci sono oggetti, che includono sia dati che procedure. Questo ti permette di avere cose belle come l'incapsulamento, l'ereditarietà e il polimorfismo. Esempi: Smalltalk, C ++, Java, C #.

La programmazione

Generic è stata introdotta per la prima volta in Ada nel 1983 e si è diffusa dopo l'introduzione di modelli in C ++. Questa è l'idea che è possibile scrivere codice senza specificare i tipi di dati effettivi su cui opera e fare in modo che il compilatore lo comprenda. Ad esempio invece di scrivere

void swap(int, int);
void swap(float, float);
....

scriverai

void swap(T, T);

una volta e il compilatore genera un codice specifico per qualunque cosa possa essere T , quando swap() viene effettivamente utilizzato nel codice.

La programmazione generica è supportata a vari livelli da C ++, Java e C #.

È importante notare che molte lingue, come C ++, supportano più paradigmi. È anche vero che anche quando una lingua è detta per supportare un particolare paradigma, potrebbe non supportare tutte le caratteristiche del paradigma. Senza contare che c'è molto disaccordo su quali caratteristiche siano richieste per un particolare paradigma.

    
risposta data 31.10.2011 - 20:52
fonte
11

I linguaggi di programmazione hanno un numero di funzioni prevalentemente ortogonali; il più prominente si trova nel paradigma o nei paradigmi che sostengono. L' articolo di Wikipedia copre in modo esauriente i paradigmi; i paradigmi più importanti sono probabilmente questi:

  • Procedurale / Strutturato
  • Funzionale
  • Object Oriented
  • Basato sugli eventi e orientato all'aspetto
  • Generico
  • Logic

Ma le lingue differiscono anche in altri modi:

  • Sistema di battitura (tipizzazione dinamica rispetto a quella statica e tipi strong / debole)
  • Crea il processo e l'ambiente di runtime (interpretato, bytecode-compilato, completamente compilato)
  • Gestione della memoria (manuale come C / C ++, garbage collection automatica obbligatoria come Java, GC opzionale come D, ...)
  • La disciplina di valutazione (desiderosa e pigra, la maggior parte delle lingue sono ansiose di default, ma molte forniscono costrutti pigri)
  • Regole di selezione (confronta come funziona lo scope in PHP, Javascript e C, tre lingue che sono comunque abbastanza simili in termini di sintassi)
risposta data 31.10.2011 - 22:07
fonte
2

Esistono diversi paradigmi di programmazione attualmente in voga:

  • Orientato agli oggetti - VB.NET, C #, Java rientrano in questa categoria. Il codice è organizzato attorno a oggetti che hanno comportamenti e dati correlati e che comunicano tra loro passando messaggi.
  • Funzionale - Haskel, Scheme, Lisp e F # rientrano in questa categoria. Funzioni pure che non hanno effetti collaterali. Pensa a funzioni come in matematica. Spesso si può estendere il linguaggio stesso attraverso i suoi costrutti.
risposta data 31.10.2011 - 20:24
fonte
0

Prolog è un linguaggio di programmazione logico ed è relativamente facile da iniziare. Richiede un pensiero completamente diverso rispetto alla programmazione procedurale, quindi è bene esplorare quando si tenta di allungare il cervello.

Se vai al college, dovresti seguire un corso su Linguaggi di programmazione poiché è orientato all'introduzione dei diversi tipi di linguaggi di programmazione e di ciò per cui sono maggiormente utilizzati.

    
risposta data 31.10.2011 - 20:31
fonte
0

La maggior parte delle lingue mainstream mescola aspetti di programmazione imperativa, funzionale e dichiarativa. Le lingue di nicchia tendono ad essere più esotiche o introducono nuove idee interessanti che, per un motivo o per un altro, non sono adatte alla programmazione per scopi generici. Alcuni, per nulla esaustivi, esempi:

  • Lingue del foglio di calcolo (Excel, Google Forms): progettato per gestire dati tabulari.
  • Lingue di matrice (APL, J): progettate per elaborare rapidamente array multidimensionali. In J, (+/ % #)&.:*: calcola il valore RMS di un array. Famoso per essere conciso, noto per essere illeggibile.
  • Lingue di automazione (AutoHotkey, Bash): progettato per semplificare attività comuni, come compilare moduli, caricare file, ecc.
risposta data 12.09.2017 - 17:22
fonte

Leggi altre domande sui tag