Прочьти или прочти как пишется

Как правильно? 18.11.2020всегда нужно ставить ударение на второй последний слог, то есть произносить звонит!как правильно прочтите или прочитайте, прочти или

Как правильно?

18.11.2020

Всегда нужно ставить ударение на второй (последний) слог, то есть произносить звонИт!

Как правильно «прочтите» или «прочитайте», «прочти» или «прочитай», «прочёл» или «прочитал»?

Эти слова равноправны и взаимозаменяемы кроме случая, когда глагол прочесть означает «провести какое-либо время за чтением». Можно сказать «я прочитал день напролёт» (весь день провел за чтением), но нельзя сказать «я прочёл день напролёт». В остальных случаях можно использовать оба варианта:

  • Прочтите второй абзац на пятой странице. — Прочитайте второй абзац на пятой странице.
  • Прочтите книгу. — Прочитайте книгу.
  • Прочтите на каникулах «Гарри Поттера». — Прочитайте на каникулах «Гарри Поттера».
  • Прочти сонет Шекспира. — Прочитай сонет Шекспира.
  • Прочти на память стих. — Прочитай на память стих.
  • Прочти с выражением. — Прочитай с выражением.
  • Прочла от корки до корки. — Прочитала от корки до корки.
  • Прочёл без остановки. Прочитал без остановки.

Правило

Для начала определим инфинитивы. Прочитайте — начальная форма «прочитать», прочтите — начальная форма «прочесть».

Глагол прочесть относится к непродуктивным классам (группам) глаголов, глагол прочитать — к 1 продуктивному классу глаголов. Формообразование у данных глаголов различается.

Прочтите, прочти, прочла, прочту, прочту, прочтёшь, прочтёт, прочтём, прочтёте, прочтут, прочёл, прочла, прочло, прочли и т.д. — формы глагола «прочесть«.

Прочитайте, прочитай, прочитала, прочитаю, прочитаешь, прочитает, прочитаем, прочитаете, прочитают и т.д. — те же формы от глагола «прочитать»

Глаголы совпадают во всех значениях, разница только при употреблении глагола «прочитать» — провести какое-то время читая, т.е. когда обозначается процесс, связанный с временем. Проще рассмотреть на примерах:

Правильно: прочитала от раннего утра до позднего вечера.

Ошибочно: прочла от раннего утра до позднего вечера.

Морфологический разбор «прочитайте»

Сделаем морфологический разбор слова «прочитайте».

  1. Часть речи
    Часть речи слова прочитайте — глагол.
  2. Морфологические признаки
    • Начальная форма: прочитать (инфинитив);
    • Постоянные признаки: 1-е спряжение, переходный, совершенный вид;
    • Непостоянные признаки: повелительное наклонение, множественное число, 2-е лицо.
  3. Синтаксическая роль
    Как правило, выступает сказуемым.

Источник: http://pravica.ru/kak-pravilno-prochtite-ili-prochitayte

Будете или будите, будет или будит?

Будет или будит

как правильно прочитала или прочлаЭто два разных слова, оба они существуют в русском языке, но имеют разное значение. Будьте внимательны, когда употребляете их: даже если вы напишете неправильно, Word не заметит эту ошибку.

Будит

Волк будит спящего Зайца, чтобы вместе пойти на пробежку.

«Будит» — это одна из форм глагола «будить» (третье лицо, единственное число), означает «заставлять просыпаться». Чтобы было проще, запомните: здесь пишется та же самая буква, что и в начальной форме — «и».

Будет

Волк будет тренировать Зайца, если разбудит.

«Будет» — это тоже третье лицо и единственное число, но совсем другого глагола — «быть». Здесь оно означает действие, которое Волк станет выполнять — Зайца тренировать, то есть ставит предложение в будущее время.

Будите или будете

Это те же самые слова, только во множественном числе.

Будете

«Вы будете морковный пирог?» — спросила Агата Иогановна у Мямлика, но тот ответил что-то неразборчивое.

В этом застольном разговоре глагол означает «станете ли есть», а значит, пишется через «е».

«Вы на танцах вечером будете?» — поинтересовалась кикиморка Топь у лешего Дебря и незаметно положила ему в карман пригласительный билет.

В этом примере мы встретились с ещё одним значением глагола «быть» — находиться где-либо. И снова напишем через «е».

«Не будете ли вы столь любезны, пожалуйста, если вас не затруднит, передать мне грибной соус», — попросил Мямлик, но все отвлеклись на вошедшего Медведя с огромным букетом.

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

Будите

«Вы будите Медведя? — поинтересовался леший Хрусь у любителей селфи. — Ну-ну…»

Тут снова значение «заставляете просыпаться», поэтому правильно писать через «и». Заметьте, что если ошибиться с выбором буквы, предложение получит совсем другой смысл. Будьте внимательны!

Как запомнить

Букву «и» следует выбирать только в значении, что кого-то заставляют проснуться. А вот у слова «быть» в русском языке значения разнообразные. Поэтому запомнить легче методом исключения: во всех случаях, когда речь идёт не о пробуждении кого-то кем-то, пишется «е».

Начало истории читайте здесь. Продолжение — здесь.

Источник: http://myslovar.com/kak-pishetsya/budete-ili-budite-budet-ili-budit

Домашняя школа грамотности

Полный курс русского языка

и другие курсы c известным педагогом

Электронные
учебные пособия

как правильно прочитала или прочла

Известный
педагог

Курсы по авторским методикам ведёт доктор пед. наук, лауреат Премии правительства РФ, автор учебников Е. В. Бунеева.

как правильно прочитала или прочла

Доступное
образование

Заниматься можно из любой точки мира с любого устройства.

Диагностика программа занятия

как правильно прочитала или прочла

Государственный образовательный стандарт

Все курсы учитывают требования ФГОС начального общего и основного общего образования.

?кто у нас занимается

1 Дети 8–15 лет (1–4 и 5–9 классы):
– на домашнем обучении;
– на семейном и заочном обучении;
– посещающие школу.

2 Все, кто хочет быстро освоить базовую программу по русскому языку и научиться писать без ошибок.

3 Все, кто хочет научиться писать изложение и сочинение.

4 Дети-билингвы, которые хотят хорошо владеть русским языком.

5 Школьники, которые готовятся к ОГЭ, ВПР и промежуточной аттестации.

Екатерина валерьевнА бунеева

Доктор педагогических наук, лауреат Премии правительства РФ в области образования, автор учебников по русскому языку и литературному чтению, автор технологии обучения грамотному письму и технологии продуктивного чтения.

?сколько стоит обучение

Стоимость зависит от курса и времени доступа.

Доступ к занятиям
от 2-х недель до 12 месяцев
или неограниченный.

как правильно прочитала или прочла

Стоимость 1 занятия –
от 58 до 200 рублей.

Можно заниматься
1 — 2 раза в неделю

как правильно прочитала или прочла

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

Например, курс русского языка (60 занятий)
можно пройти и в течение учебного года,
если заниматься 2 раза в неделю,

как правильно прочитала или прочла

и всего за 3 месяца, занимаясь 3 – 4 раза в неделю.

Даже самый дешёвый репетитор обходится гораздо дороже!

Наши занятия – это необходимый минимум теории и много практики, развитие письменной речи, умений грамотного письма и продуктивного чтения, обогащение словарного запаса; это индивидуальный подход, психологический комфорт, эффективная авторская методика, познавательное и личностное развитие детей.

При покупке другого курса или того же курса для второго ребёнка — скидка 25% .

?как мы учим

Доступ к диагностике
и
курсам для детей
и взрослых

?Что о нас говорят

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

