» »

Какие языковые конструкции применяет клиент для описания мира? Реферат, конспект, рецензия: оформление, структура, языковые конструкции

21.09.2019
Конструкции были определены как предложения или группы предложений, с помощью которых клиент конструирует и классифицирует мир. Можно сказать, что это частичка мировоззрения клиента. Из-за сложности мира и неповторимости личности у каждого клиента свое мироощущение и свои конструкции. Прежде чем применять теории и методы для изменения психики клиента, Келли требовал понимания не только клиента и его проблем, но и того, какие конструкции он использует для описания проблемы.
Тест “хранилище” (Rep Test) – это инструмент, разработанный Келли для определения личностных конструкций клиента. Этот тест (табл. 6.2) помогает определить, как клиент думает о значимых для него людях. Вся психология и психотерапия вращается вокруг межличностных отношений. Языковые конструкции, используемые клиентом для обсуждения окружающих его людей, крайне важны для оценки возможных будущих действий.
Таблица 6.2
ТЕСТ “ХРАНИЛИЩЕ” (укороченный и адаптированный)

ПОХОЖИЕ И ПРОТИВОПОЛОЖНЫЕ
Составьте тройки из этих людей (как будет показано ниже) и для каждой тройки задайте себе следующие три вопроса: Какие двое из этих людей наиболее похожи? В чем они похожи друг на друга и отличаются от третьего? Чем отличается оставшийся третий? Запишите свои ответы в две колонки, обозначенные “Похоже” и “Противоположные”. В этой укороченной версии теста используются двадцать наборов по три:

9 12 1
1 2 3
2 10 7 2 3 4
8 10 12 5 6 7
1 2 7 6 7 8
3 4 5 8 9 10
2 11 12 9 10 11
3 7 9 10 11 12
1 2 4 11 12 1
6 7 9 12 1 2
8 9 1 4 5 11

При сортировке и определении ответов важно, чтобы они не были искусственными, туманными или определялись ролевым именем. Наиболее эффективны качественные и специфичные языковые конструкции.
СПИСОК РОЛЕЙ
Запишите имена следующих людей:

1. Любимый учитель (или учитель, преподававший любимый предмет).
2. Нелюбимый учитель (или преподававший нелюбимый предмет).
3. Ваш муж (жена) или нынешний друг (подруга).
4. Личность противоположного пола, которую вы любили в прошлом.
5. Человек противоположного пола, которого вы не любили в прошлом.
6. Ваша мать.
7. Ваш отец.
8. Ваша сестра (или тот, кто играл похожую роль),
9. Ваш брат (или тот, кто играл похожую роль).
10. Начальник, которого вы любили.
11. Начальник, которого вы не любили.
12. Человек, которого вы хорошо знаете, и с которым конфликтуете, либо тот, кто не любит вас.

Обязательно должно быть 12 разных имен.

Изучите конструкции. Слова из обоих столбцов - часть системы конструкций, которые описывают мир. На этом элементарном уровне не производится подсчет очков. Просто психолог (иногда с помощью клиента) изучает и классифицирует предложенные конструкции. Часто можно систематизировать ответы по полярному принципу: хороший - плохой, высокий - низкий, добрый - подлый. Ведь людям свойственно думать с других вполне определенным способом. Этот тест помогает психологу понять, как клиент думает.

