Fixture Copa America "07
domingo, junio 24, 2007

GRUPO A
Sedes: San Cristóbal y Mérida
1. Venezuela
2. Uruguay
3. Perú
4. Bolivia
26.06.07 (1) Mérida Uruguay-Perú (18.00, 22.00 GMT)
26.06.07 (2) San Cristóbal Venezuela-Bolivia (20.45, 00.45 GMT)
30.06.07 (3) San Cristóbal Bolivia-Uruguay (16.00, 20.00 GMT)
30.06.07 (4) San Cristóbal Venezuela-Perú (18.15, 22.15 GMT)
03.07.07 (5) Mérida Perú-Bolivia (18.30, 22.30 GMT)
03.07.04 (6) Mérida Venezuela-Uruguay (20.45, 00.45 GMT)
GRUPO B
Sedes: Puerto Ordaz, Maturín y Puerto La Cruz.
1. Brasil
2. Ecuador
3. Chile
4. México
27.06.07 ( 7) Puerto Ordaz Ecuador-Chile (18.30, 22.30 GMT)
27.06.07 ( 8) Puerto Ordaz Brasil-México (20.45, 00.45 GMT)
01.07.07 ( 9) Maturín Brasil-Chile (16.00, 20.00 GMT)
01.07.07 (10) Maturín México-Ecuador (18.15, 22.15 GMT)
04.07.07 (11) Pto. La Cruz México-Chile (18.30, 22.30 GMT)
04.07.07 (12) Pto. La Cruz Brasil-Ecuador (20.45, 00.45 GMT)
GRUPO C
Sedes: Barinas, Maracaibo y Barquisimeto.
1. Argentina
2. Paraguay
3. Colombia
4. Estados Unidos
28.06.07 (13) Maracaibo Paraguay-Colombia (18.30, 22.30 GMT)
28.06.07 (14) Maracaibo Argentina-EE.UU. (20.45, 00.45 GMT)
02.07.07 (15) Barinas EE.UU.-Paraguay (18.30, 22.30 GMT)
02.07.07 (16) Maracaibo Argentina-Colombia (20.45, 00.45 GMT)
05.07.07 (17) Barquisimeto Colombia-EE.UU. (18.30, 22.30 GMT)
05.07.07 (18) Barquisimeto Argentina-Paraguay (20.45, 00.45 GMT)
Cuartos de final
07.07.07 (19) San Cristóbal 1 A - 2º tercero (18.00, 22.00 GMT)
07.07.07 (20) Maracaibo 1º tercero - 2 B (20.45, 00.45 GMT)
08.07.07 (21) Maturín 1 B - 2 grupo C (16.00, 20.00 GMT)
08.07.07 (22) Barquisimeto 1 C - 2 grupo A (18.45, 22.45 GMT)
Semifinales
10.07.07 (23) Caracas Ganadores 19 - 20 (20.45, 00.45 GMT)
11.07.07 (24) Puerto Ordaz Ganadores 21 - 22 (20.45, 00.45 GMT)
Tercer puesto
14.07.07 (25) Caracas Perdedores 23 - 24 (17.00, 21.00 GMT)
Final
15.07.07 (26) Maracaibo Ganadores 23 - 24 (17.00, 21.00 GMT)
Author: ..::dedAL0s::.. » Comments:
3 de enero de 1990
Thomas S. Ray
ATR Human Information Processing Research Laboratories
2-2 Hikaridai, Seika-cho Soraku-gun, Kyoto 619-02 Japan
(81)-774-95-1008 (FAX), (81)-774-95-1063 (phone)
ray@hip.atr.co.jp, ray@santafe.edu, ray@udel.edu
http://www.hip.atr.co.jp/~ray/
de Marzo, 1996
Jugué a ser Dios y creé la vida en mi computadora
Ray, T. S. 1994. Jugué a ser Dios y creé la vida en mi computadora. In: Claudio Gutiérrez [ed], Epistemología e Informática, 257--267. San José, Costa Rica: UNED, 1993.
Reprinted from:
Ray, T. S. 1992. J'ai joué à Dieu et créé la vie dans mon ordinateur. Le Temps stratégique 47: 68--81.
He consagrado mi vida hasta ahora al estudio de la evolución, porque creo que la evolución es el proceso que permitió la vida, creó a los seres humanos a partir de simples moléculas, y nos ha dado la posibilidad de comprender un poco el universo en que vivimos. Amo la vida, y disfruto observar los organismos vivos en sus innumerables formas. Ciertos estudiosos de la evolución examinan fósiles para tratar de conocer el origen del hombre. Si la paleontología es una ciencia fascinante, yo por mi parte prefiero trabajar con organismos vivos.
Esta inclinación me ha conducido a pasar dieciséis años estudiando la evolución, la ecología y la historia natural de los bosques tropicales húmedos de Costa Rica. La vida se expresa ahí mejor que en cualquier otra parte, en medio del calor, del agua burbujeante, de los pájaros cantores y los ronroneantes insectos, y de millares y millones de formas de vida, cada una de ellas única y maravillosa. El bosque húmedo es una catedral formidable, cuya estructura misma es viviente.
Estos años los he pasado observando y describiendo organismos cuyas propiedades eran desconocidas para la humanidad (coleópteros, hormigas, mariposas, plantas) y publicando los resultados de mis trabajos. Pero después de todo este tiempo, debo admitir que sentí una cierta frustración. Yo tenía siempre la misma reverencia por las criaturas que describía, la misma preocupación por su frágil destino, pero se me habían hecho demasiado familiares, y mis observaciones permanecían en un orden puramente sensorial. En el fondo, no hacía más que estudiar algunos resultados de la evolución, mientras que mi verdadera curiosidad me llevaba a la evolución en sí misma. Mi intelecto exigía más. Si todas las formas de vida que existen hoy en día sobre la tierra nos parecen descender de un organismo único muy simple, tal vez una molécula, que se habría replicado a sí misma, resulta que todas estas formas tienen rasgos comunes. Pero la evolución de las criaturas orgánicas es de una lentitud extrema, puesto que dura desde hace cuatro mil millones de años, y es entonces difícil de observarla mientras se produce.
Sería con seguridad diferente si viviéramos en una escala temporal y espacial diferente. Imagínense por un momento que pudiéramos vivir tanto tiempo que pudiéramos observar los millones de planetas que pueblan el universo. ¿Qué veríamos? ¿La vida que surgiría del carbono? Si tal fuera el caso, ¿tendría siempre un código genético hecho de ácidos nucleicos? ¿Serían las moléculas enzimáticas químicamente activas siempre las cadenas de aminoácidos? ¿Conocerían los diferentes planetas donde hubiera surgido esta vida a base de carbono siempre una evolución que obedeciera a la misma secuencia, los reptiles terminando siempre por cederle el campo a los mamíferos? ¿O, por el contrario, es esta misma secuencia el resultado de un simple azar, y la evolución de la vida en el universo se puede conformar libremente en diversos escenarios? Y la vida misma, ¿conduce siempre inexorablemente a formas inteligentes? Si fuera así, ¿tendrían estas siempre rasgos humanos? ¿Existen otras formas de vida que no hayan surgido del carbono?
Las cuestiones se presentan en tal número que no se sabe por donde empezar. No nos arriesgamos mucho al decir que moriremos sin poder contestarlas.
Sin embargo, hay un medio para estudiar la evolución sin desbordar los límites de nuestra vida. Con las herramientas que tenemos hoy, basta con inocular el proceso de evolución en un ambiente artificial, es decir creado por nosotros, y observar lo que se produce. Hace poco tiempo un proyecto tal habría pertenecido a la ciencia ficción, pero hoy muchas personas consideran que yo soy el primero en haberlo realizado pr cticamente.
Yo mismo me maravillo de haberlo hecho, lo confieso, y me maravillo de que nadie lo haya realizado antes que yo. Me maravillo sobre todo por la extraordinaria fuerza de la evolución, una vez que hubo sido lanzada en el universo artificial que yo había creado. La idea de este proyecto me surgió por primera vez hace doce años, mientras seguía estudios de posgrado en Harvard. El Club de Go de Cambridge se reunía regularmente en el Centro de Ciencias de Harvard; yo no conocía nada de ese juego japonés, pero una tarde, observando a un hombre que jugaba contra sí mismo, le pregunté qué hacía. Sin duda le había dicho que era estudiante de biología, porque comenzó a hablarme de go con met foras como que ``los grupos de piedras sobre el tablero morirán si no guardan contacto con espacios libres''.
Pronto dejó, sin embargo, de hablarme de go y me dijo: ``Sabías que es posible escribir un programa de computadora que se copie a sí mismo?'' (mi nuevo amigo trabajaba en el Laboratorio de Inteligencia Artificial del Instituto Tecnológico de Massachusetts). Apenas me hizo esa pregunta, como en un relámpago, imaginé todo lo que hago hoy. Me dije: ``Comienzas por hacer un programa que se copia a sí mismo, le agregas mutación, y ¡zas!, ahí está, -obtienes evolucióní'' Simple, ¿verdad? Una copia que contiene errores provoca evolución, ¡la esencia misma de la vida! Fascinado, le pregunté a mi nuevo amigo cómo podría aprenderlo. ``Es como soplar y hacer botellas''. Creo que le insistí, pero sea que no me quiso decir nada más o que no le entendí, lo cierto es que en esa época yo no sabía nada de computadoras.
La idea de este proyecto me emocionaba tanto entonces como me emociona ahora. Pero no llegaba a representarme psíquicamente lo que era un programa de computación y, por lo tanto, no comprendía el interés de hacerlo copiarse a sí mismo. Yo usaba computadores, por supuesto, pero no tenía ninguna idea de lo que pasaba detrás de la pantalla.
Una decena de años más tarde, en 1988, me costeé mi primera computadora, la portátil menos cara que pude encontrar. Y solo me había resuelto a esta compra porque debía enseñar durante un semestre en Costa Rica por cuenta de la Universidad de Delaware. Una vez que volví a los Estados Unidos, compré el compilador C Turbo y el depurador Turbo de Borland. El depurador (un programa utilizado para cazar errores en los programas) fue una revelación. Hacía visible sobre la pantalla el funcionamiento interno de mi computadora. Podía ``ver'' su memoria y su sistema de explotación (la unidad central de proceso). Podía ``ver'' los programas que se encontraban en la memoria, así como los datos sobre los cuales estos programas trabajaban. Podía ``pasearme'' al través de los programas y ``ver'' lo que hacían.
Bruscamente me acordé de mis sueños de estudiante. Se me hicieron irresistibles. Estaba en ese tiempo rompiéndome el pecho para obtener en la Universidad un puesto fijo de profesor, pero esa pelea me pareció de repente desprovista de todo sentido. Debo confesar que ese período fue difícil para mí.
Al principio me contenté con leer. Puesto que yo tenía en la cabeza la idea de que una computadora es un ambiente que puede ser habitado por la vida (es decir, por programas que se copien a sí mismos), era importante que comprendiera este ambiente a fondo, que visualizara los recursos de que las criaturas tendrían necesidad para sobrevivir ahí, y la manera en que pudieran batirse para defenderse. Me puse pues a estudiar arquitecturas de computadoras, sistemas operativos, lenguajes de programación. Leí en particular casi todo lo que había escrito sobre estos temas Peter Norton, un autor de increíble claridad.
Yo llevaba a estas investigaciones un punto de vista particular. Consideraba la arquitectura de una computadora con los ojos de un biólogo evolucionista y ecologista. Veía en esta arquitectura una jungla virtual, a la cual iba a inocularle vida. Y era necesario que imaginara la forma que esta vida podría tomar, ¡puesto que la iba a crear! Todo resultaba muy emocionante.
Traté de averiguar, por supuesto, si un proyecto tal había sido ya concebido. Para mi sorpresa, descubrí que no. En el curso de mi investigación, descubrí sin embargo un nuevo campo científico en proceso de nacimiento, alrededor de proyectos semejantes al mío: la vida artificial. Me puse en contacto con Chris Langton, quien había organizado la primera conferencia sobre vida artificial y que había publicado sus actas (Langton 88). Chris me invitó a hacer una visita al grupo que estudiaba la vida artificial en el Laboratorio Nacional de Los Álamos, en octubre de 1989.
De los miembros de este grupo, solo Steen Rasmussen creyó verdaderamente en el método que yo proponía. El mismo trabajaba con una ``sopa primigenia'' hecha de instrucciones dada a una computadora, que sacudía enérgicamente con su unidad central de proceso. La principal diferencia entre el método de Steen y el mío era que yo quería inocular mi universo virtual con un programa que se copiara a sí mismo, mientras que él quería que esta autocopia se produjera espontaneamente.
Los otros miembros del grupo, Chris Langton, Doyne Farmer, Walter Fontana y Stephanie Forest, eran escépticos. Decían que el problema fundamental de nuestro método consistía en la fragilidad de los lenguajes estándares utilizados por las computadoras. Decían en particular que haciendo mutar estos lenguajes al azar solo tendría éxito en obtener un batiburrillo inutilizable.
Estas objeciones no me impresionaron, aunque venían de un formidable grupo de científicos. A pesar de todo, no me convencía. Pues si lo que decían fuera verdad, ¿por qué las mutaciones de ese otro lenguaje, el lenguaje genético, en vez de conducir a un batiburrillo infame, hicieron evolucionar los seres vivientes? Es cierto que las alteraciones del código genético que se producen por azar tienen casi siempre consecuencias desastrosas para la criatura que las porta. Pero en un cierto número de casos, reconozco que en extremo infinitesimal, esas mutaciones aleatorias del código genético mejoran la calidad de la criatura. Por lo menos eso es lo que afirma la teoría de la evolución, a pesar de que las pruebas de estos mecanismos permanecen siendo rarísimas.
De vuelta de Los Álamos, presenté mi expediente de candidatura a la Universidad y, dejando atrás mío quince años de investigación de campo, me senté en mi escritorio a escribir el código que crearía el universo de mis futuras criaturas. Ya había escrito un programa que se copiara a sí mismo, ``soplar y hacer botellas'' en efecto, como mi misterioso maestro de go me lo había dicho un decenio antes. Mi problema, ahora, era hacer mutar ese programa mientras que trabajaba, sin que por ello se destruyera.
Las objeciones del grupo de Los Álamos continuaban inquietándome. Yo me decía: si el lenguaje genético es tan robusto para resistir mutaciones y recombinaciones, ¿por qué el lenguaje de las computadoras se quebraría bajo el efecto de las mutaciones? ¿Qué diferencias hay entre estos dos lenguajes que explicaría que uno pueda evolucionar y el otro no? Dos ideas en especial vinieron a mi mente.
La primera a propósito del tamaño del ``juego de instrucciones'' dadas a una computadora. El código genético se basa en un alfabeto de cuatro caracteres: los cidos nucleicos. Estos cidos, agrupados de a tres, son el código que define un aminoácido. Estos tres ácidos nucleicos pueden combinarse de 64 maneras diferentes (64 ``codones''), pero no hay más que 20 aminoácidos, pues muchos ``codones'' designan de hecho el mismo aminoácido. El código genético es pues muy redundante.
Las mutaciones implican el reemplazo, la inserción o la eliminación de un ácido nucleico. Resultan, pues, de cambios entre los 64 ``codones'', o más exactamente entre los 20 aminoácidos ensamblados en proteínas.
Si uno aplica el mismo an lisis al lenguaje de las computadoras, uno se percata de que en este lenguaje las mutaciones se ejercen sobre un número muy considerable de objetos posibles. En la más reciente generación de la computadora RISC (reduced instruction set) por ejemplo, cada unidad de información consta de 32 bits. Uno encuentra entonces, en el código binario de la máquina, objetos, es decir, ¡más de 4 mil millones de objetos, sobre los cuales puede ejercerse una mutación! Mi intuición me decía que la probabilidad de encontrar algo útil al efectuar 4 mil millones de combinaciones debía ser mucho más débil que al efectuar combinaciones entre 20 objetos solamente.
Me consagré entonces a reducir el número de objetos de información a 5 bits, creando un lenguaje de máquina que comprendiera 32 (es decir ) instrucciones distintas. Podría pensarse que al reducir el número de objetos de información de 4 mil millones a 32 iba a mutilar la máquina. Pero no fue así. El número de operaciones reales que realizan las computadoras (sumar, restar, multiplicar, etcétera) es relativamente reducido; en efecto, hay menos de cien, si uno va al fondo de las cosas. Ello porque la mayor parte de los bits de la unidad de información de 32 bits no sirve para determinar el tipo de operación a realizar sino más bien para designar los números que deben procesarse (los operandos).
Así pues, me decidí a quitar del código los operandos numéricos, para que en mi nuevo lenguaje de máquina las instrucciones se aplicaran a los números que se encontraran en la unidad central de proceso, no en el código mismo. Esta modificación redujo automáticamente el tamaño del juego de instrucciones dado a la máquina. Seleccioné entonces 32 instrucciones (32 es un número redondo en el sistema binario) para lanzar mi primera experiencia.
Esta astucia provocó sin embargo un nuevo problema, que resolví con mi segunda idea. Los programas de computadoras no solamente afectan los datos que se les suministra. A veces se afectan a sí mismos. De ordinario, la computadora ejecuta las instrucciones de máquina en secuencia lineal, siguiéndolas en el orden en que figuran en la memoria. Pero sucede también que los programas se ramifiquen o hagan bucles, saltando de un lado a otro de la memoria.
Los elementos de un programa deben a veces integrarse con otros elementos que pueden perfectamente encontrarse en lugares de la memoria muy alejados. En las computadoras, estos elementos pueden llevar con ellos ``la dirección'' de los elementos con que deben reunirse. Pero, me pregunté, ¿cómo hacen esto las moléculas de una célula viva? No llevan direcciones consigo, sino que presentan simplemente una superficie sobre la cual otra molécula puede fijarse o no, como la llave entra o no en una cerradura. Las moléculas se lanzan unas contra las otras por difusión en el organismo y, según sus formas sean o no complementarias, se integran o no. Me dije que podría utilizar un método del mismo género en mi lenguaje de máquina. Desarrollé, entonces, un mecanismo para que el código, en lugar de especificar directamente el programa adonde debía ir, lo incitara a ramificarse o a hacer un bucle cada vez que encontrara tal o cual configuración particular.
En breve, integré en el lenguaje de máquina dos ideas importadas directamente de la biología: un número muy limitado de objetos de información y un sistema de direccionamiento por complementariedad de ciertas formas. Sobre estas bases, diseñé una computadora nueva. Aquí el lector se preguntará de qué estoy hablando.
¿Cómo puede un biólogo evolucionista diseñar una computadora? A decir verdad, en ese momento yo no sabía que era eso lo que estaba haciendo, y sin embargo....
Si hoy día uno quiere construir un avión nuevo, uno no lo diseña trabajando directamente en acero, eso sería muy caro, sino que uno simula el diseño el mayor tiempo posible en una computadora, y en ese diseño la propia computadora prueba las calidades de aerodinámica y de resistencia estática. No es sino solamente cuando ha alcanzado un grado de perfección elevado que uno se pone a construir el avión físicamente para proceder a probarlo en la realidad. Las computadoras se diseñan de la misma manera; los circuitos electrónicos son simulados primero en una computadora, después probados virtualmente, antes de ser realizados físicamente en silicio y probados en la realidad.
Así pues, escribí un programa que simulaba la nueva computadora que tenía en la cabeza, mi ``computadora virtual''. La llamé con la palabra española ``Tierra''. Pero para hacerla funcionar y probar su diseño, me faltaba todavía un programa virtual, evidentemente una programa que se copiara a sí mismo. Como ya había escrito un programa que se copiaba en una computadora real, me contenté con traducirlo a ``terrestre'', el lenguaje de máquina de mi computadora virtual.
Según lo que yo pensaba, esta computadora virtual y su programa autocopiante rudimentario serían solo un punto de partida, y creía que iba a tener que perfeccionarlo a lo largo de varios años. Sin embargo, mis planes fueron completamente trastornados por lo que se produjo la noche del 3 de enero de 1990, la primera vez que tuve éxito en hacer funcionar mi programa autocopiante en mi computadora virtual sin provocar en la computadora real en que realizaba estas simulaciones bombazo tras bombazo.
Instantáneamente se produjo el más increíble de los zipizapes. La evolución que había inoculado en la máquina se desencadenó, formidablemente acelerada por la velocidad de la computadora. Mis investigaciones se saltaban, por la fuerza de las circunstancias, del diseño de una computadora, a la simple observación de fenómenos, y pasé a encontrarme de nuevo en la jungla, aunque esta vez una jungla digital, a punto de describir lo que la evolución fabricaba delante de mis propios ojos: una verdadera colección de criaturas digitales que habitaban en un universo extraño basado en la física y la química, completamente diferente de las formas de vida que yo conocía y amaba. Muy rápidamente, sin embargo, mis ojos de naturalista pudieron reconstruir ciertas formas, ciertos procesos.
El rasgo más sorprendente de este universo digital (pero para mí el más familiar) era que en el curso de su evolución, las criaturas descubrían sin cesar nuevas maneras de explotar a sus vecinos y de defenderse contra las tentativas de explotación lanzadas por ellos. La evolución es un proceso fundamentalmente egoísta, donde cada individuo se preocupa de sí mismo y mide su éxito según el número de genes propios que logra trasmitir a las siguientes generaciones. Para tener éxito en esta trasmisión, el organismo en evolución se muestra extraordinariamente inventivo, y se aprovecha automáticamente de todo lo que encuentra provechoso en su ambiente.
Una vez que el ambiente se llena de criaturas, estas criaturas representan el recurso principal. Esa primera noche, muchas de mis criaturas descubrieron que su ambiente era tan rico de información que ellos mismos no necesitaban llevarla toda consigo; para sobrevivir, les bastaba mirar en torno y servirse: ¡apenas habían nacido y ya se convertían en par sitos! Otras criaturas, seguramente más estúpidas, se entretenían obstinadamente en duplicar todas las informaciones que ellos necesitaban. Los parásitos, pequeños y rápidos, llegaron a perfeccionar la técnica que les permitía utilizar la información de sus vecinos, y muy pronto dominaron la sopa biológica al replicarse en gran número.
Sin embargo, esta dominación no duró largo tiempo, pues los parásitos llegaron pronto a ser víctimas de su propio éxito. Apenas hubieron terminado de llenar su ambiente, comenzaron a tener trabajo en encontrar la información que necesitaban para sobrevivir. Privados de ella, comenzaron a morirse.
La situación, no obstante, terminó por alcanzar una cierta estabilidad. A medida que los par sitos morían, sus huéspedes estúpidos continuaron copiando para ellos mismos, laboriosamente, la información que a aquellos les hacía falta. Suerteros, los parásitos se salvaron de la extinción, y ellos y sus huéspedes entraron en una relación oscilante, los primeros reproduciéndose a expensas de los segundos, los segundos retomando importancia a medida que los primeros morían. Este tipo de oscilación de poblaciones de depredadores y sus presas (de parásitos y huéspedes) son bien conocidas en el mundo biológico; no son sino una de las numerosas y misteriosas maneras en que la evolución del universo digital reproduce la del universo orgánico.
Huéspedes y parásitos no se contentaban con crecer y decrecer siguiendo ciclos opuestos, pero se lanzaban a una carrera armamentista. Los huéspedes desarrollaron mecanismos para defenderse contra los parásitos, y los parásitos técnicas para circunvalar las defensas de sus huéspedes. En este punto, no obstante, los huéspedes desarrollaron mecanismos que sacaban ventaja del hecho de estar siendo parasitados, para utilizar la energía de los parásitos en su propia reproducción y librarse así de su enemigo. En la práctica, los huéspedes dejaban que los parásitos los atacaran y se reprodujeran una vez, y en seguida les proporcionaban información falsa, ¡la cual conducía a que los parásitos hicieran copias de sus huéspedes!
Los huéspedes se convirtieron en una suerte de parásitos energéticos, de criaturas que, al principio, habían jugado contra ellos el rol de parásitos de información. Dando y dando, en suma. Pero el parasitismo energético resultar más mortífero que el parasitismo de información. Los huéspedes lograrán en efecto, por este recurso indirecto, destruir completamente a los parásitos originales. Ello porque no tenían realmente necesidad de los parásitos para sobrevivir, y la energía que les robaban solo tenía el carácter de una bonificación suplementaria.
Al tener éxito en incitar a los parásitos a multiplicar el genoma de sus huéspedes y no el suyo propio, los huéspedes habían instalado en realidad un sistema de defensa absoluta, habían llegado a ser intocables, los verdaderos amos del mundo. O aún más: no había más que ellos en el mundo, nadie podía invadirlos. Siendo así, entonces, que evolucionaban en un mundo en que todas las criaturas eran parte de la misma familia, los huéspedes se hicieron confiados y comenzaron a cooperar unos con otros. ¿Por qué no? Si ayudas a tu hermana a reproducirse, ¡ella tendrá éxito en pasar a las generaciones venideras algunos de tus genes!
Los huéspedes llegaron a ser criaturas sociales, interdependientes, que no podían reproducirse excepto si formaban grupos. Pero esta cooperación implicaba confianza, y la confianza puede ser traicionada. De hecho, poco después que las criaturas se hicieron sociales, pero mucho tiempo después de que los parásitos originales hubieron desaparecido, una nueve especie de parásitos invadió la comunidad. Estos nuevos parásitos, que llamo ``los tramposos'', se deslizaron entre las criaturas que vivían en familias que cooperaban entre sí; una vez que obtuvieron su confianza, los traicionaron. ¿Cómo? Jugándoles a sus confiadas víctimas la misma treta que estos les habían una vez jugado a los primeros parásitos a los cuales habían proporcionado (como el lector recordará) falsas informaciones, para llevarlos a duplicar el genoma de sus huéspedes y no el propio. ¡Nueva etapa de la carrera armamentista!
Pero hay un gran adelanto: en el curso del camino, y sin que yo me hubiera dado cuenta, mis criaturas habían descubierto el sexo. Me di cuenta cuando suprimí las mutaciones para detener su evolución: ¡mis criaturas siguieron evolucionando de todos modos! A fuerza de retomar la experiencia y observar su desarrollo, debí admitir que en el momento de replicarse las criaturas mezclaban sus genes, de suerte que su descendencia era diferente de cada uno de sus padres. Así pues, para evolucionar, mis criaturas ya no necesitaban de mutaciones. La situación se me escapaba completamente. Habían tomado su destino en sus propias manos.
¡Al fin podía presenciar la evolución en el momento de suceder, en vez de simplemente observar sus resultados! Pero evidentemente esta evolución tenía lugar en un universo extraño, creado en mi computadora, poblado de criaturas que se transformaban bajo mis ojos, en la jungla misma que ellas creaban al transformarse. Tomé mi distancia, observando, como un dios satisfecho de su obra, de la manera en que la vida que había puesto en camino encontraba ella misma sus formas naturales.
Estas formas habían sido marcadas por mí con una huella muy profunda en el momento en que había creado mi universo y le había inoculado una primera criatura. Pero lo evolución había poco a poco borrado esta huella, al desarrollar formas naturales adaptadas al ambiente físico-químico de mi computadora.
La posibilidad de observar y de manipular estas formas de vida ha cambiado mi manera de pensar. Ciertos conceptos que tenía apenas esbozados se han hecho claros. ¿Qué formas pueden tomar vida? ¿Por qué son las especies distintas? ¿Por qué no se presentan generalmente formas intermedias? Siendo el universo virtual relativamente simple, fácil de crear y de manipular, disponía yo de herramientas para formular tales preguntas y reflexionar sobre ellas.
Para describir lo que se produjo en esa primera noche y poner a disposición de otros los métodos que utilicé, así como los resultados que obtuve, me han sido necesarios exactamente dos años; no es sino ahora vuelvo a plantearme cuestiones de diseño.
¿Podré diseñar mejores universos? Estoy convencido de que sí. Mi primer ensayo fue improvisado, pero he aprendido mucho después y estoy listo a cazar presas mayores.
El sexo que mis criaturas descubrieron era fortuito, primitivo y desorganizado. Me gustaría llegar a algo parecido al de los organismos superiores terrestres, donde cada uno de los padres proporciona exactamente la mitad del material genético de sus descendientes. Me gustaría obtener criaturas multicelulares, que varias células nazcan de una célula ``huevo'' única, pero que a partir de ahí, en vez de que cada una se vaya por su propio camino según sus propias necesidades, emprendan una cooperación para lograr un objetivo común, la duplicación del conjunto por el medio oblicuo de otro huevo. Me gustaría que mis criaturas multicelulares adquirieran un sistema hormonal y un sistema nervioso que coordinara sus actividades. Si tuviera éxito en proporcionar a la evolución sistemas nerviosos para que juegue yoyo con ellos, pudiera ser que ella tuviera éxito en convertirlos en inteligentes.
Mi sueño supremo sería conducir mi universo virtual hasta el umbral de la diversificación explosiva de la era cámbrica. Esta explosión se produjo en la tierra hace seiscientos millones de años. Ciertamente hay muchos que creen que el comienzo de la vida sobre la tierra hace tres o cuatro mil millones de años es uno de los acontecimientos más significativos de la historia del universo (o por lo menos de nuestro rincón de universo). Pero en cuanto a mí concierne, considero la explosión del período cámbrico como un acontecimiento de una importancia por lo menos igual.
Antes de la era cámbrica, no existían sobre la tierra más que criaturas unicelulares microscópicas. Pero entonces, es decir más de tres mil millones de años después que la vida hubiera aparecido, comenzaron a surgir formas de vida macroscópicas multicelulares. La cámbrica fue una época de gran experimentación. Se ensayaron numerosas formas de vida extrafalarias, que después se abandonaron, y en un tiempo relativamente corto la mayor parte de los grupos de organismos que hoy habitan la tierra escaparon del caos y se consolidaron.
No creo que en mi universo virtual vaya a tener éxito en crear jirafas o ñus metafóricos, son criaturas demasiado complicadas. En cambio, estoy convencido de que podré diseñar un universo suficientemente rico para que la evolución pueda ir hasta el fin de su curso para completar su obra. Y de ahí, la inteligencia sería el próximo paso. Somos nosotros mismos la prueba viviente de que la evolución es capaz de crear inteligencia a partir de nada, o casi nada. ¿Podrán las máquinas llegar a ser inteligentes? Lo ignoro, pero si la respuesta es afirmativa, la evolución es la manera más segura de alcanzar esa nueva cumbre.
Author: ..::dedAL0s::.. » Comments:
Michael Buble - The more I see you
jueves, junio 21, 2007

