Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/05/2015, 06:51
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿Cómo programar mejor?

Voy a intentar un despeje de incognitas didáctico, y para empezar vamos a hacer una aclaración sobre la primera duda que respondes:
Cita:
No sé si paradigmas porque no los conozco bien, yo hago lo que me resulta cómodo o necesario para avanzar. Si lo que me resulta cómodo es lo que mencionas lo uso y si me resultara insuficiente buscaría quizá otra cosa.

No sé lo que es paradigmas ¿es algo necesario para avanzar en mis objetivos?
Paradigma de programación:
En esencia, un paradigma de programación es un modelo de resolución de problemas de programación, y su tecnología asociada. Plantea el cómo, con qué y de qué modo de la creación de programas de computadora.
El hecho de que sea un modelo implica que es es un modo de representar un sistema (ver concepto de sistema en informática), y el modo en que se analiza, desglosa y construye la lógica que lo hace funcionar.

Existen varios paradigmas diferentes, todos los cuales tienen su aplicación práctica en diferentes lenguajes de programación, los cuales han sido diseñados para dar soporte a determinados paradigmas, o incluso a más de uno.

- Imperativo o por procedimientos. Es el más común y está representado , por ejemplo, por BASIC, C, Fortran, Pascal, Perl, PHP, Lua, Java y Python (en este contexto estaría el ActionScript, aunque como el AS no funciona fuera de Flash, su inclusion como lenguaje es discutible).
- Funcional: Está representado por Scheme o Haskell. Este es un caso del paradigma declarativo. Lenguajes funcionales híbridos más conocidos son Scala, Lisp, Clojure, Scheme, Ocaml, SAP y Standard ML.
- Lógico: está representado por Prolog. Este es otro caso del paradigma declarativo.
- Declarativo: Por ejemplo la programación funcional, la programación lógica, o la combinación lógico-funcional. En este contexto está el SQL (leguaje de consultas de los DBMS).
- Orientado a objetos: está representado por Smalltalk, un lenguaje completamente orientado a objetos. Incluye a C#, Java, y otros.
- Programación dinámica: está definida como el proceso de romper problemas en partes pequeñas para analizarlos.
- Programación multiparadigma: es el uso de dos o más paradigmas dentro de un programa.

El más extendido de todos, hoy, es el Orientado a Objetos.

Como nota, para que se visualice mejor el sentido de aprender lenguajes, robo esto de una web que leí hace tiempo:

Cita:
La comprensión básica de los conceptos de los lenguajes de programación y los diferentes paradigmas son necesarios para todos los ingenieros de software, [...]. Esto se debe a que los lenguajes de programación son una herramienta fundamental.

Los lenguajes de programación influencian notablemente la manera en que pensamos acerca del diseño y construcción del software y los algoritmos y estructuras de datos que utilicemos para desarrollar software.
Respondiendo a la pregunta de si es necesario para tus objetivos, la respuesta es SI. Es NECESARIO para tus objetivos, desde el momento en que buscas construir programas que sólo se pueden crear si entiendes las reglas del modelo que intentas aplicar (aunque no le conozcas el nombre).

En cuanto a esto:
Cita:
pueden mi códigos ser legibles y efectivos sin que aprenda sobre paradigmas? Por ahora creo que el problema es la legibilidad ¿cómo mejoro la legibilidad?
Si, pueden serlo, y una de las críticas que has recibido es algop que te enseñan como ABC en cualquier curso de programación para dummies: No se crean las variables y a las fuciones ni se les asignan nombres a las cosas porque sí, ni tampoco cualquier nombre. Por regla de necesidad de comprensión de código, se usan ciertas metodologías que permiten entender rápidamente un código sin necesidad de leerlo en detalle.
En tu caso, es imposible leer el codigo de un vistazo para econtrar las estructuras lógicas que contiene, no solo porque no está indentado, sino que hay que leerlo de atras hacia adelante, y de aadelante para atrás, para saber qué es cada variable por el uso que le das, en lugar de por su nombre. Y eso, al momento del mantenimiento de código es muy grave.

Existen al menos tres componentes que le otorgan a un codigo legibilidad:
1) Notación de objetos/identificadores.
2) Indentación de código.
3) Sangría en indentación.

Para el (1), existen dos tipos de notación: La CamelCase y la Húngara (es en esencia una extensión). Usualmente en las empresa las areas técvnicas tienen un protocolo que exige usar una u otra en todo desarrollo y documetnación.
La indentación (2), es general. La usan todos los lenguajes, y ayuda a entender las estructuras de un sólo vistazo.
la (3) Se ha vuelto universal, y permite visualizar perfectamente las dependencias lógicas de cada bloque en un código. Es tal la universalidad generada que todo editor de código de cualquier tipo incluye una funcionalidad que permite al programador "reformatear" el código de acuerdo a esas dependencias.

Esto lo hace el Oracle SQL Navigator, por ejemplo:

Código SQL:
Ver original
  1. UNDEF &&cuid;
  2. DEF &&cuid = 1111;
  3.  
  4. SELECT cliente, f.nota, fecha,  f.alta
  5.   FROM cuotas f
  6.  WHERE servicio = 24
  7.    AND TRUNC (fecha) >= TRUNC (SYSDATE)
  8.    AND servicio = '0000'
  9.    AND cliente = &&cuid;

Esto lo hacen los editores de XML:

Código XML:
Ver original
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <rss version="2.0">
  3.  
  4. <channel>
  5.   <title>Titulo del Canal de RSS</title>
  6.   <link>http://www.tudominio.com</link>
  7.   <description>Descripción del canal de tu sitio</description>
  8.   <language>es-ES</language>
  9.  
  10.   <image>
  11.     <title>Título de la Imagen</title>
  12.     <url>http://www.tudominio.com/logotipo-del-rss.png</url>
  13.     <link>http://www.tudominio.com</link>
  14.     <width>90</width>
  15.     <height>36</height>
  16.   </image>
  17.  
  18.   <item>
  19.     <title>Titulo del primer artículo</title>
  20.     <link>http://www.tudominio.com/ruta/articulo/primero.html</link>
  21.     <description>
  22.       Breve descripción del contenido de este artículo concreto. Puedes usar un
  23.       par de líneas para crear esta descripción, aunque no hay ningún tope máximo.     </description>
  24.   </item>
  25.  
  26.   <item>
  27.     <title>Título de un segundo artículo</title>
  28.     <link>http://www.tudominio.com/ruta/articulo/segundo.html</link>
  29.     <description>
  30.       Breve descripción del contenido del otro artículo. Puedes usar un
  31.       par de líneas para crear esta descripción, aunque no hay ningún tope máximo.     </description>
  32.   </item>
  33.  
  34. </channel>
  35. </rss>

Y esto lo hace Visual Studio con C#:
Código vb:
Ver original
  1. public class Coche {
  2.     private int numPuertas;
  3.     public int NumPuertas {
  4.         get {
  5.             return this.numPuertas;
  6.         }
  7.         set {
  8.             this.numPuertas = value;
  9.         }
  10.     }

Ese es el tipo de codificacion limpia y ordenada que debes lograr si quieres que entendamos lo que haces...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 27/05/2015 a las 07:10