viernes, 24 de agosto de 2018

U3. S8. Actividad 1. Integración y redacción del informe final

lunes, 13 de agosto de 2018

U2. S6. Actividad 2. Planeación y aplicación de entrevista

Guion de la Entrevista
La presente entrevista servirá de apoyo para indagar cuál es el lenguaje de programación más rápido, dependiendo de las opiniones de la experiencia que los alumnos de la Universidad Mexiquense del bicentenario tienen.

Nombre: _________________________________________________

  1. ¿Has programado en el lenguaje de programación Java o C++, y por cuánto tiempo?
  2. ¿En base a tu experiencia que lenguaje de programación consideras más rápido?
  3. ¿Crees que el lenguaje de programación importe al momento que un programa este corriendo de una maquina a otra?
  4. ¿Optarías por cambiarte de un lenguaje de programación?
  5. ¿Te centrarías en aprender o dominar un solo lenguaje de programación?
  6. ¿Consideras que el lenguaje de programación se pueda medir cualitativamente?
  7. De acuerdo a todo lo anterior, ¿Qué lenguaje de programación considerarías que es mejor en aplicaciones de escritorio?

¿Has programado en el lenguaje de programación Java o C++, y por cuánto tiempo?
R. Sí, por 4 años.

¿En base a tu experiencia que lenguaje de programación consideras más rápido?
R. En mi opinión siento que el leguaje de programación C++, es mucho más rápido a diferencia de Java, ya que en C++ podemos controlar y administrar la memoria directamente desde bajo nivel.

¿Crees que el lenguaje de programación importe al momento que un programa este corriendo de una maquina a otra?
R. Sí, he visto videos en Youtube en los cuales se muestra la diferencia de velocidad en ciertos videojuegos, incluso con menos librerías y líneas de código se puede lograr maravillas de un lenguaje a otro, en este caso, C++ es un poco mejor en cuanto a programación de videojuegos.

¿Optarías por cambiarte de un lenguaje de programación?
R. Sí, dado que para ser un buen programador debo saber adaptarme a nuevos lenguajes y no solo estancarme en uno.

¿Te centrarías en aprender o dominar un solo lenguaje de programación?
R. No, en estos tiempos hay bastantes lenguajes de programación de los cuales cada uno tiene su propia meta.

¿Consideras que el lenguaje de programación se pueda medir cualitativamente?
R. Sí, como lo mencione en la pregunta anterior, cada lenguaje de programación tiene su propio enfoque, existen lenguajes de programación especificados para web, escritorio, móvil y escritorio.

De acuerdo a todo lo anterior, ¿Qué lenguaje de programación considerarías que es mejor en aplicaciones de escritorio?
R. Hablando de compatibilidad y rapidez en cuanto a programación, siento que el lenguaje ideal sería Java, dado que este lenguaje se puede ejecutar en cualquier plataforma o sistema operativo y la facilidad de programación que cuenta este lenguaje, hace que los programadores realicen proyectos buenos y rápidos.

U2. S6. Actividad 1. Bitácora de investigación.


BITÁCORA DE INVESTIGACIÓN

Dentro de esta bitácora se realizará el desarrollo de la visita a la Universidad Mexiquense del Bicentenario ubicada en Tenango del valle, Estado de México.


Fecha


Actividades
10 de agosto del 2018
Los estudiantes están más familiarizados con el lenguaje Java.

Los estudiantes creen que C++ es más rápido.

La mayoría opta por Java, dado que su programación es menos complicada.

El lenguaje c++ es poco usado en la universidad.

Los estudiantes ven irrelevante el uso del lenguaje c++, dado que Java es más comercial y usado en los institutos.




Observaciones

Durante la visita a la Universidad Mexiquense del Bicentenario, los alumnos mostraron más interés en el lenguaje de programación Java, dado que es poco común la utilización del lenguaje c++.

viernes, 10 de agosto de 2018

