Si el hardware de la PC es muchas veces más potente de lo que era en los años 70 y 80, pero el software no tiene más funcionalidad (más allá de ser más amigable), ¿por qué cada nueva generación de software requiere computadoras aún más potentes para funcionar?

Si bien estoy de acuerdo con Phillip Remaker en que no eres amable y gentil con el Software (; D), puedo ver de dónde viene tu pregunta. Uno puede preguntar Si bien el hardware de nuestro cerebro no ha cambiado mucho desde los Neandertales, pero se agregan un montón de funcionalidades a la lista de capacidades humanas, ¿por qué no puede aplicarse lo mismo a las Computadoras?

Puedo pensar en tres razones principales.

1. Mercado!

Sí, a veces lo que mantiene a las personas en el negocio y lleva a las empresas a la cima es el Hardware. ¡Piense en Apple, que vende dispositivos físicos y lee $ 194B! La pila de efectivo de Apple alcanza el récord. Cuando vendes algo real, puedes convencer a cualquier generación de que esta mierda vale $ 1000 porque pueden tenerla en sus manos y mostrársela a cualquiera que esté a su alrededor mientras hablan o caminan. Y nadie puede copiarlo gratis para sus amigos después de comprar una versión, o descargarlo gratis, como el software.

¿Cuál es la estrategia más fácil para hacer que la gente compre nuevo hardware? Conviértalo en un requisito para sus softwares. 🙂

Puede hacerlo manualmente, como diciendo que Siri no funciona en el iPhone 3. O puede hacer que desarrolladores enteros del universo usen las funcionalidades que solo son compatibles con el nuevo hardware. Sí, estoy hablando de iOS! Recuerdo que cuando tuve mi iPhone 2 el año pasado, no pude instalar ni siquiera un simple juego de mesa, porque cada juego en la App Store fue diseñado usando los nuevos marcos que solo eran compatibles con los nuevos iPhones. Y sí, pensé “¡ Por qué demonios no puedes ejecutar un simple juego de los 80 en este teléfono inteligente! “.

2. A quién le importa! – Es barato.

La RAM mínima requerida de Windows XP fue de 64 MB, mientras que la de Vista fue de 1 GB. ¿Por qué? Porque 1GB era muy barato en 2007.

Piénselo de esta manera: probablemente le costaría a Microsoft miles de millones de dólares en recursos para optimizar cada línea de sus millones de líneas de códigos desagradables para usar menos memoria; y también para mantener eso para futuras versiones. Eso aumentaría el precio de su producto final (CD de MS Windows) en, digamos, $ 50. Bueno, una RAM de 1GB sería más barata para que la comprara un cliente. 🙂

3. Crecimiento exponencial de la necesidad.

Supongamos que desea almacenar todos los colores posibles que su máquina puede generar y asignar cada uno de ellos a un nombre. En los viejos tiempos, los colores RGB de 3 bits (consulte la Lista de paletas monocromas y RGB) cabían en 3 bits, un bit para cada uno de Rojo, Verde y Azul, y tendría 8 colores diferentes. Por lo tanto, necesitaría almacenar 8 nombres.

Pero ahora, en lugar de reservar solo un bit para cada uno de Rojo, Verde y Azul, digamos que queremos almacenar un tono de cada uno de ellos. Digamos un número entre 0 y 255 como intensidad de ese color. Eso se llama RGB de 24 bits y requiere 16,777,216 nombres diferentes, ¡ya no 8!

Fue solo un ejemplo de crecimiento exponencial (n³ aquí). Y puede ver que ” un poco más amigable ” en realidad puede costar millones de veces más recursos. 🙂

Es cierto que hasta hace unos años, los incrementos de versiones principales a menudo incluían recomendaciones para mejorar el hardware. Mi 386 con Windows 95 fue mi maestro Zen personal. Me enseñó todo lo que sé sobre paciencia y meditación.

Sin embargo, esto ya no se aplica. Recientemente actualicé el netbook enfermo de mi padre (del que se niega a separarse) de Windows XP a Windows 8.1, y le dio una nueva vida. Generalmente es mucho más ágil. Mi experiencia con Windows 10 en máquinas virtuales es que consume menos recursos. Aplicaciones como Adobe Photoshop Touch mostraron cuánta funcionalidad y rendimiento se podrían extraer de una tableta o teléfono con poca potencia al reescribir el software tradicionalmente hambriento de recursos.

