Термин "контекст" в программировании?

я программирую уже несколько месяцев, и часто используемым словом является "контекст" в классах. Как ServletContext (Java),Activity (Android),Service (Java, Android),NSManagedContext (Objective-C, iOS).

глядя в словарях, я вижу, что слово означает: ситуация, окружающая среда, обстоятельства и т. д. Однако, поскольку я не являюсь носителем английского языка, я не понимаю, на что я должен перевести его непосредственно. Например, если бы я должен был написать класс, который был бы назван SomeClassContext, или метод, который имел параметр контекста, я бы не понял, когда я должен назвать его контекстом, потому что я его не понимаю.

Я искал контекст переполнения стека, но ни один вопрос / ответы не смогли мне помочь.

Я был бы очень рад, если кто-то может дать мне объяснение.

11 ответов


предположим, вы идете к стоматологу, чтобы вырвать зуб.

когда администратор спрашивает ваше имя, это информация, которая им нужна для того, чтобы начать встречу. В этом примере, ваше имя контекстуальная информация. Так что в контекст посещения стоматолога, вы должны указать свое имя, чтобы получить зуб вытащил.

теперь предположим, что вы идете в банк.

в банк, вы просите снять 100 долларов. Кассир должен установить вашу личность, прежде чем давать вам деньги, так что вы, вероятно, придется показать им водительские права или проведите карту банкомата и введите свой ПИН-код. В любом случае, то, что вы есть контекст. Кассир использует эту информацию для перемещения транзакции вперед. Затем они могут спросить вас, с какого счета вы хотите снять деньги. Когда вы ответите,"мой накопительный счет", даже больше контекста.

чем больше контекста вы даете, тем больше знаний другая сторона, чтобы помочь справиться с вашей просьбой. Иногда контекст является необязательным (например, ввод все больше и больше слов в поиск Google, чтобы получить лучшие результаты), а иногда это требуется (например, предоставление вашего PIN-кода в банкомате). В любом случае, это информация, которая обычно помогает что-то сделать.

теперь предположим, вы берете свои $ 100 и покупаете билет на самолет, чтобы летать где-то тепло, пока ваш рот заживает.

вы прибываете в хороший солнечный пункт назначения, но ваша сумка не делает это. Он потерялся где-то в системе аэропорта. Итак, вы берете свой "багажный билет" (эту наклейку со штрих-кодом) в "Бюро потерянного багажа". Первое, что попросит человек за стойкой, - это билет с номером вашего багажа. Вот пример некоторых требуются контексте.

но тогда багаж человек просит вас для получения дополнительной информации о сумку как, чтобы они могли найти его более легко. Они спрашивают:"какой это цвет? Какого она размера? У него есть колеса? Он твердый или мягкий? хотя им не обязательно нужны эти куски информации, это помогает сузить круг вопросов, если вы их предоставляете. Это уменьшает проблемную область. Это делает поиск намного быстрее. Это необязательная контекст.

вот интересная часть: для большого количества программного обеспечения и API,требуются контексте обычно заканчивается как фактические параметры в сигнатуре метода, и необязательная контекст идет куда-то еще, как гибкая карта ключ-значение, которое может содержать что-либо (и может быть пустым) или в потоковое локальное хранилище, где он может быть доступен, если это необходимо.

приведенные выше примеры из реальной жизни, но вы можете легко сопоставить их с областями информатики. Например, заголовки HTTP содержат контекстную информацию. Каждый заголовок относится к информации о запрос делаются. Или когда вы отправляете глобальный идентификатор транзакции как часть двухфазный процесс фиксации, этот идентификатор транзакции является контекстом. Это помогает менеджеру транзакций координировать работу, потому что это информация о общие задачи.

надеюсь, это поможет.


контекст можно рассматривать как ведро для передачи информации. Обычно он используется для передачи вещей, не обязательно привязанных непосредственно к вызову метода, но все же может быть уместным. Непрофессиональный способ описания этого может быть "вещью, о которой вы можете заботиться".

например, если вы пишете службу для обновления значения в БД, вы, вероятно, передадите идентификатор записи и новое значение.

Если вы хотите общие интерфейсы, вы также можете определить контекст для передачи, такой что сервис может выполнять произвольную бизнес-логику. Таким образом, вы можете включить аутентификацию пользователя, состояние сеанса пользователя и т. д... в контексте, поскольку служба может выполнять дополнительную логику, зависящую от этих значений.


Это 2015-Май лет после начала этой темы.

тем не менее, я отправляю это сообщение, чтобы помочь кому-то, как я, который изо всех сил пытается понять "контекст"

ни в коем случае я не утверждаю, что использовал контекст в программах Java-так что это полностью зависит от вас, чтобы написать контекст в жестком кодировании Так вот :-

"концептуально контекст" - это то же самое, что" рассказать мне больше", когда клиент делает запрос на сервер для выполнения запрос сервер говорит: "Дайте мне больше информации, чтобы я мог вам помочь". Таким образом, наряду с запросом, клиент предоставляет пакет деталей. Этот сервер выбирает и выбирает из пакета всю необходимую информацию чтобы выполнить просьбу. Этот пакет называется "Context"

Э. Г.

пациент идет к доктору и говорит treat_me ("у меня болит голова") док офис дает пациенту форму для заполнения. Пациент заполняет форму. Форма предназначенный по просьбе врача выполнить запрос "treat_me".

вот как теперь выглядит запрос:

treat_me ( "i have a headache", filled_form_num_23321 ) 

вот как filled_form_num_23321 выглядит так :

Q. что приводит к условию ? A. 10 колышков чистого скотча в последнюю ночь
Q. имя пациента ? А. Джо Bigdrinker
Вопрос: Возраст ? 98

В этой сделке filled_form_num_23321 - это "контекст".

надеюсь, это поможет прояснить понятие "контекст".


Я всегда думаю о контексте как о конкретном состоянии, относящемся к объекту или конструкции, с которой я работаю.

например, когда вы используете drawRect в представлении (где весь рисунок должен быть сделан для представления), вы всегда должны получить currentGraphicsContext, в который вы будете выдавать свои основные графические операторы. Этот контекст содержит такие вещи, как границы вида, цвет штриха, толщина штриха для рисования линии, цвет заливки для заполнения закрытого пути и т. д. этот контекст (как и большинство других) - это просто текущее состояние на данный момент. поэтому подумайте о графическом контексте в этом случае как о наборе состояний, таких как

гладить смотреть TV-в 1,5 пикселей цвет заливки черный границы обзора - (155, 200) цвет штриха Красный

его в основном состояние в текущий момент времени ...


контекст относится к исполнение контекст, который является символами, доступными из заданной точки кода, и значением этих символов в этом конкретном исполнении.

контекст является важным понятием, потому что:

  1. исполняемые единицы (функции, процедуры, инструкции) могут давать разные результаты или вести себя по-разному в разных контекстах.
  2. чем больше или сложнее контекст, тем больше трудно понять, что делает часть кода (вот почему глобальные переменные избегаются).

вам не нужно писать контекст классы или pass контекст параметры. Любой параметр, переданный функции / методу, становится частью контекста выполнения при его вызове.

даже если вы не англоговорящий, я рекомендую вам пройти через копию Код для нежного, но тщательного введение в такие понятия, как контекст, модульность, соединение, единство и так далее.


чтобы дать практический пример. Допустим, у вас есть определенная веб-страница для извлечения/отображения некоторой информации на основе пользователя (который вошел в систему) и языка браузера. Логика извлечения информации не зависит от пользователя и язык. Ваша страница получит пользователя и язык ... для логики не имеет значения, я это или ты, английский или испанский.

некоторые псевдо код:

class FooPage
{
    void handleRequest(RequestContext context)
    {
        User user = context.getUser();
        Locale locale = context.getLocale();

        … do some logic based on the context
    }
}

Это не так сложно, но требуется некоторое время, чтобы поймите понятие


сервис именования связывает имена с объектами. Связь между именем и объектом называется привязкой, а набор таких Привязок называется контекстом. Имя в контексте может быть связано с другим контекстом, использующим те же соглашения об именах; связанный контекст называется подконтекстом. Например, в файловой системе каталог (например, / temp) - это контекст, содержащий привязки между именами файлов и объектами, которые система может использовать для управления файлами (часто называемыми файлами поручни.) Если каталог содержит привязку для другого каталога (например, /temp/javax), подкаталог является подтекстом.


контекст в вашем случае-это среда, в которой работает ваше приложение.

Он предоставляет информацию / услуги / возможности, необходимые вашему приложению для правильной работы.

HTH


слишком часто автор предполагает, что у читателя есть подробное понимание контекста, в котором используется слово "контекст".

Как определить контекст в следующем предложении " The ? среда выполнения создает контекст, в котором могут храниться возможные значения для инъекции. Этот контекст может быть изменен, например, приложение и платформа могут добавлять элементы в контекст.

казалось бы, автор использует контекст для обозначения какого-то контейнера, возможно, кучи, это содержит контекст чего-то. Это стало модным словом, которое принимает много значения и запутывает вещи. Это элементы, которые являются контекстом и хранятся в контексте. Чтобы уменьшить путаницу контекста, в котором используется слово context, можно сказать ,что " среда выполнения создает контейнер для хранения контекста в виде элементов."Еще лучше" среда выполнения создает контейнер для хранения состояния в виде элементов, и этот контейнер с его состоянием называется контекст."


3 года спустя, так что, возможно, немного поздно, но, возможно, эта нить поможет вам. Это иллюстрирует, что слово "контекст" имеет техническое значение в программировании (а не только простое английское значение).

какие языки программирования контекстно-свободной?

Не уверен, можете ли вы использовать его в качестве примера и вытащить из него некоторую информацию или нет. Я тоже хотел бы услышать языковое агностическое объяснение термина технического программирования "контекст"

Edit: или это, по крайней мере, показывает, что термин "контекст" может применяться в техническом, программном контексте (не предназначен для каламбуров). Возможно, в более чем одном конкретном применении этого термина.


Я не вижу релевантности в объяснении контекста слова в контексте программирования.

чтобы понять контекст в контексте, вы сначала должны понять контекст. Это рекурсивно.

контекст-это абстрактное слово, и абстрактные слова трудно понять для некоторых людей. Способность мыслить абстрактно-это дар. Я не говорю, что у вас его нет, но есть разные уровни абстракции, и я полагаю, что контекст слова имеет более высокий уровень абстракция, чем то, что вы можете легко понять.

Я не знаю, откуда вы, но я уверен, что в вашем родном языке есть слово для контекста, и вы, вероятно, тоже не понимаете этого слова.

Я использовал контекст в контексте программирования, и я мог бы привести вам пример, но я действительно думаю, что вам нужно сначала понять контекст слова.