2010-11-20 15 views
6

** Proszę ludzi, to pytanie nie ma na celu rozpoczęcia żadnej wojny płomieni. **Czy istniejące biblioteki giną, gdy nowa funkcja wchodzi w skład rdzenia językowego?

Próbuję zrozumieć, co dzieje się z istniejącymi bibliotekami wdrażającymi niektóre funkcje, gdy ta sama funkcja, która wcześniej nie istniała w tym języku, jest teraz częścią języka? Dla np. C++ wkrótce miałoby std :: thread jako część standardu językowego, więc co dzieje się z bibliotekami POSIX lub Boost?

Chciałbym również zrozumieć, jakie doświadczenia mogą mieć użytkownicy innych języków programowania w tym zakresie.

+0

Wątki POSIX nie zostaną zastąpione przez bibliotekę C++. Są to rodzime wywołania systemowe. Inne języki i biblioteki będą na nich polegać, aby budować obsługę wątków na Uniksie, programiści C będą ich używać i nadal będzie można ich używać w kodzie C++, aby uzyskać dostęp do funkcji systemu niskiego poziomu (np. Wyspecjalizowany system NUMA) lub tworzyć inne biblioteki współbieżności. . –

Odpowiedz

2

C++ std :: thread jest dużymi częściami opartymi na wątkach boost. Więc wątki zwiększające nigdy tak naprawdę nie znikną, będą żyły w standardowej bibliotece C++. Dodatkowo, na wielu platformach, wątki zwiększające wykorzystują wątki POSIX jako backend, więc nigdy nie znikną.

+0

To, że ktoś jest zainspirowany przez drugiego, nie oznacza, że ​​jest to to samo. W rzeczywistości prawdopodobnie będzie sporo programów, które zawierają zarówno std :: thread, jak i boost :: thread. Ale w pewnym momencie albo boost :: thread zostaje w puszkach, albo postanawia utrzymać go równolegle (dla kompatybilności wstecznej). – Tom

+0

... chociaż prawdopodobnie utrzymają go w nieskończoność, aby wspierać użytkowników, którzy nie mają dostępu do std :: thread. Co oznacza, że ​​wątki boost nigdy tak naprawdę nie znikną. – Tom

9

Adopcja nowych technologii nigdy nie dzieje się z dnia na dzień. Nastąpi opóźnienie, podczas gdy kompilatory implementują nowe wersje Biblioteki standardowej, a następnie kolejne opóźnienie, podczas gdy te kompilatory docierają do programistów.

Moje ostatnie dwie prace dotyczyły okazjonalnej interakcji z programem Visual C++ 6, który ma ponad 10 lat. Istnieje ogromna niechęć do przejścia od działającego kodu do nowego, ulepszonego modelu.

Jeśli stare biblioteki umierają, to przez proces stopniowego starzenia się, a nie nagłego masowego wymierania.

W zależności od biblioteki możliwe jest, że nadchodzący standard po prostu rejestruje migawkę aktualnej funkcji, a biblioteka nadrzędna będzie ewoluować jako inkubator dla C++ 1x, C++ 2x i tak dalej.

-3

Takiej rzeczy jeszcze się nie stało. C++ ma tylko jedną implementację do tej pory.

+0

Eh, implementacja jest tu naprawdę złym słowem. Chodzi mi o to, że istnieje tylko jedna wersja standardu C++ i wersja robocza. – milan

+0

Możesz edytować swój oryginalny post i poprawić tę informację. – jwueller

+1

nah, to nauczy mnie pisać bardziej sumiennie :) – milan

4

Czasami autorzy bibliotek nadal utrzymują swoją bibliotekę, ponieważ ich biblioteka robi coś nieco innego niż to, co się robi w tym języku: albo ta różnica oferuje wyjątkową przewagę, albo jest zasadniczo łatwiejsza do zgadnięcia. Niezależnie od przypadku, jeśli istnieje wystarczająca chęć użytkownika do kontynuowania lub jeśli autor jest uparty, będzie nadal utrzymywany. W końcu jednak ludzie używają tego, co przychodzi naturalnie w języku, jeśli przewaga nie jest wystarczająco duża.

Powiązane problemy