2010-03-15 14 views
8

Questa può sembrare una domanda banale, ma è una cosa che mi ha infastidito molto ultimamente. Perché alcuni programmatori fanno riferimento a "C++/STL" come se fosse una lingua diversa? STL fa parte della libreria standard C++ e quindi fa parte del linguaggio "C++". Non è un componente separato, e non vive da solo nell'ambito di cose C++. Eppure alcuni agiscono continuamente come se fosse una lingua completamente diversa. Perché?Perché i programmatori a volte si riferiscono a "C++/STL" come se fosse una lingua separata?

+3

"alcuni si comportano continuamente come se fosse un linguaggio completamente diverso" Non credo che questa sia davvero la motivazione, ma si potrebbe interpretare questo perché il C++ è un linguaggio di programmazione multi-paradigma. Un paradigma (o collezione di paradigmi) usa i modelli standard, altri no. C++/STL pertanto specifica qualcosa che potrebbe anche essere una lingua diversa da "C++ \ STL". Per esempio ci sono forchette in stile C++ come Symbian C++, che in realtà sono lingue diverse (o erano: Penso che Symbian sia più o meno in linea ora che ha template e STLPort corretti). –

+0

@Steve Jessop: Metti questo in una risposta in modo che possiamo inversiarlo: P –

+1

Nah, non è una risposta perché, come ho detto, non penso che sia per questo che la gente dice C++/STL. Penso che intendano quello che dice Ignacio, "C++, e voglio che tu conosca l'STL: non un'alternativa". Suppongo che potrei aggiungere che significano anche "C++, e in realtà lo sanno, non solo hanno fatto le prime lezioni di alcuni corsi universitari per imparare la sintassi di base e saltare i bit insidiosi". –

risposta

8

Una comprensione dell'STL non è necessaria per comprendere il C++. È utile avere quando hai bisogno di ADT, ma puoi andare (potrebbe essere andato?) Attraverso l'intera carriera del C++ senza averne bisogno.

+0

+1, ci sono librerie equivalenti/diverse/(meglio?). –

+0

+1 - ma allora perché non c'è C++/Iostreams? Potresti non aver bisogno di capire iostream ma nessuno li tratta come un'altra lingua ... –

+0

Che io non sappia. Probabilmente a causa delle dimensioni. gli iostreams sono un trucco dell'overloading dell'operatore, ma l'STL è una palla grande e appiccicosa di circa due dozzine circa di intestazioni. –

6

Probabilmente perché STL è arrivato un po 'in ritardo rispetto al gioco C++ e molte persone hanno scritto codice che non utilizza alcun STL. Ad esempio, si pensi alla programmazione Win32 in anticipo con MFC.

5

Indovina:

Quando C++ è stato rilasciato, lo STL non esisteva. Più tardi è entrato in vigore come aggiunta opzionale e poi è stato incorporato nello standard.

+1

@SDGator: non sei corretto. Il primo "standard C++", C++ 98, include l'STL come parte della libreria standard. –

+7

Certo, ma il C++ era in giro per 10 anni prima che fosse standardizzato. – Gabe

+0

@Gabe e dreamlax: non mi riferivo alla risposta di Heath, mi riferivo ad un commento (ora cancellato) da SDGator. Heath è completamente corretto. –

7

Le risposte sopra sono davvero buone; Aggiungerò solo il loro contenuto in un contesto più ampio.

Gli sviluppatori possono fare riferimento a lingua/api | libreria, ad es. C/Win32, Java/Struts, Java/Spring, C# /. Net MVC perché ci sono essenzialmente due basi di conoscenza: conoscenza della lingua in questione e conoscenza di come usare quella specifica libreria, API o framework. Qualcosa come Win32 è piuttosto grande, come dice Django, che sto attualmente imparando. Django stesso funziona in un modo molto specifico e sapendo che è ciò che sto imparando, non Python.

Lo stesso vale per C++/MFC o C++/Boost o C++/STL. La lingua è C++: l'API/libreria che stai utilizzando è MFC, Boost o STL.

+0

Se si tratta di una libreria, che fine, ma l'STL è una parte fondamentale del linguaggio stesso, e dicendo C++ stai implicando STL. Non è una libreria di terze parti. Non vedo Java/Collezioni standard o C#/Generics ovunque .... –

+1

@BillyONeal: STL non fa parte dello standard C++ e non è una parte fondamentale del linguaggio. – dreamlax

+0

@dreamlax: Sì, lo è. Il primo "standard C++", C++ 98, include l'STL come parte della libreria standard. C++ 03 è lo standard attuale, che è solo C++ 98 con alcune correzioni. –

9

È possibile essere un programmatore C++ competente ed esperto e non utilizzare mai l'STL. Potresti utilizzare Boost o ACE o essere un programmatore di finestre MFC per 10 anni.

Se si desidera che qualcuno abbia esperienza nell'utilizzo dell'STL, chiedere a qualcuno che conosce il C++ non garantisce che ne riceverai uno.

Anche per quanto mi riguarda, scrivere un codice che è fortemente dipendente dalla STL è molto diverso dalla scrittura, per esempio, del codice MFC. Potrebbero anche essere lingue diverse. Di certo non sembreranno particolarmente simili.

-1

Durante la scrittura di un curriculum, le persone spesso elencano C/C++ come lingua, che in molti casi significa che non lo sanno neanche.

A volte i curriculum elencano "Visual C++" come lingua, cercando di indicare che non sanno che lingua è.

Questo, insieme a "grande conoscenza di istruzioni C++ e PHP", entra nel cestino al my firm. Non perché siano necessariamente dei cattivi programmatori - ma perché lo spreco di tempo dell'intervista non vale la pena.

+2

Cosa c'è che non va nelle persone che conoscono sia C++ che PHP? –

+0

Ciò che è sbagliato è menzionare due tecnologie di complessità molto diverse in One Sentence. –

Problemi correlati