PDF de programación - AREA 1: Entornos de programación - Curso Linux

Imágen de pdf AREA 1: Entornos de programación - Curso Linux

AREA 1: Entornos de programación - Curso Linuxgráfica de visualizaciones

Publicado el 17 de Diciembre del 2020
538 visualizaciones desde el 17 de Diciembre del 2020
1,6 MB
89 paginas
Creado hace 16a (13/02/2008)
Curso LINUX

AREA 1: Entornos de programación

Entornos de programación

● Unix / Linux dispone de todas las

herramientas necesarias como línea de
comando

● Pero también dispone de entornos

integrados

● Son front-ends a los comandos que ya vimos
● La elección de IDE es un tema importante al

plantear el desarrollo

Elección de un IDE

● Un IDE debe elegirse en base a estos

parámetros:
– Soporte para el lenguaje que utilicemos
– Facilidades para la generación de código
– Facilidades para la integración con el entorno de

versionado

– Compatibilidad con otras herramientas
– Sencillez de uso

IDEs linux (C/C++)

● emacs (si, no es broma)
● Anjuta
● Kdevelop
● Eclipse CDT
● Code Dragon
● Geany
● ... y muchos más

No existe el IDE ideal

● Cada IDE se ha desarrollado inicialmente

para una cosa

● Los IDEs suelen ampliarse para converger
● La evolución propia de cada IDE hace que
sea más o menos atractivo en un momento
dado

● Las constumbres de los programadores

también influyen en la adopción de un IDE u
otro



● Anjuta es un IDE para C/C++ y otros

lenguajes en Linux.

● Se ha desarrollado para Gtk/Gnome
● Incluye facilidades para gestión de proyecto,

wizards y depuración

● Tiene un editor de código con

sourcebrowsing y reconocimiento de
sintaxis.

Anjuta - Versiones

● La versión estable para muchas

distribuciones es la 1.2.X

● Las versiones 2.X aportan muchas

novedades, pero no está incluida en todas
las distribuciones

● El desarrollo es muy activo por lo que se
preven nuevas versiones en poco tiempo.

Anjuta – Nuevo proyecto

Anjuta - Nuevo proyecto (2)

Anjuta – Nuevo Proyecto (3)

Anjuta – Nuevo proyecto (4)

Anjuta – Nuevo proyecto (5)

Anjuta – Nuevo proyecto (6)

Anjuta – Nuevo proyecto (7)

Anjuta - Entorno

Anjuta - Autoconf

● Anjuta se encarga de preparar todo para el

autoconf

~/Projects/HolaMundo$ ls
acconfig.h      config.h.in        HolaMundo.pws  mkinstalldirs
acinclude.m4    config.log         INSTALL        NEWS
aclocal.m4      config.status      install­sh     po
AUTHORS         config.sub         libtool        README
autogen.sh      configure          ltmain.sh      setup­gettext
autom4te.cache  configure.in       Makefile       src
ChangeLog       COPYING            Makefile.am    stamp­h
config.guess    HolaMundo.prj      Makefile.in    stamp­h.in
config.h        HolaMundo.prj.bak  missing        TODO

Anjuta – Class Builder

Anjuta – Visor Simbolos

Anjuta - Compilación

Anjuta - Construcción

Anjuta - Depuración

● Permite puntos de ruptura
● Ejecución paso a paso
● Permite inspeccionar variables y evaluar

expresiones

Anjuta – GTK

● Anjuta dispone de una integración con el

generador de interfaces glade

● El generador es invocado en el momento

que seleccionamos Proyecto ->Editar GUI de
la aplicación



Anjuta – Ejemplo GTK

Anjuta – Ejemplo GTK (2)

Anjuta – Ejemplo GTK (3)

Anjuta – Ejemplo GTK (4)

● Creamos una tabla 2x2

Anjuta – Ejemplo GTK (5)

● Creamos 2 botones, un label y un entry
● BT_OK, BT_EXIT, label y ENTRY
● Propiedad de la ventana homogeneus = si

