С и с1 разница

CE и C1E – категория прав для грузовика с прицепом

С и с1 разница

Изменения в Законодательстве РФ “О допуске к управлению ТС” здорово ударили по карманам будущих водителей. Раньше управлять любым транспортным средством с прицепом можно было имея категорию С, B или D в водительском удостоверении в паре с Е. Теперь же необходимо отучиться на каждую из них, получить ВУ, и только через год сдать экзамен в ГИБДД. Грузовой автомобиль с прицепом или фура

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

Се и с1е в водительском удостоверении: что это и в чем разница

Категория С и С1 разрешают ездить на грузовиках свыше 3,5 тонн с прицепом до 0,75 т. Разница в том, что у подкатегории “C1” максимальный вес ТС не может быть больше 7,5 т. У “C” такое ограничение отсутствует.

Соответственно и у категорий СЕ и С1Е будут аналогичные отличия:

  • CE – разрешает управлять грузовыми автомобилями с прицепом имеющим разрешенную максимальную массу больше чем 750 кг.;
  • C1E – допускает к управлению грузовиками от 3,5 до 7,5 тонн, сцепленными с прицепом весом более 750 кг. При этом масса автопоезда должна быть меньше 12000 килограмм, а автоприцеп весить меньше чем ТС в ненагруженном состоянии.

Как получить права категории СЕ или С1Е

Если в старом водительском удостоверении была категория Е и С, при замене прав автоматически открываются C1E, а также CE. Будущим же водителям потребуется пройти обучение в автошколе, и сдать экзамен в ГИБДД.

Возраст и отсутствие медицинских противопоказаний

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

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

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

Стоимость

Многих интересует, сколько стоит обучение. Вопреки ожиданиям, учеба  на легкий грузовик с прицепом (С1Е) не стоит дешевле, чем на категорию СЕ. Стоимость абсолютно одинаковая. Средняя цена по России составляет 20000 рублей.

Сроки

Подготовка водителей на категорию СЕ включает в себя теоретический курс. Он состоит из:

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

После теории преподается практика на специально отведенной площадке (автодроме). Там обучаемый получит практические навыки по управлению ТС категории СЕ и ознакомится с упражнениями, которые ожидают его на экзамене в ГИБДД.

В общей сложности срок обучения на права СЕ и С1Е займет 1-1,5 месяца, после чего обучаемый будет допущен к экзамену в Госавтоинспекции

Проверка теоретических знаний

Экзаменуемый должен ответить на 20 вопросов билета. Теоретически он может совершить две ошибки в билете. За каждую, дополнительно предстоит решить по 5 заданий, на этот раз без ошибок. При успешном прохождении испытания для получения категории СЕ или С1Е в правах, ученика допускают ко второму этапу.

Экзамен на автодроме

С недавнего времени число упражнений для управления транспортными средствами с тяжеловесными прицепами пополнилось. Теперь, чтобы открыть категорию CE (C1E) в водительских правах, на автодроме потребуется выполнить упражнения:

  • Продемонстрировать умение сцеплять и расцеплять прицеп с грузовиком;
  • Езда и маневрирование задним ходом;
  • Въезд “задом” в гараж;
  • Выполнение маневров в ограниченном пространстве: остановка для посадки пассажиров (будет дан “перекресток” под углом 90 градусов, после проезда которого необходимо остановиться не дальше 1 метра от бордюра, не заехав при этом за стоп-линию);
  • Парковка на погрузочной эстакаде. Задним ходом нужно припарковаться так, чтобы до погрузочной платформы осталось не больше полутора метров (упражнение схоже с параллельной парковкой на “легковушке”).

Экзамен в городе

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

При несдаче какой-либо части экзамена экзаменуемый не допускается к очередному этапу. Пересдать упражнения или билеты можно не ранее чем через 7 дней.

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

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

..

Источник: https://prava-info.ru/kategorii-prav/ce-i-c1e-gruzovik-s-pritsepom.html

Какие яйца лучше? С1 или С0? Виды яиц и их классификация

С и с1 разница

Яйца, вероятно, один из самых универсальных продуктов, известных человеку. Они могут быть приготовлены и приправлены сотнями разных способов. Чтобы определиться, какие яйца лучше, С1 или С0, стоит понять, что такое категории яиц и каким образом они присваиваются.

Виды

По ГОСТу яйца бывают диетические и столовые. Разница заключается в видах в сроках хранения.

