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?
risposta
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.
+1, ci sono librerie equivalenti/diverse/(meglio?). –
+1 - ma allora perché non c'è C++/Iostreams? Potresti non aver bisogno di capire iostream ma nessuno li tratta come un'altra lingua ... –
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. –
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.
Indovina:
Quando C++ è stato rilasciato, lo STL non esisteva. Più tardi è entrato in vigore come aggiunta opzionale e poi è stato incorporato nello standard.
@SDGator: non sei corretto. Il primo "standard C++", C++ 98, include l'STL come parte della libreria standard. –
Certo, ma il C++ era in giro per 10 anni prima che fosse standardizzato. – Gabe
@Gabe e dreamlax: non mi riferivo alla risposta di Heath, mi riferivo ad un commento (ora cancellato) da SDGator. Heath è completamente corretto. –
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.
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 .... –
@BillyONeal: STL non fa parte dello standard C++ e non è una parte fondamentale del linguaggio. – dreamlax
@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. –
È 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.
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.
Cosa c'è che non va nelle persone che conoscono sia C++ che PHP? –
Ciò che è sbagliato è menzionare due tecnologie di complessità molto diverse in One Sentence. –
- 1. Lambdan anonimi che si riferiscono direttamente a se stessi
- 2. Perché JAXB a volte si associa a JAXBElement?
- 3. Come avere soluzioni diverse si riferiscono a un file resx?
- 4. Come fare un tag di ancoraggio si riferiscono a nulla?
- 5. Come fanno i programmatori Ruby a digitare il controllo?
- 6. Perché TextToSpeech.getLanguage() * a volte * restituisce null?
- 7. Come faccio a ricevere un avvertimento intorpidito come se fosse un'eccezione (non solo per i test)?
- 8. Perché l'applicazione a volte si riavvia su killProcess?
- 9. Connessione dbx separata a una thread
- 10. Perché il mio int? valore convalidato come se fosse richiesto?
- 11. Come faccio a rendere una vista di testo Android come se fosse disabilitata?
- 12. Errori che si riferiscono a una serie di simboli OpenSSL irrisolti che esistono chiaramente?
- 13. Perché a volte Response.Redirect tira dalla cache?
- 14. Perché le variabili di condizione a volte si attivano erroneamente?
- 15. Python: Perché os.getcwd() a volte si blocca con OSError?
- 16. Firefox trascina div come se fosse un'immagine
- 17. Perché a volte iCloud smette di funzionare?
- 18. AngularJS instradamento mantiene il reindirizzamento a se stesso come se fosse in un ciclo
- 19. Come posso forzare Aero a disegnare una finestra senza bordi come se fosse attiva, anche se non lo è?
- 20. Perché i bool vengono a volte chiamati "bandiere"?
- 21. Scala fattoriale sui grandi numeri a volte si blocca e, a volte non si
- 22. Frase separata a una parola per riga
- 23. Perché a volte (a volte) devo fare riferimento agli assiemi a cui fa riferimento l'assieme riferimento?
- 24. Perché i git/ganci a volte mancano nei repository clonati?
- 25. Perché jQuery a volte sovrascrive window.onbeforeunload?
- 26. Perché Rust inserisce a :: before i parametri in generici a volte?
- 27. Come faccio a decodificare i file di localizzazione della lingua di Mac OS X per l'apprendimento della lingua naturale?
- 28. Aggiungi una nuova lingua a OpenEars
- 29. Perché gli operatori a volte sono autonomi ea volte metodi di classe?
- 30. Come testare una serie di file paia X uguali in una riga che si riferiscono a una colonna specifica?
"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). –
@Steve Jessop: Metti questo in una risposta in modo che possiamo inversiarlo: P –
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". –