Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Доклад: Прикладной или системный?

Название: Прикладной или системный?
Раздел: Рефераты по информатике, программированию
Тип: доклад Добавлен 04:52:34 03 апреля 2005 Похожие работы
Просмотров: 112 Комментариев: 20 Оценило: 5 человек Средний балл: 4.6 Оценка: неизвестно     Скачать

Евгений Каратаев

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

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

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

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

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

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

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

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

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

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

string func( string str)

{

int len = strlen( str.c_str());

for( int i = 0; i < len; i++)

str[i] = WinToKoi( str[i]);

}

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

string func( int sum)

{

if( sum < 10)

return "мало";

if( sum < 100)

return "нормально";

if( sum < 1000)

return "много";

return "оченьмного";

}

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

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

Кроме приведенного правила классификации кода на системный и прикладной следует обращать внимание на смешанный случай, существующий в явном виде при составлении функций, оперирующих визуальным представлением данных. При визуализации данных следует учитывать существование национальных стандартов представления данных, которые могут различаться так же и форматом представления. Например, при визуализации времени по российскому стандарту следует указывать час, минуту и секунду, а при визуализации по английскому стандарту следует дописывать еще и символы представления "AM/PM". Таким образом, код независящий от значения данных, начинает зависеть от контекста его работы, который есть данные. Еще более сложный случай - формирование визуализации строкового представления с применением особенностей языка, например "сумма прописью". К какой категории отнести такую функцию? Думаю, что к прикладной.

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

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита19:41:44 01 ноября 2021
.
.19:41:42 01 ноября 2021
.
.19:41:42 01 ноября 2021
.
.19:41:42 01 ноября 2021
.
.19:41:41 01 ноября 2021

Смотреть все комментарии (20)
Работы, похожие на Доклад: Прикладной или системный?

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

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



Результаты(294399)
Комментарии (4230)
Copyright © 2005 - 2024 BestReferat.ru / реклама на сайте