macroevolution (
macroevolution) wrote2015-01-11 02:41 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Посоветуйте язык программирования
Я всю жизнь программировал только на бейсике, на разных его версиях. Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.
no subject
Dim a(10000, 10000) As Double
Dim i, j, l As Long
Debug.Print "start", Time()
For l = 1 To 10
For i = 1 To 10000
For j = 1 To 10000
a(i, j) = Rnd()
Next j
Next i
For i = 1 To 10000
For j = 1 To 10000
If i <= 1 Then
If j <= 1 Then
a(i, j) = a(i, j)
ElseIf j >= 10000 Then
a(i, j) = a(i, j)
Else
a(i, j) = 1 * a(i, j - 1) * a(i, j) * a(i + 1, j + 1) * a(i + 1, j - 1) * a(i + 1, j) * a(i + 1, j + 1)
End If
ElseIf i <= 10000 Then
If j <= 1 Then
a(i, j) = a(i, j)
ElseIf j >= 10000 Then
a(i, j) = a(i, j)
Else
a(i, j) = a(i - 1, j - 1) * a(i - 1, j) * a(i - 1, j + 1) * a(i, j - 1) * a(i, j) * a(i, j + 1) * 1
End If
Else
If j <= 1 Then
a(i, j) = 1 * a(i - 1, j) * a(i - 1, j + 1) * 1 * a(i, j) * a(i + 1, j + 1) * 1 * a(i + 1, j) * a(i + 1, j + 1)
ElseIf j >= 10000 Then
a(i, j) = a(i - 1, j - 1) * a(i - 1, j) * 1 * a(i, j - 1) * a(i, j) * 1 * a(i + 1, j - 1) * a(i + 1, j) * 1
Else
a(i, j) = a(i - 1, j - 1) * a(i - 1, j) * a(i - 1, j + 1) * a(i, j - 1) * a(i, j) * a(i + 1, j + 1) * a(i + 1, j - 1) * a(i + 1, j) * a(i + 1, j + 1)
End If
End If
Next j
Next i
Next l
Debug.Print "end", Time()
End Sub
чорт, все отступы съело !
no subject
за это я Басик не люблю. бггг)))