¿Por qué la documentación en algunos idiomas dice "equivalente a" en lugar de "es"?
Por ejemplo, los documentos de Python dicen
itertools.chain(*iterables)
...
Equivalente a:
def chain(*iterables): # chain('ABC', 'DEF') --> A B C D E F for it in iterables: for element in it: yield element
O esta referencia de C ++ sobre find_if
:
El comportamiento de esta plantilla de función es equivalente a:
template<class InputIterator, class UnaryPredicate> InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred) { while (first!=last) { if (pred(*first)) return first; ++first; } return last; }
Si ese no es el código real, ¿no pueden publicarlo? Y si es el código real, ¿por qué tienen que decir que es "Equivalente" en lugar de simplemente "es"?
c++
python
documentation
compiler
Jon McClung
fuente
fuente
find_if
es "la" documentación para C ++. Si lo fuera, entonces el elenco de (que se ve en la respuesta a continuación) estaría mal.bool
chain
está implementado directamente en C, por lo tanto, es "equivalente" a ese código de Python porque produce el mismo resultado, pero evita un poco de sobrecarga al interpretarlo. bytecodeRespuestas:
Porque los escritores estándar no quieren afirmar realmente una implementación. Quieren definir lo que hace , pero no necesariamente cómo lo hace. Entonces, por ejemplo, si observa la versión GNU C ++ de
find_if
, verá que la implementación es ligeramente diferente de lo que proporciona, que se basa en el estándar C ++:Esto es funcionalmente equivalente a lo que tiene el estándar, pero no es exactamente lo mismo. Esto le da flexibilidad a los escritores de compiladores. Puede haber una mejor manera de hacerlo para una plataforma en particular. El implementador puede desear usar un estilo de codificación diferente.
Esto es particularmente cierto para los lenguajes de secuencias de comandos como Python, ya que el implementador puede decidir implementar en un lenguaje completamente diferente por razones de rendimiento. Alguien que implementa Python puede, por ejemplo, escribir
itertools.chain(*iterables)
en C ++. Esto está perfectamente bien si el estándar dice "equivalente a" siempre que el código haga lo mismo que el python proporcionado. Si el estándar decía "es", entonces los implementadores tendrían que implementarlo en ese idioma o no cumplir con el estándar.En resumen:
fuente