yigal_s: (Default)
yigal_s ([personal profile] yigal_s) wrote2004-05-29 01:05 pm
Entry tags:

О константности. Продолжаю публикацию списка преступлений Страуса++

Свершенно мерзкое словечко const. Стоит только лишь наивно поверить, что константность лучше указывать, чем игнорировать, как код начинает пестрить этим словечком, что АхредуптусЪ русский дореволюционный буквой Ъ. А ежели где его и позабудешь - компилятор, ессно, тебя не поправит, "сойдет и так".

Между тем, совершенно понятно, что константность значения в приличном языке должна быть обеспечена по умолчанию, без всяких ключевых слов, а именно вариабельность и следует указывать.

Например,
char **a;
приличной реализации языка следует понимать как константный указатель на константный указатель на константный символ.

А, к примеру,

char var **a = getAddress();
**a = 'Ъ';


следует понимать как цепочку константых указателей на неконстантный символ (который мы, собственно, и собрались менять). И вот тут-то, если где словечко var будет позабыто, компилятор начнет ругаться практически наверняка.

Мало этого. Слово var по большому счету тоже излишне. Неконстантность значения есть, вообще говоря, преступление перед Разумом. В приличном языке оператор присваивания, меняющий значение, уместен не более, чем оператор goto. Что это за бред такой?! Вы где-то видели в математике (оперирующей символами сплошь и рядом) какой-то там "оператор присваивания"?! Оператор присваивания полностью запутывает программу, принуждая программиста отслеживать так называемые "изменения переменных" - это пострашнее отслеживания любых переходов с метки на метку. Язык Prolog же, к примеру, как и следовало ожидать, прекрасно обходится без оператора присваивания. Ибо нафиг не нужен.

> после компиляции объектно-ориентированными не являю

[identity profile] poige.livejournal.com 2008-09-18 08:00 pm (UTC)(link)
Объекты это же не вещь в себе. Им нужна среда, верно? Далее, средой можно считать интерпретатор (не забывая про то, что он сам откомпилирован, и выполняется на вполне определённом железе), а можно — и то самое «определённое железо». В чём, в таком случае, какие-либо ключевые отличия? Моё личное мнение таково, что термин «ООП» следует применять не к тому, как всё представлено на момент выполнения, а к тому, как это выглядит при разработке программы, какими концепциями пользуются разработчик, так сказать.

Re: > после компиляции объектно-ориентированными не яв

[identity profile] cmm.livejournal.com 2008-09-18 08:37 pm (UTC)(link)
если я правильно помню контекст, я всего лишь пытался объяснить оригинальное (т.е. согласно Алану Кею) определение и мотивацию термина "ООП" — и только.  никаких эмоций я по данному поводу не испытывал и не испытываю, споры о религиозной терминологии считаю бесполезной тратой времени, и поговорить на данную в высшей степени фасцинирующюю тему ещё, честно говоря, не горю желанием.

извините. :)

> пытался объяснить оригинальное (т.е. согласно Алану К

[identity profile] poige.livejournal.com 2008-09-18 08:38 pm (UTC)(link)
[…]
> извините. :)

np :-)