Quedó claro que el tema era muy relevante. Se tuvieron en cuenta algunos errores y dudas y, como resultado, se decidió realizar una segunda clase magistral. ¡Agregado y corregido!

Clase magistral de programación en C bajo Linux. Estudiamos la API principal.

Esta clase magistral está destinada a personas que quieran aprender la API *nix de sistemas operativos similares, en particular para Linux. Aquí veremos las características de desarrollo para el sistema operativo Linux, que incluyen:


  • Familiarización con el proceso de creación de software y las características específicas del compilador C de GCC.

  • Desarrollo y uso de bibliotecas compartidas.

  • Programas de depuración

  • Explorando mecanismos de E/S de archivos de bajo nivel

  • Estudio de mecanismos de comunicación multitarea y entre procesos.

  • Uso de sockets de archivos y de red

  • Estudio y Aplicación del Mecanismo de Señal

  • Estudiar procesos, hilos, sus diferencias, utilizar multihilos, estudiar mecanismos de sincronización de hilos y sus problemas.

  • Creando demonios, aprendiendo las diferencias entre demonios y software de aplicación

  • Explorando las características de E/S de la consola

  • Aplicar y utilizar archivos asignados en memoria

Esta clase magistral está destinada principalmente a desarrolladores de software, ingenieros, programadores y simplemente aficionados que estén interesados ​​en el dispositivo y las características específicas del sistema operativo Linux.

Requisitos para los participantes de la clase magistral: Conocimiento del lenguaje C, a nivel de libro B.V. Kernighan, D.M. Richie "IDIOMA C".

El coste de esta clase magistral será de 6.000 rublos.

La sede será Moscú, en las instalaciones del Neuron Haxspace.
Fechas: Aproximadamente del 4 de julio (lunes), al 7 de julio (jueves) de 10 a 17 horas con pausa para el almuerzo y pausas para té/café.

No hay planes para transmisiones en línea.
Número de personas en el grupo: 8-10.

El registro se realiza por correo electrónico [correo electrónico protegido] o en los comentarios de esta publicación. Se requiere su nombre completo para registrarse. (en su totalidad) e información de contacto (número de teléfono y correo electrónico). Es recomendable describir el propósito de asistir a esta master class, nivel de formación y ocupación.

Programa detallado del curso:

Módulo 1. Introducción


  • Familiarización con las particularidades del ensamblaje de software en GNU/Linux.

  • Introducción a los editores de texto de consola (vi, nano, mcedit)

  • Trabajando con el depurador gdb

  • Montaje de software manual y automático (Makefile)

  • Modelo Cliente-Interfaz-Servidor (CIS)

  • Construcción estática de bibliotecas.

  • Bibliotecas compartidas

  • Trabajar con variables de entorno

Módulo 2: E/S de bajo nivel y operaciones de archivos

  • Descripción general de los mecanismos de E/S en Linux (Ubuntu)

  • Descriptores de archivos

  • Llamadas al sistema: abrir, cerrar, escribir, leer y buscar

  • Tipos de archivos

  • Inodos y enlaces duros

  • Permisos de archivos

  • sistema de archivos proc

  • Dos formas de leer el contenido de un directorio

  • Archivos dispersos y los detalles de su uso.

  • Bloquear áreas de un archivo

Módulo 3: Comunicación entre procesos

  • Mecanismos de comunicación entre procesos de Linux (Ubuntu)

  • Tuberías sin nombre

  • Tuberías con nombre

  • Cola de mensajes

  • Memoria compartida

  • Semáforos

Módulo 4: Enchufes

  • Sockets en un espacio de nombres de archivo (sockets UNIX)

  • Par de enchufes

  • Tomas de red

Módulo 5. Señales

  • Introducción a las señales

  • En qué se diferencian las señales de otros mecanismos de comunicación entre procesos

  • Detalles del manejo de señales.

  • Módulo 6: Procesos

  • Procesos de clonación - fork()

  • Reemplazo del proceso en ejecución - exec()

  • Zombis: causas y formas de eliminarlos.

Módulo 7: Corrientes

  • Hilos y procesos

  • Detalles específicos de la creación de aplicaciones multiproceso (multithreading)

  • Terminar un hilo antes de tiempo

Módulo 8. Corrientes (continuación)

  • Crear un controlador de terminación de hilo

  • Sincronizar primitivas

  • Atributos de transmisión