С некоторым удивлением читала сочинения своей дочери, через них она раскрывалась для меня с другой, неожиданной стороны. Она с большим интересом писала работы и ждала рецензии, за время этих трёх недель начала больше читать, что для меня огромная радость. Учимся у вас с удовольствием! Русский язык стал понятным и любимым. Потому что даже через интернет вам удаётся передать свою любовь к русскому языку не только детям, но и их родителям.

Школа «Всё правильно» — это находка для родителя, не знающего, как помочь своему ребенку! Хочу поделиться своим опытом! У меня сын во втором классе, и уже сейчас я немного успокоилась! Но первый класс был просто кошмар, всё что касается русского языка, было очень сложно: написание, правописание, молодой педагог, учились писать по ю тубу в классе, меня это всё страшно озадачивало, может, оно и ничего, но к сожалению, результат не радовал. А мне бы очень хотелось, чтобы русский язык нравился и уж никак не вызывал непонимание и отвращение! Не открою Америку, если скажу, что сомнений было много: как заниматься? Какая реакция ребенка, ведь это удаленное обучение? Когда будет результат и будет ли? Купили курс и ни разу не пожалели! Как результат — 5 баллов за второй триместр.

Отличная идея! Домашняя уютная атмосфера, подача материала доступная. Обратила внимание на постоянное разъяснение значения слов. Действительно, часто в упражнениях даются слова, смысл которых дети просто не понимают, отсюда и ударение могут поставить неправильно, и с орфограммой определиться им сложно. Ваши уроки — это действенная помощь взрослым, которые и хотели бы заниматься с ребёнком русским языком, но не знают как. Обязательно буду рекомендовать «Школу…» родителям своих учеников.

Источник: http://vsepravilno.com/blogs/default/view/?alias=&id=61

Будите или будете: какой вариант правильный?

как правильно прочитала или прочла

Знаете, что Энгельс говорил о русском языке? Как он красив. «Все преимущества немецкого без его ужасной грубости». На самом деле эти языки похожи в плане грамматики и синтаксиса. Но почему-то именно русский входит в ТОП самых сложных. Взять хотя бы орфоэпию: абсолютно похожие лексемы по звучанию и правописанию оказываются разными частями речи, и имеют чуть ли не антонимичные, или просто никак не связанные между собой значения. Отличный пример орфоэпических омонимов (или орфографические паронимы): будите или будете как правильно писать слова, сейчас и разберемся.

Как правильно пишется

Какое правило применяется

Если вы видите в тексте лексему «будете», то это одна из форм глагола «быть». Морфологические признаки:

  • второе лицо;
  • множественное число;
  • изъявительное наклонение.

Глагол относится к первому спряжению. Проверим это практическим путем: я буду — мы будем, они будут. Такие окончания свойственны именно для первого спряжения. Интересно, что в русском языке большинство односложных глаголов относятся именно к этому спряжению (лить, мыть, бить).

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

Второй вариант — «будите» появился от слова «будить». Морфологический разбор указывает на то, что это глагол второго лица, множественного числа, повелительного наклонения. Он относится ко второму спряжению (во всех измененных формах появляются окончания -и- или -я-) . Только в первом лице единственного числа есть окончание -у- (я бужу).

А это означает, что пишется слово правильно с буквой -и-. А если ещё и добавить сюда повелительное наклонение (его нужно будить), то слог с буквой -и- попадет под ударение. Не возникает сомнений, какая буква должна писаться в этом случае.

Примеры предложений

Приведем примеры предложений с использованием этих лексем, чтобы вы запомнили, как пишется «будите» или «будете»:

  1. Вы будете забирать сегодня не только свою внучку из детсада, но и прихватите соседского мальчика.
  2. «Сегодня вы будете правильно брать и расшифровать готовый отет», — начал свою лекцию преподаватель, имя которого я и не знал.
  3. «Вы будете не против, если мы отобедаем сегодня на веранде и выпьем там чаю?» — услужливо поинтересовались хозяева.
  4. Что вы будете сегодня делать после того, как вернётесь домой с работы?
  5. Будьте осторожны — не будите ребенка понапрасну, не говорите громко и не хлопайте дверью.
  6. Вы будите незнакомого мужчину уже несколько минут, а результат не заметен.
  7. Будите нового сторожа, пока не поздно!
  8. Зачем вы будите своего хозяина так рано: это его желание или ваша ежедневная обязанность?

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

Как неправильно писать

Наверное написание будет в том случае, если вы перепутаете значение слов и используете их наоборот.

Значение

Разберем значение обеих лексем, чтобы вы заполнили, как употребляется и пишется «будите» на практике:

  1. Быть — существовать, иметься, находиться в наличии, присутствовать.
  2. Будить — выводить из состояния сна, (в переносном) возбуждать, побуждать.

Существуют даже фразеологизмы: будить зверя — злить, раздражать; быть не в своей тарелке — испытывать неловкость, выходить из зоны комфорта.

Заключение

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

Источник: http://pishetsya.ru/orfografiya/budite-ili-budete-kakoj-variant-pravilnyj

Как будет правильно «Чтобы не происходило — все хорошо» или «Что бы не происходило — все хорошо» ?

Можно я объясню? Вдруг Вам еще пригодится.

Союз чтобы обычно обозначает цель. Частица не — отрицание. Например: Я ушел, чтобы не случилось беды.

А у нас другой случай. Мы имеем в виду: случиться может что угодно, но всё будет хорошо. В Вашем примере мы имеем дело со сложноподчиненным предложением с придаточной уступки (означает причину, вопреки которой совершается действие, т.е. несмотря на что-то). И средство связи в таком предложении часто содержит частицу ни с усилительным (!) значением. Что бы ни случилось, как бы я ни старался, где бы вы ни были. Всё будет хорошо)

Частица ни усиливает придаточную, а частица бы относится вообще к глаголу (сравни: что бы ни случилось — если бы случилась беда — беда случилась бы).

Ну и для таких вопросов есть портал грамота.ру ?

Союз «чтобы» в слитном написании указывает на причинную связь — затем, для того. «Чтобы не простудиться, надевайте шапку».

В местоимении «что» с частицей «бы», «что бы», частица «бы» указывает на сослагательное наклонение. «Что бы я без тебя делал».

Можно запомнить так, можно проверять по школьной традиции — пробовать переставить «бы» в другое место предложения. Не получится — пишите слитно, получится — раздельно. «Что не простудиться, надевайте бы шапку» против «Что я без тебя бы делал».

«Не» означает отрицание, «ни» — перечисление. «Это не мясо и не рыба». «Я не ем ни мясо, ни рыбу».

В предложении «что бы ни происходило, всё к лучшему» подразумевается перечисление (что бы ни происходило: чума, потоп, извержение вулкана) в сослагательном наклонении (оно не происходит, но может).

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

Очень наглядна фраза «Что бы не делалось, всё к лучшему» (когда ничего не делается — это хорошо), «Что бы не делалось, всё к лучшему» (когда что-то делается — это хорошо).

Источник: http://thequestion.ru/questions/105676/answer-anchor/answer/165048

Теперь вы знаете о: «как правильно прочитала или прочла».

Читайте также:

  • Как правильно: помидор или помидоров? — как правильно помидор или помидоров
  • Как пишется слово спасибо или спосибо: правильная форма, грамматика, употребление — спасибо или спасибо как правильно
  • Времяпрепровождения или время препровождения — как правильно пишется слово — как правильно времяпровождение или времяпрепровождение
  • Ошибки чаепития, или как пить чай правильно — Полезная информация | Рецепты, советы, описания, отзывы — чаепития или чаепития как правильно
  • Будущем или будующем как правильно? — будущий или будующий как правильно
  • Слово ПОДДЕЛКА — Что такое ПОДДЕЛКА? Значения слова, примеры употребления — как правильно подделка или подделка
  • Представить или предоставить, как правильно — как правильно предоставить или предоставить
  • УвидЕмся; или; увидИмся, как пишется правильно? — спишемся или спишемся как правильно
  • Как правильно пишется слово пишешь: правописание, правило, примеры, морфологический разбор? Правильно писать; пишешь! — пишешь или пишешь как правильно
  • Как правильно писать леш или лешь? — как правильно леш или лешь

