2014-11-25 71 views
7

Mimo że TCP/UDP/IP są powszechnie używanymi protokołami, nie rozumiem, dlaczego chcą, aby był częścią standardu ISO C++. Nie mają one nic wspólnego z rdzeniem języka. Struktury danych są powszechnie potrzebnymi narzędziami, stąd STL ma sens, ale te protokoły są zbyt szczegółowe IMO.Dlaczego istnieje propozycja biblioteki sieciowej dla C++ 14/17?

+0

To pytanie jest zbyt otwarty. Lepiej zabrać go na listy dyskusyjne C++. –

+3

Wniosek dotyczy biblioteki, a nie "jądra języka". Dla mnie wystarczy standardowa ujednolicona biblioteka sieciowa. –

+0

Jeśli stanie się częścią normy ISO C++, co się stanie, jeśli użyję tego kompilatora w systemie operacyjnym, który nie ma stosu TCP/IP? –

Odpowiedz

7

C++ 11 zawiera wątkowanie w standardzie. Teraz programiści nie muszą samodzielnie pisać PThread w systemie Linux i Windows Threads w systemie Windows. To samo może się zdarzyć, jeśli biblioteka sieciowa uzyska standaryzację.

+3

Uważam, że nici są równie uniwersalne. Ale TCP/UDP nie są IMO. Istnieją alternatywy (np. SCTP - choć głównie używane w 3GPP). –

+0

@BenjiMizrahi Warto wspomnieć, że standardowa biblioteka sieciowa będzie łatwa do rozszerzenia i dodanie wieloplatformowej implementacji dla (np.) SCTP będzie łatwe i wieloplatformowe według projektu. –

14

Od dawna odczuwamy, że mały obszar zainteresowania biblioteki C++ jest czymś złym, co przywraca język. Większość "nowoczesnych" języków ma duże biblioteki szkieletowe, które zawierają sieci, grafikę i JSON. W przeciwieństwie do tego, jeśli chcesz wykonać dowolne z nich w C++, a) nie otrzymujesz niczego domyślnie, i b) jesteś przytłoczony wyborem bibliotek stron trzecich, których zazwyczaj nie możesz prawidłowo oszacować i wybrać.

Oto jak wygląda ta strona opinii.

Oczywiście są inni ludzie, którzy myślą, że tak właśnie powinno być. Niemniej jednak standaryzacja to ciężka praca, a ponieważ języki takie jak Java i C# i Go mają za sobą duże firmy, które mogą wnieść energię do stworzenia ogromnej biblioteki, C++ nie ma tego rodzaju siły roboczej, a większość ludzi, którzy spędzają czas na standaryzacji C++ są bardziej zainteresowani podstawowymi aspektami programowania: strukturami danych, współbieżnością, ewolucją języka (koncepcje, zakresy, moduły ...).

To nie jest tak, że ludzie są zasadniczo przeciwni większej bibliotece, ale nie jest to priorytetem dla wielu. Ale jeśli pojawią się dobre pomysły, mają duże szanse na wzięcie pod uwagę. A duże komponenty biblioteczne, takie jak sieciowanie, nie trafią do standardowej biblioteki, a raczej do wolnostojącej specyfikacji technicznej, która jest sposobem sprawdzenia, czy pomysł jest użyteczny, popularny i poprawny. Tylko wtedy, gdy TS zostanie szeroko wykorzystany i otrzyma wiele pozytywnych opinii, będzie możliwe przyszłe starania o włączenie go do IS.

(Można zauważyć podobne wysiłki w celu stworzenia specyfikacje techniczne dla systemów plików i grafiki).

+1

Wyobraź sobie dziecko urodzone w 2005 roku, które dostaje iPhone7 na 10. urodziny, ale wie, że wszystkie fajne dzieci w szkole mają C++. "Mamo, chcę tylko narysować jakieś przecinające się kształty na moim płótnie HTML (mój wielokrotny kod wysyłki działa już doskonale) - do której klasy potrzebuję go utworzyć?" (W tym momencie mama otwiera butelkę Jacka i pozwala dziecku używać jej XCode z Swift.) –