Curso de conceptos de la programación

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 17

Curso de conceptos de la programación

Un lenguaje de programación es una serie de reglas gramaticales que están definidas y que nos permiten (a los
programadores) escribir instrucciones a las que llamamos algoritmos y controlar los comportamientos de diferentes
sistemas.

Tipos de paradigmas de programación

Imperativos: Se trata de definir una secuencia de instrucciones, es decir el paso a paso de lo que nosotros queremos
que haga un sistema (Ej, Paso 1 carga el navegador Google Chrome, paso 2 escribe en la barra del navegador, paso 3
como programar … etc). Los códigos de este paradigma a la larga se hacen muy largos por el paso a pasa y se hace
muy difícil de mantener

const listaProgramadores = [¨Gorka¨, ¨Martin¨, ¨Alex¨, ¨Leire¨]

let nombres = []
listaProgramadores.forEach ((programador, posición) => {
nombres [posición] = programador
})

Declarativos: Este se centra en cual va a ser el resultado final. Se centra en el QUE y no en el cómo. Hay que tener un
conocimiento para poder leer este tipo de paradigma ya que no es tan detallado cómo el imperativo.

const listaProgramadores = [¨Gorka¨, ¨Martin¨, ¨Alex¨, ¨Leire¨]

let nombres = [… listaprogramadores]

Ventadas y desventajas.

En cuanto a lo imperativo es mucho más fácil aprender leer que el declarativo ya que no es el resumen final de lo
creado. Pero a su vez este ocupa mucho mas lugares que el declarativo.

Funcionales: Es similar al imperativo en cuanto al ir al línea por línea dando las instrucciones, el paso a paso de lo
que tiene que hacer.
EJ: // SUMA PROCEDIMENTAL

let suma = 0

for (let i = 1; i <=10; i++) {


suma = suma + i
}
suma = 55

Procedimentales: Crea una serie de funciones, bloques de códigos en los cuales nosotros introducimos un parámetro
y obtenemos otros. Para que, en base a esos códigos, funciones que están predefinidos ir creando nuestro
programa.
División por niveles

Lenguaje máquina: Nos comunicamos con nuestro ordenador ente 1 y 0. El sistema lo decodifica.

Lenguaje ensamblador: Es el lenguaje intermediario entre el humano y la máquina. Décadas de los 70/80.

Bajo nivel: (incluye al lenguaje máquina y al lenguaje ensamblador) Porque están relacionados directamente con el
comportamiento (chip) con el hardware y la arquitectura del propio sistema. EJ:La arquitectura del procesador AMD,
INTEL, etc.

Medio – bajo nivel: Surgió “C/C++” como lenguaje de programación bastante antiguo. Tiene capacidad de alto nivel,
capacidades de bajo nivel y acceso a registros de memoria.

Medio – alto nivel: Lenguajes de programación modernos: JAVA, PHT, JAVAS CRIPT, PYTON, etc.

Alto nivel: Son los Frameworks (es una serie de funcionalidades extras que se fueron añadiendo a lenguajes
conocidos (java) en base a librerías. Para que programar con estos lenguajes de programación sea más fácil.) y están
basados en lenguajes de programación de medio nivel. Son un conjunto de librerías que facilitan la creación de
frameworks de paginas web, de servidores.

Proceso de conversión

Sabemos que nuestro ordenador comprende 1 (uno) y 0 (ceros), para ello necesitamos un traductor. Nosotros
necesitamos que este traductor traduzca lo que nosotros queremos en 1 y 0.

Lenguaje de programación compilador e intérprete. El compilador puede ser un C++ que hace falta compilaro,
construir un archivo binario con 1 y 0. Un intérprete es un Javas script.

Lenguaje combinado

Lenguaje interpretado
Desarrollo de código (programación)
Entorno de desarrollo integrado IDE, no son mas que programas como bloq de notas solo que con unas
características que nos ayudan en la programación (visual studio code, atom, sublime text, PyCharm, Notepad++)

Control de versiones

