Это может быть интересно проверить, вики-страницу для Array programming, который говорит
Современные языки программирования, которые поддерживают программирование массива широко используются в научных и инженерных установок; они включают Fortran 90, Мата, MATLAB, Analytica, TK Solver (как списки), Octave, R, Cilk Plus, Джулия и расширение NumPy на Python ...
, а также страницы для array slicing и a list of array languages. Так, несколько языков, кажется, имеют похожий синтаксис
Вот некоторые примеры (там могут быть ошибки, так пожалуйста, проверьте сами ..) (который восходит к старо как ALGOL68?!):
Fortran:
program main
implicit none
real, allocatable :: v(:)
integer i, n
n = 8
v = [(real(i)**2, i=1,n)]
print *, "v = ", v
v(2:n-1) = 0.5 * (v(1:n-2) + v(3:n))
print *, "v = ", v
end
$ gfortran test.f90 && ./a.out
v = 1.00000000 4.00000000 9.00000000 16.0000000 25.0000000 36.0000000 49.0000000 64.0000000
v = 1.00000000 5.00000000 10.0000000 17.0000000 26.0000000 37.0000000 50.0000000 64.0000000
Python:
import numpy as np
n = 8
v = np.array([ float(i+1)**2 for i in range(n) ])
print("v = ", v)
v[1:n-1] = 0.5 * (v[0:n-2] + v[2:n])
print("v = ", v)
$ python3 test.py
v = [ 1. 4. 9. 16. 25. 36. 49. 64.]
v = [ 1. 5. 10. 17. 26. 37. 50. 64.]
Julia:
n = 8
v = Float64[ i^2 for i = 1 : n ]
println("v = ", v)
v[2:n-1] = 0.5 * (v[1:n-2] + v[3:n])
println("v = ", v)
$ julia test.jl
v = [1.0,4.0,9.0,16.0,25.0,36.0,49.0,64.0]
v = [1.0,5.0,10.0,17.0,26.0,37.0,50.0,64.0]
Chapel:
var n = 8;
var v = (for i in 1..n do (i:real)**2);
writeln("v = ", v);
var vtmp = 0.5 * (v[1..n-2] + v[3..n]);
v[2..n-1] = vtmp;
writeln("v = ", v);
$ chpl test.chpl && ./a.out
v = 1.0 4.0 9.0 16.0 25.0 36.0 49.0 64.0
v = 1.0 5.0 10.0 17.0 26.0 37.0 50.0 64.0
(см вики-страницы и т.д. для других языков).
Я думаю, что обозначение массива, такие как :
или ..
очень удобно, но это может привести к неожиданным результатам (если не используется, например, значение индексов, или возможное перекрытие LHS/РИТ) или вызвать run- (из-за временных массивов), в зависимости от случаев. Поэтому, пожалуйста, позаботьтесь о том, чтобы на самом деле использовать его ...
Что такое «оно» в вашем первом предложении? Фортранский язык? С моей головы MATLAB тоже делает это. – Ross
@ Ross, исправлено, что «это» – marmistrz
Python, Chapel, Julia, каждый может ответить своим любимым языком. Голосование закрывается слишком широко, потому что * «Существует слишком много возможных ответов» * –