25.06.2016

Блог создание и продвижение сайта — BananaWeb


Хорошие заголовки в контент-маркетинге играют одну из ключевых ролей. Броское название – это то, что в первую очередь обращает на себя внимание пользователя, бороздящего хаос современного интернет-пространства. Именно правильно сформулированный заголовок дает читателю возможность оперативно определиться с тем, стоит ли ему потратить время на ознакомление с материалом  (будь то статья, новость, презентация, рекламное объявление, видеобзор или что бы то ни было еще), и перейти по соответствующей ссылке, тогда как неудачный заголовок может превратить веб-контент в «невидимку» для целевой аудитории, затерявшуюся на фоне более заметных конкурентов. Так каким же должен быть эффективный заголовок, способный «зацепить» потенциального пользователя? Давайте выясним!

5 простых приёмов привлечь внимание к заголовку:1) Не стесняйтесь! Заголовок должен быть привлекательным, сообщая о выгоде, которую пользователь получит благодаря вашей услуге или о ключевых преимуществах продукта. Сравните эти два названия: «Особенности малого бизнеса» и «Создай своё дело с нуля: теория и практика малого бизнеса». Если первый заголовок просто информативный, то второй несет в себе упоминание выгоды, которую читатель получит, ознакомившись с материалом.

Создавая привлекательный заголовок, вы также можете использовать простые и понятные обещания («Простой способ похудеть в домашних условиях», «Как разбогатеть, не выходя из дома»), вступать в диалог с читателем, мотивировать его и ориентировать на конкретные действия («Ешь и худей», «Выучи английский и разбогатей»).

2) Уточняйте. Кроме того, привлечь внимание аудитории можно с помощью использования в заголовке специфичных деталей, подчеркивающих ценность и уникальность представленного контента. Это могут быть точные цифры. Примеры таких заголовков: «5 советов, которые навсегда изменят вашу жизнь», «10 главных навыков маркетолога», «7 шагов к идеальному телу» и так далее. Если из этих заголовков убрать цифры, они уже не будут таким броским и убедительными и лишатся мотивирующей составляющей в виде пошагового достижения цели.

3) Персонализируйте материал. Вы можете идентифицировать целевую аудиторию, прямо обращаясь к ней посредством заголовка или упоминая в названии ключевые характеристики целевого потребителя. Примеры: «10 секретов успешного стартапа для начинающих бизнесменов», «Краткий курс выживания для переживших развод», «5 советов худеющим к лету». Идентифицировать читателя в заголовке можно по роду его занятий, семейному положению, возрасту. текущей ситуации, в которой он находится, и так далее. Чем конкретнее это будет сделано – тем заметнее будет заголовок.

4) Позиционируйте контент. Так, статья, озаглавленная как «Теория струн для чайников», очевидно предназначена не для профессиональных физиков-теоретиков, а для более широкого круга аудитории, а материал представлен в научно-популярном, а не узкоспециализированном ключе.

Также позиционировать контент поможет заголовок, указывающий на конкретный метод решения проблемы, например: «Лечение псориаза народными средствами в домашних условиях»

5) Используйте классические литературные приёмы. Сделать заголовок более броским и запоминающимся успешно помогут литературные тропы (обороты речи) такие как: метафоры (пример: название книги Е. Гришковца «Как я съел собаку»), сравнения (пример: рекламное объявление «Мой аккаунт – моя крепость»), аллитерации (пример: статья о футболе «О классе, запасе и кассе») и так далее.

Еще несколько прописных истин

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

Помните, что текстовый контент, который находит своего читателя благодаря броскому названию, должен оправдывать ожидания и на 100% соответствовать заявленному заголовку. В противном случае это будет чревато для сайта высоким показателем отказов и плохими поведенческими факторами.

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

Хороший копирайтер может использовать сразу несколько из приведенных выше приёмов, чтобы сделать заголовок максимально привлекательным и «цепляющим», или добиться того же результата, не используя ни один из них. Дело в том, что природа хорошего текста, как и его названия – это более чем неточная наука, тем не менее существует ряд закономерностей, которые можно выделить, систематизировать и проанализировать, чтобы судить с их помощью об эффективности того или иного текстового контента в целом и заголовка, как одного из инструментов контент-маркетинга, в частности. Это мы и попытались сделать в рамках данной статьи, предложив вниманию своего читателя несколько простых рецептов приготовления аппетитных заголовков, которые каждый сможет взять на вооружение.  

Подпишитесь на интересные статьи:

6a8bd9zgsjzf5uwfy niduld6ye

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

Я расскажу о подходах, которые мы используем в Яндекс.Такси для написания читаемого кода на C++, Python, JavaScript и других языках.

Обычный рабочий процесс

Допустим, вы работаете в компании, пишете код. Написали функцию, начинаете обкладывать её тестами и понимаете, что что-то глючит. Ну что ж, отлаживаем… Оказывается, что плохо работает не ваш код, а функция sample от другого разработчика, которую вы используете.

Выглядит функция sample как-то так:

std::string sample(int d, std::string (*cb)(int, std::string)) {
  // Getting new descriptors from d with a timeout
  auto result = get(d, 1000);

  if (result != -13) {
    // Descriptor is fine, processing with non bulk options
    auto data = process(result, true, false, true);

    // Passing processing result to the callback
    return cb(data.second.first, data.second.second);
  }

  // Notifying callback on error
  return cb(result, {});
}

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

Нам повезёт, мы сможем исправить функцию, не разобравшись до конца в её работе.

Начинаем читать первый комментарий, где написано: получаем какие-то новые дескрипторы из d с заданным timeout, d — дескриптор. То есть часть разбросанных по коду int на самом деле не int — они относятся к отдельному классу данных.

Решаем заменить часть int на отдельный тип данных Descriptor в надежде, что компилятор сам найдёт ошибки и нам не придётся дальше отлаживать код. Зовём автора кода, просим его подсказать, где дескрипторы, а где числа. Он сейчас работает над другим проектом, но после долгих уговоров неохотно помогает и быстро ретируется:

enum class Descriptor : int {};

std::string sample(Descriptor d, std::string (*cb)(Descriptor, std::string)) {
  // Getting new descriptors from d with a timeout
  auto result = get(d, 1000);

  if (result != Descriptor(-13)) {
    // Descriptor is fine, processing with non bulk options
    auto data = process(result, true, false, true);  // <== ERROR

    // Passing processing result to the callback
    return cb(data.second.first, data.second.second);  // <== ERROR
  }

  // Notifying callback on error
  return cb(result, {});
}

И тут понеслось:

  • Компилятор нашёл сразу две ошибки. Это очень подозрительно, может, мы не так типы расставили?
  • А что вообще такое data.second.first и data.second.second? В комментариях не написано.

Делать нечего, придётся прочитать весь код и комментарии, чтобы понять, как исправить ошибки.

Боль

Поначалу казалось, что много комментариев — это хорошо. Однако при отладке всё выглядит иначе. Код написан на двух языках: на английском и C++. Когда мы пытаемся понять, что происходит в коде, и отладить его, нужно прочитать английский, перевести его в голове на русский. Затем прочитать код на C++, его тоже перевести в голове на русский и сравнить эти два перевода. Убедиться, что смысл комментария совпадает с тем, что написано в коде, а если код делает что-то другое, то, возможно, там и кроется ошибка.

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

Попробуйте угадать, что значат булевые флажки true, false, true в функции process? В комментариях о них ни слова. Чтобы разобраться, нужно пойти в header file, где объявлена функция process:

