Introducción a la programación

¿Qué aprenderemos?

  • Lenguaje de programación
  • Compiladores e intérpretes
  • Editores de texto
  • IDE
  • Tipos de lenguajes de programación
  • Historia de los lenguajes de programación
  • Popularidad de los lenguajes de programación

Lenguajes de programación

¿Como nos comunicamos?

Lenguaje Natural

Medio de comunicación compartido por un grupo de personas

  • Castellano
  • Inglés
  • Francés

¿Que lenguajes conocemos?

¿Que compone a un lenguaje?

  • Reglas de sintaxis:

Estructura de las expresiones

Pedro compró una casa Lina ayer

 

  • Reglas de semántica:

Significado de las palabras

  • Diccionario:

Conjunto de palabras aplicables

Sujeto

Verbo

Predicado

Casa

¿Qué es un lenguaje de programación?

Es un sistema estructurado de comunicación, similar al humano, que permite a través de símbolos, caracteres, y reglas de uso, expresar instrucciones que pueden ser llevadas a cabo por máquinas como las computadoras

¿Para que sirve un lenguaje de programación?

Permite a las personas "comunicarse" con las computadoras

Crear programas que controlen el comportamiento físico y lógico de una computadora

Ventajas de un lenguaje de programación

  • Es más fácil de comprender que el lenguaje de máquina
  • Portabilidad, puede adaptarse para ejecutarse en diferentes tipos de equipos
  • Modularidad, los programadores usan conjuntos de instrucciones comunes comprendidas entre ellos

Programa

  • Es un conjunto de instrucciones consecutivas y ordenadas que llevan a ejecutar una tarea específica
  • Incluye la aplicación de procedimientos lógicos para resolver un problema en particular (algoritmos)

Programación

Proceso de creación de un programa de computadora

Incluye:

  1. Escribir
  2. Depurar
  3. Compilar
  4. Probar
  5. Mantener
  6. Documentar

Código fuente

}

Compiladores e intérpretes

¿Que es un compilador?

Es un programa informático, que se encarga de traducir el código fuente de una aplicación a lenguaje de máquina

Código fuente

Archivo que contiene instrucciones escritas en un lenguaje de programación. Está diseñado para cumplir una función o propósito específico

Lenguaje de máquina

Código que es ejecutado directamente por el procesador. Normalmente se asocia al código binario (secuencias de 0 y 1).

Componentes del compilador

Lexer

Parser

  • Analizador semántico
  • Revisa que las instrucciones del código fuente empleen únicamente las palabras reservadas para el lenguaje de programación seleccionado
  • Analizador sintáctico
  • Revisa que las instrucciones del código fuente empleen las reglas y estructuras definidas para el lenguaje de programación seleccionado

Etapas del proceso de compilación

1- Traducción

2- Ejecución

Traducir el programa de lenguaje de alto nivel a código de máquina

Ejecutar y procesar datos e instrucciones solicitadas

Ensamblar

¿Que es un intérprete?

Es un programa informático, que se encarga de traducir directamente el código fuente de una aplicación a lenguaje de máquina

Procesamiento

Un intérprete simula una máquina virtual, donde el código fuente es similar al lenguaje de máquina

Funcionamiento

La traducción y ejecución del código fuente se produce en tiempo real

Compilador Intérprete
Analiza el código una sola vez Analiza el código cada vez que se solicita
El compilador genera un archivo ejecutable que puede usarse tantas veces como sea requerido El intérprete ejecuta el código cada vez que se solicita

¿DIFERENCIAS?

Editores de texto

¿Qué es un editor de texto?

  • Es una aplicación de software incluida en el kit de desarrollo básico del programador
  • Permite crear archivos de texto plano dentro de los cuales escribimos nuestros programas

¿Que características tiene un editor de textos (1/2)?

  • Resaltado de sintaxis Sintax Highlighting 
  • Plegado de sintaxis Sintax folding 
  • Interfaz gráfica de usuario personalizable GUI customizable
  • Autocompletado de código inteligente Smart code autocompletion 
  • Vistas múltiples Multiview 
  • Acercamiento y alejamiento Zoom in and zoom out 
  • Soporte multilenguaje Multilanguage supported
  • Selección múltiple Multiselector
  • Cursor múltiple Multicursor

¿Que características tiene un editor de textos (2/2)?

  • Minimapa Minimap 
  • Búsqueda dinámica Dynamic search
  • Reutilización de código Snippets
  • Extensiones Plugins, package manager 
  • Programación de teclas Keybindings
  • Indentación de código Code indentation 
  • Marcado de llaves Key marking
  • Explorador de sistema de archivos File system browser
  • Buscar y reemplazar Find and replace

Personalización editor Atom

  • Temas Vistas y diseños personalizados para Atom 
  • Paquetes Extienden las funcionalidades de Atom
    • emmet snippets de programación - herramienta esencial para desarrolladores web
    • color-picker seleccionar colores gráficamente
    • activate-power-mode escribir código con estilo
    • atom-beautify indentar código
    • pigments visualizar colores en archivos y carpetas
    • atom-file-icons personaliza íconos de archivos y carpetas
    • linter detectar errores de sintaxis
    • minimap vista previa del código completo

IDE

¿Qué es un IDE?

  • Integrated Development Environment
  • Entorno de Desarrollo Integrado
  • Es una aplicación de software que consolida las herramientas básicas que los desarrolladores necesitan para escribir y probar sus programas

 

Permite a los desarrolladores crear programas para computador

Componentes

  • Interfaz gráfica de usuario (GUI) simple
  • Editor de código fuente
  • Compilador o intérprete
  • Depurador

Características

  • Resaltado de sintaxis
  • Formato de código fuente
  • Autocompletado de código inteligente
  • Compilación y ejecución de código incremental
  • Reporte y diagnóstico de errores

Tipos

  • Offline: Requiere instalación
    • Se ejecuta localmente
    • Standalone
    • Desatendidos
  • Online: No requiere instalación
    • Se ejecuta remotamente
    • Cloud computing
    • Servicio (Software As A Service)

Tipos de lenguajes de programación

Clasificación

Paradigma

Se determina de acuerdo al alcance del lenguaje teniendo en cuenta su robustez y complejidad

Procedural

  • Comentarios (simples y múltiples)
  • Lectura y escritura de datos por consola
  • Variables y constantes
  • Tipos de datos
  • Casting y conversión de tipos de datos
  • Operadores
  • Manipulación de strings
  • Estructuras de selección (Condicionales: simple, doble y anidado, según)
  • Estructuras iterativas (Ciclos/bucles: para, mientras, hacer mientras)
  • Arreglos y colecciones (1D: Vectores, 2D: Matrices)
  • Funciones y métodos
  • Lectura y escritura de archivos planos

Secuencial

Algoritmos

Estructurado

  • Estructuras de datos
    • Estructuras
    • Listas (enlazadas y doblemente enlazadas)
    • Pilas (LIFO)
    • Colas (FIFO)
    • Árboles de decisión
    • Grafos
    • Tablas Hash
    • Algoritmos de búsqueda (secuencial, binaria)
    • Algoritmos de ordenamiento (burbuja, inserción, selección ordenamiento rápido)

Programación Orientada a Objetos (POO)

  • Representar objetos del mundo real
    • Clases y objetos
    • Constructores y destructores
    • Niveles de protección y acceso a miembros
    • Abstracción
    • Encapsulamiento (métodos de acceso y protección de datos)
    • Herencia
    • Polimorfismo

Funcional

  • Crea programas a partir de funciones
  • Cuando una función se invoca a si misma hablamos de recursividad
  • Es de corte lógico-matemático
  • Basado en predicados

¿Que lenguajes conoces bajo esta clasificación?

Clasificación

Nivel de procesamiento de comandos

Se obtiene a partir del enfoque que se implementa para solucionar un problema

Imperativo

  • Conjunto de instrucciones que le indican al computador CÓMO hacer una tarea
  • Describe detalladamente los pasos necesarios para solucionar un problema
  • Basado en algoritmos

¿Que lenguajes conoces bajo esta clasificación?

Declarativa

  • Conjunto de instrucciones que le indican al computador QUÉ  tarea debe realizarse
  • Describe detalladamente un problema sin especificar exactamente como encontrar su solución
  • Basado en sentencias

¿Que lenguajes conoces bajo esta clasificación?

Clasificación

Nivel de abstracción

Se mide que tan cercano es al lenguaje natural y que capacidad de acceso proporciona a los recursos de la máquina 

Alto nivel

  • Son lenguajes muy parecidos al lenguaje natural, y por lo tanto, de fácil comprensión para los humanos
  • Manipulan los recursos de software del computador
  • Sirven para crear programas informáticos que solucionen distintos tipos de necesidades
  • No dependen de la máquina
  • Generalmente escritos en inglés

¿Que lenguajes conoces bajo esta clasificación?

Medio nivel

  • Son lenguajes que se encuentran entre el lenguaje natural y el lenguaje de máquina, y por lo tanto, de normal comprensión para los humanos
  • Manipulan tanto recursos de software como de hardware del computador
  • Sirven para crear sistemas operativos
  • Dependen parcialmente de la máquina
  • Son lenguajes robustos y complejos

¿Que lenguajes conoces bajo esta clasificación?

Bajo nivel

  • Son lenguajes muy cercanos al lenguaje de máquina, y por lo tanto, de difícil comprensión para los humanos
  • Manipulan directamente el hardware del computador
  • Sirven para crear controladores (drivers)
  • Dependen de la máquina (depende del tipo de procesador)
  • El más popular es el ensamblador (assembler)

¿Que lenguajes conoces bajo esta clasificación?

Assembler

Clasificación

Forma de ejecución

Se examina la forma en que el código fuente se traduce al lenguaje de máquina 

Compilado

  • Requiere de un compilador
  • Permite traducir el código fuente escrito en un lenguaje de alto nivel a lenguaje de máquina
  • Genera archivos ejecutables que pueden ser ejecutados en cualquier momento
  • El compilador analiza el código buscando errores de sintaxis y semántica antes de ensamblarlo 

¿Que lenguajes conoces bajo esta clasificación?

Interpretado

  • Requiere de un intérprete
  • Permite traducir el código fuente escrito en un lenguaje de alto nivel a lenguaje de máquina
  • Traduce los datos que se van a utilizar en el momento y no los guardar para usarlos posteriormente
  • El intérprete no revisa el código antes de ejecutarlo muestra errores de sintaxis y semántica en tiempo real

¿Que lenguajes conoces bajo esta clasificación?

Clasificación

Forma de tipado

Se precisa cómo se maneja la declaración y asignación de variables y sus tipos de datos 

Débilmente tipado

  • No requiere especificar el tipo de dato al momento de declarar las variables (implícito)
  • Veamos:

¿Que lenguajes conoces bajo esta clasificación?

  • var nombre = "Johnattan";
  • var edad = "28";
  • var estatura = "1.82";
  • var feliz = true;

Sintaxis JavaScript

Tipado dinámico

Fuertemente tipado

  • Requiere especificar el tipo de dato al momento de declarar las variables (explícito)
  • Veamos:

¿Que lenguajes conoces bajo esta clasificación?

  • string nombre = "Johnattan";
  • byte edad = "28";
  • float estatura = "1.82";
  • bool feliz = true;

Sintaxis Java

Tipado estático

Historia de los lenguajes de programación

+2500

1954

1958

1959

1963

CPL

1964

1968

1969

1970

1971

1973

1975

1978

1983

1984

1988

1987

1991

1993

1995

1996

1998

2000

LOGO

1974

Cálculos

Empresarial

Scripting

Small

Talk

OAK

AWK

Turbo

Pascal

 

Académico

Científico

Comercial

POO

Inteligencia Artificial

Educación

Enseñanza

Principantes

Investigación

Mainframes

Sistemas embebidos

Programación

Sistemas propósito general

Procesamiento

de cadenas de

caracteres

Bases de datos

Desarrollo de sitios web dinámicos

Multiplataforma

Procesamiento de datos basados en texto

Enseñanza

Write once,

run everywhere

Programación

orientada a la web

Programación

orientada a la web

Internet

Científicas, IA, Big Data y minería de datos

Independiente (Microsoft)

Consola,Escritorio,Web, Móvil

Sistemas operativos

Hardware y software

1980

Scheme

Automatización

Propósito general

Aplicaciones visuales

Estructurado

Seguridad

Universidades

Sistema modulares

Estándar

Funcional

Productividad

Funcional

Haskell

1950

Plankalkül

1946

Apple

1972

Declarativo

Popularidad de los lenguajes de programación

Lenguajes de programación según su popularidad (julio 2018)

Fuente: Tiobe Index

Lenguajes de programación que un principiante debería aprender (febrero 2016)

Fuente: GitHub

Lenguajes de programación por salario y popularidad, (septiembre 2015)

Fuente: StackOverflow

Lenguajes de programación por salario y popularidad, (septiembre 2015)

Fuente: StackOverflow

7 Lenguajes que todo desarrollador debería aprender en 2018

Fuente: https://www.techrepublic.com/article/7-programming-languages-that-every-developer-should-learn-in-2018/

  1. Java

  2. Python

  3. JavaScript

  4. C++

  5. C#

  6. PHP

  7. Perl

Lenguajes de programación

By Johnattan Jaramillo

Lenguajes de programación

  • 1,492