Generalidades sobre Cpp

En este pequeño post, trataré de resumir algunas de las preguntas iniciales a las que nos enfrentamos antes de iniciar en el mundo de la programación con C++, también pueden ser vistas como generalidades de C++.

¿Como surgió C++?
La programación ha existido hace ya bastantes años. El lenguaje de programación C++ surgió como una modificación a los lenguajes que ya existían en la época de los 70’s (C y pascal) para agregarles características que los hicieran más útil y rápidos, pero sobre todo se buscaba incorprar el paradigma de la programación orientada a objetos a estos lenguajes. Es allí donde surge C++, C++ es un lenguaje de programación diseñado en el año 1980 por Bjarne Stroustrup, surgió con la intención de ampliar el lenguaje de C, el cual permite la manipulación de objetos, así nace C++ que es una especie de combinación o hibrido. La principal razón por la cual se crea C++ es para añadir a el lenguaje de programación C más características tales y como son clases y funciones virtuales, tipos genéricos y expresiones, la posibilidad de declarar variables en cualquier punto del programa .

¿Para que tipo de problemas o proyectos funciona mejor C++?
Actualmente C++ es utilizado para sistemas operativos como el de BlackBerry, incluso Windows utiliza “C” en su generalidad, es decir “C” y “C++”. C++ también es muy utilizado para el desarrollo videojuegos (En compañia de otros lenguajes), pero su foco principal radica en la programación de microcontroladores y en general de drivers que permitan la interacción entre un dispositivo de hardware y un sistema operativo. e incluso sirve para cálculos ya que su lenguaje es más directo por ende mejora su velocidad de ejecución. ¿Cuál es la relación de C++ con los videojuegos? C++ tiene una estrecha e importante relación en torno a los videojuegos, ya que es un lenguaje de programación de alto nivel, complejidad y completitud debido a su gran capacidad de administración de recursos de forma eficiente, eficaz, y versatil. Por lo general c++ se usa para programas que requieren alto rendimiento entre ellos los videojuegos. De hecho ha sido uno de los lenguajes de programación más usados para el desarrollo de videojuegos, ejemplo de ello el conocido juego world of warcraft tiene gran cantidad de componentes desarrollados en C++. ¿Qué se puede hacer y que no se puede hacer con C++? En general con C++, es posible hacer casi cualquier tarea de programación, sin emabrgo su foco principal radica en la creacion de drivers, sistemas operativos, Videojuegos o motores para ellos, programas científicos e incluso virus informáticos. Aunque también se puede C++ no es muy usado para realizar aplicaciones web o bases datos, aunque algunos gestores de bases de datos se encuentran hechos sobre C++. ¿Qué es un compilador? Es un programa informático que permite traducir un lenguaje de programación a un lenguaje de máquina para que pueda ser procesado y ejecutado por un computador o dispositivo. Normalmente el lenguaje o codigo al que es traducido es un lenguaje de máquina, sinembargo también puede ser un código intermedio o simplemente texto. Este proceso de traducción se conoce como compilación. ¿Cómo funciona un compilador? El compilador se encarga de pasar un lenguaje de programación a un lenguaje de máquina, este proceso consta de varias fases, la cuales son: Fase de análisis: Esta fase se compone por tres tipos de análisis, los cuales son: Análisis léxico, sintáctico y semántico. Análisis Léxico: En este análisis se lee el programa fuente de izquierda a derecha y se agrupan en componentes léxicos, también los espacios en blanco y líneas en blanco y los comentarios y demás información innecesaria se elimina del programa fuente. Análisis Sintáctico: En esta parte los caracteres se agrupan de manera jerárquica en frases que el compilador utiliza para facilitar la salida y se comprueba si lo anterior que se ha hecho ha sido correcto. Análisis Semántico: En esta fase se buscan los errores semánticos y se utiliza la estructura jerárquica anteriormente formada para identificar los operadores de expresiones y preposiciones y el compilador verifica si cada operador tiene operandos. Fase de Síntesis: En esta se genera el código objeto cuando el programa está libre de errores de análisis, lo cual no quiere decir que el programa se ejecute correctamente, ya que un programa puede tener errores de concepto o expresiones mal calculadas. Fase de Optimización: En esta se mejora el código intermedio, de modo que resulte un código de maquina más rápido de ejecutar. ¿Algunos compiladores de C++?

¿Qué es una IDE (Integrated Development Environment - Ambiente de Desarrollo Integrado)? Conocida también con el nombre de o entorno de desarrollo interactivo esta es una herramienta que le permite al usuario escribir y desarrollar de una manera más fácil programas en donde se permite desarrollar el lenguaje de programación de manera interactiva, con ayudas visuales y atajos de teclado sin necesidad de trabajo orientado a archivos de texto. En términos generales una IDE brindá ayudas visuales en la sintaxis, usando plantillas, wizards, plugins y sencillas opciones para probar y hacer un debug, para así facilitar la escritura y el desarrollo de un programa. Un IDE debe tener las siguientes características:

  • Multiplataforma
  • Soporte para diversos lenguajes de programación
  • Integración con Sistemas de Control de Versiones
  • Reconocimiento de Sintaxis
  • Extensiones y Componentes para el IDE
  • Integración con Framework populares
  • Depurador
  • Importar y Exportar proyectos
  • Múltiples idiomas
  • Manual de Usuarios y Ayuda

¿IDEs para desarrollar en C++? Code::Blocks Tiene un buen entorno de desarrollo integrado para C++, con capacidad para instalar muchas bibliotecas importantes. Se encuentra en inglés, pero es muy entendible y fácil de usar. Actualmente tiene la mayor cantidad de usuarios de países hispanoparlantes y angloparlantes del mundo, que cualquier otro IDE. Dev c++ Cuenta con uno de los mejores entornos de desarrollo, y tiene la ventaja de tratarse de una aplicación totalmente gratis. Este IDE presenta una interfaz sencilla que facilita el manejo tanto del editor de código como del compilador que integra. Las principales características de Dev-C++ son: – Uso del compilador MinGW (Minimalist GNU for Windows) – Práctico editor de código con coloreado de sintaxis, opciones de búsqueda, reemplazar, – Gran cantidad de opciones de configuración para personalizar el compilador, el entorno o el propio editor. – Inserción de marcadores y puntos de ruptura. – Uso de atajos de teclado. – Posibilidad de añadir, editar o eliminar herramientas. – Selección de diferentes temas para la interfaz. Visual C++ Studio Es un IDE versión de Microsoft, y además es uno de los más completos de todos los entornos para trabajar en C++. Cuenta con unas librerías muy completas (el conjunto SDK) podemos crear casi de todo, y además es la plataforma utilizada por más del 90% de los desarrolladores de video juegos ya sea en 2D o en 3D. Tiene compilador veloz, un depurador excelente, permite el encarpetamiento de clases (para mejorar la organización de los proyectos) y tiene una integración sencilla con herramientas externas. También tiene sus desventajas, por ejemplo, requiere demasiadas especificaciones antes de poder empezar a un proyecto, es un producto caro, no es recomendable para personas inexpertas en la programación C++ y requiere más memoria que sus competidores. BloodShedb DEV C++ Es un entorno gratuito, además va marcando el código en diferentes colores para una mejor comprensión del mismo. Sus librerías se van actualizando día a día con versiones nuevas en Internet y sus requerimientos de memoria son bajos. Una desventaja que tiene este IDE es que no posee diseñador de formularios pero puede ser complementado con librerías como qt. Borland C++ Builder 6.0 Es un entorno excelente y una gran opción ya que permite el desarrollo de proyectos con interfaces de usuario complejas de manera fácil y permite recompilar proyectos de C++ en Linux. No es gratuito, tiene un depurador algo pobre, contiene un compilador más lento que el de Visual Studio y solo permite importar proyectos de Visual Studio 6 o aquellos cuales tengan código en ANSI C++. Eclipse Este IDE es una gran opción para proyectos pequeños, medianos y hasta algunos grandes, al igual que DEV C++ colorea el código y es gratuito. Es un proyecto creado dentro del ámbito universitario y está en constante actualización. Contiene un buen depurador, utiliza MinGW y contiene muchas opciones para la creación de proyectos con POO. Sus desventajas son: la lentitud tanto para compilar como para depurar, y su instalación es cansada. Necesitas tener motor java instalado ya que originalmente se creó como un IDE para java y contiene algunos bugs, sin embargo no deja de ser una de las mejores opciones, algo difícil al principio pero puede ser realmente útil. Netbeans Muy difundido y conocido por una gran cantidad de programadores Netbeans es una herramienta multilenguaje y multiplataforma en la cual podemos desarrollar software de calidad. Con él puedes crear aplicaciones web y de escritorio, además de contar con plugins para trabajar en Android. ¿Existen más lenguajes de programación aparte de C++?