Michael Buble - The more I see you
The more I see you The more I see you,The more I want you. Somehow this feeling Just grows and grows. With every sigh I become more mad about you,More lost without you, And so it goes. Can you imagine How much I´ll love you The more I see you As years go by? I know the only one for me can only be you. My arms won´t free you; My heart won´t try.
Cuanto más te veo (traducida)
Cuanto más te veo Cuanto más te veo,más te deseo de alguna forma, este sentimiento solamente crece y crece con cada suspiro me vuelvo más loco por ti,más perdido sin ti entonces esto va. ¿Puedes imaginar cuánto te amaré,cuanto más te veo como pasan los años? sé que la única para mí puedes ser solo tú mis brazos no te liberarán; mi corazón no lo intentará.
Author: ..::dedAL0s::.. » Comments:
“Linux es una tecnología revolucionaria que cambiará la forma en que las personas manejan sus negocios”
viernes, junio 15, 2007

No todo es Microsoft en el mundo de la informática. Los entornos Linux están ganando terreno y las noticias en este sentido no dejan de sucederse. Hace pocos días Dell anunció que venderá equipos con Ubuntu preinstalado en su interior, en vez del omnipresente Window$. Así, Linux ha dejado de verse como una alternativa sólo fiable para los entornos de servidores y pasa a convertirse en una alternativa directa del famoso software de las ventanas.
Para hablar de ello, la Campuas Party de Valencia, que se celebrará del 23 al 29 de julio del año en curso, tendrá entre sus ponentes a Jon Maddog Hall "Guru", referente dentro de la comunidad del software libre, que hablará de las soluciones que se pueden desarrollar a través de la cooperación y una buena planificación, así de cómo hacer que el software libre resulte rentable para los programadores y la sociedad. Por otra parte, en el evento de Valencia se presentará el One Laptop per Child, el ordenador de 100 euros que nació de la idea de Nicholas Negroponte de facilitar al acceso a la informática a los jóvenes más desfavorecidos.
Por otro lado, el software libre se ha posicionado como una alternativa válida en el lecho de la administración pública y de muchas compañías con presupuestos reducidos. De hecho, el III Libro Blanco del Software Libre ha reconocido a Galicia como la comunidad española con mayor proporción de empresas que instalan y desarrollan software libre. Y es que esta autonomía cuenta con medio centenar de firmas de pequeño y mediano tamaño que desarrollan e instalan software de código abierto para la administración pública y para importantes multinacionales tecnológicas. Cabe destacar que en América Latina Pemex y el Banco do Brazil en sus 38 sucursales europeas han implementado soluciones basadas en Linux.
A pesar de ello, la utilización de este tipo de soluciones todavía es muy limitada. Concretamente, en los ayuntamientos su uso alcanza el 32% y en la educación el 20%. Más aún: en las pymes su uso no supera el 10%.
Los analistas calculan que las instalaciones de Linux crecen a una tasa dos veces superior a la del competidor más cercano, Windows NT (ahora Windows 2000), cuyo crecimiento anual es de aproximadamente 12%. Según estas cifras IDC estima que Linux será el sistema opertativo líder de mercado.
Fuente : dedAL0s
Author: ..::dedAL0s::.. » Comments:
Justicia determina pena de presidio remitido para "crackers" chilenos
jueves, junio 14, 2007
Por infracción al artículo primero de la Ley de Delitos Informáticos, el Tercer Tribunal Oral de Santiago condenó a tres años de presidio remitido a dos piratas, que formando parte del "Byond Hackers Team" intervinieron cerca de 8 mil sitios, incluido el de la agencia espacial estadounidense (NASA).
El tribunal presidido por jueza Anaclaudia Gatica determinó que Carlos Amigo León (37) y Leonardo Hernández (25) efectivamente participaban desde hace varios años en el "defacement" de sitios. Sin embargo, debido a la baja pena de los delitos asignados, se les concedió la libertad con firma mensual en Gendarmería.
El tribunal acogió también la demanda del canal de televisión "Mega", cuyo portal fue uno de los afectados, por lo que Amigo deberá pagar 2 millones de pesos como indemnización por perjuicios.
"SSH2" y "Nettoxic", nicks utilizados por Amigo y Hernández, atacaban sitios desde la localidad de Buin junto a dos gemelos menores de edad, que sólo quedaron a disposición de un tribunal de familia.
Al término de la audiencia, ambos condenados consideraron injustos los cargos imputados, convencidos de que no causaron daño a nadie y que sólo demostraron públicamente sus conocimientos en esta área.
Fuente : www.mouse.cl
Author: ..::dedAL0s::.. » Comments:
Software promete poner fin a Msn en la oficina

