Comenzar a aprender programacion en Trisquel?
- Inicie sesión o regístrese para enviar comentarios
Buenas noches. Me perdonan si de repente les mato a punta de preguntas, pero tengo varias dudas.
1) Como puedo comenzar a programar en c++ en Trisquel? asi como compilar los programas por mas sencillos que sean y ejecutarlos?
2) Que consejos me dan para poder aprender a programar aplicaciones para GNU/Linux?
3) A parte de c++, cual otro lenguaje me recomiendan aprender?
4) Que aplicaciones me recomiendan para el desarrollo de aplicaciones? Codigo, GUI, etc?
Aun no estoy muy seguro de que pienso programar, apenas tengo las bases basicas de c++ y por ahora pienso practicar desarrollando juegos del estilo aventura textual, o algo asi, no se que me recomienden ustedes. Por supuesto, Richard Stallman dice: Para crear programas grandes, debes comenzar haciendo pequeñas modificaciones en programas gracias, y evidentemente pienso hacer eso. Aunque claro, ahora mismo me siento algo perdido.
Llevo mucho tiempo siendo usuario de GNU/Linux, y desde hace un tiempo tengo el deseo de aportar verdaderamente, escribiendo codigo desarrollando aplicaciones, e ir mas alla del Average Desktop User, aunque se que me queda un largo recorrido por delante.
No se, aconsejadme por favor, estare encantando de escuchar todo lo que tengan que decirme.
Hola UsernameV.
Te intentaré contestar a las preguntas lo mejor posible (si hay algo que diga erróneo pido disculpas y seguro que algún usuario de este foro que sea programador te podrá contestar y dar una respuesta mas adecuada).
1.- ¿Como puedo comenzar a programar en c++ en Trisquel? así como compilar los programas por mas sencillos que sean y ejecutarlos?.
Para empezar a programar solo te hace falta un IDE es decir un entorno de desarrollo para escribir el código del programa y un compilador. También se puede programar desde la terminal y después compilar tu a mano el código gracias al compilador. Si quieres programar en C++ tienes que instalar: sudo apt-get install build-essential (este es el compilador). Respecto al IDE hay muchos, como Geany (es el que yo utilizo), Emacs o CodeBlocks.
2.- ¿Que consejos me dan para poder aprender a programar aplicaciones para GNU/Linux?.
Algunos consejos es tener paciencia ya que programar no se aprende de un día para otro, si tu hicieras un grado superior de programación que serían dos años, tendrías más conocimientos pero ni con eso lo aprendes todo, así que mucha paciencia si quieres aprender por tu cuenta. Otro consejo es marcarte un horario para dedicar todos los días x tiempo a programar. También te diría que a medida que aprendas cosas sobre programación y términos no te quedes nunca con ninguna duda. Si quieres utilizar solo software libre ten cuidado con algunas licencias por si acaso no son libres. (De este tema de licencias no se demasiado, algunos compañeros del foro te pueden aconsejar mejor).
3.- ¿A parte de c++, cual otro lenguaje me recomiendan aprender?.
Mi lenguaje favorito es C++ así que ese lenguaje sería aceptable para empezar a programar, aunque hay gente que dice que Java es mejor que C/C++ para aprender (yo no estoy de acuerdo, java me parece mas complejo y mas lento, aunque esto es solo mi opinión personal). Como otro lenguaje te recomendaría HTML5 (que sería un lenguaje de etiquetas) o Python.
4.- ¿Que aplicaciones me recomiendan para el desarrollo de aplicaciones? Codigo, GUI, etc?.
Como aplicaciones para aprender a programar pues sería lo mas importante un IDE como decía en mi respuesta anterior. Hay muchos IDE y puedes elegir el que más te guste en función del lenguaje que quieras aprender.
Te dejo dos webs con libros sobre programación: https://www.freelibros.org/category/programacion https://somosprogramacion.blogspot.com.es/
Siento de haberte escrito una respuesta tan larga, si he dicho algo erróneo o incorrecto pido disculpas.
Un saludo compañeros!.
1- ¿Como puedo comenzar a programar en c++ en Trisquel? así como compilar los programas por mas sencillos que sean y ejecutarlos?
Prepara tu entorno de desarrollo. Instalar build-essential y crea un pequeño programa en C++, por ejemplo el Hola mundo. Luego lo compilas y lo ejecutas. http://somos-linux.blogspot.com.ar/2010/11/instala-y-compilar-en-c-y-c-desde-linux.html
En el foro se ha tratado varios hilos sobre programación, tu sugiero realices una búsqueda.
2- Que consejos me dan para poder aprender a programar aplicaciones para GNU/Linux?
Aprender a programar en GNU/Linux es lo mismo que aprender a programar para cualquier otro sistema operativo de PC. Así que los consejos se aplican para todos ellos. Aprende sobre patrones de diseño de software, aprende sobre bases de datos, aprende a leer y a entender los programas que ejecutas en tu pc y aprende a utilizar herramientas de repositorios y versionado de código como git.
3- ¿A parte de c++, cual otro lenguaje me recomiendan aprender?.
Python, sin lugar a dudas.
4- ¿Que aplicaciones me recomiendan para el desarrollo de aplicaciones? Codigo, GUI, etc?.
Si quieres desarrollar en un entorno C++ y trabajar en el desarrollo de poderosas GUI apunta a las librerías Qt o wx. Por ejemplo qtcreator para entornos qt o Eclipse para wx. https://www.wxwidgets.org/ https://www.qt.io/es/
Sds
Hola Usernamev.
Te voy a hablar desde mi punto de vista y opinión personal. Actualmente trabajo como analista-programador y sysadmin en una empresa. Acabé el C.F.G.S. DAI en el 2005 (http://todofp.es/que-como-y-donde-estudiar/que-estudiar/familia/logse/informatica/desarrollo-aplicaciones-informaticas.HTML), he realizado dos años de la Ingeniería en Informática, pero lo he dejado por falta de tiempo, y ahora estoy realizando otro C.F.G.S. en Desarrollo de Aplicaciones Web, ya que me resulta más práctico y me convalidan módulos por tener DAI.
1) Como puedo comenzar a programar en c++ en Trisquel? asi como compilar los programas por mas sencillos que sean y ejecutarlos?
Trisquel en sí no está programado en un lenguaje, Trisquel es un sistema GNU/Linux, y cada parte está programada con uno o varios lenguajes.
Puedes compilar tus programas C/C++ desde consola usando GCC.
2) Que consejos me dan para poder aprender a programar aplicaciones para GNU/Linux?
En primer lugar, es muy importante no sólo aprender un lenguaje, sino aprender "metodología de programación". Empieza escribiendo en pseudocódigo pequeños programas. Como por ejemplo, extraer los primeros 50 números primos.
Una vez tengas una base, aprendas programación estructurada y POO, puedes elegir un proyecto de software libre y contribuir con pequeños cambios. El mayor problema es que normalmente el software libre no tiende a ser democrático y se rige por la meritocracia, por lo que seguramente no te dejarán modificar nada del programa sin consentimiento. Como consejo te puedo decir que te descargues el programa y hagas tus propios cambios. Una vez cojas experiencia, elige un proyecto que te emocione e intenta que te dejen ayudar.
3) A parte de c++, cual otro lenguaje me recomiendan aprender?
Sobre gustos los colores. Esto es cuestión de "modas". Si quieres trabajar de programador tienes que aprender lo que el mercado marque. Ahora está de moda Node, JS, Python, pero sobre todo los frameworks, que en sí mismos son lenguajes. Si lo que buscas es aprender y ayudar sin querer una retribución, aprende el lenguaje que te haga sentir cómodo, o aquel que lo usen en el proyecto que te interese. Lo importante no es el lenguaje, es aprender metodología, como te comenté antes.
4) Que aplicaciones me recomiendan para el desarrollo de aplicaciones? Codigo, GUI, etc?
Hay cientos. Tienes Eclipse, Bluefish, Emacs, Gedit..... la cuestión es buscar uno que se acople a tus gustos y necesidades. Si quieres programar en web un GUI enfocado a escritorio puede no ser lo mejor.
Espero haberte aclarado algo.
Saludos.
'''El mayor problema es que normalmente el software libre no tiende a ser democrático y se rige por la meritocracia, por lo que seguramente no te dejarán modificar nada del programa sin consentimiento.'''
No es un problema el que no te dejen modificar un repositorio de un programa libre. Todo el mundo es libre de modificar o contribuir con un programa libres, simplemente te haces una copia del mismo repositorio y lo modificas de acuerdo a tus necesidades. Luego si al dueño del repositorio original le ha gustado tu modificación, seguramente te permitirá hacer el cambio que has echo.
Sds
Entonces dependes de la deidad del autor del repositorio. Estoy de acuerdo que debe de haber un orden, pero de ahí a no dejarte tocar nada si no has ido creando méritos es otra cosa.
Si quieres contribuir sería suficiente con añadir al proyecto a esa persona. Si estropea algo para eso están las copias de seguridad. Hay que confiar más en los demás :)
Saludos.
Si usted ingresa a una casa de cocina y quiere modificar alguna receta de algún cheff seguramente no se lo permitan. Si usted hace una copia de la receta y luego se la da para que la pruebe, si les gusta, seguramente pondrán los cambios que hizo en su nueva receta.
Que no te dejen modificar un repositorio o una receta de una casa de comida es cuestión propia del dueño del repositorio o del dueño del local de comida. Esto es normal en la sociedad...Pero usted siempre tendrá la posibilidad de copiar y modificar la receta y si a la gente le gusta, seguramente comprará su comida.
Hay que confiar más en los demás :)...es mejor en muchos casos, actuar con desconfianza, por ejemplo con el software privativo.
Sds
Entiendo tu postura dcapeletti.
En una propiedad privada lo entiendo. Ahora vamos a la vida real y lo práctico. Trisquel es Software Libre, pero si quiero contribuir tengo dos opciones. Que el dios Rubén acepte mis cambios o crear yo un fork.
En el primer caso me tengo que resignar a lo que el autor diga y la contribución a la comunidad se ve afectada. Si lo que quieres es que nadie toque tu código fuente no lo publiques o hazlo privativo, de lo contrario ábrelo a la comunidad. Tan sólo tienes que observar el desarrollo de Trisquel.
En el segundo caso, estamos realizando doble trabajo. En vez de unir fuerzas estamos dividiéndolas.
Cada uno es libre de hacer lo que le venga en gana, sólo relato la realidad de la mayoría de proyectos de software libre. En el proyecto Debian como no seas un programador reputado no tienes derecho a decidir NADA (¿a eso llamas tú libertad y cooperación?).
En los proyectos los usuarios y programadores deben de tomar decisiones juntos. No se trata de crear un fork por programador, sino de unir fuerzas.
Esta es mi opinión.
Saludos.
Quizás debería consultar al Dios Rubén porque el no permite los cambios. El tendrá sus razones. Pero de ahí a decir que el software libre no tiende a ser democrático, eso no es verdad. Que no te dejen hacer cambios en sus repositorios es cuestión personal de cada dueño del repositorio.
El Software libre, como muchas otros trabajos de la vida humana, también se rige por la meritocracia. Claro que si. Nadie tomará a una persona que no tiene experiencia o algún currículum para algún trabajo complejo como es el software. Lo mismo suele pasar con los proyectos de software libre en general. Tampoco nadie tomará a una persona que haga recetas de comidas de mal gusto...nadie comerá esa comida.
'''Si lo que quieres es que nadie toque tu código fuente no lo publiques o hazlo privativo, de lo contrario ábrelo a la comunidad.''' Discrepo con usted. Un programa libre permite que hagas una copia, hagas los cambios en tu copia y lo distribuyas libremente. Si los cambios que has echo son interesantes para el autor / comunidad, seguramente aceptaran tus cambios en el repositorio original. Pero aceptar cambios vagos de cualquier persona para un proyecto, eso no es serio...así que mejor no aceptar cambios sin haber demostrado que funciona realmente lo que has publicado.
Hace un par de años atrás he hecho cambios a Qtox sin problemas. Pero siempre pidiendo amablemente que acepte mis cambios y he comentado claramente el código así como también los cambios que he echo. No hay que imponer los cambios a martillazos o dejando que cualquiera haga cualquier cosa. Incluso en el proyecto Diaspora he propuesto cambios y han votado varias personas, lo cual mi petición ha sido escuchada porque les pareció interesante. Pero de ahí a aceptar detalles sin sentido, está bien rechazarlo o que mejore su idea.
Regla general: Si quieres hacer cualquier cosa con mi programa, hazlo en tu copia del programa primeramente, luego si me gusta como lo has echo, aceptare tus cambios...caso contrario, gracias por copiar y usar el programa... ;-)
Sds
<< Si usted ingresa a una casa de cocina y quiere modificar alguna receta de algún cheff seguramente no se lo permitan. Si usted hace una copia de la receta y luego se la da para que la pruebe, si les gusta, seguramente pondrán los cambios que hizo en su nueva receta >>
Es una excelente explicación.
Como bien dices Lightmoon, la forma de gobierno en el software libre es la meritocracia. La meritocracia es una excelente forma de gobierno porque garantiza que la gente que está en lo más alto, es la que más aportaciones han hecho al software. Es decir, que los programadores que más han aportado son los que tienen derecho a más control.
Este control no es malo, ya que garantiza que las aportaciones a un programa son útiles y valiosas.
Además, los programadores que administran paquetes sienten el deber de que cada versión debe ser mejor, y para que cada versión sea mejor, se debe examinar que tan útil es tu aportación.
Por último, recomiendo un artículo interesante de Eric S. Raymond, Cultivando la noósfera.
Saludos.
¿Meritocracia? Si el código está bien hecho y soluciona un problema o aporta una funcionalidad útil, probablemente sea aceptado el cambio sin importar quién lo haya hecho. A veces si eres nuevo en un proyecto puede que tarden más tiempo en responder o en aceptar cambios, pero casi siempre suelen aceptarlos si son buenos. He contribuido a más de 100 proyectos de software libre, y en muchos de ellos solo he aportado un commit. Todas las veces que han rechazado mis cambios fue porque hice algo mal, y prefiero que los hubieran rechazado en ese caso. Eso sí, si te equivocas vas a aprender también, ya que los encargados del proyecto suelen decir la razón por la que rechazan tus modificaciones.
Simplemente intento decir que los cambios producidos en el software libre no vienen dados por una democracia real, dónde se vota entre usuarios y programadores si un cambio se quiere llevar a cabo o no. Más bien viene dado por una "dictadura" dónde el/los autor/es deciden si el cambio se produce.
Veo importante un cambio en la forma de "gobernar" el software libre. Otro caso conocido es el de Libreboot, dónde una persona hacía y deshacía lo que quería sin consultar a los demás.
Lo que pretendo es dar mi punto de vista, donde pienso que la "meritocracia" ya está algo viejuna y caduca, y hemos de hacer las cosas de forma distinta y más justa.
Saludos.
La meritocracia (proveniente del latín merĭtum ‘debida recompensa’, a su vez de mereri ‘ganar, merecer’; y el sufijo -cracia del griego krátos, o κράτος en griego, ‘poder, fuerza’) es una forma de gobierno basada en el mérito, y en términos más generales, se refiere a la discriminación positiva por méritos. Las posiciones jerárquicas son conquistadas con base en el mérito, y hay un predominio de valores asociados a la capacidad individual o al espíritu competitivo, tales como, por ejemplo, la excelencia en educación o deportes. (fuente Wikipedia)
> Simplemente intento decir que los cambios producidos en el software libre no vienen dados por una democracia real, dónde se vota entre usuarios y programadores si un cambio se quiere llevar a cabo o no. Más bien viene dado por una "dictadura" dónde el/los autor/es deciden si el cambio se produce.
Decir que el desarrollo del software libre es como una dictadura es un disparate. Nadie te impide crear una versión derivada de un programa. Y aparte, no todos los proyectos de software libre se administran de la misma forma. Si una desarrolladora se convierte en una dictadora, la gente se alejará ella y creará un programa derivado con una comunidad más democrática. Si las discrepancias entre los desarrolladores y la comunidad hacen surgir una nueva versión más democrática o que atiende a otras exigencias, está bien, así hay más variedad, y todas contentas. Si buscas una funcionalidad tan concreta que solo te será útil a ti y cuatro más, no esperes que implementen tu funcionalidad, tendrás que pagar para que te la hagan o hacerla tu por tu cuenta.
Libreboot aparentemente ha cambiado la forma de hacer las cosas y ha disminuido la jerarquía (https://libreboot.org/management.html). Todo mejorará más si se reduce más la jerarquía en los proyectos, pero ese es un problema de mucha gente (no del software libre) que no está acostumbrada a la democracia y son muy individualistas.
> Lo que pretendo es dar mi punto de vista, donde pienso que la "meritocracia" ya está algo viejuna y caduca, y hemos de hacer las cosas de forma distinta y más justa.
Lo que no se puede hacer es dar permiso de escritura a todo el mundo, porque no sería serio y habría problemas con gente de fuera que ni siquiera usan el programa y pueden querer solo fastidiar (ejem. gente de Microsoft, gobiernos despóticos); pero sí se pueden establecer cambios rotativos en la administración de un proyecto, siempre con varias personas. Las votaciones están muy bien, las preguntas a la comunidad, los foros, canales IRC, listas de correo... Cuanto más democrático y abierto el desarrollo mejor. ¿Propones alguna sugerencia más para hacer el desarrollo más horizontal, abierto e inclusivo? ¿O para presionar a las administradoras de proyectos para que sean más democráticas? Veo importante y útil tu crítica. Si tienes algunos consejos para que las demás podamos crear comunidades más democráticas, estaría encantada de escucharlos y aplicarlos en la medida que me sea posible.
Completamente de acuerdo. Como tú, critico a los proyectos que crean jerarquías virtuales basadas en méritos u otros motivos. Pero es que el software libre no se puede gobernar como tal, es anárquico. No puedes reprimir ni obligar a nadie a utilizar la versión de los desarrolladores despóticos, no pueden controlar como usas el programa, si lo cambias y te juntas con otras personas, si pides o pagas por funcionalidades que necesitas... No existe un sujeto pasivo o dominado como existen en los estados. En resumen, el software libre no se puede gobernar, pero las comunidades a su alrededor sí.
Una persona puede hacer y deshacer como quiera y cuando quiera, si es dueña del repositorio. También puede permitir las modificaciones que les gusta o no. Si al alguien no le gusta, haz una copia y sigue tu camino.
Estas muy equivocado...la dictadura eres tu que al no darte permiso para hacer cambios en un repositorio, votas por hacerlo software privativo. Rechazo rotundamente tu manera de pensar.
Sds
Una persona puede hacer y deshacer como quiera y cuando quiera, si es dueña del repositorio. También puede permitir las modificaciones que les gusta o no. Si al alguien no le gusta, haz una copia y sigue tu camino.
Sí, tienes razón, pero entonces no digas que trabajas en un proyecto colaborativo y democrático.
Estas muy equivocado...la dictadura eres tu que al no darte permiso para hacer cambios en un repositorio, votas por hacerlo software privativo. Rechazo rotundamente tu manera de pensar.
Nadie está equivocado, son posturas distintas. Yo no voto por hacerlo privativo, he dicho que si no quieres que nadie toque tú código de forma democrática y justa simplemente no lo publiques o hazlo privativo (es decir, sin código fuente). No malinterpretemos las palabras por favor. Yo no soy la dictadura, he comentado que todo cambio ha de hacerse democráticamente y mediante votación. Si quiero modificar un programa el 51% debe de estar de acuerdo o llegar a un acuerdo, eso no es ser un dictador.
Repito, vuestra forma de pensar es lícita y la respeto. Estoy dando otro punto de vista, que a mi parecer es más justo.
Saludos.
Pedir permiso para entrar y hacer cambios en un repositorio ajeno, es como pedir permiso por primera ves cuando voy a entrar en casa de otro.
¿Tu entras en la casa de alguien y empiezas a cambiar las cosas de lugar sin sentido? ¿Empiezas a pintar la pared? ¿Te sientas en la mesa?. Seguramente te rajen en menos de 5 minutos. En tu casa has los cambios que quieras...El principio es que en democracia no significa que yo puedo entrar en cualquier casa y hacer lo que quiera.
Si hago un programa software libre es porque quiero que cada uno de los usuarios puedan modificar su copia a su antojo. Cada uno es libre de hacer lo que quiera con su copia del programa. Pero yo no permitiré cualquier cambio en mi repositorio original (como tampoco permitiré que cambies de lugar las cosas en mi casa), sobre todo cambios no documentados / argumentados, cambios mal hechos, que no aportan nada, porque yo como autor del repositorio tengo mi forma de hacer los programas. ... Pero si envías pequeños cambios que mejoran algo, los aceptaré y con el paso del tiempo te conoceré mas y seguramente tendrás mas espacio para los cambios que quieras hacer.
Si quiero que nadie haga cambios en mi repositorio lo hago libre pero no público o público pero no permito cambios de otros. Si quieres descargarte una copia tienes la posibilidad de hacerlo (si es público), pero no permito modificar mi repositorio y será software libre. Esa es la clave, queremos que tengas el programa, no queremos que sea privativo, pero tu tienes el derecho de hacer lo que se te cante EN TU COMPUTADORA CON LA COPIA DEL PROGRAMA...
Si haces una propuesta y votan varios usuarios seguramente tendrás el cambio que solicitas. O puedes persuadir a los usuarios que contribuyen para que ver que piensan de tu propuesta. Los que hacen los cambios por ti son los que saben programar...y si el cambio que ha echo no te ha satisfecho, pagas para que lo hagan por ti sea en el repositorio original o en tu copia del programa.
Repito...Que no te dejan modificar un repositorio de un programa público por algo será, pero sigue siendo software libre y seguirá siendo democrático.
Sds
Pedir permiso para entrar y hacer cambios en un repositorio ajeno, es como pedir permiso por primera ves cuando voy a entrar en casa de otro.
Exacto, a eso se le llama educación.
Pero yo no permitiré cualquier cambio en mi repositorio original (como tampoco permitiré que cambies de lugar las cosas en mi casa), sobre todo cambios no documentados / argumentados, cambios mal hechos, que no aportan nada, porque yo como autor del repositorio tengo mi forma de hacer los programas. ...
Entonces no trabajas en equipo y de forma colaborativa, lo que haces es dar órdenes y ser autoritario.
Voy a aclarar, porque creo que no me has entendido.
Si yo creo un proyecto nuevo, yo seré el autor del mismo, y haré lo que me venga en gana con él. Si decido que tanto usuarios como programadores colaboren el proyecto, entonces he de trabajar en equipo, y no tengo porque excluir a nadie.
Cuando un programador nuevo quiere modificar el programa no lo modifica a lo loco. En primer lugar solicita trabajar en el proyecto. Si desea modificar o añadir algo, entonces se realiza una consulta al resto de usuario y programadores. Si se llega a un acuerdo, entonces este programador realizará el cambio. La diferencia está en que no hay una figura autoritaria que decide quien, como y qué modifica, sino una consulta a los demás miembros del proyecto para aceptar o no el cambio de forma democrática.
De esta forma, todos los programadores, tengan más o menos experiencia podrán realizar cambios, según se vean preparados, por lo que es más equitativo y damos iguales oportunidades.
Respecto a la figura de que debe haber un maestro y un alumno, hace tiempo que se sabe que eso no funciona. La figura del maestro no debe ser aquel que da ponencias, es aquel que acompaña a la otra persona a conseguir sus objetivos. Puede ser que el "aprendiz" tenga conocimientos de otros temas que puedan ayudar y dar otro punto de vista sobre el tema en cuestión. La inteligencia no se mide por el saber, ni por el un número de coeficiente intelectual, hoy en día se sabe que existen múltiples inteligencias, por lo que nadie es más inteligente que otro. Puede ser que a tí se te de mejor realizar una tarea que a mí, pero con esfuerzo y tiempo puedo llegar a ser igual de bueno que tú.
Espero que ahora se entienda mejor.
Saludos.
Entiendo tu postura compañero. Pero no lo veo ni bien ni mal lo que hacen los autores con sus proyectos. Ellos no te imponen nada, te dan un codigo fuente muy facilmente accesible de Trisquel. Puedes cambiar lo que quieras a tu antojo. Si el autor no permite los cambios, o aceptar ideas de cualquier persona, tendra razones de peso.
Exacto vita_cell. Yo acepto que un autor decida lo que quiera, tiene la libertad para hacerlo. Opino lo mismo que tú, no es ni bueno ni malo la forma en que se gestiona un proyecto, simplemente quería dar un punto de vista que para mí resulta más justo.
Lo que me sabe mal es que los demás compañeros se enojen, no es mi intención crear polémica, simplemente quería hacer una crítica a la forma con la que estamos haciendo las cosas. Si nadie realiza críticas, ¿cómo se avanza y cambia? :)
No os enfadeis conmigo, que somos pocos y tenemos que estar unidos.
Saludos.
Yo particularmente no me enojé, solo te di un punto de vista porque creí que no lo podías entender.
Ahora que lo puedes entender, esta muy bien que un autor de repositorio de software libre permita cambios de otros, participación y debate con la comunidad para aplicar los cambios que solicitan.
Trisquel quizás no sea el proyecto mas adecuado para lo que quieres, eso debemos consultar con Ruben. Hay otros tantos proyectos que si lo son.
Por ejemplo a mi usuario github ha sido bloqueado por un comentario en el proyecto Diaspora. Se han molestado con una pregunta que he echo y me han bloqueado para que no pueda hacer comentarios en Diaspora....En otros proyectos pudo hacer comentarios sin problemas. Diaspora parece no ser democrático jajaja
Sds
Por ejemplo a mi usuario github ha sido bloqueado por un comentario en el proyecto Diaspora. Se han molestado con una pregunta que he echo y me han bloqueado para que no pueda hacer comentarios en Diaspora....
Pues vaya, luego se les llenará la boca de palabras como libertad y cooperación. Siento que te hayan bloqueado el usuario, no es justo. Eso sí, siempre podrás copiar el código fuente y hacer tus propias modificaciones :P
Saludos.
me parece super interesante esto que has dicho amigo jorgesumle
>...He contribuido a más de 100 proyectos de software libre, y en muchos de ellos solo he aportado un commit
cuéntanos mas sobre eso.
El desarrollo de un programa no puede ser como visitar una plaza pública. ¿Qué tal si una persona malintencionada agrega funcionalidades malevolentes al programa?
Hablas de confianza e ignoras que ésta se gana con méritos; de allí que el modelo de desarrollo «open-source», usado con mucha frecuencia en software libre, sea meritocrático.
Por último, el programa original tiene «copyright» de sus autores. Y como titulares del «copyright», ellos deciden que cambios hacen a su programa, así como quien puede participar. Ninguna de las Cuatro Libertades Esenciales dice que tienes derecho a participar en el desarrollo del programa. Lo que es cierto es que nada te impide crear tu versión modificada. Puedes clonar el repositorio, hacer cambios y distribuir tu versión modificada; las libertades 1 y 3 te lo garantizan.
Hablas de confianza e ignoras que ésta se gana con méritos
La confianza NO es algo que se gana, sino que se pierde. Mi modo de vista es el siguiente. Cuando conozco a una persona esta merece toda mi confianza, ya que de momento no me ha hecho nada para desmerecerla. Cuando esta persona me haga algo que no me gusta empezaré a restar confianza en ella. Son dos visiones distintas, pero el desconfiar de otro sin conocerlo es algo irracional, sin sentido. Es cuestión de educación básica, en la que nos enseñan a desconfiar sin motivo.
Los méritos no definen a las personas ni tiene nada que ver con la confianza. Puedes haber hecho méritos de formas poco éticas o injustas, ¿he de confiar en esa persona porque tiene méritos?.
El copyright no entra en conflicto con la democracia. Si yo hago un programa y decides ayudar, debemos consultar con los usuarios y llegar a un acuerdo mediante votaciones. Ser el autor no tiene porque otorgarte la deidad. Todos somos semejantes, y nadie está por encima de otro. Cuando publicas un programa y decides quien y como ayudarte estás actuando de forma discriminada y autoritaria.
Este es mi pensamiento, el cual no tiene porque ser igual que el vuestro.
Saludos.
Interesante opinión.
Aunque, hay un error:
> desconfiar de otro sin conocerlo es algo irracional, sin sentido. Es cuestión de educación básica, en la que nos enseñan a desconfiar sin motivo.
La desconfianza es un rasgo de la evolución para poder sobrevivir. No es irracional, es protectora.
> Todos somos semejantes, y nadie está por encima de otro.
Personalmente, estoy en contra de este argumento. Es decir, todos somos seres humanos y por lo tanto tenemos los mismos derechos y obligaciones (no en todo el mundo), pero siempre hay alguién que sabe más, que conoce más que tú. Yo considero, que esa persona con más conocimiento debe estar por encima, debe tener más control. Claro está, que no puede controlar los derechos de las personas.
Saludos.
todos somos seres humanos y por lo tanto tenemos los mismos derechos y obligaciones (no en todo el mundo), pero siempre hay alguién que sabe más, que conoce más que tú. Yo considero, que esa persona con más conocimiento debe estar por encima, debe tener más control.
Estoy totalmente en desacuerdo con esa conclusión. ¿Quieres decir que si tú sabes algo que yo no estás por encima mío?. "Todos" somos capaces de aprender cualquier cosa, por lo que el saber no hace a nadie superior. Otra cosa es que sea más o menos ignorante.
Saludos.
> ¿Quieres decir que si tú sabes algo que yo no estás por encima mío?
En el tema en cuestión, Si.
Si yo se más que tú en X tema, debo estar por encima, ya que sé más.
Si tú sabes más que yo en Y tema, debes estar por encima de mi persona en ese tema, porque sabes más y por lo tanto (generalmente) eres más útil. Yo considero que de esa forma se pueden crear redes de aprendizaje muy buenas. Profesor enseña a alumno; alumno aprende y cuestiona a profesor; alumno se convierte en profesor.
> "Todos" somos capaces de aprender cualquier cosa
En mi opinión, no. Existen a mi parecer dos temas: entender y aprender.
Yo, puedo entender distintos temas: programación, mecánica cuántica, etc.
Pero, ¿sería capaz de aprender esos temas?. Desde un punto de vista optimista, si. Desde un punto de vista realista, no. La mayoría de los seres humanos nacen iguales, pero es en la niñez donde su cerebro se desarrolla. Algunos, tendrán capacidad para escribir, otros para las matemáticas y otros para el arte, es normal y natural. Sin embargo, el hecho de ser muy bueno en algo, puede hacer que seas malo en otros temas (ejemplo: los que son buenos con las matemáticas, generalmente son malos con las lenguas). Claro está, que hay casos en los que se aprende con esfuerzo y disciplina.
> por lo que el saber no hace a nadie superior
Nuevamente, en mi opinión, el saber hace a gente superior en los temas en cuestión, no superior como persona.
Es mi humilde opinión. Saludos
> Si yo se más que tú en X tema, debo estar por encima, ya que sé más.
Error garrafal. Acaso sirve un profe que no sabe explicar?. No estas por encima de nadie, influyen muchos factores en cada cosa. Lo que tu no puedes hacer en el tema que dominas completamente podría hacerlo otro que lo domina menos y así.
> Acaso sirve un profe que no sabe explicar?
No. Por eso, más abajo comento que generalmente son más útiles. Siempre puedo haber un maestro que sepa mucho, pero que no sea capaz de expresar ese conocimiento.
> Lo que tu no puedes hacer en el tema que dominas completamente podría hacerlo otro que lo domina menos y así.
En la última frase hago referencia a eso. Una vez que el alumno está listo y tiene la capacidad de cuestionar a su maestro/profesor, lo debe hacer. Es decir, si el alumno cree que puede hacerlo mejor, lo debe comentar ya que puede ayudar a mejorar la calidad del conocimiento. Sin embargo, si el profesor es en términos generales más sabio, debe seguir por encima.
> No estas por encima de nadie, influyen muchos factores en cada cosa.
Esta frase la entiendo como: estar por encima de alguién como persona. Si es eso lo que expresas, estoy deacuerdo, nadie está por encima de nadie.
Saludos.
Aclaro, que la forma en la que yo uso la frase << estar por encima de alguién >>, es la siguiente: el maestro debe tener más control porque sabe más, pero no debe ser un dictador, sino un transmisor de conocimiento. Sin embargo, si el maestro no sabe explicar algo y un alumno lo sabe, le debe dar la palabra.
¿Hacer eso no es perder el << trono >>? No, es mejorar la calidad del conocimiento. Claro está, que si el alumno sabe más que el maestro, entonces el alumno debe ser el maestro.
ahí te doy la razón
> Existen a mi parecer dos temas: entender y aprender.
El entendimiento es la clave del aprendizaje, están íntimamente conectados, otra cosa son las decisiones que tomes pero entender conlleva al aprendizaje. Unos requieren mas o menos tiempo, e incluso distintas formas de verlo para entenderlo por lo que, cualquiera, incluso un perro, puede entender algo, simplemente o no hemos encontrado el modo, o es que se es vanidoso.
> El entendimiento es la clave del aprendizaje, están íntimamente conectados
Sin lugar a dudas. Pero, como comento, entender algo no implica que lo puedas aprender. Yo puedo entender algo, pero el paso que separa el entendimiento del aprendizaje puede que me resulte muy difícil o imposible.
Bueno si hablamos de abarcar todo un conocimiento quizás ningún humano pueda, siempre se le escapará algo, pero puedes ir aprendiendo por partes (si le interesa a uno, la ilusión es primordial)
En desacuerdo...para el caso de una persona que haga o escriba software privativo debo actuar con desconfianza porque en cualquier momento de su vida podrá poner una funcionalidad no deseada y no lo sabré. Por tanto en algunos casos, es mejor actuar con desconfianza. Hacer uso del software privativo es hacer uso de la fe siega. Pero por ejemplo si le encomiendo a una persona tirar un papel al tacho de basura es posible que actúe sin desconfiar.
Hacer uso de la fe siega implica depositar la confianza en otros, es muy tonto según el caso. Para los partidos políticos sucede lo mismo, siempre es mejor actuar con desconfianza. Mira este vídeo https://www.youtube.com/watch?v=k8vVEbCquMw
Sds
Incluso en una plaza pública no puedes pintar o cortar los árboles como quieras, romper los asientos, cambiar las lámparas, etc.
Sds
> Hablas de confianza e ignoras que ésta se gana con méritos; de allí que el modelo de desarrollo «open-source», usado con mucha frecuencia en software libre, sea meritocrático.
Es muy cierto lo que comentas. Eric S. Raymond o Linus dejan claro que la confianza se obtiene con los méritos.
1. Usa los comentarios anteriores y busca en la web.
2. Aprende los fundamentos de la programación. Escribe pseudocódigo y diagramas de flujo antes de programar.
3. Recomiendo que empieces con Python. C/C++ pueden hacer dos cosas: los dominas y te conviertes en un buen programador, o te dominan y terminas dejando este mundo.
No recomiendes con soltura y sé más abierto, ese no es el único camino, de hecho está explicado muy poco detallado, lo esencial es aprender el método de organización del lenguaje aprendido y llevar a cabo pasos para a partir de una simple idea general, crear un programa en el lenguaje a usar. Están bien los ejemplos, pero hay cosas no adecuadas para mucho, los diagramas de flujo son liosos, sería preferible empezar a ver la estructura del programa, reglas de organización y el uso de iteraciones con pseudocógido (que eso si está perfecto), sin ver complejas series de pasos, mejor que cada uno capte el concepto que mejor se adapte a él mismo.
Lo intentaré. Aunque, no entiendo la primera parte: << No recomiendes con soltura >>.
> los diagramas de flujo son liosos
Esto es muy cierto. La razón por la que recomiendo los diagramas, es porque puedes << ver >> los caminos que toma un programa. Aunque, si lo puedes imaginar, es más eficiente hacerlo en pseudocódigo y no en diagramas. Sin embargo, es mejor aprenderlos, pueden ser útiles cuando necesites hacer algo más rapido.
Saludos.
Me refiero sin analizar bien si tu procedimiento puede ser adecuado para todos. Espero no haber parecido arrogante con el texto anterior o algo :(
Yo buscaría algún libro de programación básica en C++ o el lenguaje que quieras. O algún curso online para principiantes. Creo que si te pones a investigar por tu cuenta para hacer tal o cual cosa, a cada dos pasos te vas a quedar atascado porque habrá conocimientos básicos de programación de los que carezcas.
Yo cuando aprendí tuve un libro a mano de programación y me ayudó a esclarecer muchas dudas.
En cuanto a cómo aprender a partir de Trisquel, ni idea. Supongo que si no tuviera ni idea empezaría por algún programa muy básico como una calculadora básica del sistema. Primero aprendería lo básico de programación, pensaría de forma abstracta cómo hacerlo (o en pseudocódigo) y cuando llegase a algo que no supiese resolver miraría cómo está hecha la aplicación de calculadora en trisquel. No sé, es sólo una idea.
Ahora que me he estabilizado mirando lenguajes recomendaría empezar con Pascal u Object Pascal y de compilador recomiendo Free Pascal.
Me gusta mucho porque escribes una ves y compilas el mismo programa para muchas plataformas.
Sds
Nooooooo
La programación imperativa no. Es mucho mejor empezar con la poderosa programación funcional. Un lenguaje como lisp. Fácil de entender. Con poco énfasis en la sintaxis. Lo que permite aprender programación y como hacer programas en lugar de aprender un montón de reglas de como escribir y sintaxis.
La ventaja de la programación imperativa es que su forma de idear programas es aplicable a problemas en la vida real.
Por supuesto que no...
La programación con lisp es mucho más natural que en programación imperativa.
Puedo apostar que nunca has intentado programar con lisp, mientras que yo si he programado en python, javascript y lisp y puedo ver las claras diferencias entre lisp y python y creeme, Lisp, especialmente Scheme es mucho mejor, más sencillo y excelente para aprender conceptos y no viciarse por la manera en que enseña a pensar la programación imperativa.
Hay una razón por la que la programación funcional nuevamente esta en auge y es porque es mucho mejor, más elegante y con menos errores y "bugs" que la programación funcional.
Debido a que la programación funcional no tiene estado, lo que permite siempre saber que va a pasar ante cierta función, mientras que la programación imperativa no sabes que resultado te puede dar si no conoces el estado.
No respondes a lo que digo con argumentos. Incluso dándote la razón de su facilidad y el ahorro de trabajo que supone sigo manteniendo que la programación imperativa centrada en el cómo y no en el qué como es la declarativa es mucho mejor en el sentido de aplicación en la vida real, aprender a resolver un problema que se te antepone siguiendo una serie de pasos que tú mismo has deducido analizándolo.
Esta razón que ya hace tiempo que he visualizado su sintaxis es por la que no me he puesto a aprenderlo, me parece enrrevesada incluso más que muchos otros lenguajes. Pascal me ayuda a aprender mejor.
¿Si quiero hacer una simple pantalla ABMC a mysql usando Lips puedo?. Me podrías dar referencias. Gracias
Sds
Lisp es muy potente y puede hacer todo lo que necesitas en cuanto a servidores puede interesarte Clojure un Lisp que corre en la Java Virtual Machine y por ende tiene acceso a todas las librerías de JAVA.
He visto que ABMC es el termino en español para CRUD aquí el primer resultado de buscar "CRUD Clojure" :
Is there anything for generic CRUD in clojure / clojurescript forms - Stack Overflow - https://stackoverflow.com/questions/36695977/is-there-anything-for-generic-crud-in-clojure-clojurescript-forms
Common Lisp y Scheme también tienen muchas librerías y maneras muy interesantes de aplicarlas.
Además con Lisp puedes creartu propio lenguaje específico para cierta tarea.
El mejor curso y libro de informática de la historia enseña Scheme "Structure and Interpretation of Computer Programs", el curso y el libro son gratuitos por el MIT y los autores del libro y el curso son los últimos dos miembros fundadores, junto a Richard Stallman de la Free Software Foundation.
Estos dos autores cambiaron en gran forma como es la computación hoy en día.
Y la mayoría de las grandes ideas que encuentras en cualquier lenguaje de programación en la actualidad tienen su origen en Lisp.
De verdad es un lenguaje maravilloso que cambiará profundamente, para mejor, como programas.
Hola, a raíz de lo que me pasó en el hilo que abrí ayer (https://trisquel.info/es/forum/ayuda-con-lenguaje-lisp) he descubierto todas una rama de la programación de la que no tenía ni idea, la programación funcional.
Según la información que he encontrado parece que tiene un potencial muy grande. Sin embargo, me parece raro que la programación funcional no esté más extendida. Dices que está nuevamente en auge porque es mejor pero, ¿entonces por qué cayó su popularidad hace años en favor de (C C# c++ Java...)? Es cierto que muchos lenguajes de programación imperativa (Java, JS, TypeScript...) están incorporando desde algunos años características de la programación funcional pero una explicación que he encontrado a esto es que se acerca el límite impuesto por la Ley de Moore (https://es.wikipedia.org/wiki/Ley_de_Moore) en el que los transistores de los microprocesadores no podrán hacerse más pequeños y la tendencia en mejora de hardware será multiplicar el número de núcleos del procesador. En los equipos nuevos es normal tener procesador con 4 u 8 núcleos y quizá en unos años sea habitual tener 16 o 32, y según tengo entendido la programación funcional se adapta mejor a la computación en paralelo que la imperativa y sería la forma más razonable de aprovechar la nueva capacidad de procesamiento.
Ayer fue un día de descubrimientos, primero descubrí lisp y leí un par de artículos que me sorprendieron mucho (por ejemplo, el hecho de que puedas hacer un programa que genere otros programas o que fuese más eficiente en algunos aspectos que c++ con el compilador gnu o que puedas crear a partir de él tus propios lenguajes o "dialectos"). Luego, descubrí la programación funcional que rompe todos los estándares que yo conocía de la programación y Haskell que es un lenguaje de programación funcional muy puro con un fundamento muy fuerte en teoría matemática. Básicamente, para mí fue uno de esos pocos días en la vida que cambian tu forma de ver las cosas.
Por si a alguien le interesa introducirse a la programación funcional he visto algunos lenguajes que parecen muy interesantes:
- Scala: Híbrido entre programación imperativa y funcional, basado en java, compatible de forma nativa con cualquier librería de java. Es considerado un lenguaje de transición hacia la programación funcional
- Lisp y variantes: Emacs Lisp (no necesita presentación), Common Lisp (es muy completo y para propósito general), Scheme (dialecto de Lisp minimalista pero muy potente)
- Haskell: Lleva la programación funcional al límite sin dejar de ser útil.
- Inicie sesión o regístrese para enviar comentarios