>Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее
Я находился в точно такой же ситуации и могу сказать, что Вы сильно отстали от времени. Итак:
1. Если говорить о VBA - речь идет не о "интерпретаторе", а о "гибриде", использующем прекомпиляцию в p-код при запуске программы и потом работающим с компилированным кодом в процессе исполнения. Говорить что это медленнее, чем чистый исполняемый код - неверно. Если Вы посмотрите структуру скомпилированного файла, Вы увидите фактически ту же прекомпиляциюю, то есть какой-то простой код верхнего уровня служит как набор инструкций для вызова библиотек. Объектно-ориентированное и событийно-ориентированное программирование очень близко к интерпретации кода.
2. Собсстно язык давно "отцепили от компилятора" и скорость от языка программирования практически не зависит. Другое дело, что низкоуровневые языки позволяют выбросить "все лишнее" из библиотек, особенно обработчики исключений - и поднять скорость за счет этого. Но это не лучший способ улучшить свою программу. Кроме того - инструментарий стал интеллектуальнее, он умеет переводить с одного языка на другой. Лучше всего Вам переходить на платформу Visual Studio .NET, там используется единый компилятор C++, C# и VB.NET. Можно очень быстро, не думая об эффективности кода, получить работающую программу на VB.NET а если дойдет дело до превращения ее в многотиражный продукт - перекатать ее в си и оптимизировать уже в нем. И овцы целы и волки сыты. В смысле - и результат можно получить быстро - и потом довести код до идеала не спеша.
no subject
Date: 2015-01-11 02:29 pm (UTC)Я находился в точно такой же ситуации и могу сказать, что Вы сильно отстали от времени. Итак:
1. Если говорить о VBA - речь идет не о "интерпретаторе", а о "гибриде", использующем прекомпиляцию в p-код при запуске программы и потом работающим с компилированным кодом в процессе исполнения.
Говорить что это медленнее, чем чистый исполняемый код - неверно. Если Вы посмотрите структуру скомпилированного файла, Вы увидите фактически ту же прекомпиляциюю, то есть какой-то простой код верхнего уровня служит как набор инструкций для вызова библиотек. Объектно-ориентированное и событийно-ориентированное программирование очень близко к интерпретации кода.
2. Собсстно язык давно "отцепили от компилятора" и скорость от языка программирования практически не зависит. Другое дело, что низкоуровневые языки позволяют выбросить "все лишнее" из библиотек, особенно обработчики исключений - и поднять скорость за счет этого. Но это не лучший способ улучшить свою программу.
Кроме того - инструментарий стал интеллектуальнее, он умеет переводить с одного языка на другой.
Лучше всего Вам переходить на платформу Visual Studio .NET, там используется единый компилятор C++, C# и VB.NET. Можно очень быстро, не думая об эффективности кода, получить работающую программу на VB.NET а если дойдет дело до превращения ее в многотиражный продукт - перекатать ее в си и оптимизировать уже в нем. И овцы целы и волки сыты. В смысле - и результат можно получить быстро - и потом довести код до идеала не спеша.