Saltar al contenido principal
Principios de Programación

Principios de Programación

Chacon Sartori,Camilo

¿Cuáles son los principios subyacentes a toda herramienta en programación? Si quiere conocer los ocho principios, técnicos y conductuales, que dan respuesta a esta pregunta, ha llegado al libro indicado. En una época donde cada día surgen nuevas tecnologías, el beneficio de conocer conceptos transversales a todas ellas no solo es imprescindible, sino también necesario. Además, ...

Editorial:
Marcombo
Año de edición:
2023
Materia:
Programación
ISBN:
978-84-267-3682-6
Páginas:
556
Encuadernación:
Rústica
Colección:
INFORMATICA
33,80 €
IVA incluido
Añadir a favoritos

Sinopsis

¿Cuáles son los principios subyacentes a toda herramienta en programación? Si quiere conocer los ocho principios, técnicos y conductuales, que dan respuesta a esta pregunta, ha llegado al libro indicado. En una época donde cada día surgen nuevas tecnologías, el beneficio de conocer conceptos transversales a todas ellas no solo es imprescindible, sino también necesario. Además, con la llegada de sofisticadas aplicaciones de inteligencia artificial, la pregunta ya no reside en qué herramienta aprender, sino en qué tienen en común para poder integrarlas. Gracias a la lectura de este libro, descubrirá los cinco tomos que lo componen y que dan soporte a la nueva forma de entender la programación. ' Tomo I: Aprenderá los fundamentos básicos de las matemáticas y de la programación. ' Tomo II: Conocerá los principios de programación. ' Tomo III: Dispondrá de una introducción histórica y práctica a los diversos sistemas de la computación, como los lenguajes de programación, los sistemas operativos, las bases de datos, los sistemas distribuidos y la inteligencia artificial. ' Tomo IV: Analizará el diálogo que presenta

Índice