К диетическим относятся яйца, имеющие на скорлупе маркировку D. Такой продукт хранится не более 7 суток после снесения курицей.

Столовые могут храниться 25 суток при комнатной температуре и 90 дней в холодильнике, маркируются буквой С.

Категории

Чтобы разобраться, в чем отличие яиц С1 или С2 категории, стоит понять, что это вообще за классификация.

Все зависит от веса продукта. Так что, если вы задаетесь вопросом, какая категория яиц лучше: С1 или С0, отбросьте его. Категории присваиваются не по качеству, так что разделение на первый и второй сорт здесь неуместно.

Лучше поставить вопрос по-другому: какие яйца выгоднее покупать: С0, С1 или С2. Чтобы разобраться в этом, можно посчитать цену за грамм продукта – стоимость поделить на вес. Почти всегда побеждают яйца категории С0.

Вес яиц разной категории:

  • С2 – 35-45 грамм;
  • С1 – 55-65 грамм;
  • С0 – 65-75 грамм;
  • В (высшая категория) – от 75 грамм.

Польза продукта

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

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

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

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

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

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

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

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

Возможный вред

Так, какие яйца лучше, С1 или С0, а может вообще их лучше не употреблять?

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

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

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

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

https://www.youtube.com/watch?v=Sh0BUgcik_o

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

Так ли уж вредны яйца? Это решать вам.

Как выбирать яйца

Когда вопрос о том, какие яйца лучше, С1 или С0, закрыт, следует задуматься о том, как выбирать этот продукт.

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

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

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

Не забывайте проверять срок годности.

Теперь вы знаете, как выбирать яйца, какие яйца лучше (С1 или С0), их виды.

Источник: https://FB.ru/article/459636/kakie-yaytsa-luchshe-s-ili-s-vidyi-yaits-i-ih-klassifikatsiya

Чем отличается :: классы автомобилей

С и с1 разница

27 марта 2006, 09:00

При создании автомобилей класса A комфорт водителя и пассажиров в наибольшей степени приносится в жертву компактности и экономичности. Автомобили классов B и C назвают « водительскими ».

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

Особенно это характерно для класса B . Средний класс D предоставляет всем, кто находится в машине, достаточные и приблизительно равные в плане комфорта и просторности условия. Классы E и F — это автомобили « пассажирские ».

Они дают водителю свободное и удобное рабочее место, но их основное назначение — перевозка с максимальным комфортом пассажиров на просторном заднем сиденье. Наиболее престижный представителький класс F обеспечивает наивысший уровень удобства, сервиса и безопасности.

Автомобили класса A обычно выпускаются с кузовом хэтчбек, класса B — чаще тоже хэтчбек, но бывают седаны и универсалы. В классе C распространены все три типа кузова. Класс D представлен в основном седанами и универсалами. Автомобили класса E традиционно производятся с более престижными кузовами седан.

В последние годы отдельные производели решаются экспериментировать, делая хэтчбеки класса E . Класс F — это исключительно седаны и лимузины.

Класс «A»

Автомобили этого класса отличаются предельно малыми габаритами: длина – не более 3600, ширина – не более 1520. Тип кузова – только 3-дверный и реже 5-дверный хэтчбек.

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

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

Примеры: ВАЗ-11113 «Ока», Rover Mini, Renault Twingo, Daewoo Tico и Matiz.

Класс «B»

Малогабаритный автомобиль особого класса.Габариты: длина 3500–3900, ширина 1520-1630. Типы кузовов: в основном, 3- и 5-дверные хэтчбеки, реже седаны, универсал повышенной вместимости. Динамические и скоростные качества варьируются в широких пределах. Комфортен для поездок четырех человек или путешествия двух человек с солидным багажом.

Примеры: ЗАЗ-1102 «Таврия», Skoda Felicia , Opel Corsa , Peugeot -106, Renault Clio , Fiat Punto , Volkswagen Polo , Ford Fiesta , Toyota Yaris , Nissan Micra и другие подобные модели.

Класс «C» 

Универсальные, относительно компактные и вполне вместительные автомобили. Типы кузовов – хэтчбек, седан, универсал или УПВ. Динамические и скоростные качества варьируются в широких пределах. Комфортен и для поездок и для путешествий.

Примеры: Все модели ВАЗ (кроме «Нивы» и ее модификаций), Volkswagen Golf и Bora , Skoda Octavia , Opel Astra , Ford Escort и Focus , Audi F 3, Peugeot -306, Fiat Brawo / Brawa , Renault Megan е, Alfa Romeo 145/146, Nissan Almera , Toyota Corolla , Daewoo Nexia и другие подобные модели.

 Класс «D»

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

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

1. Обычная – модели массового спроса умеренной стоимости (Opel Vectra , Peugeot -406, Ford Mondeo , Toyota Avensis , Nissan Primera , Volkswagen Passat.)

2. Элитная – дорогие и хорошо укомплектованные ( Alfa Romeo 156, Audi A 4, BMW 3-й серии, Mercedes – Benz C ).

Класс «E» 

В Европе – высший средний класс. В России – высший средний и представительский класс. Типы кузовов – седаны и универсалы (редко 5-дверный хэтчбек – Renault Safrane ). Стоимость и потребительские качества сильно зависят от марки и комплектации. Для класса существует разделение на обычную и элитную группу «люкс»-класса.

1. Обычная – Opel Omega , Toyota Camri.

2. Элитная – BMW 5-й серии, Mercedes – Benz E класса, Audi A 6, Jaquar S – type , Volvo S 80/ V 70, SAAB 9-5.

Класс «F»

Очень дорогие автомобили представительского характера, практически не приобретаемые физическими лицами ни в Европе, ни в России. Тип кузова – только седаны. Уровень комфорта и вместимость – по высшему классу.

Достаточно высоко котируются лишь пять моделей: Audi A 8, BMW серии 7, Mercedes – Benz S класса, Jaguar XJ 8 и Lexus LS 430.

Минивэны и УПВ (Универсалы Повышенной Вместимости)

Класс «Минивэны и УПВ Класс минивэнов и универсалов повышенной вместимости довольно обширен в США и пользуется растущей популярностью в Европе. Однако в России таких машин пока мало. Предназначены, в основном, для больших семей, а также могут использоваться для путешествий, в качестве офисных развозных машин и др.

Вместимость этих моделей в трехрядном исполнении – от 6 до 8 мест, а минивэнов – до 9 мест, включая водителя. В случае демонтажа задних сидений могут использоваться для грузопассажирских перевозок. Большинство УПВ на шасси легковых автомобилей классов D и Е отличаются применением обычных распашных дверей (сдвижные двери здесь встречаются редко), а также невысокой габаритной высотой.

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

К обычным УПВ можно отнести Citroen Evasion , Mazda MPV , Renault Espace , SEAT Alhambra и Volkswagen Sharan . К минивэнам – Ford Windstar, Hyundai H-1, Mitsubishi Space Gear и Volkswagen Caravelle/Multivan.

Внедорожники

Класс так называемых внедорожников (в простонародье джипы) очень популярен в США, но в Европе спрос на такие машины невысок – около 3% продаж. Прочная подвеска и повышенная проходимость внедорожника – весьма ценные качества в российских дорожных условиях, особенно в зимнее время года.

Кузовы – 3- или 5-дверные универсалы, реже со съемным мягким верхом, который не годится для российского климата севернее Сочи. Вместимость – от 4-х до 9 мест. Внедорожники подразделяются на размерные подгруппы, из которых можно выделить по меньшей мере три ступени:

1. малые (типа Suzuki Jimny или Daihatsu Terios .)

2. средние (например, как Honda CR – V .)

3. большие (типа Chevrolet Tahoe или Jeep Grand Cherokee ).

Фактически эти машины разных классов и типов, собранные под одним названием. Кроме этого, есть деление на быстроходные модели для езды по хорошим дорогам (например, Lexus RS 300 или Range Rover ) и настоящие «работяги» по любой местности ( Mercedes – Benz класса G или Nissan Patrol GR ).

Купе

Класс автомобилей с кузовом купе вместимостью 4, 2+2 и тем более 2 места характеризуется понятной непрактичностью, поэтому в Европе спрос на них не превышает 1-2% продаж.

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

Примеры: Alfa Romeo GTV, Audi TT Coupe, BMW Coupe 3 серии , FIAT Coupe, Ford Cougar, Honda Prelude, Mercedes-Benz CLK, Peugeot 406 Coupe, а также Porsche 911 и Jaguar XK8 Coupe.

Автомобили с открытым кузовом

Класс автомобилей с открытым кузовом – кабриолеты, родстеры и спайдеры. В Европе открытых и относительно недорогих автомобилей на шасси моделей классов В, С, D и Е вполне достаточно, хотя общий спрос на них невысок в пределах 1-2% продаж.

