97 cosas que todo programador debería saber
Cita:
Aprende a decir "Hola, Mundo"
Autor: Thomas Guest
Paul Lee, nombre de usuario ‘leep’, comunmente conocido como Hoppy. tenía una reputación como el experto local en temas de programación. Necesitaba ayuda. Caminé hacia el escritorio de Hoppy y le pregunté, ¿podrías echar un vistazo al código por mí?
Seguro, dijo Hoppy, toma una silla. Tuve el cuidado de no derribar las latas vacias de soda apiladas en una pirámide detrás de él.
¿Qué código?
En una función en un archivo, le dije.
Echemos un vistazo a esta función. Hoppy alejó una copia de K&R y deslizó su teclado frente a mí.
¿Dónde está el IDE? Aparentemente Hoppy no tenía un IDE ejecutándose, sólo algún editor que yo no podía operar. Tomó de nuevo el teclado. Unos cuantos teclazos después y teníamos el archivo abierto – era un archivo algo grande – y estamos observando la función – era una función algo grande. El avanzó unas paginas hacia el bloque condicional que quería cuestionarle.
¿Qué haría realmente esta cláusula si x es negativo? Le pregunté. Sin duda es un error.
Había estado probando toda la mañana trantando de encontrar una manera de forzar que x fuera negativo, pero la gran función en un gran archivo era parte de un gran proyecto, y el ciclo de recompilar y volver a ejecutar mis experimentos me estaba venciendo. ¿No podría un experto como Hoppy simplemente decirme la respuesta?
Hoppy admitió que estaba seguro. Para mi sorpresa, no buscó en K&R. En vez de ello, copió el bloque de código en un nuevo buffer del editor, lo reindentó, lo envolvió en una función. Un poco más tarde codificó una función main y lo cicló, pidiendo al usuario valores de entrada, pasándolos a la función e imprimiendo el resultado. Guardó el buffer como un nuevo archivo, tryit.c. Todo esto lo podría haber hecho yo mismo, creo que quizás no tan rápido. Sin embargo, su siguiente paso fué maravillosamente simple y, para ese tiempo, un poco extraño para mi manera de trabajar
Código:
$ cc tryit.c && ./a.out
¡Mira! Su programa, concebido unos pocos minutos antes,ahora estaba en marcha y funcionando. Probamos unos cuantos valores y confirmó mis sospechas (¡por lo que había tenido razón sobre algo!) y entonces cotejó la sección correspondiente de K&R. Le agradecí a Hoppy y me fuí, una vez más, teniendo cuidado de no molestar su piramide de latas de soda.
De regreso a mi escritorio, cerré mi IDE. Me había hecho tan familar al trabajo con un gran proyecto con un gran producto que había empezado a pensar sobre qué debía estar haciendo. Una computadora de propósito general puede hacer pequeñas tareas también. Abrí un editor de texto y empecé a escribir.
Código:
#include <stdio.h>
int main()
{
printf("Hello, World\n");
return 0;
}
|
http://97cosas.com/programador/- Actúa con prudencia, por Seb Rose
- Adueñate (y Refactoriza) la compilación, por Steve Berczuk
- Antes de Refactorizar, por Rajith Attapattu
- Aplica los principios de la programación funcional, por Edward Garson
- Aprende a decir “Hola, Mundo”, por Thomas Guest
- Aprende a hacer estimaciones, por Giovanni Asproni
- Aprende un lenguaje extranjero, por Klaus Marquardt
- Aprendiendo continuamente, por Clint Shank
- Automatiza el estándar de codificación, por Filip van Laenen
- Averigua qué haría el usuario (tú no eres un usuario), por Giles Colborne
- La belleza está en la simplicidad, por Jørn Ølmheim
- El camino al mejor rendimiento está lleno de sucias bombas de código, por Kirk Pepperdine
- Codificando con la razón, por Yechiel Kimchi
- Codifica en el lenguaje del dominio, por Dan North
- Codificación Ubuntu para tus amigos, por Aslam Khan
- El código es diseño, por Ryan Brush
- Comenta sólo lo que el código no dice, por Kevlin Henney
- Un comentario acerca de los comentarios, por Cal Evans
- ¿Cómo usar un Gestor de Errores?, por Matt Doar
- Conoce bien más de dos lenguajes de programación, por Russel Winder
- Conoce cómo usar las herramientas de línea de comandos, por Carroll Robinson
- Conoce tu próximo Commit, por Dan Bergh Johnsson
- Conoce tu IDE, por Heinz Kabutz
- Conoce tus límites, por Greg Colvin
- La conveniencia no es una -bilidad, por Gregor Hohpe
- Cuando Programadores y Testers colaboran, por Janet Gregory
- Ten cuidado al compartir, por Udi Dahan
- Cumple tus ambiciones con Código Abierto, por Richard Monson-Haefel
- Los grandes datos interconectados pertenecen a una base de datos, por Diomidis Spinellis
- Deja que tu proyecto hable por sí mismo, por Daniel Lindner
- El diseño del código sí importa, por Steve Freeman
- Distingue excepciones de Negocio de las excepciones Técnicas, por Dan Bergh Johnsson
- Dos cabezas son a menudo mejores que una, por Adrian Wible
- Dos fallos pueden hacer un acierto (y es difícil de arreglar), por Allan Kelly
- Lenguajes Específicos del Dominio (DSL), por Michael Hunger
- El mito del Gurú, por Ryan Brush
- El Programador Profesional, por Uncle Bob
- El trabajo duro no paga, por Olve Maudal
- Encapsula Comportamiento, no sólo Estado, por Einar Landre
- Escoge tus herramientas con cuidado, por Giovanni Asproni
- Escribe código como si tuvieras que mantenerlo por el resto de tu vida, por Yuriy Zubarev
- Escribe pequeñas funciones usando ejemplos, por Keith Braithwaite
- Escribe las pruebas para las personas, por Gerard Meszaros
- Evita errores, por Giles Colborne
- Haz lo invisible más visible, por Jon Jagger
- Haz mucha práctica deliberada, por Jon Jagger
- Las herramientas Unix son tus amigas, por Diomidis Spinellis
- Implementa rápido y con frecuencia, por Steve Berczuk
- Inicia con un Sí, por Alex Miller
- Instalame, por Marcus Baker
- Haz las Interfaces fáciles de usar correctamente y difíciles de usar incorrectamente, por Scott Meyers
- La comunicación entre procesos afecta el tiempo de respuesta de la aplicación, por Randy Stafford
- Lee el código, por Karianne Berg
- Lee las humanidades, por Keith Braithwaite
- El linker no es un programa mágico, por Walter Bright
- La longevidad de las soluciones provisionales, por Klaus Marquardt
- Mantén limpia la compilación, por Johannes Brodwall
- Mejora el código quitándolo, por Pete Goodliffe
- Mensaje al futuro, por Linda Rising
- No sólo aprendas el lenguaje, entiende su cultura, por Anders Norås
- No claves tu programa en la posición vertical, por Verity Stob
- No confíes en el “Aquí sucede la magia”, por AlanGriffiths
- ¡No ignores ese error!, por Pete Goodliffe
- No seas lindo con tus datos de prueba, por Rod Begbie
- No te repitas, por Steve Smith
- No tengas miedo de romper cosas, por Mike Lewis
- ¡No toques ese código!, por Cal Evans
- Los números de punto flotante no son reales, por Chuck Allison
- Oportunidades perdidas del Poliformismo, por Kirk Pepperdine
- El paso de mensajes lleva a una mejor escalabilidad en sistemas paralelos, por Russel Winder
- Pensando en estados, por Niclas Nilsson
- Pon todo bajo Control de Versiones, por Diomidis Spinellis
- Da preferencia a tipos de Dominio Específico que los tipos primitivos, por Einar Landre
- Preocúpate por el código, por Pete Goodliffe
- El Principio de Responsabilidad Única, por Uncle Bob
- Programa en pareja y siente el flujo, por Gudny Hauknes, Ann Katrin Gagnat, y Kari Røssland
- Prueba el comportamiento requerido, no el comportamiento incidental, por Kevlin Henney
- Prueba precisa y concretamente, por Kevlin Henney
- Haz pruebas mientras duermes (y los fines de semana), por Rajith Attapattu
- Las pruebas son el rigor ingenieril del desarrollo de software, por Neal Ford
- Los registros detallados perturbarán tu sueño, por Johannes Brodwall
- La Regla Boy Scout, por Uncle Bob
- La regla de oro del diseño de API, por Michael Feathers
- Reinventa la rueda frecuentemente, por Jason P Sage
- Resiste la tentación del patrón Singleton, por Sam Saariste
- Retrocede y Automatiza, Automatiza, Automatiza, por Cay Horstmann
- Primero revisa tu código antes de buscar culpar a otros, por Allan Kelly
- Revisiones de código, por Mattias Karlsson
- La Simplicidad viene de la Reducción, por Paul W. Homer
- Sólo el código dice la verdad, por Peter Sommerlad
- Suelta el ratón y aléjate del teclado, por Cay Horstmann
- Noticias raras - Los testers son tus amigos, por Burk Hufnagel
- Toma ventaja de las herramientas de análisis de código, por Sarah Mount
- Tus clientes no quieren decir lo que dicen, por Nate Jackson
- Un binario, por Steve Freeman
- Usa el algoritmo y estructura de datos correcto, por JC van Winkel
- El WET dispersa los cuellos de botella en el rendimiento, por Kirk Pepperdine
|