Módulo 9. Demonios (servicios)

  • La diferencia entre un demonio y una utilidad de consola

  • Detalles del desarrollo de demonios.

  • Creando un demonio que usa sockets de red

Módulo 10. E/S de consola

  • Detalles del desarrollo de aplicaciones de consola

  • Prevención de la redirección de salida

  • Gestión de terminales

  • Ocultar la contraseña de un usuario durante la autenticación

  • Control del terminal mediante secuencias ESC

Módulo 11: Memoria mapeada

  • Mostrando un archivo normal

  • compartir un archivo

  • Mapeos privados

  • Otros usos de mmap

Módulo 12. Tarea

  • Detalles del desarrollo de aplicaciones de 64 bits

  • Usando la biblioteca ncurses

Director del curso: Sergey Dolin. Ingeniero electrónico, desarrollador de software Linux (software de aplicación, software de prueba de hardware, controladores). Desarrollador de software para sistemas embebidos. Programador Linux desde 2011. Trabajó en NICEVT OJSC, Concern Systemprom JSC, PROSOFT LLC (en la filial Dolamant).

Muchos programadores principiantes tienen miedo
Programación en Linux: sin simplicidad de Windows
y visibilidad. Sin embargo, también existe para Linux.
muchas ayudas visuales
programación, y no es sólo un clon de Delphi.
Por supuesto, no pueden llegar a ser completos.
reemplazando lo mismo estudio visual, sin embargo bastante
ayudar a acelerar el proceso de desarrollo
programas.

NetBean

Uno de los mejores IDE. Diseñado para
trabajando con Java, puedes usarlo
desarrollar no sólo multiplataforma
Programas Java, pero también aplicaciones web, servicios web y
clientes para ellos, programas J2ME, etc. Tal vez
Funciona en Windows, Linux, MacOS. El IDE es extensible
varios complementos y complementos, que pueden ser
encontrar en el sitio web. Al mismo tiempo, todo es gratis, entonces
come por hayalva! En general, un número indiscutible.
uno.

Diseñador QT/KDevelop

Otro poderoso entorno de desarrollo en
plataforma KDE y Gnome. C++ multiplataforma
las aplicaciones solo salen de viaje. Para
Los programas Qt no comerciales pueden ser
de uso gratuito, existe
para casi todas las distribuciones.

Clon de Visual Basic, y no sólo en diseño,
sino también en las construcciones del lenguaje. Perfecto
herramienta para programadores de VB que quieran
cambiar a Linux. Interfaz sencilla y cómoda.
Acceso a todas las bases de datos principales: MySQL,
PostgreSQL, etc. Funciona en casi todos
distribuciones.

Editor WYSIWYG para crear páginas web. En
Me recuerda mucho al editor Macromedia o todo
el mismo FrontPage. Soporta automático
trabajar con el sitio a través de FTP.

Creación de entornos IDE de Python y Ruby
programar en el lenguaje es bastante simple
y emocionante. Escrito realmente en
Pitón.

Eclipse no es un IDE en absoluto, sino una plataforma completa para
diversas aplicaciones. Al estándar
la entrega incluye complementos adicionales para
Soporte y desarrollo del lenguaje Java (JDT)
complementos para Eclipse (PDE - Entorno de desarrollo de complementos). Para
trabajar con otros idiomas debería ser
complementos especiales instalados - en Eclipse
puede funcionar en casi cualquier
lenguaje de programación accesible. una cosa mas
la ventaja también se aplica a
capacidad de expansión: cantidad gigantesca
utilidades (especialmente para Java) ahora
también disponible como complementos para Eclipse,
por ejemplo Ant, JavaDoc, JUnit, JDepend, Check Style, Subversion.
Entonces no tenemos que rendirnos
su sistema de control de versiones, desde su
programas de control de calidad de código, etc.
La tercera ventaja es que Eclipse es
entorno multiplataforma, es decir
hay versiones para diferentes
sistemas operativos (que no pueden
permitirse el mismo Visual Studio).

JDesarrollador

Plataforma de Oracle: no de código abierto,
sin embargo, sigue siendo gratis. Como se desprende claramente de
los nombres todavía se usan multiplataforma
Java. Utiliza Sun JDK para funcionar, por lo que
Oracle no tiene quejas sobre lo que se está creando
Los programas, en teoría, no lo tendrán.

Y finalmente, el entorno de control visual.
proyectos para el escritorio Gnome. No menos útil
programa para programadores que un IDE.

