возможность создания языка программирования без наложения указателей - PullRequest
2 голосов
/ 29 января 2012

У меня есть вопрос ко всем энтузиастам программирования здесь.Указатели всегда были в мире программирования.Как и в C, C ++, который имеет явную поддержку указателя.В Java явной поддержки указателей нет, но внутри системы Java используются указатели.Может ли быть область применения языка программирования, который вообще не будет иметь псевдонимов указателей в практическом мире?

Ответы [ 4 ]

7 голосов
/ 29 января 2012

Языки на основе стека завершены, но не имеют указателей и псевдонимов памяти.

Язык стекового программирования - это язык, основанный на модели стековой машины для передачи.параметры.Несколько языков программирования соответствуют этому описанию, в частности, Forth, RPL, PostScript, язык дизайна стилей BibTeX

Если ваш основанный на стеке язык позволяет интерпретировать значение в стеке как точку в стеке, вы можетеполучить проблемы, аналогичные тем, которые возникают при использовании псевдонимов указателей, но это не обязательно должно быть допустимой операцией.

3 голосов
/ 29 января 2012

Программирование без переменных-указателей описывает использование рекурсивно определенных типов данных вместо указателей в алгоритмах.

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

2 голосов
/ 31 января 2012

Если в вашем языке есть массивы, и вы можете индексировать эти массивы целочисленными значениями, вы фактически создадите псевдонимы внутри массива.

В общем, это верно для любых ассоциативных структур, которые отображают ключ на значение (массивы - это особый случай). Фактически, если ваша программа поддерживает Turing и может генерировать ключи, вы не можете доказать, что сгенерированные ключи не "псевдоним".

Я думаю, что язык без какого-либо ассоциативного поиска на практике может оказаться довольно бесполезным.

Если вы не хотите, чтобы вас укусили, вам придется сделать ваши ассоциативные структуры неизменяемыми. В этом случае у вас все еще есть алиасинг, но вы не можете быть удивлены значением, которое вы получаете.

0 голосов
/ 29 января 2012

Если вы хотите устранить проблему алиасинга, я предлагаю вам взглянуть на чисто функциональные языки программирования, которые запрещают изменяющиеся структуры, такие как Haskell, или языки, где коллекции копируются при записи, такие как J.

...