qual è la controparte orientata agli oggetti di haskell / coq

6

Ho informazioni dettagliate sugli ultimi sviluppi nella programmazione funzionale.

Penso che haskell sia un linguaggio di programmazione piuttosto avanzato e di alto livello. Con coq e agda questo diventa ancora più complesso e avanzato.

Con "avanzato" e "alto livello" intendo molte caratteristiche distinte, che possono essere trovate solo nelle rispettive lingue.

Mi piace per haskell

  • tutto è puro e pigro per impostazione predefinita
  • supporto per concetti avanzati come GADT, Monade, Functional, ecc.

Per coq / agda

  • un sistema di tipi dipendenti

E sia haskell che coq sono usati negli accademici, un buon segno che sono "all'avanguardia".

Tuttavia non ho idea di quali sviluppi comparabili nella programmazione orientata agli oggetti siano.

Quali sono alcuni degli ultimi sviluppi nella programmazione orientata agli oggetti?

Quale sarebbe la controparte del linguaggio OOP all'avanguardia di haskell / coq?

(Ho anche cercato un linguaggio di programmazione avanzato su google, ma ho trovato principalmente informazioni relative a haskell.L'unica lingua che potrei pensare è D 2.0. Scala è per me principalmente una versione java compatibile di haskell.)

    
posta mrsteve 06.11.2011 - 11:23
fonte

4 risposte

4

Sottotipizzazione (vale a dire qualsiasi sistema di tipo statico orientato agli oggetti) è molto più complesso di qualsiasi sistema di tipo "piatto" tipico dei linguaggi funzionali. È quasi impossibile formalizzarlo correttamente. Per questo motivo, non sorprende che non abbiamo ancora sentito parlare, ad esempio, di sistemi di tipo dipendenti orientati agli oggetti.

Probabilmente, un singolo primo esempio di tale tentativo sarebbe questo articolo .

    
risposta data 06.11.2011 - 12:31
fonte
1

Trovo divertente la maggior parte delle persone che ti rispondono con i linguaggi di programmazione :-) Nel mondo di OO, la maggior parte dei progressi nello "stato dell'arte" sono pubblicati su OOPSLA e ECOOP .

Devi capire che in termini di "prova formale" (come con Coq / Adga / etc ...), ci sono ancora problemi fondamentali da risolvere nella formulazione OO dei programmi. Sottotipizzazione (che la logica SK menziona), sovrascrivendo, ecc., Sono tutti ben lungi dall'essere "trattabili" in termini di fornire strutture adeguate di quelle che possono essere manipolate e ragionate. Anche così, puoi trovare progetti come ESC-Java o Spec # che stanno aprendo la strada a questo tipo di ricerca.

In termini di "cosa c'è di nuovo" in queste aree, ci sono diverse "tendenze" che potresti trovare:

  1. Costruzione DSL e DSL
  2. Sistemi OO guidati dal modello
  3. refactoring
  4. Aumentare la forza dei sistemi di tipi (vedi Scala )
  5. Incorporare aspetti funzionali in OO (ancora, Scala e C #)
  6. Affrontare i problemi di parallelismo
  7. Meta-Programmazione e riflessione
  8. ...
risposta data 23.11.2011 - 21:03
fonte
0

Direi che C # è probabilmente un buon linguaggio da seguire: è un livello elevato, di uso generale, linguaggio di programmazione gestito, garbage-collected e object-oriented.

La versione corrente contiene generici, espressioni lambda, costrutti costruttivi in parallelismo e altro ancora.

La prossima versione dovrebbe aggiungere costrutti asincroni.

    
risposta data 06.11.2011 - 11:27
fonte
0

Il concetto di un linguaggio "stato dell'arte" è difficile da definire. Si può considerare solo la sintassi, la toolchain (cioè c ++ non è recente, ma ha potenti compilatori), il framework (c # e java sono popolari per questo).

Non so coq, ma non sembra che sia un linguaggio generico. La specificità di Haskell è la sua purezza. Quindi la mia risposta è: smalltalk, un puro linguaggio oop.

link

    
risposta data 06.11.2011 - 12:22
fonte

Leggi altre domande sui tag