stringtranslate.com

Notación húngara

La notación húngara es una convención de nomenclatura 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 utiliza sólo intención o tipo en su convención de nomenclatura y, a veces, se denomina Apps húngaras, ya que se hizo popular en la división Microsoft Apps en el desarrollo de aplicaciones de Microsoft Office . Cuando la división de Microsoft Windows adoptó la convención de nomenclatura, la basó en el tipo de datos real, y esta convención se difundió ampliamente a través de la API de Windows ; A esto a veces se le llama notación húngara de sistemas .

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

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

Simonyi : Por supuesto... también pasamos a los idiomas mecanografiados más tarde... Pero... mirábamos un nombre y les contaba exactamente mucho sobre eso... [1]

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

En notación húngara, el nombre de una variable comienza con un grupo de letras minúsculas que son mnemónicos para el tipo o propósito de esa variable, seguidas del nombre que haya elegido el programador; 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 (ver también CamelCase ). De lo contrario, el caso de este carácter denota 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 demás nombres europeos; el apellido precede al nombre de pila . Por ejemplo, el nombre inglés "Charles Simonyi" en húngaro era originalmente "Simonyi Károly". De la misma manera, el nombre del tipo precede al "nombre de pila" en notación húngara. El estilo similar de denominación de "tipo último" de Smalltalk (por ejemplo, aPoint y lastPoint) era común en Xerox PARC durante el mandato de Simonyi allí. [ cita necesaria ]

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 almacena. [3] [4] Su propuesta se refería en gran medida a 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 denominarse Aplicaciones húngaras, ya que la convención se utilizaba en la división de aplicaciones de Microsoft. Los sistemas húngaros se desarrollaron posteriormente en el equipo de desarrollo de Microsoft Windows . Apps Húngaro no es completamente distinto de lo que se conoció como Sistemas Húngaro, ya que algunos de los prefijos sugeridos por Simonyi contienen poca o ninguna información semántica (ver ejemplos a continuación). [4]

Sistemas húngaros versus aplicaciones húngaras

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

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

La notación húngara de las aplicaciones se esfuerza por codificar el tipo de datos lógico en lugar del tipo de datos físico; 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 sugeridos por Simonyi, aunque no todos, son de naturaleza semántica. A los ojos modernos, algunos prefijos parecen representar tipos de datos físicos, como szcadenas. Sin embargo, tales prefijos todavía eran semánticos, ya que Simonyi pretendía la notación húngara para idiomas cuyos sistemas de tipos no podían distinguir algunos tipos de datos que los idiomas modernos dan por sentado.

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

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

Es posible que el código que utiliza la notación húngara de aplicaciones contenga a veces sistemas húngaros 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 ahora llamada sigilos está integrada en el lenguaje y el compilador la aplica. Por ejemplo, en algunas formas de BASIC , name$nombra una cadena y count%nombra un número entero . La principal diferencia entre la notación húngara y los sigilos es que los sigilos declaran el tipo de variable en el idioma, mientras que la notación húngara es puramente un esquema de nombres sin efecto en la interpretación automática 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í:

Si bien 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 evangelizado por "Programming Windows" de Charles Petzold , el libro original (y para muchos lectores, el definitivo) sobre programación 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 utiliza a menudo sin la especificación de tipo húngara:

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

Ventajas

(Algunos de estos 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 están en contra de la notación húngara de Systems , no de la notación húngara de Apps . Algunos problemas potenciales son:

Opiniones notables

Ver también

Referencias

  1. ^ "Historia oral de Charles Simonyi" (PDF) . Archive.computerhistory.org\accessdate=5 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 puedas hacer, yo puedo hacerlo Meta". Revisión de tecnología del MIT . 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). "Hacer que el código incorrecto parezca incorrecto". Joel sobre el software . Consultado el 13 de diciembre de 2005 .
  5. ^ "Estilo de codificación de Mozilla". Desarrollador.mozilla.org . Archivado desde el original el 2 de diciembre de 2019 . Consultado el 17 de marzo de 2015 .
  6. ^ "Pautas de estilo de codificación de Webkit". Webkit.org . Consultado el 17 de marzo de 2015 .
  7. ^ "¿Por qué una variable de JavaScript comenzaría con un signo de dólar?". Desbordamiento de pila . 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. pag. 727.ISBN 978-0-201-70917-9. Archivado (PDF) desde el 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. ^ Martín, Robert Cecil (2008). Código limpio: un manual de artesanía de software ágil . Redmond, WA: PTR de Prentice Hall. ISBN 978-0-13-235088-4.
  11. ^ "Estilo de codificación del kernel de Linux". Documentación del núcleo de Linux . Consultado el 9 de marzo de 2018 .
  12. ^ McConnell, Steve (2004). Código completo (2ª ed.). 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. ^ "Pautas de diseño para el desarrollo de bibliotecas de clases: convenciones generales de nomenclatura" . Consultado el 3 de enero de 2008 .

enlaces externos