Как говорили люди, добавление этих слов на самом деле не дает полезного синтаксического сахара, потому что стоимость чтения некоторое время (или if (! Мала), к которой привыкли все разработчики на C, и использование такого макроса вас пугаетБольшинство разработчиков на C. Кроме того, не очень хорошая идея сделать язык похожим на другой.
НО, синтаксический сахар имеет значение. Как уже говорилось, в C ++, boost добавляет много синтаксического сахара через шаблоны,и stl также предоставляет сахар Somme (например, std::make_pair(a, b)
является синтаксическим сахаром для std::pair<decltype(a), decltype(b)>(a, b)
.
. По мере улучшения языка добавляются как функциональные возможности, так и синтаксический сахар, чтобы улучшить читаемость, удобочитаемость и эффективностьразработчики. Например, в спецификации C ++ 11 было добавлено «for (элементы в структуре данных)» (см. ниже), а также ключевое слово «auto», которое допускает недельный вывод типов (я говорю слабый, потому что вам нужнонабирать много типов во многих местах, где тип на самом деле является «очевидным» и избыточным).
Также в haskell, используя монады безнотация do (синтаксический сахар) была бы настоящей болью, и никто бы не использовал их 1 .
Пример без синтаксического сахара:
//C++ < 11
std::vector<int> v;
v.push_back(3);
v.push_back(7);
v.push_back(9);
v.push_back(12);
for (std::vector<int>::iterator it = v.begin();
it != v.end();
it++)
{
std::cout << *it << std::endl;
}
И с синтаксическим сахаром:
//C++ >= 11
std::vector<int> v {3, 7, 9, 12};
for (auto elm : v)
{
std::cout << elm << std::endl;
}
Чуть более читабельно, нет?
Пример haskell для монады ввода / вывода (из HaskellWiki ):
f :: IO String
f =
ask "What's your name ?" >>= \name ->
putStrLn "Write something." >>= \_ ->
getLine >>= \string ->
putStrLn ("Hello " ++ name ++ " you wrote " ++ string) >>= \_ ->
return name
g :: IO String
g = do
name <- ask "What's your name ?"
putStrLn "Write something."
string <- getLine
putStrLn ("Hello " ++ name ++ " you wrote " ++ string)
return name
Вот ссылка на ideone: http://ideone.com/v9BqiZ
1 : На самом деле язык более гибкий, чем C ++, и позволяет создавать операторы(например, & ^, +.,: + :, ...), поэтому мы можем представить, что кто-то снова быстро введет синтаксический сахар:).