Programas GNU/Linux aprendizaje

10 Antworten [Letzter Beitrag]
gonzaloribadeo
Offline
Beigetreten: 05/30/2015

Soy nuevo en trisquel, y llevo ya un año en GNU/Linux, tengo 14 años.
Soy un entusiasta del software libre, y por ello instalé trisquel.
He visto que GNU/Linux es ampliamente usado en la educación, así que me gustaría que me recomendarais algún programa útil para aprender matemáticas, inglés, francés, programación, o cualquier otra cosa que me sirva, os lo agradecería muchísimo.
Somos una gran comunidad
Saludos y gracias

AnhangGröße
Captura de pantalla de 2015-05-31 21:22:41.png12.5 KB
SuperTramp83

I am a translator!

Offline
Beigetreten: 10/31/2014

Hola! Bienvenido a la comunidad!

Otros amigos aquì te podran recomendar sobre matematicas y programaciòn.

Si quieres aprender un idioma, aprende primero la gramatica. En la red hay montones de gramaticas en pdf..
Una vez aprendida la gramatica, tienes que leer mucho y traducir del español al idioma que quieres aprender y del idoma que quieras aprender al español.

Saludos!

gonzaloribadeo
Offline
Beigetreten: 05/30/2015

Muchísimas gracias compañero, sabes como podría traducir trisquel o alguno de sus componentes al español o al gallego?.
Yo el inglés lo domino, así que me gustaría aportar mi granito de arena a esta comunidad

SuperTramp83

I am a translator!

Offline
Beigetreten: 10/31/2014

:)
Puedes irte al canal #trisquel en freenode y preguntarle a Ruben (quidam) si te da el permiso de traductor. Abre pidgin y pones #trisquel y server "freenode" y luego buscas el usario "quidam" - le explicas que quieres traducir..

saludos!

dcapeletti
Offline
Beigetreten: 04/03/2014

Si dominas el idioma Ingles, lo que tienes que aprender es a trabajar en comunidad, es decir aprender a utilizar las poderosas herramientas de compartición como por ejemplo git. Una vez hayas aprendido como trabajar en git, puedes hacer cualquier tipo de aportación a cualquier proyecto de Software libre que este alojado en github o en otros repositorios git.
Puedes hacer aportaciones como traducciones o si sabes programar, aportar mejoras al código fuente de los programas.

Para aprender git, te sugiero que mires estos pocos vídeos, son 10 vídeos que no duran mas que 8 minutos cada uno, es decir en poco mas de una hora aprendes git: https://www.youtube.com/watch?v=7JCSnGJ5kkk&list=PLmnz0JqIMEzXThALT6gTUH1rlW1gS-GzU

El repositorio de software Trisquel esta en https://devel.trisquel.info/groups/trisquel

Mucha suerte y bienvenido a la comunidad de Trisquel.

Sds

dcapeletti
Offline
Beigetreten: 04/03/2014

Te comento mi punto de vista de como he aprendido a programar. El mundo de la programación es muy amplio, hay sistemas de procesamiento en lotes, sistemas de adquisición de datos, aplicaciones web, aplicaciones independientes, software embebido, etc etc etc...No hay una única guía de como para aprender a programar, muchos utilizan una forma u otra, algunos lo hacen como entusiastas y muchas veces resulta. Hay muchos campos que abarca el desarrollo de Software, es imposible aprender de todos ellos porque es mucho trabajo para una sola persona.

Ahora si quieres diseñar buenos programas, como los que están escritos para GNU, debes comprender conceptos de arquitectura como UNIX, manejar conceptos que la mayoría de las herramientas mas poderosas te brindan, como por ejemplo la orientación a objetos o la programación orientada a aspectos. Luego estudias un lenguaje como C, C++ usando el compilador de GNU y el framework QT o GTK. Puedes estudiar el lenguaje que mas te guste, pero los nuevos y poderosos proyectos me parece que surgen con estas herramientas. Hay miles de consejos mas, la Informática es muy amplia, blanda y flexible debido a que no esta gobernada por leyes físicas.

Para las matemáticas u otra área del conocimiento, aquí tienes una lista: http://vitalinux.programaseducativosaragon.es/Tabla_Din%C3%A1mica_Software_Educativo_Libre

Que te diviertas!!! Sds

marioxcc
Offline
Beigetreten: 08/13/2014

Si bien puedes usar software educativo como complemento para aprender, para aprender una disciplina como la matemática no se puede prescindir de libros (incluyendo libros digitales). La información dispersa que se encuentra en la web (artículos en wikis, blogs, páginas simples, videos y similares) tampoco es substituto para libros de matemática.

A diferencia de la matemática, la programación no es una ciencia (si bien hay una ciencia relacionada, que es la ciencia de la computación) y solo ocasionalmente califica como ingeniería, en la práctica es más parecida a una artesanía, y como tal, puedes prescindir de libros y basarte puramente en la práctica e información dispersa para aprender a programar. No quiero decir que debas prescindir de libros; pueden ser bastante útiles. Algunos libros de programación son aptos como referencia, pero no para aprender en general ni para basar tu aprendizaje en leerlos de forma secuencial. Asegúrate de no emplear un libro con un enfoque que no te es útil.

El libro Structure and interpretation of computer programs (SICP) es un clásico para aprender a programar pero es un tanto denso y desafortunadamente el lenguaje que utiliza (Scheme, un dialecto de Lisp) no es tan popular como debería serlo, así que la web no se desborda de información sobre Scheme así como sobre C, C++, Python, y similares. Es un buen libro pues habla de las implicaciones e importancia de los conceptos, no simplemente sobre cómo usarlos sin más. Por ejemplo: no solo te dice cómo se definen las funciones en algún lenguaje de programación en específico, sino que hace énfasis en cómo interpretarlas en términos más abstractos (sección 1.8.1 Procedures as black‐box abstractions) y de la misma forma da una perspectiva sobre los demás conceptos básicos de programación. En este ejemplo, el libro menciona que las funciones proveen una forma de abstraer complejidad, para que una vez escritas, solo tengamos que concernirnos con qué función cumplen y no tengamos que preocuparnos en cómo funcionan (eso queda como detalles internos); eso simplifica las cosas y permite organizar el programa en partes coherentes y comprensibles en vez de que todo esté desordenado. Compara esto con lo que encontrarás en muchos libros para principiantes: mencionan las funciones, y cómo definirlas, pero no hay discusión sobre su importancia conceptual.

Algunos recursos disponibles por Internet:

  • Structure and interpretation of computer programs (SICP): ya mencionado. Es libre bajo la CC BY-SA 4.0.
  • Green Tea Press: editorial que publica libros libres, y otros bajo la CC BY-NC 3.0, incluyendo su código fuente.
  • Pro Git: libro sobre sistema de gestión de versiones Git (ya mencionado en este hilo) que es el más usado.
  • Libregamewiki: lista y describe juegos libres.
  • MIT OpenCourseWare: material de los cursos del MIT.
  • ArXiV: principal archivo de papeles científicos de acceso gratuito (algunos artículos son libres), no revisado por pares.
  • Revistas científicas de IOPscience: muchos artículos son descargables desde ese sitio de forma gratuita y muchos de esos son libres.

Desafortunadamente la mayoría de libros son privativos, y los ejemplares se venden por precios relativamente altos. No sugiero adoptar la medida de evitar a los libros privativos, pues no constituyen una amenaza a la sociedad de la misma forma que el software privativo. Lo ideal es que todos los libros fueran libres.

gonzaloribadeo
Offline
Beigetreten: 05/30/2015