std::pair<Descriptor, std::pair<int, std::string>> process(bool, Descriptor, bool, bool);

… И там мы увидим, что у булевых переменных нет осмысленных имён.

Чтобы понять, что происходит, нужно перейти в соседний файл, прочитать код функции process и разобраться в нём. Возможно, походить по соседним функциям и почитать их. На исследование смежных файлов тратится уйма времени, что мешает осознанию функции sample и портит настроение.

Наконец, data.second.first и data.second.second. Чтобы выяснить их назначение, нужно отмотать назад — туда, где мы получаем переменную data. Пойти в место, где объявлена функция process, увидеть, что комментариев нет, а process возвращает пару от пары. Пойти в исходники, узнать, что обозначают переменные int и string, — и на всё это снова уходит очень много нашего времени.

Ещё одна маленькая боль — код обработки ошибок перемешан с основной логикой. Это мешает ориентироваться. Обработка ошибок функции sample находится внизу, а в середине, внутри блока if, с большими отступами находится happy path.

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

Выжимка проблем

  • Код написан на двух языках:
    – Его в два раза больше.
    – При отладке возникают проблемы со сверкой двух языков.

  • Комментариев всё ещё недостаточно:
    – Приходится читать код смежных функций.
    – Есть магические константы.

  • Код обработки ошибок и основной логики перемешаны:
    – Большие блоки кода с большими отступами.

Читаемый код

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

Поехали:

std::string Sample(Descriptor listener,
                   std::string (*on_data)(Descriptor, std::string))
{
  UASSERT_MSG(on_data, "Callback must be a non-zero function pointer");

  const auto new_descriptor = Accept(listener, kAcceptTimeout);
  if (new_descriptor == kBadDescriptor) {
    return on_data(kBadDescriptor, {});
  }

  auto data = Process(Options::kSync, new_descriptor);
  return on_data(data.descriptor, data.payload);
}

В первой же строчке проверяем входные параметры. Это мини-подсказка/документация по тому, какие данные ожидаются на входе функции.

Следующая правка: вместо функции с непонятным именем Get появляется Accept, широко известная в кругах сетевых программистов. Затем страшную константу 1000 превращаем в именованную константу с осмысленным читаемым именем.

Теперь строка прекрасно читается без дополнительных комментариев: из listener мы принимаем новый дескриптор, на эту операцию даётся kAcceptTimeout.

Вместо того, чтобы писать в коде -13, а потом удивляться, что это за страшное число, заводим именованную константу для плохого дескриптора. Теперь мы сразу видим, что получили новый дескриптор, и проверяем, плохой он или хороший.

Обработка ошибок также происходит сразу. Получили значение — тут же проверяем его на невалидность. За счёт этого вложенность становится меньше, код становится чуть компактнее.

Специфика C++

Маленький бонус — большинство компиляторов в C++ считают одиночные if без блока else холодным путём.

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

В итоге мы незначительно (а то и вовсе незаметно) ускорили приложение. Пустячок, но приятно.

Дальше. Функция process преобразовалась. Вместо true, false, true теперь есть перечисление возможных опций для process. Код можно прочитать глазами. Сразу видно, что из дескриптора мы процессим какие-то данные в синхронном режиме и получаем их в переменную data.

Функция process вместо пары возвращает структуру с публичными полями, у каждого из которых есть осмысленное читаемое имя.

В результате код стал почти в два раза короче. Он стал понятнее. Больше не нужно ходить в соседние функции и файлы. Читать такой код куда приятнее.

Приёмы

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

На самом деле нет. Есть небольшой набор приёмов, и если их придерживаться, код уже будет получаться достаточно хорошим и читаемым. Расскажу о некоторых из них.

1) Compute(payload, 1023) — нечитаемо. Что такое 1023?

Используйте именованные константы.

Compute(payload, kComputeTimeout)

Альтернативным решением может быть явное использование имён параметров. Например, Python позволяет писать:

Compute(payload=payload, timeout=1023)

Ну и C++20 не отстаёт:

Compute({.payload=payload, .timeout=1023});

Идеальный результат получается, если пользоваться сразу двумя приёмами:

Compute(payload=payload, timeout=MAX_TEST_RUN_TIME);

2) Compute(payload, false) — нечитаемо. Что такое false?

Используйте перечисления или именованные константы вместо bool.

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

Compute(payload, Device::kGPU)

Именованные аргументы в этом месте не всегда спасают:

Compute(payload=payload, is_cpu=False);

Всё ещё непонятно, что False заставляет считать на GPU.

3) Compute(data.second.first, data.second.second) или Compute(data[1][0], data[1][1]) — что вообще тут происходит?

Используйте типы с информативными именами полей, избегайте кортежей.

Compute(data.node_id, data.chunk_id)

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

Попробуйте угадать, какой смысл у возвращаемых int и std::string в коде.

std::tuple<int, std::string> Receive();

int — это дескриптор устройства? Код возврата?

А вот так всё становится кристально ясно:

struct Response {
    int pending_bytes;
    std::string payload;
};
Response Receive();

4) void Accept(int , int); — что это за два числа?

Заводите отдельные типы данных для разных по смыслу вещей.

void Accept(Descriptor, std::chrono::milliseconds)

Или для Python:

def accept(listener: Descriptor, timeout: datetime.timedelta) -> None:

На самом деле это совет не столько про читаемость кода, сколько про отлов ошибок. Многие (но далеко не все) современные языки программирования позволяют статически проверять типы и узнавать об ошибках ещё до запуска приложения или тестов. В C++ эта функциональность доступна из коробки, в Python нужно пользоваться линтерами и typing.

Думать в терминах системы типов — это определённое ментальное усилие. Чтобы получалось эффективно, нужна практика, как и для закрепления любого другого навыка. Но если этому научиться, вы сможете писать более понятный и менее бажный код.

5) void Compute(Data data) — функция есть в модуле или заголовке, но должны ли мы ей пользоваться?

Используйте особый namespace или именование для служебных вещей.

namespace detail { void Compute(Data data); }

Или для Python:

def _compute(data: Data) -> None:

С namespace detail/impl или с особым наименованием пользователь поймёт, что функцию использовать не нужно.

6) d, cb, mut, Get — что это?

Придумывайте информативные имена переменных, классов и функций.

descriptor, callback, mutator, GetDestination

Самый избитый, но важный совет — давайте осмысленные и информативные имена переменным, функциям и классам.

Кажется, что писать код, в котором переменные короче, получается быстрее. Под каждую переменную пара символов, можно быстро всё это напечатать. Но простая истина гласит: «Мы пишем код один раз, а читаем несколько раз». Потом, возможно, переписываем и снова несколько раз читаем.

Так вот, через неделю или месяц будет сложно вспомнить, что такое d или cd, что делает метод Get (или это вообще класс Get?). Что он возвращает?

Информативные имена вам очень помогут. При чтении будет сразу видно, где descriptor, callback и mutator, а где функция под именем GetDestination() возвращает какой-то Destination.

7) connection = address.Connect(timeout) — отладчик завёл нас в эту строчку кода. Что там за переменные, откуда они и куда мы их присваиваем?

Закрепите разные стили за переменными класса, аргументами функций и константами.

Если закрепить отдельные стили за разными типами переменных, код читается лучше. В большинстве распространённых code style именно так и делают:

connection_ = address.Connect(kTimeout);

Мы сразу видим, что переменная address — локальная; что мы пытаемся соединиться с kTimeout, который является константой. Результат соединения присваиваем переменной класса connection_. Поменяли буквально пару символов, а код стал понятнее.

Для Python стоит дополнительно придерживаться правила, что приватные поля начинаются с нижнего подчёркивания:

self._connection = address.Connect(TIMEOUT);

