Интернет магазин китайских планшетных компьютеров



Компьютеры - Синтаксический сахар - Примеры

22 января 2011


Оглавление:
1. Синтаксический сахар
2. Примеры
3. Критика
4. Синтаксическая соль



Массивы в Си

Массивы в Си представляют собой блоки в памяти. Доступ к элементам массива производится через указатель на начало блока памяти и смещение элемента относительно начального адреса. Это может быть записано без использования специального синтаксиса для массивов: *, но непосредственные операции с адресами в памяти и смещениями являются большим источником ошибок программистов, поэтому язык предоставляет специальный синтаксис: a. Кроме того, есть возможность обратиться к i-му элементу массива уж совсем экзотическим способом: i, что аналогично a, так как значение указателя i+a, очевидно, равно a+i.

Тернарная операция в Си

Другой известный пример специализированной языковой конструкции — тернарная условная операция языка Си ?:. Следующие два фрагмента кода делают одно и тоже:

int fn;
int a = 1;
int b;
if 
    b = fn;
else
    b = fn;



int fn;
int a = 1;
int b = fn;

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

Переопределение операторов

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

Свойства

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



Просмотров: 5899


<<< Магическое число (программирование)
Спагетти-код >>>