Таким макаром выражение как пишется

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

Примечание: полный исходный код проекта можно найти здесь.

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

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

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

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

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

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

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

Примечание: разумеется, я понимаю, что существуют готовые библиотеки для решения подобных задач, но это показалось мне любопытным проектом, для которого у меня уже есть хорошая концепция решения. Я всё равно решил реализовать его и очень доволен результатом. Примерами подобных программ являются insect, qalculate!, wcalc. Важное отличие моего решения заключается в том, что программа не требует «запуска», а просто работает из консоли.

Мой первый калькулятор командной строки

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

В следующем разделе я объясню, как на стандартном C++ в примерно 350 строках кода можно реализовать изящный самодельный калькулятор командной строки.

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

ihc6wd5d8gmtwauvu7kwpcf6yok

результат которого должен быть равен 1,35 м.

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

Синтаксис математических выражений с единицами измерения

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

  1. Как выражаются числа с единицами измерения и как с ними можно выполнять действия?
  2. Какие символы допускаются в выражении и что они обозначают?
  3. Как символы группируются для создания структур/операций с математическим смыслом?
  4. Как преобразовать выражение на основании его структуры, чтобы получить математическое вычисление?

Представление чисел и единиц измерения

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

Единицы измерения СИ — простая реализация на C++

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

Каждую физическую величину можно создать из произведения степеней этих единиц. Мы называем полную сложную производную единицу «размерностью». Создадим структуру, отражающую этот факт, сохранив в ней вектор степеней, связанный с каждой основной единицей:

struct unit{              // Generic SI Derived-Unit

  vector<double> dim;     // Vector of base-unit powers

  unit(){};               // Constructors
  unit(dlist d){
    for(auto&e: d)
      dim.push_back(e);
  }

};

void fatal(string err){
  cout<<err<<endl;
  exit(0);
}

//Comparison Operators
bool operator==(const unit& l, const unit& r){
  if(l.dim.size() != r.dim.size())
    fatal("Dimension mismatch");
  for(int i = 0; i < l.dim.size(); i++)
    if(l.dim[i] != r.dim[i]) return false;
  return true;
}

bool operator!=(const unit& l, const unit& r){
  return !(l == r);
}

Мы можем задать каждую основную единицу как константу типа unit:

const unit D   = unit({0, 0, 0, 0, 0, 0, 0}); //No Dimension
const unit s   = unit({1, 0, 0, 0, 0, 0, 0});
const unit m   = unit({0, 1, 0, 0, 0, 0, 0});
const unit kg  = unit({0, 0, 1, 0, 0, 0, 0});
const unit A   = unit({0, 0, 0, 1, 0, 0, 0});
const unit K   = unit({0, 0, 0, 0, 1, 0, 0});
const unit mol = unit({0, 0, 0, 0, 0, 1, 0});
const unit cd  = unit({0, 0, 0, 0, 0, 0, 1});

Зададим набор перегруженных операторов для структуры единиц. Разные единицы можно умножать/делить, но нельзя прибавлять/вычитать. При сложении/вычитании одинаковых единиц получается та же единица. Единицу без размерности нельзя использовать как степень, но единицу можно возвести в степень:

unit operator+(unit l, unit r){
  if(l == r) return l;
  fatal("Unit mismatch in operator +");
}

unit operator-(unit l, unit r){
  if(l == r) return l;
  fatal("Unit mismatch in operator -");
}

unit operator/(unit l, unit r){
  if(l.dim.size() != r.dim.size())
    fatal("Dimension mismatch");
  for(int i = 0; i < l.dim.size(); i++)
    l.dim[i] -= r.dim[i];
  return l;
}

unit operator*(unit l, unit r){
  if(l.dim.size() != r.dim.size()) 
    fatal("Dimension mismatch");
  for(int i = 0; i < l.dim.size(); i++)
    l.dim[i] += r.dim[i];
  return l;
}

unit operator%(unit l, unit r){
  if(l == r) return l;
  fatal("Unit mismatch in operator %");
}

template<typename T>
unit operator^(unit l, const T f){
  for(int i = 0; i < l.dim.size(); i++)
    l.dim[i] *= f;
  return l;
}

Пары значений «число-единица»

Числа, связанные с единицами, называются «значениями» и задаются следующим образом:

struct val{
  double n = 1.0;  // Magnitude (default = unity)
  unit u;          // Dimension

  val(){};  //Dimensionless Single Value
  val(double _n, unit _u):n{_n},u(_u){};
};

bool operator==(const val& l, const val& r){
  if(l.u != r.u) return false;
  if(l.n != r.n) return false;
  return true;
}

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

val operator+(val l, const val& r){
  l.u = l.u + r.u;
  l.n = l.n + r.n;
  return l;
}

val operator-(val l, const val& r){
  l.u = l.u - r.u;
  l.n = l.n - r.n;
  return l;
}

val operator*(val l, const val& r){
  l.n = l.n * r.n;
  l.u = l.u * r.u;
  return l;
}

val operator/(val l, const val& r){
  l.n = l.n / r.n;
  l.u = l.u / r.u;
  return l;
}

val operator%(val l, const val& r){
  l.n -= (int)(l.n/r.n)*r.n;
  l.u = l.u%r.u;
  return l;
}

val operator^(val l, const val& r){
  if(r.u != D) fatal("Non-Dimensionless Exponent");
  l.n = pow(l.n, r.n);
  l.u = l.u ^ r.n;
  return l;
}

Производные единицы как скомбинированные основные единицы

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

map <string, val> ud = {

  //Base Unit Scalings
  {"min", val(60, s)},
  {"km",  val(1E+3, m)},
  //...

  //Derived Units (Examples)
  {"J",   val(1, kg*(m^2)/(s^2))},    //Joule   (Energy)
  //...

  //Physical Constants
  {"R",   val(8.31446261815324, kg*(m^2)/(s^2)/K/mol)},
  //...

  //Mathematical Constants
  {"pi",  val(3.14159265359, D)},
  //...

};

//Extract Value
val getval(string s){
  auto search = ud.find(s);
  if(search != ud.end()){
    val m = ud[s];
    return m;
  }

  cout<<"Could not identify unit ""<<s<<"""<<endl;
  exit(0);
}

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

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

Примечание: оператор ^ в таблице поиска требует заключения в скобки из-за его низкого порядка предшествования.

Парсинг выражений

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

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

Примечание: «особые» символы обозначают унарные операторы, преобразующие значение. Примеры кода написаны на C++ и используют стандартную библиотеку шаблонов.

Мы зададим «класс парсинга» при помощи простого нумератора и зададим «кортеж парсинга» как пару между символом и его классом парсинга. Строка парсится в «вектор парсинга», содержащий упорядоченные кортежи парсинга.

enum pc {                         //Parse Class
  NUM, UNT, OPR, BRC, SPC
};

using pt = std::pair<pc,char>;    //Parse Tuple

using pv = std::vector<pt>;       //Parse Vector

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

// Error Handling

void unrecognized(int i, char c){

  cout<<"Unrecognized character ""<<c<<"" at position "<<i<<endl;

  exit(0);

}

// Construct a parse vector from a string!

pv parse(string e){

  pv parsevec;

  // Iterate over the string

  for(string::size_type i = 0; i < e.size(); i++){

    const char c = e[i]; // Get the next character

    // Permissible characters for each class

    string brackets = "[]";
    string operators = "+-*/^%";    //Binary Operators
    string special = "!~E";         //Unary Operators
    string numbers = "0123456789.";

    // Identify the class and add a parse tuple to the vector

    if(numbers.find(c) != string::npos)
      parsevec.push_back(pt(NUM, c));

    else if(isalpha(c))
      parsevec.push_back(pt(UNT, c));

    else if(operators.find(c) != string::npos)
      parsevec.push_back(pt(OPR, c));

    else if(brackets.find(c) != string::npos)
      parsevec.push_back(pt(BRC, c));

    else if(special.find(c) != string::npos)
      parsevec.push_back(pt(SPC, c));

    else unrecognized(i, c);

  }

  return parsevec;

}

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

// MAIN FILE

using namespace std;

// ...

// Compress the command line input
string compress(int ac, char* as[]){
  string t;
  for(int i = 1; i < ac; i++)
    t += as[i]; // append to string
  return t;
}   // Note that spaces are automatically sliced out

// Compress, Parse, Evaluate
int main( int argc, char* args[] ) {

  string expression = compress(argc, args);
  pv parsevec = parse(expression);

  val n = eval(parsevec, 0);
  cout<<n<<endl;

  return 0;

}

Для нашего примера выражения это будет выглядеть так:

