Я написал это после прочтения NET-стратегии и анализа Питера Брайта на Ars Technica. Хотя я все еще иногда пишу код на C #, я работаю менеджером программы, и эти мнения не совпадают с мнением моего работодателя.

Помню, когда я начал стажировку 12 лет назад, одним из первых проектов было создание системы отслеживания проектов с использованием VB.NET.

Однако у команды также было несколько устаревших приложений в Excel, которые, конечно же, были на VBA, и мне также нужно было исправить ошибки. В то время я подумал: Почему Microsoft так надоедает, создавая два языка, которые были бы такими похожими, но разными и совершенно несовместимыми! В то время разработчику VBA действительно удалось объявить Dim как тип Variant… исходя из строго типизированного мира, я понятия не имел, почему VBA допускает такую ​​чудовищность, но не в VB.NET! Конечно, мы думали, что VB.NET, по крайней мере, синтаксически лучше, чем VBA (он объектно-ориентированный!), И думали, что однажды все программы VBA в книгах Excel будут автоматически преобразованы в VB. NET под управлением ядра .NET.

Этого никогда не было. VB.NET продолжал жить. В конце концов, когда я начал работать над надстройкой VSTS office, одной из самых непростых проблем было убедиться, что код надстройки не мешает написанному пользователем коду VBA. Это был кошмар. Тем не менее VBA продолжал жить. Странно, что код надстройки был написан на C #, а не на VBA. Я сомневаюсь, что кто-то в MS в то время действительно использовал VB.net для чего-нибудь, кроме команды VB.net. К сожалению, именно сюда были вложены усилия. VBA как язык не обновлялся, и его было так же сложно использовать и отлаживать, как и прежде, несмотря на то, что он по-прежнему оставался популярным.

Перенесемся вперед почти на 10 лет спустя. Я не встречал никого, кто еще использовал бы VBA в какой-либо форме. Я предполагаю, что если команда включит небольшой базовый в семейство VB, тогда, возможно, возникнет некоторая тяга к обучению, но язык в основном несовместим с какими-либо инструментами для обучения и, конечно же, не в каком-либо крупном круге. И, честно говоря, изучение VB.net просто вредно для ума, и вы навлечете на себя больше вредных привычек программирования. Инвестиции в это… позвольте мне сказать строго… пустая трата человеческого интеллекта.

Почему так сложно убить VBA? Я думаю, что это изначально связано с отношением человека к обучению - мы вряд ли научимся чему-то, если от этого не зависит наша жизнь! Для тысяч бизнес-профессионалов знание VBA = безопасность их рабочих мест, и есть стимул сохранить его и не заменять чем-либо другим (иначе они останутся без работы). И, в отличие от потребительского программного обеспечения, для обновления корпоративного программного обеспечения требуются годы, и приоритет №1 заключается в том, что все файлы / данные должны быть обратно совместимы! Это гарантирует, что VBA останется до тех пор, пока либо 1. поколение пользователей VBA не исчезнет из отрасли, либо 2. предприятия не перестанут использовать программное обеспечение Office для управления своей работой. (2) не подходит для Microsoft.

Мои мысли:

C # - со времен C # 5 появилось слишком много возможностей. На самом деле async - это последнее, что было действительно полезно. Все новые вещи - это просто надстройки, но на самом деле они обременительны для разработчиков, потому что некоторые новички будут использовать этот материал C # 7, и никто не будет иметь никаких представлений о том, о чем идет речь в CR. Churns в C # должны останавливаться на одном месте.

VB.net - действительно, если вы можете делать игры UWP / Xamarin на VB.net и никому действительно нет смысла изучать VB.net. Dev хочет выучить язык, который максимально применим на многих (популярных) платформах. чистый .NET не пользуется популярностью за пределами серверного мира, а VB недоступен для UWP или Xamarin. Зачем вообще тратить на это энергию!

VBA - это на самом деле область с наибольшими угрозами и возможностями. Я вижу тенденцию к тому, что по мере того, как мы перемещаем все в облако, JS постепенно вытесняет все другие языки в качестве языков де-факто для веб-плагинов. В этом вся прелесть, за исключением того, что по сути это ставит всех этих профессионалов бизнеса на равные условия с любым новым сотрудником. Эта облачная миграция заменит более чем 20-летний опыт. Но это плохая новость и для Microsoft, поскольку предприятие переосмысливает свои вложения в разработку непрофессионального программного обеспечения для бизнеса, Microsoft находится на равных с другими конкурентами.

Я думаю, что правильный шаг - включить VBA в sharepoint и в облачном офисном пакете. Любой желающий может загрузить свои существующие книги в sharepoint, и Excel Online сможет обрабатывать VBA, хранящийся в книге, и позволить пользователю редактировать и перекомпилировать его. Я знаю, что VBA вышла из моды в облачной среде, но если не считать технических проблем, многим это поможет. И это обеспечит контроль Microsoft над офисным программным обеспечением на долгие годы.

Примечание. эти мысли являются исключительно моими и не связаны с моим работодателем, и у меня нет никакой частной информации о развитии этих языков. Я сейчас PM и действительно уже давно не в мире разработчиков :)