PDF de programación - Enseñanza de C++ al estudiante Java

Imágen de pdf Enseñanza de C++ al estudiante Java

Enseñanza de C++ al estudiante Javagráfica de visualizaciones

Actualizado el 18 de Mayo del 2018 (Publicado el 28 de Abril del 2017)
1.386 visualizaciones desde el 28 de Abril del 2017
181,3 KB
6 paginas
Creado hace 11a (18/01/2013)
ENSEÑANZA DE C++ AL ESTUDIANTE JAVA

TEACHING C++ TO THE JAVA STUDENT

Adolfo Di Mare

Escuela de Ciencias de la Computación e Informática, Universidad de Costa Rica

[email protected]



RESUMEN: Se describe como minimizar el impacto de pasar al uso del lenguaje C++ si los estudiantes han
aprendido primero el lenguaje Java. También se discute cómo organizar el segundo cursos de programación.


Palabras Clave: Transición Java C++, Programación, Abstracción, Especificación.


ABSTRACT: We describe how to minimize the impact of changing to using C++ if students have learned the
Java language first. We also discuss how to organize the second programming courses.



KeyWords: C++ to Java transition, Programming Abstraction, Specification.



1. INTRODUCCIÓN

La escogencia de los lenguajes de programación
usados en las carreras de computación frecuente-
mente es controversial. Sin embargo, cuando ya se
ha decidido que se usará primero Java y luego
C++, es provechoso contar con un enfoque didácti-
ca que permita hacer la transición al nuevo lengua-
je pues, de lo contrario, hay que usar demasiado
tiempo explicando los detalles sintácticos de C++.
Las ideas aquí expuestas sirven para mitigar el
impacto del cambio de lenguaje.



2. ESPECIFICACIÓN Y REUTILIZACIÓN

En algunas carreras los cursos de programación se
limitan a entrenar a los estudiantes en el uso de un
lenguaje. Por ejemplo, si se ha decidido que los
alumnos deben aprender Python, Java, C++ y PHP
la estrategia es usar un curso para cada lenguaje.
Esto aumenta el menú de lenguajes pero requiere
muchos cursos, y siempre existe el peligro de que
algunos conceptos teóricos de programación no
sean cubiertos.

En la Universidad de Costa Rica [UCR] hemos
optado por una estrategia diferente, que además
usa menos cursos: enseñamos los principios de
programación en el primer curso y para el segundo
nos concentramos en la especificación y reutiliza-
ción de módulos y programas. Posteriormente en la
carrera hay otros cursos especializados en diferen-
tes paradigmas de programación, incluyendo pro-
gramación lógica, programación concurrente, pro-
gramación internet, etc. Muchas veces los estu-

diantes aprenden lenguajes solos, sobre la marcha,
cuando tienen que producir soluciones para tareas
o proyectos en cursos posteriores.

Primero por tradición, y luego por escogencia, en la
UCR hemos usado en el segundo curso de progra-
mación el libro de Abstracción y Especificación
escrito por Liskov y Gutag [1] (cuya primera edición
obtuvimos, paradójicamente, cuando uno de nues-
tros profesores lo rescató del basurero en una visita
que hizo a otra universidad). Aunque este libro está
escrito para Java, como fundamente teórico se
puede usar también para C++ si se adopta nuestra
estrategia de usar el segundo curso de programa-
ción para que los alumnos comprendan cómo es-
pecificar módulos para reutilizarlos. Estas 3 pala-
bras son fundamentales en la construcción de pro-
gramas y por eso es necesario definirlas [2]:

Módulo

Sección de un programa bien construida, con un
fin específico, y que puede ser reutilizado.

Especificación

La especificación puede verse como un contrato
en el que están definidos todos los servicios que
la implementación del módulo es capaz de dar.
Toda especificación debe tener estas tres cuali-
dades: debe ser completa (debe decirse todo lo
que hay que decir), debe ser correcta (debe omi-
tirse lo que no hay que decir) y no puede ser
ambigua.

Reutilización

Reutilizar significa no inventar de nuevo la rue-
da, aprovechando lo que otros hicieron para
construir nuevas soluciones [3].



“XV Congreso Internacional de Informática en la Educación”

Di Mare, A. | ENSEÑANZA DE C++ AL ESTUDIANTE JAVA



Como la reutilización generalmente es “reutilización
de algoritmos” casi siempre es necesario usar ocul-
tamiento de datos al construir programas, para
evitar que la representación interna de cada objeto
pueda ser cambiada por un programador que usa
una biblioteca de clases y algoritmos. Es de gran
importancia que los estudiantes conozcan y apli-
quen este principio de construcción de sistemas [4].

Aunque sí es importante que el graduado universi-
tario desarrolle las destrezas necesarias para apli-
car tecnología, también debe ser formado para que
pueda formar parte de esa minoría selecta o recto-
ra que dirige a otros, pues una de las misiones
primordiales de una universidad es formar a la élite
directora: no basta formar albañiles porque también
se necesitan ingenieros y arquitectos.

