Обсуждение:Printf (KQvr';yuny&Printf)
Проект «Информационные технологии» (уровень I, важность для проекта низкая)
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Эта статья входила в число хороших статей русской Википедии. См. страницу номинации (статус присвоен 16 января 2007 года). После дальнейшего обсуждения статья была лишена статуса. |
Эта статья была предложена к переименованию в Printf (языки программирования Си и Си++) 16 января 2007 года. В результате обсуждения было решено оставить название printf без изменений. Для повторного выставления статьи на переименование нужны веские основания, иначе это может быть расценено как игра с правилами (см. пункт 8). |
Впервые функция появилась...
[править код]...скорее всего в языке B (предшественник C) [1], а в BCPL (предшественник B) была похожая функция writef [2]. (это, конечно, может быть и не так, но утверждать, что prinft впервые появилась в C тоже не следует) --Anton Khorev 18:14, 14 декабря 2006 (UTC)
- Ага, спасибо большое! Я как раз искал материалы для истории функции. #!George Shuklin 10:07, 16 декабря 2006 (UTC)
- Про CPL:
- --Anton Khorev 18:17, 16 декабря 2006 (UTC)
- История появления: "Первые следы будущей функции printf появляются в языке BCPL в начале 1960-х." BCPL появился в 1966-м, а в начале 60-х появился CPL. Что было в CPL нам всё ещё не известно? --Anton Khorev 01:57, 14 января 2007 (UTC)
- Это, на самом деле, уже не очень существенно, первый раз printf появился в "би". А кто там первый writef придумал - вопрос сложный. Я не смог найти открытых источников, где описывался бы cpl, так что этот вопрос остаётся открытым. #!George Shuklin
- BCPL появился не в начале 60-х, а позже, следовательно, в BCPL в начале 60-х ничего появиться не могло. --Anton Khorev 17:42, 14 января 2007 (UTC)
- Вобщем, годы съехали. Написано, что BCPL появился тогда, когда появился CPL, и что B появился тогда, когда BCPL. --Anton Khorev 17:46, 14 января 2007 (UTC)
- Убрал "начало" у 60-х, заменил 66 на 69. --Anton Khorev 19:51, 16 января 2007 (UTC)
- Это, на самом деле, уже не очень существенно, первый раз printf появился в "би". А кто там первый writef придумал - вопрос сложный. Я не смог найти открытых источников, где описывался бы cpl, так что этот вопрос остаётся открытым. #!George Shuklin
И даже это не совсем правда. Фортрановский форматный вывод появился заметно раньше, а влияние его на printf видно невооружённым глазом. Maxim Razin 21:30, 17 января 2007 (UTC)
- Я о фортране слышал только на лекциях, и то краем уха. Точнее, о языке-то я знаю, но вот писать на нём б-г миловал. Если можете назвать источники - дайте ссылки, постараюсь объединить в текст. #!George Shuklin 21:43, 17 января 2007 (UTC)
Использование в других языках программирования
[править код]Почему для всех языков программирования в данной статье даётся ссылка на функцию printf, а для perl на sprintf? Ведь в языке perl тоже есть функция printf.Soldatov 23:25, 14 января 2007 (UTC)
- Ссылка относится к синтаксису строки форматирования, про который написано в описании функции sprintf. --Anton Khorev 00:23, 15 января 2007 (UTC)
- Не для всех. В том же питоне нет "принтфа", есть только оператор %, который работает несколько иначе (и является аналогом asprintf). Список отражает не использование слова "принтф", а использование концепции "строки форматирования".#!George Shuklin
- Да в Питоне он и не нужен, поскольку оптимизация никогда не ставилась целью. Создать строку, а потом вывести её в поток — потери в производительности очень небольшие. Это я к тому что в некоторых языках printf просто может не быть, причём сознательно. — doublep 17:34, 18 января 2007 (UTC)
О типах
[править код]Например, строка printf("%i=%i", 'a', 'b') отработает правильно на большинстве архитектур (не смотря на то, что размер %i - int (32 или 64 бита), а размер 'a' (char) - 8 бит.
Не на большинстве, а на всех без исключения, так как к аргументам целочисленных типов, которым не сопоставлены формальные параметры, применяются стандартные правила продвижения целочисленных типов. Недаром в стандарте Си 1990 года (и, соответственно, в стандарте Си++) отсутствуют описанные в данной статье модификаторы h и hh. Эти модификаторы появились в стандарте Си 1999 года, но, за исключением случаев использования со спецификатором n, они предназначены для компенсации изменяющих значение последовательностей продвижения типа и смены интерпретации "знаковый/беззнаковый".
Кроме того, некорректно так писать о размерности int и char. Эти величины платформо-зависимые, и существуют платформы с 32-битным байтом.--achp 17:27, 18 января 2007 (UTC)
- Примеры? Что-то я о таких не слышал. #!George Shuklin 18:49, 30 июня 2007 (UTC)
- Некоторые встраиваемые архитектуры не имеют средств адресации "внутрь" 32-битного слова. На них байт 32-битный.--achp 19:25, 30 июня 2007 (UTC)
- Источник? #!George Shuklin 21:22, 30 июня 2007 (UTC)
- [6]--achp 21:48, 30 июня 2007 (UTC)
- Справедливости ради надо отметить, что реализации, где CHAR_BIT != 8, всегда самостоятельные, а в таких реализациях printf может отсутствовать (и даже скорее всего отсутствует). Что не исключает такой возможности.--achp 22:09, 30 июня 2007 (UTC)
- [6]--achp 21:48, 30 июня 2007 (UTC)
- Источник? #!George Shuklin 21:22, 30 июня 2007 (UTC)
- Некоторые встраиваемые архитектуры не имеют средств адресации "внутрь" 32-битного слова. На них байт 32-битный.--achp 19:25, 30 июня 2007 (UTC)
Переписывание статьи
[править код]Пытаюсь переписать статью, чтобы избавить её от ложных утверждений и структурировать её по языкам, пока в своей песочнице. Прошу помощи, в частности, было бы замечательно сделать картинки, подобные тем, что имеются в настоящей статье, но соответствующие действительности. Также было бы неплохо написать немного больше по языкам помимо Си/Си++.--achp 22:41, 29 июня 2007 (UTC)
- Давайте лучше начнём с того, что именно вам кажется неправильным? #!George Shuklin 18:45, 30 июня 2007 (UTC)
- Самая большая фактическая ошибка — это вопрос о char и short.--achp 19:35, 30 июня 2007 (UTC)
Направление роста стека на картинке 2 - неправильное 85.233.156.97 10:30, 2 июля 2010 (UTC)
Откат верной правки
[править код]Не понимаю, почему участник George Shuklin откатил верную правку участника Indaclu6?--achp 22:07, 14 сентября 2008 (UTC)
- Виноват, моя ошибка. Принял за вандализм, извините. #!George Shuklin 10:06, 15 сентября 2008 (UTC)
Неверная ссылка на статью
[править код]XSI . Надо либо переадресацию убрать, либо статью-disambiguation сделать, либо ссылку переименовать. 87.249.56.219 20:31, 16 декабря 2009 (UTC)