pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: При приеме на работу многие требуют знание 1с с чего начать?

Лучший ответ: "знание 1с" это как знание "Excel". От вас может потребуется просто механически вбивать заявки, в которых каждое поле предельно очевидно, а может будут требовать делать сложные финансовые отчеты в CPM-системе.

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

Вот ссылка на 1С:Бухгалтерию - наиболее частая 1Ска:
https://accounting.demo.1c.ru/accounting/ru_RU/

Худший ответ: Знания знаниям рознь. По минимум делятся на умения айтишные и бухучетный.
поиск в помощь
бесплатные курсы 1с
Вопрос: От чего могут быть артефакты на тостере в Chrome?

Лучший ответ: Поставил в хром расширение, через которое можно налету менять стили сайта - "Stylish"

Добавил через него:
.question_short {
     transform-style: inherit;
}
и все стало нормально. У разработчиков пока ресурсов нет на исправление этого косяка.

Худший ответ: Я залил этот фикс на каталог стилей Stylish. 
https://userstyles.org/styles/244097/fix-bug-for-q...
Вопрос: Почему при подсчете количества строк в SQLite3 выводится не число, а 0x0000009E9DC70E30>?

Лучший ответ: 1. Ты получил объект-курсор. У него нет строкового представления, поэтому пр ивыводе он отображается по умолчанию - <Cursor object at адрес-объекта-в-памяти>
Чтобы получить выбранные данные, нужно вызывать методы fetchone() или fetchall().
2. Если ты делаешь запрос к БД, который возвращает данные (неважно какие), получить их придётся как описано выше. Что это за данные - сами строки, какая-то агрегатная функция, или еще что - не важно. Даже если выполнишь запрос вида SELECT 123;, всё равно результат придётся вытаскивать через fetchone()/fetchall().
3. SUM(id) вернёт тебе сумму всех идентификаторов строк в таблице, а не количество строк в ней. Используй COUNT(*).

Худший ответ: патамуша указатель на область памяти, декоратор - генератор

ты сделай типа там fetchall() fetchone и все такое
Вопрос: Window 10 Pro тормозит?

Лучший ответ: Включи обновления и подожди немного. Все драйвера будут установлены сами. Если не установятся, то зайди на сайт производителя и скачай нужные драйвера (для видеокарты в основном нужны). 
И НИКОГДА. СЛЫШИШЬ, НИКОГДА НЕ ИСПОЛЬЗУЙ SDI, DriverPack или подобное говно для своего компа

Худший ответ: Драйверы.
Качайте SDI (он бесплатный) и обновите им все драйверы.
Вопрос: У меня на ноуте два порта: USB 2 и 3 — как узнать какой из них 3.0 не полагаясь на якобы «синюю» окраску (я тупо не вижу синий он или зеленый)?

Лучший ответ: Скачать мануал по вашей модели, посмотреть раскладку портов в мануале?

Худший ответ: В общем, путем экспериментального тыка + lsusb вроде разобрался :)

хаб у меня вот он:

Bus 004 Device 003: ID 2109:0815 VIA Labs, Inc. USB3.0 Hub

вот так видно что он висит на 3.0 шине (Bus 004):

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

однако остальные девайсы (мышь, внешняя клава, и старенькая лоджитек векамера) поключены к USB 2.0 наверное потому, что они попросту не поддерживают 3.0 

ибо этот же хаб может работать и как

Bus 003 Device 008: ID 2109:2815 VIA Labs, Inc. USB2.0 Hub

ну, значит не судьба :D 

спасибо всем, кто помог разобраться!

т.е. lsusb и тыка вполне достаточно чтобы понять ху ис ху ))
Вопрос: Что именно делает этот код?

Лучший ответ: Вся магия происходит здесь
Обычный магический метод __call(), который вызывается, когда происходит обращение к несуществующему методу.

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

Если свойство не найдено, ищет в массиве имя класса, объект которого надо создать и вернуть. 
Для этого зачем-то меняет регистр с camelCase на snake_case и ищет элемент массива с таким именем по вышеприведённой карте классов. То есть getForwardFrom превращается в forward_from, и по этому индексу возвращается имя класса. почему нельзя было сразу написать в том же регистре - загадка

В целом - отборнейший говнокод.

Худший ответ: перед тем как что-то писать, освой хотя бы основы, в данном случае магические методы
Пожалуйста объясните что делает этот код.
массив возвращает, соотнеси его с phpdoc методами и станет понятнее
И откуда там взялись методы указанные в PHPDoc
отсюда https://github.com/php-telegram-bot/core/blob/6a61...
Вопрос: Обнаруженна сетевая атака. Что делать?

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

Худший ответ: Защититься - запретить доступ ко всем портам извне. На уровне сети.
Кто и зачем - все кому не лень, чтобы найти доступы к чему-либо с дефолтным или простым паролем.
Вопрос: Стоит ли начинать изучать разработку под iOS с нуля в 36 лет?

Лучший ответ: Стоит ли начинать изучать разработку под iOS с нуля в 36 лет?
Если нравится, и мотивацией служат не только деньги - то да.

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

3. Реально ли начинающему самоучке найти работу на удалёнке? 
Зависит от ваших мозгов, если готовы уделять программированию с нуля по 5-6 часов в день, в течении года - может что нибудь получится. Но без code review - есть шанс что выучитесь так себе, а переучивать программиста - довольно дорого.

 С какими трудностями я могу столкнуться? (возраст, недоверие, стереотипы, конкуренция и т.д.)

Возраст - на фрилансе без разницы сколько вам лет, главное прокачанное портфолио, например на Upwork.
Недоверие - 100% пока вы новичок на фрилансе, будете сражаться с другими за копейки.
Конкуренция - на уровне джуна - колоссальная, скорее всего вас съедят молодые, и голодные студенты, которые как раз и нашли позицию джуна в офисе, и уже качаются на 2 стороны.

Моё субъективное мнение: изначально неправильно выбрана стратегия.
Фриланс + джун = самый верный вариант здесь подошел бы php какой нибудь, и создание сайтов на колене. И как только у вас появились знания какого нибудь языка и общего построения архитектуры проекта. Можно учить уже swift. 2 языка в голове = это уже норма для программиста

UPD: Если всё такие горят глаза, подойдет более дорогой вариант. Находите ментора после изучения базы языка (желательно работающий програмист на позиции Senior+), который будет делать code review и помогать. Это позволит эмулировать "офис", и дальше искать не фриланс, а удаленку по европе\снг.

Худший ответ: Я не думаю что разработка под IOS (как впрочем и под андроид) самое перспективное для фриланса.  Крупный проект одному не потянуть, а мелкие нафиг никому не нужны. 

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

Лучший ответ: 1) Зависит от того, какое железо в коляске. Там может быть все что угодно

-контроллер вашей разработки
-общепромышленный контроллер

В первом случае, вам нужен комплект разработки под этот контроллер - для AVR это будет один набор софта, для STM32 - другой.

Во втором случае, опять же, нужен софт под этот контроллер.

2) Начинать с маленького проекта - мигание светодиодом на avr. Потом часы, потом ПИД-термометр,... Где-то через 5-10-15 проектов можно пытаться браться за разработку контроллера для коляски. И то, для силовой части проще взять готовые драйверы.

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

Лучший ответ: Целостность кабеля определяют не по виду, а прозвонкой. В данный момент это кабель Шрёдингера, он и целый и не целый одновременно

Худший ответ: Для крепления витой пары есть специальный крепеж, навскидку - ссылка на пример в магазине
Повредить витую пару крепежом как на фото сложно, но вообще он сильно пережат, так что могла и повредиться изоляция или оборваться жила. Как верно отметили, без прозвонки не определить.
Вопрос: В каком случае целесообразно изучать Java если ты php разработчик микросервисов?

Лучший ответ: Целесообразно изучать во всех случаях. 
Выбор позиции у вас от новых знаний расширится, а не сузится.

Худший ответ: Сам когда-то перешел из рнр разработки в Java и скажу, что очень этому рад.
Вряд ли при переходе с рнр на джава вы начнете, как джун. Некоторые мои знакомые перешли из джава в с шарп и сохранили свои позиции миддла.
Так что, если нравится язык, то можете смело переходить.
Вопрос: Почему счётчик таймера на windows forms увеличивается на 2, а не на 1?

Лучший ответ: Дело в том что существует 2 разные подписки на событие Tick - одно "автоматическое" созданное конструктором форм и второе "собственное".

VS показывает все ссылки если нажать на "reference" вверху:



Удалив одну из них получим ожидаемое поведение.