Anjuta – Ejemplo GTK (6)

● Por cada botón añadimos una señal para

clicked (on_BT_OK_clicked,
on_BT_CANCEL_clicked)

● Guardar
● Construir
● Salir

Anjuta – Ejemplo GTK (7)

● Editar callbacks.c

void
on_BT_CANCEL_clicked (GtkButton       *button,
                      gpointer         user_data)
{

gtk_main_quit();

}

void
on_BT_OK_clicked     (GtkButton       *button,
                      gpointer         user_data)
{

GtkWidget *entry = lookup_widget (GTK_WIDGET(button), "ENTRY"); 
gchar *text1;
text1 = gtk_entry_get_text (GTK_ENTRY(entry)); 
GtkWidget *msgbox = gtk_message_dialog_new(

NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,
GTK_BUTTONS_CLOSE,"Hola %s",text1);

gtk_widget_show_all (msgbox);

}

Anjuta – Ejemplo GTK (8)

● Guardar
● Construir -> Construir todo
● Construir -> Ejecutar

Anjuta - Conclusiones

● Buen editor para C / C++ / GTK
● Integración con glade para interfaces
● Integración con autoconf / autotools
● Integración con CVS
● Depuración integrada
● Asistente para expresiones / funciones /

métodos

● Integración con ayuda devhelp



● Kdevelop es el entorno más completo de

desarrollo genérico de linux

● Surgió en 1998 para crear un entorno de

desarrollo sencillo para KDE

● KDE está basado en QT, por eso Kdevelop

integró primero esas librerías

● Actualmente soporta hasta 12 lenguajes

distintos (inc. C, C++, PHP, Ruby, Java, etc.)

Kdevelop - Versiones

● Versión estable 3.5.0

– KDE >= 3.4, < 4
– Qt >= 3.3, < 4
– 2007-10-16

● Versión en desarrollo 4.0

– KDE >= 4
– QT >= 4
– Sin fecha de lanzamiento

Kdevelop – Nuevo Proyecto

Kdevelop – Nuevo proyecto (2)

Kdevelop – Nuevo proyecto (3)

● Permite elegir el sistema de control de

versiones
– CVS
– SVN
– ...

● Permite elegir plantillas para la construcción

de los archivos fuente

Kdevelop - Entorno

Kdevelop - Autoconf

Kdevelop – Class builder

● Project

– New Class

Kdevelop – Visor clases

Kdevelop - Construcción

● Permite compilar selectivamente
● Indica errores de sintaxis diréctamente sin

compilar

● Permite invocar el configure
● Permite invocar las autotools
● Permite instalar el programa
● Permite generar la documentación (formato

doxygen)

Kdevelop - depuración

● Permite puntos de ruptura
● Permite depuración paso a paso
● Permite añadir watches y evaluar

expresiones

● Permite unirse a un proceso en marcha
● Resultados por ventana del editor
● Inspección de memoria
● Uso de valgrind y Kcachegrid para profiling

Kdevelop - Gráfico

● Para su integración con QT incrusta el QT-

designer como parte de su UI

● Permite crear e importar proyectos gtk
● Pero la integración con glade es muy pobre

(hay que salir del entorno para editar con
glade).

Kdevelop - Ayuda

● Ayuda muy

completa

● Fácil de localizar en

la barra lateral

● Ampliable con más

paquetes

● Permite búsquedas

e incluir marcas

Kdevelop - Conclusiones

● El mejor IDE para desarrollar en KDE
● Un buen editor C/C++ y otros lenguajes
● Buena integración con QT
● Más sistemas de control de versiones
● Integración con autoconf / autotools
● Depuración integrada mejorada
● Integración con profilers
● Ayuda integrada

Eclipse CDT

● Eclipse es un entorno de programación

diseñado en Java

● Permite plugins de todo tipo
● CDT significa C/C++ development tooling
● Consiste en una serie de plugins y editores

para el lenguaje C/C++

● Es multiplataforma (tantas como java) y tiene

una comunidad muy amplia alrededor.