Примеры: Ferrari California, Jaguar XK Convertible, Rolls-Royce Phantom, Volvo C70 и т.д.

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

Источник: https://www.ikirov.ru/news/1051-chem-otlichaetsya-klassy-avtomobiley

В чем отличие яиц с1 и с2 категории?

С и с1 разница

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

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

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

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

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

1 категория

К первой категории относят яйца, которые весят 55–64,9 грамма. По составу они самые сбалансированные. Этим требованиям отвечают импортные яйца категории М, вес которых 53–63 грамма.

Яйца 1 категории

2 категория

Вторая категория – это яйцо весом от 45 до 54,9 грамма. Импортные яйца категории S c весом меньше 53 грамм – самая низкая категория для этого продукта.

Яйца 2 категории

Что общего между ними

1. Цвет скорлупы.
Он может быть белым, кремовым, светло-коричневым, иметь разные оттенки желтого цвета и зависит от породы кур. На качестве яиц цвет скорлупы никак не сказывается.

2. Размер.Молодые курицы несут яйца мельче, старые – более крупные.

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

3. Калорийность.
Куриное яйцо, не зависимо от сорта, содержит 157 ккал на 100 грамм продукта. Калорийность может меняться во время приготовления. Самая высокая она у жареных, ниже – у вареных, самая низкая – у сырых яиц.

4. органических веществ.
Из 100 граммов яиц организм может получить:

  • белков – 12,7 г;
  • жиров – 10,9 г;
  • углеводов – 0,7 г.

5. Химический состав.

В куриных яйцах содержится железо, фосфор, кальций, калий, натрий, йод, селен, цинк, множество других микроэлементов. Они являются источником органических кислот омега-3, омега-6, витаминов D, A, B, E, K, H, PP, группы B.

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

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

Происходит естественное испарение воды через поры в скорлупе.

7. Экологичность.
На упаковке иногда можно увидеть пометку «био» или «эко». Они указывают на органические условия производства продукта.

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

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

Чем они отличаются

1. Вес.
Это главный и единственный критерий при сортировке яиц на птицефабрике. 10 яиц 1 категории весят 540 грамм, а 360 штук – 19,4 кг. Масса одного желтка 19–23 грамма, белка – 30–36.

На 1 кг приходится 15–18 яиц в скорлупе, 17–20 – без скорлупы. Десяток яиц 2 категории покажет на весах 460 грамм, 360 штук – 16,6 кг. Один желток весит 16–19 грамм, белок – 25–30 грамм.

На 1 кг яиц со скорлупой приходится 18–22 штуки, без скорлупы – 20–25 штук.

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

3. Стоимость.Вторая категория – 53 рубля за десяток (53 509 = 0,1041 рубля за грамм).
Первая категория – 59 рублей за десяток (59 595 = 0,0992 рубля за грамм).

4. Маркировка.На диетических яйцах обеих категорий маркировка нанесена красным цветом, на столовых – синим. С1, С2 – яйцо столовое первой и, соответственно, второй категории; Д1 и Д2 – диетические яйца первой и второй категорий. В маркировке диетических яиц указывается дата кладки. Покупая их на восьмой день, имеем яйца столовые.

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

Источник: https://welady.ru/markirovka-kurinyj-yaits

Программирование – 10 отличий C от C++

С и с1 разница

Почитав Б.Страуструпа, Г.Буча и вообще книги об объектно-ориентированном программировании, некоторые приверженцы C делают вывод о том, что C++ – это нечто запредельно сложное и гиганский шаг вперед. Это заблуждение.

На самом деле C++ – это тот же C, но с некоторыми удобными упрощениями. Если вы – хороший С-программист и воспринимаете C++ как нечто на порядок более крутое, то это – диагноз. Который называется “перечитал заумных книжек”.

Это излечимо J

Часто можно слышать споры на тему: писать на C или на C++? При этом существует расхожее мнение о том, что есть два стиля написания программ: стиль С и стиль C++. Они противопоставляются друг другу.

C++ ассоциируется с ООП (объектно-ориентированноым программированием), а чистый C – с ПОП (процедурно-ориентированным программированием). ООП и ПОП также противопоставляются.

На самом деле, все, что есть нового в C++ – уже было в C и вы этим пользовались (если действительно много программировали на C). Только в C++ это записывается чуть по-другому. Однажды у меня вышел спор с одним из приверженцев C на эту тему, в результате чего был написан список из 10 различий между двумя языками.

В C++ появились классы и объекты. Технически класс C++ – это тип структуры в C, а объект – переменная такого типа. Разница только в том, что в C++ есть еще модификаторы доступа и полями могут быть не только данные, но и функции (функции-методы).

Функция-метод – это обычная функция C, у которой первый параметр – это указатель на структуру, данные которой она обрабатывает: this.

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

В C++ получается короче, так как this и имя типа во многих случаях писать не обязательно (подразумевается по умолчанию).

Модификаторы доступа – это слова public, private и protected. В C вместо них была внимательность программиста: public – значит с этими полями делаю, что хочу; private – значит к этим полям обращаюсь только с помощью методов этой структуры; protected – то же, что public, но еще можно обращаться из методов унаследованных структур (см. следующий пункт).

То, что в C++ – наследование, в C – это просто структура в структуре. При программировании в стиле C++ применяются такие красивые и звучные слова, как “класс Circle порожден от класса Point” или “класс Point наследуется от класса Circle и является производным от него”. На практике все это словоблудие заключается в том, что структура Point – это первое поле структуры Circle.

При этом реальных усовершенствований два. Первое – поля Point считаются так же и полями Circle, в результате доступ к ним записывается короче, чем в C.

Второе – в обоих структурах можно иметь функции-методы, у которых имена совпадают с точностью до имени структуры. Например, Point::paint и Circle::paint .

Следствие – не надо изобретать имена вроде Point_paint и Circle_paint, как это было в C, а префиксы Point:: и Circle:: в большинстве случаев можно опускать.

В C++ появились две новые операции: new и delete. В первую очередь это – сокращения для распространенных вызовов функций malloc и free:

В стиле C: Point *p = (Point*) malloc(sizeof(Point)); free(p);

В стиле C++: Point *p = new Point; delete p;

При вызове new автоматически вызывается конструктор, а при вызове delete – деструктор (см. следующий пункт). Так что нововведение можно описать формулой: new = malloc + конструктор, delete = free + деструктор.

Когда программируешь в стиле C, после того, как завел новую переменную типа структуры, часто надо ее инициализировать и об этом легко забыть. А перед тем как такая структура закончит свое существование, надо ее почистить, если там внутри есть ссылки на какие-то ресурсы. Опять-таки легко забыть.

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

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

А деструктору нельзя задать параметры.

Из всех усовершенствований это вызывает наибольшую “щенячью радость”. Как обычно, придуманы и звучно-научно-рекламные названия: “полиморфизм”, “виртуальный”, “абстрактный”. Если отбросить разницу в терминологии, то что получим в сухом остатке? А получим мы очередное сокращение записи. И очень большое сокращение.

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

Для них обоих часто приходится выполнять операцию рисования (point).

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

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

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

В C++ всем этим занимается компилятор: достаточно обозначить функцию-метод как virtual, и для всех одноименных функций будет создана таблица и поле типа, за которыми следить будет опять-таки компилятор. Вам останется только пользоваться ими: при попыке вызвать функцию с таким именем, будет вызвана одна из серии одноименных функций в зависимости от типа структуры.

Исключение по своей сути – это просто последовательность goto и return. Основан на обычной C-технологии setjmp/longjmp. try и catch – это setjmp с проверкой. throw – это longjmp. Когда вызывается throw, то проверяется: если он окажется внутри блока try, то выполняется goto на парный блок catch. Если нет, то делается return и ищется catch на уровень выше и так далее.

Наличие в throw/catch параметра ничего принципиально не меняет: и в обычном C можно было заполнить какие-то переменные перед вызовом longjmp и потом их проанализировать.

Относитесь к ним как к уродливым функциям и все станет ясно. a + b, где a и b – типа Point это функция от двух аргументов a и b, возвращающая Point:

Point operator+(Point a, Point b)

Написать a+b равносильно вызову такой функции: operator+(a,b). Иногда эта технология удобна, а иногда вносит путаницу.

Многие программисты изучали C на основе языка Pascal. В Pascal есть возможность возвращать из функции больше одного параметра. Для этого применялось магическое слово “var”. В C для того, чтобы сделать то же самое, приходилось расставлять в тексте уйму символов “*”.

Разработчики C++ вняли стонам несчастных программистов и ввели слово var. А чтобы все это выглядел ооригинально, “var” они переименовали в “&” и назвали “ссылкой”.

Это вызвало большую путаницу, так как в C уже были понятия “указатель” (та самая звездочка) и “адрес” (обозначался тем же символом &), а понятие “ссылка” звучит тоже как что-то указующе-адресующее.

Вот если бы, не мудрствуя лукаво, добавили слово var…

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

В результате “на глаз” незаметно, что параметр может измениться. А в C это заметно по значку &. Во-вторых, многочисленные звездочки в C напоминают программисту о том, что каждый раз выполняется дополнительная операция * разыменования указателя.

Что побуждает сделать разумную оптимизацию. В C++ эти операции остаются незамеченными.

Аргумент по-умолчанию – это то, о чем мечтали программисты C: чтобы иногда не надо было при вызове задавать некоторые параметры, которые в этом случае должны иметь некоторое “обычное” значение.

Желание программистов C контролировать типы параметров в define-ах породило в C++ inline-функции. Такая функция – это обычный define с параметрами, только не надо мучиться с символами “\” и проверяются типы.

Желание узаконить в параметрах define имя типа породило template. Главный плюс template – то, что #define с одинаковыми параметрами породит два одинаковых куска кода. А template в компиляторе скорее всего будет соптимизирован: одинаковые куски кода будут соединены в один. Имеется небольшой контроль типов по сравнению с #define, но не очень удобный.

В то же время template имеют ряд серьезных недостатков. Первый – ужасный, неудобный синтаксис. Чтобы это ощутить, достаточно попробовать. Уж лучше бы разрешили не контролировать типы некоторых параметров inline-функций. Второй недостаток – template остался так же неудобен при работе с отладчиком, как и #define.

Ну и последнее нововведение, продиктованное, видимо, все тем же стремлением избавиться от #define. Это – тип “имя поля” (pointer to member). В C удобно было применять имена полей структур в define. В C++ тоже самое можно сделать с помощью операторов ::*, .* и ->*.

Например &Circle::radius – это имя поля radius структуры Circle, а Circle::*radius – соответствующий тип. Такую величину можно передать, как параметр. Фактически речь идет о смещении этого поля относительно начала структуры. Бывает полезно.

Примерно так же можно передать адрес функции-метода.

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

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

В этом и только в этом заключается более высокий уровень C++. Чуть больше абстракции, чуть меньше деталей – можно сосредоточится на более крупных блоках.

Существует мнение, что писать в стиле C на C++ – дурной стиль. Это мнение – всего лишь дань моде. Если в стиле C++ получается короче, лучше, надежнее, то глупо писать в стиле C. Это так, но верно и обратное!

Простой пример: у вас есть большой массив из 100 тысяч структур Point, который инициализируется один раз (все поля на 0) и много раз копируется в такие же массивы. Писать для элемента такого массива конструктор оказывается накладно. При его создании будет вызван конструктор для каждого элемента.

Потом вы создадите массив, куда его надо копировать – и снова вызовы конструкторов. Затем вы выполняете копирование и затираете результаты второй инициализации.

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

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

Что касается объектно-ориентированного программирования, то на самом деле оно не имеет никакого отношения к разнице между C и C++.

Благодаря ряду усовершенствований, код на C++ компактнее и надежнее, чем на C. Часть этих усовершенствований связана с ООП, а часть – нет.

Например, аргументы функций по-умолчанию и inline-функции к ООП не имеют никакого отношения. Они имеют отношение к ужесточению контроля типов.

ООП – это просто идея: “в зависимости от данных, выполнить процедуру”. А ПОП (процедурно ориентированное программирование) – “в зависимости от процедуры изменить данные”. Глупо молиться на ООП или на ПОП или отвергать что-то из них и тем более ужасаться при их смешивании. Разумно использовать тот и другое, смотря как будет точнее, проще, быстрее, компактнее.

Смешон консерватор, который говорит: “Я назло не буду использовать ООП, так как это – глупая новомодная штучка.” Такой консерватор обычно упрямо применяет только C и при этом не замечает, что давно пишет в стиле ООП, но на чистом C! Он думает, что раз он использует C, его никто не заподозрит в излишнем умничаньи.

Смешон модник, который говорит: “Я буду использовать ООП везде, так как хочу прослыть прогрессивным человеком, который быстро осваивает все новое!” Такой “передовик” упрямо применяет классы и template где надо и где не надо. Он громогласно вопит об ООП, но сколько-нибудь сложная часть его кода обычно написана в стиле ПОП: потому, что он ценит ООП только как признак прогрессивности, но не понимает простого смысла, заключенного в нем.

“Будьте проще и люди к вам потянутся!” J

Источник: http://psi-logic.narod.ru/pro/diffs.htm

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.