При заполнении этого теста клиенту надо составить список значимых для него людей (отец, мать, учитель, босс). Затем требуется сравнить этих людей: в чем они похожи, а чем отличаются. Если клиент скажет, к примеру, что босс и сестра похожи тем, что оба они “добрые”, то слово “добрый” будет той языковой конструкцией, что важна для клиента. Другой клиент может употребить слово “состоятельный” или “бедный” для той же пары. С помощью серии таких сравнений проясняется довольно стабильный набор конструкций, используемых клиентом для описания значимых людей. Список личных конструкций вооружает психолога знанием ключевых аспектов мировоззрения клиента.
В одном из случаев применения этого теста проявились также ключевые конструкции: “яркий - скучный”, “контролирующий - помогающий”, “теплый - холодный”. В данном случае эти слова принадлежали одному преуспевающему сотруднику социальной службы, у которого были трения с контролером и, по мнению коллег, он слишком близко принимал к сердцу дела клиентов. У него были часто споры с контролером, в результате у него разладились отношения и с остальным персоналом. И список этих ключевых - это подсказка для психолога, в каком направлении вести психотерапевтический процесс.
Практикующие терапевты широко используют стандартизованные тесты на интеллект, личностные особенности, профессиональные интересы и т. д. Келли, безусловно, признает ценность тестов, но он отмечает, что эти тесты были построены с ориентацией на некий внешний стандарт, и в них может быть никак не отражено мировоззрение клиента и его языковые конструкции. Отсюда терапевт может пойти по неправильному пути в диагностике и лечении. С другой стороны, тест - это объективный источник информации о клиенте. Келли отмечает, что “...тестирование расширяет горизонты психолога. Но психологи подчас слишком увлекаются решением очевидных, явных проблем, забывая, с каким типом клиента они имеют дело. То, как психолог воспринимает клиента, часто сказывается на его суждениях. Тесты - это удачный способ избежать предвзятости и рассматривать ситуацию со сбалансированной точки зрения”.
Грамотный психолог должен хорошо знать тесты и их потенциальные возможности.
Приведенный тест - лишь одна из возможностей уяснить языковые конструкции клиента. Можно привести еще одно изречение Келли - “Спроси у клиента”.
Если внимательно слушать клиента, то можно обнаружить, что некоторые ключевые слова в речи клиента возникают вновь и вновь. Эти повторяющиеся слова - ключ к мировоззрению клиента, его системе конструкций. Рассмотрим следующий отрывок:
Клиент 1: На экзамен я шел с гордо поднятой головой. Я полагал, что все знаю, ведь я так усердно учил. А получилось, что я провалился. Обидно! Я этого не ожидал. Я просто надутый дурак.
Клиент 2: На экзамен я шел с гордо поднятой головой. Я полагал, что я все знаю, ведь я так усердно учил. А получилось, что я провалился. Видно, я недостаточно хорошо учил. В следующий раз надо будет обратиться за помощью. Может даже хорошо, что так случилось в начале семестра. Я успею все усвоить.
В двух приведенных примерах одна и та же ситуация по-разному конструируется клиентами. Ключевые конструкции первого клиента - “обидно”, “не выучил”, “набитый дурак”. Второй клиент уже не говорит, что “не выучил”, а признает необходимость еще усерднее учить и искать помощи. И сразу проявляется намерение “усвоить это”. Две системы конструкций весьма различны и требуют от психолога различных подходов. Беседа с клиентом дает в руки психолога информацию о его личной системе языковых конструкций. Надо только уметь внимательно слушать и находить постоянно повторяющиеся ключевые паттерны. Если научиться работать в системе конструкций клиента, то языковые и смысловые барьеры исчезают и процесс психиатрической помощи протекает более гладко.
Для практики можете записать на магнитофон разговор с клиентом или с другом, а затем составить список ключевых конструкций, описывающих разные ситуации. Набор повторяющихся ключевых слов проявляется довольно быстро. Очень важно выявить и свои собственные штампы и конструкции. С помощью теста и изучения языковых паттернов вы можете получить дополнительную информацию о клиенте, в частности заметить то, что раньше пропускали.
Очень важно иметь понятие о жестких и свободных конструкциях, используемых клиентом при разных жизненных состояниях. Клиент обычно использует свободные конструкции, когда речь идет о людях, и жесткие конструкции, когда дело касается денег. Человек может выказать чувство вины по отношению к семье, враждебность в отношениях с хозяином, высокомерие по отношению к иностранцам (Келли, 1955). Жесткие и свободные конструкции можно увязать со стилем принятия решений, описанного в главе II. Личность, которая проявляет некритичную приверженность к одной теории и точке зрения, постоянно повторяющая ключевые слова - это личность, думающая при помощи жестких конструкций. Свободные конструкции характерны для человека, который постоянно меняет направление мыслей и демонстрирует отсутствие обязательности. Келли отмечает, что для людей “жестких” и “свободных” требуются разные терапевтические подходы. Цель человека, по Келли, - выработать конструкции, которые будут достаточно гибкими и способными откликаться на жизненные изменения. Келли считает, что у клиента могут быть жесткие конструкции в одной области, свободные и восприимчивые (или интенциональные) в других областях. Поэтому для одного и того же клиента требуются разные стили терапевтического вмешательства. Жесткие конструкции представлены в следующих суждениях:
1. Нет, вы не можете так утверждать. Мой муж хороший, набожный человек. Он не сделает ничего плохого. А дочь получила то, что заслужила.
2. Нет, это не плохое обращение с ребенком. Это дисциплина. Так было в моей семье. Кроме того, вашим социальным служащим не следует вмешиваться в нашу личную жизнь.
Жесткие конструкции реальности обычно “жестко логичны” и всегда объяснят что угодно и когда угодно. Ваша задача - сделать эти конструкции более гибкими, свободными и помочь клиенту взглянуть на ситуацию иначе. Восприимчивая конструкция в данном случае могла бы выглядеть так: “Я и сейчас считаю, что дисциплина важна, но я полагаю, что мы были с ней слишком жестоки. Ролевой тренинг и новые навыки дали мне возможность по-новому взглянуть на ситуацию”. Вместо жесткой конструкции появился и новый, более разумный н взвешенный стиль.
Для контраста приведем примеры слишком свободных конструкций:
1. Не вижу, зачем понадобилось расписание... Мне нравится спонтанность. Мы ездим всей семьей, когда захотим...
2. Сама удивляюсь, как это я пропустила последнюю встречу. Похоже, забыла... Всегда так случается, меня однажды даже уволили за то, что слишком опоздала. Наша семья всегда лучше делает то, что нам нравится. Я думаю, что проблема с Джейн уладится сама собой, если не дергаться и не тревожиться.
Спонтанность иногда хороша, но подчас она приводит к иммобилизации, которая не дает ничего, кроме отвлеченности.
Пример восприимчивых конструкций может выглядеть так: “Сейчас я стараюсь увязывать свои действия с семьей. Мы все вместе можем посидеть и спланировать, но все же я не позволю, чтобы план доминировал надо мной. Вы были правы, подростки вроде Джейн нуждаются в некоторых правилах. После нескольких разговоров она призналась, что сейчас чувствует к себе больше внимания. Очевидно, она привыкла, что я прежде мало обращала внимание на нее”.
Видно, что клиент стал более разумным и целенаправленным в принятии решений. Цель оценки клиента состоит не в том, чтобы придумать для него ярлык, а в том, чтобы понять, как клиент думает и его отношение к проблеме. Более того, идея восприимчивых, изменяемых конструкций является полной противоположностью концепции, согласно которой клиент “такой-то” и должен делать “так-то”. “Руководство по Диагностике и Статистике” (РДС-З) - см. табл. 6.3 - это пример системы оценки, которая исходит из чисто медицинской диагностики клиента; в ней совершенно не упоминается история клиента и не идет речь о дальнейших действиях. Основа оценки по системе Келли - это действия, которые направлены на изменение мышления клиента.
РДС-З мы приводим здесь потому, что процесс оценки - это очень существенный момент в практике психотерапии. Подход, предложенный Келли, не противоречит этой системе, а скорее помогает вам глубже понять диагноз клиента при работе с РДС-З.
С другой стороны, РДС-З подходит не каждому психологу. Конкретная диагностика “по болезням” не стыкуется с некоторыми психотерапевтическими направлениями (Роджеровская, бихевиоризм). Согласны вы с концепцией РДС-З или нет, но Знакомиться с ней очень полезно - чтобы выработать свою позицию для будущей практики.