Распарсенный пример выражения. Каждый символ в строке может быть отнесён к конкретной категории. Числа обозначены красным, единицы оранжевым, операторы синим, скобки фиолетовым, а особые символы — зелёным.

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

Как вычислить вектор парсинга, чтобы получить единичное значение?

Вычисление выражений

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

Здесь можно сделать следующие важные наблюдения:

  1. Связанные друг с другом числа и единицы в выражении всегда находятся рядом
  2. Унарные операторы можно применять напрямую к связанным с ними парами «число-единица»
  3. Двоичные операторы используются между парами «число-единица», возвращая одну новую пару «число-единица»
  4. Двоичные операторы имеют определённый порядок вычислений
  5. Скобки содержат выражения, которые сами по себе можно вычислить для получения пары «число-единица»
  6. Сбалансированное выражение без унарных операторов или скобок всегда состоит из N значений и N-1 операторов

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

Одновременно внутри рекурсивным образом вычисляются скобки, чтобы свести их к одному значению.

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

Рекурсивная функция вычисления вектора парсинга

Рекурсивная функция eval описывается следующим процессом:

  1. Итеративно обходим вектор парсинга
    1. Когда встречаем скобку, вызываем eval для внутреннего выражения, чтобы получить значение
    2. Извлекаем пары «число-единица», применяя унарные операции, и сохраняем в вектор
    3. Извлекаем бинарные операции и сохраняем в вектор
  2. Применяем двоичные операторы в правильном порядке, используя наши сбаланированные векторы значений и операторов

Создание упорядоченной последовательности значений и операторов

Начнём с определения функции eval, получающей дополнительный параметр n, обозначающий начальную точку:

val eval(pv pvec, int n){

  if(pvec.empty()) return val(1.0, D);
  if(pvec[0].first == OPR) invalid(n);

  vector<val> vvec;   //Value Sequence Vector
  vector<char> ovec;  //Binary Operator Sequence Vector

  // ...

Примечание: пустой вектор парсинга возвращает безразмерное единичное значение и вектор парсинга не может начинаться с оператора.

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

  // ...

  size_t i = 0, j = 0;  //Parse section start and end
  while(j < pvec.size()){

    //Bracketing
    if(pvec[j].second == '['){

      i = ++j;  //Start after bracket
      for(int nbrackets = 0; j < pvec.size(); j++){
        if(pvec[j].second == '[') //Open Bracket
          nbrackets++;
        else if(pvec[j].second == ']'){
          if(nbrackets == 0) //Successful close
            break;
          nbrackets--; //Decrement open brackets
        }
      }

      //Open Bracket at End
      if(j == pvec.size())
        invalid(n+i-1);

      //Recursive sub-vector evaluate
      pv newvec(pvec.begin()+i, pvec.begin()+j);
      vvec.push_back(eval(newvec, n+j));
    }

    // ...

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

fsk1wrpqvbj yvufrf otmjta14

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

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

    // ...

    //Add Operator
    if(pvec[j].first == OPR)
      ovec.push_back(pvec[j].second);

    //Add Value
    if(pvec[j].first == NUM ||
       pvec[j].first == UNT ||
       pvec[j].first == SPC ){

      i = j; //Start at position j
      while(pvec[j].first != OPR &&
            pvec[j].first != BRC &&
            j < pvec.size()) j++; //increment

      //Construct the value and decrease j one time
      pv newvec(pvec.begin()+i, pvec.begin()+j);
      vvec.push_back(construct(newvec, n+j));
      j--;
    }

    j++; //Increment j

    //Out-of-Place closing bracket
    if(pvec[j].second == ']')
      invalid(n+j);

  }

  // Check if sequence is balanced
  if(ovec.size() + 1 != vvec.size())
    fatal("Operator count mismatch");

  // ...

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

Создание пар «число-единица» и унарные операторы

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

Знак извлекается как первый символ, за которым следует последовательность чисел. Значение извлекается при помощи stof:

val construct(pv pvec, int n){

  unit u  = D;       //Unit Initially Dimensionless
  double f = 1.0;    //Pre-Exponential Value
  double p = 1.0;    //Power
  double fsgn = 1.0; //Signs
  double psgn = 0.0;

  size_t i = 0;      //Current Index
  string s;
  bool fp = false;   //Floating Point Number?

  //First Character Negation
  if(pvec[i].second == '~'){
    fsgn = -1.0;
    i++;
  }

  //Get Numerical Elements
  while(i < pvec.size() && pvec[i].first == NUM){
    s.push_back(pvec[i].second);
    i++;
  }

  if(!s.empty()) f = stof(s);   //Extract Value
  s.clear();                    //Clear String

  //...

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

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

  //...

  //Test for Floating Point
  if(pvec[i].second == 'E'){
    i++;
    psgn = 1.0;

    if(pvec[i].second == '~'){
      psgn = -1.0;
      i++;
    }

    while(i < pvec.size() && pvec[i].first == NUM){ //Get Number
      s.push_back(pvec[i].second);
      i++;
    }
    if(!s.empty()) p = stof(s);
    else fatal("Missing exponent in floating point representation.");
    s.clear();
  }

  //Double floating point attempt
  if(pvec[i].second == 'E')
    invalid(n+i);

  //...

Наконец, мы извлекаем оставшуюся единицу как строку и получаем соответствующее значение. Применяем оставшиеся в конце унарные операторы и возвращаем окончательный вид значения:

  //...

  //Get Unit String
  while(i < pvec.size() && pvec[i].first == UNT){
    s.push_back(pvec[i].second);
    i++;
  }

  if(!s.empty()){
    val m = getval(s);
    f *= m.n; //Scale f by m.n
    u = m.u;  //Set the unit
  }

  if(pvec[i].second == '!'){
    f = fac(f);
    i++;
  }

  if(i != pvec.size())  //Trailing characters
    invalid(n+i);

  return val(fsgn*f*pow(10,psgn*p), u);
}

Этот процесс сводит все комбинации унарных операторов, чисел и единиц к структурам значений, с которыми можно оперировать при помощи бинарных операторов:

grgwcv99428cnjka3mcjmbld9o0

Здесь вы видите, как выражение с унарным оператором сводится к значению.

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

Сжатие упорядоченной последовательности значений и операторов

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

val eval(val a, val b, char op){
  if(op == '+') a = a + b;
  else if(op == '-') a = a - b;
  else if(op == '*') a = a * b;
  else if(op == '/') a = a / b;
  else if(op == '^') a = a ^ b;
  else if(op == '%') a = a % b;
  else{
    std::cout<<"Operator "<<op<<" not recognized"<<std::endl;
    exit(0);
  }
  return a;
}

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

  //...

  function<void(string)> operate = [&](string op){
    for(size_t i = 0; i < ovec.size();){
      if(op.find(ovec[i]) != string::npos){
        vvec[i] = eval(vvec[i], vvec[i+1], ovec[i]);
        ovec.erase(ovec.begin()+i);
        vvec.erase(vvec.begin()+i+1, vvec.begin()+i+2);
      }
      else i++;
    }
  };

  operate("%");
  operate("^");
  operate("*/");
  operate("+-");

  return vvec[0];
}

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

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

Примечание: эта рекурсивная структура отражает древовидную природу семантики математического выражения.

Результаты и выводы

Описанная выше структура была обёрнута в простой инструмент командной строки, который я назвал «dima» (сокращённо от «dimensional analysis»). Полный исходный код можно найти здесь.

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

Единицы правильно комбинируются и раскладываются:

 dima J
1 kg m^2 s^-2
> dima J / N
1 m
> dima J/N + 2cm
1.02 m

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

> dima R
8.31446 kg m^2 K^-1 mol^-1 s^-2

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

Можно расширить эту систему, добавив способ задания функций/преобразований с именами.

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

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

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

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


На правах рекламы

Наша компания предлагает виртуальные серверы в аренду для любых задач и проектов, будь то серьёзные выслечения или просто размещение блога на WordPress. Создавайте собственный тарифный план в пару кликов и за минуту получайте готовый сервер, максимальная конфигурация бьёт рекорды — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe!

Boolean — это логический тип в JavaScript. Его значение может быть либо истинным, либо ложным. На основе этого типа в программах составляют логические условия.

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

Значением логического типа может быть либо «истина», либо «ложь». Из-за этого логический тип также часто называют бинарным.

Создать булево значение можно несколькими способами.

Первый — явно указать значение используя ключевые слова:

        
          
          const truthyValue = true // «Истина»const falsyValue = false // «Ложь»
          const truthyValue = true 
