Заметки по языкам C и C++.
<  0  1  2  3  >  
Заметка номер 1 (о красоте)
В отличие от книг, которых я написал уже достаточно, я не собираюсь выкладывать здесь уже готовый и проверенный текст. Я буду писать прямо на странице. Другими словами на этот раз все объекты (то бишь мои заметки) будут динамическими. Вы можете всегда задать мне вопрос или поправить меня и тогда текст станет лучше. Ну почти свободная лицензия :), не правда ли? Можно назвать это блогом, но мне не нравится слово 'блогер'.
Я много лет работал программистом и одновременно преподавал в ВУЗЕ программирование и другие смежные дисциплины. И всегда меня удивлял один парадокс: процент студентов, которые могли реально программировать был всегда очень мал. Причем на стороне не программистов оказывались очень способные ребята, однако программирование было для них закрыто. Я думаю, что в написании программы есть что-то и от писательского труда. А это уже не ремесло, а внутренняя потребность, состояние души. Есть и некоторое отличие от труда литератора. Программист пишет текст программы, который можно прочитать, полюбоваться им, но истинный смысл этого текста проявляется в том, что он заставляет компьютер работать и как он это делает. Таким образом, удовольствие можно получить и от чтение программы как текста и от ее работы (конечно, когда она безупречна).
Можно ли говорить о красоте языка C? Программа на языке C действительно прекрасна. Язык C позволяет писать очень компактный код. Вот пример такого кода.
for(i=s=0; i<100; s+=++i);
Сразу и не разберешь, что в этой строке вычисляется сумма чисел от 1 до 100, и в результате переменная s получает значение 5050. Оператор for на первый взгляд очень напоминает аналогичный оператор в языке Паскаль, только разница между ними такая же, как между государем и милостивым государем. Но вот вам и другой фрагмент, который делает то же самое, но в нем мы угадываем мотивы языка Паскаль. Да C таков, он может имитировать другие языки.
s=0;
for(i=1; i<=100; i=i+1)
{
s=s+i;
}
Данный код не вызывает затруднений, его можно понять, даже не зная о существовании языка C, имея лишь некоторые представления о программировании. Так что же можно сказать о красоте кода, где она заключена? В этой связи обращу внимание читателя на два момента, имеющих, как мне кажется, прямое отношение к красоте: скрытый смысл и явная симметрия. Красота произведения искусства проявляется прежде всего в скрытых связях, ассоциациях, смыслах. Красота дизайнерской работы в симметрии. Так и здесь, первый фрагмент красив, потому-что содержит в себе скрытые возможности, требующие усилий и знаний для понимания и написания. Второй фрагмент красив, потому-что симметричен и понятен.
А вот еще один замечательный пример, который мне нравится и который решает ту же самую задачу, что и фрагменты выше.
s=0;i=101;
while(i--)s+=i;
Можно продолжить последовательность примеров вычисления данной суммы на языке С. Я думаю читатель, в качестве упражнения, сам найдет еще с десяток подобных решений. Но я вот, что хотел бы сказать. Возможность выразить одну и ту же мысль разными способами признак богатства и выразительности языка. И это тоже проявление красоты языка C.
И наконец последнее. Сумма целых чисел от 1 до 100 - это просто сумма членов арифметической прогрессии. Следовательно, мы могли бы просто записать фрагмент для вычисления так
s=(1+100)*100/2;
Это все. И это тоже язык C.

<  0  1  2  3  >  
 Письмо      Сайт      Заметки      Страница-портал      Журнал
Пирогов Владислав Юрьевич, Copyright (c), 2013-2015