C es un lenguaje de programación bastante "antiguo"; se formó a principios de los años 70. A pesar de esto, C es un lenguaje vivo en el sentido de que se utiliza activamente en la actualidad. Fue inventado, utilizado y se utiliza para escribir partes importantes del código de programa de sistemas operativos tipo Unix. También se utiliza para escribir utilidades, compiladores y, con menor frecuencia, programas de aplicación. Por eso a C se le llama lenguaje de programación de sistemas.

Su capacidad de supervivencia puede explicarse por el hecho de que los principios operativos de los sistemas operativos son relativamente universales; no están sujetos al progreso y la diversidad que se pueden observar en el entorno del software de escritorio y móvil, y de las aplicaciones web. C no es un lenguaje de muy alto nivel, está más cerca de la arquitectura informática. Como resultado, los programas en C son compactos y rápidos.

C no soporta la programación orientada a objetos. La compatibilidad con programación orientada a objetos se implementa en C++. Aunque este último surgió del lenguaje C, no es una “continuación” del mismo, sino que es un lenguaje separado que se puede aprender sin conocer C. Sin embargo, aprender C es útil antes de conocer a su “hermano pequeño avanzado”, porque La sintaxis de los lenguajes es similar, C no sobrecarga el cerebro de un programador novato con superpoderes y le enseña a comprender la esencia de lo que está sucediendo.

¿C es bueno para iniciarse en la programación por primera vez? Si no estás estudiando en una universidad en una especialidad relacionada con TI, entonces no. C requiere una comprensión de la organización y los principios operativos del hardware, particularmente la memoria. Mucho de esto se hace con punteros, juegan un papel clave; Este tema es bastante difícil de entender y no suele estudiarse en la escuela.

Por supuesto, puedes aprender los conceptos básicos de programación con C sin tener que aprender punteros. Sin embargo, una persona pensará que conoce C sin saber mucho sobre él en esencia. El lenguaje C fue creado por programadores profesionales expertos en hardware para escribir Sistema operativo UNIX. No estaba pensado como un idioma para enseñar a principiantes.

Entornos y compiladores para programación en C.

Si está utilizando una de las distribuciones GNU/Linux, cualquier editor de texto con resaltado de sintaxis servirá; también necesitará GCC y una terminal.

Existen editores para programadores que incluyen varios complementos, incluyendo terminal, navegación por directorios, etc. Por ejemplo, Geany o Atom.

C es un lenguaje de programación compilado. En GNU/Linux, para obtener archivos ejecutables se utiliza GCC, un conjunto de compiladores, incluido un compilador para C. Para obtener un archivo ejecutable a partir de un archivo fuente (normalmente estos archivos tienen la extensión *.c), es necesario ejecutar un comando en la terminal que se parece a esto:

gcc -o hola hola.c

Donde gcc es un comando que inicia un programa que realiza compilación y otras acciones; -o – un modificador que indica que especificamos manualmente el nombre del archivo ejecutable; hola – nombre del archivo ejecutable resultante; hola.c – nombre de archivo con código fuente. Se puede omitir el nombre del archivo ejecutable:

gcc hola.c

En este caso archivo ejecutable tendrá un nombre predeterminado de a.out.

Windows tiene su propio conjunto de compiladores: MinGW. Puede usarse solo, pero está incluido en el entorno de desarrollo simple Dev-C++, que puede ser buena eleccion para aprender a programar en lenguajes C y C++.

Al guardar, seleccione el tipo de archivo "Archivos fuente C (*.c)". El programa se compila y ejecuta presionando la tecla F9. Después de la ejecución, el programa se cierra inmediatamente y no se puede ver el resultado. Para evitar que esto suceda, escriba dos líneas adicionales: #include y obtener(). (Esto puede no ser relevante para más nueva versión Desarrollo-C++.)

"Hola Mundo" en GNU/Linux:

#incluir \norte") ; }

"Hola mundo" en Windows:

#incluir #incluir int main() (printf("Hola mundo \norte") ;

obtener(); ) Por otro lado, hay

gran número

entornos de desarrollo multiplataforma. Por ejemplo, módulo Eclipse + CDT, KDevelop, CLion. Este último es de pago, producido por JetBrains, líder en desarrollo de IDE, pero tiene un período de prueba de 30 días, que puede ser suficiente para la formación. CLion es más conveniente que otros IDE. "Hola mundo" en C Usando el ejemplo

el programa mas simple

