Обсуждение:Чистота языка программирования

Последнее сообщение: 18 лет назад от Dark Magus в теме «Примеры»

Общие замечания

править

Первоначальный текст этой статьи основан на материалах моей книги по функциональному программированию «Функциональное программирование на языке Haskell». Настоящим разрешаю использование первоначального текста на условиях GNU FDL. Dark Magus 05:43, 28 марта 2006 (UTC)Ответить

Подскажите, а это энфциклопедическая статья? Какая тема статьи? О каком явлении она рассказывает? Разве вики - это книга? George Shuklin 08:38, 28 марта 2006 (UTC)Ответить
Я Вас не понимаю... Dark Magus 09:34, 28 марта 2006 (UTC)Ответить
Видимо, Вам не сюда, не в Википедию. Здесь это называется орисс. --yms 11:06, 28 марта 2006 (UTC)Ответить
Вы так считаете? А разве я не могу использовать кусок текста из своей книги в качестве затравки для текста статьи (которого до этого вообще не было, а на саму статью ссылается куча других статей)? Dark Magus 11:44, 28 марта 2006 (UTC)Ответить
Может быть. Я не успел познакомиться с предметом. --yms 14:41, 28 марта 2006 (UTC)Ответить
Чистота (в смысле программирования) — это давно устоявшееся понятие, которое во всю используется при описаниия языков программирования, в первую очередь функциональных. Поэтому это никак не ОРИСС, но попытка дать определение (хотя и мой, авторское). Что с того, что я взял это определение из своей книги в качестве начальной версии статьи? Теперь остаётся довести статью до ума, как это сделано с тысячами других статей в Википедии. Разве я не прав? Dark Magus 04:47, 30 марта 2006 (UTC)Ответить
Какое отношение имеет название статьи «Чистота языка программирования» к содержимому статьи, которое рассказывает про «чистоту функции»? Может стоит её переименовать? Кроме того, я бы предложил выделить монады в отдельную статью, а в этой сделать краткое описание (на предложение) и ссылку на неё. George Shuklin 10:17, 29 марта 2006 (UTC)Ответить
Ссылки из других статей, ведущие на эту, предполагают что здесь речь идёт именно о чистоте языка программирования. Так что, простое переименование ситуацию не спасёт. Лучше всего перенести информацию в другую статью, а эту дописать. Про монады согласен. Igor Chubin 10:47, 29 марта 2006 (UTC)Ответить
Ещё раз повторюсь, что я вставил небольшой кусок текста из своей книги в качестве затравки для написания вполне энциклопеичной статьи про чистоту языка программирования (это, в большей мере, подразумевает чистоту функций, т. к. относится практически только к языкам функционального программирования). Разве в Википедии нельзя править статьи, чтобы доводить их до ума? Пожалуйста, я для этого и поместил сюда текст. Про монады также соглашусь — давно пора сделать отдельную статью. Dark Magus 04:47, 30 марта 2006 (UTC)Ответить
Господа! Я ничуть не протестую против содержимого статьи. Просто если я захожу на статью с названием "Чистота языка программирования", то после прочтения статьи я так и не получаю ответа на вопрос: "что какой язык считается "чистым"?", потому что в статье речь идёт о чистоте функций. Я предлагаю всё-таки дать статье более адекватное название, а вместо оригинальной либо поставить стаб с сылкой на статью, либо поправить ссылки из ссылающихся статей. George Shuklin 08:13, 30 марта 2006 (UTC)Ответить
Мы работаем над статьёй. Не всё же так быстро делается. Вы бы тоже могли помочь в правке текста. Dark Magus 04:26, 31 марта 2006 (UTC)Ответить

Побочные эффекты

править

Относительно "побочных эффектов". Я считал, что "побочный эффект" - это когда функция модифицирует какие-то значения за пределами своего контекста. Т.е. функция, возвращающая значение глобальной переменной (например, GetLastError()), хотя и не является чистой, но побочных эффектов не вызывает.

Наоборот, абстрактная функция Kill_em_all(), возвращающая в качестве значения всегда 0 - чистая, однако обладает весьма печальными побочными эффектами. В этом смысле любая void func() - это "чистая" функция. --George Shuklin 14:46, 31 марта 2006 (UTC)Ответить

А функции, осуществляющие ввод/вывод — они в каком смысле обладают подобными эффектами? Dark Magus 07:45, 2 апреля 2006 (UTC)Ответить
Насколько я понимаю, функция является чистой в том случае, если (1) она детерминирована, (2) она не обладает побочными эффектами. Свойства (1) и (2) являются ортогональными, т.е. можно обладать одним и не обладать вторым и наоборот. В этом смысле, в статье действительно, нужно сделать изменения, поскольку там эти понятия смешиваются. Здесь Именно поэтому, если вызвать такую функцию дважды с одним и тем же набором значений входных аргументов, может случиться так, что в качестве результата вычисляются разные значения. Такие функции называются функциями с побочными эффектами правильнее было бы говорить о недетерминированой функции. Верно? --Igor Chubin 14:18, 2 апреля 2006 (UTC)Ответить
Да, смешение есть. Я даже сейчас буду соответствующий раздел книги переписывать из-за этого :) Мне давно указали на сей факт. Dark Magus 20:15, 2 апреля 2006 (UTC)Ответить

Разрежем статью?

править

Как вы считаете, что если разрезать статью на несколько: вынести разделы по чистоте функций и по монадам в отдельные, и оставить в этой статье только минимум информации?

Информацию о параллелизме можно сократить и перенести в начало статьи, где перечисляют преимущества чистых языков. Не совсем понятно, что делать с разделом о вводе/выводе и чистоте. --Igor Chubin 14:18, 2 апреля 2006 (UTC)Ответить

Разре́зать можно. Поступайте на своё усмотрение. Это же — Википедия :). Dark Magus 20:15, 2 апреля 2006 (UTC)Ответить

Примеры

править

Как вы думаете, что если добавить ссылки на языки, которые являются чистыми? Например clean и другие --Igor Chubin 14:18, 2 апреля 2006 (UTC)Ответить

Пожалуйста. Haskell не забудьте :) Dark Magus 20:15, 2 апреля 2006 (UTC)Ответить