2009-03-05 11 views

Respuesta

36

Históricamente, las bases de datos han utilizado la indexación basada en 1 para los parámetros vinculados. Esto probablemente refleja los orígenes de las bases de datos relacionales en la teoría de conjuntos y las matemáticas, que indexan elementos que comienzan con uno, y usan cero para representar un conjunto nulo o vacío.

En scripts de shell y expresiones regulares, el índice cero generalmente significa algo "especial". Por ejemplo, en el caso de los scripts de shell, el "argumento" zeroth es en realidad el comando invocado.

La elección de JDBC fue deliberada pero, en última instancia, probablemente causa más confusión y dificultad de la que resuelve.

+0

En matemáticas, generalmente es más fácil ir con indexación cero (en mi experiencia (BSc de tercera clase)). –

+3

No creo que la indexación basada en cero sea un artefacto matemático. Cada libro de álgebra lineal que tengo comienza a numerar filas/columnas con 1. FORTRAN está predeterminado desde 1, si no recuerdo mal. Creo que la indexación basada en cero es un legado de C y la aritmética de punteros. – duffymo

+2

Personalmente, creo que la indexación basada en 0 es un retroceso de la aritmética del puntero C que parece haberse pegado ... a la desgracia de todos nosotros. –

0

Probablemente es que JDBC se modeló en ODBC.

+0

Creo que ambos fueron modelados en una interfaz X/Open. –

0

¿Más humano amistoso quizás? Además, el grupo de Matcher de la expresión regular de Java comienza con 1 como el primer grupo coincidente.

+1

Esto es estándar con expresiones regulares, ya que 0 se usa para significar la coincidencia completa. – Eclipse

2

Personalmente me gustaría añadir esto al mal diseño.

2

Entiendo que tanto JDBC como ODBC se basan en la interfaz X/Open Call Level. Entonces, es el historial previo a Java, como los números de mes basados ​​en 0.

15

Esto fue parte de una trama de los diseñadores del lenguaje original para eliminar a los débiles. En la especificación original, las matrices se numeraron de -1, y las listas con 1 elemento devolvieron longitud = 0.

Hoy, solo la API de calendario de Java permanece de este diagrama diabólico.

Cuestiones relacionadas