8) connection_ = address.Connect(timeout / attempts) — есть ли тут ошибка?

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

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

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

Однако если внутри Connect не будет проверки, всё станет сильно-сильно сложнее. Приложение не упадёт, но будет работать неправильно, не так, как мы ожидаем.

Коду явно не хватает проверок:

ASSERT(attempts > 0);

assert timeout > 0

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

Assert не только позволяет быстро находить ошибки, но и добавляет читаемости. Выражение assert timeout > 0 прямо говорит, что код ниже будет работать неправильно с отрицательными числами и 0.

8.1) connection_ = address.Connect(timeout / attempts) — есть ли тут ошибка?

НЕ используйте assert для проверки пользовательского ввода.

Будет невежливо (и опасно!), если ваша библиотека уронит весь сервер потому, что кто-то на сайте ввёл неправильное число. Здесь стоит использовать другие механизмы для сообщения об ошибках:

if (attempts <= 0) throw NegativeAttempts();

if (attempts <= 0) raise NegativeAttempts();

Как отличить неправильное использование функции программистом от неправильного ввода?

Вот несколько примеров:

  • функция init() должна быть вызвана перед первым использованием функции foo() — assert,
  • мьютекс не должен дважды захватываться из одного и того же потока — assert,
  • баланс на карте должен быть положительным — НЕ assert,
  • стоимость поездки не должна превышать миллиона доллларов — НЕ assert.

Если не уверены — не используйте assert.

Ещё один хороший приём — использовать в отладочных сборках assert, а в релизе — другой механизм информирования об ошибках, не роняющий всё приложение. Пример с attempts идеально ложится на этот случай:

ASSERT(attempts > 0);
if (attempts <= 0) throw NegativeAttempts();

9) v = foo(); bar(v); baz(v); assert(v); — а функциям bar() и baz() точно хорошо?

Не тяните с обработкой ошибок, не несите их в блок else.

Как только получили значение — сразу проверяйте и обрабатывайте ошибки, а дальше работайте как ни в чём не бывало.

Такой подход поможет избежать излишней вложенности конструкций — за вашей мыслью будет проще следить.

Пример:

if (value != BAD) {
    auto a = foo(value);
    auto b = bar(value);
    if (a + b < 0) {
         return a * b;
    } else {
         return a / b + baz();
    }
}

return 0;

Сравните:

if (value == BAD) {
    return 0;
}

auto a = foo(value);
auto b = bar(value);
if (a + b < 0) {
     return a * b;
}

return a / b + baz();

10) [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

Придерживайтесь вменяемой вложенности конструкций.

Если в вашем коде есть if, внутри которого for, внутри которого if, внутри которого while, — это сложно читать. Стоит разнести какие-то внутренности на отдельные функции и дать функциям осмысленные имена. Так код станет красивее и приятнее для чтения.

11) Самая важная часть, самая большая хитрость, о которой мало где написано!

Если вам хочется поставить комментарий…

Попробуйте переделать код так, чтобы не хотелось.

Как правило, если у вас получается, код становится проще воспринимать. Если нет — ничего страшного, бывает, ставьте комментарий. Иногда без этого не обойтись.

Вместо заключения

Разумеется, это общие советы. У каждого языка есть своя специфика. В C++ важно писать понятные имена шаблонных параметров, в Python не стоит злоупотреблять тем, что переменные предоставляют возможности для общего модифицирующего владения.

Даже в рамках одной компании практики могут расходиться (например, в userver у нас пожёстче с наименованями и bool).

Пожалуйста, расскажите о принятых у вас практиках в комментариях! Будет интересно обсудить и взять их на вооружение.

UPD.
Правило от dkuch:
12) Сужать скоуп переменных до минимально возможного.

На чтение 10 мин. Просмотров 2 Опубликовано

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

Что читается?

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

Bash читает встроенную справку по командам

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

Командная строка

Вывод

читать: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars]
[-p приглашение] [-t тайм-аут] [-u fd] [name …]

Считывает строку из стандартного ввода и разбивает ее на поля.

Читает одну строку из стандартного ввода или из дескриптор файла FD
, если задана опция -u. Строка разбивается на поля, как при разделении слова
, и первое слово назначается первому ИМЕНИ, второе слово
— второму ИМЕНИ, и так далее, с любыми оставшимися словами, назначенными
последнее ИМЯ. Только символы, найденные в $ IFS, распознаются как разделители слов
.

Если ИМЯ не указана, прочитанная строка сохраняется в переменной REPLY.

Параметры:
-массив присваивает считанные слова последовательным индексам массива
переменной ARRAY, начиная с нуля
-d delim продолжать до первого символа DELIM читается, а не
, чем новая строка
-e используйте Readline для получения строки в интерактивной оболочке
-i text используйте ТЕКСТ в качестве начального текста для Readline
— n n символов возвращаются после чтения символов NCHARS вместо ожидания
для новой строки, но учитывают разделитель, если перед разделителем читается менее

символов NCHARS
-N nchars возвращаются только после чтения ровно NCHARS символов, если не встречается
EOF или время чтения не истекло, игнорируя любой разделитель

-p, выводит строку PROMPT без завершающей новой строки перед
попытка прочитать
-r не позволяет обратной косой черте экранировать любой ch aracters
-s не отражают ввод, поступающий с терминала
-t timeout timeout и возвращают ошибку, если полная строка ввода
не читается в течение TIMEOUT секунд. Значение переменной
TMOUT — это тайм-аут по умолчанию. TIMEOUT может быть дробным числом
.. Если TIMEOUT равен 0, чтение немедленно возвращает
, не пытаясь прочитать какие-либо данные, возвращая
успех только в том случае, если входные данные доступны в указанном дескрипторе файла
. Статус выхода больше 128
, если превышено время ожидания
-u fd читать из файлового дескриптора FD вместо стандартного ввода

Статус выхода:
Код возврата равен нулю, если не встречается конец файла, время ожидания чтения
(в этом случае оно больше 128), ошибка присвоения переменной

Перехват пользовательского ввода

Интерактивные сценарии bash — ничто без перехвата пользовательского ввода. Встроенная функция чтения предоставляет методы, с помощью которых пользовательский ввод может быть перехвачен в сценарии bash.

Перехват строки ввода

Чтобы перехватить строка ввода ИМЕНИ и параметры не требуются при чтении. Если NAME не указано, переменная с именем REPLY используется для хранения пользовательского ввода.

Команды

{
echo -n «Введите что-нибудь и нажмите Enter:»;
read;
echo Вы набрали $ {REPLY}
}

Вывод

Введите что-нибудь и нажмите Enter: something (newline)
Вы что-то ввели

Перехват слова при вводе

Чтобы перехватить слово ввода, требуется опция -d. В случае слова мы бы установили -d на пробел, читаем «-d». То есть, когда пользователь нажимает пробел, при чтении загружается ОТВЕТ со словом.

Обратите внимание, что когда установлена ​​опция -d, возврат не работает должным образом. Чтобы вернуться на место при попытке поймать слово ввода, можно использовать параметр -e, прочтите -e ‘-d’.

Команды

{
echo -n «Введите что-нибудь и нажмите пробел:»;
прочтите ‘-d’;
echo «»;
echo «Вы набрали $ {REPLY}»
}

Вывод

Введите что-нибудь и нажмите пробел: something (пробел)
Вы что-то набрали

Подсказать пользователю

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

Запрашивать у пользователя слово

Улавливание введенного слова , мы использовали echo, чтобы написать Type something и нажать space: на стандартный вывод перед чтением ‘-d’. Параметр -p позволяет отображать сообщение перед чтением из стандартного ввода.

Команды

{
read -p ‘Введите что-нибудь и нажмите пробел:’ ‘-d’;
echo «»;
echo «Вы набрали $ {REPLY}»
}

