stringtranslate.com

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

Esta comparación de lenguajes de programación (matriz) compara las características de las estructuras de datos de matriz o el procesamiento matricial 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 idiomas indexan desde cero. Algún índice de uno. Algunos no tienen tal restricción, o incluso permiten la indexación por cualquier tipo enumerado, no sólo por números enteros.

Indexación

La siguiente lista contiene ejemplos de sintaxis de cómo acceder a un único 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 de matriz vectorizadas

Algunos lenguajes compilados como Ada y Fortran , y algunos lenguajes de scripting 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 arrays, a y b para producir un tercer c , sólo es necesario escribir

c = a + b

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

y = pecado (x)

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

También se admiten operaciones de índice vectorizado. Como 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 que 0,5 se deben establecer en 0,5. Usando S-Lang , esto se puede hacer mediante

y = pecado(x);y[donde(abs(y)>0,5)] = 0,5;

Operaciones matriciales 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. Secuencias (1,2,3) que no pueden anidarse y en la versión XPath/XQuery 3.1 arrays array { 1,2,3 } o [1,2,3] que sí pueden.
  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: ARRAY".
  7. ^ abcdef Los sectores para matrices multidimensionales también se admiten y 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 sectores del formulario , donde puede haber un rango como el mencionado en la nota al pie 2 o una lista explícita de índices, por ejemplo, ' ', o una combinación 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 de lenguaje C# 8.0". Documentos de Microsoft . 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 se fija.
  17. ^ abcde Esta lista compara estrictamente las características del idioma. En todos los idiomas (incluso en 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 ALGOL 68 deben tener subíndices (y dividirse) por tipo INT . Sin embargo, se podría utilizar una función hash para convertir otros tipos a INT . por ejemplo, nombre [ hash("cadena") ]
  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 localizarse en una función definida por el usuario o en una única función primitiva mediante el uso del operador Variante ( ).
  20. ^ ab Debido a que C no verifica los índices, se puede definir un puntero al interior de cualquier matriz que actuará simbólicamente como una pseudomatriz que se adapta a í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 para admitir 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 hacer esta nota para un lenguaje que siempre asigna matrices en el montón.
  23. ^ abcdefghijklmnopqrstu vwx Permite matrices de matrices que se pueden utilizar para emular la mayoría, pero no todos, los aspectos de matrices multidimensionales.
  24. ^ abc La base se puede cambiar al inicializar con System.Array.CreateInstance (que devuelve System.Array ), pero no cuando se usa la sintaxis del idioma. Las matrices con índices de base distintos de cero no son del mismo tipo que aquellas con índices de base cero y no se pueden manipular usando la sintaxis del lenguaje (se deben usar los métodos GetValue y SetValue en su lugar) ni reducir a un tipo específico ( T[] en C# , o T() en VB.NET), evitando la rotura del código asumiendo í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 idiomas.
  26. ^ Las matrices COBOL se pueden indexar 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 hace coincidir automáticamente 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. ^ Las implementaciones de Lisp más comunes permiten desactivar selectivamente la verificación
  30. ^ Matrices asociativas - Lenguaje de programación D
  31. ^ ab El comportamiento se puede ajustar mediante modificadores del compilador. Al igual que en DMD 1.0, los límites se verifican en el modo de depuración y se desmarcan en el modo de lanzamiento para mayor 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 mediante modificadores del compilador. Sin embargo, de forma predeterminada, la verificación de límites generalmente está desactivada por motivos de 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 las matrices.
  35. ^ Las matrices de Haskell (Data.Array) permiten usar cualquier tipo que sea una instancia de Ix como tipo de índice. Por lo tanto, un tipo personalizado se puede definir y utilizar como tipo de índice siempre que instancia Ix. Además, las tuplas de tipos Ix también son tipos Ix; esto se usa 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. Al principio esto puede parecer como si los límites no estuvieran controlados; sin embargo, se verifican los límites para decidir hacer crecer la matriz y no tiene acceso a la memoria inseguro como 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 de vectores lógicos estilo R en Nim".
  41. ^ Muchas implementaciones ( Turbo Pascal , Object Pascal ( Delphi ), Free Pascal ) permiten cambiar el comportamiento mediante modificadores 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 montón.
  43. ^ Los tipos de datos de matriz Perl estándar no admiten operaciones vectorizadas como se definen aquí. Sin embargo, la extensión Perl Data Language agrega objetos de matriz con esta capacidad.
  44. ^ Las "matrices" de abc PHP son matrices asociativas. Puede utilizar números enteros y cadenas como claves (índices); Los flotantes también se pueden utilizar como clave, pero se truncan a números enteros. Realmente no existe ningún "índice base" o "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 se define 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 o tienen la capacidad de especificar Option Base 1 , lo que provocó 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 (.NETO) . En varias implementaciones de Microsoft BASIC, las matrices se pueden DIMensionar usando para especificar los valores de índice mínimo y máximo (por ejemplo, DIM MyArray(2 a 50) AS STRING tendría el primer índice en 2 en lugar del valor predeterminado).
  49. ^ Funciones numéricas del canal