Domanda

Sembra che ci sia un forte movimento per la convergenza di matematica e linguaggi di programmazione, questo è in particolare evidenziato dalla influenza del lambda calcolo sulle lingue moderne. Il più delle volte non credo che con la matematica, penso che con la logica. Mi sembra che molti del fenomeno che può essere modellato matematicamente può essere modellato logicamente pure.

Non credo che vedremo mai un linguaggio puramente logico o un puramente matematico trazione guadagno linguaggio di programmazione general purpose, ma mi piacerebbe fare un inventario dei benefici di ogni paradigma. Mi piacerebbe sapere:

  • Quali sono i vantaggi dei linguaggi di programmazione o di modellazione caratteristiche del linguaggio di matematica?
  • Quali sono i vantaggi della modellazione una lingua sui principi della logica formale?
  • Può un linguaggio general purpose rinunciare sia la logica o la matematica?
  • Quali sono alcune delle lingue che mostrano davvero fuori i vantaggi di entrambi gli approcci?
  • Quale hardware caratteristiche fare un approccio più attraente rispetto agli altri?
È stato utile?

Soluzione

Prima di tutto, non vedo molta differenza tra la logica e la matematica; quest'ultimo è solo il primo applicato sistematicamente costrutti specifici.

Inoltre, non sono convinto che la bellezza teorica dei linguaggi di programmazione a terra in matematica / logica è in realtà vale molto quando si tratta di fare le cose scrivendo efficiente, il codice mantenibile.

Per quanto riguarda domande specifiche.

  

Quali sono i vantaggi della modellazione   linguaggi di programmazione o la lingua   caratteristiche di matematica?   Quali sono i vantaggi della modellazione una lingua sui principi della logica formale?

Prove di correttezza diventano molto più facili -. Anche se è lecito chiedersi se avremo mai arrivare al punto in cui diventano pratici per i sistemi di vita reale

  

Può un linguaggio general purpose rinunciare   sia la logica o la matematica?

Dipende da cosa si intende con "rinunciare". Si può avere una lingua senza operazioni matematiche (anche se bisogna ottenere abbastanza esoterico; macchine di Turing sono l'unico che mi viene in mente che non ha nemmeno incremento o decremento), e si può certamente avere uno che si preoccupa nulla formalismi ( assembler, C). Ma io non credo che sia possibile avere un linguaggio di programmazione senza logica (anche se può essere una logica perversa, cfr Malbolge )

  

Quali sono alcune delle lingue che mostrano davvero fuori i vantaggi di entrambi gli approcci?

Bene, se si considera lambda calcolo di una forma di logica, quindi Lisp è stato in mostra i suoi benefici abbastanza bene per essere dal 1958 la lingua la cui espressione di potenza altri Aspire lingua (ma non gestire) da raggiungere.

Poi c'è Prolog, l'unico altro "serio" lingua So che cerca di essere esplicitamente fondati nella logica formale. E - Quelle sorpresa - è bravo a roba logica e poco altro

.
  

Quale hardware caratteristiche fare un approccio più attraente rispetto agli altri?

Nessuno. Il fallimento di Macchine Lisp dimostra IMO abbastanza conclusivo che i compilatori + hardware generali sono più potenti di hardware specializzato. Tuttavia, si potrebbe dire che la potenza bruta simpe del sistema di oggi stanno facendo linguaggi che ignorano completamente i vincoli hardware pratico dove prima non lo erano.

Altri suggerimenti

dal momento che l'informatica è un branche speciale di matematica - non c'è convergenza tra la matematica e linguaggio di programmazione. Un linguaggio di programmazione è applicata la matematica. E 'uno strumento creato da persone con una profonda conosceva molto bene la matematica per essere utilizzati da altri (la maggior parte del tempo con la conoscenza meno profonda). Si può paragonare a un interruttore della luce - si può utilizzare senza avere la fisica studiata ma ancora è applicata la fisica. A volte (soprattutto se avete un problema) è necessario per avere la "conoscenza". Poi è necessario il fondo speciale.

Beh, ad essere onesti un sacco di questi cosiddetti "linguaggi di programmazione moderni" sono solo imlpementing cose che sono state in vari linguaggi di programmazione per oltre 50 anni.

  

Quali sono i vantaggi della modellazione linguaggi di programmazione o caratteristiche del linguaggio sulla matematica?   Quali sono i vantaggi della modellazione una lingua sui principi della logica formale?

Queste sono la stessa cosa: la logica formale è solo una branca della matematica. Due importanti vantaggi dell'utilizzo di matematica formale sono l'ottimizzazione e la sicurezza. Quando un algoritmo non ha effetti collaterali (cioè referenzialmente trasparenti), ed è espressa esclusivamente utilizzando compilatori matematica pura può ristrutturare l'algoritmo secondo regole di matematica. Ciò rende più facile per compilatori per ottimizzare il codice e per sfruttare architetture parallele. Un altro vantaggio importante è la capacità di dimostrare alcune proprietà di codice.

  

Può un linguaggio general purpose rinunciare   sia la logica o la matematica?

No. Come si farebbe operazioni booleane o aritmetiche senza logica o la matematica. Si può significare qualcosa qui che non capisco.

  

Quali sono alcune delle lingue che mostrano davvero fuori i vantaggi di entrambi gli approcci?

Haskell, ML, OCaml, Miranda, Alice, Oz, Erlang, Twelf, Coq, Prolog, tutti dimostrano le applicazioni più rigorose di matematica alla programmazione.

  

Quale hardware caratteristiche fare un approccio più attraente rispetto agli altri?

Non credo che l'hardware cambia le cose molto in termini di benefici di rigorosi metodi matematici per la programmazione. I vantaggi di codice referenzialmente trasparente sono principalmente a livello del compilatore.

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