ÍNDICE DE CONTENIDOS
NOTA AL LECTOR ..................................................................................... 21
AGRADECIMIENTOS ................................................................................. 23
INTRODUCCIÓN ........................................................................................ 25
MAPA DE LECTURA .................................................................................. 31
TOMO I ? FUNDAMENTOS........................................................................ 33
CAPÍTULO 1 LOS FUNDAMENTOS MATEMÁTICOS .................................. 39
1.1. INTRODUCCIÓN............................................................................................................................. 39
1.2. LÓGICA ........................................................................................................................................... 42
1.2.1. Lógica proposicional ................................................................................................... 42
1.3. CONJUNTOS ................................................................................................................................... 55
1.3.1. Notación ........................................................................................................................... 56
1.3.2. Subconjunto .................................................................................................................... 57
1.4. CONCLUSIÓN ................................................................................................................................. 58
1.4.1. Lecturas sugeridas ....................................................................................................... 59
CAPÍTULO 2 CONCEPTOS ELEMENTALES ............................................... 61
2.1. INTRODUCCIÓN............................................................................................................................. 61
2.2. SECUENCIALES .............................................................................................................................. 62
2.2.1. Variables .......................................................................................................................... 62
2.2.2. Condicional ..................................................................................................................... 73
2.2.3. Descomposición de conectivas ................................................................................ 76
2.2.4. Bucle .................................................................................................................................. 80
2.3. FUNCIONALES ............................................................................................................................... 87
2.3.1. Función ............................................................................................................................. 87
2.3.2. Recursión ......................................................................................................................... 96
2.4. SECUENCIAL VS. RECURSIVIDAD ............................................................................................. 104
2.5. CONCLUSIÓN .............................................................................................................................. 106
CAPÍTULO 3 ALGORITMOS Y ESTRUCTURAS DE DATOS ..................... 107
3.1. INTRODUCCIÓN.......................................................................................................................... 107
3.2. ALGORITMOS COMO TECNOLOGÍA .......................................................................................... 108
3.2.1. Análisis de algoritmos ..............................................................................................109
3.2.2. Clasificación ..................................................................................................................110
3.3. ESTRUCTURAS DE DATOS COMO COMPLEMENTO ................................................................. 119
3.3.1. Arreglos ..........................................................................................................................119
3.3.2. Listas enlazadas ..........................................................................................................122
3.4. OTRAS ......................................................................................................................................... 125
3.5. CONCLUSIÓN .............................................................................................................................. 125
CAPÍTULO 4 PENSAMIENTO COMPUTACIONAL .................................... 127
4.1. INTRODUCCIÓN.......................................................................................................................... 127
4.2. ORIGEN ....................................................................................................................................... 129
4.3. LOS CINCO ASPECTOS BÁSICOS DEL PENSAMIENTO COMPUTACIONAL .............................. 131
4.3.1. Modularidad .................................................................................................................131
4.3.2. Estructura de datos ...................................................................................................133
4.3.3. Encapsulación ..............................................................................................................134
4.3.4. Estructuras de control ..............................................................................................135
4.3.5. Recursión .......................................................................................................................137
4.4. OTROS GRUPOS DE CONCEPTOS DEL PENSAMIENTO COMPUTACIONAL ............................ 139
4.5. CONCLUSIÓN .............................................................................................................................. 139
4.5.1. Lecturas sugeridas .....................................................................................................139
TOMO II ? PRINCIPIOS ............................................................................ 141
PRINCIPIOS TÉCNICOS ........................................................................... 151
CAPÍTULO 1 DISEÑO .............................................................................. 155
1.1. INTRODUCCIÓN .................................................................................................................... 155
1.2. LOS PRERREQUISITOS DE UN DISEÑO ............................................................................... 156
1.2.1. Objetivo del diseño de software ............................................................................157
1.3. CONCEPTOS GENERALES ..................................................................................................... 160
1.3.1. Descomposición y composición .............................................................................160
1.3.2. Refactorización ...........................................................................................................172
1.3.3. Patrones de diseño .....................................................................................................178
1.4. COMUNICACIÓN ENTRE PERSONAS ................................................................................... 187
1.4.1. Diseño e implementación ........................................................................................188
1.4.2. Lenguajes de modelado ............................................................................................190
1.4.3. El futuro del diseño de software ...........................................................................192
1.5. CONCLUSIÓN......................................................................................................................... 194
1.5.1. Lecturas sugeridas .....................................................................................................194
CAPÍTULO 2 ESTADO ............................................................................. 197
2.1. INTRODUCCIÓN .................................................................................................................... 197
2.2. ASIGNACIÓN ......................................................................................................................... 198
2.2.1. Flujo de estados ...........................................................................................................201
2.2.2. Lenguaje ensamblador .............................................................................................202
2.3. ORDEN Y TIEMPO ................................................................................................................. 217
2.3.1. Autómata finito (determinista y no-determinista) .......................................217
2.3.2. Autómata celular ........................................................................................................223
2.4. CONCLUSIÓN ........................................................................................................................ 227
2.4.1. Lecturas sugeridas .....................................................................................................227
CAPÍTULO 3 RECURSO ........................................................................... 229
3.1. INTRODUCCIÓN ..................................................................................................................... 229
3.2. COMPLEJIDAD ALGORÍTMICA .............................................................................................. 230
3.2.1. Lineal ...............................................................................................................................233
3.2.2. Cuadrática .....................................................................................................................236
3.2.3. Exponencial...................................................................................................................237
3.2.4. Logarítmica ..................................................................................................................239
3.3. LIMITACIONES ....................................................................................................................... 240
3.4. AVANCES DEL HARDWARE .................................................................................................. 242
3.5. MÉTRICAS .............................................................................................................................. 243
3.5.1. Particulares ..................................................................................................................244
3.5.2. Generales .......................................................................................................................245
3.6. CONCLUSIÓN .......................................................................................................................... 246
3.6.1. Lecturas sugeridas .....................................................................................................247
CAPÍTULO 4 COORDINACIÓN................................................................. 249
4.1. INTRODUCCIÓN ..................................................................................................................... 249
4.2. COMUNICACIÓN: ORDEN Y TIEMPO .................................................................................... 251
4.2.1. Exclusión mutua..........................................................................................................251
4.3. CONCURRENCIA Y PARALELISMO ........................................................................................ 255
4.3.1. Ley de Amdahl..............................................................................................................257
4.3.2. ¿Cuándo paralelizar? ................................................................................................258
4.3.3. GPU ...................................................................................................................................259
4.4. COMPUTACIÓN DISTRIBUIDA .............................................................................................. 259
4.4.1. MapReduce ....................................................................................................................260
4.4.2. Paso de mensajes ........................................................................................................261
4.4.3. Llamada a procedimiento remoto .......................................................................262
4.5. CONCLUSIÓN .......................................................................................................................... 263
4.5.1. Lecturas sugeridas .....................................................................................................264
CAPÍTULO 5 TRANSFORMACIÓN ........................................................... 265
5.1. INTRODUCCIÓN ..................................................................................................................... 265
5.2. REPRESENTACIONES ............................................................................................................ 269
5.2.1. Funciones .......................................................................................................................269
5.2.2. Formato de fichero.....................................................................................................272
5.2.3. Sistema de numeración ............................................................................................278
5.2.4. Serialización .................................................................................................................280
5.2.5. Computación reversible ...........................................................................................286
5.3. OTROS TIPOS DE TRANSFORMACIONES ............................................................................. 287
5.4. CONCLUSIÓN .......................................................................................................................... 288
5.4.1. Lecturas sugeridas .....................................................................................................289
PRINCIPIOS CONDUCTUALES ................................................................... 291
CAPÍTULO 6 DOCUMENTACIÓN ............................................................. 293
6.1. INTRODUCCIÓN ..................................................................................................................... 293
6.2. ¿DOCUMENTA, POR FAVOR?................................................................................................ 294
6.3. LOS PROBLEMAS DE DOCUMENTAR UN SOFTWARE ......................................................... 296
6.4. ESTRATEGIAS PARA DOCUMENTAR .................................................................................... 298
6.4.1. El código como documentación ............................................................................298
6.4.2. Documentación viva ..................................................................................................306
6.5. CONCLUSIÓN .......................................................................................................................... 307
6.5.1. Lecturas sugeridas .....................................................................................................308
CAPÍTULO 7 EVALUACIÓN ...................................................................... 309
7.1. INTRODUCCIÓN ..................................................................................................................... 309
7.2. PRUEBAS DINÁMICAS ........................................................................................................... 310
7.2.1. Funcionales ...................................................................................................................311
7.2.2. No funcionales .............................................................................................................312
7.3. PRUEBAS ESTÁTICAS ............................................................................................................ 316
7.3.1. Inspección de los requerimientos de software ................................................317
7.3.2. Análisis estático...........................................................................................................318
7.4. REPLICACIÓN Y CONTRASTACIÓN ....................................................................................... 322
7.4.1. ¿Cómo replicar? ...........................................................................................................323
7.4.2. ¿Cómo contrastar? .....................................................................................................324
7.5. CONCLUSIÓN .......................................................................................................................... 325
7.5.1. Lecturas sugeridas .....................................................................................................326
CAPÍTULO 8 ETHOS ................................................................................ 327
8.1. INTRODUCCIÓN ..................................................................................................................... 327
8.2. LA RESPONSABILIDAD FRENTE A LA INTELIGENCIA ARTIFICIAL ................................... 328
8.2.1. IA y robótica .................................................................................................................329
8.2.2. IA y sexualidad .............................................................................................................329
8.2.3. Principio ético ..............................................................................................................330
8.3. ¿UN PROGRAMADOR TIENE RESPONSABILIDAD? ............................................................. 331
8.4. ¿QUÉ ES SER UN BUEN PROGRAMADOR? ........................................................................... 332
8.4.1. Moralidad y programación ....................................................................................332
8.5. CONCLUSIÓN .......................................................................................................................... 334
8.5.1. Lecturas sugeridas .....................................................................................................334
TOMO III ? SISTEMAS ............................................................................ 335
CAPÍTULO 1 LENGUAJES DE PROGRAMACIÓN ..................................... 341
1.1. INTRODUCCIÓN ........................................................................................................................ 341
1.2. BREVE HISTORIA ..................................................................................................................... 344
1.3. COMPONENTES DE UN LENGUAJE DE PROGRAMACIÓN ...................................................... 350
1.3.1. Sintaxis ........................................................................................................................... 350
1.3.2. Semántica ......................................................................................................................351
1.4. CATEGORÍAS DE LENGUAJES .................................................................................................. 352
1.4.1. Generales........................................................................................................................352
1.4.2. Dominio específico .....................................................................................................353
1.5. ESTILOS DE LENGUAJES .......................................................................................................... 354
1.5.1. Funcional .......................................................................................................................354
1.5.2. Imperativo .....................................................................................................................356
1.5.3. Orientado a objeto .....................................................................................................356
1.5.4. Otros ................................................................................................................................357
1.6. DISEÑO E IMPLEMENTACIÓN ................................................................................................. 360
1.7. FUTURO .................................................................................................................................... 363
1.8. CONCLUSIÓN ............................................................................................................................ 365
1.8.1. Lecturas recomendadas ...........................................................................................365
CAPÍTULO 2 SISTEMAS OPERATIVOS ................................................... 367
2.1. INTRODUCCIÓN ........................................................................................................................ 367
2.2. BREVE HISTORIA ..................................................................................................................... 368
2.3. CONCEPTOS FUNDAMENTALES ............................................................................................. 377
2.3.1. Virtualización ..............................................................................................................377
2.3.2. Concurrencia ................................................................................................................381
2.3.3. Persistencia ...................................................................................................................384
2.4. FUTURO .................................................................................................................................... 386
2.5. CONCLUSIÓN ............................................................................................................................ 387
2.5.1. Lecturas recomendadas ...........................................................................................387
CAPÍTULO 3 BASE DE DATOS ................................................................ 389
3.1. INTRODUCCIÓN ........................................................................................................................ 389
3.2. BREVE HISTORIA ..................................................................................................................... 391
3.3. BASES DE DATOS RELACIONALES .......................................................................................... 395
3.3.1. Modelo relacional .......................................................................................................397
3.4. BASES DE DATOS NO RELACIONALES (NOSQL) ................................................................. 400
3.4.1. Documentos ..................................................................................................................401
3.4.2. Clave-valor ....................................................................................................................401
3.4.3. Grafos ..............................................................................................................................402
3.4.4. Vectores ..........................................................................................................................402
3.5. FUTURO .................................................................................................................................... 402
3.6. CONCLUSIÓN ............................................................................................................................ 404
3.6.1. Lecturas recomendadas ...........................................................................................404
CAPÍTULO 4 SISTEMAS DISTRIBUIDOS ................................................. 405
4.1. INTRODUCCIÓN ........................................................................................................................ 405
4.2. BREVE HISTORIA ..................................................................................................................... 406
4.3. ARQUITECTURAS DE COMPUTACIÓN DISTRIBUIDA ............................................................ 410
4.3.1. Basada en capas ..........................................................................................................410
4.3.2. Orientada a servicios .................................................................................................412
4.3.3. Publicador-suscriptor ...............................................................................................413
4.4. CARACTERÍSTICAS ................................................................................................................... 414
4.4.1. Procesos ..........................................................................................................................415
4.4.2. Comunicación ...............................................................................................................416
4.4.3. Coordinación ................................................................................................................421
4.4.4. Consistencia y replicación .......................................................................................421
4.4.5. Tolerancia a fallas ......................................................................................................422
4.4.6. Seguridad .......................................................................................................................422
4.5. FUTURO .................................................................................................................................... 423
4.6. CONCLUSIÓN ............................................................................................................................ 424
4.6.1. Lecturas recomendadas ...........................................................................................424
CAPÍTULO 5 INTELIGENCIA ARTIFICIAL ................................................. 425
5.1. INTRODUCCIÓN ........................................................................................................................ 425
5.2. UNA BREVE HISTORIA ............................................................................................................. 426
5.3. ENFOQUE SIMBÓLICO.............................................................................................................. 442
5.4. ENFOQUE PROBABILISTA ....................................................................................................... 443
5.4.1. Aprendizaje automático (Machine Learning) .................................................443
5.4.2. Aprendizaje profundo (Deep Learning).............................................................444
5.5. FUTURO .................................................................................................................................... 446
5.6. CONCLUSIÓN ............................................................................................................................ 447
5.6.1. Lecturas recomendadas ...........................................................................................447
TOMO IV ? SOMOS HUMANOS .............................................................. 449
CAPÍTULO 1 BUENAS PRÁCTICAS ......................................................... 455
CAPÍTULO 2 INGENIERÍA DE SOFTWARE ............................................... 461
CAPÍTULO 3 TIPOS DE SOFTWARE ........................................................ 467
TOMO V ? BUENA VIDA .......................................................................... 473
CAPÍTULO 1 APRENDIZAJE DE PROGRAMACIÓN ................................. 477
1.1. INTRODUCCIÓN ........................................................................................................................ 477
1.2. HERRAMIENTAS ...................................................................................................................... 478
1.2.1. El terminal es su mejor amigo ...............................................................................478
1.2.2. La importancia de depurar ....................................................................................481
1.2.3. Cuando el control de versiones es útil ................................................................482
1.2.4. Manipular texto...........................................................................................................485
1.2.5. Reinventar la rueda ...................................................................................................487
1.2.6. Use generadores de código .....................................................................................489
1.3. BUENAS PRÁCTICAS ................................................................................................................. 490
1.3.1. Sobre leer código ........................................................................................................491
1.3.2. Cree una historia de su código ..............................................................................492
1.3.3. Sobre escribir código .................................................................................................494
1.4. AVANZAR EN SU CARRERA ..................................................................................................... 495
1.4.1. Averigüe qué tipo de programador es ................................................................495
1.4.2. Cuando enseñar también significa aprender...................................................501
1.4.3. Construya una comunidad ......................................................................................504
1.5. FILOSÓFICOS ............................................................................................................................ 510
1.5.1. Pensar antes de programar ....................................................................................510
1.5.2. Cuide sus palabras .....................................................................................................513
1.5.3. Sea analítico .................................................................................................................514
1.5.4. Procure ser un generalista ......................................................................................515
1.6. CONCLUSIÓN ............................................................................................................................ 518
1.6.1. Lecturas sugeridas .....................................................................................................518
CAPÍTULO 2 VIDA PERSONAL ................................................................ 521
2.1. INTRODUCCIÓN ........................................................................................................................ 521
2.2. CIENCIAS ................................................................................................................................... 522
2.2.1. La programación no son matemáticas, ¡pero estas ayudan! ....................522
2.2.2. Las ciencias como un faro en la oscuridad .......................................................523
2.3. ARTES Y HUMANIDADES ......................................................................................................... 525
2.3.1. La música y la programación ................................................................................526
2.3.2. Dibujo como inspiración ........................

