Comunidad Gambas-es
¿Crear o Copiar? - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forumdisplay.php?fid=3)
+--- Foro: General (https://gambas-es.org/forumdisplay.php?fid=4)
+--- Tema: ¿Crear o Copiar? (/showthread.php?tid=1033)



¿Crear o Copiar? - Shordi - 16-09-2022

No hay nada nuevo bajo el sol. De alguna manera todos los programas que comenzamos a hacer ya han sido hechos con mayor o menor éxito por alguien, a veces por muchos "alguienes", pero nos da igual, es la esencia del programador, la versión adulto-profesional de "Mira mamá, mira cómo lo hago yo". Es así que hace unos meses, buscando no recuerdo qué cuestión sobre el componente gb.media, encontré en github un programita en forma de varios módulos que reflejaba el espectómetro de un audio en pantalla (: https://github.com/prokopyl/AudioSpectrum) . Me encantó y lo convertí en un control que podéis encontrar por ahí (en la Granja de Gambas lo puse si no recuerdo mal).

Ni qué decir tiene que lo incorporé de inmediato a mi programita de reproducir sonido hecho á lá Audacious ( https://gitlab.com/shordi/gbamp, no lo miréis ahora que está muy desactualizado) y me quedé más feliz que una perdiz en tiempo de veda.

Ahora le he estado añadiendo cosas, como incluir botones en las cabeceras de la ventana, descargar el sonido de los vídeos de youtube y el cortar un archivo en pistas, etc. y a la hora de toquetearlo me han surgido cosas que no me cuadraban de la estética, así que he empezado a retocar y retocar y me está ocurriendo un fenómeno curioso: Cuanto más estudio un problema, más vueltas le doy y más líneas de solución trabajo, más se me parece a Audacious... sin querer.

Por ejemplo: La lista de canciones y tiempos, un Gridview, muestra en las cabeceras el color del tema de escritorio elegido. Ese color puede quedar horrible según el color que hayas elegido para el fondo del programa.
Cosas que he probado:

a) Una nueva clase heredada de Gridview que permita cambiar el color de las cabeceras (descarga código fuente, investigación sobre el mismo modificaciones pertinentes, conflictos de nombres y herencias, etc. etc.)

b) Un Gridview que no contenga cabeceras y cuya línea 0, con los colores adecuados, haga ese papel (modificación de todos los eventos del Gridview, de las teclas rápidas, etc.)

y

c) por fin me caigo del guindo: las cabeceras sólo muestran las palabras "Título" y "Duración" así que lo mejor y más simple y obvio es: ¡un Gridview sin cabeceras!

Aplico la C. Conejudo. Problema solucionado... y entonces me pregunto ¿Cómo lo harían los de audacious? Claro que ellos no usan Gambas y no tienen estos límites, etc. Abro audacios y ¡oh, sorpresa! Su lista de canciones no tiene cabecera tampoco.

Otro ejemplo, más resumido:

Quiero poder modificar el tamaño de la ventana, que no tiene bordes ni cabeceras, pulsando en los bordes y las esquinas. Lo hago y descubro que sólo el borde derecho, el inferior y la esquina inferior hacen eso sin ningún problema. Los otros, al tener que cambiar la ubación del formulario al tiempo que lo redimensionan ocasionan parpadeos y otro problemitas. Solución: Resalto la esquina inferior derecha y la dejo como único punto donde pinchar y arrastrar para cambiar el tamaño.. y entonces me pregunto ¿Cómo lo hacian los de audacious? Abro audacious y ¡oh, sorpresa! sólo permiten redimensionar pulsando en la esquina inferior izquierda.

Esto me levanta la siguiente duda: Para todo lo demá que le quiero modificar al programa ¿sigo intentando hacer aquello que imagino, o directamente me lanzo a imitar sin pudor a Audacious? ¿Convierte eso mi programa en un Audacious de segunda o sigue siendo mi programa?

Crear o copiar, ése es el dilema.

Perdón por el ladrillo.

Saludos


RE: ¿Crear o Copiar? - Shell - 16-09-2022

(16-09-2022, 18:42)Shordi escribió:  Esto me levanta la siguiente duda: Para todo lo demá que le quiero modificar al programa ¿sigo intentando hacer aquello que imagino, o directamente me lanzo a imitar sin pudor a Audacious? ¿Convierte eso mi programa en un Audacious de segunda o sigue siendo mi programa?

Haces una aplicación que esta hecha en Gambas. Audacious probablemente no lo será.
Es tu trabajo, el desarrollo, la creación, el tiempo que le dedicas, el estudio del proyecto.

Crear algo para Gambas es demostrar a la comunidad Gambas (en general) y
de cara a otras comunidades de programación  que es posible hacer lo que te propongas.

Dadme un punto de apoyo y moveré la tierra” . Arquímedes.

Saludos


RE: ¿Crear o Copiar? - tincho - 17-09-2022

(16-09-2022, 18:42)Shordi escribió:  Crear o copiar, ése es el dilema.

Cuando el objetivo es saber como funciona > Crear
En general, siempre es mejor saber como funcionan las cosas. En el caso particular del software en el que a veces se dispone del codigo fuente basta con echar un "vistazo" para entender de que va un programa, y cuando no se dispone del codigo hay que hacer ingenieria inversa y hacer un programa de estudio para intentar imitar al programa objetivo.

Cuando el objetivo es crear un programa que, por ejemplo, no existe en linux pero si en otras plataformas > Copiar presenta algunas ventajas respecto a crear desde cero, como por ejemplo la curva de aprendisaje del usuario sera mejor ya que parte de lo que ya sabe le seguira funcionando.
Luego la copia dependera del IDE, el enguaje, el toolkit etc.

En el caso de un programa de reprodución de audio estas creando algo que ya existe en todas la plataformas con la desventaja de que los controles son menos "potentes" que los de GTK3 por ejemplo con lo que los bordes de las ventanas con iconos, que si programas en C y Builder ya viene de fabrica en gambas tienes que inventar la rueda.

Finalmente respondiendo a tu pregunta (me permito reformar la pregunta un poco) ¿Conviene crear o copiar un reproductor de musica? te respoendo que  si esl objetivo es:
Aprender > Inventar
Divertirse > Inventar
Agregar algo > Copiar + inventar
Usar > no programar e instalar desde el repo.


RE: ¿Crear o Copiar? - alberto-moyano - 18-09-2022

Interesante hilo, yo estoy lejos todavía de poder decir que sé programar, pero el editor en el que trabajo (funciona bastante bien, pero le falta todavía) responde a una lógica en concreto, la comento.

Edito textos en ciencias sociales unas 7 horas diarias, lo hago utilizando LaTeX como lenguaje principal con 4 programas (uno principal y 3 auxiliares).

El principal lo utilizo al 50% de todo lo que hace, el segundo al 30%, el tercero y cuarto al 5%, pero insisto, necesito utilizar los 4 en simultáneo por el tipo de trabajo.

Esto es, se hace muy engorroso usar 4 programas al mismo tiempo que además deben interactuar con el mismo archivo de texto (o su auxiliar) en simultáneo.

El motivo de que exista esta situación es simple, los programas de mi sector (por lo general) son pensados y desarrollados para un universo genérico y amplio, que incluye autores, editores, investigadores, docentes y vaya uno a saber que más, todos con necesidades parecidas en algún momento y muy diferentes en otros.

Eso me llevo a pensar en desarrollar un editor que haga el 100% de lo que yo necesito (que son el 50, 30 y 5% antes comentado) e incluso alguna que otra función que hoy tal vez no está disponible directamente y que son cosas que hago de manera esporádica (y no merecen considerar porcentual).

Ergo, no veo un dilema en crear o copiar

Saludos

PD: por si quieren saber de que programas hablo
https://www.texstudio.org/ (50%)
https://www.jabref.org/ (30%)
https://www.gimp.org/ (5%)
https://okular.kde.org/es/ (5%)


RE: ¿Crear o Copiar? - Shordi - 18-09-2022

Cita:Finalmente respondiendo a tu pregunta (me permito reformar la pregunta un poco) ¿Conviene crear o copiar un reproductor de musica? te respoendo que  si esl objetivo es:
Aprender > Inventar
Divertirse > Inventar
Agregar algo > Copiar + inventar
Usar > no programar e instalar desde el repo.
No me he explicado bien:
Mi dilema no es si conviene crearlo o copiarlo, eso es algo que uno decide antes de lanzarse a teclear. En el momento en que pulsas en "Nuevo Proyecto" ya has decidido crearlo.

Los motivos: Aprender / Divertirse / los que hay no me gustan / es un desafío / porque se puede, etc. son varios y están mezclados. El dilema surge cuando tienes que decidir el aspecto, la mecánica y el funcionamiento del programa. Ahí es donde no sé si es mejor seguir caminos trillados, en este caso imitar a Audacious que, a su vez, imita al viejo y querido Winamp, o hacerlo lo mejor que puedas pasando de lo que hayan hecho otros.

Cuando comencé este proyecto del reproductor hice lo que siempre hago: Pasar de los otros y hacerlo a mi manera. El problema ha sido que según van surgiendo los problemas y según busco soluciones descubro que "la mejor solución" es la que utiliza el programa que inspiró todo esto: Audacious. Surge entonces la pregunta: ¿Sigo intentando encontrar la mejor solución a los problemas que me vayan surgiendo... o me rindo y cuando surja un problema me voy a mirar cómo lo soluciona Audacious y lo imito?

Dejar constancia que en la imitación también hay creatividad, pongo como ejemplo el tema de que quería colocar controles en la barra del título de la ventana y eso no era posible de manera directa con el gestor de ventanas (ese problema me surgió en el proyecto del multiterminal pero también lo he aplicado al reproductor), tuve que frotarme las neuronas para ver cómo se podía hacer pero la idea no era mía: la copié de Tilix.

Quizá todo el dilema sea algo tonto, dado que todo lo que inventamos está basado en cosas que ya han hecho otros y la "novedad" pura no existe, pero de verdad que me da rabia probar esto y aquello y lo de más allá para acabar haciendo lo que estaba delante de mis narices sólo con mirar cómo lo hacen otros.

Abriré otro post, enlazado con este tema sobre los iconos de los programas.

Saludos.


RE: ¿Crear o Copiar? - tincho - 18-09-2022

(18-09-2022, 06:48)Shordi escribió:  Quizá todo el dilema sea algo tonto, dado que todo lo que inventamos está basado en cosas que ya han hecho otros y la "novedad" pura no existe, pero de verdad que me da rabia probar esto y aquello y lo de más allá para acabar haciendo lo que estaba delante de mis narices sólo con mirar cómo lo hacen otros.

Si te has explicado bien antes. Intente dar una respuesta general al asunto.
Creo que no deberías enojarte al descubrir que llegaste a la misma solución a la que llego otro programador, como el de audacius en este caso, sino mas bien ponerte contento, se positivo, has logrado tu solo hacer algo en unos meses que un equipo de programadores en unos años.
Luego es muy bueno estudiar los programas de otros programadores pues, creo que son la mejor fuente de conocimiento sobre programación de la que podemos disponer.

Finalmente, creo que hay que sopesar todo el tiempo que cosas copiar y que cosas descartar de los otros programas y coincido en que nadie inventa nada desde cero sino que nos basamos todo el tiempo en invenciones preexistentes.