De forma predeterminada, la función main() devuelve un tipo de datos int, por lo que no es necesario especificar un tipo de retorno. Sin embargo, en este caso el compilador emite una advertencia.

La función printf() está diseñada para imprimir datos. Su propósito es similar al procedimiento write() lenguaje pascal y funciones print() en Python. La función printf() no salta después de la salida. nueva linea. Por lo tanto, para la transición utilizamos personaje especial, que se denota por la combinación \n. Las expresiones C completas están separadas por punto y coma.

En C, las funciones de E/S no son parte del lenguaje. Por ejemplo, en Python no necesitamos importar ningún módulo para usar las funciones print() y input(). En C, no podemos simplemente llamar a la función printf(), porque C en sí simplemente no lo tiene. Esta función, así como muchas otras, se puede habilitar utilizando el archivo de encabezado stdio.h. Precisamente por eso la línea está escrita al principio del programa. #incluir . Incluir se traduce del inglés como "encender" y stdio es una abreviatura de "entrada-salida estándar".

Los archivos de encabezado (terminan en *.h) normalmente contienen declaraciones de ciertas funciones. Una declaración es simplemente una descripción de una función: qué parámetros toma y qué devuelve. El código de función en sí (definición) no se encuentra en el archivo de encabezado, sino en bibliotecas (otros archivos), que pueden ya estar compilados y ubicados en los directorios del sistema. Antes de compilar un programa, se inicia el preprocesador en lenguaje C, que incluye, entre otras cosas, al principio del archivo del programa el contenido de los archivos de encabezado especificados en él.

Trabajo practico

Comente la primera línea del código HelloWorld. Intente compilar el programa. ¿Pudiste obtener el archivo ejecutable? ¿Qué advertencia dio el compilador?

1 // - comentario de una línea en lenguaje C; /* … */ - comentario multilínea en lenguaje C.

Nombre: Programación en C++ en Linux.

El libro "Programación en C++ en Linux" está dedicado al desarrollo de aplicaciones en C++ en el entorno de desarrollo KDEvelop. El autor del libro da descripción detallada interacciones entre los componentes de la aplicación, cubre los conceptos básicos del trabajo con Qt Designer y analiza los controles de los cuadros de diálogo y las clases para las que están diseñados. El libro enseña el concepto de Documento/Vista, creando elementos de interfaz de aplicación. También se tratan temas como guardar y restaurar información diversa que se muestra en la pantalla, desarrollar editores de texto, organizar tareas múltiples en aplicaciones basadas en procesos interactivos y trabajar con plantillas de clases y funciones. Como conclusión, el autor da recomendaciones útiles para crear un sistema de ayuda para la aplicación desarrollada. El libro está destinado a programadores profesionales.


El libro está dedicado a la creación de aplicaciones escritas en C++ en el entorno de desarrollo KDevelop. Se proporciona una descripción de cómo interactúan los componentes de la aplicación. Consideramos trabajar con la utilidad Qt Designer y describimos los controles principales utilizados en los cuadros de diálogo, así como las clases creadas para trabajar con ellos. Se presenta al lector el concepto de Documento/Vista y aprende cómo crear elementos de interfaz de usuario de aplicaciones. Además, los capítulos individuales cubren las cuestiones de mostrar información diversa en la pantalla, guardarla y restaurarla desde un archivo, crear editores de texto, trabajar con plantillas de clases y funciones y organizar la multitarea en una aplicación basada en procesos interactivos. Finalmente, se brindan recomendaciones para crear un sistema de ayuda para aplicaciones.

Contenido:
Introducción
¿Para quién es este libro?
Estructura del libro
Convenciones adoptadas en este libro.
Requisitos de hardware y software
Capítulo 1 Interacción de los componentes de la aplicación.
Señales y receptores
Enviando señales
Implementación de receptores.
Implementación de la conexión.
Manejo de eventos
Trabajando con una ventana
Trabajar con foco de entrada
Trabajando con el ratón
Usando el teclado
Implementando arrastrar y soltar
Filtros de eventos
Eventos sintéticos
Secuencia de procesamiento de eventos
Conclusión
Capítulo 2 Cuadros de diálogo y controles básicos.
Crear una aplicación conversacional
Crear una aplicación de plantilla
Crear un cuadro de diálogo preestablecido
Completando la creación de la aplicación conversacional.
creación de especializados cuadros de diálogo
Crear un cuadro de diálogo con pestañas
Creando un asistente
Capítulo 3 Clases de control
clase de lista
Clases de regulador lineal e indicador lineal.
Trabajar con fecha y hora
Capítulo 4 Clases de aplicación, documento y visualización
Aplicación Qt de ventanas múltiples
Clase de documento
clase de presentacion
clase de aplicación
Aplicación multiventana de KDE
Clase de documento
clase de presentacion
clase de aplicación
Capítulo 5 Crear elementos de la interfaz de usuario
Interfaz de usuario de la biblioteca Qt
Realizar cambios en el menú
Trabajar con la barra de estado
Interfaz de usuario de aplicaciones KDE
Realizar cambios en el menú
Personalizando la barra de herramientas
Trabajar con la barra de estado
Capítulo 6 Mostrar información en la pantalla
dibujar figuras
Trabajando con un cepillo
Redibujando una ventana
Sincronizar objetos de vista
Salida de texto
Trabajar con mapas de bits
Mapas de bits dependientes del dispositivo
Imágenes de bits independientes del hardware
Capítulo 1 Trabajar con archivos de documentos
Guardar y restaurar información en la aplicación.
Personalización de cuadros de diálogo
Realizar cambios en el menú
Configuración del directorio de trabajo
Capítulo 8 Trabajar con documentos de texto
Creando un editor de texto simple
Creando un editor más complejo
Creando el editor KDE
Capítulo 9 Plantillas y clases de colección
Plantillas
Concepto de plantilla
Plantillas de funciones
Plantillas de clase
Clases de colección
Tipos de clases de colección
matrices
Listas enlazadas
Mapas
Otras clases de colección
Capítulo 10 Implementación de multitarea en una aplicación
Interacción de proceso
Crear un cliente para un servidor simple
Crear un servidor más complejo
Creando un cliente
Algunas notas
Capítulo 11 Ayuda en la aplicación
Formularios para enviar información de referencia.
Formas de acceder sistema de ayuda
Métodos de presentación de información de referencia.
Formas de envío de información.
Ayuda contextual de programación
Mostrando sugerencias
Mostrar información de ayuda en la barra de estado
Obtener información sobre un elemento específico
interfaz de usuario
Programación de ayuda de comandos
Formato del archivo de ayuda del comando de la aplicación Qt
Creando una aplicación Qt de demostración
Apéndice 1 Contenido del CD
Apéndice 2 Recursos de Internet
Índice de materias


Descarga gratuita libro electrónico en un formato conveniente, mire y lea:
Descargue el libro Programación en C++ en Linux - Nikolay Sekunov - fileskachat.com, descarga rápida y gratuita.

Descargar pdf
Puedes comprar este libro a continuación. mejor precio Con descuento con entrega en toda Rusia.

¡Hola a todos! Este es el primer artículo sobre programación en C, en el que configuraremos un editor de pruebas y aprenderemos un poco sobre la historia del lenguaje C, sus capacidades, ventajas y desventajas.

El lenguaje C cumplió 40 años en 2012. C se convirtió en el fundador de C++, Java, Perl, C#, JavaScript, etc. Es el lenguaje de programación más popular del mundo. C es un lenguaje de programación procedimental. Los archivos de código tienen la extensión .c y los archivos de encabezado .h. En C puedes programar para Linux, Windows, Teléfono Windows, Mac OS, iOS, Android, etc. Cualquier programador debe dominar el lenguaje de programación C. Para convertirse en programador, leer libros y artículos por sí solo no es suficiente. También necesitas practicar. Por lo tanto, revisaremos nuestras lecciones con ejemplos. Si tienes alguna duda, puedes preguntar en los comentarios. Este manual también se puede utilizar Usuarios de Windows y Mac OS. Los usuarios de otros sistemas operativos pueden utilizar, por ejemplo, NetBeans como compilador (NetBeans no sólo soporta C sino también Java, PHP, C++, Python y Ruby).

Ajustes

Para programar, necesitará un editor de texto (gedit) y un compilador (gcc, incluido en Ubuntu). No es necesario configurar el compilador, pero ahora configuraremos el editor de texto.

Abierto Editar -> Ajustes. Marque las siguientes casillas:

  • Mostrar números de línea;
  • Resalte la línea actual;
  • Resalte los corchetes emparejados;
  • También puedes cambiar el tema en la pestaña Fuentes y colores.

Un par de "maquinaciones" con gedit harán que sea más fácil trabajar con editor de texto. Y en el futuro veremos algún tipo de IDE (entorno de desarrollo de integración).