Вывод

Введите что-нибудь и нажмите пробел: something (пробел)
Вы что-то набрали

Запрашивать у пользователя секрет

При перехвате ввода пользователя без его отображения в терминале появляется опция -s удобный. read -s -p позволяет перехватывать и скрывать вводимые пользователем данные следующим образом.

Команды

{
read -s -p ‘Введите то, что я обещаю сохранить в секрете:’
echo «»;
echo «Ваш секрет в безопасности со мной»; unset REPLY;
echo «$ {REPLY}»
}

Вывод

Тип Я обещаю сохранить это в секрете:
Ваш секрет в безопасности

Функции, использующие чтение

Вот примеры функций в bash, которые используют чтение и стандартный ввод

Основная концепция

Функции, использующие чтение и make использование стандартных вводов и параметров по трубопроводу. Основной ввод, который должен быть обработан, например строки в файле, передаются через стандартный ввод через конвейер. Другой вход if-any и option передаются как параметры.

read -t 1 NAME1 NAME2 …

чтение является встроенным command

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

NAME1 NAME2 — имена переменных

… может быть перечислено множество имен переменных

Теперь, когда фундамент установлен, давайте посмотрим, как выглядят знакомые функции, реализованные с помощью read.

Функция соединения с использованием чтения

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

Script

#!/Bin/bash
## join
## версия 0.0.2 — исправить параметры рекурсии
############################ ####################
join () {{локальный неограничитель; indelimiter = «$ {1-}»; локальный выходящий ограничитель;
outdelimiter = «$ {2-.}»; }
локальный автомобиль
локальный cdr
локальный IFS
IFS = «$ {indelimiter}»
read -t 1 car cdr || return
test «$ {cdr}» || {echo «$ {car}»; возвращаться ; }
echo «$ {car} $ {outdelimiter} $ {cdr}» | $ {FUNCNAME} «$ {indelimiter}»
«$ {outdelimiter}»
}
################# #############################
## сгенерировано create-stub2.sh v0.1.2
## в понедельник, 17 июня 2019 г. 12:24:59 +0900
## см.
##### ##########################################

Источник: join.sh
Командная строка

Вывод

Командная строка

echo ab | присоединиться | присоединиться. |

Вывод

Функции сопоставления с использованием чтения

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

Script

#!/Bin/bash
## карта
## версия 0.0.1 — исходная
############################## ##################
map () {{имя локальной функции; function_name = «$ {1}»; }
локальный автомобиль
локальный cdr
локальный IFS
IFS = «$ {indelimiter-}»
read -t 1 car cdr || return
test «$ (declare -f $ {function_name})» || return
test «$ {car}» || { правда ; возвращаться ; }
$ {function_name} $ {car}
echo «$ {cdr}» | $ {FUNCNAME} «$ {function_name}»
}
############################ ####################
## сгенерировано create-stub2.sh v0.1.2
## во вторник, 18 июня 2019 08:33:49 +0900
## см.
################ ################################

Источник: карта .sh
Команды

pow () {local -ii = $ {1}; эхо $ ((я ** 2)); }
эхо {1..10} | map pow

Вывод

1
4
9
16
25
36
49
64
81
100

Функция фильтрации с использованием чтения

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

Script

#!/Bin/bash
## фильтр
## версия 0.0.1 — начальный
################################################################## ##################
filter () {{имя локальной функции; function_name = «$ {1}»; }
локальный автомобиль
локальный cdr
локальный IFS
IFS = «$ {indelimiter-}»
read -t 1 car cdr || return
test «$ (declare -f $ {function_name})» || return
test «$ {car}» || { правда ; возвращаться ; }
$ {function_name} «$ {car}» || echo -n «$ {car}»
echo «$ {cdr}» | $ {FUNCNAME} «$ {function_name}»
}
############################ ####################
## сгенерировано create-stub2.sh v0.1.2
## во вторник, 18 июня 2019 13:19:54 +0900
## см.
############### ################################

Источник: filter .sh

Команды

odd () {local -ii = $ {1}; контрольная работа ! $ ((i% 2)) -экв 1; }
эхо {1..10} | фильтр нечетное

Вывод

Циклы с использованием чтения

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

Базовый цикл при чтении для левой стороны (lhs)

У нас есть команда или функция (lhs), которая может генерировать строки в файле, которые можно перебирать с помощью цикла чтения и цикла while.

Construct

lhs | while read
do
true
done
lhs — это команда, которая возвращает список строк

Команды

seq 5 | пока читаете i
do
echo $ {i}
done

Вывод

Базовый цикл while для чтения для правой стороны (rhs)

У нас есть файл (rhs) со строками, которые можно прокручивать, используя цикл чтения и while.

Построить

во время чтения
do
true
done
rhs — это файл, содержащий строки

Команды

seq 5> rhs
при чтении i
do
echo $ {i}
done
Вывод

1
2
3
4
5

Пользовательский цикл lhs while с использованием read

У нас есть поток слов, который мы хотели бы перебрать с помощью read.

Construct

(
IFS = «»
lhs | при чтении
делать
true
готово
)

lhs — это список слов

Команды

( IFS = «»
echo {1..5} | пока читаю я
делаю
echo «$ {i}
done
)

Вывод

Чтение из любого fd вместо стандартного ввода

Встроенная опция чтения, часто остающаяся нетронутой, — это та, которая позволяет вам указать, из какого файлового дескриптора читать, read -u FD. По умолчанию FD считается стандартным вводом.

Основная концепция

При назначении дескрипторов открытого файла. Перенаправление ввода-вывода в bash позволяет оставить файл открытым с определенным дескриптором файла. Нам разрешено записать в файл, прочитать из него и закрыть его, когда мы закончим.

_ ()
{
cat/dev/null > myfifo; # empty myfifo
exec 3 echo «Привет, мир! — from fd 3 «> myfifo; # записать в myfifo
read -u 3; # прочитать строку из fd 3
exec 3> & -; # закрыть fd 3
echo $ {REPLY} # строка вывода читается из fd 3 перед закрытием
}
_ # Hello, World! Из fd 3

Сборка поезда с файловыми дескрипторами и чтение -u FD

Ради интереса я решил построить поезд с файловыми дескрипторами и прочитать -u FD. Каждому файловому дескриптору написано число . Каждый файловый дескриптор считывается из файлового дескриптора 1 ниже и добавляется к самому себе.

Командная строка

bash linuxhint.com/build/test-read-fd.sh train 10

Вывод

инициализация fds …
инициализация fd 3 …
fd 3 инициализирован
инициализируется fd 4 …
fd 4 инициализирован
fds инициализирован
чтение из fd 3 и 4 …
4 3
fds перед очисткой
0 1 2 3 4 5
очистка …
очистка fds …
завершена очистка файловых дисков
файловых дисков после очистки
0 1 2 3

Функция пропуска с использованием read -u FD

Если вы используете

uname -a
MINGW64_NT-10.0 DESKTOP-XVVVVVV 2.7.0 (0.307/5 /3)
17.02.2017 14:20 x86_64 Msys
bash —version
GNU bash, версия 4.4.12 (1) -release (x86_64-pc-msys )

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

uname -a
Linux 4.9.0-8-amd64 # 1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux
bash —version
GNU bash, версия 4.4.12 (1) -release (x86_64-pc-linux-gnu)

пропустить делает не летать.

Функция

skip () {read -u 31; }

пропустить
эхо строка пропущена
true

Вывод

Итог

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

Как правильно «прочтите» или «прочитайте», «прочти» или «прочитай», «прочёл» или «прочитал»?

Эти слова равноправны и взаимозаменяемы кроме случая, когда глагол прочесть означает «провести какое-либо время за чтением». Можно сказать «я прочитал день напролёт» (весь день провел за чтением), но нельзя сказать «я прочёл день напролёт». В остальных случаях можно использовать оба варианта:

  • Прочтите второй абзац на пятой странице. — Прочитайте второй абзац на пятой странице.
  • Прочтите книгу. — Прочитайте книгу.
  • Прочтите на каникулах «Гарри Поттера». — Прочитайте на каникулах «Гарри Поттера».
  • Прочти сонет Шекспира. — Прочитай сонет Шекспира.
  • Прочти на память стих. — Прочитай на память стих.
  • Прочти с выражением. — Прочитай с выражением.
  • Прочла от корки до корки. — Прочитала от корки до корки.
  • Прочёл без остановки. Прочитал без остановки.

Правило

Для начала определим инфинитивы. Прочитайте — начальная форма «прочитать», прочтите — начальная форма «прочесть».

Глагол прочесть относится к непродуктивным классам (группам) глаголов, глагол прочитать — к 1 продуктивному классу глаголов. Формообразование у данных глаголов различается.

Прочтите, прочти, прочла, прочту, прочту, прочтёшь, прочтёт, прочтём, прочтёте, прочтут, прочёл, прочла, прочло, прочли и т.д. — формы глагола «прочесть«.

Прочитайте, прочитай, прочитала, прочитаю, прочитаешь, прочитает, прочитаем, прочитаете, прочитают и т.д. — те же формы от глагола «прочитать»

Глаголы совпадают во всех значениях, разница только при употреблении глагола «прочитать» — провести какое-то время читая, т.е. когда обозначается процесс, связанный с временем. Проще рассмотреть на примерах:

Правильно: прочитала от раннего утра до позднего вечера.

Ошибочно: прочла от раннего утра до позднего вечера.

Морфологический разбор «прочитайте»

Сделаем морфологический разбор слова «прочитайте».

  1. Часть речи

    Часть речи слова прочитайте — глагол.

  2. Морфологические признаки
    • Начальная форма: прочитать (инфинитив);
    • Постоянные признаки: 1-е спряжение, переходный, совершенный вид;
    • Непостоянные признаки: повелительное наклонение, множественное число, 2-е лицо.
  3. Синтаксическая роль

    Как правило, выступает сказуемым.

Источник статьи: https://pravica.ru/kak-pravilno-prochtite-ili-prochitayte

Прочитать или прочесть?

Всем добрый день! Меня часто спрашивают о выборе между «прочитать» и «прочесть». Поэтому решил посвятить этим глаголам отдельную статью.

Однако сначала маленькое объявление.

Теперь я публикую статьи не только в Дзене и Телеграме, но и на своём сайте https://lgram.ru/ . Сначала переношу на него ранее опубликованные материалы (это делаю постепенно), а потом уже начну размещать новые статьи. Комментарии к публикациям включил, каждый может авторизоваться через Google-аккаунт либо зарегистрироваться при помощи стандартной комбинации « + пароль», вскоре подключу и соцсети.

Поэтому, кому интересно, добавляйте сайт в закладки, оставляйте комментарии к статьям. Хотел бы сделать его крупным интернет-ресурсом по русскому языку и грамотности. Эх, мечты.))

Итак, организационные детали выяснили, перейдём к нашей теме.

Глаголы «прочитать», «прочесть» произошли от того же общеславянского корня *čьt-tь , что и «чтить», «честь», «читать», «почитать». Отсюда, к примеру, соответствующие значения у глагола «почитать»: провести некоторое время за чтением и проявлять почтение к кому-либо.

И всё-таки, прочитать или прочесть книгу? Посмотрим, что пишет « Словарь трудностей русского языка» об этих словах:

Глаголы совпадают во всех значениях, кроме значения глагола «прочитать» — «провести какое-либо время за чтением» (ср.: нормальное « прочитать всю ночь» , но неверное « прочесть всю ночь» ).

Прочесть : прочту, прочтёшь, прочтёт, прочтём, прочтёте, прочтут, прочёл, прочла, прочло, прочли, прочтённый, прочтя.

Прочитать : прочитаю, прочитаешь, прочитает, прочитаем, прочитаете, прочитают, прочитанный, прочитав.

Глагол прочесть относится к непродуктивным классам (группам) глаголов, глагол прочитать — к 1 продуктивному классу глаголов, чем и объясняется его большая употребительность.

Толковые словари тоже различий не делают. Оба глагола совпадают по смыслу, и только «Провести какое-либо время за чтением » — это дополнительное значение слова «прочитать» (признак длительности), которое отсутствует у «прочесть».

  • Прочитать книгу = Прочесть книгу.
  • Я прочёл всю книгу = Я прочитал всю книгу.

Высказывание «Я прочёл всю ночь» будет некорректно, ведь в таком случае мы утверждаем, что объект нашего чтения — это ночь, а не книга. :))

Таким образом, стилистически эти глаголы ничем не отличаются. Однако есть субъективное ощущение, что «прочесть» — более книжное слово, есть в нём некий оттенок архаичности.

Источник статьи: https://zen.yandex.ru//gramotnost/prochitat-ili-prochest-5f38f2af5d658b2a582d1302

Как правильно: «прочесть» или «прочитать» ?

Можно ли по-русски говорить: «прочитал», «прочитала»? Или надо «прочёл», «прочла»?

5 ответов 5

Как правильно: прочитать и прочесть? Глаголы прочитать и прочесть совершенного вида. Эти глаголы совпадают во всех значениях, кроме значения глагола прочитать — «провести какое-либо время за чтением» (ср.: нормальное прочитать всю ночь, но неверное прочесть всю ночь). Формообразование у глаголов прочесть и прочитать различается.

Прочесть: прочту, прочтёшь, прочтёт, прочтём, прочтёте, прочтут, прочёл, прочла, прочло, прочли, прочтённый, прочтя.

Прочитать: прочитаю, прочитаешь, прочитает, прочитаем, прочитаете, прочитают, прочитанный, прочитав.

Глагол прочесть относится к непродуктивным классам (группам) глаголов, глагол прочитать — к 1 продуктивному классу глаголов, чем и объясняется его большая употребительность.

прочесть и прочитать книгу, но только прочитать всю ночь.

Думаю, что глаголы «прочесть» и «прочитать» в некоторых случаях отличаются оттенками значений. Например: прочитать книгу, но прочесть лекцию или прочесть наставление, также: хороший чтец, но хороший читатель. Можно условно сказать, что форма «прочесть» передает внутренний, активный, «авторский» характер действия, в то время как форма «прочитать» в большей степени пассивная и «завязанная» на внешний объект. Такую же картину можно наблюдать во многих парных вариантах с суффиксом А и без него, например: рыбы мечут икру — спортсмен метает копье, брызжет фонтан — не брызгай водой, каплет (капает) дождь — не капай на пол.

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

О втором значении «прочитать», которого нет у «прочесть», вам уже сказали.

Важно понимать то, что слова эти могут употребляться по смыслу.

Например: «Я прочитал книгу Л.Н. Толстого «Война и мир»» (то есть я это сделал), НО «Я прочёл в романе Л.Н. Толстого «Война и мир», как Наташа Ростова танцевала на балу». То есть мы видим, что слово «прочитать» в данном смысле означает как обозначение факта совершения определённого действия, а слово «прочесть» подразумевает под собой непосредственно содержание действия, углубление в детали происходящего.

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

Ещё один пример: «Прочитай учебник по истории», «Прочти, что написано в параграфе 21». Вот примерно таким образом и можно эти слова употреблять.

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

Чтец прочтёт, а читатель прочитает. Но.

«Чтец прочёл» — прочёл по памяти стихотворение.

«Чтец прочитал» — имеется в виду, например, что чтец (человек, который прочёл стих по памяти), после прочтения стиха, прочитал что-то безмолвно.