Худший ответ: У тебя скорее всего две подписки на Tick оформлено. 
Вот эта строчка у тебя в конструкторе:
timer1.Tick += timer1_Tick;
И ещё точно такая же, скорее всего, в Form1.Designer.cs присутствует. Убери одну из них
Вопрос: Как изменить пути к конфигам?

Лучший ответ: Запустить с соответствующими параметрами, либо сделать симлинк.

Худший ответ:  man vsftpd.conf по-русски
Вопрос: Как исправить «No 'Access-Control-Allow-Origin' header is present on the requested resource»?

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

Используйте их js sdk.

Худший ответ: Access-Control-Allow-Origin должен прописать сайт на который вы делайте запрос, а не вы) Но так как ВК разумеется ничего прописывать не будет, то вам нужно проксировать запросы через свой сервер.

Логика:
1. Вы делайте запрос на свой сервер
2. Ваш сервер делает запрос в ВК
3. Результат запроса отдает вам
Вопрос: Как автоматически перезапускать таск в ECS при пуше нового image?

Лучший ответ: Использовать latest  image - это неправильная практика.
Как сказал akelsey, нужно обновить Task Defintion, и тогда ничего перезапускать не надо.
Я для это в Github Actions использую 
aws-actions/amazon-ecs-render-task-definition
и 
aws-actions/amazon-ecs-deploy-task-definition

Худший ответ: Самый лучший вариант при настроенном сервисе (desired tasks 1) это пушать имидж присвоив номер версии, например номер билда, и обновлять Task Defintion, тогда ECS сам сделает текущий имидж INACTIVE, параллельно инициализировав второй (плавно выведет старый из сервиса, когда новый станет активным). 
Если же предложенный вариант не вариант - так же в пайплайне стопать таску и запускать aws cli.
Вопрос: Как назвать эту панель при вёрстке?

Лучший ответ: chat, favourites, profile

user-area
personal

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

Худший ответ: header__action
  header__action-btn

т.к. содержимое - три кнопки. А панелька впринципе - контейнер этих кнопок.
Вопрос: Плохо работает WiFi,в чем проблема?

Лучший ответ: Может рукожопому мастеру отдали. При разборе не до конца подсоеденил провода идущие к плате с Wi-Fi. Открутите, посмотрите.
Вот подобную плату нужно искать - 

Худший ответ: Это очень абстрактный вопрос , может и техническая может и соф  , на другом wi fi как работает ?
Вопрос: Правильно ли я понял принцип инверсии зависимостей?

Лучший ответ: Главная идея принципа инверсии зависимостей "детали зависят от абстракций, но не абстракции от деталей".
В приведенном вами примере класс Main зависит от всего: от интерфейса INumberOperation и от обоих классов NumberOperation1, NumberOperation2. То есть тут принцип инверсии зависимостей вообще не работает. Никак.

Проявляется же он в следующем примере. Пусть у меня есть некая абстрактная логика "прочитай число, выполни над ним операцию, запиши результат". Эта абстрактная логика (потому она и абстрактная) ничего не должна знать ни откуда она читает число, ни какую операцию над ним выполняет, ни куда и как записывает результат. Таким образом, у нас есть модуль, состоящий из
interface NumberInput {
  int read();
}
interface NumberProcessor {
  int process(int a);
}
interface NumberOutput {
  void write(int a);
}
class Processor {
  private final NumberInput input;  
  private final NumberProcessor processor;
  private final NumberOutput output;

  public Processor(NumberInput input, NumberProcessor processor, NumberOutput output) {
    this.input = input;
    this.processor = processor;
    this.output = output;
  }

  void process() {
    output.write(processor.process(input.read()));
  }
}
Все. Модуль получился очень абстрактным и ни от кого никак не зависящим.
Затем мы можем сделать реализации этих интерфейсов - они будут зависеть от нашего модуля логики (так как ссылаются на интерфейсы). И это полностью соответствует принципу инверсии зависимостей - детали зависят от абстракций.

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

Этот принцип очень хорошо объяснен в книге  Р.Мартина "Чистая архитектура", по крайней мере у меня все встало на свои места именно после прочтения этой книги.

Худший ответ: Посмотрите видео Александра Бындю по этой ссылке: https://blog.byndyu.ru/2013/06/blog-post_27.html (Это C# но в целом на Java очень похоже, поэтому должно восприниматься нормально) Он очень хорошо разворачивает там пример. После просмотра этого видео на код начинаешь смотреть по новому.
Вопрос: Я написал программу на c++, но при установке ее на другой копьютер выпадает ошибка MSVCP140D.dll, что делать?