Таблица 6.3
РУКОВОДСТВО ПО ДИАГНОСТИКЕ И СТАТИСТИКЕ (РДС-З)
РДС-З - определение заболевания как проблема оценки. В лечебной психиатрии для диагностики наиболее часто используется Руководство по Диагностике и Статистике, выпущенное Американской Психиатрической Ассоциацией (1980). Ознакомьтесь с ним:
В Диагностический перечень РДС-З входят следующие категории (для ясности; приводятся и некоторые подпункты):
1. Нарушения, обычно проявляющиеся в младенческом возрасте, в детстве, у подростков: задержка умственного развития, расстройства питания (анорексия, булимия).
2. Органические умственные нарушения.
3. Функциональные умственные нарушения.
4. Шизофренические расстройства.
5. Параноидальные расстройства.
6. Аффективные расстройства (мания, депрессия).
7. Тревожность (фобия, невроз).
8. .Соматические расстройства (перенос, гипохрондиоз).
9. Диссоциативные расстройства (истерические неврозы, раздвоение личности).
10. Психосексуальные расстройства (транссексуализм, сексуальный садизм).
11. Искусственные расстройства (клиент симулирует расстройство).
12. Трудности приспособления к окружающей среде.
13. Личностные расстройства (пограничные состояния, пассивно-агрессивная личность).

