Основные подходы к программированию сообщение

Обновлено: 07.07.2024

Основные подходы к программированию можно различать как по соответствию, определенному математическому формализму, так и по стилю.

Так, формализму рекурсивных функций соответствует функциональное программирование. Реализацией этого подхода являются языки FP, Haskell.

Формализму исчисления высказываний соответствует подход, называемый логическим программированием, который состоит в следующем. Имеется база знаний задачи — набор логических аксиом (“факты”) и правил вывода (“правила”); запросы к базе знаний формулируются в виде целевых утверждений (“целей”). База знаний вкупе с целевым утверждением называется логической программой. Выполнение программы состоит в доказательстве целевого утверждения для данной базы знаний.

В рамках логического программирования возможны две точки зрения: описательная и декларативная. Первая предусматривает описание того, как что-либо сделать. Эта точка зрения нашла отражение в языке Лисп. Вторая предусматривает описание того, что нужно сделать, т. е. “целей”. Данная точка зрения представлена различными реализациями языка Пролог.

Объектно-ориентированное программирование (ООП) часто называют новой парадигмой программирования. Вот как выглядят основные принципы ООП в изложении Алана Кэя, одного из авторов объектно-ориентированной системы Смолток:

1. Все является объектом.

3. Каждый объект имеет независимую память, в которой размещены другие объекты.

4. Каждый объект является представителем класса, который выражает общие свойства объектов, например целых чисел или массивов.

5. В классе задается поведение объекта. Все объекты одного класса умеют выполнять одни и те же действия.

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

Примерами объектно-ориентированных языков являются Смолток (Smalltalk), C++, Actor, Object Pascal, Java.

7 Структура программного обеспечения компьютера и назначение его составных компонентов.

Программное обеспечение компьютера можно разделить на операционную систему и прикладное программное обеспечение.

Операционная система обеспечивает функционирование и взаимосвязь всех компонентов компьютера и предоставляет пользователю доступ к его аппаратным возможностям. Внутренняя структура современных операционных систем достаточно сложная (подробнее см. билет № 5, вопрос 1).

Прикладное программное обеспечение можно разделить на две группы программ: средства разработки и приложения.

Средства разработки — это инструменты программиста. Традиционными средствами разработки являются алгоритмические (процедурные) языки программирования. Основой систем программирования является транслятор. Трансляторы языков программирования, т. е. программы, обеспечивающие перевод исходного текста программы на машинный язык (объектный код), бывают двух типов: интерпретаторы и компиляторы.

Интерпретатор — это транслятор, который обеспечивает последовательный синхронный “перевод” и выполнение каждой строки программы, причем при каждом запуске программы на выполнение вся процедура полностью повторяется. Достоинством интерпретатора является удобство отладки программы в интерактивном режиме, а недостатком — малая скорость работы.

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

Современные системы объектно-ориентированного визуального программирования позволяют сделать процесс программирования более наглядным за счет использования графического интерфейса.

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

Системы управления базами данных (СУБД) позволяют создавать, редактировать и модифицировать базы данных.

Системы компьютерной графики позволяют создавать и редактировать изображения, а также создавать анимацию.

Системы автоматизированного проектирования (САПР) позволяют разрабатывать проекты и создавать чертежи и схемы различных объектов (машин и механизмов, зданий, электронных схем и т. д.).

Инструментальные средства создания Web-страниц на основе HTML (Hyper Text Markup Language) используются большим количеством профессионалов (Web-мастеров) и просто пользователей сети для разработки Web-страниц.

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

Для работы во всемирной компьютерной сети Internet используются специальные сетевые приложения, такие, как браузеры, позволяющие “путешествовать” по Всемирной паутине, почтовые программы, необходимые для работы с почтой и доступа к телеконференциям, и некоторые другие.

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

Большую пользу приносят различные мультимедиа - энциклопедии и справочники на CD-ROM, которые содержат огромный объем информации и средства быстрого поиска.

Программы распознавания текста позволяют преобразовывать отсканированные страницы текста из графического формата в текстовый формат.

Программы-переводчики позволяют производить автоматический перевод текстов с русского на иностранные языки или, наоборот, с иностранных языков на русский.

Компьютерные игры бывают самых различных типов (логические, стратегические и т. д.).

Структура программного обеспечения компьютера (в скобках приведены п-римеры широко распространенных программ соответствующих типов).

1. Операционная система (Windows 95, Windows NT)

2. Прикладное программное обеспечение

2.1 Средства разработки

2.1.1 Системы процедурного (алгоритмического) программирования, трансляторы языков программирования

2.1.1.1 Интерпретаторы (QBasic)

2.1.1.2 Трансляторы (Turbo Pascal)

2.1.2 Системы объектно-ориентированного визуального программирования (VisualBasic, Delphi)

Парадигма программирования – это совокупность принципов, методов и понятий, определяющих способ конструирования программ.

Парадигма (философия науки) – устоявшаяся система научных взглядов, в рамках которой ведутся исследования (Т. Кун).

  • вычислительной моделью
  • базовой программной единицей(-ами)
  • методами разделения абстракций [Источник 1]

Язык программирования не обязательно использует только одну парадигму. Языки, поддерживающие несколько парадигм, называются мультипарадигменными. Создатели таких языков придерживаются точки зрения, гласящей, что ни одна парадигма не может быть одинаково эффективной для всех задач, и следует позволять программисту выбирать лучший стиль программирования для решения каждой отдельной задачи.

Содержание

История

Таким образом, по мнению Роберта Флойда, в отличие от парадигм в научном мире, описанных Куном, парадигмы программирования могут сочетаться, обогащая инструментарий программиста.

Важно отметить, что парадигма программирования не определяется однозначно языком программирования; практически все современные языки программирования в той или иной мере допускают использование различных парадигм. Так на языке Си, который не является объектно-ориентированным, можно работать в соответствии с принципами объектно-ориентированного программирования, хотя это и сопряжено с определёнными сложностями; функциональное программирование можно применять при работе на любом императивном языке, в котором имеются функции (для этого достаточно не применять присваивание). [Источник 2]

Разновидности парадигмы

Парадигма программирования не определяется однозначно языком программирования; практически все современные языки программирования в той или иной мере допускают использование различных парадигм.

Так на языке Си, который не является объектно-ориентированным, можно работать в соответствии с принципами объектно-ориентированного программирования, хотя это и сопряжено с определёнными сложностями; функциональное программирование можно применять при работе на любом императивном языке, в котором имеются функции (для этого достаточно не применять присваивание), и т.д.

Императивное программирование

Им­пе­ра­тив­ные парадигмы программирования пред­став­ля­ют про­грам­му как по­сле­до­ва­тель­ность дей­ст­вий (опе­ра­то­ров), ко­то­рые пре­об­ра­зу­ют со­стоя­ние про­грам­мы. До­пус­ти­мые ви­ды опе­ра­то­ров, а так­же ти­пы об­ра­ба­ты­вае­мых дан­ных оп­ре­де­ля­ют­ся кон­крет­ным язы­ком про­грам­ми­ро­ва­ния. К им­пе­ра­тив­ным па­ра­диг­мам от­но­сит­ся про­це­дур­ная парадигма программирования., в ко­то­рой отдельные груп­пы час­то по­вто­ряе­мых опе­ра­то­ров вы­де­ля­ют­ся в про­це­ду­ры (на­зы­вае­мые так­же под­про­грам­ма­ми), опи­сы­ваю­щие дей­ст­вия по пе­ре­во­ду од­них дан­ных в дру­гие. В чис­ло опе­ра­то­ров та­ких язы­ков вхо­дит опе­ра­тор об­ра­ще­ния к про­це­ду­ре.

Вычислительная модель - машина Тьюринга.

Основные механизмы управления/абстракции:

  • Последовательное исполнение команд
  • Ветвление
  • Безусловный переход
  • Вызов подпрограммы (иногда)

Элементарные единицы модульности - отсутствуют. [Источник 3]

Структурное программирование

Струк­тур­ные парадигмы программирования на­це­ле­ны на со­кра­ще­ние вре­ме­ни раз­ра­бот­ки и уп­ро­ще­ние под­держ­ки про­грамм за счёт ис­поль­зо­ва­ния блоч­ных опе­ра­то­ров и под­про­грамм. От­ли­чительной чер­той струк­тур­ных про­грамм яв­ля­ет­ся от­каз от опе­ра­то­ра пе­ре­хо­да (goto).

Вычислительная модель - машина Тьюринга.

Основные механизмы управления/абстракции:

  • Последовательное исполнение команд
  • Ветвление
  • Цикл
  • Вызов подпрограммы
  • Лексический контекст

Элементарные единицы модульности:

Объектно-ориентированное программирование

В дан­ной парадигме программирования про­грам­ма раз­би­ва­ет­ся на объ­ек­ты – струк­ту­ры дан­ных, со­стоя­щие из по­лей, опи­сы­ваю­щих со­стоя­ние, и ме­то­дов – под­про­грамм, при­ме­няе­мых к объ­ек­там для изме­не­ния или за­про­са их со­стоя­ния. В боль­шей час­ти объ­ект­но ори­ен­ти­ро­ван­ных парадигмах для опи­са­ния объ­ек­тов ис­поль­зу­ют­ся клас­сы, объ­ек­ты бо­лее вы­со­ко­го по­ряд­ка, опи­сы­ваю­щие струк­ту­ру и опе­ра­ции, свя­зан­ные с объ­ек­та­ми. В ка­че­ст­ве бо­лее ча­ст­ной парадигмы по от­но­ше­нию к объ­ект­но ори­ен­ти­ро­ван­ной вы­де­ля­ют про­то­типно ори­ен­ти­ро­ван­ную парадигму. В от­ли­чие от ос­но­ван­ных на клас­сах объ­ект­но ори­ен­ти­ро­ван­ных сис­тем, в про­то­тип­но ори­ен­ти­ро­ван­ных сис­те­мах по­ня­тие клас­сов не ис­поль­зу­ет­ся, а но­вые пе­ре­мен­ные объ­ек­ты соз­да­ют­ся пу­тём ко­пи­ро­ва­ния су­ще­ст­вую­щих про­то­ти­пов. К язы­кам, под­дер­жи­ваю­щим объ­ект­но ори­ен­ти­ро­ван­ную парадигму программирования , от­но­сят­ся си++, Common Lisp (так­же со­дер­жит эле­мен­ты функ­цио­наль­ной парадигмы), джа­ва, джа­ва-скрипт (прототип­но ори­ен­ти­ро­ван­ная мо­дель).

Вычислительная модель - машина Тьюринга

Основные механизмы управления/абстракции:

  • Объект
  • Класс
  • Иерархии классов/объектов
  • Полиморфизм

Элементарные единицы модульности - класс

Функциональное программирование

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

Вычислительная модель - λ-исчисление

Основные механизмы управления/абстракции:

  • Чистая функция, как объект первого класса
  • Вызов функции (в т.ч. рекурсивный)
  • Лексический контекст, замыкание

Элементарные единицы модульности:

  • Функция (в т.ч. высшего порядка, обобщенная и т.д.)

Неподвижное состояние объектов

При инициализации идентификатора (переменной) ему сопоставляется некоторое значение (объект), которое не может быть изменено. При этом идентификатор с тем же самым именем может быть определен в другом лексическом контексте с другим значением.

Чистая функция (pure function) – функция не имеющая побочных эффектов, т.е. единственным эффектом ее применение является порождение результата, зависящего только от аргументов. [Источник 3]

Логическое программирование

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

Логическое программирование начинает свой отсчет времени с конца 60-х годов XX века, когда Корделл Грин предложил использовать резолюцию как основу логического программирования. Алан Колмеро создал язык логического программирования Prolog в 1971 году. Логическое программирование пережило пик популярности в середине 80-х годов XX века, когда оно было положено в основу проекта разработки программного и аппаратного обеспечения вычислительных систем пятого поколения.

Важным преимуществом такого подхода является достаточно высокий уровень машинной независимости, а также возможность откатов – возвращения к предыдущей подцели при отрицательном результате анализа одного из вариантов в процессе поиска решения.

Одним из недостатков логического подхода в концептуальном плане является специфичность класса решаемых задач.

Другой недостаток практического характера состоит в сложности эффективной реализации для принятия решений в реальном времени, скажем, для систем жизнеобеспечения.

Нелинейность структуры программы является особенностью декларативного подхода и, строго говоря, представляет собой оригинальную особенность, а не объективный недостаток. [Источник 4]

Подходы и приёмы

Далее будут представлены более подробно подходы и приемы парадигмы программирования:

  • Структурное программирование
  • Процедурное программирование
  • Обобщённое программирование
  • Доказательное программирование
  • Порождающее программирование
  • Аспектно-ориентированное программирование
  • Рекурсия
  • Автоматное программирование
  • Событийно-ориентированное программирование
  • Компонентно-ориентированное программирование
  • Грамотное программирование

Структурное программирование

Cтруктурное программирование воплощает принципы системного подхода в процессе создания и эксплуатации программного обеспечения ЭВМ. В основу структурного программирования положены следующие достаточно простые положения:

  • алгоритм и программа должны составляться поэтапно (по шагам).
  • сложная задача должна разбиваться на достаточно простые части, каждая из которых имеет один вход и один выход.
  • логика алгоритма и программы должна опираться на минимальное число достаточно простых базовых управляющих структур.

Фундаментом структурного программирования является теорема о структурировании. Эта теорема устанавливает, что, как бы сложна ни была задача, схема соответствующей программы всегда может быть представлена с использованием ограниченного числа элементарных управляющих структур. Базовыми элементарными структурами являются структуры: следование, ветвление и повторение (цикл), любой алгоритм может быть реализован в виде композиции этих трех конструкций. [Источник 5]

Обобщённое программирование

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

Процедурное (алгоритмическое) программирование

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

Преимущества и недостатки процедурного программирования: Среди недостатков ПП можно назвать следующие:

  • Риск возникновения множества ошибок при работе над большим проектом. Приходится писать много процедур, и это не может не сказаться на чистоте и работоспособности кода.
  • Все данные процедуры доступны только внутри нее. Их нельзя вызвать из другого места программы и при необходимости придется писать аналогичный код. А это уже противоречит одному из основополагающих принципов программирования, который звучит как Don’t Repeat Yourself (Не повторяйся).
  • Сложность изучения для начинающих. Этот недостаток может кому-то показаться притянутым за уши, но простая статистика свидетельствует, что процедурное программирование для большинства новичков дается сложнее, чем объектно-ориентированное. Преимущества:
  • Любая процедура (функция) может быть вызвана неограниченное количество раз.
  • Возможность оперативно решить задачу, в которой отсутствует сложная иерархия. [Источник 7]

Доказательное программирование

Доказательное программирование — это составление программ с доказательством их правильности. Сложность составления и доказательства правильности алгоритмов и программ состоит в следующем.

Для заключений о наличии ошибок в алгоритме или в программе достаточно указать тест, при котором произойдет сбой, отказ или будут получены неправильные результаты.

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

Существуют два подхода к проверке программ — прагматический и доказательный. При прагматическом подходе проверка программ выполняется на ЭВМ путем тестирования.

Тестирование — это проверка программ на ЭВМ с помощью некоторого набора тестов. Ясно, что тестирование не дает гарантий правильности выполнения программ на всех допустимых данных. Следовательно, тестирование в общем случае не может дать и не дает полных гарантий отсутствия ошибок в программах.

Напомним, что отладка программ — это процесс поиска и исправления ошибок в программах на ЭВМ. Однако поскольку поиск ошибок при отладке программ проводится с помощью тестов, то полных гарантий нахождения и исправления всех ошибок в программах отладка не дает и в принципе дать не может.

По этой же причине неясно, когда процесс отладки программ — процесс поиска и исправления ошибок на ЭВМ — может считаться завершенным. А выявлены или нет все ошибки в программе при ее отладке не может сказать никто.

Порождающее программирование

Порождающее программирование (generative programming) – парадигма технологии разработки программного обеспечения, основанная на моделировании семейства программных систем, используя которые можно по конкретным техническим требованиям автоматически получить специализированный и оптимизированный промежуточный или конечный программный продукт из элементарных, многократно используемых компонентов реализации с помощью базы знаний о конфигурациях.

Порождающее программирование фокусирует внимание не на уникальных продуктах (объектах), а на семействах программных систем (классах объектов). Таким образом, порождающее программирование имеет огромное сходство с теорией универсальных и интегративных моделей, применяемых для синтеза объектов, и являющихся моделями не отдельно взятого объекта, а моделями всех объектов, принадлежащих рассматриваемому классу (моделью семейства объектов или систем). [Источник 9]

Аспектно-ориентированное программирование

Аспектно-ориентированное программирование(АОП) — это парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули.

Аспектно-ориентированное программирование выросло из осознания того, что в типовых программах на объектно-ориентированных языках часто представлена функциональность, которая не вмещается естественно в один или даже в несколько тесно связанных программных модулей. Такую функциональность называют "сквозной" (англ. scattered, разбросанная или tangled, переплетённая), её реализация рассыпана по различным модулям программы. Сфера действия АОП охватывает пространство проблем, непосильных для объектно-ориентированных и процедурных языков. Оно предлагает элегантные пути для реализации задач, решение которых сдерживалось из-за фундаментальных ограничений программирования.

АОП дополняет объектно-ориентированное программирование, обогащая его другим типом модульности, который позволяет локализовать код реализации "сквозной" логики в одном модуле. Такие модули обозначаются термином аспекты. За счет отделения аспектно-ориентированного кода работа со "сквозными" отношениями упрощается. Аспекты в системе могут изменяться, вставляться, удаляться на этапе компиляции и, более того, повторно использоваться. [Источник 10]

Рекурсия

В программировании рекурсия тесно связана с функциями, точнее именно благодаря функциям в программировании существует такое понятие как рекурсия или рекурсивная функция. Простыми словами, рекурсия – определение части функции (метода) через саму себя, то есть это функция, которая вызывает саму себя, непосредственно (в своём теле) или косвенно (через другую функцию).

У рекурсии должно быть условие остановки — Базовый случай (иначе также как и цикл рекурсия будет работать вечно — infinite). Это условие и является тем случаем к которому рекурсия идет (шаг рекурсии). При каждом шаге вызывается рекурсивная функция до тех пор пока при следующем вызове не сработает базовое условие и произойдет остановка рекурсии(а точнее возврат к последнему вызову функции). Всё решение сводится к решению базового случая. В случае, когда рекурсивная функция вызывается для решения сложной задачи (не базового случая) выполняется некоторое количество рекурсивных вызовов или шагов, с целью сведения задачи к более простой. И так до тех пор пока не получим базовое решение. [Источник 11]

Автоматное программирование

Автоматное программирование поддерживает такие этапы создания программного обеспечения как проектирование, реализация, отладка и документирование.

Особенность рассматриваемого подхода состоит в том, что при его использовании автоматы задаются графами переходов, для различения вершин в которых вводится понятие "кодирование состояний". При выборе "многозначного кодирования" с помощью одной переменной можно различить состояния, число которых совпадает со значностью выбранной переменной. Это позволило ввести в программирование такое понятие, как "наблюдаемость программ".

В рамках предлагаемого подхода программирование выполняется "через состояния", а не "через переменные" (флаги), что позволяет лучше понять и специфицировать задачу и ее составные части.

При этом необходимо отметить, что в автоматном программировании отладка проводится путем протоколирования в терминах автоматов. [Источник 12]

Событийно-ориентированное программирование

События могут быть пользовательскими, системными и программными, которые генерируются самой программой. [Источник 13]

Компонентно-ориентированное программирование

Грамотное программирование

Грамотное, или литературное, программирование – это экстремальная технология самодокументируемого кода, предложенная знаменитым специалистом в вычислительной технике Дональдом Кнутом. Он написал книгу под этим названием, в которой и описал эту технологию (Knuth 92). Это радикальная альтернатива традиционной модели программирования, хотя некоторые считают, что период грамотного программирования был крупной неудачей в карьере Д. Кнута.

Лежащая в основе идея проста: нужно писать не программу, а документ. Язык документации тесно привязан к языку программирования. Ваш документ в основном описывает то, что программируется, но при этом допускает компиляцию в нужную программу. Таким образом, исходный код – это документация, и наоборот. [Источник 15]

Lorem ipsum dolor

Итак, что такое парадигма программирования? Парадигма — это совокупность правил, принципов и методик, которые применяются при написании программ. Парадигма определяет стиль написания программы и никак не связана с каким-то конкретным языком программирования. В одной парадигм е п рограммный код могут писать разные языки программирования , т акже один язык может писать код в различных парадигмах.

Если представить условную иерархию, тогда парадигмы программирования будут на самой вершине. Именно они будут определят ь п равила написания, свойства, шаблоны, паттерны, структуру, архитектуру программы и др. То ест ь и значально идет парадигма, которая влечет все остальные собственные составляющие.

Основные парадигмы программирования

Парадигма объектно-ориентированного программирования

  • абстракция,

  • инкапсуляция,

  • наследование,

  • полиморфизм.

Парадигма функционального программирования

Парадигма функционального программирования заняла почетное второе место по популярности после объектно-ориентированного программирования. Главная идея такой модели заключается в том, что программа создается под одну конкретную задачу, поэтому от нее ждут конкретный результат.

Программисты, которые отдельно используют ООП или ФП, часто спорят о том, какая из этих двух парадиг м лучше. Но невозможно выделить лучшую, потому что выбор парадигмы зависит от требований к программе и языка, на котором она будет писаться. Язык, который был разработан для функционального программирования , — Haskel l . Однак о н еплохо с этой парадигмой справляется Python.

В ООП основной компонент программы — объект. В функциональном программировании — функция. В функциях прописывается, какую информацию она должна получить в качестве входящего значения, а какую должна отдать. Функции могут быть вложенными — это когда одна функция является аргументом другой функции.

Программы, написанные по такой модели, обычно легче тестировать и читать, если сравнивать с ООП.

Процедурная парадигма программирования

Процедурная парадигма программирования основывается на процедурах. Процедура — это инструкция, которая используется для воздействи я на состояние памяти. После исполнения всего набора инструкци й п рограмма выдает результат.

Процедурное программирование не так распространено, как первые две парадигмы, однако поддерживается в таких популярных языках , как С и Go. Такая парадигма по своей простоте схо ж а с функциональным программированием. Однак о п рограммы , написанные в такой модели , сложнее масштабировать.

Парадигма декларативного программирования

Логическая парадигма программирования

Заключение

  • структурное программирование,

  • компонентно-ориентированное,

  • прототипно-ориентированное,

  • агентно-ориентированное,

  • аппликативное,

  • обобщенное,

  • доказательное,

  • порождающее программирование,

  • и др.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

ИНФОРМАТИКА- НАУКА, ИЗУЧАЮЩАЯ СПОСОБЫ АВТОМАТИЗИРОВАННОГО СОЗДАНИЯ, ХРАНЕНИЯ, ОБРАБОТКИ, ИСПОЛЬЗОВАНИЯ, ПЕРЕДАЧИ И ЗАЩИТЫ ИНФОРМАЦИИ.

ИНФОРМАЦИЯ – ЭТО НАБОР СИМВОЛОВ, ГРАФИЧЕСКИХ ОБРАЗОВ ИЛИ ЗВУКОВЫХ СИГНАЛОВ, НЕСУЩИХ ОПРЕДЕЛЕННУЮ СМЫСЛОВУЮ НАГРУЗКУ.

ЭЛЕКТРОННО-ВЫЧИСЛИТЕЛЬНАЯ МАШИНА (ЭВМ) ИЛИ КОМПЬЮТЕР (англ. computer- -вычислитель)-УСТРОЙСТВО ДЛЯ АВТОМАТИЗИРОВАННОЙ ОБРАБОТКИ ИНФОРМАЦИИ. Принципиальное отличие использования ЭВМ от всех других способов обработки информации заключается в способности выполнения определенных операций без непосредственного участия человека, но по заранее составленной им программе. Информация в современном мире приравнивается по своему значению для развития общества или страны к важнейшим ресурсам наряду с сырьем и энергией. Еще в 1971 году президент Академии наук США Ф.Хандлер говорил: "Наша экономика основана не на естественных ресурсах, а на умах и применении научного знания".

В развитых странах большинство работающих заняты не в сфере производства, а в той или иной степени занимаются обработкой информации. Поэтому философы называют нашу эпоху постиндустриальной. В 1983 году американский сенатор Г.Харт охарактеризовал этот процесс так: "Мы переходим от экономики, основанной на тяжелой промышленности, к экономике, которая все больше ориентируется на информацию, новейшую технику и технологию, средства связи и услуги.."

2. КРАТКАЯ ИСТОРИЯ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ.

Вся история развития человеческого общества связана с накоплением и обменом информацией (наскальная живопись, письменность, библиотеки, почта, телефон, радио, счеты и механические арифмометры и др.). Коренной перелом в области технологии обработки информации начался после второй мировой войны.

В вычислительных машинах первого поколения основными элементами были электронные лампы. Эти машины занимали громадные залы, весили сотни тонн и расходовали сотни киловатт электроэнергии. Их быстродействие и надежность были низкими, а стоимость достигала 500-700 тысяч долларов.

Появление более мощных и дешевых ЭВМ второго поколения стало возможным благодаря изобретению в 1948 году полупроводниковых устройств- транзисторов. Главный недостаток машин первого и второго поколений заключался в том, что они собирались из большого числа компонент, соединяемых между собой. Точки соединения (пайки) являются самыми ненадежными местами в электронной технике, поэтому эти ЭВМ часто выходили из строя.

В ЭВМ третьего поколения (с середины 60-х годов ХХ века) стали использоваться интегральные микросхемы (чипы)- устройства, содержащие в себе тысячи транзисторов и других элементов, но изготовляемые как единое целое, без сварных или паяных соединений этих элементов между собой. Это привело не только к резкому увеличению надежности ЭВМ, но и к снижению размеров, энергопотребления и стоимости (до 50 тысяч долларов).

История ЭВМ четвертого поколения началась в 1970 году, когда ранее никому не известная американская фирма INTEL создала большую интегральную схему (БИС), содержащую в себе практически всю основную электронику компьютера. Цена одной такой схемы (микропроцессора) составляла всего несколько десятков долларов, что в итоге и привело к снижению цен на ЭВМ до уровня доступных широкому кругу пользователей.

СОВРЕМЕННЫЕ КОМПЬТЕРЫ- ЭТО ЭВМ ЧЕТВЕРТОГО ПОКОЛЕНИЯ, В КОТОРЫХ ИСПОЛЬЗУЮТСЯ БОЛЬШИЕ ИНТЕГРАЛЬНЫЕ СХЕМЫ.

90-ые годы ХХ-го века ознаменовались бурным развитием компьютерных сетей, охватывающих весь мир. Именно к началу 90-ых количество подключенных к ним компьютеров достигло такого большого значения, что объем ресурсов доступных пользователям сетей привел к переходу ЭВМ в новое качество. Компьютеры стали инструментом для принципиально нового способа общения людей через сети, обеспечивающего практически неограниченный доступ к информации, находящейся на огромном множестве компьюторов во всем мире - "глобальной информационной среде обитания".

6.ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В КОМПЬЮТЕРЕ И ЕЕ ОБЪЕМ.

ЭТО СВЯЗАНО С ТЕМ, ЧТО ИНФОРМАЦИЮ, ПРЕДСТАВЛЕННУЮ В ТАКОМ ВИДЕ, ЛЕГКО ТЕХНИЧЕСКИ СМОДЕЛИРОВАТЬ, НАПРИМЕР, В ВИДЕ ЭЛЕКТРИЧЕСКИХ СИГНАЛОВ. Если в какой-то момент времени по проводнику идет ток, то по нему передается единица, если тока нет- ноль. Аналогично, если направление магнитного поля на каком-то участке поверхности магнитного диска одно- на этом участке записан ноль, другое- единица. Если определенный участок поверхности оптического диска отражает лазерный луч- на нем записан ноль, не отражает- единица.

ОБЪЕМ ИНФОРМАЦИИ, НЕОБХОДИМЫЙ ДЛЯ ЗАПОМИНАНИЯ ОДНОГО ИЗ ДВУХ СИМВОЛОВ-0 ИЛИ 1, НАЗЫВАЕТСЯ 1 БИТ (англ. binary digit- двоичная единица). 1 бит- минимально возможный объем информации. Он соответствует промежутку времени, в течение которого по проводнику передается или не передается электрический сигнал, участку поверхности магнитного диска, частицы которого намагничены в том или другом направлении, участку поверхности оптического диска, который отражает или не отражает лазерный луч, одному триггеру, находящемуся в одном из двух возможных состояний.

Итак, если у нас есть один бит, то с его помощью мы можем закодировать один из двух символов- либо 0, либо 1.

Если же есть 2 бита, то из них можно составить один из четырех вариантов кодов: 00 , 01 , 10 , 11 .

Если есть 3 бита- один из восьми: 000 , 001 , 010 , 100 , 110 , 101 , 011 , 111 .

1 бит- 2 варианта,

2 бита- 4 варианта,

3 бита- 8 вариантов;

Продолжая дальше, получим:

4 бита- 16 вариантов,

5 бит- 32 варианта,

6 бит- 64 варианта,

7 бит- 128 вариантов,

8 бит- 256 вариантов,

9 бит- 512 вариантов,

10 бит- 1024 варианта,

N бит - 2 в степени N вариантов.

В обычной жизни нам достаточно 150-160 стандартных символов (больших и маленьких русских и латинских букв, цифр, знаков препинания, арифметических действий и т.п.). Если каждому из них будет соответствовать свой код из нулей и единиц, то 7 бит для этого будет недостаточно (7 бит позволят закодировать только 128 различных символов), поэтому используют 8 бит.

ДЛЯ КОДИРОВАНИЯ ОДНОГО ПРИВЫЧНОГО ЧЕЛОВЕКУ СИМВОЛА В КОМПЬЮТЕРЕ ИСПОЛЬЗУЕТСЯ 8 БИТ, ЧТО ПОЗВОЛЯЕТ ЗАКОДИРОВАТЬ 256 РАЗЛИЧНЫХ СИМВОЛОВ.

СТАНДАРТНЫЙ НАБОР ИЗ 256 СИМВОЛОВ НАЗЫВАЕТСЯ ASCII ( произносится "аски", означает "Американский Стандартный Код для Обмена Информацией"- англ. American Standart Code for Information Interchange).

ОН ВКЛЮЧАЕТ В СЕБЯ БОЛЬШИЕ И МАЛЕНЬКИЕ РУССКИЕ И ЛАТИНСКИЕ БУКВЫ, ЦИФРЫ, ЗНАКИ ПРЕПИНАНИЯ И АРИФМЕТИЧЕСКИХ ДЕЙСТВИЙ И Т.П.

A - 01000001, B - 01000010, C - 01000011, D - 01000100, и т.д.

Таким образом, если человек создает текстовый файл и записывает его на диск, то на самом деле каждый введенный человеком символ хранится в памяти компьютера в виде набора из восьми нулей и единиц. При выводе этого текста на экран или на бумагу специальные схемы - знакогенераторы видеоадаптера (устройства, управляющего работой дисплея) или принтера образуют в соответствии с этими кодами изображения соответствующих символов.

Набор ASCII был разработан в США Американским Национальным Институтом Стандартов (ANSI), но может быть использован и в других странах, поскольку вторая половина из 256 стандартных символов, т.е. 128 символов, могут быть с помощью специальных программ заменены на другие, в частности на символы национального алфавита, в нашем случае - буквы кириллицы. Поэтому, например, передавать по электронной почте за границу тексты, содержащие русские буквы, бессмысленно. В англоязычных странах на экране дисплея вместо русской буквы Ь будет высвечиваться символ английского фунта стерлинга, вместо буквы р - греческая буква альфа, вместо буквы л - одна вторая и т.д.

ОБЪЕМ ИНФОРМАЦИИ, НЕОБХОДИМЫЙ ДЛЯ ЗАПОМИНАНИЯ ОДНОГО СИМВОЛА ASCII НАЗЫВАЕТСЯ 1 БАЙТ.

Очевидно что, поскольку под один стандартный ASCII-символ отводится 8 бит,

Остальные единицы объема информации являются производными от байта:

1 КИЛОБАЙТ = 1024 БАЙТА И СООТВЕТСТВУЕТ ПРИМЕРНО ПОЛОВИНЕ СТРАНИЦЫ ТЕКСТА,

1 МЕГАБАЙТ = 1024 КИЛОБАЙТАМ И СООТВЕТСТВУЕТ ПРИМЕРНО 500 СТРАНИЦАМ ТЕКСТА,

1 ГИГАБАЙТ = 1024 МЕГАБАЙТАМ И СООТВЕТСТВУЕТ ПРИМЕРНО 2 КОМПЛЕКТАМ ЭНЦИКЛОПЕДИИ,

1 ТЕРАБАЙТ = 1024 ГИГАБАЙТАМ И СООТВЕТСТВУЕТ ПРИМЕРНО 2000 КОМПЛЕКТАМ ЭНЦИКЛОПЕДИИ.

Обратите внимание, что в информатике смысл приставок кило- , мега- и других в общепринятом смысле выполняется не точно, а приближенно, поскольку соответствует увеличению не в 1000, а в 1024 раза.

СКОРОСТЬ ПЕРЕДАЧИ ИНФОРМАЦИИ ПО ЛИНИЯМ СВЯЗИ ИЗМЕРЯЕТСЯ В БОДАХ.

1 БОД = 1 БИТ/СЕК.

В частности, если говорят, что пропускная способность какого-то устройства составляет 28 Килобод, то это значит, что с его помощью можно передать по линии связи около 28 тысяч нулей и единиц за одну секунду.

7. СЖАТИЕ ИНФОРМАЦИИ НА ДИСКЕ

ИНФОРМАЦИЮ НА ДИСКЕ МОЖНО ОБРАБОТАТЬ С ПОМОЩЬЮ СПЕЦИАЛЬНЫХ ПРОГРАММ ТАКИМ ОБРАЗОМ, ЧТОБЫ ОНА ЗАНИМАЛА МЕНЬШИЙ ОБЪЕМ.

Существуют различные методы сжатия информации. Некоторые из них ориентированы на сжатие текстовых файлов, другие - графических, и т.д. Однако во всех них используется общая идея, заключающаяся в замене повторяющихся последовательностей бит более короткими кодами. Например, в романе Л.Н.Толстого "Война и мир" несколько миллионов слов, но большинство из них повторяется не один раз, а некоторые- до нескольких тысяч раз. Если все слова пронумеровать, текст можно хранить в виде последовательности чисел - по одному на слово, причем если повторяются слова, то повторяются и числа. Поэтому, такой текст (особенно очень большой, поскольку в нем чаще будут повторяться одни и те же слова) будет занимать меньше места.

Сжатие информации используют, если объем носителя информации недостаточен для хранения требуемого объема информации или информацию надо послать по электронной почте

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

Читайте также: