Pregunta

Los archivos y directorios pueden tener diferentes espacios de nombres, y aún así ser utilizado para identificar los archivos específicos, ya que un archivo y un directorio con el mismo nombre se pueden distinguir por ser diferentes tipos de cosas.

Los campos de campo y de referencia primitivos también podrían tener diferentes espacios de nombres (en Java), porque si un campo de referencia de un primitivo y tenían el mismo nombre, que pudieran ser identificados por ser diferentes tipos de cosas.

espacios de nombres separados se utilizan en otros lugares como este. Por ejemplo, en Java, puede tener un método y un exampleName() exampleName campo, y aunque tienen el mismo nombre, que se distinguen por ser diferentes tipos de cosas.

¿Fue útil?

Solución

No creo que esto sería una buena idea. Me imagino que las razones implican aspectos como el rendimiento y la simplicidad del código de sistema de archivos. Si un listado de directorio tuvo que bajar 2 o 3 o más caminos distintos dependiendo del número de espacios de nombres diferentes que piensa que debería tener, esto probablemente podría complicar el código.

Además, tenga en cuenta que el usuario final confusión que pudiera surgir. Actualmente tenemos una especie de namespacing disponible en sistemas de archivos mediante el uso de extensiones de archivo. Usted puede tener archivo.txt y file.dll y file.exe todo inexistente en el mismo directorio. Lo que sucede cuando estos archivos están presentes al mismo tiempo es una cuestión de interés - este ha sido uno de los métodos para los creadores de virus para utilizar una forma de ingeniería social para conseguir que haga clic en el archivo incorrecto. Imagínese si usted podría confundir a un directorio con un archivo del mismo nombre así?

Otros consejos

En primer lugar, esta pregunta es un lenguaje específico. En los lenguajes de programación orientada a objetos puros que no hay distinción entre los elementos atómicos y compuestas. Todo es un objeto. Por una razón similar, en un lenguaje funcional puro no se puede tener la función y la variable denominada la misma.

En segundo lugar, si usted tiene operaciones polimórficas, no hay forma de saber qué variable qué te refieres. Por ejemplo, no se puede tener diferentes espacios de nombres de archivos y directorios, a causa de las operaciones polimórficas, como

cp foo bar

El CP funciona en archivos y directorios, y si usted tiene diferentes espacios de nombres, no hay manera de saber lo que quiso decir.

Los directorios y archivos no son necesariamente tan diferente. Son ambas entradas en su directorio principal, sólo con una bandera para indicar si una entrada es un directorio o no. Puede abrir un directorio y lo lee como si se trataba de un archivo, sólo que ciertas otras operaciones son posibles en IT- enlaces simbólicos funcionan de la misma manera. (Esta descripción está sesgada hacia el punto de vista del sistema de archivos de Unix, pero creo que el punto de vista de DOS / Windows funciona casi de la misma manera). Dentro de cualquier directorio, hay un conjunto de nombres de los miembros, y el sistema de archivos hace cumplir la restricción de unicidad que un directorio sólo puede tener un miembro con un nombre dado.

Pensando en nombre de los métodos Java en comparación con los nombres de campo --- atrás en C, usted podría no tiene una función global y variable global con el mismo nombre, ya que todos los símbolos en el archivo de objeto están en un mismo espacio de nombres. Pero lo haría con C ++, porque una función "void foo ()" se asigna al nombre del símbolo se destroza ( "foo__vv" o algo así). Por lo tanto, no se trata tanto de que tienen un espacio de nombres separado, como que la llave en el espacio de nombres es diferente para un campo "foo" vs un método "foo ()". Teniendo en cuenta que no se puede conseguir enfrentamientos clave, se ven como espacios de nombres separados, pero es que realmente cómo se implementa?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top