Por que a documentação em alguns idiomas diz "equivalente a" em vez de "é"?
Por exemplo, os documentos do Python dizem
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
Ou esta referência C ++ em find_if
:
O comportamento deste modelo de função é 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; }
Se esse não é o código real, eles não podem publicá-lo? E se é o código real, por que eles têm que dizer que é "equivalente" ao invés de simplesmente "é"?
c++
python
documentation
compiler
Jon McClung
fonte
fonte
find_if
é a documentação "para" o C ++. Se fosse, o elenco de (que você vê na resposta abaixo) estaria errado.bool
chain
é implementado diretamente em C; portanto, é "equivalente" ao código python porque produz o mesmo resultado, mas evita um pouco de sobrecarga na interpretação desse código. bytecode.Respostas:
Porque os escritores padrão não querem realmente afirmar uma implementação. Eles querem definir o que faz , mas não necessariamente como faz. Assim, por exemplo, se você olhar para a versão GNU C ++ de
find_if
, verá que a implementação é um pouco diferente do que você fornece, que é baseado no padrão C ++:Isso é funcionalmente equivalente ao que o padrão possui, mas não exatamente o mesmo. Isso fornece flexibilidade aos escritores do compilador. Pode haver uma maneira melhor de fazer isso para uma plataforma específica. O implementador pode querer usar um estilo de codificação diferente.
Isso é particularmente verdadeiro para linguagens de script como python, pois o implementador pode decidir implementar em uma linguagem completamente diferente por motivos de desempenho. Alguém implementando python pode, por exemplo, escrever
itertools.chain(*iterables)
em C ++. Isso é perfeitamente correto se o padrão diz "equivalente a", desde que o código faça o mesmo que o python fornecido. Se o padrão dito "é", os implementadores seriam obrigados a implementar nesse idioma ou a não atender ao padrão.Em suma:
fonte