U2. S5. Actividad 2. Análisis y abstracción de información.


 JAVA O C++ EN EL DESARROLLO DE APLICACIONES DE ESCRITORIO


ANTECEDENTES

¿Java es lento?
Java tuvo sus inicios en 1991, y Sun Microsystems lo liberó al público en 1995. Aunque el lenguaje heredó mucha de sus sintaxis de C/C++, los objetivos de Java en aquél entonces pueden resumirse en los siguientes principios:
Simple, orientado a objetos y familiar.
Robusto y seguro.

Arquitectónicamente neutro y portable.

Ejecutándose en “alto desempeño”.

Interpretado, con soporte a paralelismo y dinámico.

El compilador de Java convierte el código fuente en archivos bytecode, que posteriormente son interpretados por la Máquina Virtual de Java o JVM, en un modelo de ejecución en pila o stack. Las primeras versiones de Java – previas a la 1.2 – no realizaban optimizaciones en el bytecode y debido a que las diferentes versiones de JVM eran más bien genéricas, la ejecución tenía un desempeño pobre.

A partir de la versión 1.2 (diciembre de 1998), Java incluyó un compilador Just-In-Time o JIT, que optimizaba el bytecode en tiempo real de acuerdo a la carga de trabajo sobre el programa. Como contraste, un modelo de compilación estática como C/C++ “adivina” dónde se encuentran los cuellos de botella y se enfoca en esa parte del código para realizar la optimización, pero en el caso de ambientes dinámicos como las aplicaciones web, el compilador JIT mantiene una relativa ventaja. Por otro lado, con cada nueva versión de Java, el lenguaje ha ido mejorando su desempeño, ya sea por optimización en la JVM, el recolector de basura o el compilador JIT. De acuerdo a este artículo, podemos ver la comparación en desempeño entre C++ y Java en algunas funciones relativamente sencillas. Lo sorprendente es lo malo que se desempeña C++ si durante la secuencia de compilación y enlace (linking) se deshabilitan todas las banderas de optimización de código. Adicionalmente, de la versión 6 a la 7, Java mejora su desempeño en alrededor de un 33%.

¿Cómo se comparan Java y C++ en términos de programas “de la vida real”? Actualmente abundan muchos microbenchmarks como el arriba mostrado, donde se verifican funciones muy simples, como manipulación de arreglos o acceso a memoria. Sin embargo, la mayoría de los casos de prueba son demasiado básicos como para ser un indicador confiable del desempeño. En la actualidad, existe un estudio comparativo formal: desarrollado por J. P. Lewis y Ulrich Neumann, investigadores de la Universidad del Sur de California (USC), el estudio se basa en 5 pruebas con diferentes versiones de Java y C++. Sus resultados, en términos generales, fueron los siguientes:

  • Al comparar algoritmos numéricos como FFT, factorización de matrices o SORen diferentes arquitecturas y compiladores, los investigadores encontraron que el desempeño de Java en plataformas Intel es razonablemente cercano al de C++ y que Java era más rápido que al menos un compilador en C (KAI sobre Linux Red Hat 5.0). En hardware con Intel Pentium, especialmente con Linux, la diferencia en desempeño es lo suficientemente pequeña como para carecer de importancia.

  • Implementando microbenchmarks con y sin cache, los investigadores encontraron que Java se encuentra justo a la mitad entre los mejores y los peores compiladores de C++. Es decir, Java 3 es mejor que gcc 3.2, pero nunca le ganará a un gcc 4.1.0.


BASES TEORICAS

