Biografia Linus Torvalds

May 10, 2008

Linus Torvalds nació un 28 de Diciembre de 1969 en Finlandia sin saber que iba a plantar la semilla de una revolución informática.

Se puede decir que nació hacker; ya en su primera adolescencia se entretenía programando en ensamblador un Commodore. Era cosa de pocos años que acabara estudiando en la Universidad de Tecnología de Helsinki.

En la primavera del 91, mientras estaba en la Universidad, este finlandés de 21 años empezó a trabajar en el desarrollo de un kernel basado en el sistema operativo propietario UNIX para computadoras con microprocesadores de Intel. Una vez creado, lo puso a disposición del público a través de un servidor FTP de la Universidad finlandesa.

Linux era el nick de Linus en la Universidad. Para evitar que le acusaran de egocéntrico, quiso llamar a su creación Freax (Free + Freak + X), pero el gestor del servidor decidió que le gustaba más el nombre de trabajo de su amigo y decidió usar Linux. El resto ya es historia.

Linus pronto se sumó a la filosofía del proyecto GNU de la Free Software Foundation, convirtiendo Linux en un producto de licencia GPL, y consiguiendo que numerosos desarrollos ya existentes le arroparan y que muchos programadores generaran otros nuevos; es decir, lo que Linus desarrolló fue el corazón de los actuales sistemas operativos Open Source, que actualmente también se conocen por extensión con el nombre de Linux, pero que son obra del trabajo conjunto de miles de desarrolladores de todo el mundo.


Biografia Richard Stallman

May 10, 2008

Richard Stallman fue otro de los jóvenes precoces que conoció e hizo uso de computadoras en 1969, a la edad de 16 años en el IBM New York Scientific Center. Fue dándose a conocer cuando empezó a trabajar en el Laboratorio de Inteligencia Artificial del MIT (Massachussets Institute of Technology) en 1971. A pesar de haber estudiado en la Universidad de Harvard, no concluyó sus estudios de Ciencias de la Computación.

Mortificado por el hecho de que el software era considerado Propiedad Privada, Stallman fundó la Free Software Foundation (Fundación de Software Gratuito).

En la década de los 80, Stallman dejó de trabajar en forma estable en el MIT, pero continuó haciéndolo en sus horas libres desde una oficina de esa entidad.

Fue en el propio MIT donde creó y desarrolló el nuevo sistema operativo llamado GNU, compatible con Unix, pero con código fuente abierto y gratuito.

Existe gran información sobre el concepto de software gratuito y el proyecto GNU, de Richard Stallman, quien admite ser un hacker dentro de su propia concepción.


Biografia Bill Gates

May 10, 2008

(William Henry Gates III) Empresario estadounidense (Seattle, Washington, 1955 - ). Bill Gates nació en una familia acomodada que le proporcionó una educación en centros de elite como la Escuela de Lakeside (1967-73) y la Universidad de Harvard (1973-77). Siempre en colaboración con su amigo Paul Allen, se introdujo en el mundo de la informática formando un pequeño equipo dedicado a la realización de programas que vendían a empresas o Administraciones públicas.

En 1975 se trasladaron a Alburquerque (Nuevo México) para trabajar suministrando a la compañía MITS programas susceptibles de ser utilizados con el primer microordenador, el Altair. En 1976 fundaron en Alburquerque su propia empresa de producción de software informático, Microsoft Corporation, con Bill Gates como presidente y director general; su negocio consistía en elaborar programas adaptados a las necesidades de los nuevos microordenadores y ofrecérselos a las empresas fabricantes más baratos que si los hubieran desarrollado ellas mismas.

En 1979 Microsoft comenzó a crecer (16 empleados), momento en que Bill Gates decidió trasladar su sede a Seattle. La expansión posterior fue espectacular: en 1980 llegó a un acuerdo con IBM para suministrarle un sistema operativo adaptado a sus nuevos ordenadores personales, el MS-DOS, que desde 1981 iría instalado en todos los ordenadores de la marca; la posterior imitación del sistema IBM-PC por los ordenadores «compatibles» de las demás marcas generalizó el uso del DOS de Microsoft como soporte de todos los programas de aplicación concretos.