Si es de aquellos que suele abrir el “messenger” para conversar un poquito mientras está en horario de oficina, es posible que sus días estén contados, ya que ayer Symantec, empresa especializada en seguridad y almacenamiento, presentó un software que aniquilará cualquier intento por charlar.
Network Access Control 11, el nombre que recibe este programa, permite a los administradores de las redes empresariales, determinar qué tipo de servicios de mensajería instantánea están permitidos, así como también filtrar los mensajes pueden ser leídos desde fuera de la compañía, otorgando la posibilidad de bloquear todo lo que se estime conveniente.
Por ejemplo, con esta herramienta una empresa podría decidir que sus empleados sólo pueden usar el popular programa Windows Live Messenger, bloqueando el envío de archivos, así como la entrega de números de cuentas bancarias, o bien, el envío de correos con material confidencial, ya sea tanto con el email de la empresa como con el personal.
Y pese a que en la actualidad hay varios programas que ofrecen esta característica, la diferencia es Network Access Control 11 gestiona además el uso del computador por usuarios no autorizados, detecta la entrada a la red de dispositivos inseguros o sospechosos, así como la posibilidad de adaptarse a cualquier sistema operativo y a diversas configuraciones de hardware.
Este programa, que funciona en conjunto con el software de la misma compañía llamado Endpoint Protection 11, ofrece así una suite de seguridad que integra antivirus, antispyware, firewall, así como otras herramientas que entregan un control total sobre la red.
Una versión de prueba de éste puede ser descargada desde
, y se espera que su versión final, al igual que la de Network Access Control 11 estén listas en septiembre de este año.
Fuente : www.emol.com
Author: ..::dedAL0s::.. » Comments:
The Evolution of a Programmer
domingo, junio 10, 2007
The Evolution of a Programmer
High School/Jr.High
10 PRINT "HELLO WORLD"
20 END
First year in College
program Hello(input, output)
begin
writeln('Hello World')
end.
Senior year in College
(defun hello
(print
(cons 'Hello (list 'World))))
New professional
#include
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;
for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\n");
}
Seasoned professional
#include
#include
class string
{
private:
int size;
char *ptr;
string() : size(0), ptr(new char[1]) { ptr[0] = 0; }
string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}
~string()
{
delete [] ptr;
}
friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};
ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr);
}
string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}
int main()
{
string str;
str = "Hello World";
cout << str << endl;
return(0);
}
Master Programmer
[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib("actimp.tlb");
importlib("actexp.tlb");
// bring in my interfaces
#include "pshlo.idl"
[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};
[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{
// some code related header files
importheader();
importheader();
importheader();
importheader("pshlo.h");
importheader("shlo.hxx");
importheader("mycls.hxx");
// needed typelibs
importlib("actimp.tlb");
importlib("actexp.tlb");
importlib("thlo.tlb");
[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype THello;
};
};
#include "ipfix.hxx"
extern HANDLE hEvent;
class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);
CHello(IUnknown *pUnk);
~CHello();
HRESULT __stdcall PrintSz(LPWSTR pwszString);
private:
static int cObjRef;
};
#include
#include
#include
#include
#include "thlo.h"
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"
int CHello::cObjRef = 0;
CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}
HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf("%ws
", pwszString);
return(ResultFromScode(S_OK));
}
CHello::~CHello(void)
{
// when the object count goes to zero, stop the server
cObjRef--;
if( cObjRef == 0 )
PulseEvent(hEvent);
return;
}
#include
#include
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"
HANDLE hEvent;
int _cdecl main(
int argc,
char * argv[]
) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
// Initialize the OLE libraries
CoInitializeEx(NULL, COINIT_MULTITHREADED);
CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);
// wait on an event to stop
WaitForSingleObject(hEvent, INFINITE);
// revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();
// Tell OLE we are going away.
CoUninitialize();
return(0); }
extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;
CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
0x2573F891,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};
UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};
#include
#include
#include
#include
#include
#include "pshlo.h"
#include "shlo.hxx"
#include "clsid.h"
int _cdecl main(
int argc,
char * argv[]
) {
HRESULT hRslt;
IHello *pHello;
ULONG ulCnt;
IMoniker * pmk;
WCHAR wcsT[_MAX_PATH];
WCHAR wcsPath[2 * _MAX_PATH];
// get object path
wcsPath[0] = '\0';
wcsT[0] = '\0';
if( argc > 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr, "Object path must be specified\n");
return(1);
}
// get print string
if(argc > 2)
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L"Hello World");
printf("Linking to object %ws\n", wcsPath);
printf("Text String %ws\n", wcsT);
// Initialize the OLE libraries
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(SUCCEEDED(hRslt)) {
hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
if(SUCCEEDED(hRslt)) {
// print a string out
pHello->PrintSz(wcsT);
Sleep(2000);
ulCnt = pHello->Release();
}
else
printf("Failure to connect, status: %lx", hRslt);
// Tell OLE we are going away.
CoUninitialize();
}
return(0);
}
Apprentice Hacker
#!/usr/local/bin/perl
$msg="Hello, world.\n";
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, ">" . $outfilename) || die "Can't write $arg: $!\n";
print (FILE $msg);
close(FILE) || die "Can't close $arg: $!\n";
}
} else {
print ($msg);
}
1;
Experienced Hacker
#include
#define S "Hello, World\n"
main(){exit(printf(S) == strlen(S) ? 0 : 1);}
Seasoned Hacker
% cc -o a.out ~/src/misc/hw/hw.c
% a.out
Guru Hacker
% echo "Hello, world."
New Manager
10 PRINT "HELLO WORLD"
20 END
Middle Manager
mail -s "Hello, world." bob@b12
Bob, could you please write me a program that prints "Hello, world."?
I need it by tomorrow.
^D
Senior Manager
% zmail jim
I need a "Hello, world." program by this afternoon.
Chief Executive
% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout
Author: ..::dedAL0s::.. » Comments:
195 Free Online Programming Books