Entonces, ¿por qué el cambio reciente?

La respuesta a esto es que el hardware no sigue al software, como lo implica la pregunta. Es al revés. El software está optimizado para las tendencias de hardware predominantes entre el mercado objetivo para ese software. Sería estúpido no hacerlo. A medida que el hardware crecía más rápido, el software se optimizó para aprovechar esa velocidad. Pero eso es una simplificación excesiva. La realidad es que el hardware más nuevo a menudo vino con cambios en la arquitectura. Los avances en la velocidad del procesador, caché, subprocesamiento múltiple, hiperprocesamiento, ancho de banda de memoria, tamaño de memoria, velocidad del disco duro, capacidad del disco duro y muchos otros parámetros no han progresado de manera sincronizada y uniforme. Entonces, cuando los tamaños de RAM crecieron repentinamente, el software redujo su dependencia de los cachés de disco. A medida que el hiperprocesamiento se hizo común, el software aumentó la cantidad de procesamiento paralelo. A medida que los monitores de mayor resolución se volvieron comunes, el software se reescribió para combinarse con él.

Los consumidores a la vanguardia de la tecnología de hardware a menudo se han decepcionado al descubrir que la mayoría del software existente inicialmente no puede aprovechar toda esa potencia y parece funcionar igual, a veces incluso peor. Este es un mercado importante para complacer, porque también tienden a ser los más influyentes para los adoptadores tardíos. Las nuevas versiones se lanzan rápidamente para solucionar esto, y las compañías de software intentan mantenerse a la vanguardia en el futuro, pero naturalmente empeoran las cosas para el hardware más antiguo. Intentar optimizar para cada combinación de hardware es increíblemente ineficiente en cuanto a costos y tiempo.

Más recientemente, la tendencia del hardware ya no es hacia ‘más potente’, sino hacia ‘menor consumo de energía’, como resultado de la necesidad de usar baterías más pequeñas y generar menos calor en el impulso actual hacia la miniaturización. El software está siguiendo su ejemplo al volverse menos hambriento de recursos y delegar más procesamiento a los servidores y la nube, aprovechando las mayores velocidades de red que prevalecen hoy en día.

Están sucediendo muchas cosas en el fondo de una computadora que a menudo ni siquiera te das cuenta de que se está ejecutando.

Recuerdo incluso en los días de Windows XP, no hace mucho tiempo, tal vez 10 años. Podría realizar mis actividades diarias normales, como navegar por la web, y el administrador de tareas informaría 30-50 procesos en ejecución utilizando un total de 1 GB de RAM. En este momento, si reviso mi administrador de tareas, ¡tengo 115 procesos en ejecución y 8,74 GB de RAM en uso!

Entonces, ¿por qué es esto? Un factor importante aquí, en mi opinión, es que a medida que las computadoras se han vuelto más rápidas, las personas han estado creando programas más complejos que requieren más recursos solo para computar.

Pero más significativamente, los desarrolladores están adoptando un enfoque mucho más relajado para la programación. Hace unos años, cuando todo se escribía en ensamblador o C / C ++, cada byte de memoria podía explicarse. Ahora, es un poco más difícil. Con lenguajes de alto nivel como Java, Go y Javascript cada vez más utilizados, el desarrollador moderno presta mucha menos atención a la huella de memoria y potencia de procesamiento de su programa, y ​​se centra más en la funcionalidad y el diseño.

Muchos podrían argumentar que esto es algo bueno, compare el diseño intuitivo de productos como el iPhone de Apple con un terminal DOS. (No es una comparación completamente justa, pero entiendes el punto). Miles o millones de personas pueden aprender el uso simple del iPhone fácilmente, pero muy pocos podrían navegar por un terminal DOS. Desde el punto de vista del marketing, el diseño y la facilidad de uso son muy importantes.

Igualmente, existe el argumento de que un desarrollador moderno no aprende cómo su programa realmente se está ejecutando en una computadora y, por lo tanto, lucha por optimizar o depurar el código.

Desafortunadamente, la mayoría de la gente cree que tener un programa bien diseñado y con todas las funciones es mejor que tener una solución básica. Como resultado, el hardware debe seguir mejorando para mantenerse al día con el software cada vez más complejo.

Ser más amable es realmente un gran problema. ¡Eso requiere mucha potencia informática!

Y no puedo imaginar lo que quiere decir con “no más funcionalidad”.

Aquí hay una pequeña lista de cosas que no pude hacer en una computadora personal, ya en 1989. Fue entonces cuando tuve mi 386-33 con un coprocesador matemático 80387, mi disco duro de 40 megabytes y ninguna tarjeta de sonido.

  • Reconocimiento de voz confiable. (¡Hola Siri!)
  • Streaming de grabación y reproducción de video de alta definición
  • Efectos de audio en tiempo real
  • Edición de audio en tiempo real
  • Representación 3D en tiempo real de mundos en situaciones de juego
  • Videollamada
  • Grandes hojas de cálculo con muchas funciones exóticas de matemática y análisis
  • Edición de video y transcodificación
  • Transformaciones perfectas de píxeles en Photoshop
  • Ejecutar un sistema telefónico completo desde mi PC (¡o una Raspberry Pi!)
  • Renderizado e impresión de objetos 3d (Hola, Solidworks)
  • Programación de un robot desde un IDE integrado (Mindstorms)
  • Capacidad para emular cada computadora que utilicé en los años 1970 y 1980, SIMULTÁNEAMENTE, en mi Core i7 actual.

Y eso está fuera de mi cabeza. El software tiene mucha más funcionalidad y es más fácil de usar. ¿Qué considerarías “nueva funcionalidad” que te estás perdiendo?

Estoy bastante con Phillip Remaker en este caso, con una advertencia adicional.

Claro, hay TONELADAS de cosas que ni siquiera eran teóricamente posibles en los años 70 y 80 que el software hace por nosotros todos los días, pero en algún momento, sucedió algo …

La expectativa de sistemas cada vez más rápidos y de mayor capacidad hizo que los desarrolladores de software dejaran de preocuparse por el rendimiento real.

La hinchazón de código es un hecho de la vida. Y contribuye a no poder hacer “más” dentro de las limitaciones de las CPU y la memoria que tenemos, pero al mismo tiempo, ha hecho posibles cosas realmente maravillosas ya que los programadores simplemente no tenían que preocuparse por esas cosas.

Algunos días me ejercito al respecto, y me opongo al sistema educativo y a los proveedores de herramientas de desarrollo de software por ni siquiera considerar que es posible que deba ejecutar contra las limitaciones de tiempo y al mismo tiempo limitado por el espacio; otros días solo presiono el botón de Inicio y digo “Siri, ¿qué películas se están reproduciendo cerca que comienzan pronto?”

Me pregunto si el autor de esta pregunta solo usa la computadora para jugar al barrendero.

Tengo tantos programas que tienen muchísimas más funciones que no son solo ser más amigables. Cosas que ni siquiera eran posibles.

Solo estoy mirando mi barra de tareas ahora mismo

  • El navegador Chrome es mucho más útil que Netscape o cualquier IE de los años 90. Me encanta poder iniciar sesión en cualquier PC y tener mis marcadores almacenados en mis carpetas. Impresionante función de usuario. Sin mencionar todas las características del desarrollador que tiene Chrome.
  • Excel es probablemente la mejor aplicación de negocios de todos los tiempos y ya no está restringida a 64k filas y tiene muchas más funciones. Puede hacer agrupación de K-Median si agrega un complemento. Eso es asombroso.
  • Cada IDE que se me ocurre es muchísimo más potente, aunque todavía uso mucho VI. Tengo dos abiertas en este momento junto con 3 máquinas virtuales y una tonelada de otras aplicaciones que una computadora vieja no podía hacer. Esto no solo hace que las cosas sean más amigables, sino que me da un entorno donde puedo trabajar.
  • Tengo un cliente FTE de arrastrar y soltar que no existía en los años 80.
  • GIT Hub es una increíble aplicación de escritorio de control de fuente que me encanta que no tiene comparación en los años 80
  • Todas las aplicaciones de VM de escritorio son increíbles y no tienen comparación con el software de los 80. Esta tecnología ni siquiera fue posible.

