Передать по имени и передать по языку результат-значение - PullRequest
6 голосов
/ 05 апреля 2009

Для моего курса по языкам программирования я пытаюсь написать некоторые фрагменты кода на языках, которые используют передачу по имени или передачу по значению-результату, предпочтительно по умолчанию, но любой язык, который даже поддерживает любой из них, подойдет. Тем не менее, я не смог найти ни одного языка, который бы поддерживал ни один из них. Кто-нибудь знает язык, который использует передачу по значению-результату или по имени? Желательно повелительный язык.

Ответы [ 6 ]

3 голосов
/ 05 апреля 2009

В статье Википедии о стратегии оценки предполагается, что запрос по значению поддерживается фортраном. Вызов по имени поддерживается algol 68.

1 голос
/ 05 апреля 2009

Я думаю, что язык экспертной системы CLIPS будет передаваться по имени.

1 голос
/ 05 апреля 2009

если вы передаете переменную в функцию fortran и изменяете ее там, вы также изменяете ее в вызывающей программе:

psuedocode:

int j = 1
print j
addOne(j)
print j

будет выводить:

1
2
1 голос
/ 05 апреля 2009

Я думаю, что макросы C - это Pass-by-name ( не , конечно, сам язык C). Я не знаю ни одного языка с передачей по значению, которого боюсь (честно говоря, мне пришлось поискать в сети, чтобы выяснить, что это значит!)

0 голосов
/ 07 апреля 2010

Algol поддерживает передачу по имени, поскольку вы можете найти объяснение здесь

Мне сказали, что Ada поддерживает передачу по значению / результату, но еще не попробовал.

0 голосов
/ 05 апреля 2009

Java и C являются языком передачи по значению.

C явно является языком передачи по значению.

Java всегда говорят "примитивы передаются по значению, объекты передаются по ссылке". Но поскольку объект java является ссылкой в ​​любое время, он фактически является ссылочным значением.

Спецификация языка Java говорит это: http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#37472

...