Eclipse CDT - Versiones

● Versión actual 4.0.2

– 30 / 11 / 2007
– Eclipse 3.3
– Parte de eclipse europa

● CDT 3.1

– 15 / 2 /2007
– Eclipse 3.2
– Parte de eclipse callisto

Eclipse CDT – Nuevo proyecto

Eclipse CDT – Nuevo proyecto

Eclipse CDT – Nuevo proyecto

Eclipse CDT – Entorno

Eclipse CDT – Class Builder

Eclipse CDT – Visor de clases

Eclipse CDT – asistente código

Eclipse CDT - Construcción

● No usa autoconf
● Sistema compatible con visual studio o con

makefile

● Permite generar tantas configuraciones

como necesitemos (Debug, Release, etc.)

● Intenta ser portable a más plataformas

Eclipse CDT - Depuración

Eclipse CDT - Ayuda

● Ayuda contextual

● Ayuda externa (configurable)

Eclipse CDT - Conclusiones

● Muy buen entorno multilenguaje
● Editor de código muy depurado
● Multiplataforma
● Pobre integración con autoconf
● Futura integración con QT, actualmente no

se integra con ningún sistema gráfico

Curso LINUX

AREA 1: Multitarea - multihilo

Multitarea

● Multitarea es un método donde varios

procesos comparten recursos del ordenador

● Estrategias de multitarea:

– Multiprogramming
– Tiempo compartido cooperativo
– Tiempo compartido preferente (preemptive)
– Real

Linux Multitasking

● Una tarea en linux puede estar en uno de

estos estados:
– TASK_RUNNING
– TASK_INTERRUPTIBLE
– TASK_UNINTERRUPTIBLE
– TASK_ZOMBIE
– TASK_STOPPED

Transición de estados

CPU disponible

RUNNING

REAL RUNNING

CPU ocupada

Esperando
Recurso

Recurso
Disponible

INTERRUMPIBLE /
NO INTERRUMPIBLE

Partición de tiempo

● En Linux, las “timeslice” suelen ser de 10ms
● Cada timeslice se genera una interrupción

IRQ0

● Se interrumpe la ejecución del proceso en
marcha y se realizan operaciones internas
● El Scheduler (planificador) es el encargado
de decidir que tarea se ejecutará la próxima
vez.

Task Switching

● El intercambio de tareas es necesario

cuando:
– Termina el timeslice y necesitamos dar acceso a

otra tarea

– Cuando una tarea decide acceder a un recurso y

se queda en espera, hay que dar paso a otra

– Cuando una tarea espera en una tubería (pipe)
hay que dar paso a otra que podría escribir en el
pipe.

FORK

● Cuando se necesita crear una tarea nueva,

se utiliza fork

● fork copia todos los datos del proceso padre

con las siguientes diferencias:
– EL PID (identificador de proceso)
– el resultado de la función fork es 0 en el hijo y

PID en el padre

– Las páginas de datos del hijo se copian en solo

lectura

Procesos en linux

● Podemos observar los procesos con el

comando ps

● Podemos ver el estado de ejecución general

de la máquina con el comado top

● Podemos enviar señales a los procesos con

el comando kill

● Si un proceso no puede tratar una señal,
simplemente muere (de ahí el nombrecito)

ps

● ps muestra información sobre los procesos

en ejecución

● ps : muestra solo los procesos del usuario
● ps ax : muestra todos los procesos
● ps axjf : muestra los árboles de proceso
● Existen múltiples opciones (man ps)

ps axu

ps : Códigos de estado

● D Uninterruptible sleep (usually IO)
● R Running or runnable (on run queue)
● S Interruptible sleep (waiting for an event to

complete)

● T Stopped, either by a job control signal or

because it is being traced.

● W paging (not valid since the 2.6.xx kernel)
● X dead (should never be seen)
● Z Defunct ("zom
  • Links de descarga
http://lwp-l.com/pdf18571

Comentarios de: AREA 1: Entornos de programación - Curso Linux (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