DEV Community

LolPopGames
LolPopGames

Posted on

print — самая сложная для понимания функция

Вы когда-нибудь замечали что print (echo или подобное) в различных языках программирования часто является одной из самых сложных для понимания новичкам функция

Из всех основных языков программирования, который знаю (в частности C, C++ и Python), эта функция является реально сложной

Давайте посмотрим

Python


print() в Python использует:

  • *args, за счёт чего мы можем выводить несколько объектов, написанных через запятую
  • допускает, чтобы мы отправляли аргументы любого типа
  • также это первая для новичков функция, в которой из-за *args, да и в целом количества аргументов мы использовали синтаксис arg=value (например, print(2, 2, sep=" + ")

C


printf() в C использует:

  • модификаторы, что требует понимания и знания типов данных, знания какие модификаторы вообще существует (хоть это и не конструкция языка, а возможность самой функции, как и нескольких других функций из стандартной библиотеки, собственно из-за этого у них f на конце, formatted)
  • переменное количество аргуметов (va_args), что далеко не везде вообще изучается

C++


<< в C++ это вообще отдельная песня:

  • std::cout — это не функция, и не причина вывода, — это лишь экземпляр класса ostream
  • << — это функции-операторы, а не оператор побитового смещения
  • причем я не зря сделал жирным множественное число, ведь это несколько функций, которые используют перегрузку функций, чтобы они могли работать с разными типами данных
  • то, что тут используется пространство имён
  • то, что нам пришлось бы писать на самом деле std::operator<<(), если бы не поиск Кёнига, о котором даже не все программисты не новички знают, который позволял использовать функции без записывания пространств имён для её вызова

Может быть это только (или почти только) в этих 3 языках?

Top comments (0)