const falsyValue = false 

        
        
          
        
      

Второй способ — использовать конструктор Boolean:

        
          
          const truthyValue = new Boolean(true) // также «Истина»const falsyValue = new Boolean(false) // также «Ложь»
          const truthyValue = new Boolean(true) 
const falsyValue = new Boolean(false) 

        
        
          
        
      

Этот способ считается устаревшим; не используйте его.

Используйте примитив вместо типа Boolean.

Третий — использовать выражение, которое можно свести к «истине» либо «лжи». (Мы поговорим о таких выражениях подробнее ниже.)

Следующие два выражения истинны, потому что 4 действительно меньше 5.

        
          
          const truthyValue = new Boolean(4 < 5)const anotherTruthy = 4 < 5
          const truthyValue = new Boolean(4 < 5)
const anotherTruthy = 4 < 5

        
        
          
        
      

Следующие два — ложны, потому что 2 * 2 === 4:

        
          
          const falsyValue = new Boolean(2 * 2 === 5)const anotherFalsy = 2 * 2 === 5
          const falsyValue = new Boolean(2 * 2 === 5)
const anotherFalsy = 2 * 2 === 5

        
        
          
        
      

С помощью явного присвоения логических значений:

        
          
          const truthyValue = trueconst falsyValue = false
          const truthyValue = true
const falsyValue = false

        
        
          
        
      

С помощью конструктора Boolean. Способ устарел, и лучше его не использовать.

        
          
          const truthyValue = new Boolean(true)const falsyValue = new Boolean(false)
          const truthyValue = new Boolean(true)
const falsyValue = new Boolean(false)

        
        
          
        
      

С помощью приведения выражений к логическим значениям через функцию Boolean:

        
          
          const truthyValue = Boolean(4 < 5)const anotherTruthy = 4 < 5const falsyValue = Boolean(2 * 2 === 5)const anotherFalsy = 2 * 2 === 5
          const truthyValue = Boolean(4 < 5)
const anotherTruthy = 4 < 5

const falsyValue = Boolean(2 * 2 === 5)
const anotherFalsy = 2 * 2 === 5

        
        
          
        
      