El primer curso de programación puede verse co-
mo un curso de albañilería, en que el futuro gra-
duado aprende los fundamentos de computación.
El siguiente paso es el aprendizaje de las teorías y
técnicas necesarias para liderar equipos de pro-
gramación: es necesario que el futuro graduado
aprende a especificar módulos para que pueda
definir el trabajo que otros realizarán.

Siempre es necesario encontrar maneras de cum-
plir con los objetivos de enseñanza – aprendizaje
con mayor eficiencia y eficacia: hacer lo mismo con
menos recursos es una constante en el avance
científico y tecnológico. Desde esta perspectiva, la
escogencia del lenguaje para Programación 2 debe
hacerse en función de las ventajas didácticas res-
pecto a los objetivos del curso. En este contexto,
C++ se destaca sobre los demás lenguajes pues,
además de asegurar que el futuro graduado cono-
cerá los lenguajes más populares, también cono-
cerá un lenguaje que incluye la mayor parte de los
avances tecnológicos en programación.



3. C++ PARA PROGRAMACIÓN 2

C++ incluye un fuerte soporte para parametriza-
ción, herencia y polimorfismo, que son los vehícu-
los principales para lograr la reutilización de algo-
ritmos. Sin reutilización no hay progreso, pues sería
necesario reescribir desde cero todas las aplicacio-
nes, lo que transformaría en prohibitivo el desarro-
llo de programas. Ya están disponibles muchas
bibliotecas C++ eficientes que se pueden usar para
desarrollar aplicaciones prácticamente en cualquier
contexto [5].

Debido a que C++ surgió a partir de C, que es un
lenguaje que algunos consideramos arcaico [6],
contiene muchas complicaciones que no existen en
otros lenguajes. Por eso, en la práctica muchos

proyectos se efectúan usando lenguajes de guiones
de comandos (scripting languages) que permiten
expresar algoritmos de manera sucinta y muy dire-
cta. En muchos contextos, el desarrollo C++ es
más caro, por lo que es fácil argumentar que es
mejor que el futuro graduado en computación
aprenda otros lenguajes que se usan en el mercado
para implementar aplicaciones (por ejemplo: PHP,
Visual Basic, C#, Java, Phyton, Ruby). Sin embar-
go, una persona que conoce C++ puede asimilar
cualquier otro lenguaje con relativa facilidad, mien-
tras que lo contrario no es cierto. La razón principal
para usar C++ no es su popularidad sino su cober-
tura: C++ incorpora la mayor parte de los avances
en programación, sin sacrificar eficiencia [7]. Por
eso en los ambientes universitarios se le usa como
componente didáctico en muchos de los cursos.

Otra de las grandes ventajas de los lenguajes gor-
dos (como C++ o Java), en contraposición a los
simples y directos (lean and mean: PHP, Ruby) es
que sus compiladores proveen el servicio de verifi-
cación de tipos (type checking). Este técnica no es
nueva, pues no había terminada la década de los
años sesenta cuando ya se conocía (pues Pascal y
su predecesor Algol son lenguajes cuyos compila-
dores ofrecían esos servicios a principio de 1970).
Si el compilador verifica concordancia de tipos se
encarga de encontrar errores de interfaz entre
módulos cuando argumentos y parámetros no cal-
zan: así se logra que la máquina haga trabajo que
de otra forma debería ser realizado por los progra-
madores [8], lo que los hace más productivos. Si
los programadores son más productivos el costo
total del proyecto disminuye mucho, pues el costo
de la planilla es uno de los rubros más gruesos en
cualquier proyecto. La tecnología de programación
busca siempre reducir el costo aumentando la pro-
ductividad de todos los programadores.

Existen muchas herramientas que complementan
un ambiente de desarrollo C++. Estas destacan
sobre las demás:

Doxygen

Permite extraer anotaciones del código fuente
para producir la especificación de módulos e in-
terfaces. Tiene la ventaja de que funciona tanto
para C++ como para sus lenguajes derivados:
Java, C#, Objective-C, etc.

http://Doxygen.org

Code::Blocks

Ambiente de programación para C++ multiplata-
forma que puede usar múltiples compiladores,
en especial los de GNU. Existen versiones com-
pactas que pueden ejecutarse desde una memo-
ria USB en máquinas Linux, Windows o MAC.

http://CodeBlocks.org



“XV Congreso Internacional de Informática en la Educación”

Di Mare, A. | ENSEÑANZA DE C++ AL ESTUDIANTE JAVA



Boost

Biblioteca portable de algoritmos C++.

http://Boost.org

FLTK

Biblioteca para escribir interfaces gráficas GUI
(Graphic User Interface) para programas C++.

http://FLTK.org

SQLite

Implementación SQL completa y portátil que
permite incorporar como una subrutina el motor
de base de datos a programas C o C++.

htt
  • Links de descarga
http://lwp-l.com/pdf3255

Comentarios de: Enseñanza de C++ al estudiante Java (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad