Mengapa dokumentasi pada beberapa bahasa mengatakan "setara dengan" daripada "adalah"?
Sebagai contoh, Python Docs berkata
itertools.chain(*iterables)
...
Setara dengan:
def chain(*iterables): # chain('ABC', 'DEF') --> A B C D E F for it in iterables: for element in it: yield element
Atau referensi C ++ ini pada find_if
:
Perilaku templat fungsi ini setara dengan:
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; }
Jika itu bukan kode aktual, tidak bisakah mereka mempostingnya? Dan jika itu adalah kode aktual, mengapa mereka harus mengatakan itu "Setara" daripada hanya "adalah"?
c++
python
documentation
compiler
Jon McClung
sumber
sumber
find_if
yang tidak "yang" dokumentasi untuk C ++. Jika ya, maka pemeranbool
(yang Anda lihat dalam jawaban di bawah) akan salah.chain
diimplementasikan langsung dalam C, sehingga "setara" dengan kode python karena menghasilkan hasil yang sama, tetapi menghindari sedikit overhead menafsirkan bahwa bytecode.Jawaban:
Karena penulis standar tidak ingin benar-benar menyatakan implementasi. Mereka ingin mendefinisikan apa yang dilakukannya , tetapi belum tentu bagaimana melakukannya. Jadi, misalnya, jika Anda melihat versi GNU C ++
find_if
, Anda akan melihat bahwa implementasinya sedikit berbeda dari yang Anda berikan, yang didasarkan pada standar C ++:Ini secara fungsional setara dengan apa yang dimiliki standar, tetapi tidak persis sama. Ini memberikan fleksibilitas kepada penulis kompiler. Mungkin ada cara yang lebih baik untuk melakukannya untuk platform tertentu. Implementor mungkin ingin menggunakan gaya pengkodean yang berbeda.
Ini terutama berlaku untuk bahasa scripting seperti python di mana implementor dapat memutuskan untuk menerapkan dalam bahasa yang sama sekali berbeda untuk alasan kinerja. Seseorang yang mengimplementasikan python dapat, misalnya, menulis
itertools.chain(*iterables)
dalam C ++. Ini sangat baik jika standar mengatakan "setara dengan" selama kode melakukan hal yang sama dengan python yang disediakan. Jika standar mengatakan "adalah" sebagai gantinya, maka implementor akan diminta untuk mengimplementasikan dalam bahasa itu, atau tidak memenuhi standar.Singkatnya:
sumber