stringtranslate.com

Comparación de lenguajes de programación (array)

Esta comparación de lenguajes de programación (arreglos) compara las características de las estructuras de datos de arreglos o el procesamiento de matrices para varios lenguajes de programación de computadoras .

Sintaxis

Dimensiones de la matriz

La siguiente lista contiene ejemplos de sintaxis de cómo determinar las dimensiones (índice del primer elemento, del último elemento o el tamaño en elementos).

Algunos lenguajes indexan desde cero, otros desde uno, otros no tienen esa restricción o incluso permiten la indexación por cualquier tipo enumerado, no solo números enteros.

Indexación

La siguiente lista contiene ejemplos de sintaxis de cómo acceder a un solo elemento de una matriz.

Rebanar

La siguiente lista contiene ejemplos de sintaxis de cómo se puede acceder a un rango de elementos de una matriz.

En la siguiente tabla:

Lista de referencias cruzadas del sistema de matriz

Operaciones con matrices vectorizadas

Algunos lenguajes compilados como Ada y Fortran , y algunos lenguajes de programación como IDL , MATLAB y S-Lang , tienen soporte nativo para operaciones vectorizadas en matrices. Por ejemplo, para realizar una suma elemento por elemento de dos matrices, a y b para producir una tercera c , solo es necesario escribir

c = a + b

Además de admitir operaciones aritméticas y relacionales vectorizadas, estos lenguajes también vectorizan funciones matemáticas comunes como el seno. Por ejemplo, si x es una matriz, entonces

y = sen(x)

dará como resultado una matriz y cuyos elementos son el seno de los elementos correspondientes de la matriz x .

También se admiten operaciones de índice vectorizado. A modo de ejemplo,

par = x ( 2 :: 2 ); impar = x ( :: 2 );    

Así es como se usaría Fortran para crear matrices a partir de las entradas pares e impares de una matriz. Otro uso común de los índices vectorizados es una operación de filtrado. Considere una operación de recorte de una onda sinusoidal donde las amplitudes mayores de 0,5 se deben establecer en 0,5. Con S-Lang , esto se puede hacer mediante

y = sen(x);y[donde(abs(y)>0.5)] = 0.5;

Operaciones con matrices matemáticas

Referencias

  1. ^ ab "Especificación del lenguaje ECMAScript® 2025".
  2. ^ "Programación en Lua: 11.1".
  3. ^ ab "Tutorial de Nim (Parte I)".
  4. ^ abcde XPath/XQuery tiene dos tipos de matrices. Las secuencias (1,2,3) que no se pueden anidar y, en la versión XPath/XQuery 3.1, las matrices array { 1,2,3 } o [1,2,3] que sí se pueden anidar.
  5. ^ abcdefg El índice puede ser un número negativo, que indica el número correspondiente de lugares antes del final de la matriz.
  6. ^ "Eiffeldoc: MATRIZ".
  7. ^ abcdef También se admiten sectores para matrices multidimensionales y se definen de manera similar.
  8. ^ abcd También se admiten sectores del tipo .first:last:step
  9. ^ abcd last o end puede ser un número negativo, lo que indica que se debe detener en el número correspondiente de lugares antes del final de la matriz.
  10. ^ abc De manera más general, para matrices 1-d Perl y S-Lang permiten porciones de la forma , donde puede ser un rango como el mencionado en la nota al pie 2 o una lista explícita de índices, por ejemplo, ' ', o una mezcla de ambos, por ejemplo, .array[indices]indices[0,9,3,4]A[[[0:3]],7,9,[11:2:-3]]]
  11. ^ Característica propuesta de C# 8.0 (a partir del 29 de agosto de 2019 )
  12. ^ "Rangos - Propuestas del lenguaje C# 8.0". Microsoft Docs . Microsoft . Consultado el 29 de agosto de 2019 .
  13. ^ "Manual de referencia de Lua 5.3". www.lua.org . Consultado el 2 de abril de 2022 .
  14. ^ El tipo de índice puede ser un tipo entero , un tipo enumerado o un tipo de carácter elegido libremente . Para matrices con tipos de índice no compactos, consulte: Matriz asociativa
  15. ^ ab El índice base predeterminado es el valor más bajo del tipo de índice utilizado
  16. ^ abcdefghijk El tamaño solo se puede elegir en la inicialización, después de lo cual es fijo.
  17. ^ abcde Esta lista compara estrictamente las características del lenguaje. En todos los lenguajes (incluso el lenguaje ensamblador ) es posible proporcionar un manejo mejorado de matrices mediante bibliotecas adicionales. Este lenguaje ha mejorado el manejo de matrices como parte de su biblioteca estándar
  18. ^ Las matrices de ALGOL 68 deben tener subíndices (y particiones) por tipo INT . Sin embargo, se puede utilizar una función hash para convertir otros tipos a INT . Por ejemplo, name [ hash("string") ]
  19. ^ La base de indexación puede ser 0 o 1 según la variable del sistema ⎕IO . Este valor puede aplicarse a todo el "espacio de trabajo" o puede localizarse en una función definida por el usuario o en una única función primitiva mediante el uso del operador de variante ( ).
  20. ^ ab Debido a que C no realiza comprobaciones de límites en los índices, se puede definir un puntero al interior de cualquier matriz que actuará simbólicamente como una pseudomatriz que admite índices negativos o cualquier origen de índice entero.
  21. ^ ab C99 permite matrices de tamaño variable; sin embargo, casi no hay ningún compilador disponible que admita esta nueva característica
  22. ^ abcde El tamaño solo se puede elegir en la inicialización cuando la memoria se asigna en el montón, a diferencia de cuando se asigna en la pila. No es necesario tener en cuenta esta nota para un lenguaje que siempre asigna matrices en el montón.
  23. ^ abcdefghijklmnopqrstu vwx Permite matrices de matrices que se pueden usar para emular la mayoría (pero no todos) de los aspectos de las matrices multidimensionales.
  24. ^ abc La base se puede cambiar al inicializar con System.Array.CreateInstance (que devuelve System.Array ), pero no al usar la sintaxis del lenguaje. Las matrices con índices base distintos de cero no son del mismo tipo que aquellas con índices base cero y no se pueden manipular usando la sintaxis del lenguaje (en su lugar, se deben usar los métodos GetValue y SetValue ) ni convertir a un tipo específico ( T[] en C# o T() en VB.NET), lo que evita la rotura del código al asumir índices base de cero.
  25. ^ ab Permite crear matrices de tamaño fijo en código "inseguro", lo que permite una interoperabilidad mejorada con otros lenguajes
  26. ^ Las matrices COBOL pueden indexarse ​​con tipos "INDEX", distintos de los tipos enteros
  27. ^ Si bien COBOL solo tiene matrices de matrices, se puede acceder a los elementos de la matriz con una sintaxis similar a una matriz multidimensional, donde el lenguaje automáticamente hace coincidir los índices con las matrices que encierran el elemento al que se hace referencia.
  28. ^ COBOL proporciona una forma de especificar que el tamaño utilizable de una matriz es variable, pero nunca puede ser mayor que el tamaño máximo declarado, que también es el tamaño asignado.
  29. ^ La mayoría de las implementaciones de Common Lisp permiten deshabilitar la verificación de forma selectiva
  30. ^ Matrices asociativas - Lenguaje de programación D
  31. ^ El comportamiento de ab se puede ajustar mediante parámetros del compilador. Como en DMD 1.0, los límites se comprueban en el modo de depuración y se desmarcan en el modo de lanzamiento para lograr eficiencia.
  32. ^ FreeBASIC admite matrices de longitud variable y de longitud fija. Las matrices declaradas sin rango de índice se crean como matrices de longitud variable, mientras que las matrices con un rango declarado se crean como matrices de longitud fija
  33. ^ Casi todas las implementaciones de Fortran ofrecen opciones de verificación de límites a través de parámetros del compilador. Sin embargo, de manera predeterminada, la verificación de límites suele estar desactivada para lograr mayor eficiencia.
  34. ^ Si bien el tipo Array de Golang no tiene un tamaño dinámico, el tipo de datos Slice tiene un tamaño dinámico y su uso es mucho más común que los arrays.
  35. ^ Las matrices Haskell (Data.Array) permiten utilizar cualquier tipo que sea una instancia de Ix como tipo de índice. Por lo tanto, se puede definir un tipo personalizado y utilizarlo como un tipo de índice siempre que sea una instancia de Ix. Además, las tuplas de tipos Ix también son tipos Ix; esto se utiliza comúnmente para implementar matrices multidimensionales
  36. ^ abcd En estos lenguajes, se puede acceder o escribir en un índice de matriz mayor o igual a la longitud de la matriz, y la matriz crecerá implícitamente hasta ese tamaño. Esto puede parecer al principio como si no se verificaran los límites; sin embargo, se verifican los límites para decidir si se aumenta el tamaño de la matriz, y no se tiene acceso a memoria inseguro como ocurre en C.
  37. ^ ab Al especificar un índice base, se pueden crear matrices en una base arbitraria. Sin embargo, de forma predeterminada, el operador de longitud de Lua no considera el índice base de la matriz al calcular la longitud. Este comportamiento se puede cambiar mediante metamétodos.
  38. ^ Al menos 2 dimensiones (los números escalares son matrices de 1×1, los vectores son matrices de 1×n o n×1).
  39. ^ "Guía del usuario del compilador Nim".
  40. ^ "Vectorización - Operación vectorial lógica al estilo R en Nim".
  41. ^ Muchas implementaciones ( Turbo Pascal , Object Pascal ( Delphi ), Free Pascal ) permiten cambiar el comportamiento mediante modificaciones del compilador y directivas en línea.
  42. ^ Varía según la implementación. Las implementaciones más nuevas ( Free Pascal , Object Pascal ( Delphi )) permiten matrices dinámicas basadas en heap.
  43. ^ Los tipos de datos de matriz estándar de Perl no admiten operaciones vectorizadas como las definidas aquí. Sin embargo, la extensión Perl Data Language agrega objetos de matriz con esta capacidad.
  44. ^ abc Los "arrays" de PHP son arrays asociativos. Puede utilizar números enteros y cadenas como claves (índices); también se pueden utilizar números de punto flotante como clave, pero se truncan a números enteros. En realidad no hay ningún "índice base" ni "límites".
  45. ^ El tamaño se puede elegir cuando se declara la matriz o cuando se asigna, después de lo cual se fija.
  46. ^ El tipo de matriz estándar de Pythonlist , , no admite operaciones vectorizadas como las definidas aquí. Sin embargo, la extensión numpy agrega objetos de matriz con esta capacidad
  47. ^ La clase Array tiene un tamaño fijo, pero OrderedCollection es dinámica
  48. ^ ab Microsoft QBASIC, QuickBASIC , Visual Basic y VBA tenían/tienen la capacidad de especificar Option Base 1 , lo que hacía que todas las matrices del módulo comenzaran de forma predeterminada en 1 en lugar de 0. La compatibilidad con Option Base se eliminó gradualmente en Visual Basic (.NET) . En varias implementaciones de Microsoft BASIC, las matrices se pueden DIMENSIONAR utilizando to para especificar los valores de índice mínimo y máximo (por ejemplo, DIM MyArray(2 to 50) AS STRING tendría el primer índice en 2 en lugar del valor predeterminado).
  49. ^ Ch características numéricas