Quali sono i diversi concetti dei linguaggi di programmazione e quali linguaggi li mostrano in modo puro

StackOverflow https://stackoverflow.com/questions/4082177

  •  28-09-2019
  •  | 
  •  

Domanda

Non sono un esperto di lingue, ma di recente mi sono interessato alle lingue e sto cercando di ottenere una panoramica dei concetti principali e delle "loro" lingue.Questo è simile a un'altra domanda sui libri.Quindi, in primo luogo, quali sono i principali concetti del linguaggio di programmazione, ad es.

  • strutturato
  • procedurale
  • orientato agli oggetti
  • orientato agli oggetti - basato su prototipi (ad es.JavaScript)
  • funzionale (es.Haskell)
  • orientato alla logica (es.Prologo)
  • meta (se è un puro concetto a sé stante?)
  • basato su stack (ad es.Via)
  • basato sulla matematica/orientato agli array (ad es.APL)
  • dichiarativo
  • concatenativo (es.PostScript)
  • (elenco sicuramente incompleto...)

e in secondo luogo, per avere una buona idea di questi concetti, quale sarebbe il linguaggio di programmazione che si basa/implementa il suo concetto centrale nel modo più naturale e puro?

  • Ad esempio Java è OO, ma non è un buon esempio perché non è puro OO a causa degli atomi.
  • Il Lisp è noto per essere un linguaggio funzionale, ma è multi-paradigma, quindi non è puro.Ma Lisp potrebbe essere una pura implementazione di "list-based" (se conta come concetto).
  • Esiste un linguaggio strutturato (no GOTO) ma non procedurale?(Forse XSLT v1.x)
È stato utile?

Soluzione 3

Grazie a solo la mia corretta PARERE 's risposta mi è stato fatto nella giusta direzione. Darò l'elenco dei paradigmi insieme con i loro linguaggi puri per quanto ho scoperto fino ad ora:

  • imperativo
    • non strutturata --- presto BASIC, Assemblea
    • strutturata ---?
    • procedurale ---?
    • modulare --- Modula-2, forse Pascal
    • orientato agli oggetti
      • class-based --- Smalltalk
      • prototipi basati --- Sé, forse Java Script, Lua
  • dichiarativa --- SQL, espressioni regolari, CSS
    • logica --- Mercury, forse Prolog
    • funzionale --- Scheme, Haskell
      • tacita / punto-libera
        • concatenativa --- Gioia, Cat

Su un diverso "asse" dobbiamo

  • scalare --- maggior parte di loro
  • array --- APL

Non so dove metterlo:

  • impilare basato --- Forth, Postscript

Altri suggerimenti

Il termine che stai cercando qui è "paradigma di programmazione" e ci sono un sacco di loro là fuori.Puoi ottenere un elenco di lingue che supportano ciascuna da quella pagina Wikipedia e dai suoi collegamenti successivi.

Per le interpretazioni "pure" di uno qualsiasi di questi, è più difficile perché dipende dal livello di purezza che stai cercando.

  • Per strutturato puro (sotto qualsiasi definizione sufficientemente ampia di "puro" qui) puoi guardare, ad esempio, a Modulo-2.
  • Stai guardando principalmente per il puro orientamento agli oggetti Chiacchiere ed è simile se vuoi che assolutamente tutto sia trattato in modo uniforme (in realtà non necessario secondo le definizioni più comuni!) o stai guardando lingue come Giava E Eiffel se accetti i tipi primitivi sotto quella voce.
  • Per la funzionalità che stai cercando molto probabilmente Haskell.
  • Per la programmazione logica il linguaggio archetipico è Prologo, ma non è veramente puro.L'unico linguaggio logico (per lo più) puro che conosco è Mercurio, e questo solo se si considerano i suoi blocchi funzionali come essenzialmente compatibili con i suoi blocchi logici.

...e così via.Hai capito.

Credo che Pascal è la lingua processuale canonico.

Credo anche che Lisp (ironia della sorte, non ML) è la canonica linguaggio "meta".

Per uno, una macro è un frammento di programma che modifica una struttura dati che rappresenta un frammento di programma --- in modo da utilizzare la lingua per modificare la lingua. In secondo luogo, è considerato pratica comune di scrittura interpreti self-hosting, tradizionalmente chiamata valutatori metacircular:. Sono programmi quali programmi e li gestiscono

Naturalmente, qualsiasi altra lingua può farlo. In Python si ha accesso al compilatore python, e PyPy è un'implementazione pitone in python. Ma Lisp ha, a mio avviso, la tradizione più forte di fare questo.

Ma io sono un estraneo Lisp, in modo che ne so io ... 'speranza-questo-aiuta; -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top