2010-03-15 6 views
8

Esto puede parecer una pregunta trivial, pero es uno que me ha molestado mucho últimamente. ¿Por qué algunos programadores se refieren a "C++/STL" como si fuera un idioma diferente? El STL es parte de la biblioteca estándar de C++ y, por lo tanto, es parte del lenguaje, "C++". No es un componente separado, y no vive solo en el ámbito de las cosas C++. Sin embargo, algunos continuamente actúan como si fuera un idioma completamente diferente. ¿Por qué?¿Por qué los programadores a veces se refieren a "C++/STL" como si fuera un idioma separado?

+3

"algunos continuamente actúan como si fuera un idioma completamente distinto". No creo que esta sea realmente la motivación, pero podría interpretarse como que C++ es un lenguaje de programación multi-paradigma. Un paradigma (o colección de paradigmas) utiliza las plantillas estándar, otros no. C++/STL por lo tanto especifica algo que bien podría ser un lenguaje diferente de "C++ \ STL". Por ejemplo, hay horquillas de estilo C++ como Symbian C++, que en realidad son idiomas diferentes (o lo fueron: creo que Symbian está más o menos alineado ahora que tiene plantillas adecuadas y STLPort). –

+0

@Steve Jessop: Ponlo en una respuesta para que podamos votarlo: P –

+1

Nah, no es una respuesta porque, como digo, no creo que sea por eso que la gente dice C++/STL. Creo que se refieren a lo que dice Ignacio, "C++, y quiero que sepas el STL: no es una alternativa". Supongo que podría agregar que también significan "C++, y de hecho lo saben, no solo han hecho las primeras conferencias de un curso universitario para aprender la sintaxis básica y salteado las partes difíciles". –

Respuesta

8

La comprensión de la STL no es necesaria para comprender C++. Es útil cuando necesitas ADT, pero puedes ir (¿podrías haber ido?) A través de toda tu carrera en C++ sin necesitarlo.

+0

+1, hay bibliotecas equivalentes/diferentes/(¿mejores?). –

+0

+1 - pero entonces ¿por qué no hay C++/Iostreams? Puede que en realidad no necesites entender iostreams pero nadie los trata como otro idioma ... –

+0

Eso no lo sé. Probablemente debido al tamaño. Los iostreams son un truco de la sobrecarga del operador, pero el STL es una bola grande y pegajosa de aproximadamente dos docenas de encabezados. –

6

Probablemente porque STL llegó un poco tarde al juego de C++, y mucha gente ha escrito un código que no usa ningún STL. Por ejemplo, piense en la programación temprana de win32 con MFC.

5

Guess:

Cuando C++ fue lanzado por primera vez, el TEL no existiera. Se creó más tarde como una adición opcional y luego se incorporó al estándar.

+1

@SDGator: es incorrecto. El primer "C++ estándar", C++ 98, incluye el STL como parte de la biblioteca estándar. –

+7

Claro, pero C++ estuvo presente por 10 años antes de que fuera estandarizado. – Gabe

+0

@Gabe y dreamlax: no me refería a la respuesta de Heath, me refería a un comentario (ahora eliminado) de SDGator. Heath es completamente correcto. –

7

Las respuestas anteriores son realmente buenas; Solo voy a agregar a su contenido en un contexto más amplio.

Los desarrolladores pueden hacer referencia a la biblioteca de idioma/api | C/Win32, Java/Struts, Java/Spring, C#/.net MVC porque, en esencia, hay dos bases de conocimiento: el conocimiento del idioma en cuestión y el conocimiento de cómo usar esa biblioteca, API o marco específico. Algo como Win32 es bastante grande, como dice Django, que actualmente estoy aprendiendo. Django en sí mismo funciona de una manera muy específica y sé que eso es lo que estoy aprendiendo, no Python.

Lo mismo se aplica a C++/MFC o C++/Boost o C++/STL. El lenguaje es C++: la API/biblioteca que está utilizando es MFC, Boost o STL.

+0

Si es una biblioteca, que bien, pero el STL es una parte central del lenguaje en sí, y al decir C++ usted está implicando a STL. No es una biblioteca de terceros. No veo Java/Standard Collections, ni C#/Generics en ninguna parte ... –

+1

@BillyONeal: STL no es parte del estándar C++, y no es una parte central del lenguaje. – dreamlax

+0

@dreamlax: Sí, lo es. El primer "C++ estándar", C++ 98, incluye el STL como parte de la biblioteca estándar. C++ 03 es el estándar actual, que es solo C++ 98 con algunas correcciones. –

9

Es posible ser un programador de C++ competente y experimentado y nunca utilizar el STL. Puede estar usando Boost o ACE, o haber sido un programador de Windows de MFC por 10 años.

Si desea que alguien tenga experiencia en el uso de la STL, pedirle a alguien que conozca C++ no es garantía de que la obtenga.

También para mí, escribir código que dependa en gran medida del STL es muy diferente de escribir, digamos, código MFC. También podrían ser diferentes idiomas. Ciertamente no se verán particularmente similares.

-1

Al escribir un currículum, la gente a menudo enlista C/C++ como un idioma, lo que, en muchos casos, significa que tampoco lo saben.

Algunas veces, los currículums incluirían en la lista "Visual C++" como un idioma, tratando de indicar que no saben qué es un idioma.

Esto, junto con las "declaraciones de gran conocimiento de C++ y PHP", va directamente a la papelera de reciclaje al my firm. No porque sean necesariamente malos programadores, sino porque el desperdicio de tiempo de la entrevista no vale la pena.

+2

¿Qué pasa con las personas que conocen tanto C++ como PHP? –

+0

Lo que está mal es mencionar dos tecnologías de complejidades muy diferentes en una oración. –

Cuestiones relacionadas