Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas

Como ser un buen programador

Cómo ser un buen programador

El presente artículo se base en experiencias propias enfocadas en las mejores prácticas y habilidades que se deben de ir formando poco a poco para ser un buen programador, y en un mundo donde la tecnología avanza a pasos gigantescos.

Cómo ser un buen programador? creo que es una de las preguntas que nos hacemos cada vez que aprendemos un nuevo lenguaje de programación o simplemente ya dominamos a nuestra consideración un porcentaje considerable del lenguaje y queremos saber si estamos desarrollando nuestros proyectos de manera correcta, y cuando hablamos de forma correcta simplemente es desarrollar código limpio, reutilizable para otro proyectos y mantenible en el tiempo.

En base a lo anterior, pudiéramos adaptar un viejo dicho a nuestro mundo de programación:

"Todos los caminos conducen a Roma, pero solo uno de ellos es el camino más óptimo."
Que te quiero decir con esto? es simple debemos reducir al máximo la complejidad de nuestros algoritmos.

Reduce al máximo la complejidad de tu algoritmo

La idea es sencilla si reduces la complejidad de tus algoritmos, estarías consumiendo menos procesador, memoria, disco o inclusive ancho de banda de red de un entorno informático, que es el ambiente de ejecución de tus programas.

En español por favor.... Vamos a ver un ejemplo para entenderlo mejor:

Se desea desarrollar un programa que obtenga la sumatoria de la diagonal principal de una matriz de 3x3

como ser un buen programador

Como la imagen lo indica la diagonal principal de una matriz es aquella en que el numero de fila es igual al número de la columna, es decir i=j

Solución NO optima

for(int i=0; i<3; i+=1){
for(int j=0; j<3; j+=1){
if(i==j)
acum+=m[i][j];
}
}
printf("La sumatoria de la diagonal principal es: %i \n", acum);

Análisis:

Cuantos veces se ejecutan los ciclos?

Respuesta: 9 veces

Solución óptima

for(int i=0; i<3; i+=1){
acum+=m[i][i];
}
}
printf("La sumatoria de la diagonal principal es: %i \n", acum);

Análisis:

Cuantos veces se ejecutan los ciclos?

Respuesta: Solo 3 veces

Con esto ejemplo, creo que ahora si estamos claro que es reducir la complejidad de un algoritmo.

Aprende a desarrollar con patrones de diseño

Según la Wikipedia:

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Un patrón de diseño resulta ser una solución a un problema de diseño

Aprendiendo patrones de software vamos a poder evitar provocar el famoso y no deseado "código espaguetti", caracterizado por líneas de códigos repetidas, códigos entre mezclados, poca reutilización de código, llamadas a procedimientos y funciones innecesarias, entre otros problemas más, dando como resultado un proyecto difícil de leer y mantener en el tiempo y ni se diga si en el proyecto van a trabajar varios programadores, se llega inclusive al error de que un programador codifica lo mismo que otro programador, o resuelve algo que ya estaba resuelto.

Ejemplo:

MVC (Modelo-Vista-Controlador)es un patrón de software que nos permite separar o descomponer nuestro proyecto en capas, la capa vista es donde se programan las interfaces gráficas, el controlador es la que recibe las peticiones del usuario y las resuelve directamente con la vista o con el modelo, el modelo es la única autorizada para interactuar con las bases de datos.

Imaginemos una tienda virtual Online en la cual hay un botón "Comprar" que permite valga la redundancia comprar un producto. El flujo del sistema sería así:

  • La capa vista muestra el formulario al usuario con los detalles del producto y el botón de comprar
  • El usuario le da clic a comprar
  • El controlador recibe la petición de compra del usuario
  • El controlador re direcciona la petición hacia el modelo
  • El modelo consulta en la base de datos la existencia del producto, y actualiza la tabla de productos para rebajar del inventario el producto comprado, y adicional registra la compra del producto en la tabla compra
  • El modelo le envía la confirmación de compra exitosa al controlador
  • El controlador recibe la confirmación del modelo y le indica a la vista que despliegue un mensaje al usuario de compra exitosa
  • El usuario recibe el mensaje de compra exitosa :)