«Читатель прочитал» — например: прочитал о каком-то событии из газеты.

«Читатель прочёл» — имеется в виду, например, что читатель безмолвно прочитал текст из книги, а потом прочёл его по памяти.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками грамотная-речь или задайте свой вопрос.

Связанные

Похожие

Актуальные вопросы сети

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения .

дизайн сайта / логотип © 2020 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2020.9.18.37632

Источник статьи: https://rus.stackexchange.com/questions/7596/%D0%9A%D0%B0%D0%BA-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE-%D0%BF%D1%80%D0%BE%D1%87%D0%B5%D1%81%D1%82%D1%8C-%D0%B8%D0%BB%D0%B8-%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C

Как правильно +

Авторский сайт Мельниковой Веры Александровны

Все материалы авторские. Размещение на других сайтах ЗАПРЕЩЕНО.

16 ноября в 18.00 состоится вебинар на тему: «Сочинение по литературе в декабре»

->

Как правильно? Прочитать или прочесть?

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

Прочитать или прочесть? Как правильно сказать?

Глаголы «прочитать» и «прочесть» являются синонимами, то есть близкими по значению словами.

Однако, как и многие синонимы, они различаются оттенками значений.

Основное значение данных глаголов — познакомиться с какой-то книгой, узнать её содержание (прочитать роман, прочесть роман); это и провести лекцию, объяснить какую-то тему.

Но «прочитать» — это ещё и провести какое-либо время за чтением, читать в течение какого-то времени (например, прочитать всю ночь; мы не можем сказать — «прочесть» всю ночь).

Глагол «прочитать» отличается большей употребительностью.

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

Его попросили прочитать лекцию для гостей.

Можно прочесть тысячи книг и пересказать их полностью, но человеком умным не стать в данном случае, если в этом не имеет место быть понимание. (Горо Мерр).

Материал подготовила: Мельникова Вера Александровна.

Источник статьи: https://kak-pravilno-plus.ru/2020/09/18/%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE-%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%B8%D0%BB%D0%B8-%D0%BF%D1%80%D0%BE%D1%87%D0%B5%D1%81%D1%82%D1%8C/

прочитать и прочесть

Словарь трудностей русского языка . Ю. А. Бельчиков, О. И. Ражева . 2015 .

Смотреть что такое «прочитать и прочесть» в других словарях:

прочитать — просмотреть, процитировать, почувствовать, подчитать, пробежать, пробежать глазами, зацитировать, расшифровать, разгадать, разобрать, зачитать, догадаться, прочесть, продекламировать, почитать, перечитать, изложить, огласить, угадать, отгадать,… … Словарь синонимов

прочесть — продекламировать, отгадать, угадать, разобрать, разгадать, прочитать, пробежать глазами, догадаться, перелистать, огласить, почитать, почувствовать, проглотить, проглядеть, просмотреть, пробежать, зачитать Словарь русских синонимов. прочесть 1.… … Словарь синонимов

прочитать — прочесть лекцию • действие, вербализация прочесть молитву • действие прочесть название • восприятие прочитать лекцию • действие, вербализация прочитать молитву • действие … Глагольной сочетаемости непредметных имён

прочесть между строк — разгадать, догадаться, прочитать между строк, отгадать, почувствовать, угадать, прочитать Словарь русских синонимов … Словарь синонимов

ПРОЧЕСТЬ — ПРОЧЕСТЬ, прочту, прочтёшь, прош. вр. прочёл, прочла, прич. действ. нет; прочтя, совер., что. То же, что прочитать в 1 знач. Прочесть письмо. Прочесть стихотворение. «Прочел мне целую инструкцию и уехал.» Чехов. Толковый словарь Ушакова. Д.Н.… … Толковый словарь Ушакова

прочесть — чту/, чтёшь; прочёл, чла/, чло/; прочтённый; чтён, чтена/, чтено/; прочтя/; св. см. тж. прочтение что = прочитать 1), 2), 3), 4), 5) Проче/сть книгу. Проч … Словарь многих выражений

Прочесть — сов. перех. и неперех. то же, что прочитать 2. Толковый словарь Ефремовой. Т. Ф. Ефремова. 2000 … Современный толковый словарь русского языка Ефремовой

прочесть — Syn: прочитать … Тезаурус русской деловой лексики

прочитать — Syn: прочесть … Тезаурус русской деловой лексики

пробежать — черная кошка пробежала.. Словарь русских синонимов и сходных по смыслу выражений. под. ред. Н. Абрамова, М.: Русские словари, 1999. пробежать пробежать глазами, пройти, минуть, перелистать, миновать, мелькнуть, пробежаться, умчаться, пронестись,… … Словарь синонимов

Источник статьи: https://difficulties.academic.ru/155/%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C_%D0%B8_%D0%BF%D1%80%D0%BE%D1%87%D0%B5%D1%81%D1%82%D1%8C

прочитать-прочесть

Как правильно: «прочитай» или «прочти»?

Радио 7 на семи холмах

Музыка на все времена!

Основной эфир

Радио 7 на семи холмах / Музыка любви

Музыка любви!

Музыка любви

Радио 7 на семи холмах / Музыка счастья

Музыка счастья!

Музыка счастья

Радио 7 на семи холмах / Наедине с музыкой

Наедине с музыкой!

Наедине с музыкой

Европа Плюс

Больше Хитов! Больше Музыки!

Основной эфир

Европа Плюс / TOP 40

Больше Хитов! Больше Музыки!

TOP 40

Европа Плюс / Party

Больше Хитов! Больше Музыки!

Party

Европа Плюс / LIGHT

Больше Хитов! Больше Музыки!

LIGHT

Европа Плюс / NEW

Больше Хитов! Больше Музыки!

NEW

Европа Плюс / Urban

Больше Хитов! Больше Музыки!

Urban

Европа Плюс / Акустика

Больше Хитов! Больше Музыки!

Акустика

Европа Плюс / ResiDANCE

Саундтрек твоей субботней ночи!

ResiDANCE

Дорожное Радио

Вместе в пути!

Основной эфир

Дорожное Радио / Танцы по-русски

Дискотека с доставкой на дом!

Танцы по-русски

Дорожное Радио / Рок-клуб

Рок-клуб

Рок-клуб

Дорожное Радио / Ностальгия

Ностальгия

Ностальгия

Новое Радио

Суперхиты. Суперновинки

Основной эфир

Ретро FM

Лучшая музыка 70х, 80х, 90х!

Основной эфир

Ретро FM / Ретро FM 70e

Лучшая музыка 70х!

Ретро FM 70e

Ретро FM / Ретро FM 80e

Лучшая музыка 80х!

Ретро FM 80e

Ретро FM / Ретро FM 90e

Лучшая музыка 90х!

Ретро FM 90e

Ретро FM / Вечеринка Ретро FM

Танцуют все!

Вечеринка Ретро FM

Ретро FM / Ретро FM Сан-Ремо

Ретро FM Сан-Ремо!

Ретро FM Сан-Ремо

Эльдорадио

Вы слушаете «Эльдорадио»

Основной эфир

Дорожное Радио / Кекс

Привет, 90-е!

Кекс

Европа Плюс / Свежее

Самые сочные русские новинки!

Свежее

Studio 21

Hip-hop radio

Основной эфир

Калина Красная

Музыка русской души!

Основной эфир

  • Прошел ли обломов испытание любовью сочинение
  • Прошедшего житья подлейшие черты сочинение в комедии горе от ума
  • Прочтите отрывок из сочинения историка ключевского и назовите имя царя о котором идет речь
  • Прочтите отрывок из сочинения историка рыбакова и укажите век к которому относятся описанные события
  • Прочтите отрывок из сочинения историка и укажите хана золотой орды о нашествии которого идет речь