Обсуждение:Структура (язык Си)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Проект:Информационные технологии

💻

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

Написать сообщение на форум проекта

⍰
(неоцененная)
Эту статью ещё никто не оценил по шкале оценок статей Проекта:Информационные технологии.

Untitled[править вики-текст]

приведенный для С++ пример некорректен. при наличии квалификатора private: инициализировать структуру без конструктора не получится. Таким образом следует либо убрать модификаторы доступа из примера, либо добавить в пример конструктор. а так же желательно добавить строку #include <string> в пример. ProstoRoman 07:19, 26 февраля 2014 (UTC) ProstoRoman

  • Да вообще С++у тут делать нечего - в нём нет записей, а только классы. Статью переименовать надо - слово "структура" в этом смысле используется ТОЛЬКО в Си, в остальных языках используется слово "запись" Arachnelis 09:41, 26 февраля 2014 (UTC)
  • Ну почему же, термин «структура» используется и в C++ [1] и в C# (см. www.williamspublishing.com/PDF/978-5-8459-1819-2/content.pdf) и в Прологе [2], да и ещё много где… — Ivan A. Krestinin 21:21, 7 марта 2014 (UTC)
  • Вопрос не в терминологии, а в сущностном содержании. Это фактически омонимы. Намного корректнее и полезнее с энциклопедической т.з. говорить о "структурах в С++" как о разновидности классов, дополняя рассмотрение их Сишным происхождением, чем вводить читателя в заблуждение, рассказывая как "С++ преобразовал структуры до такой степени, что они уже как бы и не совсем структуры, но ещё и не совсем классы". Я сделал статью тип-произведение и предлагаю туда склеить и структуры, и записи, и кортежи. Статья будет намного полнее, и получит хотя бы гипотетическую возможность дорасти до избранной. Что касается соотнесения всего этого с ООП, то как раз в статье про записи об этом много в английской статье, надо только перевести. Arachnelis 13:15, 8 марта 2014 (UTC)
  • Я бы не назвал их омонимами, структура struct Point { int x; int y; } в языке C ничем не отличается от такой же в языке C++. Это одна сущность, с одинаковой смысловой и функциональной нагрузкой. Запись в Паскале, структура в С#, Прологе и др. также несёт тот же самый смысл. — Ivan A. Krestinin 15:36, 8 марта 2014 (UTC)
  • Только не экспортируется непосредственно, т.к. обогащена конструкторами. Структура в С++ будет именно структурой, а не классом, только при условии, что она изначально объявлена внутри extern "C" {...}. Это ровно то же самое, что FFI в языках более высокого уровня. Записи в других языках не тождественны Сишным структурам, приходится делать прослойку-адаптер. Проблема, которую вы то ли не понимаете, то ли не хотите признавать существенной, в том, что Си - это кроссплатформенный ассемблер, а не прикладной язык, т.е. его семантика изначально продумана так, чтобы точно контролировать получаемый машинный код, а С++ - язык уже чуть более высокого уровня, у него другая модель данных, которую следует рассматривать самостоятельно, а не как "подвид Сишной модели данных". Arachnelis 18:13, 8 марта 2014 (UTC)
  • upd: Если в некотором высокоуровневом языке под ключевым словом синтаксиса "struct" скрывается составной тип, в полной мере отвечающий определению типа "запись", то в энциклопедической статье следует писать "в языке есть тип записей, которые объявляются ключевым словом struct". Сишный тип "структура" уникален в своём роде уже хотя бы тем, что допускает рекурсию, т.е. фактически соединяет в себе не только записи и кортежи, но ещё и возможности алгебраических типов. В прологе, кстати, структур не припомню. В статье по вашей ссылке просто перевод кривой - там "compound term", что не имеет ни малейшего отношения ни к record, ни к struct. Наш народ ещё не так "адаптировать" тексты может - недавно вон напоролся: классы типов представили как "другое имя интерфейсов". Arachnelis 19:00, 8 марта 2014 (UTC)
  • Хорошо бы найти источник, который систематизирует понятия разных языков, а то мы сейчас можем уйти в изобретение собственной классификации. Для меня термины «структура», «запись», «тип-произведение» — синонимы с той лишь разницей, что в отношении конкретного языка программирования предпочитают использовать один из этих терминов. Соответственно я бы ожидал увидеть одну статью про все эти термины, где бы в том числе рассказывалась специфика разных языков программирования (начало такого рассказа вы кстати удалили никуда не перенеся). Однако в АИ может быть другой взгляд на мир и другая классификация. — Ivan A. Krestinin 06:02, 9 марта 2014 (UTC)
  • Ой, не знаю почему удалилось - это я где-то напартачил. Но я рад, что вы разделяете моё предложение объединить эти статьи. Там будет проще и в слова играть, и АИ проставлять. Систематизирующий источник я ни разу не встречал - а вот теоретическое обоснование отыскать, я думаю, можно. Arachnelis 15:07, 9 марта 2014 (UTC)