Для чего нужен параллелизм
Параллелизм в литературе. Примеры
Параллелизм в литературе — это тождественное или одинаковое синтаксическое построение отрезков текста или предложений.
В художественных произведениях для создания образной, яркой, привлекающей внимание читателей речи широко используются различные приемы и средства. К образно-выразительным средствам художественной речи относятся, в первую очередь, тропы и стилистические (риторические) фигуры. Укажем некоторые из них:
Рассмотрим одну из фигур образной речи и узнаем, что такое параллелизм в художественной литературе.
Параллелизм — это…
Понятие «параллелизм» было известно древним грекам, которые использовали эту фигуру речи в риторике, где она обозначала прием повторения или сопоставления сходных элементов речи.
В переводе с греческого языка слово parallelos буквально значит «идущий рядом». Этот термин знаком многим естественным наукам. Его используют математики, физики, биологи. В литературе им обозначают один из приемов поэтической речи, состоящий в сопоставлении двух явлений путем параллельного изображения. Такое сопоставление подчеркивает сходство или различие реалий действительности и в то же время сообщает поэтической речи особенную выразительность, которая воздействует на читателя соответствующим образом. В зависимости от контекста произведения эта фигура речи имеет самое разнообразное применение, назначение и смысл.
Вот какое определение, что такое параллелизм в литературе, дается в Википедии:
В художественной речи параллельными элементами могут быть отдельные звуки, слова, словосочетания, предложения или части предложений.
Параллелизм тематический
В литературе наиболее распространен параллелизм тематический, в основе которого лежит принцип сопоставления двух явлений, близких по своему содержанию. Например, понаблюдаем, как мастерски его использует поэт М.Ю. Лермонтов в стихотворении «Тучи»:
Тучки небесные, вечные странники!
Степью лазурною, цепью жемчужною
Мчитесь вы, будто как я же, изгнанники
С милого севера в сторону южную.
В этом художественном произведении автор проводит образную параллель «тучки небесные — странники» и изгнанник, странник-поэт.
Синтаксический параллелизм
Синтаксический параллелизм свойственен тексту или его отдельным смежным частям, в которых предложения, следующие друг за другом, автор строит по одному и тому же синтаксическому принципу, например, соблюдая один и тот же порядок членов предложения:
Полный синтаксический параллелизм характеризуется тем, что что в его составе две и более синтаксические единицы имеют равное количество одинаково расположенных компонентов:
В лоб целовать — заботу стереть.
В лоб целую.
В глаза целовать — бессонницу снять.
В глаза целую.
Синтаксический параллелизм бывает неполным, например:
В огромном городе моём — ночь.
Из дома сонного — прочь.
Примеры синтаксического параллелизма в литературе
Когда волнуется желтеющая нива,
И свежий лес шумит при звуке ветерка,
И прячется в саду малиновая слива
Под тенью сладостной зеленого листка.
Тогда смиряется души моей тревога,
Тогда расходятся морщины на челе, —
И счастье я могу постигнуть на земле,
И в небесах я вижу бога.
М. Ю. Лермонтов. Когда волнуется желтеющая нива
Я был вам звенящей струной,
Я был вам цветущей весной,
Но вы не хотели цветов
И вы не расслышали слов.
Как мы шли в ночную сырость,
Как бежали мы сквозь тьму —
Мы не скажем командиру,
Не расскажем никому.
М. А. Светлов. В разведке.
И молиться не учи меня. Не надо!
К старому возврата больше нет.
Ты одна мне помощь и отрада,
Ты одна мне несказанный свет.
С. Есенин. Письмо матери.
Мы любим всё — и жар холодных числ,
И дар божественных видений,
Нам внятно всё — и острый галльский смысл,
И сумрачный германский гений…
Параллелизм в народной песне
Параллелизм различных видов характерен для устного народного творчества — народной песни, частушки и т. д. Наиболее распространенным видом параллелизма в народном творчестве является сопоставление явлений природы с событиями человеческой жизни:
Как светил да светил месяц по полуночи,
Светил в половину;
Как скакал да скакал один добрый молодец
Без верной дружины…
Здесь синтаксический параллелизм сочетается с анафорой. Понаблюдаем за использованием параллелизма в народной песне:
Раскудрявая березка,
Ветра нет, а ты шумишь;
Ретиво моё сердечко,
Горя нет, а ты болишь…
Отрицательный параллелизм
Наряду с прямым параллелизмом в своем творчестве поэты используют параллелизм отрицательный, восприняв этот прием из народной песни. Отрицательный параллелизм строится так, что первый ряд в поэтическом сравнении начинается с частицы «не».
Например, читаем у А. С. Пушкина:
Не стая воронов слеталась
На груды тлеющих костей,
За Волгой, ночью, вкруг огней
Удалых шайка собиралась…
Не ветер бушует над бором,
Не с гор побежали ручьи,
Мороз-воевода дозором
Обходит владенья свои.
Н. А. Некрасов. Мороз, Красный нос.
Не напрасно дули ветры,
Не напрасно шла гроза.
Кто-то тайным тихим светом
Напоил мои глаза.
Введение в параллелизм
Сейчас почти невозможно найти современную компьютерную систему без многоядерного процессора. Даже недорогие мобильные телефоны предлагают пару ядер под капотом. Идея многоядерных систем проста: это относительно эффективная технология для масштабирования потенциальной производительности процессора. Эта технология стала широкодоступной около двадцати лет назад, и теперь каждый современный разработчик способен создать приложение с параллельным выполнением для использования такой системы. На наш взгляд, сложность параллельного программирования часто недооценивается.
В этой статье мы попробуем разработать простейшее приложение, использующее для распараллеливания средства C++ и сравнить его с версией, использующей Intel oneTBB.
Операционные системы и язык C++ предоставляют интерфейсы для создания потоков, которые потенциально могут выполнять один и тот же или различные наборы инструкций одновременно.
Основными источниками проблем многопоточного выполнения являются data races (гонки данных) и race conditions (состояние гонки). Простыми словами, C++ определяет data race как одновременные и несинхронизированные доступы к одной и той же ячейке памяти, при этом один из доступов модифицирует данные. В то время как race conditions является более общим термином, описывающим ситуацию, когда результат выполнения программы зависит от последовательности или времени выполнения потоков.
Основная проблема race conditions заключается в том, что они могут быть незаметны во время разработки программного обеспечения и могут исчезнуть во время отладки. Такое поведение часто приводит к ситуации, когда приложение считается законченным и корректным, но у конечного пользователя периодически возникают проблемы, часто неясного характера. Для решения проблемы data race, C++ предоставляет набор интерфейсов, таких как атомарные операции и примитивы для создания критических секций (мьютексы).
Атомарные операции — это мощный инструмент, который позволяет избежать data races и создавать эффективные алгоритмы синхронизации. Однако, это создает замысловатую модель памяти C++, которая представляет собой еще один уровень сложности.
Давайте попытаемся распараллелить простую задачу вычисления суммы элементов массива. Решение этой проблемы в однопоточной программе может выглядеть следующим образом:
int summarize(const std::vector & vec) <
Выполнение алгоритма в однопоточной программе:
Для того чтобы исполнить алгоритм параллельно, нам нужно разделить его на независимые части, которые могут обрабатываться независимо друг от друга. Самый простой подход состоит в том, чтобы разделить обрабатываемые элементы на несколько частей и обработать каждую часть в своем собственном потоке.
Однако в этом коде есть сложность, которая не позволяет нам просто разделить массив на две равные части и обрабатывать его параллельно. Все элементы суммируются в одну переменную, доступ к которой приведёт к data race, потому что один из потоков может записывать эту переменную одновременно с другим потоком, считывающим или записывающим в данную переменную.
Составной оператор (оператор +=), по сути, состоит из трех операций: чтение из памяти, операция сложения и сохранение результата в памяти. Эти операции могут выполняться параллельно разными потоками, что может привести к неожиданным результатам. На следующем рисунке показан возможный порядок операций на временной шкале двух потоков. Основная сложность заключается в том, что оба потока могут не получить результат операций другого потока и перезаписать данные. C++ трактует такие ситуации как data race, и поведение программы, в таких случаях, не определено. Например, в результате мы можем получить четыре, ожидая шесть (как показано на рисунке). В худшем случае данные могут быть в непредсказуемом состоянии.
Мьютекс имеет два основных интерфейса: блокировка (lock) и разблокировка (unclock). Блокировка переводит мьютекс в эксклюзивное владение, а разблокировка освобождает его, делая доступным для других потоков. Поток, который не может заблокировать мьютекс, будет остановлен, ожидая, пока другой поток освободит данный мьютекс.
Код, защищенный мьютексом, также называется критической секцией. Важное наблюдение состоит в том, что второй поток, который не смог заблокировать мьютекс, не будет делать ничего полезного, во время того, пока первый поток находится в критической секции. Таким образом, размер критической секции может значительно повлиять на общую производительность системы.
Давайте попробуем сделать наш последовательный пример параллельным. Для создания потоков используем библиотеку
int summarize(const std::vector & vec) <
int num_threads = 2;
auto thread_func = [&sum, &vec, &m] (int thread_id) <
// Делим итерационное пространство на 2 части
int start_index = vec.size() / 2 * thread_id;
int end_index = vec.size() / 2 * (thread_id + 1);
for (int i = start_index; i
// Используем lock_guard, имплементирующий RAII идиому:
// (т.е. вызван mutex.lock())
for (int thread_id = 0; thread_id
// Запускаем поток со стартовой функцией `thread_func`
// и аргументом функции ` thread_id`
threads[thread_id] = std::thread(thread_func, thread_id);
for (int thread_id = 0; thread_id
// Нам нужно дождаться всех потоков
// до разрушения std::vector
int summarize(const std::vector & vec) <
int num_threads = 2;
auto thread_func = [&sum, &vec, &m] (int thread_id) <
// Делим итерационное пространство на 2 части
int start_index = vec.size() / 2 * thread_id;
int end_index = vec.size() / 2 * (thread_id + 1);
for (int i = start_index; i
// Используем lock_guard, имплементирующий RAII идиому:
// (т.е. вызван mutex.lock())
// (т.е. вызван mutex.unlock())
for (int thread_id = 0; thread_id
// Запускаем поток со стартовой функцией `thread_func`
// и аргументом функции ` thread_id`
threads[thread_id] = std::thread(thread_func, thread_id);
for (int thread_id = 0; thread_id
// Нам нужно дождатьсявсех потоков до
auto thread_func = [&sum, &vec, &m] (int thread_id) <
// Делим origin rangeитерационное пространство на 2 части
int start_index = vec.size() / 2 * thread_id;
int end_index = vec.size() / 2 * (thread_id + 1);
for (int i = start_index; i
// Используем lock_guard, имплементирующий RAII идиому:
// (т.е. вызван mutex.lock())
// (т.е. вызван mutex.unlock())
int summarize(const std::vector & vec) <
int sum = tbb::parallel_reduce(tbb::blocked_range <0, vec.size()>, 0,
[&vec] (const auto& r, int init) <
oneTBB использует подход, основанный на work stealing алгоритме распределения задач, предоставляя обобщенные параллельные алгоритмы, применимые для широкого спектра приложений. Основное преимущество подхода oneTBB заключается в том, что он позволяет легко создавать параллелизм в различных независимых компонентах приложения.
В нашей серии статей мы продемонстрируем, как oneTBB можно использовать для динамической балансировки нагрузки и распараллеливания графов. Помимо параллелизма задач на процессоре, мы покажем, как oneTBB можно использовать в качестве уровня абстракции для балансировки вычислений между несколькими разнородными устройствами, такими как GPU.
Для чего используется синтаксический параллелизм?
Синтаксический параллелизм – это такое положение компонентов синтаксической структуры, когда ее члены не зависят друг от друга и имеют совпадающие линии синтаксических связей. Например, в предложении Мальчик пишет хотя и медленно, но без ошибок – словоформы медленно и без ошибок находятся в отношениях синтаксического параллелизма: грамматическая форма и той и другой мотивирована одним и тем же словом – пишет. Принцип параллелизма лежит в основе сочинительных отношений, но охватывает более широкий круг явлений. Параллелизм имеет место и там, где сочинения нет, например: Шел по паркету, как по льду. Параллелизм и подчинение не исключают друг друга, если оформляются на разных уровнях – на уровне словоформ и на уровне союза. В простом предложении параллелизм – это отношение на уровне словоформ. Ср.: Я люблю тебя и брата; Люблю тебя как брата. В обоих случаях слова ты, брат ведут себя одинаково. Параллелизм словоформ допускает подчинительные отношения на уровне союза (второй пример). На уровне же словоформ параллелизм и подчинение исключают друг друга: при параллелизме слова не имеют признаков зависимости одного от другого.
Примеры конструкций с параллельными членами: Уезжаю далеко, но не надолго; Здесь нужен человек дельный и с умом; Книга лежит в шкафу, на верхней полке; Все ее любили, особенно дети; Петю встретили как сына; У нее, как у матери, густые волосы; Люблю весну больше, чем лето; Встретимся уже очень скоро, а именно – в воскресенье; Остался совсем один, да к тому же без средств к существованию; Она поет как птичка; Приду вечером, в 6 часов; Мнение о вас как о специалисте самое высокое.
Принцип параллелизма хорошо иллюстрирует графическая схема вертикальных и горизонтальных связей: параллелизм – это всегда отношение по горизонтали:
человек мнение все –––––––– дети
дельный –––– с умом о вас ––––– о специалисте любят
Как видно из примеров, помимо сочинения однородных членов, параллелизм служит выражению отношений сравнения, уподобления, тождества, общего и частного и некоторых других.
Параллельные члены только тогда образуют конструкцию, когда между ними устанавливаются семантико-синтаксические отношения, выражаемые союзами или их функциональными эквивалентами.
Среди конструкций с параллелизмом существенно различаются два основных типа: конструкция типа ряд и трехчленная конструкция с двусторонней связью. Каждый из этих типов объединяет разные виды союзных конструкций, имеющих свои семантические и грамматические особенности.
Параллелизм
Всего получено оценок: 71.
Всего получено оценок: 71.
В любом литературном произведении существует множество риторических фигур, которые определяют стиль автора. Одной из таких фигур является параллелизм. Что такое параллелизм, и для чего он нужен в литературе?
Параллелизм в литературе
Параллелизм – одинаковое грамматическое или синтаксическое построение отрезков речи, которые создают единый поэтический образ.
Параллельными могут быть не только слова, но и предложения, части предложений, словосочетания
Понятие «параллелизм» было известно еще древним грекам. С греческого языка слово parallelos означает «идущий рядом». Эта фигура речи призвана подчеркнуть сходства или различия реалий действительности, а также показывает особую выразительность, свойственную данному тексту.
Существует несколько видов параллелизма, которые распространены в литературе:
Не ветер бушует над бором,
Не с гор побежали ручьи,
Мороз-воевода дозором
Обходит владенья свои.
Отрицательный параллелизм часто встречается в народных песнях в русском языке
Что мы узнали?
Данная статья поможет школьникам познакомиться с таким понятием, как параллелизм, научит различать его виды. Здесь кратко дается определение параллелизма, его виды и примеры из текстов, на которых наглядно можно проследить, к какому виду параллелизма данный текст относится.
Что такое синтаксический параллелизм: определение, функции, примеры
Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru.
Подчеркнуть определенную мысль, акцентировать внимание на связи между конструкциями, выразить экспрессию – всё это автор может сделать разными способами.
Однако достичь всех трех целей одновременно помогает синтаксический параллелизм. Это явление редко изучают в школе.
Более того, даже в университетском курсе синтаксиса для языковедов данной темы может не быть.
Тем интереснее узнать, что являет собой этой прием, как его использовать и где он будет уместен. Об этом и поговорим в нашей статье.
Что такое синтаксический параллелизм в языке и литературе
Начнем с определения. Согласно «Толковому переводоведческому словарю», который дает наиболее приближенное именно к лингвистике трактование:
«Параллелизм – это одинаковое синтаксическое построение соседних предложений, высказываний или отрезков речи».
То есть речь идет о том, что в следующих друг за другом единицах синтаксиса слова, соотносимые с определенными частями речи и функциями члена предложения, должны стоять в одинаковом порядке. Это могут быть как словосочетания, так и предложения или более крупные конструкты.
Например, в строке Есенина «Синий туман, снеговое раздолье…» оба словосочетания построены по принципу «зависимое слово, определение + главное слово, определяемое».
«Большой энциклопедический словарь» говорит о том же явлении, но несколько шире. Литературоведы подают такой термин:
«Параллелизм в поэтике – тождественное или сходное расположение элементов речи в смежных частях текста, которые, соотносясь, создают единый поэтический образ».
Это более широкий термин, включающий не только синтаксический, но и ритмический, а также композиционный параллелизм.
Классификация
Поскольку данное явление может быть воплощено на разных уровнях, выделяют три вида в зависимости от типа языковой единицы, в котором он воплощен. Итак, бывает параллелизм:
Также в зависимости от того, насколько идеально выдержан порядок слов, выделяют полный (100% совпадение) и неполный (с отклонениями) синтаксический параллелизм.
По количеству повторяющихся элементов он может быть двучленным или многочленными (также называют сложным).
Также выделяются особые, неклассические формы синтаксического параллелизма:
Последние два варианта характеры в основном для русского фольклора, в других же текстах, за исключением поэзии, встречаются редко.
Функции
Синтаксический параллелизм используют авторы различных текстов. Это не только художественные произведения. Многие риторы применяют прием в своих выступлениях, а журналисты – в публицистике.
Он помогает достичь следующих целей:
Все эти функции могут быть применены в упомянутых выше текстах. Однако чаще всего данная фигура встречается все же в фольклоре. Ученые считают, что во все остальные направления литературы она перешла именно из народного творчества.
Примеры
В творчестве русских и зарубежных писателей можно найти много примеров синтаксического параллелизма. Например, читаем у С.А.Есенина:
«Отчего прослыл я шарлатаном?
Отчего прослыл я скандалистом?»
Или у его предшественника М.Ю.Лермонтова:
«Зато лежишь в густой траве,
И дремлешь под широкой тенью…»
В романсах А.Н.Апухтина:
«Ты не согреешь этот холод,
Ты не осветишь эту тьму…»
Приведем несколько своих примеров для синтаксического параллелизма
Важно понимать, что единицы, на которых основана параллель, должны не только выполнять ту же роль в предложении, но и быть представителями одной части речи. К примеру, можно сказать: «Мне нравится пение, танцы и рисование». Но вот «Мне нравится пение, танцы и рисовать » уже не будет примером параллелизма.
Итак, сегодня мы раскрыли тему сложной фигуры языка, которая рассматривается на границе лингвистики и литературоведения. Узнали, что такое синтаксический параллелизм, каковы его функции и разновидности, а также рассмотрели примеры употребления.