Per i miei corsi di programmazione, sto provando a scrivere alcuni frammenti di codice in lingue che usano pass per nome o passano valore-risultato, preferibilmente di default, ma qualsiasi linguaggio che Supporta anche l'una o l'altra cosa andrebbe bene. Tuttavia, non sono stato in grado di trovare una singola lingua che supporti nessuno dei due. Qualcuno sa di una lingua che usa passare per valore-risultato o passare per nome? Preferibilmente un linguaggio imperativo.Passa per nome e passa per le lingue valore-risultato
risposta
Il wikipedia article on evaluation strategy suggerisce che il risultato della chiamata per valore è supportato da fortran. Call-by-name è supportata da Algol 68.
Penso che le macro C siano pass-by-name (non ovviamente il linguaggio C). Non conosco lingue di risultato pass-by-value, temo (per essere onesti dovevo fare una ricerca sul web per scoprire cosa significa!).
Non sono sicuro che i macro C "contino" per quello che sto cercando di fare, ma questo è un pensiero interessante, quindi grazie per quello. – dancavallaro
se si passa una variabile a una funzione FORTRAN e si modificano lì, si modifica anche nel programma chiamante:
psuedocodarlo:
int j = 1
print j
addOne(j)
print j
visualizzerà:
1
2
Sono sempre stato divertito dalle (davvero) vecchie versioni di Fortran che ti permettono di chiamare addOne (1) e modificare il valore della costante 1. –
Sia Java e C sono pass-by-valore della lingua.
C è chiaramente un linguaggio di passaggio per valore.
A Java viene sempre detto che "le primitive vengono passate per valore, gli oggetti vengono passati per riferimento". Ma dal momento che java object è un riferimento in qualsiasi momento, quindi è in realtà un valore di riferimento.
specifiche Java Language dice questo: http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#37472
Questo è vero, ma non risponde alla mia domanda .. – dancavallaro
Penso lingua del sistema CLIP esperto sarebbe passare per nome.
Algol supporta pass-by-name come si può trovare qualche spiegazione here
mi è stato detto che Ada supporta pass-by-value/risultato, ma non ho ancora provato.
- 1. Java passa per riferimento?
- 2. Passa attraverso risorse incorporate di lingue/culture diverse in C#
- 3. Android Intent che passa oggetto parcelable e passa stringa Json
- 4. node.js che passa le variabili
- 5. filtro passa-basso e passa-alto in C#
- 6. Passa per valore vs Passa per rendimento di riferimento C# .net
- 7. C++ 64 bit int: passa per riferimento o passa per valore
- 8. Bokeh: passa le vars a CustomJS per i widget
- 9. passa per valore o riferimento const o ...?
- 10. Passa da schede a compressione per reattivo
- 11. parametri passa rastrello per attività dipendenti
- 12. Passa una variabile dal controller per visualizzare
- 13. passa dati R come input per html?
- 14. Alcune lingue e usi per le monadi
- 15. arricciatura non passa phpsessid
- 16. Email contrassegnate come spam - SPF passa, DKIM passa, passa l'id del mittente
- 17. jQuery: passa le variabili a php
- 18. JQuery .click passa variabili
- 19. Passa due viewmodels all'azione
- 20. Application.Restart non passa argomenti indietro
- 21. Perl: passa attraverso un file e sostituisce
- 22. elenchi di argomenti di subroutine perl - "passa per alias"?
- 23. variabile passa come parametro per Url.Action in javascript
- 24. Passa rvalue come riferimento
- 25. passa char array come argomento
- 26. iOS Audio Passa attraverso
- 27. Mangusta - Passa all'elemento successivo
- 28. SubVersion passa alla profondità
- 29. Cosa passa il messaggio?
- 30. Passa dizionario vba
Grazie, penso che ho intenzione di percorrere questa strada. – dancavallaro
** Algol 60 ** ha call-by-value e call-by-name; ** Algol 68 ** ha call-by-value e call-by-reference e il programmatore può adottare manualmente una metodologia call-by-copy-restore. La chiamata per condivisione assomiglia un po 'alla chiamata per riferimento (sotto forma di "procedurale"), ma non sono sicuro che siano effettivamente la stessa in Algol68. La prima versione di Algol68 aveva una chiamata per necessità, ma era stata rimossa in Rev1; – NevilleDNZ