Пациент оценивается по пяти “осям”, в соответствии с диагностической информацией. Ось 1 относится к представленной проблеме, ось 2 - к долговременным расстройствам; вместе они связаны с указанными выше “умственными расстройствами”. Ось 3 относится к физическим нарушениям, ось 4 - к грузу психосоциальных факторов стресса, а ось 5 - к “самому высокому уровню адаптивного функционирования” в прошлом году. Клиент из главы V получил бы такую оценку: ось 1-296,24 - общая депрессия, единственный эпизод с психотическими чертами. Ось 2: 300,40 - депрессивный невроз. Ось 3: недоедание. Ось 4: 6 - крайняя тяжесть (потеря родителей и развод). Ось 5: 4 - адаптированная слабость (умеренное ослабление в профессиональной и социальной деятельности).
Эта методика подвергалась критике из-за того, что она ничего не говорит о том, что же терапевт должен делать, когда диагноз установлен. В этом ее главное отличие от методов Келли, где оценка впрямую связана с планированием последующих действий. Однако РДС-З - это та реальность, с которой должен познакомиться каждый терапевт и психолог. Оно исполняет роль некого универсального языка среди множества направлений психологии и терапии.

Языковые конструкции деловых писем: письмо-просьба

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

Композиция и структура письма-просьбы мало чем отличается от стандартных. Как правило, текст письма-просьбы состоит из двух частей:

1. Вводная часть, где в повествовательной форме излагается существо дела, объясняются побудительные мотивы, причины обращения с просьбой. Здесь часто используются следующие стандартные выражения:

причина обращения

В связи с неполучением... ;

Учитывая социальную значимость... ;

Принимая во внимание (наше многолетнее сотрудничество)... ;

Учитывая (долговременный и плодотворный характер наших деловых связей)... ;

Ввиду несоответствия Ваших действий ранее принятым договоренностям... ;

Ввиду задержки получения груза... ;

Исходя из результатов переговоров по вопросу о... и т. п.

цель обращения

В целях выполнения распоряжения... ;

В целях скорейшего решения вопроса... ;

Для согласования вопросов... ;

В целях обеспечения безопасности прохождения груза... ;

Во избежание конфликтных ситуаций... и т. п.

В соответствии с достигнутой ранее договоренностью…;

В связи с обращением в наш адрес... ;

На основании устной договоренности... ;

На основании нашего телефонного разговора... ;

Согласно постановлению правительства... ;

Согласно протоколу о взаимных поставках... и т. п.

Все перечисленные выражения необходимо использовать с учетом контекста и речевой ситуации.

Почти все стандартные выражения начинаются с производного предлога или с предложного сочетания. Следует обратить внимание на правильность использования этих предлогов с именами существительными, cтоящими в основном в родительном и дательном падежах.

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

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

Просьба может излагаться от первого лица единственного числа ("Прошу..."), от первого лица множественного числа ("Просим..."), от третьего лица единственного числа (в этом случае употребляются существительные с собирательным значением: "Дирекция просит...", "Администрация просит...", "Совет трудового коллектива просит..." и т. п.), от третьего лица множественного числа, если употребляется несколько существительных с собирательным значением (Администрация и Совет трудового коллектива просят...).

Если письмо-просьба является многоаспектным, то композиция второй части такого письма может выглядеть следующим образом (части композиции должны соответствовать абзацному членению текста):

Прошу... (Просим...)

Одновременно прошу... (Также просим...)

А также прошу... (А также просим...)

При составлении письма-просьбы следует учесть и такие рекомендации:

1. Излагая просьбу, подчеркните вашу заинтересованность или заинтересованность вашей организации в ее исполнении.

