SlideShare una empresa de Scribd logo
1 de 25
Oskar Barrio
riobar@gmail.com
oskar.barrio@hp.com
Introducción a
Índice
• De la cuna hasta hoy
• Cazando mitos
• Potencia con control
• C++ contra el mundo
• Hábitat natural, hasta debajo de las piedras
• Previsión de futuro
• Enlaces interesantes
C++. De la cuna hasta hoy
Situación histórica (años 80)
Sociedad Lenguajes prog. Sist. Operativos
SUN-OS
DOS
CP/M
APPLE
COMMODORE
UNIX
procedimental juventud
FORTRAN
LISP
COBOL
BASIC
PASCAL
C
SIMULA-67
Nacimiento de C++
• Bjarne Stroustrup crea C++ en 1983
• Necesitaba una herramienta:
– Para crear una versión distribuida del
kernel de UNIX.
– Compatible con C.
– Para acceder directamente el
hardware.
– Portable y eficiente.
– El nombre fue todo un problema,
hasta que Rick Mascitti sugirió C++
(incremento de C).
Bjarne Stroustrup es Catedrático de
Ciencias de la Computación en la
Universidad A&M de Texas.
Trabajó a la cabeza del departamento
de Investigación en Programación de
los laboratorios Bell de AT&T, desde
su creación hasta finales de 2002.
Genealogía
SIMULA-67
SMALLTALK
C con clases
C
C++
Java
C#
Perl PHP
C++. Cazando mitos
Mito VS Realidad
Mito Realidad Explicación
Es difícil de aprender DEPENDE Lo básico es sencillo, el nivel de dificultad aumenta según
avanzamos.
Es difícil programar con él DEPENDE Igual que antes depende de lo que queramos hacer y de
cómo queremos hacerlo.
No se utiliza en la actualidad FALSO Preguntárselo a Google, Microsoft, la NASA y multitud de
Pymes.
No sirve para aplicaciones de alto nivel FALSO Existen multitud de herramientas e IDE’s para el desarrollo
de UI, plugins, etc.
Tienes que hacerlo todo a mano FALSO Puede que al comienzo fuera verdad, ahora existen
multitud de herramientas y librerías gratuitas listas para
usar.
Es difícil encontrar los errores DEPENDE Normalmente son sencillos, pero los errores con templates
son complicados.
Depende totalmente del compilador FALSO Utilizando los estándares no existen problemas de
compatibilidad.
Hay que controlar todo lo que se hace VERDADERO Hay que tener completo control sobre el desarrollo
realizado
El código generado es muy complejo FALSO Igual que en todos los lenguajes, depende del
programador.
Es necesario conocer C para aprender C++ FALSO No es necesario, ambos son lenguajes independientes
aunque muy relacionados.
Problemas reales
• Las características avanzadas del lenguaje
pueden ser complicadas de aprender y utilizar
(templates, herencia compleja, …).
• Hay que tener mucho control de los recursos
utilizados para evitar leaks, pérdida de
referencias y errores.
• El ser un lenguaje multipropósito puede hacerlo
menos indicado para algunas tareas que otros
lenguajes más focalizados.
• El desarrollo multiplataforma con utilidades
avanzadas puede ser tedioso (programación
gráfica, hilos, etc.).
• Los mensajes de error cuando hay templates por
el medio son complejos.
• Las múltiples posibilidades del lenguaje pueden
hacernos perder el rumbo y el estilo.
C++. Potencia con Control
Principales características
• 100% compatible con C.
• Multiparadigma (procedimental, Orientado a
objetos y genérica).
• De propósito general.
• Estandarizado. Revisiones ISO en 1998, 2003 y
2011.
• Multiplataforma.
• Lenguaje de nivel “medio”.
• Compilado.
• Optimizado. Alta performance.
• Gran libertad al usuario para decidir qué
hacer y cómo hacerlo.
• Gran responsabilidad del usuario con lo que
hace.
Escalabilidad
Un gran poder, una gran responsabilidad
Rapidez Diseño
Multiplataforma
C++
Windows
UnixLinux
MacOS
ARM
SystemV
Sparc
AS400
C++. Contra el mundo
Comparativa entre lenguajes
C++ C Java C# VisualBasic PHP
Compilado Compilado Interpretado Interpretado Interpretado Interpretado
Multiparadigma Procedimental Orientado a Objetos Orientado objetos* Orientado a eventos Multiparadigma
- - SUN Microsoft Microsoft PHP Group
Multipropósito Multipropósito Multipropósito Multipropósito Gestión Web
Multiplataforma Multiplataforma Multiplataforma Multiplataforma* Windows Multiplataforma
- - GNU GPL/Java CP Propietaria* Propietaria Licencia PHP
Tipado fuerte,
estático, inseguro y
nominativo
Tipado débil,
estático
Tipado fuerte y
estático
Tipado estático,
dinámico, fuerte,
seguro, nominal
Tipado fuerte y
estático
Tipado dinámico
Tipos de datos:
• Fuerte: Una variable de un tipo no se puede utilizar cómo si fuera de otro tipo sin hacer una conversión previa.
• Dinámico: El tipo de dato se decide en tiempo de ejecución.
• Inseguro: Uso de tipos de datos puntero.
• Nominativo: La comparación entre variables se realiza teniendo en cuenta el tipo de las mismas.
Tendencias actuales
http://www.tiobe.com
http://www.google.co.uk/trends
https://www.ohloh.net
C++. Hábitat natural
Donde plantearnos el uso de C++
• Desarrollos donde el rendimiento es
importante o crítico.
• Desarrollos científicos en general.
• Desarrollos donde deberos comunicarnos
con el hardware.
• En programación de sistemas.
• Desarrollos de gestión con alta carga de
trabajo e información.
• Desarrollos multiplataforma.
• Librerías y funcionalidad a compartir
entre diversos proyectos y arquitecturas.
• En el aprendizaje de metodología y
programación.
Hasta debajo de las piedras…
C++. Previsión de futuro
El futuro de C++: C++0x
• Reemplaza a la anterior versión del 2003.
• Aprobada en Agosto de 2011.
• La versión definitiva se lleva puliendo desde 2008.
• Principales novedades:
– Incremento del rendimiento y facilitar el trabajo directo con hardware.
– Mejora en el manejo de rvalues.
– Operadores lambda (similares a c#).
– Enumeraciones fuertemente tipadas.
– Mejoras en plantillas.
– STL se completa con utilidades de programación interprocesos.
Enlaces de interés
Cultura básica:
• http://es.wikipedia.org/wiki/Bjarne_Stroustrup
• http://es.wikipedia.org/wiki/C%2B%2B
• http://www.dosideas.com/noticias/actualidad/109-entrevista-a-bjarne-stroustrup-creador-de-c.html
• http://codigomaldito.blogspot.com/2004/12/entrevista-bjarne-stroustrup-creador.html
Bibliografía:
• http://www.amazon.co.uk/Lenguaje-programaci%C3%B3n-c-Bjarne-
Stroustrup/dp/847829046X/ref=sr_1_fkmr2_3?ie=UTF8&qid=1321891075&sr=8-3-
fkmr2http://es.wikipedia.org/wiki/C%2B%2B
• http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Cpp/basico/cppbasico.pdf
• http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Cpp/avanzado/cppavan.pdf
Dennis MacAllister Ritchie
06/12/1941 – 12/10/2011
Ruegos y preguntas
The End!!!

Más contenido relacionado

Similar a Introduccion a C++

10 lenguajes de programacion
10 lenguajes de programacion10 lenguajes de programacion
10 lenguajes de programacionChristian Morales
 
Aplicacion de c
Aplicacion de cAplicacion de c
Aplicacion de chek_sk8
 
Mi lenguaje de preferencia
Mi lenguaje de preferenciaMi lenguaje de preferencia
Mi lenguaje de preferenciaAlexanderMBaez
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java jmosorio777
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónjusto morales
 
1___LENGUAJES DE PROGRAMACION_2023.pdf
1___LENGUAJES DE PROGRAMACION_2023.pdf1___LENGUAJES DE PROGRAMACION_2023.pdf
1___LENGUAJES DE PROGRAMACION_2023.pdfMariaTeresaGarznPrez
 
Clase 1- Fundamentos de programacion en Phyton.pptx
Clase 1- Fundamentos de programacion en Phyton.pptxClase 1- Fundamentos de programacion en Phyton.pptx
Clase 1- Fundamentos de programacion en Phyton.pptxVeronica Freire
 
Herramientas para contenidos digitales power point
Herramientas para contenidos  digitales power pointHerramientas para contenidos  digitales power point
Herramientas para contenidos digitales power pointangeluz26
 
Origen de la programación
Origen de la programaciónOrigen de la programación
Origen de la programaciónAlex Lopez
 
Swift sin hype y su importancia en el 2017
 Swift sin hype y su importancia en el 2017  Swift sin hype y su importancia en el 2017
Swift sin hype y su importancia en el 2017 Software Guru
 
Clase día 12 de octubre 2012
Clase día 12 de octubre 2012Clase día 12 de octubre 2012
Clase día 12 de octubre 2012julianjulio
 
Historia del C++ y JAVA
Historia del C++ y JAVAHistoria del C++ y JAVA
Historia del C++ y JAVANohemi Cuesta
 

Similar a Introduccion a C++ (20)

10 lenguajes de programacion
10 lenguajes de programacion10 lenguajes de programacion
10 lenguajes de programacion
 
Oportunidades con FLOSS
Oportunidades con FLOSSOportunidades con FLOSS
Oportunidades con FLOSS
 
Aplicacion de c
Aplicacion de cAplicacion de c
Aplicacion de c
 
Mi lenguaje de preferencia
Mi lenguaje de preferenciaMi lenguaje de preferencia
Mi lenguaje de preferencia
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
tic
tictic
tic
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
1___LENGUAJES DE PROGRAMACION_2023.pdf
1___LENGUAJES DE PROGRAMACION_2023.pdf1___LENGUAJES DE PROGRAMACION_2023.pdf
1___LENGUAJES DE PROGRAMACION_2023.pdf
 
Spring ROO
Spring ROOSpring ROO
Spring ROO
 
Clase 1- Fundamentos de programacion en Phyton.pptx
Clase 1- Fundamentos de programacion en Phyton.pptxClase 1- Fundamentos de programacion en Phyton.pptx
Clase 1- Fundamentos de programacion en Phyton.pptx
 
Herramientas para contenidos digitales power point
Herramientas para contenidos  digitales power pointHerramientas para contenidos  digitales power point
Herramientas para contenidos digitales power point
 
Origen de la programación
Origen de la programaciónOrigen de la programación
Origen de la programación
 
Xamarin Basics
Xamarin BasicsXamarin Basics
Xamarin Basics
 
C, Java y Phyton.pdf
C, Java y Phyton.pdfC, Java y Phyton.pdf
C, Java y Phyton.pdf
 
Swift sin hype y su importancia en el 2017
 Swift sin hype y su importancia en el 2017  Swift sin hype y su importancia en el 2017
Swift sin hype y su importancia en el 2017
 
Clase día 12 de octubre 2012
Clase día 12 de octubre 2012Clase día 12 de octubre 2012
Clase día 12 de octubre 2012
 
Java grupo 2
Java grupo 2Java grupo 2
Java grupo 2
 
Historia del C++ y JAVA
Historia del C++ y JAVAHistoria del C++ y JAVA
Historia del C++ y JAVA
 
Java
JavaJava
Java
 

Introduccion a C++

  • 2. Índice • De la cuna hasta hoy • Cazando mitos • Potencia con control • C++ contra el mundo • Hábitat natural, hasta debajo de las piedras • Previsión de futuro • Enlaces interesantes
  • 3. C++. De la cuna hasta hoy
  • 4. Situación histórica (años 80) Sociedad Lenguajes prog. Sist. Operativos SUN-OS DOS CP/M APPLE COMMODORE UNIX procedimental juventud FORTRAN LISP COBOL BASIC PASCAL C SIMULA-67
  • 5. Nacimiento de C++ • Bjarne Stroustrup crea C++ en 1983 • Necesitaba una herramienta: – Para crear una versión distribuida del kernel de UNIX. – Compatible con C. – Para acceder directamente el hardware. – Portable y eficiente. – El nombre fue todo un problema, hasta que Rick Mascitti sugirió C++ (incremento de C). Bjarne Stroustrup es Catedrático de Ciencias de la Computación en la Universidad A&M de Texas. Trabajó a la cabeza del departamento de Investigación en Programación de los laboratorios Bell de AT&T, desde su creación hasta finales de 2002.
  • 8. Mito VS Realidad Mito Realidad Explicación Es difícil de aprender DEPENDE Lo básico es sencillo, el nivel de dificultad aumenta según avanzamos. Es difícil programar con él DEPENDE Igual que antes depende de lo que queramos hacer y de cómo queremos hacerlo. No se utiliza en la actualidad FALSO Preguntárselo a Google, Microsoft, la NASA y multitud de Pymes. No sirve para aplicaciones de alto nivel FALSO Existen multitud de herramientas e IDE’s para el desarrollo de UI, plugins, etc. Tienes que hacerlo todo a mano FALSO Puede que al comienzo fuera verdad, ahora existen multitud de herramientas y librerías gratuitas listas para usar. Es difícil encontrar los errores DEPENDE Normalmente son sencillos, pero los errores con templates son complicados. Depende totalmente del compilador FALSO Utilizando los estándares no existen problemas de compatibilidad. Hay que controlar todo lo que se hace VERDADERO Hay que tener completo control sobre el desarrollo realizado El código generado es muy complejo FALSO Igual que en todos los lenguajes, depende del programador. Es necesario conocer C para aprender C++ FALSO No es necesario, ambos son lenguajes independientes aunque muy relacionados.
  • 9. Problemas reales • Las características avanzadas del lenguaje pueden ser complicadas de aprender y utilizar (templates, herencia compleja, …). • Hay que tener mucho control de los recursos utilizados para evitar leaks, pérdida de referencias y errores. • El ser un lenguaje multipropósito puede hacerlo menos indicado para algunas tareas que otros lenguajes más focalizados. • El desarrollo multiplataforma con utilidades avanzadas puede ser tedioso (programación gráfica, hilos, etc.). • Los mensajes de error cuando hay templates por el medio son complejos. • Las múltiples posibilidades del lenguaje pueden hacernos perder el rumbo y el estilo.
  • 10. C++. Potencia con Control
  • 11. Principales características • 100% compatible con C. • Multiparadigma (procedimental, Orientado a objetos y genérica). • De propósito general. • Estandarizado. Revisiones ISO en 1998, 2003 y 2011. • Multiplataforma. • Lenguaje de nivel “medio”. • Compilado. • Optimizado. Alta performance. • Gran libertad al usuario para decidir qué hacer y cómo hacerlo. • Gran responsabilidad del usuario con lo que hace.
  • 12. Escalabilidad Un gran poder, una gran responsabilidad Rapidez Diseño
  • 14. C++. Contra el mundo
  • 15. Comparativa entre lenguajes C++ C Java C# VisualBasic PHP Compilado Compilado Interpretado Interpretado Interpretado Interpretado Multiparadigma Procedimental Orientado a Objetos Orientado objetos* Orientado a eventos Multiparadigma - - SUN Microsoft Microsoft PHP Group Multipropósito Multipropósito Multipropósito Multipropósito Gestión Web Multiplataforma Multiplataforma Multiplataforma Multiplataforma* Windows Multiplataforma - - GNU GPL/Java CP Propietaria* Propietaria Licencia PHP Tipado fuerte, estático, inseguro y nominativo Tipado débil, estático Tipado fuerte y estático Tipado estático, dinámico, fuerte, seguro, nominal Tipado fuerte y estático Tipado dinámico Tipos de datos: • Fuerte: Una variable de un tipo no se puede utilizar cómo si fuera de otro tipo sin hacer una conversión previa. • Dinámico: El tipo de dato se decide en tiempo de ejecución. • Inseguro: Uso de tipos de datos puntero. • Nominativo: La comparación entre variables se realiza teniendo en cuenta el tipo de las mismas.
  • 18. Donde plantearnos el uso de C++ • Desarrollos donde el rendimiento es importante o crítico. • Desarrollos científicos en general. • Desarrollos donde deberos comunicarnos con el hardware. • En programación de sistemas. • Desarrollos de gestión con alta carga de trabajo e información. • Desarrollos multiplataforma. • Librerías y funcionalidad a compartir entre diversos proyectos y arquitecturas. • En el aprendizaje de metodología y programación.
  • 19. Hasta debajo de las piedras…
  • 21. El futuro de C++: C++0x • Reemplaza a la anterior versión del 2003. • Aprobada en Agosto de 2011. • La versión definitiva se lleva puliendo desde 2008. • Principales novedades: – Incremento del rendimiento y facilitar el trabajo directo con hardware. – Mejora en el manejo de rvalues. – Operadores lambda (similares a c#). – Enumeraciones fuertemente tipadas. – Mejoras en plantillas. – STL se completa con utilidades de programación interprocesos.
  • 22. Enlaces de interés Cultura básica: • http://es.wikipedia.org/wiki/Bjarne_Stroustrup • http://es.wikipedia.org/wiki/C%2B%2B • http://www.dosideas.com/noticias/actualidad/109-entrevista-a-bjarne-stroustrup-creador-de-c.html • http://codigomaldito.blogspot.com/2004/12/entrevista-bjarne-stroustrup-creador.html Bibliografía: • http://www.amazon.co.uk/Lenguaje-programaci%C3%B3n-c-Bjarne- Stroustrup/dp/847829046X/ref=sr_1_fkmr2_3?ie=UTF8&qid=1321891075&sr=8-3- fkmr2http://es.wikipedia.org/wiki/C%2B%2B • http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Cpp/basico/cppbasico.pdf • http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Cpp/avanzado/cppavan.pdf