Булевы значения можно использовать в if условиях.

        
          
          const truthyValue = trueif (truthyValue) {  // Выполнится эта ветку кода,  // потому что оператор if проверяет,  // истинно ли выражение в скобках,  // и если да, то выполняет этот код.} else {  // Эта ветка не выполнится.}const falsyValue = falseif (falsyValue) {  // Теперь не выполнится эта ветка,  // потому что выражение в скобках ложно.} else {  // А вот эта — выполнится.}
          const truthyValue = true
if (truthyValue) {
  
  
  
  
} else {
  
}

const falsyValue = false
if (falsyValue) {
  
  
} else {
  
}

        
        
          
        
      

Логические значения можно воспринимать, как ответ на закрытый вопрос — на который можно ответить только «Да» или «Нет».

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

Плохое название для логического значения не помогает понять, на какой вопрос отвечает переменная. Например, const waitResponse = false — плохое название.

Хорошее название даёт понимание. Например, const shouldWaitForResponse = false отвечает на вопрос «Должен ли процесс подождать ответа за запрос?», а const isWaitingForResponse = false — на вопрос «Ждёт ли процесс ответа прямо сейчас?».

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

Булевым выражением в JavaScript может быть что угодно.

Хитрость в том, чтобы знать, какое выражение в какое значение в итоге будет преобразовано. Например, все эти выражения трансформируются в false:

        
          
          const falsy1 = Boolean(),  falsy2 = Boolean(0),  falsy3 = Boolean(null),  falsy4 = Boolean(""),  falsy5 = Boolean(false)
          const falsy1 = Boolean(),
  falsy2 = Boolean(0),
  falsy3 = Boolean(null),
  falsy4 = Boolean(""),
  falsy5 = Boolean(false)

        
        
          
        
      

А все эти — в true:

        
          
          const truthy1 = Boolean(true),  truthy2 = Boolean("true"),  truthy3 = Boolean("false"),  truthy4 = Boolean("Су Лин"),  truthy5 = Boolean([]),  truthy6 = Boolean({})
          const truthy1 = Boolean(true),
  truthy2 = Boolean("true"),
  truthy3 = Boolean("false"),
  truthy4 = Boolean("Су Лин"),
  truthy5 = Boolean([]),
  truthy6 = Boolean({})

        
        
          
        
      

Обратите внимание, что строка 'false' преобразуется в логическое true. Так происходит потому, что непустая строка в JavaScript считается truthy значением — то есть таким, которое приводится к true.

То же и с пустыми массивом [] и объектом {}. Они считаются truthy значениями, поэтому приводятся к true.

Обратите внимание на списки truthy и falsy значений в JavaScript.

В JavaScript интерпретатор может сам приводить типы, из-за чего мы можем сравнивать разные типы данных друг с другом.

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

Например, если мы сравним:

        
          
          5 > "4"// true5 > "4 "// true5 > " 4 "// true5 > "4."// true
          5 > "4"

5 > "4 "

5 > " 4 "

5 > "4."


        
        
          
        
      

При этом:

        
          
          5 > "4 ."// false
          5 > "4 ."


        
        
          
        
      

Здесь всё дело в том, что именно JavaScript будет приводить (преобразование типов) и к какому типу.

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

Чтобы инвертировать значение логического типа, можно использовать логическое отрицание. Логическое отрицание в JS записывается через унарный оператор !:

        
          
          const truthy = trueconst falsy = !truthy// false
          const truthy = true
const falsy = !truthy


        
        
          
        
      

Оно также используется, чтобы проверять обратные условия. Функция goToBed выполнится, если isSleeping === false.

        
          
          const isSleeping = falseif (!isSleeping) {  goToBed()}
          const isSleeping = false

if (!isSleeping) {
  goToBed()
}

        
        
          
        
      

Всегда лучше использовать примитив или функцию Boolean. Конструктор new Boolean лучше не использовать.

? Если вызывать Boolean как функцию, то она приводит переданный аргумент к логическому типу.

        
          
          const falsy = Boolean("")const truthy = Boolean(2 * 2 > 2)
          const falsy = Boolean("")
const truthy = Boolean(2 * 2 > 2)

        
        
          
        
      

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

        
          
          const sum = 2 + 2const truthy = !!sum// true
          const sum = 2 + 2
const truthy = !!sum


        
        
          
        
      

Работает это так:

  1. Первое отрицание приводит значение к отрицательному логическому значению !sum -> false;
  2. Второе отрицание инвертирует значение !false -> true;
DENI

Таким макаром выражение как пишется

12-12-2021 18:41


DENI
ïåðñîíàëüíîå ñîîáùåíèå DENI

Lexa72rus

12-12-2021 18:45


Lexa72rus
ïåðñîíàëüíîå ñîîáùåíèå Lexa72rus

ß óæ ïîäóìàë, ó äåâ÷îíîê äðóçåé íåò smile

Òîðóñ!

12-12-2021 18:55


Òîðóñ!
ïåðñîíàëüíîå ñîîáùåíèå Òîðóñ!

Äàæå åñëè ýòè çàññûõè — òóïûå è íàãëûå òâàðè, ýòîò «âîñïèòàòåëü» îãðåá ñïðàâåäëèâî.
Èáî ñàì ñåáÿ îïóñòèë ñâîèìè äåéñòâèÿìè.
Íî ìàëî.

MixRW

12-12-2021 19:54


MixRW
ïåðñîíàëüíîå ñîîáùåíèå MixRW

quote:

Originally posted by Òîðóñ!:

Íî ìàëî.

Ýò-ò òî÷íî.

officerrrrr

12-12-2021 20:49


officerrrrr
ïåðñîíàëüíîå ñîîáùåíèå officerrrrr

ñ íîãè áû åùå óè..òü ïðè çàäåðæàíèè, çàñëóæèë ñåäîé áàðàí.

SLR

12-12-2021 21:46


SLR
ïåðñîíàëüíîå ñîîáùåíèå SLR

Òåïåðü áóäåì çíàòü, êîãäà ìàëîëåòíèå çàññàíêè óíèçÿò, íóæíî ïðîìîë÷àòü è óïåðåòü ãëàçà â çåìëþ, à òî ýòî… êàê áû ÷î ïîòîì íå ñëó÷èëîñü, êàê áû íå âûçâàòü èõ ãíåâ. Ïðèåäóò è çàäåðæàò, êàê áóäòî ìàòåðîãî óáèöó è ãðàáèòåëÿ. ß òîæå íå õî÷ó ÷òîáû ìåíÿ ñåäîé ãîëîâîé îá àñôàëüò âîò òàê, òåïåðü áóäó ïîìàëêèâàòü.

edit log

DENI

12-12-2021 21:56


DENI
ïåðñîíàëüíîå ñîîáùåíèå DENI

quote:

Originally posted by SLR:

êîãäà ìàëîëåòíèå çàññàíêè óíèçÿò

Ìîçãîâ íå õâàòàåò óíèçèòü èõ ìîðàëüíî, íà÷èíàåòå ðóêàìè ìàõàòü — íó èçâîëüòå ìîðäîé â ãðÿçü. Ìîæåò ïðîñâåòëåíèå â ìîçãàõ áóäåò.

LRK

12-12-2021 21:59


LRK
ïåðñîíàëüíîå ñîîáùåíèå LRK

quote:

Èçíà÷àëüíî íàïèñàíî officerrrrr:
ñ íîãè áû åùå óè..òü ïðè çàäåðæàíèè, çàñëóæèë ñåäîé áàðàí.

Òî åñòü ìåñòü çà ñîâåðøåííîå ïðåñòóïëåíèå â âèäå èçáèåíèÿ íå ñîïðîòèâëÿþùåãîñÿ ïîäîçðåâàåìîãî ýòî íîðìàëüíî? À ïî÷åìó òî äóìàë, ÷òî ýòî òîëüêî äëÿ áàíäèòîâ íîðìàëüíîå ïîâåäåíèå. ß íå òî ÷òî áû åãî îïðàâäûâàþ, íî åñëè îí âèíîâàò ïî çàêîíó — çàäåðæèòå çàêîííî è çàêîííî æå îñóäèòå. Ïðåäëîæèëè âûéòè, ïðåäúÿâèëè îáâèíåíèå — ñäàëñÿ — çàäåðæàëè. Îêàçàë ñîïðîòèâëåíèå — ïðèíÿëè ìåðû. À òàê, åñëè ïîêàçàòü â íà÷àëå âòîðîå âèäåî — ìåíòû èçáèëè ñòàðèêà íåïîíÿòíî çà ÷òî. Âñåõ â íàðõîç…

DENI

12-12-2021 22:08


DENI
ïåðñîíàëüíîå ñîîáùåíèå DENI

Åñëè åñòü èíôîðìàöèÿ, ÷òî ïîäîçðåâàåìûé â, ñêàæåì, çëîñòíîé íåóïëàòå àëèìåíòîâ, ÿâëÿåòñÿ âëàäåëüöåì îðóæèÿ èëè èìååò íàâûêè áîðüáû åãî èìåíî òàê æ¸ñòêî è äîëæíû çàäåðæèâàòü. Ïðè çàäåðæàíèè ó÷èòûâàåòñÿ ëè÷íîñòü ôèãóðàíòà à íå òÿæåñòü ñîâåðøåííîãî èì ïðåñòóïëåíèÿ.

kirn11

12-12-2021 22:14


kirn11
ïåðñîíàëüíîå ñîîáùåíèå kirn11

quote:

Originally posted by DENI:

Ïðè çàäåðæàíèè ó÷èòûâàåòñÿ ëè÷íîñòü ôèãóðàíòà à íå òÿæåñòü ñîâåðøåííîãî èì ïðåñòóïëåíèÿ.

È òî è äðóãîå.

DENI

12-12-2021 22:43


DENI
ïåðñîíàëüíîå ñîîáùåíèå DENI

Íå ñîâñåì âåðíî âûñêàçàëñÿ ÿ.
Êîíå÷íî, òÿæêèå, îñîáî òÿæêèå — â ëþáîì ñëó÷àå æåñòêî.

WOLF63rus

12-12-2021 23:26


WOLF63rus
ïåðñîíàëüíîå ñîîáùåíèå WOLF63rus

ß ÷òî òî íå ïîíÿë, âèíà äàííîãî ôèãóðàíòà ïîëíîñòüþ èçëîæåíà â ïåðâîì âèäåî?
Èëè äàëüøå îí ñäåëàë åùå ÷òî íèáóäü «èíòåðåñíîå». Åñëè íè÷åãî äðóãîãî íå áûëî, òî áðåä ïîëíûé. È äåÿòåëü, êîòîðûé èíèöèèðîâàë ïîäîáíîå çàäåðæàíèå èìååò íèçêèé óðîâåíü èíòåëëåêòà. Íó èëè åñòü åùå êàêèå òî «íþàíñû». Íàïðèìåð â âèäå ëè÷íîé çàèíòåðåñîâàííîñòè.
×òî ýòîìó àðìÿíèíó ìîæíî ðåàëüíî ïðåäúÿâèòü? 116? Íå çíàþ êàê ñåé÷àñ, à ðàíüøå äàííûìè äåëàìè çàíèìàëñÿ ÓÓÌ. È âñå äåéñòâèÿ ïî äàííîìó ñîáûòèþ ñâåëèñü áû ê òîìó, ÷òî ó÷àñòêîâûé âûçâàë áû ôèãóðàíòà ïîâåñòêîé, âçÿë áû îáúÿñíåíèå è íàïðàâèë áû ìàòåðèàëû â ìèðîâîé ñóä. Âîò è âñå. È áåç âñÿêîé êëîóíàäû. Êòî è çà÷åì äàë êîìàíäó íà òàêîå çàäåðæàíèå? ×òî çà êëîóíû åãî ïðîâîäÿò? Êàêèõ «äåòåé» îí îáèæàë??
 îáùåì, âîïðîñîâ ìíîãî.

kirn11

12-12-2021 23:34


kirn11
ïåðñîíàëüíîå ñîîáùåíèå kirn11

quote:

Originally posted by WOLF63rus:

×òî ýòîìó àðìÿíèíó ìîæíî ðåàëüíî ïðåäúÿâèòü? 116? Íå çíàþ êàê ñåé÷àñ, à ðàíüøå äàííûìè äåëàìè çàíèìàëñÿ ÓÓÌ. È âñå äåéñòâèÿ ïî äàííîìó ñîáûòèþ ñâåëèñü áû ê òîìó, ÷òî ó÷àñòêîâûé âûçâàë áû ôèãóðàíòà ïîâåñòêîé, âçÿë áû îáúÿñíåíèå è íàïðàâèë áû ìàòåðèàëû â ìèðîâîé ñóä. Âîò è âñå. È áåç âñÿêîé êëîóíàäû. Êòî è çà÷åì äàë êîìàíäó íà òàêîå çàäåðæàíèå? ×òî çà êëîóíû åãî ïðîâîäÿò? Êàêèõ «äåòåé» îí îáèæàë?? îáùåì, âîïðîñîâ ìíîãî.

Ñò. 213 ÷. 1 «à». Ïî÷èòàéòå èçìåíåíèÿ ñ 2021-ãî ãîäà. È ðàíüøå è ñåé÷àñ — íå ó÷àñòêîâûé. À ÑÊ (ñîâñåì ðàíüøå — ïðîêóðàòóðà). Íåñîâåðøåííîëåòíèå.

edit log

WOLF63rus

12-12-2021 23:35


WOLF63rus
ïåðñîíàëüíîå ñîîáùåíèå WOLF63rus

quote:

Åñëè åñòü èíôîðìàöèÿ, ÷òî ïîäîçðåâàåìûé â, ñêàæåì, çëîñòíîé íåóïëàòå àëèìåíòîâ, ÿâëÿåòñÿ âëàäåëüöåì îðóæèÿ èëè èìååò íàâûêè áîðüáû åãî èìåíî òàê æ¸ñòêî è äîëæíû çàäåðæèâàòü.

À åùå áîëüøåãî èäèîòèçìà íå ïðèäóìàåòå? Ìîæåò è çà ïåðåõîä â íåïîëîæåííîì ìåñòå âëàäåëüöà îðóæèÿ íóæíî ëèöîì â àñôàëüò êëàñòü?

kirn11

12-12-2021 23:37


kirn11
ïåðñîíàëüíîå ñîîáùåíèå kirn11

quote:

Originally posted by WOLF63rus:

Ìîæåò è çà ïåðåõîä â íåïîëîæåííîì ìåñòå âëàäåëüöà îðóæèÿ íóæíî ëèöîì â àñôàëüò êëàñòü?

Çà ÊîÀÏ íå íóæíî. Íî åñëè çíàåøü, ÷òî ó íåãî ñòâîë — áóäü ãîòîâ ñòðåëÿòü. Çà ÓÊ — íàäî, åñëè íå õî÷åøü æåíó âäîâîé ñäåëàòü.

WOLF63rus

12-12-2021 23:39


WOLF63rus
ïåðñîíàëüíîå ñîîáùåíèå WOLF63rus

quote:

Ñò. 213 ÷. 1 «à». Ïî÷èòàéòå èçìåíåíèÿ ñ 2021-ãî ãîäà. È ðàíüøå è ñåé÷àñ — íå ó÷àñòêîâûé. À ÑÊ (ñîâñåì ðàíüøå — ïðîêóðàòóðà). Íåñîâåðøåííîëåòíèå.

Ïðî òî ÷òî îíè íåñîâåðøåííîëåòíèå íå çíàë. Äîïóñòèì. Äàæå åñëè òàê, äàííàÿ êëîóíàäà ñ çàäåðæàíèåì íóæíà? Èëè ýòî ÷üè òî «îñîáåííûå» äåòêè?

officerrrrr

12-12-2021 23:46


officerrrrr
ïåðñîíàëüíîå ñîîáùåíèå officerrrrr

quote:

Èçíà÷àëüíî íàïèñàíî LRK:

Òî åñòü ìåñòü çà ñîâåðøåííîå ïðåñòóïëåíèå â âèäå èçáèåíèÿ íå ñîïðîòèâëÿþùåãîñÿ ïîäîçðåâàåìîãî ýòî íîðìàëüíî? À ïî÷åìó òî äóìàë, ÷òî ýòî òîëüêî äëÿ áàíäèòîâ íîðìàëüíîå ïîâåäåíèå. ß íå òî ÷òî áû åãî îïðàâäûâàþ, íî åñëè îí âèíîâàò ïî çàêîíó — çàäåðæèòå çàêîííî è çàêîííî æå îñóäèòå. Ïðåäëîæèëè âûéòè, ïðåäúÿâèëè îáâèíåíèå — ñäàëñÿ — çàäåðæàëè. Îêàçàë ñîïðîòèâëåíèå — ïðèíÿëè ìåðû. À òàê, åñëè ïîêàçàòü â íà÷àëå âòîðîå âèäåî — ìåíòû èçáèëè ñòàðèêà íåïîíÿòíî çà ÷òî. Âñåõ â íàðõîç…

Íó-íó, ñàìà ïðîñòîòà, ñèäÿò òàêèå âñå õîëåííûå çà ñâîèìè êëàâèàòóðàìè…
Çàäåðæèøü êàêîå-íèáóäü ÷ìî çà òÿæêîå, à îí è íà ñóäå òàêîé âåñü óëûá÷èâûé, ëåò ÷åðåç 8 âûéäåò è îïÿòü çà ñâîå, à òàê äëÿ ïðîôèëàêòèêè õîòÿ áû… Õîðîøî íà ñâîåé æîïå ñèäåòü è êàê äðóãèì ðàáîòó äåëàòü ãîâîðèòü…

WOLF63rus

12-12-2021 23:47


WOLF63rus
ïåðñîíàëüíîå ñîîáùåíèå WOLF63rus

quote:

Çà ÊîÀÏ íå íóæíî. Íî åñëè çíàåøü, ÷òî ó íåãî ñòâîë — áóäü ãîòîâ ñòðåëÿòü. Çà ÓÊ — íàäî, åñëè íå õî÷åøü æåíó âäîâîé ñäåëàòü.

 ÓÊ åñòü êó÷à ñòàòåé , êîòîðûå ìîãóò ïîäíÿòü îôèñíûå àìåáû, ó êîòîðûé äóõó íå õâàòèò äàæå ïî ëèöó êîãî òî óäàðèòü. Ýòî ïåðâîå. Âòîðîå. Åñëè ó êîãî òî õâàòèò óìà ïðèìåíèòü èìåþùååñÿ çàêîííîå îðóæèå åñëè ïûòàþòñÿ çàäåðæàòü çà íåóïëàòó àëèìåíòîâ, òî ó òàêîãî âïîëíå õâàòèò óìà ïðèìåíèòü åãî äàæå åñëè ïðîñòî ãàèøíèêè îñòàíîâÿò. È òðåòüå. Ñòâîë ìîæåò áûòü è íå çàêîííûé, ïðî êîòîðûé áàçà äàííûõ íå çíàåò. Òàê ÷òî â ïåðâóþ î÷åðåäü íà ìîðäó ëèöà íàäî ñìîòðåòü. Îíà î ìíîãîì ìîæåò ñêàçàòü.

WOLF63rus

12-12-2021 23:50


WOLF63rus
ïåðñîíàëüíîå ñîîáùåíèå WOLF63rus

quote:

Çàäåðæèøü êàêîå-íèáóäü ÷ìî çà òÿæêîå

Êàêîå òàêîå «òÿæêîå» ñîâåðøèëî «÷ìî» èç äàííîé òåìû?

kirn11

12-12-2021 23:51


kirn11
ïåðñîíàëüíîå ñîîáùåíèå kirn11

quote:

Originally posted by WOLF63rus:

Òàê ÷òî â ïåðâóþ î÷åðåäü íà ìîðäó ëèöà íàäî ñìîòðåòü. Îíà î ìíîãîì ìîæåò ñêàçàòü.

Êîíå÷íî. Ñîáñòâåííî ÿ êàê ðàç îá ýòîì. Äåíèñ, äóìàþ, î òîì æå.

WOLF63rus

12-12-2021 23:54


WOLF63rus
ïåðñîíàëüíîå ñîîáùåíèå WOLF63rus

quote:

Êîíå÷íî. Ñîáñòâåííî ÿ êàê ðàç îá ýòîì. Äåíèñ, äóìàþ, î òîì æå.

Äàííûé àðìÿíèí ïî âèäó è ïî ñîâåðøåííîìó ïðàâîíàðóøåíèþ ÿâíî íå îïàñåí. Ïðèáåæàë áû êàê ìèëåíüêèé ïðîñòî ïî ïîâåñòêå. Ê ÷åìó êëîóíàäà? Èëè âñå æå â çàãîëîâêå òåìû íå âñå èçëîæåíî?

WOLF63rus

13-12-2021 00:11


WOLF63rus
ïåðñîíàëüíîå ñîîáùåíèå WOLF63rus

È íà ñ÷åò 213. Åñëè åãî äåéñòâèÿ íà 213 íàòÿãèâàòü, òî òàêèì ìàêàðîì ìîæíî â ïÿòíèöó è ñóááîòó â ëþáîì ìåñòíîì çëà÷íîì ìåñòå òàêèõ ôèãóðàíòîâ ïà÷êàìè îôîðìëÿòü. Íèêàêèõ çîí òîãäà íå õâàòèò.

kirn11

13-12-2021 00:31


kirn11
ïåðñîíàëüíîå ñîîáùåíèå kirn11

quote:

Originally posted by WOLF63rus:

Åñëè åãî äåéñòâèÿ íà 213 íàòÿãèâàòü, òî òàêèì ìàêàðîì ìîæíî â ïÿòíèöó è ñóááîòó â ëþáîì ìåñòíîì çëà÷íîì ìåñòå òàêèõ ôèãóðàíòîâ ïà÷êàìè îôîðìëÿòü.

Äà. Òàê. Ôîðìàëüíî åñëè.
Íî…íàïèñàòü ðåàëüíî õîðîøèé ÓÊ ïîêà íè ó êîãî â ìèðå íå ïîëó÷èëîñü.

edit log

DENI

13-12-2021 00:33


DENI
ïåðñîíàëüíîå ñîîáùåíèå DENI

quote:

Originally posted by WOLF63rus:

ïî âèäó

Íó ýòî òî÷íî íå àðãóìåíò.
È ïî âèäó, íà ëèöî îêîëî 50. Îáðàòèòå âíèìàíèå, êàê äåðæèò òåëåôîí è òûêàåò ïàëüöàìè. «ðàñïàëüöîâêó» äîëæíû ïîìíèòü. íó è ïðåäïîëîæèì, ÷òî ó ôèãóðàíòà áîãàòîå êðèìèíàëüíîå ïðîøëîå â 90õ.

Åãî, êñòàòè, òîëüêî äâîå òÿæåëûõ è áðàëè.
Íó è òàê: à íà êîì-òî ó÷èòüñÿ òÿæåëûì òîæå íàäî… Òðåíèðîâêè ýòî îäíî.
îò ïðîñòîãî ê ñëîæíîìó.

Íó è íà ïðåäïîëîæåíèå: çàìåøàí â êðèìèíàëå è òóò òàêîé óäà÷íûé ñïîñîá ïðèõâàòèòü.

Ïîìíèòå êëàññèêó: «îòêðîéòå ïîëèöèÿ 2». Ñöåíà ãäå îáà ïðîäàæíûõ ïðåññàíóëè áàíêèðà
https://www.youtube.com/watch?v=ptnI92Hv2Cc

ñ 13:10

edit log

DENI

13-12-2021 02:20


DENI
ïåðñîíàëüíîå ñîîáùåíèå DENI

quote:

Originally posted by ÂÀÉÍÀ:

À ÷òî, ïýïñîâ â «ë¸ãêîé» òåïåðü òîæå òÿæÎëûìè îáçûâàþò

Ýòî ãâàðäåéöû êàðäèíàëà, ñóäÿ ïî ïàò÷àì.

quote:

Originally posted by ÂÀÉÍÀ:

Ìèíèìóì çà 70-ò

êàâêàçåö îí. îíè âûãëÿäÿò ñòàðøå ñâîèõ ëåò, ïîýòîìó ïðåäïîëàãàþ 50.

Òàéãà-ÄÂ

13-12-2021 02:50


Òàéãà-ÄÂ
ïåðñîíàëüíîå ñîîáùåíèå Òàéãà-ÄÂ

Èíòåðåñíî ïî÷èòàòü êîììåíòàðèè ê ïîäîáíîãî ðîäà íîâîñòÿì. Ñêëàäûâàåòñÿ âïå÷àòëåíèå, ÷òî ðÿä ó÷àñòíèêîâ ïî êàêèì-òî íåÿñíûì, ãëóáîêî ëè÷íûì ïðè÷èíàì ïðîñòî âîò ÍÅÍÀÂÈÄßÒ ìîëîäîñòü, þíîñòü, âåñåëüå, ìîëîäûõ ëþäåé è äåâóøåê. È åñëè â êàêîé-òî èñòîðèè îäíà èç ñòîðîí — ìîëîäåæü, òî ÂÈÍÎÂÀÒÛ ÀÏÐÈÎÐÈ, ÍÀÐÊÎÌÀÍÛ È ÏÐÎÑÒÈÒÓÒÊÈ!!!

Ñåäîâëàñûé äÿòåë îãðåá çàñëóæåííî. Íà ìåñòå äåâî÷åê ÿ á åùå ñîîáùèë, ÷òî äÿäüêà ïðåäëàãàë ïèñüêó ïîêàçàòü è ïðî÷èå íåïðèñòîéíîñòè. Íó, èëè ÷òî ñëîæèëîñü âîò òàêîå âïå÷àòëåíèå.

edit log

rexfox

13-12-2021 06:54


rexfox
ïåðñîíàëüíîå ñîîáùåíèå rexfox

À ÷å îí, òàêîé êðóòîé ïåðåä äåâ÷îíêàìè (äà âûçûâàéòå ïîëèöèþ, äà âàì íèêòî íå ïîìîæåò, äà ÿ âàøó ìàìó èïïàë) ïåðåä ïîëèöèåé íå ñòàë âûÿáûâàòüñÿ? Êàê òî íåçà÷åò.

rieltor2

13-12-2021 10:24


rieltor2
ïåðñîíàëüíîå ñîîáùåíèå rieltor2

quote:

Èçíà÷àëüíî íàïèñàíî SLR:
Òåïåðü áóäåì çíàòü, êîãäà ìàëîëåòíèå çàññàíêè óíèçÿò, íóæíî ïðîìîë÷àòü è óïåðåòü ãëàçà â çåìëþ, à òî ýòî… êàê áû ÷î ïîòîì íå ñëó÷èëîñü, êàê áû íå âûçâàòü èõ ãíåâ. Ïðèåäóò è çàäåðæàò, êàê áóäòî ìàòåðîãî óáèöó è ãðàáèòåëÿ. ß òîæå íå õî÷ó ÷òîáû ìåíÿ ñåäîé ãîëîâîé îá àñôàëüò âîò òàê, òåïåðü áóäó ïîìàëêèâàòü.

À åñòü äîñòîâåðíàÿ èíôà ,÷òî îíè åãî îñêîðáèëè è óíèçèëè? Èñõîäèì æå èç âèäåî, íà êîòîðîì ãðîçíûé ïîáåäèòåëü ïîäðîñòêîâ ñàìîóòâåðæäàåòñÿ. Åõàë áû â Öõèíâàë, òàì áû è óòâåðæäàëñÿ (íå ðàçæèãàþ, ÷èñòî «êðèìèíàë»)

Ìåíòû âñ¸ ïðàâèëüíî ñäåëàëè è òîëüêî òàê (óäèâèëî, ÷òî òàê áûñòðî). À åùå, äåéñòâèòåëüíî íàäî áûëî âûçâàòü ïàïó, êàê ïðîñèë ýòîò ãðîçíûé âîèí… Òîëüêî òîãäà áû óæå ïàïó êðóòèëè, ê ñîæàëåíèþ…

edit log

Sagitarius

13-12-2021 12:07


Sagitarius
ïåðñîíàëüíîå ñîîáùåíèå Sagitarius

quote:

Èçíà÷àëüíî íàïèñàíî WOLF63rus:
Êòî è çà÷åì äàë êîìàíäó íà òàêîå çàäåðæàíèå? ×òî çà êëîóíû åãî ïðîâîäÿò? Êàêèõ «äåòåé» îí îáèæàë??
 îáùåì, âîïðîñîâ ìíîãî.

Î÷åíü óæ êó÷íî â ïîñëåäíåå âðåìÿ îïàñíûå íåàäåêâàòû ïîøëè. Òàê ÷òî ëó÷øå ïåðåáäåòü ñ òàêèìè ïñèõàìè. À òî åñëè îí ãðàíàòó èëè ñòâîë ïðè çàäåðæàíèè âûòàùèò ñàìè æå ïåðâûå ïîòîì ïèñàòü áóäåòå «Ïî÷åìó íå ïðåäóñìîòðåëè?!!!»

vulcan1600

13-12-2021 14:20


vulcan1600
ïåðñîíàëüíîå ñîîáùåíèå vulcan1600

Ó ìåíÿ òàêîé âî äâîðå æèâ¸ò.
Òáèëèññêèé àðìÿíèí Ãèâè.
Ìàøèíó ñòàâèò âñåãäà íà äâà ìåñòà è ïåðåêðûâàåò äðóãèõ èíîãäà.
Òîæå âåñü íà ïîíÿòèÿõ è ãðîìêîì ðàçãîâîðå.

griga71

13-12-2021 14:29


griga71
ïåðñîíàëüíîå ñîîáùåíèå griga71

quote:

Èçíà÷àëüíî íàïèñàíî Ë.Õ.Îñâàëüä:
Ìíå îäíîìó ïîêàçàëîñü, ÷òî íà ïåðâîì è íà âòîðîì âèäåî ìóæèêè ðàçíûå?)))