Artículos relacionados

Comprender los Algoritmos

Comprender los Algoritmos

Y. Bhargava, Aditya

Los algoritmos que utilizas con más frecuencia ya han sido descubiertos, probados y comprobados. La segunda actualización de Comprender los algoritmos hace que sea muy fácil aprenderlos, comprenderlos y usarlos. Con explicaciones maravillosamente sencillas, más de 400 ilustraciones divertidas y docenas de ejemplos relevantes, aprenderás a desbloquear el poder de los algoritmos ...

✅ Disponible

36,95 €

Micropython en Proyectos. Una Introducción Práctica a la Programación de Microco

Micropython en Proyectos. Una Introducción Práctica a la Programación de Microco

Padin Romero, Beatriz / Dapena Janeiro, Ad / Padín Romero, Beatriz / Dapena Janeiro, Adriana

Desarrolle proyectos en MicroPython paso a paso Vivimos rodeados de microcontroladores. Estos pequeños ordenadores, programados para realizar tareas concretas, son la pieza central de muchos de los dispositivos electrónicos con los que interactuamos a diario: electrodomésticos, automóviles, sistemas de monitorización y control? Sin embargo, a pesar de su ubicuidad, su funciona...

✅ Disponible

22,80 €

Python Black Hat. Programación para Hackers y Pentesters

Python Black Hat. Programación para Hackers y Pentesters

Arnold, Tim / Seitz, Justin

Cuando se trata de crear herramientas de hackeo potentes y eficaces, Python es el lenguaje elegido por la mayoría de los analistas de seguridad. En este libro explorarás el lado más oscuro de las capacidades de Python: todo, desde escribir sniffers de red, robar credenciales de correo electrónico y acceder a directorios y carpetas por la fuerza hasta crear fuzzers de mutación, ...

✅ Disponible

32,95 €

Guía de Programación en C/C++

Guía de Programación en C/C++

Lopez, Eliezer

Medio siglo después, C y C++ son los lenguajes más eficientes de la historia y el fundamento de gran parte de la tecnología que utilizamos a diario. Creados por y para programadores, se siguen enseñando en miles de centros educativos y ofrecen multitud de ventajas a empresas relevantes en multitud de sectores.C y C++ están presentes en una amplia variedad de sectores gracias a ...

✅ Disponible

29,95 €

Curso Práctico con Unity 3D

Curso Práctico con Unity 3D

Cantón Nadales, David

El primer libro en español que guía el desarrollo de videojuegos con Unity, desde los fundamentos hasta la creación de builds ejecutables.Dirigido a principiantes y desarrolladores con experiencia, este libro te acompaña paso a paso, desde el uso del Unity Editor hasta la creación de videojuegos completos y optimizados. Aprenderás a manipular GameObjects, programar en C# y Visu...

✅ Disponible

29,95 €

Curso de Programacion con Rust

Curso de Programacion con Rust

Lopez, Eliezer

El lenguaje de programación Rust ha ganado popularidad en los últimos años debido a su enfoque en la seguridad y el rendimiento, y se ha convertido en una excelente opción para el desarrollo de aplicaciones críticas y sistemas de alto rendimiento. Con una comunidad en constante crecimiento y el respaldo de importantes empresas, Rust constituye una herramienta poderosa para desa...

✅ Disponible

30,95 €