tag:blogger.com,1999:blog-21555208.post5070056320986857577..comments2024-03-19T04:21:33.323+01:00Comments on Un informático en el lado del mal: Resolver el factorial de 100 no es "picar código"Chema Alonsohttp://www.blogger.com/profile/16328042715087424781noreply@blogger.comBlogger73125tag:blogger.com,1999:blog-21555208.post-13311631030918998862022-03-27T00:55:54.947+01:002022-03-27T00:55:54.947+01:00Por cierto, todavía no he encontrado un buen manua...Por cierto, todavía no he encontrado un buen manual de PicoLisp, para aprender.. Si alguien tuviera algo, lo agradecería, si fuese en Español, ya sería maravilloso, más videotutorial ojalá hubiera algo... Maligno si el videotutorial de Pico Lisp, fuese tuyo, sería un sueño.. Has usado este lenguaje alguna vez?, mi amigo Arm siempre me presionaba, con que aprendiera ese código, creo que es la única persona que conozco, que domina la tecnología informática como tu Maligno.. Abrazo hermano. Sachttps://www.blogger.com/profile/05831017483952110302noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-28735915924276239032022-03-27T00:27:26.035+01:002022-03-27T00:27:26.035+01:00Maligno, yo tuve la fortuna de conocer un Argentin...Maligno, yo tuve la fortuna de conocer un Argentino, de esos que en mi pueblo se suele decir {Esta tocado con una barita}, muy bueno en todo lo que hacía, su nick era Arm, nos conocimos en los apasionantes chat de IRC, desconocido para las nuevas generaciones.<br />Arm siempre me hacía me recordaba, que el código tenía que estar bien repartido en líneas, que las nuevas generaciones, hacían una mala práctica al escribirlo, que no separaban bien el código, que atestaban pocas líneas todo, me explicó que había una norma no escrita, por lo que había que separar bien el código, en tantas líneas como para que se pudiera leer claro y limpio, repartiendo en las suficientes líneas que necesitara, cuando nos topabamos con el código todo comprimido en pocas líneas, entraba en colera, por lo que entiendo, que tu también tienes esa buena actitud, lo separas bien, para su buena lectura y pensando siempre en si otra persona tiene que leerlo, además de lo limpio y aseado que queda.. ARM SIEMPRE ME DIJO QUE APRENDIERA PicoLisp. Por su simplicidad, aún no me metido a aprenderlo, pero si tu lo has utilizado, me encantaría saber tu opinión y algun consejo, pues eso Maligno, {Nuevas Generaciones, que no adoptan, las buenas costumbres de la vieja escuela} Abrazo Maligno, nunca me canso, de leerte y escucharte.. Gracias por tu gran labor. Sachttps://www.blogger.com/profile/05831017483952110302noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-55400760032837198932017-03-03T20:10:42.248+01:002017-03-03T20:10:42.248+01:00Programador se nace. El resto, picaores.Programador se nace. El resto, picaores.Javierhttps://www.blogger.com/profile/07893326599449401622noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-6190395097693315952017-02-21T16:43:42.018+01:002017-02-21T16:43:42.018+01:00Saludos !
Busque esta entrada para compartirla co...Saludos !<br /><br />Busque esta entrada para compartirla con mis estudiantes, y como encuentro que no han enviado un código, les adjunto el proyecto que desarrollé en Java - NetBeans para calcular el factorial de 1.000, y una nota que me parece interesante.<br /><br />https://github.com/benavidesarias/Factorial<br /><br />Chema, no debiste exasperarte tanto, con los que no entienden el problema. Simplemente dejar que sigan estudiando informática, para entender como funciona un computador que tiene limitaciones en el numero de bits para representar un numero en el procesador. Mira que hasta hay matemáticos que no entienden el problema. <br /><br />En cuanto al lenguaje de programacion, pues sabemos en entre mas bajo el nivel, mas complicado puede ser hacer algo que en uno de alto nivel. Se podría haber hecho en ensamblador, aplicándose las mismas estructuras de programacion: secuencias, ciclos y decisiones.<br />Andres Benavideshttps://www.blogger.com/profile/05366899585036202548noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-37718005491539688112016-06-15T23:57:51.437+02:002016-06-15T23:57:51.437+02:00Yo hacía pantallas en pascal, y luego las llegué a...Yo hacía pantallas en pascal, y luego las llegué a hacer en C++ con ncurses en ambiente GNU/Linux. Lamentablemente no me decanté luego por la programación ni la seguridad pero no hay placer más grande que tener un programa 100% escrito por tí que compila y corre a la perfección (después de todos los errores que pasaste antes de llegar al compila y corre). Por cierto, leí uno de los comentarios donde ponía "100 líneas y 2 horas? o sea 10 líneas y 2 minutos" y se auto denomina programador en FORTRAN: Preocupante!Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-86704708328942308702015-09-04T15:02:45.389+02:002015-09-04T15:02:45.389+02:00Es que en una formación universitaria el objetivo ...Es que en una formación universitaria el objetivo no es calcular el número en cuestión en un lenguaje de alto nivel en el menor número posible de líneas, es adquirir la destreza de resolver un problema cuando te encuentras con limitaciones no previstas, como un desbordamiento de tipo. El problema no es "hallar un número muy grande", es "trabaja con números que desbordan la capacidad de trabajar directamente con números".Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-67914289930996067682015-03-27T15:59:21.393+01:002015-03-27T15:59:21.393+01:00@anonimo ya lo han hecho muchas veces hasta que me...@anonimo ya lo han hecho muchas veces hasta que me saqué el doctorado. Ahora examino yo. Saludos!Chema Alonsohttps://www.blogger.com/profile/16328042715087424781noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-54606595341563902952015-03-27T15:49:20.243+01:002015-03-27T15:49:20.243+01:00Bla, bla, bla...
¿Dónde está la implementación?
o ...Bla, bla, bla...<br />¿Dónde está la implementación?<br />o tu no eres examinable...?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-57681371214446095892013-03-18T10:05:30.220+01:002013-03-18T10:05:30.220+01:00Yo lo flipo con Anónimo... para empezar yo "s...Yo lo flipo con Anónimo... para empezar yo "sólo" tengo dos FPII (Electrónica Industrial y Electrónica de Equipos Informáticos) y trabajo desde hace unos quince años en un centro de impresión (una rotativa, para entendernos).<br /><br />Mi trabajo real requiere enfrentarme día si y día también a equipos de los que no soy el administrador ni físico ni lógico: no se puede tocar ni hard ni soft.<br /><br />El de mi compañero de mantenimiento es enfrentarse al mantenimiento de máquinas para las que no es posible tocar el hard o el soft (vaya, otra vez) y no contaré aquí las peripecias que ha de hacer para que las cosas sigan funcionando...<br /><br />El de cualquier programador web consiste nuevamente en trabajar sobre plataformas en las que muchas veces no puede tocar ni hard ni soft....<br /><br />Vamos, que por cada ejemplo que me des de trabajo real en España donde se pueda tocar hard y/o soft yo te doy diez de lo contrario.<br /><br />SaludosFernandonoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-75389338710435489692013-03-06T10:05:47.617+01:002013-03-06T10:05:47.617+01:00El tema de la universidad hoy en día es un debate ...El tema de la universidad hoy en día es un debate parecido al de los taurinos y antitaurinos, o en nuestro gremio los clásicos windows vs linux, ubuntu vs debian etc.<br /><br />Son opiniones diametralmente opuestas y ya se ha dicho todo, yo ya me sé lo que me vas a decir y los argumentos que vas a dar, de la misma manera que tú ya sabes los míos. Obviamente no vamos a convencernos el uno al otro.<br /><br />Saludos.kali_linuxnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-65959739159682463682013-03-06T08:31:25.644+01:002013-03-06T08:31:25.644+01:00Anónimo, desde luego yo no estoy tratando de medir...Anónimo, desde luego yo no estoy tratando de medir nada. Simplemente demuestro mi aprecio y utilidad a las asignaturas y prácticas que tuve que realizar. A su aparente inutilidad y a su cierta y verdadera utilidad para crear buenos ingenieros. Tal vez en algunas cosas la universidad se mueva un poco más lenta o debiese aplicar un poco más de practicidad. Pero en ningún caso creo que llevar a cabo resoluciones como la del artículo sobren.Cyberkenderhttps://www.blogger.com/profile/13591131540012151774noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-25892571411793263872013-03-06T04:58:37.832+01:002013-03-06T04:58:37.832+01:00Las empresas que dices no están en España, ni tamp...Las empresas que dices no están en España, ni tampoco los buenos salarios y las buenas condiciones laborales, están en Alemania o Estados Unidos.<br /><br />Tal y como dices tú con todos esos ejemplos, la única manera de vivir dignamente de informático en España es siendo emprendedor.<br /><br />He visto demasiada gente muy buena (probablemente mejor que tú y que yo) trabajar días enteros para cobrar muy poco.<br /><br />Pero claro, es un tema delicado porque mucha gente ha puesto sus esfuerzos y esperanzas en un título que no sirve de mucho. Es lógico que les moleste que se digan esas cosas.<br /><br />No te respondo a la última frase porque me gusta analizar las cosas desde un punto de vista general y realista, y no entrar en casos personales para ver "quién la tiene más larga". <br /><br /><br /><br /><br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-15776579338248271672013-03-05T22:41:44.600+01:002013-03-05T22:41:44.600+01:00Creo que aunque en España haya mucho de eso que tu...Creo que aunque en España haya mucho de eso que tu dices, también hay muchíiisimo de lo otro. Los autómatas se utilizan en miles de empresas de este país. Un autómata no sólo es para ir a la luna, es para pintar coches y soldarlos en fábricas (en muchas ocasiones los programan los I.Industriales). Pero también hay muchos informáticos que pasan de mantener redes y se dedican a investigar. Que crean aplicaciones novedosas de auditoría de seguridad(véase FOCA). Que crean modelos diferentes de controlar la seguridad y se los compra google(VirusTotal), que idean un sistema de geoposicionar fotos y se lo compra google (Panoramio). Gente que va un día y mientras estudia se programa un Kernel (véase Toro) y no quiero extenderme, pero bueno. Al final cómo ya han dicho uno se define, hay picateclas y gente que resuelve problemas. Te recomiendo que aprendas a resolver problemas y entonces, sólo entonces, a lo mejor dejas de actualizar webs...Cyberkenderhttps://www.blogger.com/profile/13591131540012151774noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-30167183596450970582013-03-05T22:15:39.763+01:002013-03-05T22:15:39.763+01:00Cyberkender, yo hablo de la realidad laboral en Es...Cyberkender, yo hablo de la realidad laboral en España, así de claro.<br /><br />Esa ingenieía que dices (la de autómatas, robots que van al espacio, etc.) aquí no existe. Aquí el trabajo de un informático es automatizar tareas, posicionamiento en buscadores, gestionar una red, mantener un servidor, actualizar una web...<br /><br />Es triste que en la universidad vendan ese discurso, pero es lógico, así los profesores no tienen que reciclarse y disponen de más asignaturas inútiles que enseñar.<br /><br />Luego cuando la gente sale al mundo laboral se lleva una sorpresa, resulta que no saben hacer prácticamente nada de lo que piden y tiene que hacerlo el del módulo.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-53436903188639162522013-03-05T18:05:52.608+01:002013-03-05T18:05:52.608+01:00Anónimo, nuevamente vuelves a pinchar. Los ingenie...Anónimo, nuevamente vuelves a pinchar. Los ingenieros se forman para aprender a enfrentarse a problemas. Eso de que puedes usar "cualquier lenguaje de programación de tan alto nivel como quieras" es falso, la mayoría de las veces es impuesto, y te debes apañar con los recursos que tengas. Y con el hardware lo mismo. Hardware no es solamente un PC que actualizas cuando quieres. A veces es un autómata, a veces es un micro para el que no existen entornos de desarrollo, a veces es una tarjeta inteligente, o todo junto, o algo nuevo y diferente. Yo creo que tu hablas de ingenieros "usuarios",pero la ingeniería es más que eso, mucho más, no te confundas.Cyberkenderhttps://www.blogger.com/profile/13591131540012151774noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-15922123404330482412013-03-05T17:25:38.590+01:002013-03-05T17:25:38.590+01:00Fernando, claro que entiendo lo que quieres decir,...Fernando, claro que entiendo lo que quieres decir, este discurso se ha repetido y se sigue repitiendo en las carreras de informática hasta la saciedad. El problema es que era válido hace 15 o 20 años, pero hoy ni de broma.<br /><br />Las "limitaciones" que tu dices extisten sólo a un nivel didáctico-teórico o autoimpositivo. <br /><br />En cuanto al software, puedes usar cualquier lenguaje de programación -de tan alto nivel como quieras- que es gratuito y compatible con muchas otras plataformas.<br /><br />En cuanto al hardware, la rapidez de los procesadores ha crecido exponencialmente, igual que la capacidad de almacenamiento. La única limitación que puedes tener es tener que pagar por un hardware moderno.<br /><br />Creo que estamos discutiendo de cosas diferentes. Tu hablas de la programación "teórica", la que se hace con lápiz y papel en pseudocódigo, la que te enseñaban en la universidad. Y yo te hablo de programación real, de implementar un programa en un lenguaje y un hardware determinados.<br /><br />Nos guste o no, cualquier programa vamos a tener que implementarlo en un lenguaje concreto. No se puede dar como solución a un problema x líneas de pseudocódigo y decir que eso te daría la solución.<br /><br />En matemáticas puedes dar como respuesta 3/7*pi+1 , en informática no, tienes que reponder 2.346Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-63230297765556390162013-03-04T12:33:56.102+01:002013-03-04T12:33:56.102+01:00Anónimo: sigues sin entender. No se trata de nosta...Anónimo: sigues sin entender. No se trata de nostalgia, se trata de que en muchas ocasiones el entorno de producción tienes una limitaciones y ya.<br /><br />Que el entorno de producción sea un servidor que no tenga habilitada la extensión GMP del PHP te limita y ya no puedes utilizar las cómodas y rápidas funciones gmp_fac... habrá ocasiones en las que tenga remedio (actualizar o instalar la extensión) y habrá otras en las que no... el ingeniero/técnico que triunfa es aquel que sabe adaptarse a las limitaciones.<br /><br />De eso es de lo que habla Chema y de eso es de lo que hablo yo también.<br /><br />El haber programado en tres ensambladores, Basic, Pascal, Logo, AppleScript, PHP, JS, C, AutoIt, PostScript (si, también se puede utilizar como lenguaje de programación)... me da unas herramientas que me permiten adaptarme a casi cualquier problema que me enfrente.<br /><br />Utilizo la herramienta más adecuada en cada caso, si puedo, si no puedo elegir la herramienta soy yo el que se adapta.<br /><br />Y no hay más, la práctica era para probar la astucia de los estudiantes, tenían que utilizar Fortran en un problema para el que no es el lenguaje más adecuado (aunque según han comentado es un lenguaje muy utilizado en el ámbito profesional de la carrera...) así que toca apañárselas con lo que hay.<br /><br />Como digo, entrar a discutir esto me parece de malos programadores. Un buen programador resuelve el problema con lo que tiene, no se queja de lo que no tiene.<br /><br />Un saludo<br /><br />PD: A los anónimos: ¿tanto cuesta inventaros un nick para comentar?Fernandonoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-73857122257841630052013-03-03T12:31:58.086+01:002013-03-03T12:31:58.086+01:00program getfact100
! 100!=9.3e157
integer,parame...program getfact100<br /><br />! 100!=9.3e157<br /> integer,parameter :: k550 = selected_int_kind(550)<br /> integer(kind=k550) :: fact = 1<br /> integer :: num<br /><br /> do num = 1, 100<br /> fact = fact * num<br /> end do <br /><br /> write(*,*) '100! = ', fact<br /><br />end program getfact100Fonhttps://www.blogger.com/profile/12624072174938411006noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-56335684211229818432013-03-03T11:10:14.998+01:002013-03-03T11:10:14.998+01:00Que recuerdos más malos me trae esto. Yo también h...Que recuerdos más malos me trae esto. Yo también hice esa informática.<br />Tengo una duda,¿lo intentasteis a lo bruto? En FORTRAN se puede cambiar el número de bits que se utiliza para el integer: http://gcc.gnu.org/onlinedocs/gfortran/SELECTED_005fINT_005fKIND.html<br />Con esto se resuelve con tres lineas.Fonhttps://www.blogger.com/profile/12624072174938411006noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-61121662312236411672013-03-02T09:08:39.823+01:002013-03-02T09:08:39.823+01:00Fernando: los lenguajes de alto nivel (e internet ...Fernando: los lenguajes de alto nivel (e internet en general) han matado muchas cosas bonitas, no te niego que no fuese bello programar en ensamblador, fortran, pascal... Pero cuanto antes dejemos atrás la nostalgia mejor que mejor. Hay que adaptarse en el mundo que nos ha tocado vivir.<br /><br />Siempre pongo de ejemplo un hombre que conozco que tenía de toda la vida una tienda de discos de música, todos sus colegas del gremio tuvieron que cerrar, obviamente no hacían más que quejarse y decir que internet era una basura y tal y cual. Él en cambio supo reinventarse y aprovechó la marca para montar un negocio online de varios productos relacionados, y le ha ido muy bien.<br /><br />El desarrollo tecnológico tiene cosas buenas y malas, pero no podemos quedarnos en la nostalgia de cuando programábamos en fortran porque eso ha pasado a la historia.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-72677496945729252142013-03-01T22:15:18.156+01:002013-03-01T22:15:18.156+01:00Ya como curiosidad, en PHP:
echo gmp_strval(gmp_fa...Ya como curiosidad, en PHP:<br />echo gmp_strval(gmp_fact(100)), "\n";<br />echo gmp_strval(gmp_fact(100000)), "\n";<br />echo gmp_strval(gmp_fact(10000000)), "\n";<br /><br />Los tiempos:<br /> 0,0020s para 100!<br /> 1,7804s para 100.000!<br />138,1359s para 10.000.000!<br /><br />No está mal.Fernandonoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-69410377305870418482013-03-01T21:51:11.623+01:002013-03-01T21:51:11.623+01:00El tema es más real de lo que parece, hace unos añ...El tema es más real de lo que parece, hace unos años hice una pequeña utilidad en ensamblador que te decía el tamaño del disco duro... para eso tenía que hacer los cálculos pertinentes y tuve que implementar en ensamblador la manera de multiplicar números de 32 bits porque sólo disponía de registros de 16 bits...<br /><br />Si un ingeniero no sabe solventar ese tipo de limitaciones y su solución es decir que para qué voy a buscar una solución si cambiando el hard/soft ya está solucionado... haz eso con un robot en Marte, hazlo anda.Fernandonoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-27987096921758870532013-03-01T20:10:30.649+01:002013-03-01T20:10:30.649+01:00A ver. No estoy diciendo para nada que el ejercici...A ver. No estoy diciendo para nada que el ejercicio no tenga sentido. Os doy totalmente la razón en que la idea de la práctica no es dar un resultado sino una resolución, un procedimiento. De todas maneras, a mí no me suele gustar enfrentarme a problemas ya resueltos (sobretodo cuando ya sé como se resuelven), me siento como que estoy haciendo una larga multiplicación a mano. <br /><br />Dicho esto. En el caso particular de la informática, al ser una ingeniería, se valora mucho el tiempo y la eficiencia. Lo que realmente diferencia un buen programador de un "newbie" es precisamente que el buen programador reaprovecha mucho código, usando la POO (orientación a objetos, las famosas clases) y un prgramador novel hace programación "espaghetti", significa código sin ningún tipo de estructura, muy poco legible y además difícil de mantener. Me parece mucho más importante aprender a usar la API (conjunto de procedimientos y funciones) de un lenguaje de programación que poner problemas "clásicos" ya resueltos hace años.<br /><br />La informática no es un área para estudiarla desde la teoría, como la física o la filosofía. Una hora de pelearse con un problema de la vida real vale más que 10 horas de conceptos teóricos, o de problemas clásicos ya resueltos en las API's de cualquier lenguaje moderno. <br /><br />Imaginad un corredor de fondo intentando mejorar leyendo muchos libros sobre atletismo, sería mucho mejor que invirtiese ese tiempo corriendo, entrenándose para lo que se encontrará en la realidad.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-52130074362746270622013-03-01T18:10:38.205+01:002013-03-01T18:10:38.205+01:00Fué como leer mi propia historia.... solo que a mi...Fué como leer mi propia historia.... solo que a mi si me toca programar en mi dia a dia..... pero la verdad pienso totalmente igual acerca de aprender a programar...... <br /><br />Lo peor es que en mi vida no ha sido un simple ingeniero Aeroespacial el que me ha pedido este tipo de favores.... sino Ingenieros de Sistemas :S ADVDixonhttps://www.blogger.com/profile/16006068031153333888noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-21498287608748762282013-03-01T14:49:01.271+01:002013-03-01T14:49:01.271+01:00En mi opinion el objetivo del ejercicio es simplem...En mi opinion el objetivo del ejercicio es simplemente, enfrentar al alumno a una limitación y obligarle a reconocer el problema que sabemos que tendrá para que busque una forma alternativa de resolver el ejercicio.<br /><br />Es un problema mil veces resuelto y los lenguajes de alto nivel nos abstraen del mismo, pero ese no es el objetivo. El factorial de 100 no sirve para nada en este caso. Tan solo es una forma simple de obligar a buscar una solución a un problema en un ejercicio aparentemente tribial.<br /><br />Personalmente me parece una práctica perfecta para realizar en una universidad dado que el objetivo no es obtener un resultado si no aprender a identificar y resolver un problema. Ya que en el mundo empresarial puede que calcular el factorial de 100 resulte tribial, pero problemas seguro que se encontrarán, y no siempre se podrán utilizar soluciones que ya estén hechas, y en estos casos resultará util haber tenido que realizar estos ejercicios que "no tienen sentido".<br /><br />Un saludoAnonymousnoreply@blogger.com