Íà âòîðîì àðà îò ñòðàõà ñåäèíîé ïîø¸ë.

ASDER_K

13-12-2021 15:54


ASDER_K
ïåðñîíàëüíîå ñîîáùåíèå ASDER_K

quote:

Originally posted by vulcan1600:

Ó ìåíÿ òàêîé âî äâîðå æèâ¸ò.
Òáèëèññêèé àðìÿíèí Ãèâè.
Ìàøèíó ñòàâèò âñåãäà íà äâà ìåñòà è ïåðåêðûâàåò äðóãèõ èíîãäà.
Òîæå âåñü íà ïîíÿòèÿõ è ãðîìêîì ðàçãîâîðå.

òàêîãî õîðîøî ëå÷èò ñïóñêàíèå êîëåñ ðàçíîé ñòåïåíè — îò ïðîñòî ñïóñêàíèÿ — äî áîêîâîãî ïîðåçà. íó, ñìîòðÿ ïî ñòåïåíè ïîíÿòëèâîñòè.
õîòÿ îáû÷íî äàæå òóïûå ïîíèìàþò, ÷òî çíà÷àò çîëîòíèêè èç êîëåñ, ïðèêëååííûå ñêîò÷åì ê ëîáîâîìó.

Òîðóñ!

13-12-2021 15:56