Muchísimas gracias por tu comentario, voy a ponerme en serio con esto muy pronto, y creo que voy a empezar con Python, ya que es bastante sencillos para los que somos principiantes en esto.
En el tema didáctico, me gustan varios cursos:

  • Aprenda a programar en Python, de Anaya
  • El Curso de YouTube de "Codigo Facilito".
  • El curso de Codeacademy, que esta página ya me enseñó algo de HTML hace tiempo, y la verdad es que me gustó bastante.

    A pesar de que sé inglés, se me hace muy pesado leer en este idioma, y más aún para estudiar; aunque sé que es el idima científico. Por eso me gustaría pedirte recomendación sobre estos cursos, que están en castellano. Y también sobre mi elección de Python, si te parece la más correcta.

    Aparte de esto, tengo pendiente de ver el vídeo que me recomendó un compañero de foro, sobre Git, que es algo que también estoy ansioso por aprender, y en futuro me intentaré poner con C++, que alguien en este foro dijo que para GNU/Linux, era uno de los lenguajes de programación más útiles.
    Muchas gracias.

    ¡Saludos gente!

  • marioxcc
    Offline
    Beigetreten: 08/13/2014

    Hola. Me alegra de que te resulte útil mi comentario.

    No tengo experiencia en la didáctica de la programación, así que no puedo comentar a gran detalle sobre cursos específicos o técnicas de aprendizaje.

    >Aprenda a programar en Python, de Anaya

    No puedo comentar sobre ese libro porque no tengo acceso a un ejemplar.

    >El Curso de YouTube de "Codigo Facilito".

    El título me da la impresión de que el curso tiene el enfoque de “lo más fácil posible”, es decir, facilidad a expensas de profundidad. No me he dado al trabajo de habilitar el entorno para ver videos de YouTube con solo software libre así que tampoco me es posible verlo por el momento.

    En general, no me agradan los videos para aprender de forma seria. He hecho nulo o mínimo uso de ellos. Creo que los medios escritos son mejores, pues uno puede leer a su propio paso, saltarse el material, o releer sin la menor dificultad, mientras que en un video, la secuencia es inflexible. Con medios escritos es fácil hojear y encontrar en donde se quedó uno, al regresar a la lectura. Los videos que son improvisados (no todos) nunca llegarán a la misma calidad de un medio escrito que ha sido revisado varias veces hasta la versión que se publicó. Incluso los videos bien hechos suelen tener un tono un poco conversacional, y cuando se trata de estudiar, me resulta mejor el tono adusto que caracteriza a muchos libros (pero no todos, algunos también tienen tonos conversacionales). Sin embargo, puede que a ti te resulte más fácil aprender con videos, entonces tiene sentido que aprendas con videos y yo no objetaría.

    >El curso de Codeacademy, que esta página ya me enseñó algo de HTML hace tiempo, y la verdad es que me gustó bastante.

    No soy un fan de los tutoriales interactivos y veo que este en particular requiere de JavaScript privativo. Cuando se trata de software, lo mejor es que sea libre y local.

    ---

    En todo caso, si vas a aprender programación con Python no creo que la cuestión de qué material uses para aprender programación a nivel básico haga mucha diferencia pues dudo mucho que encuentres algo similar al SICP ya mencionado; más bien encontrarás material del tipo (también ya mencionado) que explica la sintaxis y demás pero no profundiza realmente en la importancia abstracta de los conceptos ni tiene ejercicios que involucran razonamiento matemático. Incluso puedes empezar usando varios libros/tutoriales/similar y si te parece apropiado, quedarte con el que más te acomode. Veo que hay una versión modificada del SICP que usa Python, pero no la he leeido, y parece que está únicamente en inglés; lo menciono en caso de que te interese. Vale la pena hacer notar que no existiría esta versión modificada si el SICP no fuera un trabajo libre (o al menos permitiera la libre modificación y distribución).

    >A pesar de que sé inglés, se me hace muy pesado leer en este idioma, y más aún para estudiar; aunque sé que es el idima científico.

    Entiendo. En tal caso, si bien no recomendaría que te sometieras a intentar aprender únicamente con material en inglés, toma en cuenta que acostumbrarte con ese idioma es muy útil o incluso indispensable para aprender muchas cosas, incluyendo la programación. Mucha documentación está disponible solo en inglés.

    >Y también sobre mi elección de Python, si te parece la más correcta.

    No creo que haya una sola elección que sea la más correcta, en el sentido de la “mejor”. Python me parece un lenguaje apto para aprender programación, pero no tiene algo que lo haga sobresaliente, es un lenguaje ordinario de alto nivel. Creo que la principal ventaja que tiene Python es que hay muchas bibliotecas y material informativo sobre él (tutoriales, documentación, manuales, etcétera), no una característica del lenguaje en si, a diferencia de por ejemplo, Lisp (con su metaprogramación, programación funcional, y otras características). Python (igual que Lisp) tiene a su favor que casi todas las interpretaciones ofrecen un intérprete interactivo. Por ejemplo, en Python o en Lisp puedes cargar un archivo en el intérprete, e interactivamente declarar más variables, llamar, o definir funciones; esto es muy útil para depurar, y también cuando se está aprendiendo, para probar cosas sin tener que editar, guardar, y ejecutar; eso no se encuentra en C, C++ o mucho menos ensamblador[1], aunque los depuradores ofrecen una cantidad de interactividad limitada (llamar funciones y alterar valores de variables).

    Existe en algunos programadores de Python con cierta admiración hacia ese lenguaje que no creo que merezca, y me recuerda al cuento del nuevo traje del emperador. No quiero decir que sea un mal lenguaje de programación, solo que a diferencia de otros, Python es una simple herramienta que hace el trabajo, pero sin especial virtud. Por diseño, Python no incluye eliminación de llamadas finales, lo cuál esencialmente hecha al drenaje la programación funcional. En este caso, vemos que Python no está diseñado para ser un lenguaje que le da al programador las herramientas para adaptarlo según su criterio (así como Lisp), sino que al contrario, como a este tipo no le gusta la recursión como paradigma de programación, entonces hace lo posible para impedir usarla; es uno de los motivos por los cuáles veo que Python está lejos de merecer admiración.

    Toma en cuenta que hay distintas versiones de Python con algunas incompatibilidades. Si las cosas no funcionan como el material de aprendizaje que uses implica, puede deberse a eso.

    C y C++ son por mucho los lenguajes más comunes de las piezas importantes de un sistema operativo GNU/Linux (excluyendo scripts). Si te interesa la programación, sugiero que en algún momento aprendas alguno de esos 2 lenguajes. Es posible llamar a funciones de un archivo en C desde un archivo en C++ y de C++ desde C (con algunas restricciones). C y C++ te dan mucho control sobre como se almacenan los datos (pero no el código) en la RAM; eso permite reducir el uso de RAM o hacer mejor uso del caché, lo cuál hace respectivamente, que el programa use menos RAM o sea más rápido (comparado con un lenguaje de alto nivel que hace manejo automático de memoria) pero conlleva el riesgo de desatar un caos en la RAM. El manejo manual de memoria es fuente de muchas vulnerabilidades de seguridad.

    Si te interesa la arquitectura de computadoras, debes tener un conocimiento básico de ensamblador, y leer un libro de arquitectura de computadoras (solo aprender ensamblador no es suficiente) pero a diferencia de los lenguajes ya mencionados, no es práctico escribir programas completos en ensamblador. Usualmente solo se usa para código de muy bajo nivel (como manipular la tabla de páginas de memoria virtual) y para partes críticas que deben ser muy rápidas (Por ejemplo: implementaciones de funciones criptográficas y funciones críticas en software numérico como libFFTW o GMPlib).

    Si te interesa la administración de sistemas, debes aprender a programar en Bash. Usualmente en Bash solo se programan guiones (scripts); el lenguaje está pensado para eso; hacer otras tareas es tedioso. La línea de comandos que ya conoces es un interprete de Bash y los comandos que ingresas son programas muy sencillos en Bash (por ejemplo: “ls” es un programa en Bash que ejecuta el comando con ese nombre que bajo GNU/Linux es un programa en C y es parte de GNU coreutils), pero se pueden hacer más con Bash que solo llamar a comandos.

    En Proyecto Euler puedes encontrar una serie de ejercicios que involucran conocimiento matemático y de programación.

    [1]: Ensamblador no es un solo lenguaje de programación sino una familia. Hay al menos un lenguaje ensamblador para cada arquitectura. Usualmente cada ensamblador (en el sentido de “compilador de código en ensamblador”) implementa su propio dialecto de ensamblador (en el sentido de “lenguaje de programación de muy bajo nivel”). La sintaxis de todos los lengaujes ensambladores es más o menos parecida.

    dcapeletti
    Offline
    Beigetreten: 04/03/2014

    Hablando de Ensablador, puedes aprender con el ensamblador del proyecto GNU:
    https://es.wikipedia.org/wiki/GNU_Assembler
    http://cs.lmu.edu/~ray/notes/gasexamples/

    Otro lenguaje que me gusta mucho en mi caso, es Pascal, uso el compilador Free Pascal Compiler. Me parece muy claro, limpio y compila en varias arquitecturas. Uso lazarus como IDE, solo lo he usado para hacer varias pruebas, escribes el programas una vez y compila en cualquier sistema operativo http://www.lazarus-ide.org/.

    Sds

    dcapeletti
    Offline
    Beigetreten: 04/03/2014

    Leyendo este hilo puedes convertirte en traductor: https://trisquel.info/es/wiki/website-translations o el mismo hilo en Inglés: https://trisquel.info/en/wiki/website-translations

    Diviértase!!

    Sds