¿Qué es un lenguaje de programación? 

Un lenguaje de programación es un sistema de escritura que los programadores usan para indicar instrucciones de tal manera que una computadora pueda entenderlas y ejecutarlas. 

Un lenguaje de programación no solo es escribir las instrucciones y ya, para que una computadora pueda entender el lenguaje, este necesita tener ciertas características que lo ayudan desde la escritura hasta la ejecución en la computadora. 

Características de un lenguaje de programación 

Sintaxis

Es un conjunto de reglas que definen la estructura de la escritura, palabras reservadas, el uso de punto y coma ( ; ), indentación, ortografía, etc. Cada lenguaje tiene sus propias normas que seguir para su correcto funcionamiento. 

Semántica

Se refiere al comportamiento de la escritura del código, aunque la sintaxis sea correcta, la estructura en el proceso de ejecución del código tiene que ser claro. 

Tipado

El manejo de los datos en la ejecución del programa, es la forma en que se le indica a una variable cuál es el tipo de dato que va a manejar. 

Cuando un lenguaje es fuertemente tipado no permite conversiones entre diferentes tipos, un tipado débil si permite este tipo de conversiones. 

Un lenguaje con tipado estático verifica el tipo de dato en la compilación mientras que un tipado dinámico lo hace en tiempo de ejecución. 

Paradigma de programación

Se puede clasificar en diferentes paradigmas como el Imperativo, el Orientado a Objetos, Funcional, Estructurado, etc. 

Portabilidad

La posibilidad de que el programa pueda ejecutarse en diferentes plataformas con pocas o ninguna modificacion como windows, android, web, ios, etc. 

Eficiencia

Es la velocidad conla que puede ejecutarse el codigo del lenguaje, por ejemplo los lenguajes como ensamblador de bajo nivel son mas eficientes respecto a los recursos, pero los lenguajes de alto nivel sacrifican algo de eficiencia a cambio de la facilidad y desarrollo mas rapidos. 

Abstracción

Permite a los programadores trabajar con conceptos de alto nivel como variables, objetos,funciones, etc.  

Librerias y Frameworks

Los lenguajes cuentan con librerias y frameworks con tareas comunes para facilitar su uso y no tener que escribirlas desde cero 

Herramientas de desarrollo

Los lenguajes de programación suelen estar acompañados de herramientas y entornos de desarrollo integrados (IDEs) que facilitan tareas como la compilacion, la depuracion, uso de control de versiones y el desarrollo en si, generalmente son los lenguajes compilados que generan un archivo de instalcion los que son acompañados por su propio IDE, otros lenguajes que son interpretados pueden escribirse practicamente en cualquier editor de texto. 

Compilacion

En realidad existen los lenguajes compilados , lenguajes interpretados y lenguajes semi-compilados 

  • Lenguajes compilados: el codigo se traduce completamente al lenguaje máquina antes de ejecutarse. 
  • Lenguajes interpretados:  el codigo se interpreta linea por linea mediante un interprete
  • Lenguaje semi-compilado: combinan ambas caracteristicas 

Comunidad y Soporte:

otra cosa a tener en cuenta cuando se elige un lenguaje de programación es la disponibilidad de recursos, documentacion y soporte de la comunidad que hay disponible, existen lenguajes con grandes cantidades de recursos en donde buscar, pero tambien hay otros que tienen muy poca documentacion haciendo dificil la curva de aprendizaje. 

    Loading

    Comandos básicos de GIT

    Trabajar con un control de versiones es impresindible en la actualidad para poder tener tus proyectos organizados y se puede realizar de manera gráfica en tu IDE preferido o desde la consola de git con simples comandos.

    A continuación listaré algunos de los comandos git que nos permitirán trabajar con nuestros proyectos.

    Para trabajar con los comandos de git primero hay que instalarlo en tu computadora y despues podremos usar la consola que windows o mac traen por defecto o bien al instalar git se instala la consola de git, la git bash.

    Para utilizar estos comandos correctamente en tu proyecto, necesitas posicionarte en el directorio donde está guardado.

    Recuerda consultar la documentación para ver todos los comandos disponibles

    Versión

    Lo primero después de instalar git es comprobarlo y para eso consultamos la versión instalada

    //
    git --version
    //

    Help

    Primero necesitamos saber que con este comando podremos ver una lista de comandos con la descripcion de lo que hace, cuando no recuerdas bien la sintaxis de alguno de ellos, en esta lista podras comprobarlo.

    //
    git --help
    //

    Configuraciones

    Estas configuraciones afectan a toda la instalacion de git en tu máquina y no sólo al proyecto en el que estas trabajando

    //
    git config --global
    //

    Este comando agrega el numbre de usuario que se utilizara para registrar todos los movimientos que se hagan en el control de versiones

    //
    git config --global user.name "<tu_nombre_de_usuario>"
    //

    Este comando agerga el correo electrónico del usuario

    //
    git config --global user.email "<tu_correo>"
    //

    Este comando configura el nombre de la rama principal para tus repositorios, en caso que tu versión de git no lo haga automáticamente en “main” que por convención es el nombre que se le asigna a la rama principal

    //
    git config --global init.defaultbranch <main>
    //

    Este comando muestra la lista de configuraciones por si necesitas modificar alguna otra

    //
    git config --list
    //

    Iniciando

    Crea un repositorio vacío en la carpeta .git oculta del proyecto

    //
    git init
    //

    Status

    • Indica la rama en la que estas trabajando actualmente
    • Los commits que se han hecho
    • Los archivos que se han creado nuevos, si ya se agregarón al repositrio o estan en el stage de git
    //
    git status
    //

    Agregar archivos

    Para agregar los archivos nuevos al stage para poder haer commit con ellos, los archivos que esten en el stage se agregarán al commit, los que no se agregarón se quedaran en el proyecto local

    //
    git add <nombre_del_archivo.txt>  //agrega sólo el archivo indicado
    git add .  //con el punto podemos agregar todos los archivos que no se han agregado antes
    //

    Sacar del Stage

    Si agregaste por error un archivo al stage, con este comando lo puedes regresar a su estado normal, hay archivos que contienen datos privados como credenciales, tokens, etc. que no deverían enviarse a un repositorio ya sea público o privado.

    //
    git rm --cached <nombre_del_archivo.txt>
    //

    Commit

    Comando para enviar un commit al repositorio, el comentario es obligatorio, recomiendo poner un comentario breve pero descriptivo de lo que se hizo en el commit, por ejemplo “se creo función para ordenar listado”, esto es muy útil en caso de buscar el repositorio donde se realizo esa función, en cambio poner “cambios martes” no indica nada y tendremos que revisar el código del commit para ver los cambios realizados

    //
    git commit -m "se creo función para ordenar listado"
    //

    Log

    Regresa una lista de todos los cambios que se han registrado en el repositorio, cada commit con si hash (identificadir), el autor, fecha y mensaje indicado

    //
    git log
    //

    Crear Rama

    Este comando crea una rama nueva y te posiciona en ella para realizar los cambios correspondientes.

    Si la rama que indicaste ya existe, entonces solo se cambiará a esa rama, sin crear nada

    //
    git checkout -b <nueva_rama>
    //

    Cambiar de Rama

    No solamente puedes cambiar de rama con checkout, con este comando tambien puedes cambiarte de ramas

    //
    git switch <nombre_rama>
    git switch -c <nueva_rama> //con -c puedes crear la rama
    //

    Lista de Ramas

    Este comando muestra una lista de todas las ramas del rpositorio

    //
    git Branch
    //

    Merge / Fusión

    Cuando terminas el trabajo asignado en tu rama, con todos esos commits, es hora de fusionar con la rama principal que suele ser main

    //
    git merge <tu_rama_actual>
    //

    Borrar Rama

    Después de terminar tutrabajo en esa rama y hacer merge con la rama principal, puedes borrarla con este comando

    //
    git Branch -D <nombre_rama>
    //

    Deshacer cambios

    Si necesitas hacer cambios de un commit especifico, necesitas el hash indicador del commit, el hash es una serie de caracteres alfanuméricos que aparece delante del mensaje del commit cuando pones git log

    Puedes indicar que tú hiciste estos cambios en el mensaje.

    //
    git revert <hash>
    //

    Reset

    Este comando sirve para regresar a un commit anterior y puedes usarlo con tres características

    //
    git reset --soft <hash> //deshace el commit pero mantiene los cambios en el stage
    git reset --mixed <hash> //deshace el commit y lo quita del stage pero los cambios se mantienen en el código
    git reset --hard <hash> //borra todos los cambios, commit, stage y código hasta el commit indicado, úsalo con precaución ya que no solo afectas tus commits, sino los de tus compañeros
    //

    Clone

    Sirve para clonar un repositorio desde cualquier servidor GitHub, azure, bitbucket, etc. en tu computadora en el directorio en el que estas posicionado, creando una carpeta con el nombre del repositorio que estas clonando

    //
    git clone <url_del_repositorio>
    //

    Sincronizar

    Para sincronizar las ramas descargando desde el origen o repositorio colonado, git llama al repositorio alojado en algun servidor como github, azure, etc. como el origen.

    //
    git fetch
    //

    Crear Rama con Origen

    Para crear una rama local que es en la que trabajarás y se relacione a una rama en el origen para poder subir tus cambios, por decir que alguien más te asigna la rama

    //
    git checkout -b <Nombre_Rama> // se recomienda poner el mismo nombre de la rama origen
    //

    Pull

    Con este comando te aseguras de descargar el contenido del repositorio de origen

    //
    git pull
    //

    Push

    A diferencia de fetch, push envía el contenido desde el repositorio local al repositorio origen, normalmente se hace después de hacer un commit

    //
    git push
    //

    Comandos de consola

    Recuerda que estastrabajando en una consola de comandos y los siguientes pueden ayudarte a moverte entre los diferentes directorios, crear y editar archivos, etc.

    Cambiar de directorio

    Primero tenemos que posicionarnos dentro de la carpeta del proyecto y tienes que localizar la ruta completa

    //
    cd C:/users //con cd puedes posicionarte en un directorio indicando la ruta completa, pero no es necesario indicar la ruta desde el  inicio, puedes indicar solo la carpeta a la que quieras entrar de ese dierectorio
    
    dir  //muestra el directorio de la carpeta donde te encuentras
    
    cd .. //con los dos puntos puedes subir un nivel del directorio
    //

    Básicos

    Estos comandos son básicos en cualquier consola de comandos

    //
    help  //muestra una lista de comandos con su descripcion
    
    clear  //limpia la consola para poder trabajar mejor
    //

    Archivos con Linux

    A pesar de que puedes hacerlo con la consola de windows por ejemplo, encontrarás en muchas partes que para la creacion y edicion de archivos utilizan los comandos de linux, estos comandos puede ser que no funcionen en la consola cmd de windows ni en power shell, pero no tendras problema en git bash.

    //
    ls    //muestra el directorio de la carpeta
    nano <archivo.txt> //crea o edita un archivo con un editor de texto de linux llamado nano
    //

    Estos son algunos comandos que te ayudarán a trabajar con git desde la consola.

    Loading

    ¿Qué es la programación?

    La programación es el proceso de crear y desarrollar todo tipo de software por medio de la escritura de un código de programación que es un conjunto de instrucciones que le dicen a una computadora cómo realizar una tarea, el código se tiene que escribir, probar, depurar y mantener, el código se puede escribir en uno de los variados lenguajes de programación.

    Se puede crear software para diferentes fines y plataformas que van desde aplicaciones de escritorio, aplicaciones web, aplicaciones móviles, videojuegos, sistemas operativos, etc.

    El proceso de la creación de un programa tiene varias fases entre ellas

    Análisis del programa

    • Análisis del programa
    • Diseño
    • Codificación
    • Depuración
    • Mantenimiento

    La programación tiene varios componentes clave de los que hay que tener algún conocimiento.

    Lenguaje de programación: Son herramientas que permiten expresar instrucciones en un formato comprensible para los sistemas.

    Algoritmos: Conjunto de instrucciones lógicas que siguen la resolución de una tarea especifica.

    Estructuras de datos: Formas de organizar y almacenar los datos en memoria de manera eficiente (arreglos, listas, colas, etc.)

    Paradigmas de programación: Enfoques o estilos de programación para estructurar el código

    Ciclo de vida del Software: Todas las fases por las que pasa el software desde su concepción

      Loading

      INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

      Error INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

      La etiqueta <intent-filter> se usa para que otras aplicaciones puedan abrir nuestra aplicación por medio de un Intent, normalmente no había problema hasta la versión de Android 11 si la etiqueta del Activity contenía la etiqueta Intent-Filter se tomaba la propiedad android:exported con valor verdadero, sin importar que se incluyera en la etiqueta del Activity

      Pero desde la versión de Android 12 y posteriores se necesitara poner explícitamente la propiedad android:exported en verdadero, de no ponerla entonces tendremos el siguiente error.

      Error:

      Launching 'app' on No Devices.
      Installation did not succeed.
      The application could not be installed: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
      
      List of apks:
      [0] 'D:\Documentos\DESARROLLO\ANDROID\Random\app\build\outputs\apk\debug\app-debug.apk'
      Installation failed due to: 'null'
      Retry
      

      Solución:

      Como se menciono antes, el ejecutar la aplicación sin la propiedad android:exported en dispositivos Android 11 e inferiores no tendrán problema pero si queremos que nuestra aplicación se ejecute en dispositivos Android 12 y posteriores se tiene que agregar dicha propiedad con valor verdadero

      Si se agrega la propiedad con valor falso no marcara error pero no se ejecutará, por lo que tiene que ser verdadero

      <activity
        android:name=".MainActivity"
        android:exported="true"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar">
          <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
      </activity>

      Loading

      INSTALL_FAILED_USER_RESTRICTED

      Error al correr aplicación en celular desde Android Studio, molesto error que al parecer aparece en celulares Xiaomi y/o con sistema MIUI

      Error:

      Failed to commit install session 309689147 with command cmd package install-commit 309689147. Error: INSTALL_FAILED_USER_RESTRICTED: Install canceled by user
      
      Error     Installation did not succeed.
      	  The application could not be installed: INSTALL_FAILED_USER_RESTRICTED
      	  Retry
      
      Session 'app': Installation did not succeed.
      	  The application could not be installed: INSTALL_FAILED_USER_RESTRICTED
      	  Retry

      Solución:

      La solución es muy sencilla solo hay que activar la opción Instalar vía USB en las opciones de desarrollador del teléfono, junto a la Depuración USB

      Solución 2:

      05/20 09:45:36: Launching 'app' on Physical Device.
      Installation did not succeed.
      The application could not be installed: INSTALL_FAILED_USER_RESTRICTED
      
      List of apks:
      [0] 'D:\Documentos\DESARROLLO\ANDROID\Random\app\build\outputs\apk\debug\app-debug.apk'
      Installation via USB is disabled.
      Retry

      Si ya está activa la configuración Instalar vía USB y el error está sucediendo a causa de una actualización del SO del teléfono entonces podemos desactivar la optimización MIUI, esto hará que nos pregunte de nuevo si permitimos la depuración por USB, entonces aceptamos.

      Desactivar la Optimización MIUI

      Casi al final de las Opciones de desarrollador encontraremos la opción Restablecer valores predeterminados

      restablecer_valores_predeterminados

      Presionamos varias veces hasta que aparezca debajo la configuración Activar optimización MIUI y la desactivamos

      optimizacion miui

      Aceptamos la advertencia

      aviso miui

      En mi caso el teléfono me pregunto si permito la depuración por USB nuevamente

      aceptar_depuracion_usb

      *Pero después volví a activar la optimización MIUI y ya no apareció el error lo que nos lleva a la Solución 3.

      Solución 3:

      05/20 09:45:36: Launching 'app' on Physical Device.
      Installation did not succeed.
      The application could not be installed: INSTALL_FAILED_USER_RESTRICTED
      
      List of apks:
      [0] 'D:\Documentos\DESARROLLO\ANDROID\Random\app\build\outputs\apk\debug\app-debug.apk'
      Installation via USB is disabled.
      Retry

      Puede ser que debido a una actualización de Android como del sistema MIUI nos aparezca este error y que solamente necesitemos desvincular el teléfono de la depuración por USB y activarla de nuevo

      opciones_de_desarrollador
      opciones_de_desarrollador

      Revocamos los permisos de depuración por USB

      revocar_depuracion_usb

      Desactivamos y activamos la depuración por USB

      depuracion_por_usb

      Aceptamos la depuración por USB

      permiso_depuracion_usb
      aceptar_depuracion_usb

      Loading