Òîðóñ!
ïåðñîíàëüíîå ñîîáùåíèå Òîðóñ!

quote:

Èçíà÷àëüíî íàïèñàíî vulcan1600:
Ó ìåíÿ òàêîé âî äâîðå æèâ¸ò.
Òáèëèññêèé àðìÿíèí Ãèâè.
Ìàøèíó ñòàâèò âñåãäà íà äâà ìåñòà è ïåðåêðûâàåò äðóãèõ èíîãäà.
Òîæå âåñü íà ïîíÿòèÿõ è ãðîìêîì ðàçãîâîðå.

Íó ïðè âèäå òåáÿ îí ãëàçà âíèç è âäîëü ñòåíî÷êè êðàäåòñÿ?
Âåäü òàê, ïðàâäà?

biggrin

Vizner2.0

13-12-2021 16:54


Vizner2.0
ïåðñîíàëüíîå ñîîáùåíèå Vizner2.0

quote:

Èçíà÷àëüíî íàïèñàíî WOLF63rus:

Êàêîå òàêîå «òÿæêîå» ñîâåðøèëî «÷ìî» èç äàííîé òåìû?

à óæ çàäåðæàíèå êàê áóäòî âîîðóæåííîãî áàðìàëåÿ áåðóò . ïîíÿòíî ÷òî îí ÷ìî , íî çà÷åì âñÿ ýòà âîéíóøêà íà êàìåðó ñ óíèæåíèåì ëåæàùåãî ïðî÷èìè ïðèêîëàìè . ïî òîìó ÷òî îí ñäåëàë — ñàíêöèé íà øòðàô è íà ÷àñòíîå îáâèíåíèå .

Perevozchik

13-12-2021 17:13


Perevozchik
ïåðñîíàëüíîå ñîîáùåíèå Perevozchik

À êòî òàì ïàïà? âèäåî íå ðàñêàçûâàþò?Îí ñàì õóëèãàíà êðóòèë,èëè ïîä÷èíåííûõ ïîñëàë?

Vizner2.0

13-12-2021 17:27


Vizner2.0
ïåðñîíàëüíîå ñîîáùåíèå Vizner2.0

quote:

Èçíà÷àëüíî íàïèñàíî ASDER_K:

òàêîãî õîðîøî ëå÷èò ñïóñêàíèå êîëåñ ðàçíîé ñòåïåíè — îò ïðîñòî ñïóñêàíèÿ — äî áîêîâîãî ïîðåçà. íó, ñìîòðÿ ïî ñòåïåíè ïîíÿòëèâîñòè.
õîòÿ îáû÷íî äàæå òóïûå ïîíèìàþò, ÷òî çíà÷àò çîëîòíèêè èç êîëåñ, ïðèêëååííûå ñêîò÷åì ê ëîáîâîìó.

à ìîæåò ïðîñòî ïîäîéòè è ñïîêîéíî ïîãîâîðèòü , òî ÷òî Âû ïðåäëàãàåòå äåëàòü äëÿ íîðìàëüíîãî âçðîñëîãî ìóæ÷èíû íèçîñòü ïîëíàÿ .

DENI

13-12-2021 17:50


DENI
ïåðñîíàëüíîå ñîîáùåíèå DENI

quote:

Originally posted by Vizner2.0:

ïî òîìó ÷òî îí ñäåëàë — ñàíêöèé íà øòðàô è íà ÷àñòíîå îáâèíåíèå .

Îïÿòü îøèáàåòåñü. Ñò 20÷4 ÓÏÊ âàì â ïîìîùü.

Òîðóñ!

13-12-2021 18:57


Òîðóñ!
ïåðñîíàëüíîå ñîîáùåíèå Òîðóñ!

quote:

Originally posted by Vizner2.0:

ïðîñòî ïîäîéòè è ñïîêîéíî ïîãîâîðèòü

È ïðîñòî ñïîêîéíî ïîéòè íàõóé.

À ãëàâíîå — êîãäà ïðèäåòñÿ ïåðåéòè ê ïëàíó Á, ïàöèåíò áóäåò òî÷íî çíàòü, îòêóäà âåòåð äóåò.

ÇÛ
Èëè ñïîêîéíî ïîãîâîðèòü ÒÀÊ, ÷òîáû ñëóøàòåëü íàâàëèë â øòàíû è äîëãî èçâèíÿëñÿ.
Íî ýòî íàäî óìåòü è áûòü ïðè êîçûðÿõ.

smile

edit log

Vizner2.0

13-12-2021 19:40


Vizner2.0
ïåðñîíàëüíîå ñîîáùåíèå Vizner2.0

quote:

Èçíà÷àëüíî íàïèñàíî WOLF63rus:
È íà ñ÷åò 213. Åñëè åãî äåéñòâèÿ íà 213 íàòÿãèâàòü, òî òàêèì ìàêàðîì ìîæíî â ïÿòíèöó è ñóááîòó â ëþáîì ìåñòíîì çëà÷íîì ìåñòå òàêèõ ôèãóðàíòîâ ïà÷êàìè îôîðìëÿòü. Íèêàêèõ çîí òîãäà íå õâàòèò.

Ïî ÷1 , äà è ïî ÷2 ïðè ïðèçíàíèè è ðàñêàÿíèè ïåðâîõîäà , åñëè ó ñóäüè íå ïìñ , òî óñëîâêà

Vizner2.0

13-12-2021 19:47


Vizner2.0
ïåðñîíàëüíîå ñîîáùåíèå Vizner2.0

quote:

Èçíà÷àëüíî íàïèñàíî DENI:

Íó ýòî òî÷íî íå àðãóìåíò.
È ïî âèäó, íà ëèöî îêîëî 50. Îáðàòèòå âíèìàíèå, êàê äåðæèò òåëåôîí è òûêàåò ïàëüöàìè. «ðàñïàëüöîâêó» äîëæíû ïîìíèòü. íó è ïðåäïîëîæèì, ÷òî ó ôèãóðàíòà áîãàòîå êðèìèíàëüíîå ïðîøëîå â 90õ.

Åãî, êñòàòè, òîëüêî äâîå òÿæåëûõ è áðàëè.
Íó è òàê: à íà êîì-òî ó÷èòüñÿ òÿæåëûì òîæå íàäî… Òðåíèðîâêè ýòî îäíî.
îò ïðîñòîãî ê ñëîæíîìó.

Íó è íà ïðåäïîëîæåíèå: çàìåøàí â êðèìèíàëå è òóò òàêîé óäà÷íûé ñïîñîá ïðèõâàòèòü.

Ïîìíèòå êëàññèêó: «îòêðîéòå ïîëèöèÿ 2». Ñöåíà ãäå îáà ïðîäàæíûõ ïðåññàíóëè áàíêèðà
https://www.youtube.com/watch?v=ptnI92Hv2Cc

ñ 13:10

Áàêëàí ñî ñòàæåì — äåâêàì ïîÿñíÿåò çà ïîíÿòèÿ , ðàñïóñêàåò ðóêè è íà ìàòå ãðîçèò èõ ðîäèòåëÿì ñåêñóàëüíûìè èçâðàùåíèÿìè è ìóæåëîæåñòâîì , îáû÷íûé òîðãàø ñ ýòíè÷åñêèìè îñîáåííîñòÿìè , åùå è î÷åíü íå óìíûé , ïîñëå òàêèõ âèäîñîâ , åãî âåñü ìàëåíüêèé ãîðîäîê òðîëèòü áóäåò , à ðàìñó êðèâóþ ãíàòü åìó óæå ññûêîòíî áóäåò , à òî îïÿòü ñ àñôàëüòà íà êàìåðó ïðåäñòàâëÿòüñÿ è ìàøèíó ñâîþ ïóçîì ìûòü íà âñþ Ðô


в процессе

359 172 зн., 8,98 а.л.

Сортировать по

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

Эксперт


Объясните мне дурному, мода что ли сейчас на рифлексию пошла? 

 раскрыть ветвь
 1

a krasnikov 636630226124560969

Андрей Красников

автор

1) рефлексия пишется через «е».

2) не нравится — не читаем.

3) если не вводить размышления героя о своем состоянии, то:

— часть читателей скажет, что он бесчувственная сволочь;

— часть читателей скажет, что не верят всему происходящему;

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

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

 раскрыть ветвь
 0

Владимир


Эх, не утерпел. Хотел дождаться книги целиком. Теперь в рядах «ждушек» проды. Книга полностью оправдала мои ожидания… Все просто очень вкусно. 

 раскрыть ветвь
 0

id25366422 637474388153821900

 раскрыть ветвь
 1

zenekvlasov19 637733256269554245

 раскрыть ветвь
 0

zahartihom 637717935262161650

оригш


Очень хорошо, других слов и в голову не приходит

 раскрыть ветвь
 0

Leon


Спасибо за новую главу. 

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

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

 раскрыть ветвь
 1

a krasnikov 636630226124560969

 раскрыть ветвь
 0

zenekvlasov19 637733256269554245

 раскрыть ветвь
 1

a krasnikov 636630226124560969

 раскрыть ветвь
 0

ComatozZzZzZz 637590466930298542

Дурной


После души монстра прогресс уровня был 1/10. Я думал каждая душа даёт +1, разве нет ? Как так получилось, что до уровня осталась всего 1 душа ?

 раскрыть ветвь
 3

a krasnikov 636630226124560969

Андрей Красников

автор

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

 раскрыть ветвь
 2

JutHut 636359256588106198

Jut Hut


Очень интересно, что же будет дальше

 раскрыть ветвь
 0

Александр Кернс


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

 раскрыть ветвь
 2

Leon


Но тогда герою вряд ли целые штаны бы достались) 

 раскрыть ветвь
 0

Niki


Думаю с ним еще все впереди. Полезное заркало.

 раскрыть ветвь
 0

Exception


Первые 3 абзаца — как будто описание 2 января :)  

 раскрыть ветвь
 0

ka2661 637218566771892725

Выы


сегодня хуже чем вчера но лучше чем завтра. спасибо? 

 раскрыть ветвь
 0

brusnichka1 636769206248814168

Олеся


Супер! Благодарю за продочку)))

 раскрыть ветвь
 0

id6783196 636637183660841504

Alexey Tkachenko


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

 раскрыть ветвь
 3

zenekvlasov19 637733256269554245

 раскрыть ветвь
 1

dimitra851 637247662832451745

 раскрыть ветвь
 3

fat crocodile 637409807000094130

Сергей Холодилов


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

 раскрыть ветвь
 0

Jevrika


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

 раскрыть ветвь
 1

Архипов


Очень хорошо идет цикл, нраица очень! 

 раскрыть ветвь
 0

dskutin 637019684638610671

 раскрыть ветвь
 1

a krasnikov 636630226124560969

 раскрыть ветвь
 0

kosakandruha01 637596091769268476

Авдей


Вроде бы, раньше была КирЕн.93af65ac2df443ababe0d00d9b8173bd

 раскрыть ветвь
 1

a krasnikov 636630226124560969

 раскрыть ветвь
 0

kosakandruha01 637596091769268476

 раскрыть ветвь
 0

Написать комментарий

a krasnikov 636630226124560969


2,75М



23K



1 157


  1. «Звуки_ожидания_продолжения.mp3»
    от RVV

  2. «С Новым Годом!»
    от Jeka-R

  3. «С новым Годом!»
    от Cfytr

  4. «Здоровья и нервишек покрепче в Новом Году!»
    от Stark

  5. «БУУУУУНД!!!!»
    от Stark

Европейская комиссия выпустила 32-страничный документ «Руководящие принципы Европейской комиссии по инклюзивной коммуникации»/European Commission Guidelines for Inclusive Communication, своеобразный «политкорректный словарь-справочник», предназначенный для еврочиновников и европарламентариев.

Напомним, что Еврокомиссия (ЕК) — высший орган исполнительной власти Европейского союза, ответственный за подготовку законопроектов. Кабинет министров из 27 членов-комиссаров. С 1.12.2019 ЕК возглавляет акушер-гинеколог по специальности, бывший функционер немецкого Христианско-демократического союза и бывший министр обороны Германии, экс-член руководства швабовского Всемирного экономического форума, горячая сторонница однополых браков Урсула Гертруда фон дер Ляйен.

Так вот, Еврокомиссия запретила сотрудникам использовать в своей речи слова, которые могут быть оскорбительными для людей определённого пола, каких-либо рас, национальностей или верований, разных возрастов и сексуальных предпочтений. В частности, оскорбительными и неприемлемыми признаны слова «Рождество», «господин», госпожа», «гей», «лесбиянка» и мн. др. Под запрет попали любые упоминания Санта Клауса, Девы Марии, Иосифа.

«Избегайте предположения, что все являются христианами. Не все празднуют рождественские праздники. Мы должны учитывать тот факт, что у людей разные религиозные традиции и календари«, — говорится в документе. Поэтому вместо Рождества — только «праздничный период» (holiday season).

Ни в коем случае нельзя даже — внимание! — употреблять словосочетание «колонизация Марса». Допустима лишь фраза «отправка людей на Марс». Серьёзно. Ибо необходимо формировать «инклюзивную коммуникацию».

«Вместо «опасных» слов предлагается использовать их нейтральные аналоги. Например, вместо указания какого-то конкретного сексуального меньшинства, предлагается говорить об «однополых парах». А то ведь и ошибиться можно. Значительное место в документе уделено именно вопросам, связанных с полом. Теперь чиновникам запрещается использовать такие слова, которые содержат корень, связанный с мужским полом, например в английском слове policeman (полицейский) часть man как раз и обозначает мужчину. Даже слово «рукотворный» (man-made) предлагается заменить на «искусственно созданный», а вместо фразы «огонь — величайшее достижение человека» (слово для человека и мужчины здесь совпадают) использовать выражение «огонь — величайшее достижение человечества». Рекомендуется избегать и традиционного для многих языков упоминания при перечислении сначала мужчин и их социальных ролей, то есть говоря о родителях, «отец и мать» будет звучать неинклюзивно. Помимо всего прочего в чёрный список попало и обращение «дамы и господа», вместо которого предлагается употреблять «дорогие коллеги». Кроме того, при выборе иллюстраций для докладов работники Еврокомиссии должны стараться, чтобы на картинках «женщины и девушки не были представлены дома или в пассивных ролях, в то время как мужчины активны и склонны к приключениям». Некоторые слова относительно недавно попали в списки запрещенных. Например, таким понятием стала «колонизация», причём даже применительно к освоению пространства за пределами Земли. «Рождество» тоже оказалось исключено, вместо него теперь просто «праздники». Ведь для мигрантов-мусульман упоминание христианского праздника может быть неприятно«, — пишет «Комсомольская правда».

«Вместо слов «гей» (gay) и «лесбиянка» (lesbian) предлагается взять в оборот фразы «однополая пара» (same-gender couple) или использовать слово гей в сочетании с существительным person (gay person). В глоссарии отмечается, что чиновники не должны «предполагать» сексуальную ориентацию человека или его гендерную идентичность. Авторы рекомендуют спрашивать, какие местоимения предпочитает собеседник. От чиновников также требуют воздержаться от использования таких терминов, как «рукотворный» (man-made) и «дамы и господа» в официальных публикациях. Взамен предлагается использовать «искусственно созданный» (synthetic) и «коллеги» (colleagues, participants)«, — уточняет Газета.Ru. «Авторы инструкции считают, что тем самым элиты повлияют на общество и традиции европейцев, которые станут более нейтральными и толерантными«, — указывает «МК».

Официальный представитель Еврокомиссии Эрик Мамер: «Это рекомендация, цель которой — показать разнообразие европейской культуры«. Еврокомиссар по вопросам равенства Хелена Далли (представляющая Партию европейских социалистов и Лейбористскую партию Мальты): «Мы всегда должны предлагать инклюзивное общение, гарантируя таким образом, что каждый будет оценён и признан во всех наших материалах, независимо от пола, расы или этнического происхождения, религии, инвалидности, возраста или сексуальной ориентации«.

Таким макаром выражение как пишется

двойной клик — редактировать изображение

Несогласие с инициативой ЕК выразил государственный секретарь Ватикана кардинал Пьетро Паролин. «Я считаю стремление избавиться от дискриминации правильным. Однако, на мой взгляд, это, конечно, не способ достижения данной цели. Потому что в конечном итоге это рискует разрушить, уничтожить человека… Европа обязана своим существованием и своей идентичностью многим вкладам. Мы, конечно, не можем забыть, что одним из главных вкладов, если не главным, было само христианство. Поэтому уничтожение различий и уничтожение корней означает именно уничтожение личности«, — сказал он 30 ноября в интервью порталу Vatican News.

Консервативные политики и журналисты тоже, естественно, раскритиковали инициативу. А федеральный секретарь итальянской «Лиги» (Лиги Севера), экс-вице-премьер Маттео Сальвини просто написал: «Мария, мама. Иосиф, папа. Да здравствует святое Рождество. Надеюсь, что никого в Европе это не обидит«.

После появления внутреннего документа на страницах СМИ, еврочиновники нехотя объявили, что рекомендации временно отозваны для «доработки«.

Таким макаром выражение как пишется

двойной клик — редактировать изображение

Тем временем в Великобритании правительство наложило запрет на слоган акции, призывающей к ПЦР-тестированию перед поездками: «Не забирайте COVID домой на Рождество». Из опасений, что он оскорбит религиозные меньшинства, сообщила Daily Mail.

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