stringtranslate.com

Símbolo (programación)

Un símbolo en programación de computadoras es un tipo de datos primitivo cuyas instancias tienen una forma legible por humanos. Los símbolos se pueden utilizar como identificadores . En algunos lenguajes de programación , se les llama átomos . [1] La unicidad se aplica manteniéndolos en una tabla de símbolos . El uso más común de los símbolos por parte de los programadores es realizar la reflexión del lenguaje (particularmente para devoluciones de llamada ), y el uso más común indirectamente es su uso para crear enlaces de objetos .

En la implementación más trivial , se denominan esencialmente números enteros ; por ejemplo, el tipo enumerado en lenguaje C.

Apoyo

Los siguientes lenguajes de programación proporcionan soporte en tiempo de ejecución para símbolos:

Julia

Los símbolos en Julia son cadenas internas que se utilizan para representar identificadores en el código Julia analizado ( AST ) y como nombres o etiquetas para identificar entidades (por ejemplo, como claves en un diccionario). [5]

Ceceo

Un símbolo en Lisp es único en un espacio de nombres (o paquete en Common Lisp ). Se puede comprobar la igualdad de los símbolos con la función EQ. Los programas Lisp pueden generar nuevos símbolos en tiempo de ejecución. Cuando Lisp lee datos que contienen símbolos textuales representados, se hace referencia a los símbolos existentes. Si se desconoce un símbolo, el lector Lisp crea un nuevo símbolo.

En Common Lisp, los símbolos tienen los siguientes atributos: un nombre, un valor, una función, una lista de propiedades y un paquete. [6]

En Common Lisp también es posible que un símbolo no esté incluido en un paquete. Estos símbolos se pueden imprimir, pero cuando se vuelven a leer, es necesario crear un nuevo símbolo. Como no está internado , el símbolo original no se puede recuperar de un paquete.

En Common Lisp, los símbolos pueden utilizar cualquier carácter, incluidos los espacios en blanco, como espacios y nuevas líneas. Si un símbolo contiene un carácter de espacio en blanco, debe escribirse como |este es un símbolo|. Los símbolos se pueden utilizar como identificadores para cualquier tipo de construcciones de programación con nombre: variables, funciones, macros, clases, tipos, etiquetas goto y más. Los símbolos se pueden internar en un paquete. [7] Los símbolos de palabras clave se autoevalúan, [8] y se almacenan en el paquete denominado KEYWORD.

Ejemplos

La siguiente es una representación externa simple de un símbolo Common Lisp :

esto es un simbolo

Los símbolos pueden contener espacios en blanco (y todos los demás caracteres):

|Este es un símbolo con espacios en blanco|

En Common Lisp, los símbolos con dos puntos iniciales en sus representaciones impresas son símbolos de palabras clave . Estos están incluidos en el paquete de palabras clave.

: símbolo de palabra clave

Una representación impresa de un símbolo puede incluir un nombre de paquete. Se escriben dos puntos entre el nombre del paquete y el nombre del símbolo.

nombre-paquete::nombre-símbolo

Los paquetes pueden exportar símbolos. Entonces solo se escriben dos puntos entre el nombre del paquete y el nombre del símbolo.

paquete: símbolo exportado

Los símbolos que no están incluidos en un paquete también se pueden crear y tener una notación:

#:símbolo no internado

Posdata

En PostScript , las referencias a nombres de objetos pueden ser literales o ejecutables , lo que influye en el comportamiento del intérprete cuando los encuentra. Los operadores cvxy cvlse pueden utilizar para convertir entre las dos formas. Cuando los nombres se construyen a partir de cadenas mediante el cvnoperador, el conjunto de caracteres permitidos no está restringido.

Prólogo

En Prolog , los símbolos (o átomos) son los principales tipos de datos primitivos, similares a los números. [9] La notación exacta puede diferir en diferentes dialectos de Prolog. Sin embargo, siempre es bastante sencillo (no se necesitan comillas ni caracteres iniciales especiales).

A diferencia de muchos otros lenguajes, es posible dar un significado a los símbolos creando algunos hechos y/o reglas de Prolog.

Ejemplos

El siguiente ejemplo demuestra dos hechos (que describen qué es padre ) y una regla (que describe el significado de hermano ). Estas tres frases utilizan símbolos (padre, zeus, hermes, perseo y hermano) y algunas variables abstractas (X, Y y Z). La relación materna se omite para mayor claridad.

padre ( zeus ,  hermes ). padre ( zeus ,  perseo ).hermano ( X ,  Y )  : -  padre ( Z ,  X ),  padre ( Z ,  Y ).

Rubí

En Ruby , los símbolos se pueden crear con forma literal o convirtiendo una cadena. [1] Se pueden utilizar como identificador o como cadena interna. [10] Dos símbolos con el mismo contenido siempre harán referencia al mismo objeto. [11] Se considera una mejor práctica utilizar símbolos como claves para una matriz asociativa en Ruby. [10] [12]

Ejemplos

El siguiente es un ejemplo simple de un símbolo literal en Ruby: [1]

mi_símbolo = :a mi_símbolo = :"un identificador"    

Las cadenas se pueden convertir en símbolos, y viceversa:

irb(main):001:0> my_symbol = "¡Hola mundo!" . interno => :"¡Hola mundo!" irb(main):002:0> my_symbol = "¡Hola mundo!" . to_sym => :"¡Hola mundo!" irb(principal):003:0> my_string = :hola . to_s => "hola"        

Los símbolos son objetos de la Symbolclase en Ruby: [13]

irb(principal):004:0> mi_símbolo = :hola_mundo => :hola_mundo irb(principal):005:0> mi_símbolo . longitud => 11 irb(principal):006:0> mi_símbolo . clase => Símbolo    

Los símbolos se usan comúnmente para enviar mensajes dinámicamente a (llamar a métodos en) objetos:

irb(principal):007:0> "aoboc" . dividir ( "o" ) => ["a", "b", "c"] irb(main):008:0> "aoboc" . enviar ( :split , "o" ) # mismo resultado => ["a", "b", "c"]  

Símbolos como claves de una matriz asociativa:

irb(principal):009:0> my_hash = { a : "manzana" , b : "plátano" } => {:a=>"manzana", :b=>"plátano"} irb(principal):010: 0> my_hash [ :a ] => "manzana" irb(principal):011:0> my_hash [ :b ] => "plátano"         

Charla

En Smalltalk , los símbolos se pueden crear con forma literal o convirtiendo una cadena. Se pueden utilizar como identificador o como cadena interna. Dos símbolos con el mismo contenido siempre harán referencia al mismo objeto. [14] En la mayoría de las implementaciones de Smalltalk, los selectores (nombres de métodos) se implementan como símbolos.

Ejemplos

El siguiente es un ejemplo simple de un símbolo literal en Smalltalk:

my_symbol  :=  # 'un identificador'  " Símbolo literal " my_symbol  :=  #a  " Técnicamente, este es un selector literal. En la mayoría de las implementaciones, "  " los selectores son símbolos, por lo que también es un símbolo literal "

Las cadenas se pueden convertir en símbolos, y viceversa:

my_symbol  :=  '¡Hola mundo!'  asSymbol  " => #'¡Hola mundo!' " my_string  :=  #hola:  asString  " => 'hola:' "

Los símbolos se ajustan al symbolprotocolo y su clase se llama Symbolen la mayoría de las implementaciones:

mi_símbolo  :=  #hola_mundo mi_símbolo  clase  " => Símbolo "

Los símbolos se usan comúnmente para enviar mensajes dinámicamente a (llamar a métodos en) objetos:

"igual que 'foo' en: 2 " 'foo'  realiza:  #at:  con:  2  " => $o "

Referencias

  1. ^ a b C Thomas, Dave ; Fowler, Chad; Cazar, Andy (2001). Programación Ruby, la guía pragmática para programadores; [incluye Ruby 1.8] (segunda, décima edición impresa). Raleigh, Carolina del Norte: la estantería pragmática. ISBN 978-0-9745140-5-5.
  2. ^ Símbolos en la página sobre estructuras de datos.
  3. ^ Palabras clave en la página sobre estructuras de datos
  4. ^ "Un recorrido por el lenguaje Dart | Símbolos". Lenguaje de programación de dardos . Consultado el 17 de enero de 2021 .
  5. ^ "Julia Core.Símbolo". Documentación de Julia . Consultado el 31 de mayo de 2022 .
  6. ^ "CLHS: SÍMBOLO de clase de sistema". www.lispworks.com .
  7. ^ "CLHS: PAQUETE de clase de sistema". www.lispworks.com .
  8. ^ Peter Norvig : Paradigmas de la programación de inteligencia artificial: estudios de caso en Common Lisp , Morgan Kaufmann, 1991, ISBN 1-55860-191-0 , Web 
  9. ^ Bratko, Iván (2001). Programación de prólogo para inteligencia artificial . Harlow, Inglaterra; Nueva York: Addison Wesley. ISBN 978-0-201-40375-6.
  10. ^ ab Kidd, Eric (20 de enero de 2007). "13 formas de ver un símbolo de rubí". Trucos aleatorios . Consultado el 10 de julio de 2011 .
  11. ^ "Programación de Ruby: la guía pragmática del programador". ruby-doc.com .
  12. ^ "Usar símbolos por motivos incorrectos". Notas Gnómicas .
  13. ^ "Símbolo". Documentación de Rubí . Consultado el 10 de julio de 2011 .
  14. ^ http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf Estándar ANSI Smalltalk.