Volcado en un proceso de innovación tecnológica acelerada, en 1983 Gates volvió a revolucionar la informática personal con la introducción del «ratón» y de un nuevo interfaz gráfico llamado a sustituir al DOS (el Windows); en aquel mismo año fue cuando Allen dejó Microsoft, aquejado de una grave enfermedad.

Cuando, en 1986, Microsoft salió a la Bolsa, las acciones se cotizaron tan alto que Bill Gates se convirtió en el hombre más rico de Estados Unidos. Desde entonces, el negocio no ha cesado de crecer (de los 1.200 empleados que tenía en 1986 hasta más de 20.000 en 1996), obteniendo un virtual monopolio del mercado del software mundial (reforzado por su victoria en el pleito contra Apple en 1992); y han seguido llegando innovaciones como las nuevas versiones Windows 3.0 (muy bien recibida por los usuarios), Windows 95 (en cuya campaña de promoción a escala mundial asumió el propio Gates el papel de profeta de la sociedad cibernética como personificación de Microsoft), Windows 98 y las sucesivas versiones de este sistema operativo.

Desde 1993 embarcó a la compañía en la promoción de los soportes multimedia, especialmente en el ámbito educativo. El talento de Gates se ha reflejado en múltiples programas informáticos, cuyo uso se ha difundido por todo el mundo como lenguajes básicos de los ordenadores personales; pero también en el éxito de una empresa flexible y competitiva, gestionada con criterios heterodoxos y con una atención especial a la selección y motivación del personal.

Su rápido enriquecimiento ha ido acompañado de un discurso visionario y optimista sobre un futuro transformado por la penetración de los ordenadores en todas las facetas de la vida cotidiana, respondiendo al sueño de introducir un ordenador personal en cada casa y en cada puesto de trabajo; este discurso, que alienta una actitud positiva ante los grandes cambios sociales de nuestra época, goza de gran audiencia entre los jóvenes de todo el mundo por proceder del hombre que simboliza el éxito material basado en el empleo de la inteligencia (su libro The Road Ahead fue uno de los más vendidos en 1995).

Las innovaciones de Gates han contribuido a la rápida difusión del uso de la informática personal, produciendo una innovación técnica trascendental en las formas de producir, transmitir y consumir la información. El presidente Bush reconoció la importancia de la obra de Gates otorgándole la Medalla Nacional de Tecnología en 1992.

Fuente: BiografiasyVidas


Cuantos lenguajes de programación hay ?

May 10, 2008

Cuantas veces no hemos hecha esa pregunta ? , quiza algunos hayan respondido bastantes o hayan nombrado bastantes pero en la actualidad solo se utilizan algunos. Esto va para aquellos grandes egos que dicen saber todos los lenguajes de programacion, existen 1200 lenguajes de programacion diferentes !.

Cual es el lenguaje mas dificil de aprender ?, existe uno llamado Malbolge que es el lenguaje de programacion mas dificil de aprender , eso ahorita se los explicare.

Existe una buena pagina llamada 99 bottles of beer que es una cancion, en esta pagina encontrar los 1200 lenguajes de programacion con su respectivo codigo fuente imprimiendo la cancion de “99 bottles of beer” , aqui les dejo esta maravillosa web : http://www.99-bottles-of-beer.net

Para que vean lo impresionante que puede llegar a ser aprender un lenguaje de programacion, aqui les dejo el codigo fuente de la cancion 99 bottles of beer en Malbolge :

http://www.99-bottles-of-beer.net/language-malbolge-995.html

Y dice muchos que assembler es el mas dificil, como veo el malbolge creo que assembler es la gloria.

- Julián Rodríguez


Leyes de los Programadores

May 10, 2008

* Ley fundamental de Murphy

Si algo puede ir mal en un programa, podemos apostar a que irá mal.

* Teorema de Patrick

Si un programa anda bien de primera, seguro que se ha empleado el algoritmo y (posiblemente) la computadora equivocada.

* Constante de Skinner

Es la cantidad de líneas de programa tales que:
a) agregadas a las líneas de nuestro programa, impiden que entre en memoria, y
b) quitadas de nuestro programa, no permiten que funcione de la forma que se había previsto en un principio.

* Postulados de los lenguajes naturales

La pericia en el arte de programar es directamente proporcional al numero de insultos que el programador profiere durante el desarrollo del programa, e inversamente proporcional al cuadrado de la distancia que recorre desde la computadora hasta la cafetera más cercana para “despejar la mente”.

* Ley de Flaple sobre la perversidad de los programas concluidos

Todo programa, prescindiendo de su propósito, estructura y configuración, será concluído de la forma más insospechada y confusa posible, por razones completamente oscuras.

* Axioma de Allen

Cuando todo falla, es el momento de consultar el manual, que naturalmente no se tiene idea de donde puede estar oculto.

* Principio de las subrutinas dispersas

Al depurar un programa, la accesibilidad de una subrutina critica para su funcionamiento, es inversamente proporcional al numero de veces que dicha subrutina desfila por delante de los ojos del programador, cuando la busca en el listado del programa.

* Corolario de compensación

La estructura de un programa puede considerarse un éxito si no mas del 50% de las líneas originales deben modificarse para obtener cierto parecido con el resultado deseado al momento de especificarlo.

* Ley de Gumperson

La probabilidad de que ocurra un determinado error de ejecución es inversamente proporcional a su importancia y al deseo por parte del programador de que suceda.

* Postulado del material pedido

Los diskettes vírgenes necesarios para respaldar el programa de ayer, deben adquirirse no mas tarde de mañana al mediodía.

* Definición de Twiligth-Zone-programming

Por definición, cuando un programador programa en el dominio de lo desconocido, no sabe lo que se va a encontrar cuando ejecute el programa.

* Regla de Ketterin

Cuando un programa no funciona, es por una razón distinta de la que el programador cree que provoca que no funcione.

* Factor de futilidad

Ningún programa es nunca un completo fracaso: puede servir siempre como un mal ejemplo.

* Teorema de Anderson-Bermudas

La posibilidad de que un programa se pierda es inversamente proporcional a la cantidad de copias disponibles del programa.
Corolario: Nunca se pierde un programa del que el programador tenga respaldo.
Acotación 1: Claro, suponiendo que las unidades de cinta sean inmunes a Murphy y no fallen.
Conclusión: Nunca ningún programa está a salvo.

* Principio de gravitación selectiva de Newton-Hindenburg

Cuando un teclado cae al suelo, inevitablemente aterriza por donde el daño puede ser mayor.

* Postulados del calculo mental

a) Si puede cometerse un error en los cálculos, desde luego que ocurrirá, y de tal forma que haya que rehacer todas las operaciones.
b) Todos los valores de las constantes terminan siendo variables.
c) En todo calculo, el valor que se creía mas correcto es el causante de todos los errores.
d) El punto decimal se las ingenia para colocarse por su cuenta en el peor sitio.

* Postulados sobre la vida útil de los programas

a) Cualquier programa, al estrenarse, resulta obsoleto.
b) Si un programa sirve, deberá ser modificado.
c) Todo programa tiende a crecer hasta ocupar toda la memoria disponible.
d) La complejidad de un programa irá creciendo hasta sobrepasar la capacidad del programador de entenderlo.

* Teorema de Guzman-Rojas

Si existiese un lenguaje de programación idéntico al castellano se deduciría que los programadores no saben escribir en castellano.

* Leyes de Troutman

a) Si la prueba de un sistema nuevo funciona perfectamente, todos los intentos subsecuentes de utilización del sistema fracasarán.
b) Ante la mejor rutina de validación y consistencia siempre se opondrá algún ingenioso idiota capaz de filtrarle datos inválidos e inconsistentes.

* Leyes de Miro

a) La mejor forma de complicar las cosas es programar un problema simple.
b) El mayor esfuerzo en la programación reside en las infinitas modificaciones que deben realizarse a Programas Standard de Aplicación Universal.
c) Todo programa, al ser protegido, produce como efecto automático la imposibilidad de leer o listar la copia no protegida. Como efecto secundario produce la desaparición de todo listado anterior de respaldo.
d) Todo borrado involuntario o accidental de un disco comienza siempre por los datos de mayor valor.
e) Todo listado de programas guardado en una carpeta de respaldo es siempre una versión anterior a la que se halla en uso.
f) El usuario es más inteligente que el programador, pues siempre encuentra lo que le falta a un listado de información producido por la computadora.
g) Si una demostración sale bien, se deberá revisar cuidadosa y minuciosamente el programa hasta hallar la falla y así eliminarla.

* Ley de Tussman

No hay nada tan inevitable, como un error cuando es su hora.

* Primera ley de Golub sobre la informática

Los proyectos con objetivos difusos, van bien para evitar el compromiso de tener que estimar los costos.

* Segunda ley de Golub sobre la informática

Un proyecto planificado sin precisión tarda tres veces más en acabarse de lo que se espera, un proyecto planificado cuidadosamente tarda el doble de lo previsto.

* Tercera ley de Golub sobre la informática

El esfuerzo requerido para corregir el curso de un proyecto se incrementa geométricamente en función del tiempo transcurrido.

* Cuarta ley de Golub sobre la informática

Los equipos de proyectos odian hacer informes semanales sobre la evolución del proyecto porque padecen claramente la falta de avances.

* Primera ley de la programación

Cualquier programa, cuando funciona, es obsoleto.

* Segunda ley de la programación

Todos los programas cuestan más y tardan más tiempo de lo esperado.

* Tercera ley de la programación

Si un programa es útil, te lo harán cambiar.

* Cuarta ley de la programación

Si un programa no sirve para nada, te lo harán documentar.

* Quinta ley de la programación

Cualquier programa se va extendiendo hasta ocupar toda la memoria disponible.

* Sexta ley de la programación

El valor de un programa, es inversamente proporcional al peso de los listados que fabrica.

* Séptima ley de la programación

La complejidad de un programa va creciendo hasta que sobrepasa la capacidad del programador que lo tiene que mantener.

* Ley de Brook

Añadir más mano de obra a un proyecto de software que va retrasado, lo retrasa todavía más.

* Ley de Biondi

Si tu proyecto no funciona, repásate la parte que te parecía que no era importante.

* Ley de Keops

Nunca se ha hecho nada según las previsiones, o dentro del presupuesto.

* Regla noventa-noventa de la elaboración de proyectos

El primer 90% del trabajo, se hace en el 90% del tiempo, y el último 10%en el otro 90%

* Ley de Sevaried

La principal causa de los problemas son las soluciones.

* Segunda Ley de Weinberg

Si los constructores edificasen edificios de la misma manera que los programadores programan programas, la llegada del primer picagaitas, destruiría la civilización.

* Ley de Solve

Los problemas complejos tienen soluciones simples, comprensibles y equivocadas.

* Ley de Smith

Ningún problema verdadero tiene solución.

* Segunda Ley de Perlsweig

Cualquier cosa que está sucediendo a nuestro entorno, llegará hasta aquí.

* Axioma de Robert

Sólo existen los errores.

* Corolario de Berman para el axioma de Robert

El error de un hombre es el dato de otro.

* Quinta Ley de la Fiabilidad

Equivocarse es humano, pero para complicar las cosas es necesaria una computadora.

* Guía de Murphy de cara a la ciencia moderna

Si es verde y se mueve se trata de biología; si huele mal, de química; y si no funciona, de física o informática.

* Sexto postulado sobre la programación de Troutman

La blasfemia es el único lenguaje que de verdad conocen todos los programadores.

* Primera ley de Gilb sobre las computadoras

Las computadoras son poco seguras, pero las personas lo son menos.

* Segunda ley de Gilb sobre las computadoras

Cualquier sistema que dependa de la precisión humana, es impreciso.

* Tercera ley de Gilb sobre las computadoras

Los errores no detectables son infinitos, mientras que los detectables son, por definición, finitos.

* Cuarta ley de Gilb sobre las computadoras

Las inversiones para mejorar la precisión de un sistema, crecerán hasta que sean superiores al probable coste de los errores, o hasta que alguien proponga hacer algo útil.

* Ley de Bit sobre el estado actual de la electrónica

Si lo entiendes, ya es obsoleto.


40 Tips para PHP

May 10, 2008

# If a method can be static, declare it static. Speed improvement is by a factor of 4.

# echo is faster than print.

# Use echo’s multiple parameters instead of string concatenation.

# Set the maxvalue for your for-loops before and not in the loop.

# Unset your variables to free memory, especially large arrays.

# Avoid magic like __get, __set, __autoload

# require_once() is expensive

# Use full paths in includes and requires, less time spent on resolving the OS paths.

# If you need to find out the time when the script started executing, $_SERVER[’REQUEST_TIME’] is preferred to time()

# See if you can use strncasecmp, strpbrk and stripos instead of regex

# str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4

# If the function, such as string replacement function, accepts both arrays and single characters as arguments, and if your argument list is not too long, consider writing a few redundant replacement statements, passing one character at a time, instead of one line of code that accepts arrays as search and replace arguments.

# It’s better to use select statements than multi if, else if, statements.

# Error suppression with @ is very slow.

# Turn on apache’s mod_deflate

# Close your database connections when you’re done with them

# $row[’id’] is 7 times faster than $row[id]

# Error messages are expensive

# Do not use functions inside of for loop, such as for ($x=0; $x < count($array); $x) The count() function gets called each time.

# Incrementing a local variable in a method is the fastest. Nearly the same as calling a local variable in a function.

# Incrementing a global variable is 2 times slow than a local var.

# Incrementing an object property (eg. $this->prop++) is 3 times slower than a local variable.

# Incrementing an undefined local variable is 9-10 times slower than a pre-initialized one.

# Just declaring a global variable without using it in a function also slows things down (by about the same amount as incrementing a local var). PHP probably does a check to see if the global exists.

# Method invocation appears to be independent of the number of methods defined in the class because I added 10 more methods to the test class (before and after the test method) with no change in performance.

# Methods in derived classes run faster than ones defined in the base class.

# A function call with one parameter and an empty function body takes about the same time as doing 7-8 $localvar++ operations. A similar method call is of course about 15 $localvar++ operations.

# Surrounding your string by ‘ instead of ” will make things interpret a little faster since php looks for variables inside “…” but not inside ‘…’. Of course you can only do this when you don’t need to have variables in the string.

# When echoing strings it’s faster to separate them by comma instead of dot. Note: This only works with echo, which is a function that can take several strings as arguments.

# A PHP script will be served at least 2-10 times slower than a static HTML page by Apache. Try to use more static HTML pages and fewer scripts.

# Your PHP scripts are recompiled every time unless the scripts are cached. Install a PHP caching product to typically increase performance by 25-100% by removing compile times.

# Cache as much as possible. Use memcached - memcached is a high-performance memory object caching system intended to speed up dynamic web applications by alleviating database load. OP code caches are useful so that your script does not have to be compiled on every request

# When working with strings and you need to check that the string is either of a certain length you’d understandably would want to use the strlen() function. This function is pretty quick since it’s operation does not perform any calculation but merely return the already known length of a string available in the zval structure (internal C struct used to store variables in PHP). However because strlen() is a function it is still somewhat slow because the function call requires several operations such as lowercase & hashtable lookup followed by the execution of said function. In some instance you can improve the speed of your code by using an isset() trick.

Ex.

if (strlen($foo) < 5) { echo “Foo is too short”; }

vs.

if (!isset($foo{5})) { echo “Foo is too short”; }

Calling isset() happens to be faster then strlen() because unlike strlen(), isset() is a language construct and not a function meaning that it’s execution does not require function lookups and lowercase. This means you have virtually no overhead on top of the actual code that determines the string’s length.

# When incrementing or decrementing the value of the variable $i++ happens to be a tad slower then ++$i. This is something PHP specific and does not apply to other languages, so don’t go modifying your C or Java code thinking it’ll suddenly become faster, it won’t. ++$i happens to be faster in PHP because instead of 4 opcodes used for $i++ you only need 3. Post incrementation actually causes in the creation of a temporary var that is then incremented. While pre-incrementation increases the original value directly. This is one of the optimization that opcode optimized like Zend’s PHP optimizer. It is a still a good idea to keep in mind since not all opcode optimizers perform this optimization and there are plenty of ISPs and servers running without an opcode optimizer.

# Not everything has to be OOP, often it is too much overhead, each method and object call consumes a lot of memory.

# Do not implement every data structure as a class, arrays are useful, too

# Don’t split methods too much, think, which code you will really re-use

# You can always split the code of a method later, when needed

# Make use of the countless predefined functions

# If you have very time consuming functions in your code, consider writing them as C extensions

# Profile your code. A profiler shows you, which parts of your code consumes how many time. The Xdebug debugger already contains a profiler. Profiling shows you the bottlenecks in overview

# mod_gzip which is available as an Apache module compresses your data on the fly and can reduce the data to transfer up to 80%


Como atrapar Script Kiddies

May 10, 2008

Me dio mucha risa esta imagen, es un chiste para aquellos que sepan algo de programacion o sobre aquellos pestes que roban codigo.

Ver en Grande