Лучший ответ: У вас программа скорее всего была собрана в конфигурации Debug, поэтому суфикс D в имени DLL. Отладочные библиотеки обычно не установлены у обычных юзеров, только у тех кто поставил Visual Studio. 

Нужно просто сделать релизную сборку программы, я думаю. Если не сработает, то установить VC++ 2015 Redistributable на целевую машину или слинковать со стандартной библиотекой статически, как посоветовал res2001.

Худший ответ: Я предполагаю, что в папку с приложением нужно разместить библиотеки c++. 
Да вы верно думаете. Но делать надо не так.
Ошибка возникает потому, что в С++ вы, как правило, используете хотя бы STL - а это внешняя библиотека и она должна быть доступна программе во время запуска.
Но можно собрать программу со статической линковкой с STL, тогда размер исполняемого файла вашей программы будет больше, но тащить за собой ничего не придется.
В принципе, динамическая линковка с STL - это нормально. Только в случае с программой собранной в MSVC вы должны предоставить пользователю еще и runtime пакет нужной версиии. Микрософт предоставляет эти сборки runtime отдельно от MSVC (можно скачать с сайта). Этот же установщик рантайма лежит где-то в недрах установленной MSVC, можно его там найти при желании.

Цифры в имени файла dll (140) - это и есть версия нужного вам рантайма. Версия 140 или 14.0. Она идет с MSVS 2015.
Вот тут статья с перечислением всех актуальных версий рантайма и ссылками на них: https://www.itechtics.com/microsoft-visual-c-redis...
Вопрос: Как можно ускорить код php?

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

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

1. Первый вариант это перейти на более последнюю версию php. Например, 7.х, 8.х. Особенно почувствуете разницу при переходе с версии 5.6 на 7.х. Однако какой-то код может сломать. Подходите этому внимательнее. 

2. Использовать кэширование. Кэшировать можно как внедрением в вашем коде кэширования, так и расширениями php вроде opcache.

Худший ответ: Насколько я понимаю, это алгоритм распознавания лица. Можно использовать готовый из PHP OpenCV (https://github.com/php-opencv/php-opencv). Ну или если в вашем варианте есть какие-то отличия, то реализовать этот же код заново, используя функции PHP OpenCV. Там большая часть вычислений реализована на C, поэтому выполняться будет существенно быстрее. (Правда, для этого нужен VDS, где можно самому ставить PHP extensions, а не обычный хостинг.)
Ещё вариант — переписать код на C самостоятельно, без OpenCV, так, чтобы он висел в виде демона, а взаимодействие с ним происходило через Unix-сокет.
Также, как правильно отметили в комментариях, некоторое ускорение может дать переход с 5 на 7 версию PHP.
Вопрос: Как разные ОС влияют на производительность?

Лучший ответ: Единовременно же работает только одна ОС, а все остальные мёртвым грузом лежат на диске.
Так что никакого влияния не будет.
Ну и да SSD, когда занято более 80% начинают работать медленнее.

Худший ответ: Если вы устанавливаете ОС на жесткий диск (а не на SSD), то какая-то разница в производительности будет из-за физического расположения раздела на диске. Чем ближе раздел к началу диска (внешняя часть блина), тем быстрее скорость и время доступа (задержки). Чем ближе к центру, тем медленнее.
Вопрос: Как в :hover сделать инструкцию менять цвет БУКВЫ, а не всего текста?

Лучший ответ: Обернуть каждую букву в отдельный span.

Худший ответ: Конечно будет весь текст меняется, это же один блок. Оберните каждую букву в span, и задайте стили на Ховер. Либо на js через length
Вопрос: Можно ли поставить свою выходную ноду?

Лучший ответ: Опции ExitNodes в конфигурационном файле torrc нужно задать значение фингерпринта вашей ноды.

Худший ответ: О, я гляжу, а дело Богатова подзабылось, да? А сейчас времена суровые, можно и огрестись нечаянно.
Вопрос: Почему на GitHub не работает протокол git?

Лучший ответ: Потому что GitHub его выпилил уже полгода как.

Permanently disabled the unencrypted Git protocol

Худший ответ: На гитхабе нет git://

Либо по ssh:
git clone git@github.com:apache/guacamole-server.git
Либо по https:
git clone https://github.com/github/docs.git
Ну или можно через gh cli:
gh repo clone apache/guacamole-server
Вопрос: Есть ли утилита для быстрого переключения между ос?

Лучший ответ: У вас grub не видит винду? Покажите ему...

Худший ответ: А что значит, постоянно менять загрузчики?!
Если GRUB-меню при старте даёт список выбора ОС-ей, то это нормуль!
А другого и не дано...
Вопрос: Что делает sudo dpkg --configure -a?

Лучший ответ: man dpkg:
--configure package...|-a|--pending
    Reconfigure an unpacked package. If -a or --pending is given instead of package, all unpacked but unconfigured packages are configured.

    Configuring consists of the following steps:

    1. Unpack the conffiles, and at the same time back up the old conffiles, so that they can be restored if something goes wrong.

    2. Run postinst script, if provided by the package. 

Скорее всего, в прошлый раз процесс установки/обновления был прерван, и остались несконфигурированные пакеты. Эта команда должна завершить процесс: установить конфиги и запустить пост-инсталляционные скрипты (где они есть).
Не во всех случаях "dpkg --configure -a" помогает, но хуже обычно не делает, можно попробовать.

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

Команда зависла длительное время в таком виде:
Сделайте Ctrl+C и запускайте снова.
Вопрос: В модем воткнуто 4 Ethernet кабеля. Как узнать на каком кабеле какая скорость потребления на данный момент?

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

Худший ответ: Как померять не знаю,
Можно ограничить, есть ли настройка в роутере?:Bandwidth Control/Контроль пропускной способности, 
https://help-wifi.com/tp-link/kak-ogranichit-skoro...
Вопрос: Что можно использовать для удобного написания сайта?

Лучший ответ: Мой сетап. Попробуйте.

Худший ответ: автоматически "собирать"
бандлеры - webpack, parcel и т. д.

js для es5
babel
Вопрос: Как сделать объект в виде строки?

Лучший ответ: Используйте JSON.stringify():
console.log(JSON.stringify(obj));

Худший ответ: Используйте JSON.stringify():
console.log(JSON.stringify(obj));
Вопрос: Как установить pip на bash консоли если отсутствует sudo?

Лучший ответ: В консоли:
su -
Ввести пароль рута, затем:
apt-get install sudo
и 
usermod -a -G sudo <имя_пользователя>
Запустить visudo и добавить в sudoers file следующую запись (но только если её там нет):
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Худший ответ: Заходи на pypi, качай архив с своим модулем, копируй на хостинг, распаковывай и делай cd туда куда распаковал, после пишешь: python setup.py install
(Возможно команду неправильно написал, там установщик подскажет если что не так)
Вопрос: Каковы примерные лимиты сообщений в Телеграме?

Лучший ответ: на страничке https://limits.tginfo.me/ru-RU публикуются актуальные лимиты на все возможности телеграма

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

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

Худший ответ: У меня такое было на текущем месте работы (фин сектор с гос регулированием). Согласие на обработку персональных данных просили подписать еще перед собеседованием, как соискателя. Срок действия был указан 1 год. А вот потом, после трудового договора еще согласие уже в качестве работника вместе с кучей всяких инструкций и техник безопасности. В похожей компании, работающей в менее напряженной отрасли, никакие согласия никому не были нужны.
Вопрос: Сколько запросов в секунду выдержить PostgreSQL?

Лучший ответ: Сам запрос:
Узнайте про PostGIS
Как вообще тестируют нагрузку на БД?
Устраивают DDOS атаку

Худший ответ: Зависит от железа, настроек операционки, настроек самого постгреса и от того, что за запросы к нему будут. Хороший кластер держит 30 000 запросов (сферических в вакууме) в секунду. В теории можно разогнать до значений на порядок больших.
Вопрос: Как обратиться к изображению в проекте?

Лучший ответ: ПКМ -> Свойства -> Копировать при сборке (не помню как точно называется пункт этот в студии).
Тогда можно будет потом из кода написать File.ReadAllBytes("Изображения/Picture.png") и файл прочитается.

Худший ответ: Добавьте изображение в ресурсы проекта и уже оттуда обращайтесь к нему из кода.
Вопрос: Все ли поля класса нужно инкапсулировать?

Лучший ответ: Зачем?

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