Update - Update.. This List has Grown to 345…
Update: - I will be updating this list very shortly, many of the links were taken from http://www.programmingebooks.tk/
How to Be a Programmer
http://samizdat.mines.edu/howto/HowToBeAProgrammer.html
How to Design Programs
http://www.htdp.org/2002-09-22/Book/
Practical Theory of Programming
http://www.cs.toronto.edu/%7Ehehner/aPToP/
Software Engineering for Internet Applications
http://philip.greenspun.com/seia/
Structure and interpretation of computer programs
http://mitpress.mit.edu/SICP/
More programming books http://2020ok.com/3839.htm
The Programmers Stone
http://www.reciprocality.org/Reciprocality/r0/
Subversion Version Control: Using the Subversion Version Control System in Development Projects
http://www.phptr.com/promotions/promotion….84&redir=1&rl=1
Ada
Ada 95 Rational
http://www.adaic.org/standards/95rat/RATht…5-contents.html
Ada 95 Reference Manual
http://www.adahome.com/rm95/
Changes to Ada 1987 - 1995
http://www.oopweb.com/Ada/Documents/Change…lumeFrames.html
Ada 95: The Lovelace Tutorial
http://www.adahome.com/Tutorials/Lovelace/master.htm
The Big Online Book of Linux Ada Programming
http://www.pegasoft.ca/resources/boblap/book.html
Algorithms
Algorithms and Complexity
http://www.cis.upenn.edu/%7Ewilf/AlgComp.html
Programming Algorithms http://2020ok.com/3870.htm
Information Theory, Inference, and Learning Algorithms
http://www.inference.phy.cam.ac.uk/mackay/itprnn/book.html
Assembly
Assembly Language Tutorial
http://www.oopweb.com/Assembly/Documents/a…lumeFrames.html
Programming From the Ground Up
http://download.savannah.gnu.org/releases/pgubook/
Assembly Language Programming http://2020ok.com/3954.htm
Ralph Brown's Interrupt List
http://www.oopweb.com/Assembly/Documents/I…lumeFrames.html
The Art of Assembly Language Programming
http://www.oopweb.com/Assembly/Documents/A…lumeFrames.html
The Assembly Language Database
http://www.oopweb.com/Assembly/Download/NortonGuide.zip
Win32 Programming for x86 Assembly Language Programmers
http://www.oopweb.com/Assembly/Documents/W…lumeFrames.html
C
A Tutorial on Pointers and Arrays in C
http://www.oopweb.com/CPP/Documents/CPoint…lumeFrames.html
C Programming
http://www.oopweb.com/CPP/Documents/CProgr…lumeFrames.html
Object Orientated Programming in ANSI-C
http://www.planetpdf.com/developer/article…?contentid=6635
The C Book
http://publications.gbdirect.co.uk/c_book/
Writing Bug-Free C Code
http://www.duckware.com/bugfreec/index.html
C - Elements of Style
http://www.computer-books.us/c_3.php
Learning GNU C
http://www.linuxtopia.org/online_books/pro…nu_c/index.html
C++
An Overview Of The C++ Programming Langauge
http://www.oopweb.com/CPP/Download/crc.zip
C++ Annotations
http://www.oopweb.com/CPP/Documents/CPPAnn…lumeFrames.html
C++ Annotations
http://www.oopweb.com/CPP/Download/cplusplus.zip
C++ Coding Standard
http://www.oopweb.com/CPP/Documents/CodeSt…lumeFrames.html
C & C++ http://2020ok.com/3956.htm
C++ Course
http://www.oopweb.com/CPP/Download/CPPCourse.zip
C++ How To
http://www.oopweb.com/CPP/Documents/CPPHOW…lumeFrames.html
C++ In Action
http://www.relisoft.com/book/index.htm
C++: A Dialog
http://www.steveheller.com/cppad/cppad.htm
How To Think Like A Computer Scientist with C++
http://www.oopweb.com/CPP/Documents/ThinkC…lumeFrames.html
Introduction To OOP Using C++
http://www.oopweb.com/CPP/Documents/Intro2…lumeFrames.html
Introduction To OOP Using C++
http://www.oopweb.com/CPP/Download/Intro2OOP.zip
Objects First
http://www.oopweb.com/CPP/Documents/Object…lumeFrames.html
Optimizing C++
http://www.steveheller.com/opt/
STL Guide
http://www.oopweb.com/CPP/Documents/STLGui…lumeFrames.html
STL Guide
http://www.oopweb.com/CPP/Download/stl.zip
The Function Pointer Tutorials
http://www.oopweb.com/CPP/Documents/Functi…lumeFrames.html
The Standard Template Library Tutorial
http://www.oopweb.com/CPP/Documents/STL/VolumeFrames.html
Thinking in C++
http://www.planetpdf.com/developer/article…?ContentID=6634
Thinking in C++, Second Edition (Volumes 1 & 2)
http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
An Introduction to C++ Programming
http://www.computer-books.us/cpp_1.php
Programming in C++ - Rules and Recommendations
http://www.computer-books.us/cpp_6.php
A Beginners C++ Book
http://www.uow.edu.au/~nabg/ABC/ABC.html
C++ GUI Programming with Qt 3
http://www.phptr.com/promotion/1484?redir=1
Cross-Platform GUI Programming with wxWidgets
http://www.phptr.com/promotion/1484?redir=1
C#
C# in Detail
http://www.computer-books.us/csharp_0005.php
C# - The Basics
http://www.computer-books.us/csharp_0004.php
C# Language Specification
http://www.computer-books.us/csharp_1.php
Data Structures and Algorithms with Object-Oriented Design Patterns in C#
http://www.computer-books.us/csharp_2.php
C# Programming http://2020ok.com/697342.htm
Dissecting a C# Application - Inside SharpDevelop
http://www.computer-books.us/csharp_3.php
C# tutorial (2 .pdf's)
http://www.ssw.uni-linz.ac.at/Teaching/Lec…Sharp/Tutorial/
CGI
CGI Programming on the World Wide Web
http://www.oreilly.com/openbook/cgi/
CGI Programming http://2020ok.com/4025.htm
COBOL
zingCOBOL - A Beginners Guide to COBOL Programming
http://www.computer-books.us/cobol_0006.php
Teach Yourself COBOL in 21 Days
http://www.computer-books.us/cobol_0005.php
WebSphere Studio COBOL for Windows - Language Reference
http://www.computer-books.us/cobol_1.php
COBOL Programming Course
http://www.computer-books.us/cobol_2.php
COBOL Programming http://2020ok.com/3969.htm
WebSphere Studio COBOL for Windows - Programming Guide
http://www.computer-books.us/cobol_3.php
HP COBOL II/XL Reference Manual
http://www.computer-books.us/cobol_4.php
Databases
MySQL Reference Manual
http://dev.mysql.com/doc/
Database http://2020ok.com/549646.htm
Oracle 10g Database Book and Documentation Library
http://wtcis.wtamu.edu/oracle/
Delphi/Pascal
Delphi 2005 Tutorial for Beginners
http://www.xcalibur.co.uk/training/Delphi2005/index.php
Delphi Training
http://www.xcalibur.co.uk/training/delphi/oldindex.html
Essential Delphi
http://marcocantu.com/edelphi/default.htm
Essential Pascal
http://marcocantu.com/epascal/default.htm
Delphi Language Guide - Delphi For The Microsoft .NET Framework
http://www.computer-books.us/delphi_2.php
Delphi Database Application Developers Guide
http://www.computer-books.us/delphi_1.php
Fortran
Numerical Recipes with Fortran 77
http://www.library.cornell.edu/nr/cbookfpdf.html
Numerical Recipes with Fortran 90
http://www.library.cornell.edu/nr/cbookf90pdf.html
Professional Programmer's Guide to Fortran 77
http://www.computer-books.us/fortran_3.php
User Notes on Fortran Programming (UNFP)
http://www.ibiblio.org/pub/languages/fortran/
HTML
HTML 4.01 Specifications
http://www.oopweb.com/HTML/Documents/HTML4/VolumeFrames.html
Web Development http://2020ok.com/3510.htm
Writing HTML
http://www.oopweb.com/HTML/Documents/Writi…lumeFrames.html
Java
How to Think Like a Computer Scientist with Java
http://www.oopweb.com/Java/Documents/Think…lumeFrames.html
Introduction to Programming Using Java
http://www.oopweb.com/Java/Documents/Intro…lumeFrames.html
Introduction To Programming Using Java
http://www.linuxtopia.org/online_books/pro…ming/index.html
Java Programming Tutorial: Introduction to Computer Science
http://www.oopweb.com/Java/Documents/JavaN…lumeFrames.html
Thinking in Java, 3rd Edition
http://www.mindview.net/Books/TIJ/
Thinking in Enterprise Java
http://www.ibiblio.org/pub/docs/books/eckel/
More Java Books http://kickjava.com/freeBooks.html
Java AWT Reference
http://www.oreilly.com/catalog/javawt/book/index.html
Enterprise JavaBeans
http://www.computer-books.us/java_1.php
Essentials of the Java Programming Language - Part 1
http://www.computer-books.us/java_2.php
Essentials of the Java Programming Language - Part 2
http://www.computer-books.us/java_3.php
Exploring Java
http://www.computer-books.us/java_4.php
Introduction to Computer Science using Java
http://www.computer-books.us/java_5.php
Java Development http://2020ok.com/3608.htm
Java Language Reference
http://www.computer-books.us/java_8.php
Java Servlet Programming
http://www.computer-books.us/java_9.php
Java Web Services Tutorial
http://www.computer-books.us/java_10.php
Java Look and Feel Design Guidelines, Second Edition
http://java.sun.com/products/jlf/ed2/book/index.html
The Design Patterns: Java Companion
http://www.patterndepot.com/put/8/JavaPatterns.htm
1000 Java Tips e-Book
http://javaa.com
Apache Jakarta Commons: Reusable Java™ Components
http://www.phptr.com/promotion/1484?redir=1
Java™ Application Development on Linux®
http://www.phptr.com/promotion/1484?redir=1
Practical Artificial Intelligence Programming in Java
http://www.markwatson.com/opencontent/javaai_lic.htm
Javascript
Voodoo's Introduction to Javascript
http://www.oopweb.com/JavaScript/Documents…lumeFrames.html
Javascript Programming http://2020ok.com/3617.htm
Linux
Linux Device Drivers, Third Edition
http://lwn.net/Kernel/LDD3/
The Linux Development Platform
http://www.phptr.com/promotion/1484?redir=1
Understanding the Linux Virtual Memory Manager
http://www.phptr.com/promotion/1484?redir=1
Self-Service Linux®: Mastering the Art of Problem Determination
http://www.phptr.com/promotion/1484?redir=1
Linux® Quick Fix Notebook
http://www.phptr.com/promotion/1484?redir=1
Managing Linux Systems with Webmin: System Administration and Module Development
http://www.phptr.com/promotion/1484?redir=1
An Introduction to GCC
http://www.linuxtopia.org/online_books/an_…_gcc/index.html
Linux http://2020ok.com/3756.htm
Using the GNU Compiler Collection (GCC)
http://www.linuxtopia.org/online_books/pro…tion/index.html
Bash Reference Guide
http://www.linuxtopia.org/online_books/bas…uide/index.html
Bash Guide for Beginners
http://www.linuxtopia.org/online_books/bas…ners/index.html
Advanced Bash Scripting Guide
http://www.linuxtopia.org/online_books/adv…uide/index.html
Linux Kernel Module Programming Guide
http://www.linuxtopia.org/online_books/Lin…uide/index.html
Red Hat Linux Developer Tools Guide
http://www.linuxtopia.org/online_books/red…uide/index.html
Linux Debugging with gdb Guide
http://www.linuxtopia.org/online_books/red…_gdb/index.html
Using cpp, the C Preprocessor Guide
http://www.linuxtopia.org/online_books/pro…ssor/index.html
Lisp
Loving Lisp - the Savy Programmer's Secret Weapon
http://www.markwatson.com/opencontent/lisp_lic.htm
List Programming http://2020ok.com/3981.htm
Open Source
Rapid Application Development with Mozilla
http://www.phptr.com/promotion/1484?redir=1
Creating Applications with Mozilla
http://books.mozdev.org/chapters/index.html
Free as in Freedom
http://www.oreilly.com/openbook/freedom/index.html
Managing Projects with GNU make, 3rd Edition
http://www.oreilly.com/catalog/make3/book/index.csp
OpenSources: Voices from the Open Source Revolution
http://www.oreilly.com/catalog/opensources/book/toc.html
Understanding Open Source and Free Software Licensing
http://www.oreilly.com/catalog/osfreesoft/book/
Embedded Software Development with eCos
http://www.phptr.com/promotion/1484?redir=1
Open Source Security Tools: A Practical Guide to Security Applications
http://www.phptr.com/promotion/1484?redir=1
Perl
HTMLified Perl 5 Reference Guide
http://www.oopweb.com/Perl/Documents/Perl5…lumeFrames.html
Perl 5 Documentation
http://www.oopweb.com/Perl/Documents/PerlD…lumeFrames.html
Perl for Perl Newbies
http://www.oopweb.com/Perl/Documents/P4PNe…lumeFrames.html
Perl for Win32 FAQ
http://www.oopweb.com/Perl/Documents/PerlW…lumeFrames.html
Picking Up Perl
http://www.oopweb.com/Perl/Documents/Picki…lumeFrames.html
Picking Up Perl
http://www.linuxtopia.org/online_books/perl/index.html
Perl Programming
http://www.2020ok.com/4045.htm
Practical Perl Programming
http://www.oopweb.com/Perl/Documents/ppp/VolumeFrames.html
Beginning Perl
http://www.perl.org/books/beginning-perl/
Impatient Perl
http://www.perl.org/books/impatient-perl/
Extreme Perl
http://www.extremeperl.org/bk/home
MacPerl: Power & Ease
http://macperl.com/ptf_book/r/MP/i2.html
Embedding Perl in HTML with Mason
http://www.masonbook.com/
Perl for the Web
http://www.globalspin.com/thebook/
Practical mod_perl (1st edition)
http://modperlbook.com/
Web Client Programming with Perl
http://www.oreilly.com/openbook/webclient/
Perl 5 By Example
http://www.computer-books.us/perl_0010.php
An Introduction to Perl
http://www.linuxtopia.org/Perl_Tutorial/index.html
PHP
Practical PHP Programming
http://www.hudzilla.org/phpbook/
A Programmer's Introduction to PHP 4.0 -http://www.apress.com/free/
PHP 5 Power Programming
http://www.computer-books.us/php_2.php
PHP Programming http://2020ok.com/295223.htm
Practical PHP Programming
http://www.computer-books.us/php_3.php
Prolog
Adventure in Prolog
http://www.amzi.com/AdventureInProlog/
Building Expert Systems in Prolog -http://www.amzi.com/ExpertSystemsInProlog/
Prolog programming http://2020ok.com/295223.htm
Prolog Programming A First Course
http://computing.unn.ac.uk/staff/cgpb4/prologbook/
Python
Non-Programmers Tutorial for Python
http://rupert.honors.montana.edu/~jjc/easy…ut/easytut.html
Official Python Documentation
http://www.python.org/doc/current/
Text Processing in Python -http://gnosis.cx/TPiP/
Python Reference Manual
http://docs.python.org/ref/ref.html
Python Imaging Library Handbook -http://www.pythonware.com/library/the-python-imaging-library.htm
How to Think Like a Computer Scientist - Learning with Python
http://www.greenteapress.com/thinkpython
Dive Into Python -http://diveintopython.org/
Python Programming http://2020ok.com/285856.htm
Thinking in Python
http://mindview.net/Books/TIPython
A Byte of Python
http://www.ibiblio.org/g2swap/byteofpython/read/
Ruby
Programming Ruby - The Pragmatic Programmer's Guide (First Edition)
http://www.ruby-doc.org/docs/ProgrammingRuby/
Why's (Poignant) Guide to Ruby
http://poignantguide.net/ruby/ <–the funniest programming book I have ever seen!
Samba
Samba-3 by Example: Practical Exercises to Successful Deployment
http://www.phptr.com/promotion/1484?redir=1
Samba-3 by Example: Practical Exercises to Successful Deployment, 2nd Edition
http://www.phptr.com/promotion/1484?redir=1
The Official Samba-3 HOWTO and Reference Guide
http://www.phptr.com/promotion/1484?redir=1
Implementing CIFS: The Common Internet File System
http://www.phptr.com/promotion/1484?redir=1
SQL
Comparison of Different SQL Implementations
http://www.computer-books.us/sql_0004.php
SQL - A Practical Introduction
http://www.managedtime.com/freesqlbook.php3
Introduction To Structured Query Language
http://www.computer-books.us/sql_2.php
Practical PostgreSQL
http://www.opendocspublishing.com/ppbook/
UNIX
FreeBSD Handbook
http://www.freebsd.org/doc/en_US.ISO8859-1…book/index.html
Unix http://2020ok.com/3778.htm
The UNIX-HATERS Handbook
http://research.microsoft.com/%7Edaniel/unix-haters.html
Visual Basic and VB.net
Programming VB.NET - A Guide For Experienced Programmers
http://www.apress.com/free/
Upgrading Microsoft Visual Basic 6.0 to Microsoft Visual Basic .NET
http://msdn.microsoft.com/vbrun/staythepat…s/upgradingvb6/
Visual Basic http://2020ok.com/3996.htm
Introducing Visual Basic 2005 for Developers
http://msdn.microsoft.com/vbrun/staythepat…05/default.aspx
XML
OpenOffice.org XML Essentials
http://books.evc-cit.info/
Misc. stuff that is worth reading
FREE Trade Magazine Subscriptions & Technical Document Downloads http://i.nl03.net/ltr0/?_m=01.009i.nv.mfm.nv
The Future does not compute
http://www.praxagora.com/stevet/fdnc/toc.html
The Cathedral and the Bazaar
http://www.catb.org/~esr/writings/cathedral-bazaar/
Author: ..::dedAL0s::.. » Comments:
LINA: Ejecutar aplicaciones Linux en cualquier S.O
lunes, junio 04, 2007

