Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Язык программирования Microsoft® Visual Basic® — это высокоуровневый язык программирования для Microsoft .NET Framework. Хотя он предназначен для того, чтобы быть подходным и простым в обучении языком, он также достаточно мощный для удовлетворения потребностей опытных программистов. Язык программирования Visual Basic имеет синтаксис, аналогичный английскому языку, который повышает четкость и удобочитаемость кода Visual Basic. Везде, где это возможно, используются значимые слова или фразы вместо аббревиаций, акронимов или специальных символов. Необязательным или ненужным синтаксисом обычно разрешен, но не требуется.
Язык программирования Visual Basic может быть строго типизированным или слабо типизированным языком. Свободный ввод откладывает большую часть нагрузки проверки типа до тех пор, пока программа еще не запущена. Это включает не только проверку типов преобразований, но и вызовов методов, что означает, что привязка вызова метода может быть отложена до времени выполнения. Это полезно при создании прототипов или других программ, в которых скорость разработки важнее скорости выполнения. Язык программирования Visual Basic также предоставляет строго типизированную семантику, которая выполняет проверку типа во время компиляции и запрещает привязку во время выполнения вызовов методов. Это гарантирует максимальную производительность и помогает обеспечить правильность преобразования типов. Это полезно при создании рабочих приложений, в которых важна скорость выполнения и правильность выполнения.
В этом документе описывается язык Visual Basic. Это должно быть полное описание языка, а не учебник по языку или справочник пользователя.
Нотация грамматики
Эта спецификация описывает две грамматики: лексическую грамматику и синтаксическую грамматику. Лексическая грамматика определяет способ объединения символов для формирования маркеров; Синтаксическая грамматика определяет способ объединения маркеров для формирования программ Visual Basic. Существует также несколько вторичных грамматик, используемых для предварительной обработки таких операций, как условная компиляция.
Грамматики в этой спецификации написаны в формате ANTLR. См. в разделе http://www.antlr.org/.
Регистр не имеет значение в программах Visual Basic. Для простоты все терминалы будут предоставлены в стандартном регистре, но любой регистр будет соответствовать им. Терминалы, которые являются печатными элементами набора символов ASCII, представлены соответствующими символами ASCII. Visual Basic также не учитывает ширину при сопоставлении терминалов, позволяя символам Юникода полной ширины соответствовать их эквивалентам Юникода половины ширины, но только на основе целого токена. Маркер не будет совпадать, если он содержит смешанные символы половины ширины и полной ширины.
Разрывы строк и отступы могут быть добавлены для удобства чтения и не являются частью рабочей среды.
Совместимость
Важной особенностью языка программирования является совместимость между различными версиями языка. Если более новая версия языка не принимает тот же код, что и предыдущая версия языка, или интерпретирует его иначе, чем предыдущая версия, то бремя может быть помещено на программиста при обновлении его кода с одной версии языка на другой. Таким образом, совместимость между версиями должна быть сохранена, за исключением случаев, когда преимущество для потребителей языка является четким и подавляющим характером.
Следующая политика управляет изменениями языка Visual Basic между версиями. Язык терминов, используемый в этом контексте, относится только к синтаксическим и семантические аспекты самого языка Visual Basic и не включает в себя классы .NET Framework, включенные в состав Microsoft.VisualBasic
пространства имен (и вложенных пространств имен). Все классы в .NET Framework рассматриваются отдельной политикой управления версиями и совместимости вне области этого документа.
Типы разрывов совместимости
В идеальном мире совместимость будет составлять 100% между существующей версией Visual Basic и всеми будущими версиями Visual Basic. Однако могут возникнуть ситуации, когда потребность в разрыве совместимости может перевесить затраты, которые она может наложить на программистов. Такие ситуации:
Новые предупреждения. Введение нового предупреждения не является, как правило, разрывом совместимости. Тем не менее, так как многие разработчики компилируются с включенным параметром "обрабатывать предупреждения как ошибки", при вводе предупреждений необходимо принимать дополнительные меры.
Новые ключевые слова. При внедрении новых языковых функций может потребоваться введение новых ключевых слов. Разумные усилия будут предприняты для выбора ключевых слов, которые свести к минимуму вероятность столкновения с идентификаторами пользователей и использовать существующие ключевые слова, где имеет смысл. Помощь будет предоставлена для обновления проектов из предыдущих версий и экранирования новых ключевых слов.
Ошибки компилятора. Если поведение компилятора не соответствует документированному поведению в спецификации языка, может потребоваться исправление поведения компилятора в соответствии с документируемым поведением.
Ошибка спецификации. Если компилятор согласуется со спецификацией языка, но спецификация языка явно неправильная, изменение спецификации языка и поведение компилятора может потребоваться. Фраза "явно неправильно" означает, что документируемое поведение выполняется счетчиком того, что ясно и однозначно большинство пользователей ожидает и создает крайне нежелательное поведение для пользователей.
Неоднозначность спецификации. Если спецификация языка должна указывать, что происходит в определенной ситуации, но не делает этого, а компилятор обрабатывает ситуацию как несогласованную, так и явно неправильную (используя то же определение с предыдущей точки), уточняя спецификацию и исправляя поведение компилятора, может потребоваться. Другими словами, когда спецификация охватывает случаи a, b, d и e, но не упоминает все упоминания о том, что происходит в случае c, и компилятор ведет себя неправильно в случае c, может потребоваться документировать, что происходит в случае c, и изменить поведение компилятора на соответствие. (Обратите внимание, что если спецификация была неоднозначной относительно того, что происходит в ситуации, и компилятор ведет себя не ясно неправильно, поведение компилятора становится де-факто спецификацией.)
Создание ошибок во время выполнения в ошибки во время компиляции. В ситуации, когда код составляет 100% гарантированно завершается сбоем во время выполнения (т. е. код пользователя имеет в нем неоднозначную ошибку), может потребоваться добавить ошибку во время компиляции, которая перехватывает ситуацию.
Упущение спецификации. Если спецификация языка не разрешает или запрещает определенную ситуацию, и компилятор обрабатывает ситуацию нежелательным способом (если поведение компилятора было явно неправильно, это будет ошибка спецификации, а не пропуск спецификации), может потребоваться уточнить спецификацию и изменить поведение компилятора. В дополнение к обычному анализу влияния изменения такого рода еще больше ограничиваются случаями, когда влияние изменения считается чрезвычайно минимальным, и преимущество разработчиков очень высока.
Новые возможности. Как правило, внедрение новых функций не должно изменять существующие части спецификации языка или существующее поведение компилятора. В ситуации, когда внедрение новой функции требует изменения существующей спецификации языка, такой разрыв совместимости является разумным только в том случае, если влияние будет чрезвычайно минимальным, и преимущество этой функции является высоким.
Безопасность. В чрезвычайных ситуациях проблемы безопасности могут потребовать разрыва совместимости, например удаление или изменение функции, которая изначально небезопасна и представляет собой явный риск безопасности для пользователей.
Следующие ситуации не являются допустимыми причинами для введения разрывов совместимости:
Нежелательное или к сожалению поведение. Поведение языка или компилятора, которое является разумным, но считается нежелательным или к сожалению в ретроспективе не является обоснованием для нарушения обратной совместимости. Вместо этого следует использовать процесс отмены языка, описанный ниже.
Что-нибудь ещё. В противном случае поведение компилятора остается обратно совместимым.
Критерии влияния
При рассмотрении того, может ли быть допустимым разрыв совместимости, для определения влияния изменения может быть использовано несколько критериев. Чем больше влияние, тем выше полоса для принятия разрывов совместимости.
Критерии:
Какова область изменения? Другими словами, сколько программ, скорее всего, затронуто? Сколько пользователей, вероятно, будут затронуты? Насколько распространено написание кода, затронутого изменением?
Существуют ли какие-либо обходные пути, чтобы получить такое же поведение до изменения?
Насколько очевидно изменение? Будут ли пользователи получать немедленные отзывы о том, что что-то изменилось, или их программы просто выполняются по-другому?
Может ли изменение быть разумно устранено во время обновления? Можно ли написать инструмент, который может найти ситуацию, в которой изменения происходят с идеальной точностью и изменить код, чтобы обойти изменение?
Что такое отзывы сообщества об изменении?
Нерекомендуция языка
Со временем части языка или компилятора могут стать устаревшими. Как упоминалось ранее, не допускается нарушение совместимости для удаления таких устаревших функций. Вместо этого необходимо выполнить следующие действия:
Учитывая функцию, которая существует в версии A Visual Studio, отзывы должны быть запрошены от сообщества пользователей по отмене функции и полному уведомлению, предоставленному до принятия окончательного решения об отмене. Процесс нерекомендуемого использования может быть отменен или отменен в любой момент на основе отзывов сообщества пользователей.
Полная версия (т. е. не точка выпуска) B Visual Studio должна быть выпущена с предупреждениями компилятора, предупреждающими об устаревшем использовании. Предупреждения должны быть включены по умолчанию и могут быть отключены. Нерекомендуемые элементы должны быть четко описаны в документации по продукту и в Интернете.
Полная версия C Visual Studio должна быть выпущена с предупреждениями компилятора, которые нельзя отключить.
После этого необходимо освободить полную версию Visual Studio с устаревшими предупреждениями компилятора, преобразованными в ошибки компилятора. Выпуск D должен происходить после окончания основного этапа поддержки (5 лет по состоянию на этот текст) выпуска A.
Наконец, может быть выпущена версия E Visual Studio, которая удаляет ошибки компилятора.
Изменения, которые не могут обрабатываться в этой платформе нерекомендуемой версии, не будут разрешены.
Visual Basic language spec