Categoría: Básicos de ingeniería

Aprende los fundamentos de la ingeniería de sistemas.

  • Código limpio – Haciendo código bien y bonito

    Código limpio – Haciendo código bien y bonito

    Cuando estas aprendiendo a programar te enfocas primero en la lógica, luego en el lenguaje y rara vez nos detenemos a pensar en la forma de hacerlo, es decir, como pasamos de la lógica al lenguaje. Es justamente el turno de revisar como debemos escribir este código, ver buenas practicas y como aplicarlas. El contenido de este post esta basado en el libro Código limpio(Clean code) de Robert C. Martin y también en mi experiencia. Lo estructurare tal cual esta dividido en el libro.

    ¿Por qué hacer código limpio?

    Si estas leyendo este post, o estas interesado en el libro, eres programador o futuro programador, y crees en la necesidad de hacer un código elegante. No por simple capricho o ego, si no por que a medida que te internas mas en el mundo del desarrollo de software, puedes ver sus falencias. Mientras estaba en el primer semestre de mi especialización en Ingeniería de software, tocamos el origen de este problema, se remonta a la conferencia de Crisis del software que se celebro en 1968, esta se llevo a cabo con el objetivo de identificar causas y dar posibles soluciones a los problemas con los que se venia trabajando el software y aun en la actualidad continua. Se identificaron muchas causas y se dijo que la calidad de un producto se mide por su funcionamiento. En aquel entonces sirvió, y esto dio paso a definición de metodologías, arquitecturas y patrones de desarrollo de software, pero gracias a estas nuevas proposiciones se descubrieron nuevos problemas que estaban ocultos ¿Por qué te cuento esto?, por una sencilla razón, “Aquel que no conoce la historia, está condenado a repetirla“. Miremos ahora el problema que nos concierne, y que actualmente no es tratado como un problema real, si no como un añadido, ya que son pocos los que trabajan con estas pautas de código limpio. La pregunta mas lógica a continuación sería ¿por qué es un problema no trabajar con código limpio? La respuesta te la dará la experiencia, en mi caso llevo varios años trabajando y he sido parte de fracasos de software precisamente por este detallito, se hace el código, y por las prisas, trabajo represado y falta de compromiso como profesional se hace el desarrollo a la carrera, y esto no es el problema. El problema no es correr, el problema es salirse de la pista para coger un atajo. Por ejemplo, inicias con un proyecto, tienes todas las ganas de hacerlo bien, es tu bebe y debes mimarlo, hacerlo fuerte y también sentirte orgulloso de el, pero te piden algo nuevo, o cambian las fechas de entrega y debes correr, ejercen presión sobre ti para generar una entrega rápida y optas por hacerlo rápido y olvidarte de ciertos estándares o la forma de trabajo con la que venias usando. Luego con el tiempo esto se transforma en una bola de nieve, va creciendo con cada iteración que se da, y esto es un grave problema, por que llega un punto en el que el código se vuelve muy difícil de mantener, las personas que lo trabajan se aburren y lo dejan de lado, Se convierte en un ciclo donde un error genera otro error, hasta el punto en que se piensa en reestructurar toda la aplicación, para lastimosamente luego cometer los mismos errores.

    Los lenguajes de programación han ido avanzando, encontramos desde lenguaje de maquina a lenguaje de alto nivel, que se acercan lo mas que pueden al lenguaje natural, pero si el programador es incapaz de expresarse correctamente su código estará lleno de errores, y los errores llaman mas errores. Otro caso, también podría ser que hagamos el código de afán y pospongamos el refinamiento, aquí entra la Ley de LeBlanc, que dice que después es igual a nunca, por eso, lo correcto es desde el inicio fijarnos un camino y seguir las buenas practicas y estándares. Debemos convertirnos en defensores del código elegante, del profesionalismo, eso hace parte de nuestra ética como ingenieros.

    El código limpio debe cumplir ciertas características, ser de fácil lectura, eficiente, concreto, legible, mejora con cada iteración y no contiene duplicados. En el desarrollo de este post entenderás estos principios mas a fondo.

    Nombres con sentido

    En la programación todo el tiempo estamos utilizando nombres, para las variables, funciones, clases. Por lo que la primera regla para un código limpio es crear correctamente estos nombres.

    Dicientes

    Esto se refiere a la capacidad de expresar su propósito, dejar de lado aquellas variables de unas cuantas letras que no expresaban absolutamente nada.

     

    Ejemplo de nombre de variable

    //Incorecto
    int a = 12;
    //Correcto
    int cantidadMeses = 12;

    Diferentes

    Los nombres de las variables, métodos, clases, etc. deben ser diferentes entre si y expresar correctamente su funcionamiento. Por ejemplo, supongamos que tenemos dos funciones, una se llama traerUsuario y la otra getUsuario. Esto nos puede llevar a una confusión y a perder tiempo revisando el código de cada una de estas funciones para verificar cual es la que necesitamos. Esto se puede evitar asignando nombres claros y diferentes.

    No redundantes

    Esto se refiere a no repetir las mismas palabras dentro de un nombre, ya que podemos confundir al lector. También lo podemos aplicar a no repetir los tipos de datos. Miremos el siguiente ejemplo:

    Redundancia en los nombres

    string nombreString = "";

    La palabra string dentro del nombre esta de mas, y si es necesario especificar el tipo de dato, se aconseja que sean palabras diferentes a las reservadas por el lenguaje.

    Pronunciación

    Un dato que me pareció curioso y válido, es que pasamos la mayoría del tiempo de codificación, no escribiendo código, por el contrario, la mayor parte esta dedicada a la lectura del código. Por este motivo tanto énfasis en hacer un código limpio y legible, por eso cada bloque de código se debe poder pronunciar y acercarse lo mas que se pueda al lenguaje natural, claro esta sin excesos, tampoco podemos crear todo un párrafo como nombre de algún objeto, siempre hay que tener buen criterio y la experiencia y uso de estas técnicas son las que nos ayudaran a mejorar.

    Codificaciones

    Debemos evitar el uso de siglas o codificaciones propias, ya que lo que puede ser claro o evidente para mi, puede que no lo sea para los demás. Si se desea usar algún tipo de convención, sigla o codificación especial debe ser consensuada y compartida a cada integrante del equipo.

     

    Para concluir este segmento y continuar revisando los principios del código limpio concluiremos diciendo que los nombres deben tener sentido dentro de su contexto, ser concretos, claros. Podríamos hacer una ejercicio, es tedioso y poco productivo, pero es muy educativo; podemos pasarla la lista de nombres a otra persona y si logra armar el contexto(clase) a partir de nuestros nombres de variables y funciones hemos realizado un excelente trabajo.

    Algunas recomendaciones para nombrar clases es no usar verbos, por el contrario en las funciones se recomienda siempre usarlos. Y por ultimo, aunque parezca contradictorio, intenta hacer nombres cortos.

  • Hello World – Quiero programar ¿Cómo comienzo?

    Hello World – Quiero programar ¿Cómo comienzo?

    Soy programador hace unos 5 años, empecé dando mis primeros pasos empíricamente, leyendo blogs, viendo vídeos y por su puesto con el método de prueba y error, que considero que es la mejor manera de aprender a programar. Pero antes de que te lances a programar déjame decirte que es muy fácil y al mismo tiempo no lo es. En mi opinión creo que todos deberían saber programar, pero no todos se pueden dedicar a esto, de aquí radica mi anterior afirmación.

    Hoy precisamente te quiero compartir los fundamentos de programación, que te van a ayudar muchísimo si quieres dedicarte profesionalmente a esto, o si no como dije todos deberían saber programar.

    El nombre del pots es Hello World (Hola mundo), y estas son las primeras palabras de un programador, independientemente del lenguaje siempre serán nuestros primeros pasos y al igual que en la vida, antes de correr debes andar, y te daré unos consejos para que te inicies exitosamente en la programación.

    Tomate tu tiempo

    Cada individuo aprende de maneras diferentes y a intervalos diferentes de tiempo, en mi caso la lectura y la practica me ayudaron muchísimo, así­ que al igual que yo lo hice, puedes encontrar tu método de aprendizaje, te aconsejo muchísimo que te apoyes en la web, busques literatura, libros, plataformas o aplicaciones que te ayuden, encontraras muchos recursos gratuitos y de pago, como por ejemplo este sitio web o mi canal de YouTube, creeme que esta comunidad es muy grande y muy colaborativa.

    Una vez tengas los recursos de aprendizaje, dedicale tiempo al mismo, y sobre todo practica lo que haz aprendido. Mide tu ritmo de aprendizaje, como dije al principio, todos tenemos nuestra propio ritmo de aprendizaje, así­ que no te angusties si no entiendes algo. Busca la manera de entenderlo, si no logras comprender cambia el recurso o la metodología. Algo que te dará un gran impulso es crear un proyecto propio, busca algo que te apasione y llévalo al mundo de la programación, por ejemplo ¿tienes una idea? empieza haciendo bocetos de la idea, empieza a programar un modulo pequeño de la misma, veras que con el tiempo esa pequeña idea que te apasiona te impulsara a aprender y mejorar, y dirás ¿Cómo voy a hacer mi idea realidad si no se programar? pero ahí­ es precisamente donde radica lo bonito del asunto, a medida que empiezas a desarrollar tu idea encontraras impedimentos y estos te empujaran a aprender y a superar estos retos.

    Todo esta en la mente

    Vuelvo a repetir esta frase, “todos deberían saber programar”, y es que la programación esta en todo, programar no es solo sentarse frente a un computador y digitar hasta que salga fuego entre los dedos; la programación esta en cada decisión que se toma, la programación inicia en nuestra proceso de pensamiento. Por ejemplo, Cuando queremos elegir entre un helado de fresa o chocolate (If – Else) utilizamos siempre condiciones, podemos decir que el ser humano programa antes del nacimiento de los computadores y es que todo lo podemos pasar a condiciones, ciclos o algoritmos. ¿Y a que viene toda esta carreta? Precisamente piensa en las situaciones cotidianas como un algoritmo, intenta deducir cada función, cada control. Por ejemplo en el anterior ejemplo de la selección del helado intenta pensar en el seudocódigo, a continuación te doy un ejemplo de como hacerlo.

    programa elegirHelado
        Si heladoChocolate esMejor Entonces
            comprar heladoChocolate
        Si no Entonces
            comprar heladoFresa
        Fin Si

    Como vez, es algo muy sencillo de entender y que luego se puede pasar fácilmente a cualquier lenguaje de programación; esto lo puedes hacer mentalmente o en un a hoja de papel o si prefieres puedes utilizar alguna herramienta como PSeInt, y esto va a ser un gran ejercicio, es mas, ahora hay herramientas con las que puedes hacer juegos 2D y aplicaciones sin siquiera escribir una lineá de código, solo debes estructurar correctamente el seudocódigo y la plataforma hará el resto, ejemplo de estas aplicaciones son Scratch o Construct 2.

    Así que la esencia de la programación esta en pensar antes de actuar, dedícale tiempo al análisis del problema, estructura bien la solución, ve de pequeño a grande, piensa en pequeñas soluciones que se unifiquen en una grande, piensa en pequeñas ideas, pequeños problemas, aprende a descomponerlo todo en pequeñas situaciones o funciones para así luego formar algo de lo que te sientas satisfecho. Y es mas, este es un principio de la programación orientada a objetos, que luego revisaremos en otro post.

    Desarrolla tu estilo

    Es muy importante que te sientas a gusto con lo que estas haciendo, de lo contrario lo vas a ver como un trabajo o peor como algo muy frustrante y tedioso. Se podría colocar un paralelismo entre la programación y la gastronomía, en las dos hay recetas, hay utensilios y se desea la satisfacción del consumidor, pero lo que yo quiero destacar es que la realización de un chef esta en innovar y crear, no es lo mismo seguir la receta a modificar o crear tu propia receta; en la programación es igual, debes conocer los estándares, conocer ciertas reglas básicas, y estas cambian dependiendo de las herramientas que uses, pero siempre estará tu sello personal en cada código que escribas.

    Este punto es un poco difícil de explicarlo y entenderlo, solo con la practica lo podrás notar, cuando comiences a trabajar con otros programadores, te darás cuenta, en el código se puede saber el conocimiento de una persona, su organización, hasta su estado de animo y aunque no lo parezca este punto es muy importante, por que debes desarrollar y mejorar tu forma de transmitir esas ideas y de plasmarlas en un código.

    Solo me queda decirte animo, no te rindas, practica y practica, nunca se termina de aprender, siempre puedes mejorar mas, y no te pierdas los siguientes post, este solo es el principio de una serie sobre los fundamentos de programación. También no te olvides dejar tu comentario opinando, preguntando o sugiriendo algún tema de interés.

  • VirtualBox y Hyper-V

    VirtualBox y Hyper-V

    Tengo instalado Windows 8.1 y utilizo Virtualbox para muchas practicas con Linux, pero oh sorpresa, después de instalar Virtualbox no funciona correctamente. Tuve muchos problemas para correr Virtualbox y llegue a pensar que no lo podría correr de nuevo, pensé en cambiarme a Vware o VirtualPc, pero antes de rendirme decidí buscar información del problema googleando. No encontré buena información acerca del problema, la mayoría recomiendan cambiar el programa de virtualización, por lo que me había decido a hacerlo, pero después, antes debía seguir en unas practicas que estoy haciendo para Windows Phone y ahí surgió la respuesta.
    Para hacer las pruebas en el emulador de Windows Phone se Utiliza Hyper-V que viene ahora instalado y activado por defecto para Windows 8. Hyper-V es un programa de virtualización para sistemas de 64x. Se me ocurrió que tal vez por este motivo no corría Virtualbox bien, ya que se veía un poco lento y al instalar algún sistema operativo se quedaba pegado o no cargaba. Busque un poco de información y mi hipótesis era cierta, Hyper-v y Virtualbox no pueden coexistir, ya que una vez se inicia el sistema operativo se carga Hyper-v, Virtualbox no podrá funcionar bien. Así que ahora va la solución. Algo radical seria desinstalar Hyper-V, pero en mi caso que lo utilizo para desarrollo no es una buena idea, por esto opte por deshabilitarlo.
    Aquí van los pasos.

    1. Abrir el símbolo del sistema como administrador.
    2. En el cmd vamos a utilizar los siguientes comandos:
    bcdedit
    bcdedit /set hypervisorlaunchtype off
    bcdedit /set hypervisorlaunchtype auto
    

    bcdedit proporciona la lista para describir las aplicaciones de arranque y configuración de las aplicaciones de inicio.

    Con /set hypervisorlaunchtypepodemos establecer el modo de arranque para Hyper-V que puede ser auto para iniciarlo u off para detenerlo. En este caso como queremos detenerlo vamos a ponerlo en off y luego reiniciamos la maquina.
    Ahora debemos reiniciar el equipo y ya podemos utilizar Virtualbox sin ningún problema. Después del reinicio Hyper-V ya no interferirá con el funcionamiento de Virtualbox y si queremos volver a habilitar Hyper-V solo debemos colocar su estado de nuevo en auto y reiniciar. Es un poco tedioso pero funciona y se puede programar una bat para hacerlo con un solo click.
    Espero te sirva esta información, compártela y comenta.

  • Hilos de ejecución

    Hilos de ejecución

    Un hilo es simplemente una rutina que permite ejecutar tareas simultáneamente. La utilización de hilos permite ejecutar tareas en paralelo y compartir los recursos durante la ejecución.

    Los sistemas operativos hacen uso de los hilos permanentemente, ya que necesita hacer varias tareas simultáneamente. Estos hilos funcionan como una cola, en donde cada tarea que se anexa al hilio espera su turno para ser ejecutada. Cuando varios hilos comparten algún recurso, si alguno de ellos modifica el recurso, inmediatamente los demás hilos sabrán del cambio y se verán afectados.

    Cada hilo de ejecución tiene un puntero de instrucciones (Contador de programa), encargado de indicar el estado o posición dentro de la secuencia de instrucciones perteneciente al hilo. También tiene una pila de llamadas, donde se registra la secuencia de subrutinas y el punto de retorno de cada una de ellas. Por ultimo cada hilo tiene acceso a la CPU y a el valor de los registro de manera independiente.

    Para ver en detalle como funciona un hilo y que características y ventajas tiene frente a los procesos vamos a crear un ejemplo practico para visualizarlo.

    Los hilos se utilizan frecuentemente para generar respaldos… por ejemplo, estamos ahora editando un archivo csv, abrimos un programa de hoja de cálculo; suites como Office, LibreOffice, OpenOffice implementan este sistema, hasta aplicaciones en la nube, es decir que crean un hilo donde se guarda el documento de respaldo y mientras editas el archivo en cada cambio que vas haciendo va guardando una copia temporal, en caso de que el archivo se cierre inesperadamente el trabajo realizado no se perderá.

    Bueno, esto fue un pequeño resumen introductorio a lo que son los hilos. Si quieres mas información, como siempre puedes referirte a la Wikipedia o al omnisciente Google y no olvides dejar tus aportes o inquietudes en los comentarios.

  • Software Libre – Software Freedom Day Bogotá 2013

    Software Libre – Software Freedom Day Bogotá 2013

    El viernes y sábado 27 y 28 de septiembre se celebro en Bogotá este genial evento, que tiene como objetivo difundir y enseñar acerca de las tecnologías libres y su gran capacidad y ventajas. Conoce mas sobre lo que sucedió siguiendo este post y viendo algunos videos de la conferencias que allí se dieron.

    Pero antes es muy importante recordar la labor que realiza Software Freedom Day, de enseñar y promulgar el software libre, ver el increíble potencial que este tiene y las personas que hay detrás. Es extraordinaria la comunidad y los principios que la rigen. El valor mas importante del software libre no es su precio, que en la mayoría es gratuito (No por ser libre no se puede vender), su verdadero valor radica en el conocimiento, el gran aprendizaje que se adquiere a usar estas herramientas de gran calidad.

    Es totalmente inevitable que al involucrarte no termines haciendo parte de una comunidad. Esa es realmente la meta del software libre, crear comunidad, crear conocimiento compartido y sobre todo una cultura de auto-aprendizaje y de solidaridad.

    Bueno… les comento un poco el itinerario del evento aquí en Bogotá, en las horas de la mañana se realizaron varias conferencias que fueron iniciadas por Ibraim Hernández de tdrobotica, quien inauguro este super evento con una charla espectacular, “El hardware libre”, entre otros conferencistas que reconocí estuvo Juan pablo Rojas, “El programador joven” de Mejorando.la, dando la conferencia “Hackeando Facebook”; también estuvo el representante de la fundación Corre Libre y un representante del Ministerio de las TICs de Colombia.

    En conclusión el evento estuvo genial, puedes ver algunas conferencias en el siguiente vídeo, espero las disfrutes, y de antemano les pido disculpas, tuve algunos problemas con la cámara al grabarlos y la calidad de algunos videos es baja o se ven cortados… pero cualquier inquietud o sugerencia no duden en comentármela, ya sea por aquí, o directamente en el canal de YouTube o Twitter @Jhontona.


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

  • Lenguajes tipados vs lenguajes no tipados

    Lenguajes tipados vs lenguajes no tipados

    Trabajo en el desarrollo web hace años, y he utilizado diferentes lenguajes de programacion, fuertemente tipados y no tipados. Para comenzar vamos a entrar a ver algunas características de los lenguajes fuertemente tipados (o solo tipados). Cuando nos referimos al tipado, estamos hablando justamente de los tipos de datos que se manejan en un determinado lenguaje de programación, se refiere a los tipos y la forma en que deben usarse. Para colocar un ejemplo rápido, cuando estamos aprendiendo a programar en seudocódigo no utilizamos tipado, es decir que ninguna de las variables que definimos están ligadas a algún tipo de variable, “simplemente son variables”. Vamos a ver un ejemplo un poco más gráfico:

    subproceso funcion bizzbuzz
    para (i <- 1; i<=100; i++) {
        establecer print_number a verdadero;
        Si i es divisible por 3
            escribir "Bizz";
            establecer print_number a falso;
        Si i es divisible por 5
            escribir "Buzz";
            establecer print_number a falso;
        Si print_number, escribir i;
        escribir una nueva línea;
    }

    En el anterior ejemplo, tenemos declarada una variable i (Asociada siempre a un contador), el seudocódigo es estilo C, pero no sabemos de qué tipo es la variable. Si revisamos el código nos daremos cuenta que i al ser inicializada recibe el número 1, aquí no nos preocupamos por qué tipo de valor recibe la variable, solo sabemos que proceso se quiere hacer, pero si deseamos pasar el seudocódigo a programación real, en este caso C (que es fuertemente tipado), debemos decirle que la variable es un entero.

    int i = 1;

    Ahora… Desde mi punto de vista los lenguajes fuertemente tipados son más difíciles de trabajar, pero son más comunes y en muchos lugares más “promocionados”, por ejemplo, en Colombia, en las universidades se enseña alguno de estos lenguajes: Java, C, C#, C++, Basic. Sales de la universidad por lo menos sabiendo los tipados básicos (enteros, decimales, booleanos, texto). Una gran desventaja es que cuando manejas diferentes tipos de datos y quieres hacer operaciones entre ellos debes convertir los datos (“parsear”), crear muchas más variables y entender que tipo de dato estas trabajando y que funciones tiene. Los lenguajes tipados incrementan el tiempo de desarrollo y son más difíciles de aprender.Hey!!!, pero no todo es malo, una ventaja de estos lenguajes es que son compilados, es decir que se traducen directamente a lenguaje de máquina y esto al manejar grandes cantidades de datos hace diferencia, es mucho más rápido en la máquina seguir el proceso que debe realizar.

    También tenemos los lenguajes con tipado dinámico y no tipados… ya entendiendo lo del tipado, la definición de estos será más breve.

    Los lenguajes no tipados, o débilmente tipados, al definir una variable no requieren que se les asigne un tipo de variable, es más pueden cambiar el tipo de variable en cualquier momento, el caso más conocido se presenta en PHP, este lenguaje, no es tipado, y no hay ningún problema en que una variable sea una Array y luego se convierta en un entero o un String.

    Podemos decir que los lenguajes con tipado dinámico se ubican en el medio, las variables se pueden o no vincular a un tipo o al inicializarlas reconocen el tipo de variable. La mayoría de los lenguajes que son de tipado dinámico tienen la característica de ser interpretados, como Python o Ruby.

    Creo que en la mayoría de los desarrollos web se debería usar lenguajes con tipado dinámico, esto agiliza el desarrollo y facilita la comprensión del código, sobre todo si somos nuevos en la programacion. Sin embargo, si se requiere de las ventajas de los lenguajes compilados, se pueden desarrollar módulos especializados. Así se hacen los grandes desarrollos, varios lenguajes y herramientas, para sacar lo mejor de cada uno. Claro está, si el desarrollo o arquitectura amerita esto, ya que esto agrega un grado de complejidad al desarrollo y al mantenimiento.

    Tip: para saber que lenguajes son tipados es ver la definición de sus variables, por ejemplo, si hay algún tipo de definición de variable antes de nombrarla seguro es un lenguaje tipado, de lo contrario es no tipado o dinámico…

    Nota: “var” en algunos lenguajes es una excepción… es algo raro, por ejemplo, en Javascript se utiliza en el manejo de los scopes pero en otros lenguajes sirve para que al inicializar una variable esta detecte el tipado.

    Tipado o no tipado. ¿Cuál debo usar?”

    Esta pregunta no se responde por tipado o no tipado, está directamente ligada a la arquitectura y requisitos del proyecto. Por lo que es el arquitecto de negocio quien construye la infraestructura y define las herramientas que se usaran. Pero si te puedo decir algo, si estas aprendiendo a programar yo te recomendaría usar lenguajes de tipado dinámico, como PHP, Python o Javascript. ¿Por qué?, muy sencillo, al ser de tipado dinámico te permite cierto grado de fallo, y así mientras programas y haces tus experimentos puedes ir reconociendo los diferentes tipos de variables y como trabarlas. En un principio mientras aprendes te será mucho más fácil, luego podrás reconocer los tipos básicos y más complejos.

    PHP en versiones superiores a la 5, introducen conceptos más complejos, entre estos los tipos, ya que esto marca unas directrices, que indican lo que puedes hacer con cada variable y además en lenguajes fuertemente tipados asignan un espacio en memoria especifico, optimizando el resultado final. En el ámbito de Javascript con la llegada de Typescript, este dio un gran paso al abrir la puerta a la creación de aplicaciones complejas basadas en Javascript de una manera más sencilla, esto gracias a la inclusión de conceptos heredados de la programacion orientado a objetos, entre estos conceptos están los tipos de datos.

    Bueno, espero ya tengas una idea más clara de que es un lenguaje tipado y no tipado, y cuáles son los principales tipos de datos usados… estos también aplican para las bases de datos.

    Lenguajes dinámicos y estáticos

    Esta sección la agrego 6 años después, con un poco más de experiencia y queriendo dejar un poco más claras las diferencias. No quise tocar el post original para que los anteriores lectores no se pierdan si releen. Ahora, ¿por qué ese título? Básicamente son sinónimos. Un lenguaje dinámico está definido como un lenguaje sin tipado, débilmente tipado o con tipado dinámico. No fuerzan a la utilización de tipos de datos. Otro dato importante es que estos lenguajes nacieron para programas cortos o scripts por eso también se les conoce como lenguajes de scripting. Aunque ahora todos son robustos y se pueden utilizar con diferentes paradigmas de desarrollo. Mientras, un lenguaje estático se denominan de esta manera por que se requiere especificar detalles de bajo nivel, el más característico es el tipo de variables a usar. Por ejemplo, en C, C++, C#, Java se debe definir el tipo de variable y entre estos hay subtipos. Un numero puede ser entero o de punto flotante, por ejemplo.

    Estático o tipado son sinónimos.

    Una vez definido el tipo de variable esta no se puede cambiar. Un entero (Integer) va a ser entero por siempre y para siempre.

    Algo importante para tener en cuenta es que un programa escrito con un lenguaje estático generalmente corre más rápido que su equivalente en un lenguaje dinámico. Esto es porque no deben pasar por un intérprete para ser ejecutados (Java es un caso especial). Aunque la diferencia de tiempo de ejecución es mínima en estos momentos ya que la mayoría de las veces el rendimiento depende mucho de la destreza del programador y del tipo de tarea que se quiera hacer. Por ejemplo, si se trata de un trabajo de procesamiento de una cantidad significativa de datos y se requiere el más alto rendimiento desde el inicio se debe optar un por un lenguaje estático. Aun así­ eso habrá que evaluarlo para demostrar que es totalmente necesario, que esos milisegundos entre cada proceso ganados si representan un valor real, ya que en contraparte escribir código en un lenguaje dinámico es mucho más rápido.

    Hasta aquí­ llega esta comparación y aporte. Espero que les sea de utilidad y no olviden dejar sus comentarios.


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

  • Consola y ejecución por lotes

    Consola y ejecución por lotes

    La gran mayoría de programas que utilizamos comúnmente cuentan son una interfaz gráfica definida (botones, menús, etc.), pero entonces ¿por qué en los sistemas operativos aún sigue existiendo este ancestro? ¿Aún tiene alguna utilidad?

    Cuando estás trabajando sobre un sistema operativo basado en Unix es muy frecuente el uso de la terminal, aunque esto ha menguado con el paso de los años, precisamente por la gran ayuda que ofrece la interfaz de usuario. Es más fácil para un usuario, hacer un paso a paso con una interfaz gráfica, aunque tome más tiempo, que usar una terminal, ya que este requiere un aprendizaje previo.

    Las interfaces son geniales, y cada día son más intuitivas y fáciles de usar, y hay profesionales encargados de brindar la mejor experiencia al usuario y se enfocan en esta parte de las interfaces.

    ¿Por qué seguir usando una consola? Esta consola siempre ha estado, aun antes de la aparición de sistemas totalmente gráficos, y continua ahí­, en algunas distribuciones de Linux aun continua siendo una herramienta muy importante en el trabajo sobre la máquina, pero en Windows esta relegada en un menú de herramientas del sistema que rara vez usamos. Pero la razón de por qué continua el intérprete de comandos funcionando es muy sencilla, cuando tenemos alguna tarea repetitiva podemos utilizar estos scripts que ejecutaran una serie de instrucciones para completar la tarea, esto se puede hacer automáticamente. Un ejemplo para destacar son los backups. En nuestra maquina guardamos datos que no queremos perder y muy rara vez hacemos un backup, y cuando sucede algo, adiós información y nos vemos en la tediosa tarea de recuperar los datos, esto se podría evitar haciendo un script que copie mis archivos , los empaquete, los guarde en una ubicación especifica y luego apague la máquina, todo esto sin intervención del usuario. Es más, para ponerlo de una forma muy clara, todos los procesos que puedes hacer con la interfaz gráfica referente al sistema operativo, los puedes programar para que se realicen desde un script. Nada más al ponerlo en esta forma se vienen ideas geniales a la cabeza, para usarse en el trabajo, en la casa, o gastarle alguna broma a alguien.

    Definitivamente por eso sigue ahí­ esa terminal. Una ventanita llena de letras que a veces no se entiende nada, pero con un gran potencial. Si quieres aprender más sobre este tema te dejo estos videos en los cuales puedes comentar y hacer preguntas y de seguro te estaré ayudando en lo que pueda.

    Gracias por haber leído el post y recuerda suscribirte, comentar y compartir.


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

¡Hola a todos los entusiastas de la tecnología! Quería informarles que en mi blog utilizamos cookies para mejorar la experiencia de usuario. Estas pequeñas herramientas nos ayudan a personalizar el contenido y ofrecer funciones específicas. Al continuar explorando el sitio, aceptas nuestro uso de cookies. Puedes obtener más información sobre cómo las utilizamos en nuestra política de privacidad. ¡Gracias por ser parte de esta comunidad tecnológica! 🍪    Más información
Privacidad