LINA no se queda simplemente en la ejecución, sino que además promete adaptar el "look&feel" (término inglés que identifica el aspecto y funcionalidad) de la aplicación a la plataforma en la que se esté ejecutando, es decir, que si el programa corre sobre Windows, su aspecto será el de este sistema operativo, mientras que si lo hace sobre Linux, mantendrá el aspecto y funcionalidad del sistema del pingüino.
Técnicamente, LINA consiste en una capa de software que ejecuta una versión modificada del kernel 2.6.19 de Linux y que actúa como la máquina virtual de Java. Para ello, esta aplicación es específica de cada plataforma al igual que la Java VM.
Los programas Linux que deseemos ejecutar deberán haber sido recompilados para la plataforma LINA, lo cual es engorroso aunque los responsables del proyecto han declarado al conocido site LinuxDevices que el proceso tendrá muy pocas dificultades y será prácticamente como compilar una aplicación para cualquier distribución como openSUSE o Fedora.
Por el momento, a este software (todavía en fase de desarrollo) le faltan aún características que podrían considerarse como claves, como por ejemplo el soporte para dispositivos USB. Su fecha de entrega definitiva ha sido fijada inicialmente para la segunda quincena de junio.
LINA estará disponible en dos modalidades de licencia, una libre y otra de pago. Con la libre se dispondrá del código fuente de la aplicación, que ha sido desarrollada por una empresa privada durante los últimos años.
LINA - open source everywhere
Author: ..::dedAL0s::.. » Comments:
Synergy 1.3.1
domingo, junio 03, 2007
Synergy te "permite compartir un único mouse y teclado entre múltiples computadoras con diferentes S.O, cada una con su propio monitor, sin ningún hardware especial". Este software está pensado para aquellos usuarios con varias PCs en su escritorio, debido a que cada una debe poseer su propio monitor.
Con Synergy es posible tambiém configurar la ubicación de los monitores en el escritorio para conseguir un gran escritorio virtual. Synergy, además, está portado a Linux, Mac OS X y Windows (desde su versión 95).
Si tu OS de preferencia es GNU/Linux, antes de descarte el archivo siguiente, verifica que Synergy no esté ya disponible en los repositorios de tu propia distribución; lo más probable es que lo encuentres empaquetado listo para instalar.
Descargar
Author: ..::dedAL0s::.. » Comments:
Un poco de Hist0riA

Bueno como es fomingo y de constumbre muchos estamos descansando del post carrete o quizas algunos como yo aun estan en ello les voy a contar de dos personajes admirados por mi persona uno de ellos es Kevin Mitnick es el "ex hacker" y de hecho es muy conocido por no ser un gran programador ni un experto ingeniero y quizás las palabras que más se acercan a definirlo son computín y cuentero. Sí, por que la mayoría de sus cosillas tecnológicas este estadounidense las realizó en base a lo que hoy día se conoce como “ingeniería social”, que no es otra cosa que recolectar información vital a través de cuentos, mentiras y engaños para asi poder llegar a la persona en cuestion (que uno quisiera crackear), La historia de este "experto informático" tiene todos los ingredientes de un Best Seller incluyendo una espectacular fuga en 1992 donde hubo autos de policía, agentes del FBI y helicópteros, al más puro estilo de Hollywood. Cuando todo se calmó, desde la clandestinidad, logró quebrantar la seguridad de Sun Microsystems, Novell, y Motorola.
En el 94 con el auge de la telefonía celular, Mitnick planea hackear redes de telefonía móvil y de esta manera poder entrar en cualquier sistema de seguridad sin ser descubierto. A través de sus refinadas técnicas de "ingeniería social" logra hacerse de la clave del computador personal de Tsutomu Shimomura, especialista japonés en seguridad informática de Netcom On-Line Communications. Kevin además de conseguir la información que necesitaba también se ganó a su mayor enemigo, el japonés, que al ser puesto en ridículo juró que atraparía al "americano estúpido", conocido ya para esa época como superhacker.
Shimomura recorrió varias veces los Estados Unidos en busca de Mitnick, y así en 1995 llegó la hora trágica -gracias a la dedicación personal del japonés en busca de venganza- cuando el FBI logró atrapar al hacker y la justicia lo condenó a cuatro años de prisión.
Mientras Mitnick estuvo en la cárcel, muchos computines de todo el mundo crearon la campaña "Free Kevin", frase que se ocupó hasta el cansancio en los bajos fondos de la informática y llegó a convertirse en una portada del periódico New York Times.
De otro tema tocaremos El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos, es un
algoritmo para la determinación del camino más corto dado un
vértice origen al resto de vértices en un
grafo dirigido y con pesos en cada
arista. Su nombre se refiere a
Edsger Dijkstra, quien lo describió por primera vez en 1959.
C
#define INFINITY (MAX_INT - 1)
typedef struct {
int weight;
int dest;
} DijkEdge;
typedef struct {
DijkEdge* connections; /* Un array de arcos */
int numconnect;
int distance;
int isDead;
} Vertex;
void Dijkstra(Vertex* graph, int nodecount, int source) {
for(int i = 0; i < i ="="" distance =" 0;" isdead =" 0;" distance =" INFINITY;" isdead =" 0;" i =" 0;" min =" INFINITY+1;" j =" 0;" next =" j;" min =" graph[j].distance;" j =" 0;">
graph[next].distance + graph[next].connections[j].weight)
{
graph[graph[next].connections[j].dest].distance =
graph[next].distance + graph[next].connections[j].weight;
}
}
graph[next].isDead = 1;
}
for(int i = 0; i <>
Author: ..::dedAL0s::.. » Comments:
Recuperación de Datos que Usando Linux
sábado, junio 02, 2007

Bueno quizas a mas de alguno y en lo personal me paso el año 2005, que nuestro S.O no cargaro normalmente y los datos ahora son atrapados dentro del Pc (
http://es.wikipedia.org/wiki/Disco_duro ).
El problema puede ser un hardware o un fracaso de software, y esto puede parecer irrecuperable.
Aún a menudo Linux puede ser usado para ayudar a recuperar datos que de otra manera podrían ser perdidos.
Este articulo describe como uno puede usar Linux para recuperar datos de una máquina de window$ que no funciona.
Author: ..::dedAL0s::.. » Comments: