Revisé una línea como esta "PHP no tiene soporte nativo para Unicode". También leí que Python tiene soporte nativo para Unicode. Ahora puede llamar a una función utf8_encode()
en PHP para codificar una cadena en Unicode y puede usar una función unicode()
en Python para convertir una cadena a Unicode. Entonces, ¿qué significa admitir Unicode de forma nativa? Además, algunos idiomas tienen soporte nativo para la concurrencia, mientras que otros no tienen soporte nativo. Entonces, ¿qué se entiende por
El lenguaje X admite de forma nativa la función Y
programming-languages
lovesh
fuente
fuente
Respuestas:
Significa que para admitir una característica determinada, el desarrollador no necesita usar un componente que no esté integrado en el lenguaje en sí, como una extensión o un producto de terceros.
Por ejemplo, PHP no tiene soporte nativo para Unicode, porque cada función que trata con cadenas en PHP en sí no es compatible con Unicode. Por ejemplo, para obtener una subcadena, no puede usar
substr
, pero debe usarmb_substr
, lo que requiere usar la extensión Multibyte String.Para tener un soporte nativo de una característica dada, no es suficiente incorporar una extensión en el tronco del código fuente. En cambio, PHP tendría soporte nativo para unicode si unicode sería la codificación predeterminada, como en C # o Java.
fuente
mb_string
la funcionalidad de la fuente PHP, ¿sería nativa?s = "Müsliriegel"mb;
lugar de algo asís = toMb("Müsliriegel");
(esto, por supuesto, se cumple trivialmente en todos los idiomas que usan UTF8 como codificación predeterminada)"El lenguaje X admite de forma nativa la función Y" significa que puede usar la función Y sin ninguna extensión ni ningún otro esfuerzo para que funcione. Es directamente utilizable desde el propio lenguaje.
Por ejemplo, puedes decir que,
"El lenguaje C ++ admite de forma nativa la sobrecarga del operador".
"El lenguaje Java admite de forma nativa la recolección automática de basura", ya que no necesita utilizar ninguna otra biblioteca o herramienta que realice la recolección automática de basura. Viene con el idioma (y la plataforma) en sí.
fuente
Me da miedo nativo en los contextos que has mencionado como integrados . Si un idioma no proporciona soporte nativo para alguna característica, deberá implementarlo usted mismo o buscar alguna biblioteca o módulo que lo proporcione.
Otro contexto en el que verá mucho nativo es con respecto a las aplicaciones en una plataforma u otra. En esos casos, significa compilado para la plataforma en lugar de ser interpretado o traducido de alguna manera. Una aplicación iOS nativa es una que está escrita en un lenguaje como Objective-C y compilada en un código que se ejecuta directamente en la familia de procesadores ARM (que es lo que se encuentra en los dispositivos iOS).
fuente
Lo consideraría un mal uso del término. Para que algo sea "nativo" de un idioma, es necesario construir instalaciones para ello. El soporte nativo para algo como Unicode tendría tipos sin formato en el lenguaje que implementan unicode de alguna manera. Por lo general, aunque esto no es parte del lenguaje sino parte de una biblioteca.
En mi humilde opinión, llamar a algo que aparece en la biblioteca predeterminada del idioma o no no hace que algo sea nativo o no.
Algunos ejemplos:
C ++ tiene soporte nativo para clases. C no lo hace. No hay palabras clave de idioma o facilidad de tipo que permita la escritura y el uso de clases, debe codificarlas a mano.
Sin embargo, diría que C ++ no tiene más un tipo de cadena nativa que C. Hay una plantilla basic_string en la biblioteca estándar, pero esta no es una instalación de lenguaje.
Sin embargo, C ++ 11 parece haber agregado soporte Unicode ya que se agregaron nuevas palabras clave y tipos sin formato al lenguaje en sí para facilitar el trabajo con valores Unicode.
Espero que aclare la diferencia que veo.
fuente
bytes
tipo separado ), por lo que creo que es justo decir que Python admite unicode de forma nativa.unicode
tipo, aunque es más doloroso de usar que Python 3. C ++ es una bestia extraña, ya que gran parte de lo que normalmente forma parte de un lenguaje está en las bibliotecas.char[]
), y las cadenas literales pares. No todos los "tipos sin formato" necesitan tener literales coincidentes, los punteros en C, por ejemplo, no. (NULL
solo se puede convertir aint*
)"Soporte nativo", al menos en los idiomas interpretados o compilados JIT, generalmente significa código que es básicamente un enlace a la funcionalidad precompilada que se encuentra debajo del intérprete.
En JavaScript, por ejemplo, si alerta a window.open en Firefox, probablemente verá una función cuyas entrañas dicen algo como "[código nativo]". Si bien todas las referencias se envían al intérprete y se deben tomar medidas para establecer el contexto y el alcance, las entrañas están básicamente en caché y listas para funcionar. window.open, por ejemplo, probablemente llama a algo del entorno de tiempo de ejecución de un navegador.
Esto es diferente de los objetos y métodos no nativos que usted u otra persona escribieron, porque en esos casos todas sus declaraciones deben ser interpretadas / evaluadas.
Si alguien usara el término en referencia a un lenguaje que precompila, supondría que solo se refería a todas las cosas del lenguaje central que el compilador realmente tokeniza y convierte al código de máquina frente a las cosas que usted define, que se trata más sobre estructuras y referencias utilizadas para vincularlo todo.
fuente