De esta manera hemos visto, que cada quien tiene sus propias responsabilidades, de esa forma evitamos el código espaguetti y ya no sería un problema contratar a varios programadores, ya que cada quien va a trabajar en la capa que le corresponda, de hecho he trabajado en sistemas webs, en los cuales hay diseñadores que se encargan de simplemente construir la interfaz gráfica del sistema(formularios, css, botones) sin inyectar una solo línea de código de programación

Trata de utilizar Framework

Un Framework o marco de trabajo te va a permitir desarrollar código utilizando algún patrón de software existente, pero ya contiene la estructura del proyecto y maneja una gran cantidad de librerías, módulos y componente pre cargados que nos ayudarán a realizar conexiones a base de datos, construir interfaces gráficas, realizar operaciones CRUD (Create, Read, Update, Delete) de registros, evitando de esta forma tener que "reinventar la rueda", y en vez de invertir tiempo de codificación en rutinas de seguridad, validación de datos, o acceso a base de datos, nos enfocaríamos en resolver los problemas en sí de nuestro proyecto como la vender o comprar productos, realizar reservas, entre otros, que son los puntos específicos a resolver dependiendo de la naturaleza del proyecto.

Por otro lado, el Framework te permite desarrollar entre varios programadores sin ningún problema, ya que tiene una estructura bien definida del proyecto, por ejemplo los diseñadores tienen su propio espacio de trabajo, así como los encargados de las bases de datos y los desarrolladores de la lógica de negocio del sistema, y tranquilamente cada quien puede estar haciendo su trabajo en el mismo framework sin entorpecer el trabajo del otro, a esto se le suma que el framework posee su propia documentación que nos permitirá entender su funcionamiento y la manera correcta de poder desarrollar sobre el, de esta forma evitamos tener que pensar como otro programador.

En base a lo anterior, los framework se clasifican en Backend y FrontEnd, los de FrontEnd funcionan del lado del cliente, y Backend del lado del servidor

Ejemplos de Framework:

  • Simphony
  • Laravel
  • nodeJS
  • Angular
  • Entre otros
  • Bootstrap (framework para el diseño de interfaces web)

Ahora bien, si no te gusta desarrollar con framework, debes crear tu propio framework, pero eso implicaría la inversión de tiempo, en no solo codificar, sino en documentar, aparte de que un framework está desarrollado por una comunidad de desarrolladores o una empresa en la cual pusieron su empeño diseñadores, programadores, especialistas en seguridad informática, administradores de base de datos, entre otros. Entonces en mi opinión particular lo más aconsejable es usar framework para desarrollar nuestros sistemas.

Esfuérzate por lo práctico y no por lo filosófico

La teoría es buena, pero si gran parte de nuestra curva de aprendizaje se centra en practicar ejemplos genéricos o filosóficos nunca nos vamos a poner a prueba y cuando nos toque enfrentarnos a casos prácticos de la vida real lo más seguro es que acabemos frustrado.

Para evitar lo anterior, lo mejor será ir de lo filosófico a lo más práctico posible, Con esto te quiero decir que si estás aprendiendo un nuevo lenguaje de programación, o si estás aprendiendo a usar un framework, o si estás aprendiendo un patrón de software, lo mejor sería tratar de practicar con un caso de estudio de la vida real como por ejemplo, el desarrollo de un sistema de facturación, de compras, de ventas, de una agencia de viajes, entre otros, de tal manera que te entrenes en un ambiente parecido al que te vas a enfrentar en tus próximos proyectos, ya que estos proyectos contienes conexiones a base de datos, validaciones, bastante lógicas de negocios, y un largo etcétera que debemos resolver.

Aprende solo de los mejores

El problema de la Internet actual no es que no haya información, al contrario hay mucha información, pero su mayoría no está filtrada, y cuando dijo filtrada es que no sabemos si es verdad o mentira, si la información es real o ficticia, o si es de buena calidad o no, por ende verificar la reputación del recurso digital es de suma importancia para tenerla como fuente de consulta

En tal sentido, trata de estudiar en fuentes de reconocida reputación, por ejemplo si estás estudiando Java lo mejor es aprender de la documentación en línea ofrecida por Oracle. Con esto no te quiero decir que no busques en foros u otros sitios alternativos, por el contrario te recomiendo que te inscribas en foros, te suscribas a listas de correos de soporte y cualquier medio digital que trate de la temática en cuestión, un buen ejemplo que te podemos dar de un foro es Stack OverFlow allí se comentan soluciones a problemas reales que en algún momento a algún programador como tú le paso y compartió la solución en Internet.

También, es totalmente valido aprender de libros, acá te recomiendo unos cuantos:

  • Clean Code
  • Patrones de diseño Gamma
  • Code Simplicity

Convierte en un autodidacta

La evolución de la Internet y la creciente demanda de nuevas tecnologías tanto en entornos de escritorio, móvil y web ha ocasionado una considerable exigencia a los programadores, haciendo que la curva de aprendizaje de muchos sea una montaña rusa, y para poder estabilizarla es necesario que cambiemos la forma de aprender no solo nuevos lenguaje de programación, sino también nuevos conceptos, nuevas plataformas, nuevos patrones de diseños, nuevos framework, inclusive nuevos paradigmas

Es por todo lo anterior, que ya no nos podemos dar el lujo de esperar que la empresa nos tome en cuenta para un plan de capacitación, y dijo que es un lujo, ya que la mayoría de las empresas cuentan con un presupuesto muy limitado para cursos de tecnología y mucho menos podemos esperar que algún compañero o amigo nos dedique su tiempo para enseñarnos.

En base a lo anterior, lo más recomendable es aprender por nuestra propia cuenta, centrándonos en los ítems comentados anteriormente, como lo de estudiar de fuentes de buena reputación, así como aprender de libros, intentar resolver problemas de casos reales a fin de aprender haciendo, y aprender a usar framework

La práctica hace el maestro

En nuestro caso como programadores, codifica, codifica y vuelve a codificar. La práctica es la clave del éxito para ser un buen programador, entre más practiques, mejor será tu tiempo de respuesta para resolver problemas, si está aprendiendo Java, ponte a practicar herencia simple, herencia múltiple, polimorfismo, sobre carga de operadores, llamadas al constructor base, ligadura dinámica. Si estás practicando Javascript empieza practicando la manipulación del DOM (modelo de objeto de documento) crea elementos html a partir de javascript, anida los elementos, recórrelos, imprimelos. En fin plantea cualquier problema de la vida real y resuelvo a punta de código.

Escribe código reutilizable y de calidad

Este punto es uno de los más importantes a la hora de saber si una persona es un buen o no programador. La idea de la reutilización de código se centra en desarrollar código genérico que resuelva no solo un problema en específico sino que resuelva varios al mismo tiempo y que dicho código se adapte a cualquier proyecto

Ejemplo: si nos encomiendan desarrollar una función que calcule la diagonal principal de una matriz, lo más idóneo es que esa función reciba como argumento una matriz de cualquier dimensión y de cualquier tipo de dato (enteros, reales), de tal manera que la función resuelva matrices de 3x3 o 5x5 o cualquier otra dimensión y no se tenga que codificar una función para matrices entero y otra para flotantes.

Otro ejemplo sería una función que permita imprimir los registros de una tabla ubicada en una base de datos, lo más idóneo sería que la función reciba como argumento el nombre de la tabla y esta reconociera automáticamente los campos que está posee y los imprimiera sin necesidad de que el programador especifique uno a uno el nombre de cada campo

Como compilar en ATOM

Como compilar en ATOM

Qué es ATOM

ATOM, es quizás uno de los editores más utiizados en la actualidad, las razones son muy sencillas: es de código abierto desarrollado por GitHub, siendo un editor muy sencillo y ligero, a parte de eso es muy fácil de usar y bastante atractivo tanto así que el Modo Power con sus particulas explosivas hacen de la codificación se una actividad bastante entretenida.
Por otro lado, ATOM es totalmente libre y multiplataforma, eso quiere decir que se puede instalar en Linux, Windows, Mac; y si todo eso no fuera suficienta se le puede agregar nuevas funcionalidades y temas para cambiarle su diseño.

Donde puedo descargar ATOM?

Descargarlo en super sencillo solo debe visitar: https://atom.io/ y allí vas a encontrar los instaladores para los sistemas operativos Windows, Linux, Mac tanto para 32bits como de 64 bits
Y si revisas el vas a conseguir el listado completo de plataformas sooportadas

Como compilar en ATOM?

Antes que nada, te indicamos el listado de comandos de configuración de ATOM para poder configurar con éxito nuestros programas
Ctrl+R Permite activar la ventana de Navegacion con símbolos a fin de poder ubicar rapidamente la linea en la cual se encuentra ubicado con elemento html como el head de la pagina Ctrl+Shift+R to run the currently selected text in the active window. Ctrl+Shift+C Para cerrar el proceso de la ventana actual
Esc Cierra la ventana en la cual está corriendo nuestro programa
Ahora bien, comencemos!

Primer paso

Ctrl+Shift+P
Tecleamos "install" y de la lista seleccionamos "Settings View: Install Packages And Themes "

Segun paso

Tecleamos "Script" y cic en "Install" en la opción "Run Code in Atom"

Tercer paso

Ahora, debemos instalar el compilador según sea el código que vamos a compilar, por ejemplo si vas a compilar un código de C++ debes instalar gpp-compiler Para ello, repetir el primer paso
como compilar en atom Luego, instalamos el gpp-compiler

Cuarto Paso

Presionamos la tecla F5 y Listo! tenemos nuestro programa corriendo
También podemos compilar nuestro código Java, para ello abrimos el archivo .java y presionamos la tecla F5

Como compilar código C, C++ en Sublime Text

COMO COMPILAR CODIGO C, C++ EN SUBLIME TEXT

Sublime Text es quizás uno de los editores más usados actualmente, con Sublime Text podemos desarrollar programas en C, C++, Java, inclusive también nos sirve para entornos web, tales como: HTML5, CSS3, Javascript, PHP; entre otros.

Una de las ventajas que tiene Sublime Text es:
  1. Auto completado de código
  2. Se puede verificar donde abre una llave o etiqueta y donde cierra.
  3. Se puede enlazar a un compilador
  4. Su diseño es bastante llamativo y atractivo y se puede cambiar los colores y temas.
  5. Detecta el lenguaje.
  6. Es bastante ligero.
Por estas, y otras más razones Sublime y muy usado actualemnte. De allí la importancia de enlazarlo con un compilado para poder compilar nuestros programas.


Lo que debemos hacer es ir al Menu principal y seleccionar Tools -> Build System -> New Build System esto abrirá una pestañan en la cual debes insertar los siguiente comandos:

//Windows
{
    "cmd" : ["gcc", "-Wall", "$file_name", "-o", "${file_base_name}.exe", "&&", "${file_base_name}.exe"],
    "selector" : "source.c",
    "shell" : true,
    "working_dir" : "$file_path"
}

//Linux
{
    "cmd" : ["gcc", "-Wall", "$file_name", "-o", "${file_base_name}", "&&", "${file_base_name}"],
    "selector" : "source.c",
    "shell" : true,
    "working_dir" : "$file_path"
}
 
 
Guardas este archivo con el nombre que quieras.

Luego vas a: Tools -> Build System

Y seleccionas el nombre que le colocaste archivo

Por ultimo, ya para compilar CTRL + B

Y Listo>!"





Como aprender a programar

COMO APRENDER A PROGRAMAR


El arte de la programación nos permite a ser creativos, desarrollar la inteligencia, y más que todo nos ayuda a resolver problemas.

Si quieres aprender a programar debes preguntarte si se gustan resolver problemas, y desarrollar tus propias soluciones, en este sentido te recomendamos empezar por seleccionar un lenguaje de programación que es el que te va a permitir programar tus programas e inclusive tu propio video juego.

¿QUE LENGUAJE DE PROGRAMACIÓN DEBO ELEGIR PARA EMPEZAR?

Dede ser un lenguaje cuya sintaxis sea sencilla y flexible, para ello te recomendamos Lenguaje C, que es un lenguaje que tiene años en el mercado y que aparece como uno de los lenguajes más usados del mundo.


¿EN CUANTO TIEMPO PUEDO APRENDER A PROGRAMAR?
Todo depende de la lógica de programación que desarrolles a lo largo de tu aprendizaje, lo que te puedo asegurar es que un día por lo menos ya puedes aprender a crear un simple codigo que permita sumar, restar, multiplicar o dividir dos numeros.

¿COMO SE SI SIRVO PARA PROGRAMAR?

Planteate y responde las siguientes preguntas:
  1. Te gustaría programar tu propio video juego?
  2. Te gustan los retos?
  3. Te gusta resolver problemas?
  4. Te gusta investigar
  5. Sabes sumar, restar, multiplicar y divir?
  6. Te gusta tener el control de algunas situaciones?
 Si por lo menos responde a 4 preguntas afirmativamente. Felicitaciones! eres un candidadto para ser programador.

¿EN CUANTO TIEMPO PUEDO PROGRAMAR UN VIDEO JUEGO?
Todo depende de la complejidad del mismo, el motor de video juego que uses, la tematica del juego, así como el numero de personas que aporten código al mismo, más sin embargo juegos muy famosos lo han desarrollado inclusive hasta dos personas.

¿EN CUANTO TIEMPO PUEDO APRENDER A PROGRAMAR?
Para nada, solo debes saber sumar, restar multiplicar y dividir



Cuales son los lenguajes de programación más usados del mundo

LENGUAJES DE PROGRAMACIÓN MÁS USADOS DEL MUNDO



La programación se ha convertido hoy en día en un arte, una necesidad, tanto así que algunas escuelas del mundo se les enseña a programar a los niños a temprana edad. En tal sentido hemos querido redactar esta entrada con la finalidad de dar a conocer los lenguajes de programación más populares y usados del mundo.

A continuación la lista de los lenguajes más usados:


1. Java

No es por nada que Java es tan popular, todo se debe a su código multiplataforma auspciado por su JVM (Java Virtual Machine) que permite ejecutar código Java en Windows, Linux, Mac y otros sistemas oeprativos, a esto se le suma su legibilidad y simplicidad. En promedio más de 10 millones de programadores usan Java y se han desarrolado más de 8.000 millones de soluciones para diferenetes dispositivos incluyendo: computadoras personales, notebook, blu Ray, microondas, televisores, smart phones, entre otros.

2. Lenguaje C
Lenguaje de programación de proposito general desarrollado en los laboratorios BELL, que se ejecuta en varios plataformas de sistemas oeprativos debido a su versatilidad y bajo consumo de recursos de computos. Un ejemplo de soluciones desarrolladas en este lenguaje destacada el editor gráfico libre y muy popular GIMP.

             
3. C++

Es el sucesor de C, pero destinada a la Programación Orientada a Objetos, un porcentaje considerado de las soluciones de Adobe están desarrolladas en C++, de hecho parte del sistema oeprativo Windows, así como el de Linux cotienen código C++.
   
                          
4. Python
Lenguaje de programación multiparadigma ya que soporta a la programación imperativa, la funcional y la orientada a objetos. Permite desarrollar código legible, simple.
 

 5. PHP
Lenguaje del lado del servidor que nos permite desarrollar soluciones con conexión a base de datos en entornos Web. Lo curioso de este lenguaje que su creador lo desarrolló como una herramienta para el soporte y mantemnimiento a los sitios web, pero fué tan bien aceptado que decidió convertirlo en un lenguaje de programación.

 



6. JavaScript
Lenguaje del lado del cliente que nos permite desarrollar código en entornos web para mejorar la interactividad de los usuarios con el sitio, por ejemplo, la mayoría de las validaciones de los formularios, animaciones, captura de eventos, están desarrollados en Javascript, un ejemplo de soluciones desarrolladas en Javascript son servicios de mensajerías, calculadoras, buscadores de información, entre otros.