Czy komitet C ++ testuje swoje nowe specyfikacje projektowe za pomocą jakiegoś prototypowego kompilatora przed wydaniem nowego standardu? Czy też publikują standard, który w rzeczywistości jest tylko teoretyczny, dopóki duże kompilatory go nie wdrożą?
c++
language-design
standards
Matthew James Briggs
źródło
źródło
boost::shared_ptr
=>std::shared_ptr
.boost.lambda
=> Wyrażenia lambda C ++ 11).Odpowiedzi:
C ++ Komitet standardowa ma regulaminów i zasad, ale większość z nich koncentruje się wokół struktury organizacji, do składania wniosków, głosowanie, publikując standard, itp i nie tyle na szczegółach technicznych samego standardu lub jak go może być przetestowany.
O ile mi wiadomo, nie ma formalnego wymogu „testowania” funkcji lub jej projektu. C ++ jest również nieco unikatowy, ponieważ nie ma odniesienia ani „podstawowej” implementacji (np. Microsoft CLR, Oracle JDK, Zend PHP). Członkowie komitetu składają się jednak z wielu organizacji posiadających głęboką znajomość języka i implementacji kompilatora. Na przykład, jeśli skorzystasz z poprzedniego linku, zobaczysz przedstawicieli Microsoft i Intel, którzy mają szanowane kompilatory C ++. Zaangażowany jest również Red Hat i kilka innych firm, które wnoszą wkład w GCC.
Proponując nową funkcję, członkowie komitetu mają już całkiem dobry pomysł na to, czy jest to wykonalne, czy może kolidować z innymi funkcjami lub powodować niejednoznaczność gramatyki w sposób, który komplikuje niepotrzebnie parsowanie. ( tutaj jest dobre pytanie o gramatykę C ++ )
Krótka odpowiedź brzmi: „nie, komitet nie wymaga testowania swoich projektów przy użyciu prototypowania”. Jednak nie ma takiej potrzeby, ponieważ członkowie komitetu są ekspertami w C ++, którzy rozumieją wszystkie drobne szczegóły na poziomie, którego nie rozumie zdecydowana większość programistów. Pamiętaj, że ci ludzie to architekci języków, którzy są ekspertami w dziedzinie teorii języków i projektowania kompilatorów.
Biorąc pod uwagę zaangażowanie dostawców kompilatora w proces, możliwe jest, że jeden lub więcej z nich może prototypować nową funkcję, ale znowu nie ma na to formalnego wymogu, ani też nie jest to coś, o czym czytałem w publicznie dostępnych dokumentach z Komitet C ++.
Są też zwykle bardzo konserwatywne, dodając stopniowo nowe funkcje, które są pożądane w świecie rzeczywistym, bez określania dużej liczby nowych funkcji, które mogą okazać się ryzykowne. W rzeczywistości w ostatnich latach dodali nowe funkcje, które istniały jako zastrzeżone rozszerzenia lub biblioteki typu open source, które już działają w prawdziwym świecie. Na przykład C ++ 11 i C ++ 14 zawierają części programu Boost , który został już przetestowany w świecie rzeczywistym w wielu kompilatorach i środowiskach wykonawczych. Nie ma potrzeby testowania czegoś, co zostało już przetestowane.
źródło