C++

JAVA

PHP

PYTHON

Permite agrupar sus instrucciones. Maneja los punteros (variable que maneja la dirección de otra variable) Tiene un conjunto completo de instrucciones de control. Rendimiento 10 veces superior a JAVA. Lenguaje hibrido, que permite tambien la aplicación del paradigma de programación orientada a objetos. Permite herencia múltiple.

Lenguaje Simple, complemtamente orientado a Objetos.

Permite abrir sockets, establecer y aceptar conexiones con los servidores o clientes remotos Seguro Puede ser compilado e interpretado en tiempo real, ya que cuando se construye el código fuente este se transforma en una especie de código de máquina. Permite la reutilización de componentes de software mas facilmente que C++.

Es un lenguaje multiplataforma. Completamente orientado al desarrollo de aplicaciones web dinámicas con acceso a información almacenada en una Base de Datos. Permite aplicar técnicas de programación orientada a objetos. Biblioteca nativa de funciones sumamente amplia e incluida. Capacidad de conexión con la mayoría de los motores de base de datos que se utilizan en la actualidad, destaca su conectividad con MySQL y PostgreSQL.

Su estructura es más compacta. Es más rápido a la hora de cargar. Consume menos memoria. Tiene extensiones de c++. El mismo código funciona en cualquier plataforma, la única condición es que maneje el intérprete del lenguaje.

Referencias: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Introducci%C3%B3nhttp://es.ccm.net/forum/affich-734903-para-que-sirve-el-programa-c http://ingsistemascompilador.blogspot.com.co/p/conceptos-basicos-sobre-compiladores.html http://www.zator.com/compiladoresC.htm https://es.wikipedia.org/wiki/Ambiente_de_desarrollo_integrado http://michelletorres.mx/que-es-un-ide-los-ide-mas-utilizados-para-c/ https://es.opensuse.org/C%2B%2B

Copyrights © 2018 Sebastian Gomez. All Rights Reserved.

Sobre mí

sebastianMi nombre es Sebastián Gómez, soy ingeniero de sistemas e Informática y Magister en Ingeniería de Sistemas de la Universidad Nacional de Colombia.

Actualmente trabajo en Globant como Web UI Developer con énfasis en aplicaciones híbridas y cross compiladas. Soy el organizador del Google Developers Group de Medellín, así que contactame si quieres dar alguna charla o participar actuamente de esta comunidad.

He participado en una Startup Colombiana llamada SponzorMe al lado de Carlos Rojas y fuí participante de Startup Chile a pesar de no haber continuado con esta startup me apasiona el emprendimiento y me gusta aconsejar y ayudar startups como mentor técnico. También he trabajado en empresas Americanas como StudioHyperset en Estados Unidos y para Measured Medium. Mi interés y mi experiencia es el desarrollo de web y móvil full stack como Front-end con Javascript. Me apasiona desarrollar software, escribir código y enseñar lo que aprendo día a día.

También he trabajado como profesor en diferentes universidades en Medellín Colombia, con tematicas relacionadas con la Inteligencia Artificial, Bases de datos, programación orientada a objetos, minería de datos, desarrollo de software, desarrollo móvil y desarrollo web.

Me encanta escribir código rápido y prototipar de una manera accelerada si quieres ver que hago día a día puedes darle un vistazo a mi codepen:  https://codepen.io/seagomezar/.

Todos los días trato de crear o participar en proyectos, la mayoría open source, así que puede chequear mi GitHub:  https://github.com/seagomezar.

Mi áreas de investigación académica son: Ingeniería de software, Ingeniería de requisitos, procesamiento del lenguaje natural, Ontologías, Bases De Datos,  Machine Learning, Seguimiento de trayectorias y Modelamiento matemático de formaciones.

Estas son algunas de mis publicaciones académicas mas recientes: