Интерполяционный полином Лагранжа
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: шпаргалки на телефон, отцы и дети сочинение
| Добавил(а) на сайт: Рубанов.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
2. создать модули, выполняющие вычисление правильно, быстро и корректно;
3. разработать интерфейс программы, совместимый с Windows-интерфейсом.
Глава 1
1. Эволюция технологии программирования
На ранних этапах развития программирования, когда программы писались в
виде последовательностей машинных команд, какая-либо технология
программирования отсутствовала. Первые шаги в разработке технологии
состояли в представлении программы в виде последовательности операторов.
Написанию последовательности машинных команд предшествовало составление
операторной схемы, отражающей последовательность операторов и переходы
между ними. Операторный подход позволил разработать первые программы для
автоматизации составления программ – так называемые составляющие программы.
С увеличением размеров программ стали выделять их обособленные части и оформлять их как подпрограммы. Часть таких подпрограмм объединялась в библиотеки, из которых подпрограммы можно было включать в рабочие программы и затем вызывать из рабочих программ. Это положило начало процедурному программированию – большая программа представлялась совокупностью процедур- подпрограмм. Одна из подпрограмм являлась главной и с нее начиналось выполнение программы.
В 1958 году были разработаны первые языки программирования, Фортран и
Алгол-58. Программа на Фортране состояла из главной программы и некоторого
количества процедур – подпрограмм и функций. Программа на Алголе-58 и его
последующей версии Алголе-60 представляла собой единое целое, но имела
блочную структуру, включающую главный блок и вложенные блоки подпрограмм и
функций. Компиляторы для Фортрана обеспечивали раздельную трансляцию
процедур и последующее их объединение в рабочую программу, первые
компиляторы для Алгола предполагали, что транслируется сразу вся программа, раздельная трансляция процедур не обеспечивалась.
Процедурный подход потребовал структурирования будущей программы, разделения ее на отдельные процедуры. При разработке отдельной процедуры о
других процедурах требовалось знать только их назначение и способ вызова.
Появилась возможность перерабатывать отдельные процедуры, не затрагивая
остальной части программы, сокращая при этом затраты труда и машинного
времени на разработку и модернизацию программ.
Следующим шагом в углублении структурирования программ стало так называемое структурное программирование, при котором программа в целом и отдельные процедуры рассматривались как последовательности канонических структур: линейных участков, циклов и разветвлений. Появилась возможность читать и проверять программу как последовательный текст, что повысило производительность труда программистов при разработке и отладке программ. С целью повышения структурности программы были выдвинуты требования к большей независимости подпрограмм, подпрограммы должны связываться с вызывающими их программами только путем передачи им аргументов, использование в подпрограммах переменных, принадлежащих другим процедурам или главной программе, стало считаться нежелательным.
Процедурное и структурное программирование затронули прежде всего процесс описания алгоритма как последовательности шагов, ведущих от варьируемых исходных данных к искомому результату. Для решения специальных задач стали разрабатываться языки программирования, ориентированные на конкретный класс задач: на системы управления базами данных, имитационное моделирование и т.д.
При разработке трансляторов все больше внимания стало уделяться обнаружению ошибок в исходных текстах программ, обеспечивая этим сокращение затрат времени на отладку программ.
Применение программ в самых разных областях человеческой деятельности
привело к необходимости повышения надежности всего программного
обеспечения. Одним из направлений совершенствования языков программирования
стало повышения уровня типизации данных. Теория типов данных исходит из
того, что каждое используемое в программе данное принадлежит одному и
только одному типу данных. Тип данного определяет множество возможных
значений данного и набор операций, допустимых над этим данным. Данное
конкретного типа в ряде случаев может быть преобразовано в данное другого
типа, но такое преобразование должно быть явно представлено в программе. В
зависимости от степени выполнения перечисленных требований можно говорить
об уровне типизации того или иного языка программирования. Стремление
повысить уровень типизации языка программирования привело к появлению языка
Паскаль, который считается строго типизированным языком, хотя и в нем
разрешены некоторые неявные преобразования типов, например, целого в
вещественное. Применение строго типизированного языка при написании
программы позволяет еще при трансляции исходного текста выявить многие
ошибки использования данных и этим повысить надежность программы. Вместе с
тем строгая типизация сковывала свободу программиста, затрудняла применение
некоторых приемов преобразования данных, часто используемых в системном
программировании. Практически одновременно с Паскалем был разработан язык
Си, в большей степени ориентированный на системное программирование и
относящийся к слабо типизированным языкам.
Все универсальные языки программирования, несмотря на различия в
синтаксисе и используемых ключевых словах, реализуют одни и те же
канонические структуры: операторы присваивания, циклы и разветвления. Во
всех современных языках присутствуют предопределенные (базовые) типы данных
(целые и вещественные арифметические типы, символьный и, возможно, строковый тип), имеется возможность использования агрегатов данных, в том
числе массивов и структур (записей). Для арифметических данных разрешены
обычные арифметические операции, для агрегатов данных обычно предусмотрена
только операция присваивания и возможность обращения к элементам агрегата.
Вместе с тем при разработке программы для решения конкретной прикладной
задачи желательна возможно большая концептуальная близость текста программы
к описанию задачи. Например, если решение задачи требует выполнения
операций над комплексными числами или квадратными матрицами, желательно, чтобы в программе явно присутствовали операторы сложения, вычитания, умножения и деления данных типа комплексного числа, сложения, вычитания, умножения и обращения данных типа квадратной матрицы. Решение этой проблемы
возможно несколькими путями:
. Построением языка программирования, содержащего как можно больше типов данных, и выбором для каждого класса задач некоторого подмножества этого языка. Такой язык иногда называют языком- оболочкой. На роль языка-оболочки претендовал язык ПЛ/1, оказавшийся настолько сложным, что так и не удалось построить его формализованное описание. Отсутствие формализованного описания, однако, не помешало широкому применению ПЛ/1 как в Западной Европе, так и в СССР.
. Построением расширяемого языка, содержащего небольшое ядро и допускающего расширение, дополняющее язык типами данных и операторами, отражающими концептуальную сущность конкретного класса задач. Такой язык называют языком-ядром. Как язык-ядро были разработаны языки Симула и Алгол-68, не получившие широкого распространения, но оказавшие большое влияние на разработку других языков программирования.
Дальнейшим развитием второго пути явился объектно-ориентированный подход к программированию.
2. Различия функционального и объектно-ориентированного подходов программирования
Есть два принципиально отличающихся подхода к технологии программирования: инженерно-конструкторский и математический. Первый основан на том, что изготовление программного продукта по заданным требованиям суть итеративный процесс последовательной реализации алгоритма решения задачи. Второй подход основан на математическом доказательстве правильности программы и автоматическом (или полуавтоматическом) получении готовой программы по заданным спецификациям.
Объектно-ориентированный подход к технологии программирования – инженерно-конструкторский, в котором внимание концентрируется на самом процессе решения задачи. В данной статье авторами обобщается опыт использования объектно-ориентированной технологии при разработке среды объектно-ориентированного программирования и некоторых прикладных программ, работающих в этой среде.
Оценим преимущества и недостатки наиболее распространенной инженерной технологии – функциональной. Существует три главные проблемы функционального подхода:
1. Слабая формализация связей между этапами. Специализация этапов приводит к тому, что интерфейсы между ними описываются на различных языках с разной степенью формализации. Слабая формализация уменьшает надежность программы и, что самое неприятное, ее адекватность требованиям заказчика.
2. Отсутствие гибкости. Поэтапная последовательная схема жестко связана с нисходящим способом создания программы. Однако практика показывает, что процесс. создания. хоть сколько-нибудь сложной программы неизбежно оказывается циклическим, с возвратами для внесения изменений в предыдущие этапы. Такие возвраты связаны с большими затратами, поскольку вовлекают этапы с разными интерфейсами и разными исполнителями.
3. Плохое использование результатов предыдущих разработок. Нисходящее проектирование вместе со слабой формализацией языков спецификаций приводят к тому, что результаты проектирования, как и готовые программы и их части, практически невозможно использовать для других целей. Исключение составляют библиотеки языков программирования на этапе кодирования.
Принципиальное отличие от функциональной схемы состоит в том, что поэтапный цикл жизни программного продукта заменяется многоуровневым представлением процесса решения задачи, которое получается сочетанием нисходящего и восходящего способов. С одной стороны идет детализация верхних уровней, с другой стороны из нижних уровней собираются недостающие компоненты верхних уровней. Смежные и другие близлежащие уровни могут пересекаться, т.е. иметь общие компоненты. Таким образом, границы между уровнями размываются, их число становится произвольным и даже неопределенным, а сами уровни теряют свою специфику.
Возможность применения вышеуказанной схемы обеспечивают три единые для
всех уровней средства: объектно-ориентированный язык, среда
программирования, база данных (библиотека классов). Эти средства в явном
виде составляют основу любой объектно-ориентированной технологии.
Рассмотрим их основные характеристики.
Рекомендуем скачать другие рефераты по теме: баллов рефераты, 7 ответов.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата