Hola y bienvenido de nuevo.
En esta conferencia, quiero para hablar sobre otros temas
que puede estudiar.
Básicamente estamos terminando la clase.
Lo estamos cerrando.
Y entonces no conseguimos para cubrir todo.
Obviamente, es una clase para principiantes.
Así que hay muchos temas que puedes estudiar más a fondo
para que c realmente se convierta en impresionante en la programación de c, y solo quería
mencionar un par de ellos.
Primero que nada, no lo hicimos entrar en typedefs.
Me hubiera gustado tener hablé de eso, pero es
un concepto más avanzado.
Hablamos de enumeraciones.
Y enum es una forma de creando su propio tipo.
Pero específicamente en c, hay una palabra clave llamada typedef y puede crear sus
propios tipos de datos.
Esto es muy útil, más de un concepto avanzado.
Definitivamente podrías aprender más sobre eso.
Hay mucha más información sobre preprocesador sobre el que puede
aprender, específicamente la concatenación de cadenas.
El preprocesador recuerda que se ejecuta antes del compilador.
Aprendimos sobre el declaración definida.
Aprendimos sobre un par de otras cosas. aquí y allá, pero el
preprocesador puede ser una sección completamente diferente con mucha más información al respecto.
Puedes usarlo básicamente para Optimice gran parte de su código, para que pueda
ejecutarlo de antemano.
Puedes hacer funciones en línea que se ejecutan en el preprocesador, todo
un montón de buenos conceptos.
Hay mucho más sobre las estrellas del vacío.
Estrellas vacías, recuerda mucha flexibilidad.
En particular, el malloc La función devuelve una estrella vacía.
Podríamos crear funciones que se anulan punteros y pase los punteros vacíos
para hacerlo más flexible.
Hay mucho mas podemos estudiar sobre eso.
Bibliotecas estáticas y objetos compartidos.
No hablamos de esto concepto de biblioteca.
Usamos bibliotecas cuando enlazamos.
Específicamente, muchos de los las bibliotecas
se definen en las bibliotecas estándar de c.
Pero puedes crear tus propias bibliotecas.
Creamos programas.
Los programas son procesos que se ejecutan en la memoria.
Pero las bibliotecas son en realidad otro código que puede reutilizar en otros programas.
Por ejemplo, la biblioteca estándar c.
Si ha programado en otro idiomas, por lo general, son API que
vienen con el idioma.
Hay dos tipos de bibliotecas que puede crear.
Puedes crear una estática biblioteca donde compila todo
ese código cuando enlaza.
Y luego también puede crear un objeto donde durante la ejecución
del programa, vas a buscar funciones e invocarlas.
Entonces, las bibliotecas estáticas generalmente terminan en un punto a y
se compilan en tiempo estático o se compilan en cuando compila el programa.
Los objetos compartidos son archivos de puntos o también puedes pensar en ellos como
dlls si has he oído hablar de bibliotecas de enlaces
dinámicos y visual c plus plus.
Pero los objetos compartidos no son tiempo de compilación.
Nuevamente, es una forma de reutilizar el código.
Podríamos estudiar estos conceptos y yo podría mostrarle cómo crear bibliotecas
estáticas y objetos compartidos.
Macros.
No tuvimos la oportunidad hablar de una macro.
Este es un tema avanzado.
Esto lo ejecuta el preprocesador. para hacer principalmente sustitución, sustitución
de cadenas.
Algunas de las funciones que estudiados se escriben en realidad
como macros, como la macro de aserción.
Las macros se pueden explorar con mucho más detalle.
Sindicatos.
Los sindicatos normalmente ir junto con las estructuras.
Es una forma de tener múltiples tipos de datos devueltos o diferentes tipos de elementos
miembros dentro de un estructura que representan lo mismo.
Entonces podrías tener una estructura que tiene un miembro, pero ese miembro puede
entrar en un flotador y usarías union para hacer eso.
Otros temas punteros de función.
Hablamos de carácter punteros principalmente, e incluso punteros enteros
y punteros dobles.
Pero puedes tener sugerencias que apuntan a varias funciones.
Entonces, mientras su programa se está ejecutando, puede ejecutar una función.
Y luego, la próxima vez que se ejecute, podría ejecutar una función diferente
basada en la entrada del usuario o algo así.
Los punteros de función son un tema completamente diferente.
Punteros avanzados.
Hay mucho más para los punteros de lo que hemos discutido.
Discutimos los conceptos básicos de punteros, pero podríamos hablar de
punteros con mucho más detalle.
Hay punteros reales para punteros, por lo que hay dobles punteros, y ese es
un tema principal más avanzado.
Argumentos variables para funciones.
Estos se refieren a como funciones variatic.
Usamos la función printf que tiene un
número variable de argumentos, pero no definimos cualquier función que tengamos un
número variable de argumentos, podríamos explorar ese concepto muy útil.
Vinculación dinámica.
Aquí es cuando abres un biblioteca a la vez y es un poco diferente a
un objeto compartido.
Puedes abrir bibliotecas en tiempo de ejecución y aumenta el rendimiento
y hace que su programas ejecutables más pequeños.
Así que dlm open hay un llamada a la biblioteca para hacer esto.
Señales, bifurcando comunicación entre procesos.
Todo esto se puede explorar entre procesos la comunicación es cuando tienes dos
programas que quieren comunicarse.
Hay diferentes formas que pueden comunicarse.
Pueden comunicarse a través de archivos.
Pueden comunicarse a través de algo llamado enchufe.
Pueden comunicarse mediante el uso de tuberías.
Hay diferentes técnicas allí, pero es cuando dos procesos quieren
hablar entre sí.
Bifurcar es donde puedes crear otro proceso.
Hay bibliotecas para crear otros procesos en su código.
Si tuvieras que crear otro proceso en su
código, tendría su propio espacio de memoria de direcciones y puede hacer que su programa sea un
poco más eficiente.
Y luego las señales, no entramos en muchas, pero las señales se
utilizan para depurar y generar diferentes mensajes a diferentes programas.
Subprocesamiento y concurrencia.
Otro tema avanzado que quieres estudiar.
Esto permite la ejecución múltiple puntos dentro de su programa.
Te permite ejecutar código casi al mismo tiempo.
Así que es una cuestión de eficiencia.
Si tiene una tarea de larga duración que que necesita hacer en su
programa, como monitorear datos o esperar datos o tal vez su tarea es leer un archivo
enorme, puede crear otro hilo para hacer eso y luego aún ejecutar
otras partes de su programa en conjunto al mismo tiempo.
Zócalos.
Los enchufes se utilizan para la creación de redes.
Se utilizarían enchufes si quisieras para conectarse a otra computadora y obtener datos
de esa otra computadora.
La creación de redes es muy grande porque tener internet y todo lo demás.
Para que puedas aprender todo sobre enchufes y ver también.
Hay dos funciones llamado setjump y longjump.
Eso es para restaurar el estado.
Podríamos estudiar aquellos en Buen detalle más sobre gestión de
memoria y fragmentación.
No se trata solo de malloc, sino así es como puede administrar su memoria y ponerla en
el montón o en la pila.
Puede asegurarse de que su programa es un poco más eficiente, por
lo que no tiene tanta fragmentación.
La fragmentación es donde tienes memoria en diferentes ubicaciones, y no
es secuencial, por lo que puede ser más difícil tómese más tiempo para buscar ese recuerdo.
Puede reducir la fragmentación.
Podemos trabajar para hacer programas más portátiles.
En general, los programas c son bastante portátiles.
Pero hay más técnicas que que puede utilizar para asegurarse de que cuando escriba su programa
una vez, se ejecute en muchos sistemas operativos diferentes y no es
necesario volver a escribirlo.
Básicamente podríamos usar algunos de los estándares posix que están
disponibles en c.
Podemos asegurarnos de que dependiendo en qué versión
diferente del estándar c, que trabajar en múltiples estándares mediante el
uso de ciertas convenciones.
También podríamos escribir programas que interactuar directamente con el kernel.
Recuerde, el kernel es el cerebros del sistema operativo.
El kernel contiene todos los controladores.
Contiene todo tipo de llamadas a funciones de memoria de nivel inferior.
Hace mucho información diferente.
Entonces el kernel tiene funcionalidad donde puede interactuar con él
en su programa c.
Esto sería bajo nivel de material incrustado.
Entonces podríamos usar llamadas como controles IO.
Podríamos crear controladores para hablar con el hardware directamente.
Hay mucho más en el compilador. y diferentes banderas
que puede pasar al compilador o el enlazador, que nuevamente hace que su
programa sea más eficiente.
No tuvimos la oportunidad de hablar
mucho sobre muchas banderas diferentes.
Hablamos principalmente sobre el tablero. wall y algunos otros básicos,
pero nada más avanzado.
Hablamos del depurador y cómo depurar aplicaciones.
El depurador en bloques de código fue a través de la interfaz gráfica de usuario.
Pero la verdadera ventaja de un depurador está bajo el capó utiliza gdb.
Gdb es el depurador de GNU.
Y solo hablamos de breakpoints y usarlo a través de la interfaz gráfica de usuario,
pero puede de hecho, haga mucho más con gdb.
Podríamos pasar por el depurador de gdb desde la consola emite diferentes comandos,
haz mucho más con el comprensión del archivo core cómo
leer el archivo core usando gdb, un muchos temas avanzados agradables allí.
Herramientas de perfilado y rastreo.
No pudimos hablar de algunos analizadores estáticos, algunas herramientas que pueden analizar su código
antes que usted ejecute su programa para ver
si hay algún código muerto o si hay cualquier mala práctica de programación.
Y luego herramientas de rastreo también, s trace, d trace, g profile, todas esas son
herramientas importantes que puede use para ver para ayudarlo a depurar y
ayudarlo a medir la eficiencia o cuánta memoria está usando o el
rendimiento de su programa.
Hay otra memoria adicional herramientas de depuración, como valgrind.
Esto ayuda cuando tienes like condiciones de carrera o tiene problemas
de corrupción de memoria.
Muchas veces cuando estás manejando su memoria y tiene desbordamientos de búfer o pérdidas de
memoria, es muy, muy difícil de encontrar esos.
Así que hay herramientas que pueden ayudarlo a encontrar aquellos como valgrind.
Y entonces hay muchas cosas diferentes temas que puede explorar para
convertirse en un experto en c.
Tocamos los conceptos básicos.
Tocamos el realmente, realmente cosas importantes para empezar.
Pero con estos adicionales temas, puede convertirse en un experto.
Gracias.