Pensando en las computadoras de mi casa

  • Photoshop / Illustrator en 2015 es increíble lo que puedes hacer y solo sé lo básico. No hay comparación con el software en los años 80
  • Apenas sé sobre la edición de video en mi PC, pero sé lo suficiente como para que no puedas hacer nada comparable en los años 80 y mucho menos en los 70
  • Ableton Live es un increíble software multipista y es mucho más poderoso que cualquiera de las herramientas de edición de sonido de los años 80. De esto sé mucho y cualquiera que piense que las aplicaciones no han cambiado desde los años 80 no está prestando atención.
  • Todas las aplicaciones de videojuegos en los últimos 10 años impresionan a Pong.
  • Guitar Smith es una increíble herramienta de enseñanza para guitarra. No igual
  • Las aplicaciones de transmisión de audio que pueden impulsar el audio sin pérdida que se grabó a más de> = 24 bits / 96 kHz en mi casa es mucho más avanzado.
  • Netflix es una gran aplicación que no existía en los años 80.

Estoy aburrido escribiendo ahora pero podría seguir.

‘El software’? 🙂

De todos modos, Phillip Remaker ya dio una respuesta bastante buena. Pero permítanme abordar una cosa: un hardware más fuerte se ha utilizado en gran medida para facilitar el desarrollo de software.

Eso a su vez se ha traducido en mucho más software, lo que significa más cosas que puede hacer y más opciones sobre cómo hacerlo (es decir, más paquetes de software), ergo: más funcionalidad. 😉

Piénselo, en los años 70 y 80, estas personas tenían:

  • Interfaces muy torpes
  • Idiomas de muy bajo nivel
  • Profundo conocimiento de los sistemas.
  • Para lidiar con las limitaciones muy estrictas.

Solo eche un vistazo a una pregunta como ¿Cómo era la programación en los días en que las computadoras solo tenían kilobytes de RAM? La gente tenía que ser muy cuidadosa y dedicar muchos esfuerzos a respetar las restricciones de hardware.

Hoy, escribimos código en un lenguaje de alto nivel, usando un IDE elegante que hace un trabajo bastante molesto para nosotros, usando un marco popular para el tipo de cosas que queremos escribir. A menos que esté haciendo cosas muy serias, probablemente no me preocupe demasiado por el código eficiente, sino por el código que es fácil de leer, fácil de razonar y fácil de extender.

Entonces, el proceso de desarrollo de software de hoy está lleno de abstracciones, que probablemente nos están costando de alguna manera en el consumo de recursos. Y las preocupaciones actuales son hacer código que siga siendo útil. (lo que acelerará aún más el desarrollo)

Me gusta esta pregunta! El manejo de imágenes y gráficos de todo tipo es algo nuevo. Ese trabajo, que de todos modos no era tan común, se descargó a sistemas especializados llamados sistemas cad. Las imágenes que incluyen dibujos, datos sísmicos y datos científicos voluminosos como colisiones de partículas representaron desafíos difíciles para los mainframes. Recuerda, no había internet.

Si compara el hardware de un sistema Windows de escritorio con un servidor Windows, verá que el servidor necesita menos memoria porque normalmente no da servicio a un escritorio gráfico.

Solo la diferencia en diskio requerida para manejar imágenes es estupenda y requiere mucha memoria y CPU.

Si observamos la diferencia en la programación de hoy en comparación con las formas antiguas, vemos que las diferencias impulsadas por los códigos antiguos deben ajustarse al hardware limitado. Tomemos un ejemplo de una implementación moderna de una vieja idea.

Un conjunto de navegadores web que renderizan de forma independiente pantallas gráficas a través de un marcado de marcado integrado controlado por un servidor web centralizado es arquitectónicamente equivalente a un sistema de terminal de pantalla 3270 controlado por un servidor CICS.

Si observamos las diferencias, vemos que los datos y las etiquetas enviados a los terminales 3270 para renderizar son mucho más compactos. La razón de esto es que era muy común que 8 o incluso 16 pantallas compartieran una sola línea de 9600 baudios. Una posición y etiqueta para el 3270 generalmente consta de solo 2 bytes o 3 si se trata de una pantalla a color. Del lado del servidor, CICS se escribió para maximizar el rendimiento y puede generar dinámicamente 3270 secuencias a partir de plantillas como páginas y datos extraídos de una base de datos. CICS está diseñado para funcionar con COBOL o PL / 1. El hardware del servidor contiene instrucciones especiales a nivel de máquina que admiten números decimales empaquetados.

El HTML en el caso moderno está optimizado de manera diferente para mejorar la experiencia del usuario con imágenes y secuencias de comandos incrustadas que admiten una amplia variedad de navegadores. Para ahorrar en el ancho de banda de la red, el servidor puede comprimir el flujo de datos HTML y el navegador puede descomprimirlo, lo que es posible con un potente CPUS en ambos extremos. Otra demanda moderna de CPUS es el cifrado que no era posible con 3270.

El ejemplo anterior señala cuáles son las diferencias típicas. Por supuesto, hay muchas cosas que los programadores de hoy podrían aprender de las viejas técnicas para aplastar la aplicación en un sistema de recursos limitados, pero los programadores de hoy tienen un paradigma de programación eficiente para usar si saben cómo usarlo y eso es un gran si.

Varios factores:
1. El software tiene mucha más funcionalidad que en los años 80 (no había PC en los 70, el hardware de la PC se lanzó por primera vez en 1982, Windows se lanzó por primera vez en 1985, no se adoptó ampliamente hasta Win 3 en 1990). Pero tiene razón: se ha agregado muy poca funcionalidad que vale la pena tener desde Win 98 !. Y no se ha agregado nada de valor desde XP: toda la nueva función no es útil.
2. El software se vuelve “más gordo” en cada versión – más código para realizar la misma función – se agregan ajustes y bling y “eye candy”
3. Hoy en día, mucho software instala todo tipo de cr * pware y lo lanza al inicio (ayudas de inicio rápido, actualizadores, barras de herramientas, bla, bla). Este material tiene un valor cercano a cero pero llena el hardware.

Esa amabilidad adicional (bonita pantalla, sombreado, características adicionales, diferentes necesidades de hardware) cuesta todos los recursos. Ponga una versión de los 80 de un procesador de textos (Office 98 cualquiera) y tendrá un programa increíblemente rápido. Agregue muchas características (Office 2002) y tendrá una respuesta más lenta. Ahora ve a la última versión de Office y …

La función Cortar y pegar es un buen ejemplo interno. En las primeras versiones de Office, hizo exactamente eso: cortar / copiar texto y luego pegarlo. En versiones posteriores, también copió todas las características subyacentes vinculadas al texto. Esto tomó muchos recursos adicionales (no vistos por el usuario).

Los navegadores de Internet están en un estado similar. Deben tener más funciones para mantenerse al día con la expansión de páginas y sitios web. A principios de los 90, era un marcado de texto complejo. Hoy en día, es eso, además de anuncios de video en abundancia, páginas emergentes, etc. ¡Una computadora portátil de alta gama de hace 10 años prácticamente ya no puede funcionar en Internet viendo sitios web promedio sin atragantarse! (Sé que todavía tengo uno como reserva).

Hace que los fabricantes ganen dinero cuando tiran su PC vieja y compran una nueva (ya sea justificada o no).

More Interesting

¿Cuánto costará hacer una aplicación de mensajería de Android en India?

¿Podría haber una aplicación de objetos perdidos universalmente adoptada?

¿Es posible crear un programa informático de clasificación simple mediante la lógica de evolución de Darwin? ¿Si es así, cómo?

Aplicación IIM PGP: consulta relacionada con la experiencia laboral Hipotéticamente, obtengo una excelente puntuación CAT y estoy preseleccionado para la entrevista IIM - A, B, C. ¿Dilema para justificar mi perfil (instituto de inicio de perfil de trabajo no informático / menos conocido pero mejor conocido)?

¿Cuáles son los principales actores involucrados en el desarrollo de software de registro de pacientes?

¿Cuál es una buena aplicación de reemplazo de mensajes de texto / SMS para Android?

¿Cuál es la diferencia entre acepto y acepto al instalar el software?

¿Cuáles son algunas funciones de fórmula de Excel poco conocidas?

¿Por qué no se pueden extraer configuraciones de software como APK de aplicaciones instaladas?

¿Por qué Google Chrome muestra marcas cruzadas y rojas en https para algunos sitios web?

¿Qué tipo de programa de estudios, videos de conferencias, guías en línea, libros electrónicos, libros de algoritmos, etc. se recomienda para la programación de autoaprendizaje?

¿Cuántos programas de software (estándar) hay en todo el mundo?

He agregado algunas carpetas compartidas en mi máquina virtual Ubuntu en Windows 8 como host. ¿Cómo puedo acceder a las carpetas compartidas en Ubuntu?

¿Cuáles son algunas de las mejores aplicaciones sin publicidad?

¿Podré crear una aplicación usando PyCharm?