2. Ни при каких условиях не начинайте письмо со слова "Прошу..." - тактичнее сначала объяснить мотивы вашего обращения (даже в том случае, когда все детали уже согласованы с адресатом).

3. Не спешите благодарить адресата заранее. Этим вы ставите и себя, и адресата в неловкое положение. Старайтесь поблагодарить, когда узнаете, что ваша просьба удовлетворена.

При формулировке просьбы часто используют следующие стандартные выражения:

Обращаемся (обращаюсь) к Вам (вам) с просьбой...

Об отправке в наш адрес...

О направлении в мой адрес...

О высылке в адрес нашей организации...

О предоставлении мне...;

Просим (прошу) Вас (вас)...

Сообщить (нам)...

Выслать (мне)...

Срочно представить...

Немедленно доложить...

Известить (руководство предприятия) о...

Проинформировать меня о...;

Прошу Вашего (вашего) согласия на...

Отправку в адрес...

Предоставление нам...

Ознакомление... с...

Передачу... следующего оборудования... ;

Просим Вашего (вашего) содействия в...

Получении...

Скорейшей отправке...

Предоставлении дополнительной информации относительно...

Проведении... ;

Прошу Ваших (ваших) указаний...

На заключение договора о...

На выдачу со склада предприятия... представителю...

На оформление документов о...

На пересмотр... ;

Просим Вас не отказать в любезности и... .

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.gramma.ru/

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

Композиция и структура письма-просьбы мало чем отличается от стандартных. Как правило, текст письма-просьбы состоит из двух частей:

1. Вводная часть, где в повествовательной форме излагается существо дела, объясняются побудительные мотивы, причины обращения с просьбой. Здесь часто используются следующие стандартные выражения:

причина обращения

В связи с неполучением... ;

Учитывая социальную значимость... ;

Принимая во внимание (наше многолетнее сотрудничество)... ;

Учитывая (долговременный и плодотворный характер наших деловых связей)... ;

Ввиду несоответствия Ваших действий ранее принятым договоренностям... ;

Ввиду задержки получения груза... ;

Исходя из результатов переговоров по вопросу о... и т. п.

цель обращения

В целях выполнения распоряжения... ;

В целях скорейшего решения вопроса... ;

Для согласования вопросов... ;

В целях обеспечения безопасности прохождения груза... ;

Во избежание конфликтных ситуаций... и т. п.

В соответствии с достигнутой ранее договоренностью…;

В связи с обращением в наш адрес... ;

На основании устной договоренности... ;

На основании нашего телефонного разговора... ;

Согласно постановлению правительства... ;

Согласно протоколу о взаимных поставках... и т. п.

Все перечисленные выражения необходимо использовать с учетом контекста и речевой ситуации.

Почти все стандартные выражения начинаются с производного предлога или с предложного сочетания. Следует обратить внимание на правильность использования этих предлогов с именами существительными, cтоящими в основном в родительном и дательном падежах.

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

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

Просьба может излагаться от первого лица единственного числа ("Прошу..."), от первого лица множественного числа ("Просим..."), от третьего лица единственного числа (в этом случае употребляются существительные с собирательным значением: "Дирекция просит...", "Администрация просит...", "Совет трудового коллектива просит..." и т. п.), от третьего лица множественного числа, если употребляется несколько существительных с собирательным значением (Администрация и Совет трудового коллектива просят...).

Если письмо-просьба является многоаспектным, то композиция второй части такого письма может выглядеть следующим образом (части композиции должны соответствовать абзацному членению текста):

Прошу... (Просим...)

Одновременно прошу... (Также просим...)

А также прошу... (А также просим...)

При составлении письма-просьбы следует учесть и такие рекомендации:

1. Излагая просьбу, подчеркните вашу заинтересованность или заинтересованность вашей организации в ее исполнении.

2. Ни при каких условиях не начинайте письмо со слова "Прошу..." - тактичнее сначала объяснить мотивы вашего обращения (даже в том случае, когда все детали уже согласованы с адресатом).

3. Не спешите благодарить адресата заранее. Этим вы ставите и себя, и адресата в неловкое положение. Старайтесь поблагодарить, когда узнаете, что ваша просьба удовлетворена.

При формулировке просьбы часто используют следующие стандартные выражения:

Обращаемся (обращаюсь) к Вам (вам) с просьбой...

Об отправке в наш адрес...

О направлении в мой адрес...

О высылке в адрес нашей организации...

О предоставлении мне...;

Просим (прошу) Вас (вас)...

Сообщить (нам)...

Выслать (мне)...

Срочно представить...

Немедленно доложить...

Известить (руководство предприятия) о...

Проинформировать меня о...;

Прошу Вашего (вашего) согласия на...

Отправку в адрес...

Предоставление нам...

Ознакомление... с...

Передачу... следующего оборудования... ;

Просим Вашего (вашего) содействия в...

Получении...

Скорейшей отправке...

Предоставлении дополнительной информации относительно...

Проведении... ;

Прошу Ваших (ваших) указаний...

На заключение договора о...

На выдачу со склада предприятия... представителю...

На оформление документов о...

На пересмотр... ;

Просим Вас не отказать в любезности и... .

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.gramma.ru/


Репетиторство

Нужна помощь по изучению какой-либы темы?

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

  • Программирование
  • Скорее всего, из разработчиков, пользующихся Java, и в особенности Android-разработчиков многие уже знают про Kotlin . Если нет, то никогда не поздно узнать. Особенно если Java не устраивает вас чем-то как язык - что наверняка так - или если вы владеете Scala, но и этот язык вам не подходит, что тоже не исключено.

    Если кратко, то Kotlin - это статически типизированный язык, ориентирующийся на JVM, Android (компилируется в байт-код Java) и веб (компилируется в JavaScript). JetBrains, разработчик языка, ставили своей целью лаконичный и понятный синтаксис, быструю компиляцию кода и типобезопасность. Язык пока находится в предрелизном состоянии, но всё стремительно движется к релизу.

    К слову, после Java «переучиться» на Kotlin не составит никакого труда, в этом поможет и понятный (субъективно) синтаксис, и полная совместимость с кодом на Java в обе стороны, что позволяет Java-программисту использовать весь привычный набор библиотек.

    Ещё одной целью разработчиков языка была возможность его гибкого использования, в том числе для создания библиотек, внешне похожих на DSL , и собственных конструкций (хороший пример типобезопасного builder"а для HTML; про реализацию yield). У Kotlin есть несколько фич, которые позволят решать эти задачи эффективно и красиво. Давайте с ними познакомимся.

    Расширения (Extensions)

    В Kotlin есть возможность дополнять функционал произвольного класса, не наследуясь от него, функциями (и свойствами) расширения. Такая же возможность есть, например, в C#. Стоит отметить, что поведение функций расширения отличается от member functions: вызовы функций расширения разрешаются статически, по объявленному типу, а не виртуально.

    Fun String.words(): List { return this.split("\\W".toRegex()) } //сокращённая запись функции, состоящей только из return statement fun List.rotate(n: Int): List = drop(n) + take(n) val str = "a quick brown fox jumps over the lazy dog" val words = s.words() val yoda = words.rotate(5) println(yoda.joinToString(" ") // over the lazy dog a quick brown fox jumps
    toRegex(), drop(n), take(n) и joinToString(" ") в примере - это тоже функции расширения.

    Альтернативный синтаксис для вызова функций

    1. Функцию экземпляра или функцию расширения, имеющую только один аргумент, можно вызывать в инфиксной форме:

    Val squares = (1..100) map { i -> i * i } //эквивалентно (1..100).map({i -> i * i }) val multOfThree = squares filter { it % 3 == 0 } //it можно использовать в лямбда-выражении с одним аргументом для его обозначения
    2. Если последний аргумент функции имеет функциональный тип, то при вызове функции можно соответствующее лямбда-выражение писать за круглыми скобками, просто в фигурных:

    Val list = arrayListOf(1, 2, 3) with(list) { add(4) add(5) add(6) removeIf { it % 2 == 0 } } //эквивалентно with(list, { ... })

    Встраиваемые (inline) функции

    В Kotlin есть аннотация @inline , которой можно пометить функцию. После этого при компиляции код этой функции, и её функциональных аргументов будет подставляться в места вызова. С одной стороны, это даёт некоторые новые возможности (non-local return, reified generics), с другой - есть ограничение, что функциональные аргументы inline-функции в её теле можно только вызывать или передавать в другие inline-функции. Основной же действие @inline - на производительность: происходит меньше вызовов функций и, что важно, не создаются анонимные классы и их объекты для каждого лямбда-выражения.

    Большая часть функций расширения из стандартной библиотеки вроде тех же map и filter .

    Небольшой пример:

    @inline fun Iterable.withEach(action: T.() -> Unit) = forEach { it.action() } //в теле метода: var i = 0 val lists = (0..5) map { ArrayList() } lists.withEach { add(++i) }
    Несмотря на то, что этот код пестрит лямбда-выражениями, ни одного анонимного класса для них создано не будет, и i даже не попадёт в closure. Просто праздник!

    Попробуем?

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

    Val a = someInt() val b = someList() val c = (a % b.size()) butIf (it < 0) { it + b.size() } //аналогично (a % b.size()) let { if (it < 0) it + b.size() else it }
    Прямо так, к сожалению, не получится, но постараемся сделать что-то похожее.

    Первая попытка: функция с двумя функциональными аргументами

    fun T.butIf(condition: (T) -> Boolean, thenFunction: (T) -> T): T { if (condition(this)) { return thenFunction(this) } return this }
    Вот так её можно использовать:

    Val c = (a % b.size()).butIf({it < 0}) {it + b.size()}
    Если сюда добавить inline, должно получиться достаточно эффективно. Позже посмотрим, насколько, а пока попробуем добиться более красивого синтаксиса для этой конструкции.

    Вторая попытка: красивый синтаксис

    abstract class _ButIfPrefix constructor(var originalValue: T) { abstract fun then(thenFunction: (T) -> T): T object trueBranch: _ButIfPrefix(null) { override final inline fun then(thenFunction: (Any?) -> Any?) = thenFunction(originalValue) } object falseBranch: _ButIfPrefix(null) { override final inline fun then(thenFunction: (Any?) -> Any?) = originalValue } } fun T.butIf(condition: (T) -> Boolean): _ButIfPrefix { val result = (if (condition(this)) _ButIfPrefix.trueBranch else _ButIfPrefix.falseBranch) as _ButIfPrefix result.originalValue = this return result }
    Этот вариант не рассчитан на многопоточность! Для использования его в нескольких потоках нужно будет завернуть экземпляры в ThreadLocal, что ещё немного ухудшит производительность.

    Здесь будет цепочка из двух инфиксных вызовов, первый - функция расширения на самом объекте, второй - функция экземпляра _ButIfPrefix . Пример использования:

    Val c = (a % b.size()) butIf { it < 0 } then { it + b.size() }

    Третья попытка: каррирование

    Попробуем так:

    Fun T.butIf0(condition: (T) -> Boolean): ((T) -> T) -> T { return inner@ { thenFunction -> return@inner if (condition(this)) thenFunction(this) else this } }
    Использование:

    Val c = (a % b.size()).butIf { it < 0 } ({ it + b.size() })
    По сравнению с первой попыткой изменилось расположение скобок в вызове. :)
    Учитывая inline, мы можем ожидать, что работать этот вариант будет так же, как первый.
    Это можно проверить, взглянув на байт-код: у IntelliJ IDEA есть утилита, показывающая байт-код, в который скомпилируется код на Kotlin, на лету, и даже можно посмотреть, как будет отличаться байт-код с @inline и без.

    Производительность

    Давайте теперь посмотрим, что будет с производительностью нашей конструкции в разных вариантах.

    Тестировать будем на таком примере:

    Val range = -20000000..20000000 val list = ArrayList() //warm-up for (i in range) { list add i % 2 } list.clear() val timeBefore = System.currentTimeMillis() for (i in range) { val z = (i % 2) butIf { it < 0 } then { it + 2 } //и аналоги list add z } println("${System.currentTimeMillis() - timeBefore} ms")
    Задно добавим к сравнению такой код, который будет эталоном производительности:

    Val d = it % 2 val z = if (d < 0) d + 2 else d ...
    По итогам пятидесятикратного запуска с последующим усреднением времени получилась следующая таблица:

    Как видно, производительность более простых первого и третьего вариантов достаточно близка к эталону, в некоторых случаях читаемость кода можно «купить» за такое увеличение времени работы. Вариант с более красивым синтаксисом устроен сложнее и работает, соответственно, дольше, но если хочется конструкций, совсем похожих на DSL, то и он вполне применим.

    Итого

    Kotlin предоставляет действительно гибкие возможности для «кастомизации» языка, но за них иногда будет нужно платить производительностью. Аннотация @inline может помочь улучшить ситуацию, если в вашем коде есть функции первого порядка. В любом случае, думаю, у вас найдутся хорошие сценарии применения для всего этого.

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

    Именно для тех, кто только начинает учить английский, у кого в голове ещё каша и кто хочет из всего этого грамматического хаоса вычленить так называемые must have или в нашем случае must know, я и написала эту статью. Сегодня расскажу вам об основных конструкциях и речевых оборотах, которые важно знать и которые помогут выражать свои мысли.

    1. There is/there are

    Основная цель этой конструкции - рассказать собеседнику, что где-то что-то находится, присутствует. Мы используем there is/there are , когда рассказываем о том, какие достопримечательности есть в нашем городе, когда описываем свою комнату или дом, когда рассказываем, что находится в нашей сумке или рюкзаке.

    Обратите внимание, что предложения с этой конструкцией переводятся с конца, а there is/there are вообще не переводится. There is мы используем с единственным числом, а there are , соответственно, со множественным.

    Например:

    2. To be going to

    Конструкция to be going to переводится как «собираться». Мы используем её, когда говорим о том, что мы что-то точно сделаем в будущем. Важно помнить, что эта конструкция работает в тех случаях, когда решение было принято до разговора, то есть вы решили учить итальянский и после принятия решения вы разговариваете с другом и делитесь с ним своим планом:

    I am going to learn Italian.

    Теперь давайте рассмотрим, как внедрить её в предложение. Глагол to be как всегда меняется на am/is/are/was/were/will be в зависимости от местоимения и времени; going to остаётся неизменным и переводится как «собираться», а дальше обязательно идёт глагол, который сообщает, что именно вы собираетесь делать.

    They are going to get married this winter. - Они собираются пожениться этой зимой.
    We are going to earn a lot of money next summer. - Мы собираемся заработать много денег следующим летом.
    I am going to leave for London tomorrow. - Я собираюсь уехать в Лондон завтра.

    3. The way

    Этот речевой оборот является, на мой взгляд, самым интересным, потому что его можно применить ко множеству ситуаций. Само слово way переводится как «дорога» и «направление». Очень часто новички в английском не могут понять, какое отношение имеет дорога, например, к описанию человека. О таких ситуациях мы сейчас и поговорим.

    Оборот the way может передавать образ действия. Например, вы можете сказать, что вам нравится то, как она танцует, или то, как она выглядит. В данном случае «то, как» и есть наш оборот the way :

    I like the way you dance. - Мне нравится то, как ты танцуешь.
    He likes the way I cook. - Ему нравится то, как я готовлю.

    Также оборот the way можно перевести как «способ». Например:

    Working hard is the only way to get your goal. - Усердно работать - это единственный способ достигнуть твоей цели.

    Хочется обратить внимание, что это не единственное значение и возможность употребления the way . С этим оборотом есть и устойчивые выражения, и глагольные конструкции, но на первое время рассмотренного выше значения будет вполне достаточно.

    4. It takes

    Эта конструкция тоже достаточно распространённая и точно будет вам полезна в поездках за границу. Эта фраза используется тогда, когда мы говорим, сколько времени занимает то или иное действие. Мы можем использовать её в вопросе о том, сколько времени займёт полёт до точки назначения или сколько времени займёт поездка на такси до центра города.

    It takes me an hour to get to work. - Путь до работы занимает у меня один час.
    The flight to Moscow takes 3 hours. - Полёт до Москвы занимает три часа.
    My morning exercises take me 15 min. - Мои утренние упражнения занимают у меня 15 минут.

    Давайте подведём итог и ещё раз повторим, для каких ситуаций подходит каждая из этих конструкций:

    • there is/there are используем, когда рассказываем, какие предметы находятся в комнате, доме, сумке, городе и так далее;
    • to be going to используем, когда собираемся что-то сделать;
    • the way подходит для описания образа действия;
    • it takes мы используем, когда сообщаем, сколько времени занимает то или иное действие.

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