Llegamos a ustedes gracias a:



Reportajes y análisis

Once tendencias de programación a tener en cuenta

[09/01/2012] Dependiendo del punto de vista, el mundo de la programación se desarrolla demasiado rápido o demasiado lento. Pero si está explotando Cobol o hacheando Node.js, un hecho es claro: Los programadores deben mantener un ojo sobre las últimas tendencias de programación, para seguir siendo competitivos en el siempre cambiante mercado laboral.
Desde JavaScript por todas partes y para todo en la JVM, los tiempos y las herramientas están cambiando. Al igual que la forma de trabajar de los programadores, gracias a la subida de los marcos y espacios protegidos, así como un cambio de la apertura. Las preocupaciones en torno al ancho de banda, la energía y la escalabilidad están encontrando un lugar en la tabla de programación, como el paralelismo y la tarjeta de video. Hay tantas cosas sucediendo que puede que se encuentre pensando en volver a la escuela, si solo la educación tradicional no estuviera perdiendo relevancia.
Cada cierto tiempo, nuestra comprensión de las formas y medios de la programación tiene que ser renovada o sustituida, al igual que un sistema operativo o una biblioteca. Aquí le ofrecemos un vistazo a once tendencias recientes que reflejen la forma en que está cambiando la programación.
1. La JVM ya no es solo para Java
Hace mucho tiempo, Sun creó Java y compartida la máquina virtual con el mundo. En esa misma época, Microsoft creaba C#, la gente reconocía que la máquina virtual no tenía por qué limitarse a un solo idioma. Cualquier cosa que pudiera ser transformada en el código de bytes podría utilizarlo.
Ahora, parece que todo el mundo está construyendo su lenguaje para hacer precisamente eso. Deje la tarea de construir una máquina virtual de Sun/Oracle, y concentre sus esfuerzos en las campañas sintácticas y en los silbatos estructurales, reza el mantra de hoy.
Como resultado, la lista de lenguajes dependientes de JVM es larga y sigue creciendo. A los amantes de Rubyy les encanta lo bien que funciona JRubyy bajo cargas pesadas. Scala y Clouture permiten que los desarrolladores escriban código que sea más funcional y, a menudo más rápido que Java cuando se ejecuta en la misma JVM.
Incluso las cabezas de Java gustan de utilizar la JVM sin necesidad de escribir Java. Tome el lenguaje de scripting Groovy, que está totalmente integrado con la máquina virtual Java y el API de Java. Escriba taquigrafía Groovy, y si también adopta Grails, puede disfrutar de carriles de codificación por convención. ¿Necesita vincular las bibliotecas de Java? Voilà. Está diseñado para trabajar de forma integrada, dándole todo el poder y la estabilidad de Java sin las llaves.
2. JavaScript ya no es solo para JavaScript
La JVM no es la única solución multiplataforma abierta a todos. JavaScript, el lenguaje que su hermana menor utiliza para agregar un cuadro de alerta al sitio web de su banda, ya no es solo para programadores de JavaScript. La lista de idiomas que una compilación cruzada puede ejecutar, en los motores de JavaScript, es aún más larga que la lista que se ejecuta en la JVM.
Tome Google Web Toolkit. Escribe el código Java como si estuviera escribiendo para el marco Swing de los años 90, y el compilador de GWT lo convierte en JavaScript que se ejecuta en un navegador en un escritorio, un smartphone o una tablet. No hay necesidad de un applet de Java, plug-in o JVM en el cliente, porque JavaScript en el navegador ofrece independencia de la máquina.
Uno de los recién llegados es CoffeeScript, un lenguaje abreviado que se compila a JavaScript mediante la inserción de todas las puntuaciones que los usuarios del lenguaje de script detestan escribir. La idea es tan popular que ya hay spin-offs de CoffeeScript como Coco, Parsec-Coffee-Script, y Contracts-Coffee-Script, con cada una de ellas añadiendo su propia estructura sofisticada de metaprogramación para que sea más fácil salirse del código elaborado.
Algunas extensiones son tan exitosas que han convertido casi en lenguas en sí mismas. Piense en todos los desarrolladores web explotando código viable con jQuery, sin recordar o saber nada del alcance de JavaScript.
Si eso no es suficiente, hay experimentos que unen casi cualquier lenguaje a JavaScript, como Ruby, Python, Lisp, Scheme, Haskell, y OCaml.
3. Ningún código es una isla
Un amigo me dijo una vez que se dirigía al bosque en el norte de Michigan, donde su padre y sus tíos construyeron una cabaña por sí mismos. Era suya y solo suya. Ellos transportaban la madera y la roca, y después podían sentarse y contemplar la puesta del sol con un profundo orgullo por sus logros.
Escribir un programa solía ser así. Pulse el botón de compilación, y después de que se agite, el código se haría cargo de su máquina. Claro, era la interacción con la capa del sistema operativo, pero era más fácil para que apunte a una cosa tangible que usted construyó, al igual que la cabaña. ¿Ve ese archivo con la extensión EXE? Yo construí eso, mamá.
Esa distinción está desapareciendo. Nuestro código está viviendo cada vez más en los ecosistemas. Muchos programadores de PHP, por ejemplo, crean plug-ins para WordPress, Drupal, Joomla, o algún otro marco. Su código es un módulo que trabaja con otros módulos.
A veces los fragmentos son aún más pequeños, solo los bits de código se dejan caer en los campos. Muchos módulos Drupal se puede personalizar con PHP, por ejemplo. El programador solo llena los formularios con fragmentos de código, en vez de construir algo nuevo que está solo.
Cuando estos mecanismos trabajan, los resultados pueden ser edificantes. La mayoría de veces, los resultados son mixtos. Mientras que sus fragmentos pueden trabajar bien con lo que hay debajo del capó, a menudo necesitan mucha depuración. En muchos casos, los errores vienen desde el interior del sistema en donde no se supone que debe buscar. Y hay poca documentación, porque nadie esperaba que a usted se le permita interactuar con el sistema de esta manera.
En el peor de los ejemplos, los errores provienen de fragmentos de otra persona, y no hay forma de depurar los dos al mismo tiempo debido a que ellos poseen su código y usted el suyo propio. A menudo, la mejor solución es hablar por teléfono con en otro programador.
Estas herramientas a menudo trabajan para pequeñas extensiones y herramientas sencillas que han sido previstas por los autores del marco original. Todo lo demás es una invitación a acertar o dejar los ciclos de depuración. No hay sustituto para tener todo el código fuente disponible para ser leído y trazado con su propia pila, pero eso es cada vez menos común.
4. Plantaciones en todos lados
Hay un lado oscuro en todas estas pilas totalmente integradas de código: el jardín amurallado.
La Internet comenzó con la premisa de que no habría guardianes. Cada paquete se entrega a su destino, con nuestros datos libres para pasear. ¡Ay, esa promesa se está erosionando, y no porque los ISP utilicen cada vez más tráfico o tecnologías de inspección de paquetes.
En estos días, todo el mundo parece estar en retirada hacia los jardines amurallados, donde todo es más sencillo y seguro. Si quiere desarrollar para el iPhone, tendrá que escribir código para las especificaciones vagas de Apple, entonces Apple -y solo Apple- decidirá si se ejecuta en sus máquinas. No depende de usted, el programador, y tampoco importa lo que digan los usuarios.
No se trata solo de Apple. La creación de juegos para Facebook significa obtener el permiso de Facebook para conectarse a los usuarios de Facebook. No importa cuánta gente haga clic en el botón Me gusta, si Facebook decide bloquear su código. Microsoft, de pronto la más abierta y menos restrictiva de las grandes empresas, posiblemente esté mirando con asombro el éxito de estos jardines y preguntándose por qué el Departamento de Justicia trató a Internet Explorer de forma tan diferente. Solo un programador ingenuo piensa que las otras empresas no seguirán adelante.
Hay problemas más profundos con los jardines amurallados, más allá de la pérdida de control. Los proveedores de jardines amurallados podrían muy bien tener la mayor parte de los ingresos derivados del trabajo de los desarrolladores independientes. Los ingresos que alcancen a los programadores de la compañía serán suficientes para mantener parpadeando las luces del servidor Ethernet.
Estos jardines amurallados también amenazan con balcanizar al mundo de codificación en campos separados de acuerdo al idioma. Una mirada y podrá ver el movimiento de los tercos programadores individualistas en la frontera abierta de la mano de obra contratada. Bienvenido a la nueva plantación.
5. Se retira la apertura
Para todo el éxito del software de código abierto, la posibilidad de participar en los retoques se está desvaneciendo en muchos frentes. El éxito del iPhone tiene a todos buscando la manera de blindar los bienes comunes. Por supuesto, los nuevos sistemas computarizados de los automóviles se construyen con Linux, pero no tendrá que tipear "make", y e implementarlos en su carro.
Incluso si concedemos eso, sería espeluznante y peligroso reprogramar su sistema de frenos, ¿por qué no podemos hackear el sistema de navegación? Las compañías de automóviles están pregonando la forma en que sus sistemas informáticos de lujo se integren con su teléfono, pero no están abiertos de la forma en que lo está su escritorio. Casi nada es tan abierto como solía ser el escritorio. Incluso los sistemas de escritorio pueden ser más bloqueados, con algunos preguntándose si la nueva infraestructura segura para el arranque de Windows 8 imposibilitará la ejecución de sistemas operativos alternativos.
Esto hace que se obligue a limitar la innovación en el futuro. Después de que los hackers y programadores de garaje terminen de construir herramientas que pongan una sonrisa en sus caras, se dan la vuelta y crean empresas que hacen las mismas tareas para las personas promedio. Cercenar el experimento de código abierto en esta área destruye el mercado secundario. Y se hace más difícil que las empresas contraten los programadores que necesitan, porque los retoques de código abierto producen programadores expertos que pueden llenar sus vacantes.
Quedan brillantes excepciones, por lo general cuando el código es compartido entre los programadores. Algunos proyectos como Apache aún prosperan y atraen el tipo de apoyo financiero que necesitan para pagar a los mejores talentos. Github y Sourceforge continúan agregando más proyectos. Otros trabajan bien para los desarrolladores que experimentan con la punta de lanza. Pero hay pocos ejemplos de pura apertura teniendo éxito con el consumidor final, que parece atraído por el canto de sirena de los jardines propietarios.
6. El ancho de banda ya no es gratuito
Los programadores web han crecido creyendo que el ancho de banda es gratuito y que cada vez es más rápido. No hay necesidad de preocuparse por las descargas lentas -en un año, la conexión de todo el mundo se compactará, y el problema desaparecerá. Por desgracia, esos días han terminado, gracias a los ISP que cada vez agregan más tapas y medición de ancho de banda.
Independientemente de si ve esto como una necesidad para acabar con los cerdos del ancho de banda que destruyen la mancomunidad , o como una forma de tomar el poder por aquellos que poseen las tuberías y, por coincidencia, quieren vender canales de video pay-per-view, el consumo de ancho de banda es algo que debe preocupar a los consumidores.
Esto va a cambiar muchos de los trucos en torno a la nube, porque el tráfico entre sus máquinas de la casa y la nube será medido. ¿Las estaciones de radio podrán transmitir todos los bits que oímos y aun así ganar dinero suficiente con la publicidad? ¿Las copias de seguridad en línea serán viables?
Optimizar el consumo de ancho de banda en el diseño de aplicaciones se está convirtiendo en un imperativo. Minimizar los archivos JavaScript y CSS no es solo por la velocidad, sino que también ahorra ancho de banda. Si los programadores no tienen en cuenta esta tendencia, los usuarios de su código pueden ser expulsados por las cargas de mayor ancho de banda en un futuro próximo.
7. La energía ya no es gratuita
El costo de mantener una computadora conectada nunca ha sido un problema. Nunca importó la cantidad de energía que ha consumido su rack de servidores. Ya no -el consumo de energía es un gran problema, ya sea que programe para los teléfonos inteligentes o la granja de servidores. La mayor limitación de mi teléfono Android es que su batería se puede acabar en ocho horas sin hacer nada. Diseñe una aplicación que se coma la batería más rápido que las características de GPS, y vea que las descargas de su aplicación caen en picada.
El problema es menos conocido por los programadores del servidor, que siempre tomaban la energía por sentada. Usted se preocupa por la velocidad pero pocas veces por el costo de la energía para completar una transacción de base de datos. Google es una de las compañías que enfrenta esta situación, invirtiendo en la búsqueda de electricidad de menor costo para hacer búsquedas exhaustivas. Es probable que la empresa ya esté decidiendo cómo afinar una búsqueda basada en los costos de energía y la cantidad de ingresos por publicidad que esa búsqueda generará.
La computación en nube está ayudando a hacer este tema más obvio. Algunas de las nubes más sofisticados -como Google App Engine o Amazon S3- no cobran por la contraseña de rack o de root. Sino cobran en base al compromiso y consultas a la base de datos. Si bien este es un nuevo reto para la mayoría de los programadores, está haciendo que el costo de la energía sea más transparente. Prepárese para comenzar a pensar en el costo de cada subrutina en dólares, no en líneas de código o milisegundos de tiempo de ejecución.
8. La educación tradicional se desvanece de la relevancia
Pregúntele a cualquier gerente de proyecto y le dirán que no hay suficiente talento de primer nivel en los departamentos de ciencias de la computación. Pueden ir tan lejos como para decir que serían capaces de contratar a un nuevo CS de una escuela superior sin necesidad de leer el currículum. Pero pregúntele al mismo desesperado gerente de proyecto sobre un programador de mediana edad con un grado de la misma escuela, y van a dudar y empezarán a murmurar acerca de volver a hablar del tema más tarde.
De hecho, no es raro encontrar grandes empresas de tecnología que se quejan ante el Congreso de que no pueden encontrar estadounidenses capaces de programar, al mismo tiempo que se defienden de demandas por discriminación hechas por programadores mayores con hojas de vida impecables y grados de las mejores universidades.
Algo de esto puede sugerir que la educación ya no tiene el mismo valor que solía tener. Los trabajadores mayores con títulos que solían ser valiosos opinan que las empresas solo quieren a los jóvenes, que trabajarán muchas horas. Eso deja la duda de que si se trata de la edad y las menores expectativas implícitas de pago, en vez del conocimiento, lo que hace que los universitarios recién graduados sean tan deseables.
Otros simplemente están yendo más allá de estas cuestiones, buscando en lugar de explotar lo que consideran una distorsión del mercado causada por nuestra infatuación con el diploma de cuatro años. Los capitalistas de riesgo están pagando a los mejores talentos para que se salten sus años de estudiante. Otros están reclutando activamente a personas con títulos extraños y llevándolos a un campo de entrenamiento donde se les enseña habilidades prácticas, en vez del análisis teórico de los cursos universitarios.
El rechazo más destacado por la educación universitaria tradicional es el programa dirigido por Peter Thiel, fundador de PayPal. Él recluta programadores de alto nivel que acaban de salir de la secundaria y les paga para que no vayan a la universidad. Los niños consiguen un trabajo y él obtiene talento joven y maleable.
Otros están buscando a los que pagan asombrosas cantidades en la matrícula y les sugieren que la educación más corta y más centrada tiene sentido económico. Pagar un título universitario de una universidad de alto vuelo puede consumir fácilmente 1.500 dólares por mes (250 mil dólares en el 6,8%). Los cursos en línea y la capacitación de hecha por los propios vendedores puede ser dramáticamente más barata.
Un artículo de Fast Company hizo la pregunta, "¿Por qué contratar a un doctor cuando un niño autodidacta es tan bueno?", a continuación, responde a la pregunta mediante la descripción de los programas de prácticas que las empresas pueden utilizar para contratar a personas con talento, pero sin título.
9. La precisión se desvanece mientras que la escalabilidad triunfa
Hace años, ACID gobernó el gallinero de la base de datos. El desafío era construir una máquina a prueba de balas, que siempre de una respuesta correcta y consistente cuando se le pida. Los huracanes, las armas nucleares, y los porteros errantes desconectaron el bastidor que no podía deshacer la base de datos. Los grandes clientes fueron los bancos, hoteles y líneas aéreas, y que querían asegurarse que las cuentas de los bancos y las reservas eran consistentes y correctas.
Hoy en día, la industria está tratando de encontrar una forma sencilla de almacenar material efímero de nuestras vidas. De los lugares que visitamos a los comentarios a distancia entre amigos, el objetivo es encontrar una manera rápida y eficiente de almacenar un sinfín de curiosidades de todas las personas que están en la tierra.
Las personas más inteligentes que abordaron este problema se dieron cuenta, rápidamente, que podían hacer que su trabajo sea considerablemente más fácil al tomar atajos e ignorando alegremente cualquier problema técnico. Si alguna actualización de estado desaparecía, ¿quién lo iba a notar? Si alguien se registró en un servicio, mientras estaba en una cafetería y algo falló, no era gran problema, ya que probablemente volvería de nuevo mañana. Después de que los nuevos cuidadores de datos reconocieron que podrían ahorrar una fortuna en los ciclos de cálculo e infraestructura, simplemente aflojando los requisitos, se inició la construcción de NoSQL y otros -así llamados- almacenes de datos.
Ahora, el ahorro de tiempo y dinero prescindiendo de la exactitud es una regla en la web. Intente buscar un viejo mensaje de correo electrónico más con algunas de las herramientas basadas en web. Silenciosamente, están sacando algunos de los más viejos fuera del índice. A menudo, esto refleja una lenta erosión de las normas para la búsqueda. Google, por ejemplo, silenciosamente puso fin a la posibilidad de utilizar ciertas búsquedas con el signo más. Esperamos ver más y más ingenieros web eliminando sutilmente el fanático compromiso con la exactitud que es común entre los administradores de bases de datos.
10. El paralelismo real comienza a ser práctico para todos
Los arquitectos de computadoras han estado hablando acerca de máquinas con verdaderas arquitecturas paralelas durante años, pero los programadores en las trincheras están empezando a obtener las herramientas para hacerlo posible.
El paralelismo está apareciendo en dos áreas importantes: las bases de datos multinodo y puestos de trabajo Hadoop. Una mezcla de los dos.
La mayoría de los almacenes de datos NoSQL ofrecen ayudar a repartir el trabajo sobre varias máquinas. Algunos ofrecen una distribución automática, que divide el conjunto de datos en pedazos, sincroniza las máquinas que alojan una pieza determinada, y dirige las consultas a las máquinas adecuadas de acuerdo a como sea necesario. Algunos ofrecen la duplicación o copia de seguridad, una característica que es un poco vieja, y algunos hacen ambas cosas.
Hadoop es un marco de código abierto, que coordinará una serie de máquinas trabajando en un problema y recopilará su trabajo en una sola respuesta. El proyecto imita algunos de los marcos Map/Reduce desarrollados por Google para ayudar a sincronizar los esfuerzos de rastreo web, pero el proyecto ha crecido mucho más allá de estas raíces.
Herramientas como ésta hacen que sea más fácil que nunca atender a más de una máquina con un problema. La infraestructura ya está lo suficientemente sólida que los arquitectos de la empresa pueden confiar en implementar bastidores de las máquinas con un poco de trabajo manual.
11. Las GPU triunfan sobre las CPU
¿Fue solo hace unos años que los fabricantes de CPU crearon las fichas que trajeron la mayor cantidad de dinero? Esos días están desapareciendo rápidamente ahora que los procesadores gráficos son dignos de lujuria. Es fácil encontrar niños que se gastarán 300 dólares en su computadora y todo el sistema operativo, y 600 dólares en una nueva tarjeta de video para hacerla gritar realmente.
Los gamers no están solos en su obsesión con las tarjetas de video. Los científicos que necesitan gran potencia de cálculo están reprogramando GPU para analizar el plegamiento de proteínas o adivinar los secretos de las partículas más pequeñas. Nvidia da conferencias para nongamers que utilizan los dispositivos, y están vendiendo las tarjetas de video a los científicos que quieren construir supercomputadoras. National Laboratory de Oak Ridge, por ejemplo, planea poner 18 mil Tesla GPU de Nvidia, en una habitación para poder llamarla  como la supercomputadora más rápida. Probablemente van a construir modelos elaborados para el Departamento de Energía, no para presumir de la velocidad de los fotogramas que reciben, mientras juegan Doom.
Peter Wayner, InfoWorld (EE.UU.)