Java es el que lidero el mercado en cuanto a lenguajes de programación se trata, nació en el 95 y sigue en vigencia hasta ahora. Es considerado por muchos como el mejor programador de todos los tiempos. Java es un lenguaje de programación gratuito que es accesible para todo tipo de personas en la red. He aquí algunas características de este lenguaje:

  • Java está puramente dirigido a objetos, cualquier opción debe pertenecer a una opción.
  • Java se ejecuta sobre un procesador virtual, llamado la máquina virtual de Java, capaz de interpretar datos en sistema binario
  • El compilador creaun bytecode para la máquina virtual de Java, para ser interpretado luego.
  • Automáticamente Java desaparece los objetos cuando se queda sin referencias lo que hace que se libere espacio.
  • Los objetos son accedidos mediante referencias.
  • Un paquete es una entidad organizativa que permite agrupar clases, interfaces y excepciones, hace que sus elementos dispongan de una visibilidad privilegiada con respecto a objetos externos al paquete.
  • No existe la conversión implícita de tipos por considerarse que existen errores potenciales.
  • Solo existe la sobrecarga de métodos o funciones, ya que los operadores ya vienen sobrecargados por el compilador.
  • No existe la herencia múltiple por ser considerado como poco eficiente, pero esto implico algunas críticas hacia Java.
  • Interfaz es el conjunto de especificaciones de métodos y atributos constantes.
  • Paquete de Java, como estructura dinámica, útil, los nombres y el funcionamiento son distintos.
  • Tiene un único compilador siempre igual.
  • Todos los objetos heredan de la clase Object.


C++, SIGUIENDO DE CERCA LOS PASOS DE JAVA
C++ es un lenguaje de programación que fue creado a mediados de los años 80, y nació con el objetivo de extender al exitoso lenguaje C, con mecanismo que permitan la manipulación de objetos. A pesar de nacer primero, el mercado le fue arrebatado por Java a inicios del siglo 21. Aquí las características que difieren de las de Java.
C++ se pueden crear programas dirigidos a objetos, a no objetos o a una mezcla de ambos.
  • El programa tiene control sobre el procesador (hardware + S.O.)
  • El compilador genera un código de máquina para una plataforma concreta.
  • La liberación de memoria no es automática sino manual.
  • Existen punteros que permiten explorar la memoria del computador físico.
  • No existe el concepto de paquete, lo más cercano es una biblioteca.
  • Existe la conversión implícita de tipos (flexibilidad para el usuario)
  • Existe la herencia múltiple.
  • No existe el concepto de interfaces.
  • Librería STL.
  • Ningún ancestro común de objetos.


U2. S5. Actividad 1. Selección y recopilación de información.



everac99. 12/13/2012. Desempeño de C++ vs. Java: todo reside en la calidad del compilador (y del programador también). Recuperado https://everac99.wordpress.com/2012/12/13/desempeno-de-c-vs-java-todo-reside-en-la-calidad-del-compilador-y-del-programador-tambien/



Christian Felde. 27 de Junio de 2010. C ++ vs rendimiento de Java Es un empate. Recuperado https://blog.cfelde.com/2010/06/c-vs-java-performance/




CodingBash. 2 de enero de 2015. Speed Coding: Pong in C++ AND Java | Which is Better?. Recuperado https://www.youtube.com/watch?v=jMauEVTNI1Y

U2. S4 Actividad 2. Delimitación del tema y plan de investigación.


JAVA O C++ EN EL DESARROLLO DE APLICACIONES DE ESCRITORIO

Java es un lenguaje de programación de propósito generalconcurrenteorientado a objetos, que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor web, con unos diez millones de usuarios reportados.

C++ es un lenguaje de programación diseñado en 1979 por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumaron a los paradigmas de programación estructurada y programación orientada a objetos. Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.


ALCANCE DE LA INVESTIGACIÓN

Determinar la velocidad de ejecución en cada uno de los lenguajes de programación mencionados, centrándonos en el tiempo de ejecución y compilación de cada uno de ellos.
OBJETIVOS

General

Analizar si el tipo de software a desarrollar importa en la implementación de dichos lenguajes de programación.
Específicos

  • Verificar si la maquina virtual de java ayuda en el rendimiento de la ejecución del programa.
  •  Comprender si la manipulación de propiedades a bajo nivel beneficia al momento de programar.
  • Determinar si los mecanismos disponemos para liberar los recursos de los objetos en c son mejores a los que presenta java.



Cronograma de actividades



viernes, 3 de agosto de 2018

Campaña de difusión






Planeando mi campaña publicitaria

Desarrollo de Software
Misión
Formar ingenieros líderes en el Desarrollo de Software de alto nivel, con compromiso social y sentido de emprendimiento, capaz de encontrar soluciones innovadoras, proponer metodologías, técnicas y herramientas que aporten al desarrollo tecnológico del país.

Visión
Ser el programa educativo líder en la formación de ingenieros en Desarrollo de software en el país, fortaleciendo la construcción del conocimiento, el desarrollo científico y tecnológico del área disciplinar. Con amplio reconocimiento social y sustentabilidad de procesos.

Objetivo
Formar profesionistas capaces de analizar, diseñar y mejorar estratégicamente proyectos de sistemas de software mediante la aplicación de procesos, modelos, herramientas y estándares de calidad en su desarrollo, además de promover la competitividad de la industria del software asumiendo una actitud ética, de colaboración y responsabilidad social en un contexto globalizado y un ambiente interdisciplinario.

Requerimientos de los sectores público, privado y social.
·         Soluciones de software innovadoras para la industria.
·         Construcción de software utilizando metodologías y técnicas que permitan la mejora y automatización de procesos.
·         Aplicación de las mejores prácticas, tecnologías avanzadas e ingeniería de software en el desarrollo de aplicaciones.

Áreas Funcionales de la organización donde se desarrollará el  egresado
·         Administración de proyectos de software.
·         Análisis de sistemas de información.
·         Desarrollo de aplicaciones móviles.
·         Desarrollo de sistemas bajo plataforma web.
·         Administración de Bases de Datos.
·         Soporte técnico y estratégico a la infraestructura de Tecnologías de Información.
·         Investigación y desarrollo tecnológico.

Requisitos de ingreso
Para ingresar a los estudios superiores a nivel licenciatura se requiere:
1.      Acreditar el haber aprobado en su totalidad el plan de estudios del tipo medio superior en una institución del Sistema Educativo Nacional o equivalente.
2.      Cubrir los requisitos establecidos en la convocatoria correspondiente.

Perfil de ingreso
Para un óptimo desempeño en la modalidad abierta y a distancia es deseable que el aspirante posea:
·         Capacidad de adaptación al auto-aprendizaje.
·         Iniciativa para la investigación.
·         Habilidad para la comunicación efectiva y el trabajo colaborativo.
·         Organización y alto sentido de compromiso.

Otras características necesarias para cursar el programa educativo de Ingeniería en Desarrollo de Software son:
·         Conocimiento a nivel medio superior de ciencias básicas: Matemáticas y Física.
·         Pensamiento lógico, analítico, crítico y reflexivo.
·         Marcado interés por el desarrollo de software empleando tecnologías emergentes en las áreas de lenguajes de programación, Bases de Datos e ingeniería del software.

Perfil de egreso
El egresado de Ingeniería en Desarrollo de Software es un profesionista con amplia visión para desarrollar soluciones de software aplicando los procesos, modelos, estándares y herramientas de calidad de la industria del software; calificado para planear, diseñar, evaluar, controlar, instalar, integrar, construir, operar, administrar y mantener soluciones innovadoras en aplicaciones de la Tecnología de Información y de Software en sus diversos entornos y dispositivos electrónicos, logrando el máximo aprovechamiento de los recursos en las diferentes organizaciones públicas o privadas.

Requisitos de titulación
1.      Haber cubierto el 100% de créditos previstos en el plan de estudios vigente al momento de la solicitud correspondiente.
2.      Cumplir con los lineamientos normativos previstos para la titulación.