Wednesday, February 23, 2011

Palabras que no existen

Por favor, dejen de usar estas palabras:
  • "accesar": Mala traducción del inglés access. La palabra es acceder.
  • "aperturar": Pseudoderivación de apertura. La palabra es abrir.
  • "recepcionar": otra pseudoderivación, esta vez de recepción. La palabra es recibir.
También está el problema de palabras que se usan en lugar de otras:
  • "visualizar" no es una forma 'elegante' de decir "ver". No es correcto decir "Abro el programa; pero no puedo visualizar mi data", tampoco "entonces el sistema te visualiza las opciones". Visualizar en realidad significa "crear una visualización", que es una representación visual de un concepto no visual. Por ejemplo, crear un gráfico estadístico. Ojo, no es el acto de mostrarlo, sino de crearlo.
  • "descargar" es una mala traducción del inglés download, que no significa 'retirar una carga' (eso sería unload), sino 'mover una carga a un nivel mas bajo', en contraparte a upload. Un término más apropiado es "bajar".
  • "Fuente" por "tipografía". En inglés, el término font se ha usado desde la invención del tipo móvil y viene del francés fondue y fonte, que significa 'algo que ha sido fundido', por el proceso de fundición de tipos metálicos para la prensa. No tiene nada que ver con el uso de font por algunos tipo de fuente de agua, como derivación de 'fountain'.
Estas son las que se me ocurren de momento; seguro voy a ir agregando mas...

Friday, January 21, 2011

"extends" or "extended" ??

I've just read a post on the Django-users mailing list. It was a simple mistake, and quickly corrected by other participants of the list; but it made me think a bit about semantics...

The point was about Django template inheritance: as most OOP languages, Django lets you define a 'base' template and then another 'derived' template that 'extends' the base one. The user in question then used the base template and expected it to contain the 'derived' parts. As everybody pointed, he should have called the 'derived' template instead. Again, just like on OOP languages, where you instantiate the derived classes, and they inherit behavior from its base class(es).

But this kind of mistake seems to be a common one among those first approaching template inheritance. Why is this so? My guess: because 'extends' is a transitive verb.

Lets say I have a chair, and everybody around here knows what a chair is and how it looks. Then I come with some tools and "extend the chair" maybe add some armrests. What do I have now? the same chair, with armrests. If somebody else asks for "the chair", he'll get the 'extended' chair.

But that's not how OOP inheritance works: a class that 'extends' another doesn't make any change to the base one. It's a new class with inherited behavior. That's old news to any programmer.

Don't you think that the 'extends' keyword in Django templates and Java class declarations is a little misleading? I understand that it means "I'm just like that, but extended"; but how come it uses 'extends'? To me, it sounds like some pompous marketing: "this newfangled gizmo copies and extends the old system"