52
как и в каком порядке происходит обработка, структуры данных должны
четко описывать, что именно обрабатывается, — и на это описание
затрачивается значительная часть усилий программиста. И если, как
говорит Никлаус Вирт, программы — это алгоритмы плюс структуры
данных, в языках программирования должны быть средства описания
алгоритмов и средства описания данных.При этом то, насколько удобно и
эффективно можно описать данные, зависит от встроенных в язык
программирования возможностей.
Некоторые языки программирования требуют, чтобы до их использования
все переменные, аргументы и возвращаемые значения функций и процедур
были объявлены с указанием типа (Алгол, Ада, Паскаль, С/C++). Другие
(Лисп, РАПИРА, PHP) этого не требуют, переменная в них приобретает
тип в зависимости от первого присвоенного ей значения. При этом в
большинстве языков программирования переменные могут иметь только
один тип во все время их существования. Но в некоторых тип может
меняться во время исполнения программы. В первом случае говорят о
статической, во втором — о
динамической типизации.
Языки программирования могут быть как с явной, так и с неявной
системой типов. В первом случае четко фиксируется, к какому типу
относится та или иная переменная или константа, во втором об этом
отдельно речь не идет, тем не менее данные обычно обрабатываются по-
разному. И у первого, и у второго подхода имеются как достоинства, так и
недостатки. Динамическая неявная типизация расширяет возможности
использования переменных и избавляет программиста от хлопот,
связанных с объявлением и контролем соответствия типов. Кроме того,
данный подход позволяет создавать более универсальные и проще
интегрируемые программные модули. Однако это требует от программиста
большей ответственности, поскольку во время выполнения программы
возможны неожиданности вроде попыток перемножить две строки или
Достарыңызбен бөлісу: