1278
Sergey Brin, cofundador de Google, lanzó hoy en la conferencia de desarrolladores en San Francisco una nueva nomenclatura para la jerga de la cultura de los programadores: "La Ley de Page", en referencia al otro cofundador Larry Page. En contraposición al aforismo técnico de la Ley de Moore (los ordenadores duplican su velocidad cada uno o dos años)*, la Ley de Page es su inverso: el software dobla su lentitud cada 18 meses. Esto explicar el enlentecimiento aunque el hardware se mantenga. Rel.: meneame.net/story/superando-la-ley-de-moore
menéame
A pesar de que la ley originalmente fue formulada estableciendo que la duplicación se realizaría cada año, posteriormente Moore redefinió su ley ampliando el periodo a dos años.
es.wikipedia.org/wiki/Ley_de_Moore
Os pongo un caso. La competencia entre los videojuegos FIFA y PES. Es curioso estos juegos de fútbol, compiten entre sí. Todos los años. Yo me acuerdo que hace años, dichos juegos salían sobre principio mediados de noviembre. Y sin embargo ahora salen en octubre. El caso es que los sacan antes, por hacerse antes con el trozo de pastel. El problema es que al sacarlos antes, la probabilidad de que tengan errores considerables es altísima. Ya que a lo mejor por sacarlo antes, te has comido unos 15 días, de búsqueda de bugs y otros fallos ( es decir,la fase Beta, donde se depuran dichos errores, es más pequeña).
Y es cierto lo que dice oraculus. Antiguamente los programadores optimizaban más el código. Pero no sólo eso. Es que sabían aprovechar mucho mejor los recursos de los equipos. Ahora por ejemplo en los videojuegos, ocupan una barbaridad y lo bonito del caso es que, muchas veces podrían ocupar menos.
Por ejemplo no es muy raro ver, juegos tipo Doom de menos de 20 niveles y que ocupan más de 1 GB. Todo depende de la calidad de los gráficos, música, pero sobre todo del código si fue más o menos optimizado.
Aparte ni que decir tiene, que cuanto más optimizado sea el código de un videojuego, aplicación... en más cantidad de tipos de ordenadores puede funcionar. Ya que si un programa no está optimizado necesitará, como decimos vulgarmente, un "pepino" de equipo. Un caso claro lo tenemos con Windows Vista, ya que el uso de los recursos hardware es bastante malo. Por supuesto que no es el único.
Salu2
Eso es cierto y tampoco se tiene que hacer todo con ensamblador o código máquina. Pero sí se puede hacer mejor eso está claro. Muchos programas apenas están optimizados.
Salu2
#8 yo, jamás, JAMÁS, he podido jugar a un juego "nuevo" en mi ordenador, aunque estuviera recién comprado, y son tres ordenadores los que he tenido. eso de busca uno más rápido se traduce por "cómprate el más caro".
Lo cual me recuerda otro caso: remakes de juegos de 8 bits (que podian ocupar 30 ks) metidos en 25 megas.
Si la gente no usara el software "pesado" ya se preocuparían ellos de evitar que lo fuera. Pero la gente sigue instalando "MSN 7.9 versión chupiguai" aunque ocupe 500Mb en disco, requiera 1,2 Ghz de procesador y consuma 1GB de Ram. Todas estas aplicaciones "de juguete" como son el Spotify, Windows Media, etc. que deberían requerir recursos mínimos y se comen un PC de última generación sobreviven gracias a vosotros.
En mi ordenador no entra nada que no esté optimizado. En casa tengo un VMware en un equipo a 2,3 Ghz (1 procesador, claro está) con 2 GB de Ram. En ese equipo corren 5 maquinas virtuales que hacen "de todo", incluso está el equipo escritorio publicado por PXE+NFS. La última vez que lo miré le sobraban la mitad de los recursos al equipo.
Evidentemente si ese equipo en vez de usar software optimizado (distribuciones linux minimalistas con los componentes que necesitan) usara un sistema operativo Windows "de última generación" ese ordenador no se podría usar ni para navegar por la web.
Pero claro, como yo soy el rarito el ritmo del software sigue como sigue y lo único que aparecen son algunas pataletas como esta sin mas repercusión.
Por cierto he dejado de leer tu comentario cuando has dicho "En mi ordenador no entra nada que no esté optimizado" y luego has dicho que usas linux.
zonaforo.meristation.com/foros/viewtopic.php?t=1325730
Te enlazo eso para no tener que explicar en una parrafada lo que explican mejor otros
si cada versión de KDE o de firefox que utilizo siempre dice que ahora funciona un 20% más rápido....
Se desarrolla a toda leche y apretando los costes al máximo. El optimizar algo no significa mirar el código, significa pruebas de prestaciones, con un Hardware dedicado para ello (tiene que ser similiar a lo que hay en producción, por lo que es caro) y un SW específico que también es caro (por ejemplo, el loadrunner para aplicaciones WEB) Aparte de eso se precisa a un equipo experto en la aplicación, el HW y el SO (no siempre existe gente con ese perfil y es caro mantener ese equipo) y a todo el equipo de desarrollo solventando los cuellos de botella que se encuentran.
Lo normal, es que sólo se hagan las pruebas de prestaciones y las optimizaciones cuando algo casca en producción (por ejemplo, cuando te conectan una nueva aplicación a tu sistema o aumenta el número de usuarios) No se suele cambiar el HW porque es bastante caro, aunque algunas veces se hace. Curiosamente, el cliente casi nunca paga por prestaciones, pero no le importa dejarse un pasturrial en cosas como soportes con IBM, SUN o HP y soportes Oro de Oracle.
Si a todo esto le añadimos que a las aplicaciones se les van agregando funcionalidades con el tiempo, la cosa empeora poco a poco (o mucho a mucho, depende de lo que añadas)
¿Parte? seras cobarde... ¿usando librerias para facilitar eh? ¿un poco de C simplifica no?
Un verdadero informatico hacía todo el programa en ensamblador y las partes críticas las diseñaba sobre chips hechos a medida que disminuian la latencia de respuesta de los ciclos de reloj...
Ah, que tiempos aquellos....
Como ejemplo perfecto de optimizacion en codigo los juegazos en 'solo 32 Megabytes' de la Nintendo 64 como el 'Leyend of Zelda'. Eso es programacion en estado puro.
Ojo, 32 Megabytes son equivalentes a unos ocho MP3 de tres minutos, y el Legend of Zelda es un juego largo, largo y con infinidad de detalles y sorpresas.
Lo de Microsoft con DirectX y compañia es todo lo contrario, lo unico que hacen es crear 'monstruos' consume recursos y supuesta sencillez de uso ocultando los detalles.
Si traspolasemos lo que se programaba con 64 Kbytes en un Commodore 64, Spectrum y Amstrad al equivalente con la potencia de hoy la carrera de informatica la estudiaban hasta las piedras.
48k, eso es la quinta parte que ocupa el "hello Word" en cualquier lenguaje actual (excepto Java donde el Hello World en J2EE debe andar por los varios MB para tener motor de persistencia y control de sesiones o algo asi)
Puedes probar el juego "kkrieger", un shooter en 3D de tan solo 96kb, en el cual las texturas y sonidos son calculados durante la ejecución del mismo.
Tienes razon en lo de la complejidad, por eso ahora todo se programa orientado a objetos, para reducirla drasticamente. Esto quiere decir reducir la complejidad en la resolucion de un problema concreto en forma de programa. El codigo puede ser MUY complicado pero la arquitectura/estructura del programa estar a la vez muy bien definida. El coste de reducir la complejidad en el proceso de elaboracion de programas orientados a objetos es el espacio y sobre todo la velocidad del programa final. Y lenguajes como JAVA, que considero genial dentro de sus limitaciones actuales, todavia consumen mas tiempo en ejecucion porque todo se ejecuta sobre una especie de 'Windows vitual' en memoria (llamado mainframe). El codigo maquina es un aliado a tener en cuenta en situaciones de calculo criticas mediante pequeñas porciones de codigo (maquina). No hay que olvidar su potencia.
Supongamos que a una empresa, mejorar el código de su programa para lograr un rendimiento mayor le cuesta un año de trabajo de un tio. Minimo 30,000 euros.
Mejorar el rendimiento en base al HW consiste en decirle al cliente te tienes que poner un ordenador más potente, total 300 euros ( de los malos pero mejor que el del año pasado ) y encima te funcionará mucho mejor el Vista.
300 euros para una empresa no son nada y sin embargo, 30,000 si que lo son. Si la empresa tiene 200 clientes, el coste de mejorar el rendimiento a base de HW es de 60000, sin embargo, como lo han pagado entre muchos, no se nota.
Por cierto, eso del ensamblador sería hace muchiiiiiiisimo. Nosotros trabajamos con micros de 8 y 16 KB y trabajamos en C. Apenas tocamos ensamblador más que para pequeños retoques. Nos podriamos morir programando en ensamblador...
Y con el ultimo PC a 2000Mhz me pare, porque vi con claridad que esa potencia me da todo lo que necesito y que el mercado de videojuegos actual es muchas veces una estafa por precio, por calidad y por recursos requeridos para poder funcionar.
Pero discrepo en que la gente no obtiene software optimizado porque no lo reclama.
En este caso la mejor comparacion es la programacion en television, la justificacion de sus 'programas' suele ser la misma, 'la gente lo ve porque le gusta', y en realidad lo ve porque no hay alternativa alguna y porque si te compras una tele debe ser para usarla.
Llevo mas de 4 años sin ver television. No la quiero en casa. Sin embargo, yo soy el raro, y la television no parece desaparecer. Pues lo mismo con el software come recursos.
Vengo de la escuela de los 8 bits, como tu. Lo mejor para mi fue mi C64, incluso mas que el Amiga, que fue increible en su momento (bueno, y sigue siendolo gracias a la comunidad en internet).
Ninguno de ellos preferiría ver programas como Redes o reportajes sobre la crisis económica. Eso no lo vería casi nadie aunque lo pusieran en prime time (las tv lo han intentado algunas veces).
La telebasura no es una conspiración de los medios contra sus televidentes, es una demanda social.
Rectifico: estabas hablando de juegos de la N64 y yo de los de la SNES. oops!
Uno de los problemas de rendimiento es que éste se riñe con otros aspectos importantes de un programa, como por ejemplo: la encapsulación, la división por capas, hacerlo multiplataforma, respetar estándares, modularización para reaprovechar el código, capas de abstacción, el uso de ciertas tecnologías estándares que aumentan la interconectividad, como los webservices que indicaban más arriba.
Así, si optimizas un programa, has de empezar a cargarte las normas de buena programación, si el programa es muy grande puedes hacer una cosa inmantenible...
Redes es una propuesta interesante como programa divulgativo, pero nunca me ha convencido del todo porque trata los temas de forma tan superficial que terminan no aportando nada.
Las televisiones lo unico que han intentado es hacer programacion lo mas barata posible. La prueba de ello son todos los 'famosos' sin causa ni esfuerzo que han surgido de la nada aparentemente para quedarse. Menos mal que ya acabaron con cronicas marcianas.
antes para la administracion de una tienda
1992
maquina/bios/kernel/shell/egine/database/program
hoy en dia para gestion de una tienda
2009
maquina/bios/kernel/shell/server/database/sql/
maquina/bios/kernel/shell/java/jdk/xml
maquina/bios/kernel/shell/server/apache/conexion
maquina/bios/kernel/shell/server/apache/tomcat/java/jdk/xml/structs/program/vista
maquina/bios/kernel/shell/server/apache/tomcat/java/jdk/xml/hibernate/program/permanencia/hql->SQL
maquina/bios/kernel/shell/server/apache/tomcat/java/jdk/xml/spring/program/negocio/vista
maquina/bios/kernel/shell/conexion/navegador/HTML.javascrits.css/127.0.0.1/
maquina/bios/kernel/shell/server/apache/tomcat/i.o
... y eso es poco
ahunque el software comple los mismas funciones que el del 1992 que el del 2009 hay una cierta diferencia que el comcepto de software monousuario y monotarea ha llegado a su fin, y el comcepto de pagina web estatica 10 cuartos de los mismo
hoy en dia hay software que se carga remotamente desde un mavegador que es multitarea y multiusuarios maneja datos tando centralizado como distribuidos en redes p2p es otro concepto de trabajar
eso si no quita que te compres el mismo microsoft office 2015 y que sea mas de lo mismo no aporte nada nuevo y encima nesesita 8 veces mas maquina que la anterior version teniendo alternativas practicas ultiles, gratuitas y abiertas
Ademas en los lenguajes de programacion mas utilizados ultimamente, lease (Java, .Net(VB.Net, C#, ..)), hay una maquina virtual que se encarga de la gestion de la memoria y liberacion de los recursos, por lo que el programador no le dedica tiempo a este tema.
Añadimos a esto, que pocos desarrolladores conocen lo que realiza internamente esta maquina virtual, para poder optimizar el codigo fuente.
Sumamos que todos los proyectos se entregan con "prisas" y las nuevas fuencionalidades se añaden a ese codigo hecho con "prisas".
Concluyendo, con la primera premisa, sale mas barato cambiar el hardware en el que corre ese software que optimizar el software para que corra en ese hardware.
Luego la gente se extraña cuando digo en la escuela 'prefiero C que Java' o cosas por el estilo. Desgraciadamente mi opinión no es compartida.
- Java es un lenguaje para resolver 'problemas', en forma de aplicaciones, que en la mayor parte de los casos no tienen que ver en realidad con computadoras. La computadora es solo la herramienta y la aplicacion la solucion.
- C es un lenguaje para escribir programas eficientes orientados a la maquina. Por ejemplo para desarrollar, mejorar y ampliar el sistema operativo y otras virguerias..
Programo en los dos lenguajes. Como lo que me gustan son las maquinas (los PCs) prefiero el C, pero no dejo de ver la utilidad de Java y su filosofia como una gran idea.
Puedes probar el juego "kkrieger", un shooter en 3D de tan solo 96kb, en el cual las texturas y sonidos son calculados durante la ejecución del mismo.
Y yo no he dicho lo contrario. Cuando digo "sobre todo el código" me refiero a la velocidad de ejecución y al rendimiento general. Por supuesto que lo que más ocupa son los gráficos y la música. Especialmente los primeros.
Y si KKrieger es una verdadera obra de arte de la programación y sobre todo su programador demuestra tener grandes conocimientos matemáticos, para hacer lo que hace.
Salu2
Veo los avances actuales en informatica, desde la perspectiva de las maquinas de Commodore, en ocasiones como un atraso.
Prueba de ello es la gran masa que mantiene vivos los equipos a traves de la emulacion.
Commodore no fue una gran empresa, sus politicas sin sentido la hundieron, pero sus maquinas se han quedado para siempre con sus usuarios. El equipo que desarrollaba las maquinas era el verdadero corazon, para mi que la empresa no era consciente de lo que nos estaba regalando.
Toda la documentacion sobre el C64 que no estuvo disponible en su epoca la tengo descargada de internet. Un par de gigas por lo menos.
Y uno de mis proyectos para antes de morirme es programar un emulador de C64 con sonido y floppy. Vivo en Noruega y estudio la carrera de informatica en la Universidad de Oslo. El semestre pasado nos empaparon bien de Ansi C y vimos ejemplos sobre como orientarlo a objetos. Todo con linux y GCC. En informatica son muy buenos aqui.
Esa sensacion de sentirse el hombre mas afortunado de la tierra solo la senti con el C64 y con Amiga, y un poco en la ultima etapa del Ms-Dos, con la GUS, en PC cuando todo se programaba a pelo con el mundillo de la demoscene y juegazos como el DOOM, Quake y demas.
En esta pagina de mi blog tienes un pequeño guiño al C64 (necesitas java instalado) :
folk.uio.no/fjrodrig/quien_soy.html
Me gustaria tener la oportunidad de visita la famosa party de Findlandia que la tengo relativamente cerca ahora.
Esto se enseña en primer año de ingenieria
Esto se enseña en primer año de ingenieria
Es decir, ¿Me estás diciendo. Que yo me tengo que gastar 400 € (por ejemplo en una tarjeta gráfica) por que tu has usado una hora menos para optimizar el código?
Es decir que en el primer año de ingeniería ¿os enseñan a no saber amortizar y a pasar ese coste al cliente?. Si yo hiciese lo mismo cuando programo para un microprocesador o un microcontrolador íbamos dados.
Salu2