Es hacer copias de seguridad de los archivos ya que no se puede volver para atrás si en algún momento el programa
arrojo un error (usando visual studio code). Aunque esta solución más que nada aplicable si yo solo estoy usando el
programa. Esto cambia si se trabaja en equipo en el cual se usa Google dive o Dropbox.

El sistema que se usa actualmente es GIT – hay 2 versiones github y gitlab

2.1 Introducción a los lenguajes de programación

PYTHON: Es el más utilizado. Usa frameworks para desarrollo web ( y los 2 frameworks que más usas son Django y
Flask). Tiene un lenguaje fácil de utilizar y de aprender. El lenguaje de programación es interpelado.

JAVA: Página web. Es un lenguaje de programación orientado a objetos. Es el mas utilizado por las grandes
corporaciones y se utiliza para app web. Lenguaje de programación base para aplicaciones ANDROID. Android
Studio. El lenguaje es relativamente sencillo de aprender.

JAVASCRIPT: es el lenguaje de programación para aplicaciones y paginas web más utilizado hoy en día. Las nuevas
empresas están utilizando NodejS para sus servidores, son una serie de librerías utilizadas para poder realizar
códigos desde el punto de vista del servidor. Es más fácil de aprender que JAVA ya que es mucho más moderno.

TYPESCRIP = es JAVASCRIPT con una serie de funcionalidades extras y restricciones. Es de Microsoft.

C#: es derivado de los lenguajes C y C++, es un lenguaje muy versátil. Sirve para desarrollar aplicaciones de backend,
videojuegos, apps de Microsoft.
Se utiliza para la creación de videojuegos en el motor Unity.

ASP.NET: framewoks, utilizado para aplicaciones web, APIs, servicios web.

PHP: es uno de los lenguajes más utilizados para desarrollar aplicaciones web, backend. Compite con Javascript y
Python. Muy sencillo de aprender y en comparación con otras app sus lenguajes son mucho más lentas.

HTML: Es un lenguaje de etiquetado. HyperText Markup Language. Es un lenguaje que deben interpretar todos los
navegadores, se utiliza para crear sitios webs, y apps webs. (con un pero… aquellas que son estáticas, es decir esas
que no tienen interacción). ES para crear el esqueleto de la pagina web.

CSS: Cascading Style Sheets. Con esto se le da el estilo de la página web. Lenguaje de diseño gráfico.
3.1 Los 3 paradigmas de la programación

Son formas de programar en diferentes lenguajes de programación.

- Programación estructurada: Es una programación por secuencia de instrucciones que le vamos dando al
programa o hardware para que vaya ejecutando. Cada línea de programación va ejecutando una línea
correlativa a la anterior.

- Programación orientada a objetos: El objetivo de este tipo de programación es que los objetos se vayan
interrelacionando entre ellos. El usuario puede acceder a diferentes páginas, productos, etc. Es más
interactivo.

Que son esos objetos? Objeto  Usuario. Tienen 2 tipos de propiedades. Por un lado, los datos o también se
conocen como atributos, y por otro lado la funcionalidad por medio de los métodos. Lo métodos nos
permiten permiten añadir funcionalidad a nuestros objetos.

Cómo creamos los objetos? Por medio de clases que son template. Esta clase directamente tiene los
atributos y métodos del objeto usuario. A partir de la cual se van a crear todo los usuarios diferentes.
A partir de la planilla que emos creado para usuario, estamos creando usuarios con diferentes atributos y
funcionalidades. Esto se llama instanciar objetos.

4 conceptos clave de los objetos. Abstracción, definir que atributos y funcionalidades representa ese usuario
(nombre, apellido, edad, email). Encapsulamiento, lo que hace es que dentro de un mismo objeto es tener
todos los atributos y métodos, para poder tratar ese objeto como una variable o un registro dentro de la
memoria. Herencia, podemos tener una clase padre (ej: usuario) de este usuario podemos hacer clases que
vengan derivadas de este usuario. Es decir, que desde una clase se pueden traspasad (herencia) a otras
clases todos los atributos de la clase padre. Por último, el polimorfismo, son múltiples formas desde un
mismo método, puede tener diferentes formas en función de los atributos. (ej: registro. Hemos visto que en
diferentes páginas podemos registrarnos de diferentes formar, por medio de mail, teléfono, Facebook, insta,
etc).

- Programación funcional: Utiliza lo que se conoce como funciones puras, funciones sin estado (recursividad,
una función se llama a si misma).
Recursividad: Calculo factorial de algún numero entero.

4. FRONTEND AND BACKEND

Front end (delante) sería la cara visible de un sistema, del desarrollo de una página web, y el back end (detrás), es un
servidor que se encargaría de dar toda la información que necesita el front end, todo esta interconectado.
Full stack: se refiere a tanto a desarrolladores Front como Back. Es decir, desde la creación de la parte visible del
desarrollo y la no visible.

Lenguaje del servidor y del cliente

JAVA/ RUBY / PHP/ NODE JS / PHYTON / C# / ASP.NET / PERL


El servidor es quien se encarga de liberarle la mayor carga computacional al cliente. Veremos cuales son los
lenguajes desde el punto de vista del cliente.

La triada ----> HTML, CSS y JAVA SCRIPT.

CMS – Content Managment System

Es un software que ya lo tiene todo, tiene su propio FRONT END y BACK END. Este tipo de sistema nos da mucha
agilidad a la hora de crear una página web que esta más estandarizada y no son tan desarrolladas. (blog por
ejemplo). Shopify está mas orientado a las tiendas online, startapps.

CMR (client relationship manager) -- > son software de gestion para el cliente (ODOO como sistema)

FRAMEWORK (marco de trabajo)

Hay aplicaciones que nos ayudan a crear aplicaciones desde el punto del vista del cliente. Framework mutiplataforma
/ nativo.
Desde el punto de vista del servidor.

Frameworks (marco de trabajo) de pruebas unitarias o testeo para asegurarnos de que cada cambio que hagamos
dentro del software no afecte a las funcionalidades existentes, y que las nuevas funcionen. Son muy importantes, no
olvidarse de probar estos antes de la subida de la aplicación una vez terminada.

Librerías HTML

Estas librerías son para el cliente. Estas librerías son la parte visible de la página web. Podríamos cambiar colores en
textos y otros (Ver los cursos de cada una de estas aplicaciones para edición de páginas webs).

SERVIDORES WEB

Estos servidores ofrecen para servir páginas web, conexiones ftp, transferencia de archivos, como servidor de correo
electrónico, e incluso como servidor/proveedor de base de datos.
STACKS

Son conjuntos de tecnologías que no permiten crear una página web en modo fullstacks desde el punto de vista del
cliente y del servidor. XAMPP es multiplataforma, es decir, se puede usar en Windows, lunix y apple.

5. Introducción al desarrollo móvil

XCODE: entorno para desarrollar apps para el mundo de IOS


ANDROID STUDIO: entorno para desarrollar apps para el mundo ANDROID

Desarrollo multiplataforma

Crear un solo código y después con ese mismo código la compilación cree diferentes tipos de archivos para
diferentes tipos de sistemas operativos (fichero APK, para Android e fichero IPA para IOS).
INTRODUCCION AL CODE REVIEW (revisión de código)

Es el paso ente medio de una versión nueva y una vieja. Y es para revisar si algún paso arroja error y cual es el
problema a solucionar. Existen aplicación para revisar este entremedio para solucionar el inconveniente y pasar a la
siguiente versión.

BASE DE DATOS Y PROCESOS DE DESARROLLO

Una base de datos es un sistema que nos permite almacenar información. La base de datos más típica es usar una
tabla en Excel como almacenamiento de datos.
Cómo creamos la base de datos, cuales son las fases de desarrollo?

3 fases:
- Diseño conceptual: Crear toda la idea de la base de datos y si va a tener relación entre si.
Usuario ---> ID: clave / Nombre y Apellido / mail / edad… Estos usuarios además pueden tener un lenguaje de
programación favoritos. Lenguajes ---> ID:nombre_lenguaje / fecha de creación del lenguaje … Asignatura ---> ID: de
la asignatura / nombre / nombre_profesor / n° de horas…
Dentro de usuarios podríamos agregar lenguaje_id, es decir que con un n° podríamos traer datos desde la tabla de
lenguajes o asignaturas.

- Diseño lógico: Ver los diferentes tipos de proveedores para poder llevar a cabo esta base de datos (Creada en el
paso anterior en el diseño conceptual) de la mejor manera posible. En este paso vamos a definir. Acá se empieza a
convertir el diseño conceptual en algo más adaptado a la plataforma que vamos a utilizar. Acá se usan cadenas de
caracteres: VARCHAR / INT.

- Diseño físico: Acá se empieza a crear realmente la base de datos teniendo en cuenta todo los pasos anteriores en la
plataforma que hayamos seleccionado. Crear cada una de las tablas (modelos) en función del tipo de base de datos
que vayamos a utilizar en la plataforma que hayamos creado la base de datos.
BASE DE DATOS SQL Y NoSQL

Tipos de bases de datos que hay en el mercado en la actualidad.

SQL: Se las conoce como tablas de base de datos relacionales. Podemos crear relaciones en base a claves de otras
tablas.
NoSQL: Son las que no se centran en base de datos tabla. En este tipo de base de datos no existen relaciones entre
si. Key-value.

Este tipo de base de datos se centra en redes sociales (face, linkedin, etc)

Bases de datos que trabajan con documentos a nivel conceptual.


DveOps y CICD

Que son las DevOps? Es una metodología de desarrollo de software que consiste en ir desarrollando y publicando
código de poco a poco. En esta nueva metodología de desarrollo, tanto el equipo de desarrollo de software e IT
deben trabajar mutuamente.
Viene de la unión de dos conceptos que son el Development (desarrollo de software) e IT Operations (operaciones
IT) todo lo que ya está funcionando lo haga de la mejor manera posible, esto hace el departamento de IT.

Metodología de desarrollo de software ----> CI (continuous integration) /CD (continuous deployment, despliegue
continuo). CI, no es más que una integración continua que lo que hace es publicar el código por medio de un merge,
pull, push. Mientras que el CD, es no publicar el código sino desplegar la aplicación a producir para que se pueda
utilizar.

Servicios de soporte que ofrecen para los diferentes procesos de CI/CD.

Estos servicios nos ayudan a poder sortear los diferentes errores que podemos tener a la hora de ejecutar el
contenido ya que muchas veces puede que nos hayamos salteado un paso y lo que hacen estos programas es
detectar donde se encuentra el error.

CONTENEDORES

Estos programas nos ayudan a mantener información de proyectos en mucho menor peso y que le sea útil para
poder seguir progresando en su producción a mi compañero en caso de que lo que yo haya creado en una aplicación
la cual tiene la última versión, no le haga problema a él que tiene una versión anterior.

ORQUESTACIÓN

Me permite aumentar los recursos que estoy destinando a mis diferentes contenedores de una manera sencilla. Nos
permite crear los nodos a cada una de mis aplicaciones o de los contenedores. Nos ayuda a solucionar problematias
que vayan surgiendo por error, cómo por ejemplo, en caso de que el front se conecte con la base de datos lo cual
esto no debería ocurrir nunca.

CLOUD COMPUTING

Computación en la nube/red. Cuando uno desarrolla una aplicación y la vamos a mostrar al mundo, es decir que
todo el mundo pueda acceder a través de internet, tenemos 2 opciones. Desde un propio servido físico(en mi casa
tendría una pc la cual la utilizaría como servidor) y desde la nube (pagaría a un servicio de cloud computing).

Aplicaciones de servicio en la nube: AWS (Amazon) – Google Cloud – Azure (Microsoft)

Q.A – QUALITY ASSURANCE (TESTING)

Q.A: Es el departamento de control de calidad con todo lo relacionado al sotware, y se encarga de testear el
software desarrollado por la propia organización para asegurarse de que funciona de acuerdo a los estándares que
se han definido al principio del proyecto.

En que consiste el TESTING? No es mas que hacer una prueba y el propio software nos dirá si ha pasado o no.
Ejemplo de una prueba de suma para ver si da OK el resultado de a=1; b=3; resultado= a+B=3 y otro ejemplo de
función.
Funsión
TEST DE LAS CAJAS Y TIPOS DE TEST

Tratar nuestro software como si no supiera lo que tiene esa caja. Lo que uno testea es la entrada y la salida. Lo que
quiero es que para un tipo de entrada haya un tipo de entrada y lo mismo para el de salida. Es decir que para una
entrada haya una salida.

Las pruebas de caja negra, conocidas también como black box testing, pueden definirse como una técnica donde se
busca la verificación de las funcionalidades del software o aplicación analizada, sin tomar como referente la
estructura del código interno, las rutas de tipo internas ni la información referente a la implementación. Esto quiere
decir que la prueba se lleva a cabo con desconocimiento del funcionamiento del sistema interno, debido a que se
enfoca en la entrada y salida de un software, tomando como base sus especificaciones y requisitos.
De manera que se puede asegurar que el objetivo de las pruebas de caja negra está relacionado con la validación de
los recursos funcionales del software o aplicación que se busca examinar.

Las pruebas de caja blanca pueden definirse como una técnica de monitorización o prueba de software en la se
analiza el diseño, código y estructura interna, con el objetivo de mejorar propiedades como la seguridad y el uso
eficiente del sistema.
Estas pruebas se caracterizan principalmente porque son los propios sistemas y aplicaciones quienes exponen sus
métricas para que el usuario pueda leerlas, analizarlas y tomar decisiones y acciones en función de la obtención de
un resultado u otro.
En las pruebas de monitorización de caja blanca, los propios probadores aparecen en el mismo código, por lo que
este recurso también suele conocerse como prueba de caja transparente o prueba de caja de vidrio, entre otros.

La prueba de caja gris es una técnica de prueba de software para probar un producto o aplicación de software con
un conocimiento parcial de la estructura interna de la aplicación. El propósito de la prueba de caja gris es buscar e
identificar fallas debido a una estructura de código incorrecta o al uso de la aplicación.
En este proceso, los errores específicos del contexto asociados con los sistemas web se identifican comúnmente.
Aumenta la cobertura de la prueba al centrarse en todas las capas de cualquier sistema complejo.
Gray Box Testing es un método de prueba de software, que es una combinación de ambos Prueba de caja blanca y
modo de prueba de caja negra.

2 tipos de test que existen a la hora de desarrollar los casos de test, son los test funcionales y los no funcionales.

Test funcionales: Testea las funcionales que se supone que nuestras apps deben cumplir. Se centran en la
funcionalidad, teste de errores (no olvidarse de los errores que pueden surgir a lo largo de la creación de una
aplicación), apoyo de los requerimientos del usuario final/cliente.

Test no funcionales: Hace referencia a los test que se desarrollan para testear todo lo que hay alrededor de esa
aplicación (rendimiento, etc), es decir, son esos test que no tienen que ver con la funcionalidad de la aplicación
como por ejemplo; el rendimiento, tiempo de carga (con diferentes tipos de ancho de bandas, 3g, 4g, 5g), stress test
(llevar el software al extremo de maximizar los recursos que esta consumiendo en ese momento), escalabilidad,
accesibilidad, UX/UI, test de seguridad.
INTRODUCCION A HTTP

El protocolo de http hace referencia a la conexión de internet para obtener datos. HTTP: HyperText Transfer
Protocol.

Lo primero que hacemos cuando entramos a una página web es descargar automáticamente el HTML. Que sería
toda la estructura, después obtenemos el ccs y javascript y todos sus estilos y la interactividad con los usuarios. Y
luego puede ser que el HTML tenga una imagen, video y también la parte de los anuncios.

Estas llamadas se hacen todas a internet y luego con la propia configuración del http, iremos a unos servidores para
obtener una serie de datos. Ver ejemplo.

Hay que tener en cuenta el protocolo. Un protocolo no es mas que un conjunto de reglas estandarizadas, con el fin
de que diferentes dispositivos, diferentes lenguajes, diferentes tecnologías sean capaces de conectarse entre sí. Lo
ideal es tener un protocolo que permita conectar un lenguaje entre sí y no excluir ninguna tecnología salvo las que
no estén dispuestas a adaptarse a este tipo de protocolo.

También podría gustarte