stringtranslate.com

Notación húngara

La notación húngara es una convención de nombres de identificadores en programación informática en la que el nombre de una variable o función indica su intención o tipo, o en algunos dialectos, su tipo . La notación húngara original usa solo intención o tipo en su convención de nombres y a veces se la llama húngaro de aplicaciones , ya que se hizo popular en la división Microsoft Apps en el desarrollo de aplicaciones de Microsoft Office . Cuando la división Microsoft Windows adoptó la convención de nombres, la basaron en el tipo de datos real, y esta convención se difundió ampliamente a través de la API de Windows ; esto a veces se llama notación húngara de sistemas .

Simonyi : ...BCPL [tenía] un solo tipo que era una palabra de 16 bits... pero eso no importa.

Booch : A menos que continúes con la notación húngara.

Simonyi : Por supuesto... luego pasamos a los lenguajes tipificados... pero... nos fijamos en un nombre y te contaré mucho sobre él... [1]

La notación húngara fue diseñada para ser independiente del lenguaje y encontró su primer uso importante en el lenguaje de programación BCPL . Debido a que BCPL no tiene otros tipos de datos que la palabra de máquina , nada en el lenguaje en sí ayuda a un programador a recordar los tipos de variables. La notación húngara tiene como objetivo remediar esto al proporcionar al programador un conocimiento explícito del tipo de datos de cada variable.

En la notación húngara, el nombre de una variable comienza con un grupo de letras minúsculas que son mnemotécnicas para el tipo o propósito de esa variable, seguido por el nombre que el programador haya elegido; esta última parte a veces se distingue como el nombre de pila . El primer carácter del nombre de pila se puede escribir en mayúscula para separarlo de los indicadores de tipo (consulte también CamelCase ). De lo contrario, el uso de mayúsculas y minúsculas de este carácter denota el alcance.

Historia

La notación húngara original fue inventada por Charles Simonyi , un programador que trabajó en Xerox PARC entre 1972 y 1981, y que más tarde se convirtió en arquitecto jefe de Microsoft . El nombre de la notación es una referencia a la nación de origen de Simonyi y también, según Andy Hertzfeld , porque hacía que los programas "parecieran escritos en algún idioma extranjero inescrutable". [2] Los nombres de los húngaros están "invertidos" en comparación con la mayoría de los otros nombres europeos; el apellido precede al nombre de pila . Por ejemplo, el nombre anglicanizado "Charles Simonyi" en húngaro era originalmente "Simonyi Károly". De la misma manera, el nombre del tipo precede al "nombre de pila" en la notación húngara. El estilo de denominación similar de "último tipo" de Smalltalk (por ejemplo, aPoint y lastPoint) era común en Xerox PARC durante el mandato de Simonyi allí. [ cita requerida ]

El artículo de Simonyi sobre la notación se refería a los prefijos utilizados para indicar el "tipo" de información que se almacenaba. [3] [4] Su propuesta se centraba principalmente en decorar los nombres de los identificadores basándose en la información semántica de lo que almacenan (en otras palabras, el propósito de la variable ). La notación de Simonyi pasó a llamarse húngaro de aplicaciones, ya que la convención se utilizó en la división de aplicaciones de Microsoft. El húngaro de sistemas se desarrolló más tarde en el equipo de desarrollo de Microsoft Windows . El húngaro de aplicaciones no es completamente distinto de lo que se conoció como húngaro de sistemas, ya que algunos de los prefijos sugeridos por Simonyi contienen poca o ninguna información semántica (consulte los ejemplos a continuación). [4]

Sistemas húngaros vs. Aplicaciones húngaras

Donde la notación de sistemas y la notación de aplicaciones difieren es en el propósito de los prefijos.

En la notación húngara de sistemas, el prefijo codifica el tipo de datos real de la variable. Por ejemplo:

La notación húngara intenta codificar el tipo de datos lógicos en lugar del tipo de datos físicos; de esta manera, da una pista sobre cuál es el propósito de la variable o qué representa.

La mayoría de los prefijos que sugirió Simonyi, aunque no todos, son de naturaleza semántica. Para los ojos modernos, algunos prefijos parecen representar tipos de datos físicos, como szcadenas. Sin embargo, esos prefijos seguían siendo semánticos, ya que Simonyi pretendía que la notación húngara fuera para idiomas cuyos sistemas de tipos no podían distinguir algunos tipos de datos que los idiomas modernos dan por sentados.

Los siguientes son ejemplos del artículo original: [3]

Si bien la notación siempre utiliza letras minúsculas iniciales como mnemotecnia, no prescribe las mnemotecnias en sí. Existen varias convenciones ampliamente utilizadas (ver ejemplos a continuación), pero se puede utilizar cualquier conjunto de letras, siempre que sean coherentes dentro de un cuerpo de código determinado.

Es posible que el código que utiliza la notación húngara de aplicaciones a veces contenga húngaro de sistemas al describir variables que se definen únicamente en términos de su tipo.

Relación con los sigilos

En algunos lenguajes de programación, una notación similar llamada sigilos está incorporada al lenguaje y es aplicada por el compilador. Por ejemplo, en algunas formas de BASIC , name$nombra una cadena y count%nombra un entero . La principal diferencia entre la notación húngara y los sigilos es que los sigilos declaran el tipo de la variable en el lenguaje, mientras que la notación húngara es puramente un esquema de nombres sin efecto en la interpretación de la máquina del texto del programa.

Ejemplos

Los mnemónicos para punteros y matrices , que no son tipos de datos reales, suelen ir seguidos del tipo del elemento de datos en sí:

Aunque la notación húngara se puede aplicar a cualquier lenguaje y entorno de programación, Microsoft la adoptó ampliamente para su uso con el lenguaje C, en particular para Microsoft Windows , y su uso sigue estando limitado en gran medida a esa área. En particular, el uso de la notación húngara fue ampliamente difundido por Charles Petzold en "Programming Windows" , el libro original (y para muchos lectores, el definitivo) sobre programación de API de Windows . Por lo tanto, muchas construcciones de notación húngara que se ven comúnmente son específicas de Windows:

La notación a veces se extiende en C++ para incluir el alcance de una variable, opcionalmente separada por un guión bajo. [5] [6] Esta extensión también se usa a menudo sin la especificación de tipo húngara:

En el código JavaScript que utiliza jQuery , $a menudo se utiliza un prefijo para indicar que una variable contiene un objeto jQuery (en lugar de un objeto DOM simple o algún otro valor). [7]

Ventajas

(Algunas de estas opciones se aplican únicamente a los sistemas húngaros).

Los partidarios argumentan que los beneficios de la notación húngara incluyen: [3]

Desventajas

La mayoría de los argumentos en contra de la notación húngara se refieren a la notación húngara de sistemas , no a la notación húngara de aplicaciones [ cita requerida ] . Algunos problemas potenciales son:

Opiniones notables

Véase también

Referencias

  1. ^ "Historia oral de Charles Simonyi" (PDF) . Archive.computerhistory.org\accessdate=5 20 de agosto de 2018 . Archivado (PDF) desde el original el 10 de septiembre de 2015.
  2. ^ Rosenberg, Scott (1 de enero de 2007). "Todo lo que tú puedas hacer, yo lo puedo hacer". MIT Technology Review . Consultado el 21 de julio de 2022 .
  3. ^ abc Charles Simonyi (noviembre de 1999). "Notación húngara". Biblioteca MSDN . Microsoft Corp.
  4. ^ abc Spolsky, Joel (11 de mayo de 2005). "Cómo hacer que un código erróneo parezca erróneo". Joel on Software . Consultado el 13 de diciembre de 2005 .
  5. ^ "Mozilla Coding Style". Developer.mozilla.org . Archivado desde el original el 2 de diciembre de 2019. Consultado el 17 de marzo de 2015 .
  6. ^ "Directrices de estilo de codificación de Webkit". Webkit.org . Consultado el 17 de marzo de 2015 .
  7. ^ "¿Por qué una variable de JavaScript comienza con un signo de dólar?". Stack Overflow . Consultado el 12 de febrero de 2016 .
  8. ^ Jones, Derek M. (2009). El nuevo estándar C: un comentario cultural y económico (PDF) . Addison-Wesley. pág. 727. ISBN 978-0-201-70917-9. Archivado (PDF) del original el 1 de mayo de 2011.
  9. ^ "Cree una aplicación para cualquier tarea: FileMaker, una subsidiaria de Apple". Filemaker.com . Consultado el 5 de agosto de 2018 .
  10. ^ Martin, Robert Cecil (2008). Clean Code: A Handbook of Agile Software Craftsmanship [Código limpio: un manual de desarrollo ágil de software] . Redmond, WA: Prentice Hall PTR. ISBN 978-0-13-235088-4.
  11. ^ "Estilo de codificación del kernel de Linux". Documentación del kernel de Linux . Consultado el 9 de marzo de 2018 .
  12. ^ McConnell, Steve (2004). Código completo (2.ª edición). Redmond, WA: Microsoft Press . ISBN 0-7356-1967-0.
  13. ^ Stroustrup, Bjarne (2007). "Preguntas frecuentes sobre técnicas y estilos de C++ de Bjarne Stroustrup" . Consultado el 15 de febrero de 2015 .
  14. ^ "Directrices de diseño para el desarrollo de bibliotecas de clases: convenciones generales de nomenclatura" . Consultado el 3 de enero de 2008 .

Enlaces externos