OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.
Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.
Mis impresiones a la hora de programar en Linux (Primera parte)
En principio para evitar flames innecesarios recalco que son mis impresiones por tanto son subjetivas y buscan el aportar opiniones constructivas no discusiones tontas. Algunos lenguajes los evaluado por encima y otros he programado bastante.
Tras el disclaimer de rigor, lo primero comentar lenguajes de programación:
Eiffel:
Se puede utilizar con el compilador smarteiffel. Es un lenguaje de programación orientado a objetos puro. Todos son objetos, incluso los tipos primitivos como los enteros, caracteres, etc..A favor tiene una sintasix bastante elegante, es simple, y tiene soporte para gtk y gnome. Ademas se puede utilizar eglade que es una versión de glade para eiffel. Utiliza recolector de basura, y tiene manejo de excepciones y contratos para situar la responsabilidad de cada clase. Es importante la encapsulación y fomenta buenos hábitos a la hora de programar. Como curiosidad decir que el código primero lo pasa a c y luego se convierte a binario. Es un lenguaje compilado como ya he comentado antes y fuertemente tipado .
Como defectos esta que tiene pocas librerias, no tiene apoyo comercial, se utiliza poco, por lo que no hay una gran comundidad detras.
Conclusión: no recomendado para desarrollar, sin embargo para aprender orientación a objetos esta muy bien.
Perl (Practical Extraction and Report Language):
Utilizado en un principio para la extracción de informes debido a la potencia que tiene para manejar expresiones regulares se ha convertido en un lenguaje de programación todoterreno.Una de sus ventajas es que en pocas lineas se puede hacer un programa bastante complejo. Pero la más importante de todas es CPAN. Es un repositorio central con miles de modulos. Se puede utilizar el shell de CPAN para descargar los modulos como si fuera urpmi (Un equivalente). Tiene una gran comunidad por detrás por lo que por mucho que digan, hay Perl para rato. Esta en la mayoría de las distros (¿En cual no?), en varios Unix, versión para Windows, y para diferentes tipos de hardware, es decir, multiplataforma con mayúsculas. Tiene soporte para Gnome bastante bueno (Se puede utilizar la libglade con lo cual se puede usar comodamente glade para las interfaces), Tk, etc...Tiene un buen soporte para programar en red, ya que dentro de los modulos "oficiales" tiene soporte para sockets, protocolo http, y luego modulos aparte como Catalyst que son la equivalencia de perl con respecto a RoR (Ruby on Rails).
El inconveniente es que las librerias para KDE son muy antiguas, y el soporte para Qt es malo. Tampoco hay muchos IDE y herramientas de programación visuales. Lo que yo utilizo es Eclipse con epic. También tiene una sintasix bastane curiosa (como el paso de parametros a funciones), el soporte para la orientación a objetos esta algo cojo, pero todas estas cosas se están arreglando para Perl 6.
Por cierto es intrepretado y bastante lento.
Conclusión: Recomendado salvo si quieres buen soporte para KDE. Tampoco se aconseja para grandes proyectos.
Mono:
No es un lenguaje de programación. Es una plataforma que busca la compatibilidad con .Net. Actualmente el lenguaje más soportado es C# y tiene buenos bindings con Gnome y tecnologías relacionadas (GTK#, Cairo, etc..), un IDE como Monodevelop. El inconveniente que tiene es que hay partes que estan estandarizadas en .Net y otras como WindowsForm no. Por otra parte esta condenado a estar un paso por atrás de Microsoft. Asi que para portar aplicaciones de Windows con .Net a Linux, hay que tenerlo desde un principio pensado, porque sino podría no funcionar. De todas formas como hay versiones de Mono para Windows, MacOSX, lo ideal sería programar en Mono y asi no habrá tantos problemas.
Su creador es Miguel de Icaza, y tiene a Novell detrás por lo que parece que hay Mono para rato. Por contra la comunidad esta dividida. Los hay que le parece que es un vendido a Hasecorp. Otros como yo pensamos que cuantas más herramientas y opciones a la hora de programar haya en Linux mucho mejor. Eso si no me cabe duda que la compatibilidad con .Net será tanta como a Microsoft le convenga.
Conclusión: recomendable pero con varios peros. Como alternativa a Java esta mucho más verde. Y C# para cosas pequeñas, al igual que Java, es un poco matar pulgas a cañonazos. Actualmente no es el mejor lenguaje para programar en KDE.
C y C++:
Poco voy a comentar porque todo dios los conoce. C es el principal lenguaje que se utiliza en Gnome con las ventajas que eso conlleva en librerias y documentación. En Kde y con las Qt lo que se utiliza es C++
Son los lenguajes preferidos para programar sistemas operativos y motores gráficos, debido a su rápidez y eficiencia (Por mucho que le pesen a los fanáticos pro Java).
Por otra parte hay un montón de librerias que se programan primero para C y C++, y luego se portan a otros lenguajes con las ventajas que eso produce. Hay herramientas para programar a patadas como compiladores (gcc), debuggers (gdb), IDE's (Anjunta, Kdevelop, Eclipse+CDT, CodeBlocks), etc..
Como inconvenientes decir, que son los suficientemente de "bajo nivel" para que la gestión de memoría se encargue el programador, no hay tipos y estructuras de datos como pueden ser listas, arboles, dentro de la librería básica, por lo que para desarrollar puede ser más lento que con lenguajes de alto nivel. De hecho esto lo cuenta Miguel de Icaza sobre su experiencia al programar Evolution con C.
Conclusión: Muy buenos para programar videojuegos con engines gráficos como ogre3d, irrlicth, crystal space, etc.., engines físicos (newton, ode), sistemas operativos, aplicaciones para sistemas embebidos, etc...
Espero que estos comentarios le sirvan de orientación para la gente que empieza a programar en Linux y no sabe por donde empezar. Haré más partes explicando más lenguajes, librerias, IDE, etc.. Todo según el tiempo que tenga y las ganas ;-)
Salu2
BOFH
# 14039 Se agradece...
Siempre es bueno para alguien leer este tipo de opiniones, sobre todo si el lector no es informático ni menos programadore, pero se interesa por la programación de forma autodidacta, q es mi caso, y precisamente hoy en día estoy siguiendo un curso de python de un pdf, así es q ojalá salgan opiniones sobre este lenguaje en la 2ª parte de tú post.
Salu2!!!
BOFH
# 14040 De python tengo pensado hablar
porque lo voy a utilizar para hacer algunas pruebas y si todo va bien hacer un videojuego con python y el engine panda3d
De todas formas siempre oigo buenas cosas de python asi que no creo que me defraude.
Suerte con tu aprendizaje.
Salu2
--------------
cloud_tdh@jabber.org
Participa en los libros colaborativos
----------------------
Colabora con la Documentación
BOFH
# 14044 Me alegra haber visto Eiffel en el post :)
Y es que reconozco que soy un enamorado del lenguaje Eiffel, un lenguaje un tanto desconocido por la mayoría.
Aparte de lo aportado por tí, decir que el compilador libre SmartEiffel (licencia GNU para el compilador y herramientas asociadas) incluye unas cuantas librerías (con otra licencia propia, semejante a la LGPL, que permite utilizarlas en proyectos cerrados), aparte de las estándar del lenguaje, con clases básicas para implementación de estructuras de datos, lecturas de ficheros, manejo de sockets, de expresiones regulares, etc. SmartEiffel puede compilar a lenguaje C, y éste a lenguaje máquina con un compilador de C cualquiera, pero también puede compilar a bytecode de Java, haciendo la aplicación más portable.
Eiffel sí tiene un cierto apoyo comercial. Su creador Bertrand Meyer dirige una empresa llamada Eiffel Software que distribuye varios entornos de desarrollo para el lenguaje Eiffel, de código cerrado, aunque algunos pueden descargarse gratuitos para fines académicos o no profesionales (hay versión para Linux). Tal vez una de las causas de la escasa difusión de Eiffel está en que Bertrand Meyer, que en absoluto es un defensor del software libre, no liberó las librerías base de su compilador comercial hasta hace relativamente pocos años, lo cual hizo proliferar una serie de librerías de clases incompatibles entre sí y entre los diferentes compiladores implementados.
Tras la estandarización del lenguaje por parte de ECMA (el mismo organismo que estandariza Javascript), hay una cierta división entre los "puristas" del lenguaje tal y como lo concibió Bertrand Meyer en sus orígenes (SmartEiffel entra en este grupo), que opinan que ECMA-Eiffel no es Eiffel, y los más aperturistas (Bertrand Meyer y su empresa entre ellos) que aceptan la estandarización realizada por ECMA, la cual "suaviza" un poco el rigor original del lenguaje (aún a pesar de esto, los compiladores de Eiffel Software no implementan todas las características estandarizadas por ECMA)
Creo que Eiffel tuvo su apogeo a comienzos de siglo, entre los años 2001-2003 aproximadamente. La mayoría de páginas web con proyectos basados en Eiffel que se encuentran son de esa fecha. Sin embargo, por alguna razón no terminó de convencer a los programadores (quizás, aparte de lo mencionado anteriormente, se vió como un lenguaje demasiado estricto) y hoy en día prácticamente sólo sobrevive, dentro del mundo del software libre, el proyecto SmartEiffel, y dentro del mundo comercial la empresa de Bertrand Meyer.
Para mí no es sólo un lenguaje académico. Podría ser un lenguaje muy competitivo con Ada para proyectos críticos si no fuera por que dos circunstancias frenan su uso en proyectos reales:
Lógicamente, la escasa comunidad de programadores que lo respalda hace que esto sea un círculo vicioso: como no se usa, no se producen librerías ni documentación, por lo que no es usable - y así volvemos a empezar.
Yo animo a todo el que no lo conozca que lo pruebe. Quizás para alguien venido de Perl o C sea un lenguaje muy rígido, pero para el que venga de Ada o le guste la programación OO se encontrará con el único lenguaje OO que implementa todos los mecanismos OO teóricos existentes.
El resto de repaso de lenguajes que haces es bastante acertado, con la excepción de Mono, que no lo conozco y no puedo opinar. Tal vez echo en falta alguna opinión sobre Java (las mías no son muy buenas, pero no me quiero extender más). En mi caso particular y por el tipo de trabajo que hago (no son proyectos grandes, sino scripts de cierta envergadura), normalmente suelo usar Perl. Es rápido programar con él y como dices, tienes en CPAN librerías para todo.
Saludos,
luismago
--
Si se busca el triunfo como sea, se vive el drama de tener que ganar.
Saludos,
luismago
--
JID: luismago@jabber.org
Ceterum censeo Carthaginem esse delendam. -Marco Porcio Catón
BOFH
# 14051 Lo que yo no me esperaba
Es que alguien me hiciera un comentario sobre Eiffel ;-)
La verdad es que es sorprendente lo infravalorado que esta. Es una pena porque como ya comente es un lenguaje muy limpio y claro. Posiblemente tanto Smalltalk como Eiffel sean los más puros dentro del paradigma de la orientación a objetos.
Aparte de la falta de librerias y del apoyo de una gran empresa detrás. También esta el asunto de que esta totalmente desvinculado de C, es decir, si nos fijamos muchos programadores se han formado con el lenguaje C, hasta tal punto que muchos lenguajes basan su sintaxis y sus estructuras de control en dicho lenguaje. Luego aparece C++ que aporta la OO pero que sin embargo no la obliga a utilizar, ya que muchos programadores no la llegaban a entender a fondo (es de diferente forma de pensar). Después aparece Java que remedia los males de C++ (aunque aparecen algunos nuevos), y muchos programadores se pasan a Java. Por último apararece C# y clama que resuelve los males de Java y los ¿programadores se pasan?, esto último esta por ver.
Si nos fijamos hay una corriente de lenguajes que se copian, mejoran, pero ya sea por competencia, o por mejorar el lenguaje anterior, se relacionan. Y no creo que haya duda que salvo excepciones que esta corriente es la principal dentro del mundo de la programación.
Ahora bien lenguajes como Eiffel están al margen de toda esta "moda" y yo creo que ser tan diferente pues a lo mejor le ha hecho menos atractivo o le ha dado menos a conocer (Los que más hacen publicidad de Ruby son los propios usuarios de Java al poner a parir al creador de Rails X-D). De todas formas es una opinión mía un tanto cogida por los pelos, en el fondo, lo único que podemos saber con certeza es que independientemente de si es mejor o peor, hoy en día es bastante minoritario.
Espero que más gente se anime a comentar sus lenguajes preferidos. De los que no tengo ni idea es de programación funcional, del estilo de lenguajes como Haskell, y Lisp.
Sobre Java ya comentaré en otra entrada. Hace tiempo que no lo toco y aunque van a ser cometarios breves no quiero ser injusto o hacer FUD contra ningún lenguaje, por lo que me tengo que poner al día. La idea es hacer algunas entradas en el blog con pequeños resumenes y experiencias para dar a conocer diferenteres lenguajes, librerías, y asi los blogdrakeros tengan algunas referencias rápidas sobre que opciones hay para programar en Linux.
Saludos, y muy interesante tu aportación sobre Eiffel, había cosas que no sabía.
-----------------
cloud_tdh@jabber.org
Participa en los libros colaborativos
----------------------
Colabora con la Documentación
BOFH
# 14077 En todos los lados tiene que haber un rarito ;)
Si es que en todos los lados tiene que haber un rarito ;-)
No lo había pensado, pero tienes razón en la evolución de un programador desde C -> C++ -> Java ¿ -> C# ? Tal vez por eso, y a pesar de ser lenguajes más "sucios" (dicho cariñosamente) que Eiffel o Smalltalk, tanto C++ como Java son los lenguajes más utilizados cuando se usa programación OO (veremos qué pasa finalmente con C#). Al fin y al cabo son lenguajes todos de la misma familia y quien sabe C se encuentra cómodo en C++ o Java.
Sobre la programación funcional, otra gran olvidada, tampoco sé gran cosa y ojalá alguien pueda aportar algo en este hilo. Lisp tuvo cierto éxito en los 80, en pleno auge de la inteligencia artificial, pero ahora se ha quedado un poco olvidado; sin embargo Scheme, un dialecto de Lisp, se sigue usando en Emacs y (junto con Perl) para scripts en el Gimp.
Como tarea pendiente, me voy a proponer leer algo sobre Python o Ruby, que son dos grandes desconocidos para mí, pero que parece que apuntan buenas costumbres de programación.
Saludos,
luismago
--
Si se busca el triunfo como sea, se vive el drama de tener que ganar.
Saludos,
luismago
--
JID: luismago@jabber.org
Ceterum censeo Carthaginem esse delendam. -Marco Porcio Catón
Usuario
# 14092 Sobre la programación funcional
En la carrera se toca este tipo de programación y la verdad no la veo útil. Ahí dabamos prolog y un poco de lisp. De lisp prácticamente no me acuerdo y dudo que vaya a repasar algo de este tipo de lenguaje. De prolog si puedo hablarte un poco más.
Prolog, en mi opinión, no vale para nada. Todo lo que tuve que hacer con prolog se puede hacer perfectamente en otros lenguajes sin mucho esfuerzo. Si vale para algo es para hacer Sistemas expertos basados en reglas que por lo que vi tampoco tenía mucho misterio.
Básicamente consiste en poner hechos unos detrás de otros y poner reglas para que deduzcan si lo que preguntas es verdad o no.
Ejemplo de hechos:
hijo(Pepe, Juan).
hijo(Pepe, Manolo).
Ahí se establece que Juan es hijo de Pepe y que Manolo es hijo de Pepe.
Ejemplo de regla:
hermano(X,Y):-padre(Z,X), padre(Z,Y).
aquí se deduce si dos personas son hermanos ya que al preguntar por hermano(Juan,Manolo)? prolog comienza a buscar en la base de conocimientos
1) padre(Z, Juan) esto produce cierto si Z= Pepe y prolog a partir de aquí asigna valor a Z.
2) padre(Pepe,Manolo) que también es cierto porque está en la base de conocimientos.
3) concluye con que es cierto porque las dos condiciones se cumplirían y por tanto son hermanos.
Si preguntas por hermano(Juan, Pedro) iría así:
1) padre(Z,Juan) cierto si Z = Pepe y asigna valor a Z
2) padre(Pepe, Pedro) y daría falso porque no está en la base de conocimientos
3) concluyen con que no es cierto que sean hermanos
Aunque esto es una vista muy superficial del tema, yo no lo veo claro y ni siquiera útil porque se puede hacer en cualquier lenguaje de programación sin que cueste excesivo trabajo, pero en fin...
¿Alguién tiene algún argumento para convencerme :)?
Saludos
Edito y añado
Una cosa a su favor sí que tiene, se llama backtracking. Consiste en que desde un punto del programa se puedan hacer llamadas recursivas para poder ver las soluciones que puede haber. Ésto se suele usar para IA en plan búsqueda de soluciones. Por ejemplo el típico del ajedréz.
Con la programación funcional puedes simular un movimiento y analizar como quedaría el resto del tablero y simular los posibles movimientos de tu adversario. Con cada movimiento del adversario, mirar como te volvería a quedar el tablero y simular un nuevo movimiento. Así vas haciendo llamadas recursivas hasta "ver" si te quedas con un tablero ganador. Si sale que ganas, haces el movimiento original, dejando ya mover a tu adversario.
En realidad esto provoca un cómputo bastante grande y para evitarlo se usan otras técnicas de IA como la poda en el árbol de soluciones y cosas así, o bien heurísticas de por dónde ir avanzando y dejar un bloque de soluciones como no válidas, etc, etc pero esto creo que se va un poco más allá de la programación funcional.
BOFH
# 14095 Prolog
Esta enfocado a la inteligencia artificial, y utiliza la lógica de predicados. No veo yo como vas a sustituir facilmente eso por otro lenguaje y que resulte igual de cómodo. Si es por poder, hasta se puede programar en una pseudo orientación a objetos en C, pero vamos no es lo mismo.
Salu2
-----------
cloud_tdh@jabber.org
Participa en los libros colaborativos
----------------------
Colabora con la Documentación
BOFH
# 14046 Kind'a OT
¿Sobre ncurses no sabes algo? creo que es bien sabido que me gustan las cosas en texto o seria mejor usar otra cosa?
--
¿Quien es Jesucristo?
dalfa@jabber.org
¿Quien es Jesucristo?
BOFH
# 14052 ncurses nunca las he probado
he leido algún tutorial, y creo que el mayor problema que tiene es que se hace algo pesado su programación, o por lo menos se me hizo pesado el tutorial X-D
En bulma hay un artículo que aunque algo viejo sirve de introducción ncurses, también te puede interesar el siguiente tutorial tutorial-ncurses
Como siempre también en perl hay una libreria para utilizar las ncurses.
Espero que te haya ayudado algo.
Salu2
-----------
cloud_tdh@jabber.org
Participa en los libros colaborativos
----------------------
Colabora con la Documentación