Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Федеральное агентство по рыболовству
Дальневосточный государственный технический
рыбохозяйственный университет
КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ
Рекомендовано Дальневосточным региональным учебно-методическим центром (ДВ РУМЦ) в качестве учебного пособия для студентов по направлению 260500 «Технология продовольственных продуктов специального назначения и общественного питания» для специальности 260505 «Технология детского и функционального питания», 260303 «Технология молока и молочных продуктов», 260202 «Технология хлеба, кондитерских и макаронных изделий», 260302 «Технология мяса и мясных продуктов», 260100 «Технология продуктов питания», 260602 «Пищевая инженерия малых предприятий», 260601 «Машины и аппараты пищевых производств» и направлению подготовки магистров 260100 «Технология продуктов питания» по специальности 260100.62 «Технология продуктов из водного сырья»
Владивосток 2009УДК ББК Авторский знак
Утверждено учебно-методическим советом Дальневосточного государственного технического рыбохозяйственного университета.
Компьютерное моделирование технологических процессов : учебное пособие / авторы: А. А. Мисаковский, А. В. Перебейнос – Владивосток : изд во Дальрыбвтуз, 2009.
Первые пять глав знакомят с основами компьютеров, программированием и языком программирования C#. Используя этот учебник, вы научитесь управлять компьютером, заставлять его делать то, что вам нужно…
В учебном пособие приводится описание различных операционных систем но моделирование ведется в среде Windows.
Рецензенты - к. т. н., доцент Дальрубвтуза, кафедры «Технологии продуктов питания» Н. Г. Тунгусов, к. т. н., доцент Дальрубвтуза, кафедры «Прикладной математикии» Немцев.
© Мисаковский А. А., Перебейнос А. В., 2009
© Дальневосточный государственный технический рыбохозяйственный университет, 2009
Предисловие
Использование компьютерного моделирования в технологии производства рыбных, мясных, хлебных и молочных продуктов позволяет быстро вычислить на каждом этапе технологические процесса расход сырья, задать режимы и получить с заданными характеристиками готовый продукт.
Поэтому в учебном пособие рассказано не только о способе программирования, но и сделан уклон как применить выбранный язык к технологическому процессу.
В было решено выбрать в качестве языка программирования C# (Си Шарп) так он начинает заменять С как один из языков разработки систем в промышленности и есть основания считать, что C# станет доминирующим языком.
Цель создать учебник по компьютерному моделированию технологических процессов сделан с уклоном на программированию C# для дисциплине по выбору у пищевых технологов, студентам без опыта программирования.
Учебное пособи имеет водный курс в операционных системах (ОС), основы программирования на С# и методы компьютерного моделирования технологических. В конце лекционного материала приводятся практические работы для закрепления курса. В написание учебного пособия использовались знания крупных зарубежных и русских программистов.
Добро пожаловать в первую главу этой книги — "Введение в С#"! Здесь рассматриваются основополагающие вопросы, необходимые для качала работы на С#. В первой главе дается общий обзор С# и .NET Framework, рассказывается, что представляют собой эти технологии, какие причины побуждают ими пользоваться и каким образом эти технологии соотносятся между собой.
Начнем мы с самого общего рассмотрения .NET Framework. Это новая технология, и она включает множество понятий, которые на первый взгляд кажутся хитроумными (так как .NET Framework использует принципиально новый подход к разработке приложений). Отсюда следует, что при обсуждении этой темы вам за короткий промежуток времени придется столкнуться с большим количеством новых понятий. Однако это неизбежно, поскольку знание основ крайне важно для понимания программирования на С#. В последующих главах многие из этих тем будут рассмотрены повторно и более детально,
Далее приводится упрощенное описание собственно языка С#; среди прочего будут рассмотрены его корни и черты сходства с C#.
Наконец, вы познакомитесь с основным инструментом, который будет использоваться на протяжении всей книги,— Visual Studio.NET (VS).
NET Framework — это новая и революционная платформа, созданная компанией Microsoft для разработки приложений.
Самым интересным в этом утверждении является его неопределенность, однако для этого имеются достаточно веские основания. Для начала обратите внимание на то, что в нем не говорится: "для разработки приложений в операционной среде Windows". И хотя первая версия .NET Framework работает под управлением операционной системы Windows, а дальнейшие планы компании входит создание версий, которые будут работать с другими операционными системами, такими как FreeBSD, Linux, Macintosh, и даже на устройствах, относящихся к классу персональных цифровых устройств (personal digital assistant, PDA). Один из основных мотивов создания данной технологии — то, что она предназначается для объединения разнородных операционных систем.
Более того, приведенное выше определение .NET Framework не содержит никаких ограничений относительно типов приложений, создание которых она поддерживает. Причина в том, что никаких ограничений не существует: .NET Framework допускает создание Windows-приложений, web-приложений, web-служб и многого-многого другого, что только можно себе представить.
Технология .NET Framework разрабатывалась таким образом, чтобы ее можно было использовать из любого языка программирования. Это справедливо и по отношению к предмету настоящей книги — С#, а также в отношении С+ + , Visual Basic, JScript и даже более старых языков, таких как COBOL. Для того чтобы добиться такого результата, пришлось создать специальные версии соответствующих языков: Managed C# (управляемый C#), Visual Basic.NET, JScript.NET и т. д.— с течением времени появляются все новые и новые. Но все эти языки обладают не только доступом к .NET Framework, но и возможностью взаимодействовать друг с другом. Совершенно нормальной является ситуация, когда разработчики используют в С# код, написанный на Visual Basic.NET, и наоборот,
Все это обеспечивает немыслимый доселе уровень гибкости и является одной из причин, по которой использование .NET Framework представляется таким перспективным.
Почему C #?
Эта книга будет занимательной для вас по нескольким причинам. Ваши сверстники за последние несколько лет, возможно, изучили С или Паскаль в качестве своих первых языков программирования. Вы же изучите и С, и C#! Как? Да просто потому, что C# включает в себя стандарт ANSI для С и добавляет к нему много нового.
Ваши сверстники, возможно, изучали методологию программирования, называемую структурным программированием. Вы изучите как структурное программирование, так и современную новейшую методологию — объектно-ориентированное программирование. Зачем надо изучать обе эти методологии? Мы определенно предвидим, что объектно-ориентированный подход будет ключевой методологией программирования во второй половине 90-х годов. В этом курсе вы построите многие объекты и будете с ними работать. При этом вы обнаружите, что внутреннюю структуру этих объектов часто лучше создавать с помощью техники структурного программирования. И логика оперирования объектами в ряде случаев выражается лучше с помощью структурного программирования.
Другая причина, по которой мы представляем здесь обе методологии, состоит в том, что в предстоящее десятилетие будет происходить массовый переход от систем, основанных на С, к системам, основанным на C#. На местах существует огромное так называемое «наследие программ на С». С использовался почти четверть столетия и в последние годы его применение стремительно росло. Но те, кто изучил C#, обнаруживают, что его возможности гораздо более мощные, чем у С, и они часто предпочитают переходить на C#. Они начинают переводить свои системы на C# и этот процесс достаточно ярко выражен. Затем они начинают использовать различные свойства C#, известные как «усовершенствования C# по сравнению с С», чтобы улучшить свой стиль написания своих С-подобных программ. Наконец, они начинают пользоваться возможностями объектно-ориентированного программирования на C#, чтобы в полном объеме реализовать преимущества этого языка.
Интересный феномен, наблюдаемый на рынке языков программирования, состоит в том, что многие из основных продавцов продают теперь комбинированный C/C++ продукт охотнее, чем предлагаемые отдельные продукты. Это предоставляет пользователям возможность продолжать программировать на С, если они того пожелают, а затем постепенно продвигаться в сторону C#.
C# имеет шансы стать основным языком разработки программ 90-х годов. Но может ли он быть объектом изучения в начальном курсе программирования — именно для такого курса предназначена эта книга? Мы думаем, что может. Два года назад мы приняли подобный вызов, когда Паскаль являлся основным языком в начальных курсах по вычислительной технике. Мы написали книгу «Как программировать на С» — родную сестру данной книги. Сотни университетов во всем мире используют теперь второе издание «Как программировать на С». Курсы, основанные на этой книге, доказали, что они столь же эффективны, как их предшественники, основанные на языке Паскаль. Между ними не наблюдалось никаких существенных различий, за исключением того, что студенты были более заинтересованы в изучении С, поскольку они знали, что предпочтительнее использовать С, чем Паскаль, и в последующих курсах, и для их будущей карьеры. Студенты, изучающие С, знали также, что они будут лучше подготовлены к изучению C#.
История
Язык C# развился из С, который в свою очередь был создан на основе двух предшествующих языков — BCPL и В. Язык BCPL был создан в 1967 году Мартином Ричардом как язык для написания компиляторов и программного обеспечения операционных систем. Кен Томпсон предусмотрел много возможностей в своем языке В — дубликате BCPL и использовал В для создания ранних версий операционной системы UNIX в Bell Laboratories в 1970 году на компьютере DEC PDP-7. И BCPL, и В были «нетипичными» языками — каждый элемент данных занимал одно «слово» в памяти и бремя обработки элемента данных, например, как целого или действительного числа падало на плечи программиста.
Язык С был развит из В Деннисом Ритчи в Bell Laboratories и первоначально реализован на компьютере DEC PDP-11 в 1972 году. С использует многие важные концепции BCPL и В, а также добавляет типы данных и другие свойства. Первоначально С приобрел широкую известность как язык разработки операционной системы UNIX. Сегодня фактически все новые операционные системы написаны на С или на C#. В течение двух последних десятилетий С стал доступным для большинства компьютеров. С независим от аппаратных средств. При тщательной разработке на С можно написать мобильные программы, переносимые на большинство компьютеров.
В конце 70-х годов С развился в то, что теперь относят к «традиционному С», «классическому С» или «С Кернигана и Ритчи». Публикация издательством Prentice-Hall книги Кернигана и Ритчи «Язык программирования Со привлекла широкое внимание к этому языку. Эта публикация стала одной из наиболее удачных книг по вычислительной технике за все время.
Широкое распространение С на различных типах компьютеров (иногда называемых аппаратными платформами) привело, к сожалению, ко многим вариациям языка. Они были похожи, но несовместимы друг с другом. Это было серьезной проблемой для разработчиков программ, нуждавшихся в написании совместимых программ, которые можно было бы выполнять на нескольких платформах. Стало ясно, что необходима стандартная версия С. В 1983 году при Американском Национальном Комитете Стандартов в области вычислительной техники и обработки информации был создан технический комитет X3J11, чтобы «обеспечить недвусмысленное и машинно-независимое определение языка». В 1989 году стандарт был утвержден. ANSI скооперировался с Международной Организацией Стандартов (International Standards Organizations — ISO), чтобы стандартизировать С в мировом масштабе; совместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899: 1990. Копии этого документа можно заказать в ANSI. Второе издание книги Кернигана и Ритчи, вышедшее в 1988 году, отражает эту версию, называемую ANSI С; эта версия языка используется теперь повсеместно.
Visual Studio.NET
В данной книге для разработки всех программ на С#, начиная от самых простых примеров использования командной строки и заканчивая более сложными типами создаваемых проектов, мы будем применять Visual Studio.NET (VS),
VS не является обязательным для создания приложений на С#, однако эта система существенно упрощает жизнь программиста. Конечно, мы можем (при желании) производить манипуляции над файлами с исходным кодом на С# с помощью обычного текстового редактора (вроде широко распространенного приложения Notepad) и компилировать код в модули с помощью компилятора командной строки, который является составной частью .NET Framework. Но зачем это делать, если имеется такой мощный инструмент, как VS?
Ниже приводится краткий перечень возможностейч УБ, благодаря которым эта система является наиболее привлекательным средством разработки в .NET;
□ VS автоматически выполняет все шаги, необходимые для компиляции исходного кода, и одновременно позволяет управлять всеми используемыми опциями, если мы пожелаем их переопределить,
□ Текстовый редактор VS настроен для работы с теми языками, которые поддерживаются VS (включая С#), поэтому он может интеллектуально обнаруживать ошибки и подсказывать в процессе ввода, какой именно код необходим,
□ В состав VS входят программы, позволяющие создавать приложения
в Windows Forms и Web Forms путем простого перетаскивания мышью элементов пользовательского интерфейса.
□ Многие типы проектов, создание которых возможно на С#, могут разрабатываться на основе "каркасного" кода, заранее включаемого в программу. Вместо того чтобы каждый раз начинать с нуля,
VS позволяет использовать уже имеющиеся файлы с исходным кодом, что уменьшает временные затраты на создание проекта.
□ В состав VS входит несколько вспомогательных программ, которые позволяют автоматизировать выполнение наиболее распространенных задач; причем многие из этих программ могут добавлять необходимый код в уже существующие файлы, так что программисту не придется беспокоиться (а в некоторых случаях н вообще вспоминать) о соблюдении синтаксических правил.
□ VS имеет большое количество мощных инструментов, благодаря которым можно просматривать отдельные элементы проекта или осуществлять
в них поиск, независимо от того, являются ли эти элементы файлами
с кодами на языке С# или представляют собой какие-либо иные ресурсы,
например, двоичные графические или звуковые файлы,
□ Распространять приложения в VS столь же просто, как и писать их:
VS облегчает передачу кода клиентам и позволяет им инсталлировать его без каких-либо проблем.
□ VS допускает использование совершенных методов отладки при разработке проектов: например, пошаговое выполнение кода, когда выполняется один оператор за раз, что дает возможность следить за текущим состоянием приложения.
И это далеко не все преимущества VS!
Решения VS
Когда мы используем VS для разработки приложений, то мы делаем это через создание решений. В терминах VS решение — это нечто большее, чем просто приложение. Решения состоят из проектов, среди которых могут быть "проекты Windows Forms", "проекты Web Forms" и т. д. Решения могут включать несколько проектов, что позволяет группировать логически взаимосвязанные части кода в одном месте, даже если они в действительности компилируются в разные модули, расположенные в различных местах на жестком диске. Такая возможность оказывается очень полезной, поскольку она позволяет работать над "разделяемым" кодом (который может быть помещен в кэш глобальных модулей) одновременно с приложениями, использующими этот код. Отладка программ оказывается намного легче, когда имеется единая среда разработки, в которой применяется пошаговое выполнение операторов в различных модулях,
Итоги
В данной главе было дано общее описание .NET Framework н рассмотрено, каким образом эта система упрощает разработку эффективных н гибких приложений, Вы познакомились с процессом превращения программ, написанных на таких языках, как С#, в работающие приложения, и узнали, выгоды можно извлечь из использования управляемого кода, запускаемого под управлением единой системы выполнения программ CLR.NET.
Также было рассказано, что представляет собой С#, какое отношение он имеет к .NET Framework, и дано описание инструмента, который будет использоваться для выполнения разработок на С#,— Visual Studio.NET.
В следующей главе мы с помощью VS создадим работающий код на С#; полученные при этом знания в дальнейшем позволят нам сконцентрироваться собственно на языке С# и не уделять излишнего внимания работе VS.
Введение в объектное ориентирование начинается с главы 1!
Большинство вузовских профессоров, которые будут учить по этой книге, преподавали процедурное программирование много лет (вероятно, на С или Паскале) и имеют, возможно, некоторый опыт преподавания объектно-ориентированного программирования. C# сам по себе не является чисто объектно-ориентированным языком. Скорее он является гибридным языком, дающим возможность и процедурного, и объектно-ориентированного программирования.
Так что мы выбрали следующий подход. Первые пять глав книги знакомят с процедурным программированием на C#. Они описывают принципы программирования, управляющие структуры, функции, массивы, указатели и строки. Эти главы освещают компоненты С ANSI в C# и усовершенствования С, сделанные в C#.
В главе 1 раздел «Размышления об объектах» знакомит с концепциями и терминологией объектной ориентации. Соответствующие разделы глав 2-5 представляют набор требований для создания серьезного проекта объектно-ориентированной системы, а именно — программы моделирования лифта, и проводят студента через типичные этапы процесса объектно-ориентированного проектирования. В этих параграфах рассматривается, как идентифицировать объекты в задаче, как определить атрибуты и функции объекта и как определить взаимодействия объектов. К тому времени, когда студент завершил главу 5, он (или она) уже провел тщательное объектно-ориентированное проектирование модели лифта и готов, если не жаждет, начать программирование лифта на C#.
Об этой книге
Книга «Как программировать на C#» содержит богатый набор примеров, упражнений и проектов, взятых из различных областей, чтобы дать студенту возможность решать действительно интересные и жизненные задачи.
Книга решает прежде всего задачи обучения. Например, фактически по каждой новой теме как C#, так и объектно-ориентированного программирования, приводится законченная рабочая программа на C# и тут же показывается результат ее выполнения. Чтение этих программ весьма похоже на их ввод в компьютер с последующим прогоном.
Упражнения варьируются от простых вопросов на повторение пройденного до серьезных задач программирования и крупных проектов. Преподаватели, ищущие темы для курсовых проектов, найдут много подходящих задач в упражнениях глав 3-18.
Имеется пособие для преподавателя на дискетах в форматах PC и Макинтош с программами, встречающимися в основном тексте, и ответами на почти все вопросы, помещенные в конце глав (к данному изданию эти дискеты не прилагаются — прим. ред.).
При написании этой книги мы использовали варианты компиляторов C#, работающие на рабочих станциях Sun SPARCstation, компьютерах Apple Macintosh (Symantech Си++), IBM PC (Turbo C#, Borland C#, CSET++ фирмы IBM и Microsoft C/C++ версии 7 и Visual C#) и DEC VAX/VMS (DEC C#). Большая часть программ из текста книги будут работать на всех этих компиляторах при незначительной их модификации или вовсе без таковой. Мы публикуем версии, разработанные нами на Borland C#.
План
План главы помогает студенту обозреть весь изучаемый материал. Это также помогает студенту знать, что будет далее, и выбрать удобный и эффективный темп обучения. [Мелочи: книга содержит 2132722 печатных символа и 342980 слов.]
Возможности C# иллюстрируются рядом законченных рабочих программ на C#. Тут же показываются результаты выполнения этих программ. Это позволяет студенту убедиться, что программы работают, как ожидалось. Сопоставление результатов с операторами программы, дающими эти результаты, является отличным путем изучения и укрепления знаний. Наши программы демонстрируют различные особенности C#. Внимательное чтение книги во многом похоже на набор и прогон этих программ на компьютере.
По нашему опыту, научить студентов написанию ясных, понятных программ — это едва ли не наиболее важная задача первого курса программирования.
Так что сегодня делается большой упор на мобильность, то есть на способность программного обеспечения работать на разнообразных компьютерных системах при незначительном его изменении или даже вообще без изменений. Многие рекламируют C# как язык, подходящий для разработки мобильного программного обеспечения, основываясь на том, что C# тесно связан с С ANSI, и на том, что скоро появится стандартная версия C# ANSI. Некоторые считают, что если они разработали прикладную программу на C#, то она автоматически будет мобильной. Это просто не соответствует действительности. Достижение мобильности требует аккуратного и осторожного проектирования. На этом пути есть много «подводных камней».
Резюме
Каждая глава заканчивается дополнительным педагогическим приемом резюме. Мы представляем в виде списка основные итоги главы. Это помогает студентам просмотреть и закрепить ключевые вопросы данной главы.
Терминология
Мы включаем в каждую главу раздел «Терминология» с алфавитным списком важных терминов, определения которых даны в главе, для их дальнейшего закрепления.
525 заданий для самопроверки и ответов на них (при счете учтены отдельные части заданий)
Задания для самопроверки и ответы на них включены в книгу для целей самообучения. Они дают возможность студенту обрести уверенность в знании материала и подготовиться к основным упражнениям. 763 упражнения (решения в пособии преподавателя; при счете учтены отдельные части заданий) Каждая глава завершается большим набором упражнений, включающих:
• простое напоминание важных терминов и принципов;
• написание отдельных операторов на C#;
• написание небольших функций и классов на C#;
• написание законченных функций, классов и программ на C#;
• написание крупных курсовых проектов.
Большое количество упражнений позволяет преподавателям приспосабливать свои курсы к потребностям конкретной аудитории и варьировать курсовые задания каждый семестр. Преподаватели могут использовать эти упражнения для составления домашних заданий, кратких опросов и проведения экзаменов. Книга разделена на несколько крупных частей. Первая часть — главы с 1 по 5, представляет собой детальное изложение процедурного программирования на C#, включая типы данных, ввод-вывод, управляющие структуры, функции, массивы, указатели и строки.
Обзор книги
Теперь давайте рассмотрим каждую главу в отдельности.
Глава 1, «Введение в C#», объясняет, что такое компьютер, как он работает и программируется. Глава знакомит с понятиями структурного программирования и объясняет, почему этот набор методик произвел революцию в разработке программ. В главе дается краткая история развития языков программирования от машинных до языков ассемблера и языков высокого уровня. Рассматривается происхождение языка C#. Глава включает знакомство с типичной средой программирования на C# и дает сжатое введение в технику написания программ на C#. Приводится подробное рассмотрение принятия решений и арифметических операций, представленных в C#. После изучения этой главы студент станет понимать, как писать простые, но законченные программы на C#.
Глава 2, «Управляющие структуры», знакомит с понятием алгоритма решения задачи. Объясняется важность эффективного использования управляющих структур в создании программ, которые понятны, легко отлаживаются, поддерживаются и с большой вероятностью работают с первой попытки. Глава знакомит со структурами следования, выбора (if, if/else и switch) и повторения (while, do/while и for). В ней подробно исследуется повторение и сравниваются варианты циклов, управляемых счетчиком и меткой. Глава объясняет методику нисходящей пошаговой детализации, которая является ключевой для создания хорошо структурированных программ, и представляет популярное средство построения программ — псевдокод. Методы и подходы, используемые в главе 2, способствуют эффективному применению управляющих структур в любом языке программирования, а не только в C#. Эта глава помогает студенту выработать навыки качественного программирования в преддверии более серьезных задач, с которыми он встретится далее. Глава завершается рассмотрением логических операций && (И), || (ИЛИ) и ! (НЕ).
Введение
Добро пожаловать в C#! Мы немало поработали над созданием для вас книги, которая, как мы надеемся, достаточно информативна, занимательна и поучительна. C# трудный язык, который может быть глубоко изучен только опытными программистами, так что эта книга уникальна среди учебников по C#:
• Она предназначена для специалистов технической ориентации с небольшим опытом программирования или вообще без такового.
Она предназначена для опытных программистов, которые хотят проработать язык более глубоко.
ВВЕДЕНИЕ В КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ
Цели
- понять структуру вычислительной техники
- изучить операционные системы
- познакомиться с компьютерным языком
- План
- о компьютере
- операционная система Windows
- операционная система Linux
- язык программирования C#
- среда для моделирования технологических процессов
- требования к аппаратным средствам
1.1 О компьютереКомпьютер - это прибор, способный производить вычисления и принимать логические решения в миллионы или даже миллиарды раз быстрее человека. Например, многие из современных персональных компьютеров могут выполнять десятки миллионов операций сложения в секунду. Человеку, работающему с настольным калькулятором, потребовались бы десятилетия для того, чтобы завершить тот же самый объем вычислений, который мощный персональный компьютер выполняет за одну секунду. (Информация к размышлению: Как вы могли бы узнать, правильно ли человек сложил числа? Как вы могли бы узнать, правильно ли компьютер сложил числа?) Сегодняшние самые быстрые суперкомпьютеры могут выполнять сотни миллиардов операций сложения в секунду — это примерно столько же, сколько сотни тысяч людей могут выполнить за год. А в исследовательских лабораториях уже функционируют компьютеры с быстродействием в триллионы операций в секунду.
Компьютеры обрабатывают данные под управлением наборов команд, называемых компьютерными программами. Эти компьютерные программы направляют действия компьютера посредством упорядоченных наборов действий, описанных людьми, называемыми компьютерными программистами.
Разнообразные устройства (такие как клавиатура, экран, диски, память и процессорные блоки), входящие в состав компьютерной системы, называются аппаратными средствами. Компьютерные программы, исполняемые компьютером, называются программным обеспечением. Стоимость аппаратных средств в последние годы существенно снизилась и достигла уровня, когда персональные компьютеры превратились в предмет массового потребления. К сожалению, стоимость разработки программного обеспечения неуклонно росла, так как программисты создавали все более мощные и сложные прикладные программы, не имея средств улучшить технологию их разработки. В этой книге вы изучите апробированные методы создания программного обеспечения, которые могут снизить его стоимость структурное программирование, нисходящую пошаговую детализацию, функционализацию и объектно-ориентированное программирование.
Компьютеры, которые 25 лет назад занимали большие помещения и стоили миллионы долларов, ныне могут быть вписаны в поверхность кремниевых микросхем, размером меньших ногтя на пальце и стоящих, возможно, всего несколько долларов каждая. Ирония судьбы заключается в том, что кремний является одним из наиболее распространенных на земле материалов — он входит в состав обычного песка. Технология кремниевых микросхем сделала вычисления настолько экономичными, что во всем мире используется около 200 миллионов компьютеров общего назначения, помогающих людям в бизнесе, производстве, управлении и личной жизни. За несколько лет это число может легко удвоиться.
Когда мы говорим о компьютере, первое, что мы представляем - это металлический ящик, обвешанный проводами. Или - компактный ноутбук в «дипломате». Во всех случаях мы правы, и во всех случаях делаем одну и ту же ошибку. Ведь каким бы модным, умелым и мощным не был компьютер, сама по себе эта куча металла, пластика и кремния не умеет ничего. «Железо» - «плоть» компьютера. А его дух - программное обеспечение, которое, собственно, и заставляет процессорное сердце компьютера биться с чудовищной скоростью, гоня по железным «венам» цифровую кровь.
Но и сами программы довольно беспомощны - всем им нужен некий посредник, который позволял бы работать с компьютерным железом. Сколько бы ни было в компьютере программ, всем им необходима единая ПЛАТФОРМА. Единый, общий язык, на котором они смогут общаться с компьютерным «железом» с одной стороны и с пользователем - с другой. Помощник, который снимет с их плеч решение самых распространенных проблем. Им нужнаоперационная система!
1.2 Операционная система WindowsСама операционная система (ОС) - это своего рода буфер-передатчик между компьютерным железом и остальными программами. ОС принимает на себя сигналы-команды, которые посылают другие программы, и переводит их на понятный машине язык. ОС управляет всеми подключенными к компьютеру устройствами, обеспечивая доступ к ним другим программам. Наконец, ОС - обеспечить человеку-пользователю удобство работы с компьютером.
Первыми удачными версиями Windows считаются 3.1 и 3.11 (с поддержкой сетевого режима) рис.1.1, увидевшие свет в 1992-1993 годах. Однако впервые Windows приблизилась к своему нынешнему облику лишь через два года, с выходом по-настоящему революционной системы Windows 95.
Рис. 1.1. Первая ОС от Microsoft Windows 3.1 (дата выхода 18 марта 1992)
Впрочем, еще в 1993 году Microsoft начала работу над новой линейкой ОС, построенных на принципиально новом ядре. Ее основателем стала операционная система Windows NТ, рассчитанная на профессионалов и корпоративных пользователей. Несмотря на то, что интерфейс NT не слишком отличался от других версий Windows, устроена она была совершенно иначе - с большим упором на стабильность. Для новой ОС была даже разработана новая защищенная файловая система NTFS (NT File System).
Оба варианта Windows развивались параллельно вплоть до конца столетия. В двадцать первый век человечество должно было войти уже с новой системой...
С самого начала разработчики Vista дали понять, что их детище будет не очередным «латанием» старой ОС, а чем-то принципиально новым. Отчасти так и вышло -были полностью переработаны даже те элементы интерфейса, которые оставались неизменными со времен Windows 95. Другим стало и ядро системы - более надежным и стабильным. Улучшилась поддержка нового «железа». Обновились и традиционные программы - например, Internet Explorer. Привычный почтовый клиент Outlook Express уступил место новой программе под названием Почта Windows.
Наконец, новая Windows впервые стала по-настоящему интернациональной: выпуск отдельных версий для каждого языка ушел в прошлое, а превратить Vista из англоязычной в русскоязычную стало возможно, просто скачав с сайта Microsoft специальное дополнение. Модернизации подверглось всё, начиная с процедуры установки и заканчивая внешним видом меню Пуск. Пожалуй, последний раз столь кардинальную перелицовку старого «костюма» мы видели лишь при переходе с Windows 3.1 на Windows 95...
Основные преимущества Windows Vista:
Windows Vista действительно стала более защищенной рис. 1.2: ее оболочка и драйверы устройств окончательно отделены от ядра. Собственно, отчасти это было сделано еще в Windows ХР, но в Vista риск «положить» всю систему из-за сбоя очередного драйвера гораздо ниже. Кроме того, в Windows Vista появилась система UAC (User Account Control), которая, в теории, должна была надежно защитить компьютер от вторжения шпионских программ, вирусов и «троянов». С этой благой целью пользователь в Vista был несколько понижен в правах: если после установки ХР вы тут же становились «Администратором» и получали полный контроль над системой, то в Vista вы - всего лишь рядовой пользователь, и доступ к системным файлам для вас закрыт. К тому же при запуске новой программы вам необходимо подтвердить, что она безопасна для компьютера, и вы используете ее в относительно здравом уме и полностью осознавая последствия этого шага.
Наконец, в Vista Ultimate включена система шифрования диска BitLocker - возможно, это оценят бизнесмены, на которых эта дорогостоящая модификация и рассчитана. Но шифровать жесткий диск домашнего компьютера, на котором нет никакого криминала? К тому же для шифрования диска существует множество бесплатных программ на базе алгоритма PGP.
Трехмерный интерфейс Aero. Красиво, ничего не скажешь - все эти объемные тени, выпуклые бочонки значков, трехмерное меню переключения окон. Не сделать этого Microsoft просто не могла, ведь основные конкуренты Windows - MacOS и Linux -обзавелись этими игрушками уже давно. Другое дело, стоит ли эта красота существенного снижения производительности?
Расширенная система управления памятью. Фирменная «примочка» Ready Boost способна серьезно повлиять на скорость работы системы за счет кэширования файлов - но только при большом объеме оперативной памяти (2 Гб и выше). При меньшем количестве памяти выигрыша практически не дает. В Vista используется и другая технология - SuperFetch, позволяющая увеличить быстродействие системы за счет использования дополнительной флэш-памяти. Что ж, резон в этом есть: 4-гигабайтный флэш-брелок стоит столько же, сколько гигабайт обычной оперативки - хотя отнюдь не является конкурентом последней по скорости. Но некоторый выигрыш в производительности эта система все же дает - на «слабых» компьютерах, оснащенных 512-1024 Мб оперативки. Хотя рациональность установки Vista на такие компьютеры вообще сомнительна.
Рис. 1.2. Windows Vista (дата выхода 8 ноября 2006)
Улучшенная поддержка нового «железа» , 64-разрядных процессоров и большого объема памяти. Крыть тут противникам Vista нечем: качество 64-разрядной версии ХР было ниже всякой критики. Мощь современных многоядерных процессоров может по-настоящему использовать лишь Vista. Правда, взамен мы получаем море проблем не только со старым, но и новым «железом», для которого производители так и не удосужились написать новые драйверы: например, покупатели дорогостоящих звуковых карт от Creative вынуждены были ждать полноценных драйверов аж до осени 2007 года!
Улучшенная система поиска. Значительно улучшился механизм поиска файлов: в отличие от невероятно медленного поиска в Windows ХР, которым мог пользоваться только отъявленный мазохист, выуживать из общей кучи нужные файлы в Vista довольно просто. Значительно изменился Проводник - теперь в нем присутствуют специальные поля для быстрой сортировки и фильтрации файлов. Однако до возможностей таких программ (подчеркну - бесплатных!) как Google Desktop или Персональный поиск от Яндекса ей по-прежнему далеко, как до луны.
Панель Гаджетов, на которую можно вынести множество программ-информаторов (трехмерные часы, миниатюры фотографий из папки Документы, индикаторы загрузки процессора и т. д.). Кроме стандартных программ на Sidebar можно добавить множество мелких программ-гаджетов (их начали активно разрабатывать еще задолго до официального выпуска Vista). Эту «фишку» Microsoft пыталась добавить к Windows еще пять лет назад: прототип нынешнего Sidebar входил в одну из первых версий Microsoft Plus! Тогда новинку пользователи отвергли, но теперь от навязчивой панели будет просто некуда деться. Мило -но совершенно бесплатно и в большем количестве все это есть в уже упомянутой программе Google Desktop.
Центр Настройки и новая Панель управления . Для пользователей-новичков это действительно ценный подарок: благодаря этим программам настраивать систему стало гораздо проще. Опытным же «юзерам» эти надстройки, правда, могут показаться слишком перегруженными и помпезными...
Улучшенная поддержка мобильных устройств (центр Windows Mobile). Одно из самых больших преимуществ Vista - правда, оценить его смогут лишь владельцы карманных компьютеров и смартфонов на платформе Windows Mobile.
Вообще-то поначалу Microsoft обещала нам гораздо больше, однако часть заявленных новинок так и не была воплощена в жизнь. Шумно разрекламированный трехмерный интерфейс оказался НЕ СОВСЕМ трехмерным, а файловая система WinFS будет поставляться лишь в качестве опции (по-видимому, с ней смогут работать и пользователи Windows ХР).
Системные требования Windows Vista (мы говорим о РЕАЛЬНЫХ требованиях, а не о тех, что рекомендует сама Microsoft) скромными не назовешь:
■ Процессор - двухядерный, с частотой от 2 ГГц.
■Память - от 2 Гб.
■Видеоплата (в игровом компьютере) - с поддержкой DirectX 10 (GeForce 8 и старше).
■ Жесткий диск - от 100 Гб (только для себя система забронирует около 10 Гб, плюс вдвое больше - для необходимых программ).
Это не значит, что более слабая машина под Vista работать откажется, совсем нет. Другой вопрос - насколько комфортной и удобной будет эта работа.
Модификации Windows Vista:
Starter Edition. Версия с минимальными функциями - отсутствует трехмерный интерфейс, позволяет запускать не более трех программ, практически не содержит средств для работы в Сети. Словом - скорее бесплатная «демонстранта», чем полнофункциональная версия. Потребительская стоимость - 0 руб., магазинная – 1000-1500 руб.
Home Basic Edition . Базовая версия. Не слишком далеко ушла от Starter правда, в составе Windows появился Internet Explorer 7 и модуль защиты Defender... Трехмерный интерфейс Aero по-прежнему отсутствует. Обычно поставляется вместе с готовыми компьютерами и ноутбуками, но продается и отдельно (цена - около 3000 руб).
Home Premium Edition . Расширенная (а точнее сказать, полноценная) домашняя версия, включающая дополнительные функции Windows Медиацентр (поддержка телевидения высокой четкости - HDTV, запись телепрограмм и создание DVD), Фотоальбом, Родительский контроль и - наконец-то! - трехмерный интерфейс Aero! Цена - около 5000 руб за «коробочную» версию.
Business Edition . Для использования в офисе корпоративных пользователей. Возможна работа в режиме сервера, расширенные возможности работы в локальной корпоративной сети, шифрование данных, резервное копирование дисков. Зато мультимедийных функций в системе практически нет. Цена - 7000 руб.
Enterprise Edition . Расширенная «бизнес-версия». Совместима с Virtual PC. Добавлены механизмы шифрования данных, многоязычный интерфейс.
Ultimate Edition . Для самых продвинутых и требовательных индивидуальных пользователей. Сочетает преимущества домашней и бизнес-версии, а также содержит новые модули типа программы для шифрования жесткого диска (BitLocker). Кроме того, для Ultimate выпущены невероятно полезные программы-дополнения, например Dreamscene. Цена - 9000 руб.
Каждая версия существует еще в двух модификациях - 32 и 64-битной. На современный компьютер с процессором AMD х2 или Intel Core2Duo можно ставить любую версию (эти процессоры поддерживают оба режима). Принципиальная разница лишь в объеме поддерживаемой памяти.
Если в системе более 2 Гб оперативки - ставьте 64-разрядную версию (теоретически 32-битная Vista способна поддерживать до 4 Гб оперативной памяти, однако на деле проблемы начинаются уже при вдвое меньшем объеме). К тому же эта модификация может задействовать процессор по максимуму, что сказывается на скорости работы в «тяжелых» приложениях. Правда, имеются проблемы с драйверами, в особенности для старого «железа» - найти драйвер для 32-разрядной версии гораздо проще. Да и многие программы работать с 64-разрядной Vista отказываются наотрез.
Вообще же новая политика Microsoft, которая почему-то считает владельцем Windows не вас лично, а ваш компьютер, ничего кроме недоумения и чувства протеста вызвать у нормальных людей не может...
Помимо высокой цены, у Vista есть еще масса других проблем - она «дружит» далеко не со всеми программами, в интерфейсе у новой ОС масса недоработок и несуразностей. И, кончено же, ее аппетиты отнюдь не соответствуют тем преимуществам, которые она РЕАЛЬНО предоставляет пользователю. Но ведь то же самое происходило на первых порах и с ХР, а сегодня, после выпуска пакета обновлений Service Pack 1 для Vista, многие ее недостатки наконец-то устранены. Так что если вы покупаете новый компьютер именно сейчас, в конце 2007 - начале 2008 года - смело ставьте Vista: все равно нам с вами никуда от нее не деться...
Правда, прощание с ХР явно затянется - в отличие от домашних пользователей крупные организации не спешат бросаться в омут Vista с головой. Более того, на первых порах в ряде компаний и госучреждениях США существовал прямой запрет на установку Vista, а кое-где он существует и по сей день. Так что ситуация «двоевластия» (дома - Vista, на работе, в школе и в институте - ХР) продлится еще минимум два года... А к этому времени, возможно, Microsoft успеет разродиться новой ОС, известной сегодня под кодовым названием Vienna...
Windows 7 (ранее известная под кодовыми названиями Blackcomb и Vienna) — название новой операционной системы семейства Windows, последующей за Windows Vista [1], которая предположительно должна выйти в конце 2009 г рис. 1.3.
Рис. 1.3. Windows 7 Beta 6.1.6956 (тестовая версия 12 декабря 2008)
В состав Windows 7 должны войти некоторые разработки, исключенные из Windows Vista как и новшества в интерфейсе и встроенных программах. Windows 7 должна стать новым шагом в развитии операционных систем Microsoft.
Windows 7 будет обладать поддержкой multitouch-мониторов. Эта возможность была продемонстрирована [2] Microsoft на ежегодной конференции TechEd'08 в Орландо. В ходе демонстрации использовалась сборка 6.1.6589, а также опытная модель ноутбука с multitouch-экраном. По некоторым данным в Windows 7 будет частично реализован функционал, запланированный в Longhorn (она же Vista). Также планируется более тесная интеграция с программами и сервисами Windows Live.
Считается, что преемниками Windows Vista будут разрабатываемые клиентская и серверная версии Windows 7, ожидающиеся в 2009—2010 годах.
Согласно Paul Thurrott, Milestone 3 (сборка 6780) была разослана сотрудникам и близким партнерам Microsoft в первой неделе Сентября 2008. Mary Jo Foley из ZDNet [7] и Stephen Chapman из UX Evangelist [8] описали сборку визуально и функционально схожей с Windows Vista, однако некоторые встроенные приложения теперь имели «Ribbon» интерфейс, как в Office 2007. Были удалены множество приложений, встроенных в предыдущие версии Windows (такие как: Календарь, Фотоальбом, Mail, Meeting Space и Movie Maker). Эти приложения доступны для загрузки в Windows Live.
В конце декабря 2008-го в Сеть утекла очередная тестовая версия, пронумерованная как build 7000. Считается, что именно эта сборка будет распространена среди зарегистрированных тестеров компании как первая официальная бета новой системы, Windows 7 Beta 1.[12]
Некоторые другие функции, первоначально запланированные в Windows Vista могут быть реализованы в Windows 7.
Для Windows 7 Microsoft взяла интерфейс Vista Aero и модернизировала его, хотя он не имеет ничего общего со слухами о новом интерфейсе с кольцом команд на экране. Отнюдь, интерфейс поддерживает новую "Панель задач/Taskbar" которая сочетает кнопки запуска приложений, наиболее часто используемых, с иконками приложений, уже запущенных, так что вам не придётся переключаться между панелью задач, меню "Пуск/Start" и панелью "Быстрого запуска/Quick Launch". Вы может переносить иконки в меню "Пуск/Start" из него, а также выбирать желаемый порядок иконок, не зависящий от порядка, в котором вы запускали приложения. Версия пре-бета "milestone 3", которую Microsoft дала разработчикам, посетившим Professional Developer Conference, не имеет новой панели задач, однако новый интерфейс присутствует в более новом внутреннем билде, который нам тоже показали. Располагать окна стало легче; просто перетащите окно на верхнюю часть экрана, и оно максимально раскроется; переместите окно на край экрана, и оно закроется наполовину, чтобы облегчить процесс копирования/вставки.
В Windows Vista появился быстрый просмотр приложений в панели задач, который выводит уменьшенный экран работающего приложения, стоит только навести на него курсор мыши. Хотя, конечно, вы получите только приблизительное представление о том, что в данный момент делает программа. Все уменьшенные экраны были одного размера, и приложение, развёрнутое на весь рабочий стол, имело такой же размер экрана, что и, например, индикатор копирования. Windows 7 пошла намного дальше. Приложения получили собственные места на панели задач, и теперь вы можете навести курсор мыши на уменьшенный экран, чтобы просмотреть его в полном размере. Если окно вам больше не требуется, вы можете закрыть его из предварительного просмотра - без переключения в само приложение. Со вкладками Internet Explorer обошлись точно так же, каждая вкладка выводится отдельно.
Новой функцией в Windows 7 стали Jump Lists (списки перехода?) которые делают иконки панели задач более продуктивными, расширяя функцию "Недавние документы" в XP и Vista путём её привязки к отдельным приложениям. Щелчок правой клавиши мыши по иконке Word показывает самые свежие документы, которые вы редактировали. При этом Word может не меняться - за все эти функции отвечает Windows 7. Jumps Lists есть как у иконок в панели задач, так и в приложениях меню "Пуск/Start". Но если приложения написаны с учётом работы под Windows 7, то Jump Lists становятся ещё более мощными. Media Player получил опцию перезапуска плей-листов, а Explorer отображает историю и наиболее часто посещаемые web-сайты.
Многие годы Media Player входит в состав Windows. Работа с ним под Vista и XP была примерно одинаковой: запускалось "тяжёлое" приложение, которое интенсивно нагружало процессор, занимало много места на экране и в памяти даже для того, чтобы проиграть несколько простых мелодий. Windows 7 использует новый подход с "лёгким" мини-плеером, который можно запустить иконкой с панели задач; он замещает мини-панель Media Player в XP и Vista. Вы можете использовать его для предварительного просмотра фильмов и фотографий, или для управления музыкой, которая играет на вашем компьютере. Если вы подключены к сетевой домашней группе (HomeGroup) вы сможете использовать мини-плеер внутри Explorer при поиске музыки в музыкальной коллекции.
Меню "Пуск/Start" Windows 7 вернулось к двум панелям Windows XP, и если приложение использует стандартную опцию "Most Recent Documents/Недавние документы", оно автоматически выводит Jump List в меню "Пуск" так же хорошо, как и на панели задач. Так, у Paint и Internet Explorer есть Jump Lists, но у Outlook нет. По теории Microsoft, вы не будете очень часто пользоваться Explorer, поскольку вы будете получать список недавних документов в Jump Lists, но если вы всё таки запустите Explorer, вы сразу же можете перейти к папкам, которыми вы пользуетесь чаще всего (Frequent) или к папкам, которые вы открывали в последние несколько дней (Recent).
Идея Jump lists также используется и в новой функции "View Available Network/Просмотр доступных сетей". Вместо прохода через многие диалоги подключения, чтобы подсоединиться к беспроводной сети, теперь можно быстро выбрать нужную беспроводную сеть из значка беспроводных подключений в трее. Всё, что вам требуется - выбрать сеть, которую вы хотите использовать, после чего нажать клавишу "Connect/Подключиться". Если нужно ввести сетевой ключ защиты, то будет предложен соответствующий диалог, а если нужно войти через web-страницу, то на ней вы и окажетесь. Тот же самый список позволяет подключаться к мобильным широкополосным сетям через 3G-модем или к корпоративным VPN-сетям.
Не знаю, может быть, при наличии нужного видеодрайвера система поразила бы меня визуальными эффектами. Система достаточно шустра и отзывчива. После загрузки ОС зарезервировала около 480Мб оперативной памяти.
Гаджеты нынче интегрированы в оболочку Explorer. Можно щелкнуть на рабочем столе и выбрать "Add Gadget" или "Hide Gadget". Появился новый гаджет "Windows Media Center", отображающий информацию о воспроизводимой в WMC мультимедиа. В том же самом меню "Display" добавлен пункт "Personalization", который позволяет настроить DPI. Стоит отметить, что данный апплет стал гораздо более удобным, нежели в Vista.
Справа от элементов меню Start теперь отображены так называемые кнопки (прим. редактора - в смысле канцелярские). И щелчок по кнопке позволяет закрепить/открепить данный элемент. Функция поиска в Explorer теперь показывает, где производится поиск. Кроме того, появилась возможность изменения размеров поля для поиска.
В папке Fonts появились XAML-шрифты, иначе называемые композитными - "Composite Fonts". Возможно, что в данном релизе WPF будет более ощутим. Действительно огорчает, что мне не удалось оценить Aero, поскольку вполне возможно, что с включенным Aero эта сборка казалась бы симпатичнее. Добавлено новое приложение "XPS Viewer".
Теперь самое интересное: утилита для отправки отзывов. В утилите указаны так называемые "столпы" (jn англ. pillars) Windows 7. В данном релизе Microsoft намерена провести тонкую настройку как в случае с XP, а не щеголять техническими нововведениями как в случае с с Windows 2000. В Windows 7 появится функция "Network Aware", определяющая в какой сети находится пользователь и соответственным образом переключать настройки и устройства. В случае наличия учетной записи Live, станет возможным экспортировать настройки и избранное IE. Появится функция кэширования данных гаджетов, новый калькулятор, Paint и Wordpad, созданный с помощью WPF. Установка системы должна занимать не более 10 минут и требовать всего лишь одну перезагрузку. Все описания приведены на базе готовых сценариев, поэтому во что это выльется, мы узнаем лишь потом.
О, как же я мог забыть про это. Наконец-то, дождались нового бутскрина. Полноэкранный логон-скрин из Vista в качестве бутскрина с бегущей полосой в самом низу экрана. Выглядит неплохо, но лично мне напомнило о временах Win9x (поскольку с момента релиза XP мы только и видели темные тона бутскрина, а тут столь яркий бутскрин)!" - Сообщает TheVista
1.3 Операционная система LinuxLinux начался с Линуса Торвальдса в 1991 году, как персональный проект. Линус пытался найти способ запуска Unix-подобной операционной системы без существенных материальных затрат. В дополнение к этому он хотел изучить подробности ввода и вывода 386-го процессора. То что получилось он выложил для бесплатного в терминах GNU General Public License для использования с возможностью модификации всем желающим.
Сегодня Linux вырос в одного из основных игроков на рынке операционных систем. Он портирован на большое число различных процессорных архитектур, включая Compaq-овский Alpha, Sun-овские SPARC и UltraSPARC а так же на Motorola PowerPC чипы (например, на компьютеры Aple Macintosh и IBM RS/6000). Linux сейчас разрабатывается сотнями, если не тысячами программистов со всего мира. В нём работают такие программы, как Sendmail, Apache и BIND, которые являются наиболее распространёнными серверными программами в Интернет.
На самом деле, термин ''linux'' относится только к ядру - центру операционной системы. Ядро ответственно за управление процессором, памятью, жёсткими дисками и периферийными устройствами. Это на самом деле всё, делает что Linux. Он контролирует работу компьютера, и следит за тем, чтобы все программы работали. Все те программы, которые делают Linux пригодным к использованию, разработаны независимыми группами. Ядро и программы связываются вместе различными компаниями и людьми, чтобы организовать операционную систему. Мы называем это дистрибутивом Linux рис. 1.4.
Рис. 1.4 Linux ноябрь 1999 г [1]
История операционной системы Linux началась, естественно, с создания операционной системы Unix. В конце 60-х годов завершился проект Multics, над которым работали сотрудники компаний General Electrics, AT&T Bell Laboratories и Массачусетского института. Результатом этого проекта стала одноименная операционная система. Операционная система Multics была многозадачной, имела высокоэффективную на то время файловую систему, а также предоставляла пользователям относительно удобный интерфейс.
В 1969 году Кен Томпсон разработал операционную систему Unix, в основе которой были принципы, которых придерживались разработчики операционной системы Multics. Новая операционная система, в отличие от Multics, могла работать на мини-ЭВМ. При этом с самого начала новая система была многозадачной и многопользовательской.
Вскоре операционная система Unix стала настолько популярной, что Кен Томпсон и Деннис Ритчи решили переписать код системы на языке С. До этого операционная система была написана на ассемблере. Это обеспечило огромною мобильность операционной системы — ОС Unix могла быть перенесена практически на любую платформу без перепрограммирования. Нужно было только модифицировать небольшую часть ядра, написанную на ассемблере.
Через определенное время операционная система Unix стала стандартным программным продуктом, который распространялся многими компаниями, включая IBM и Novell.
В 1972 году началась массовая продажа лицензий на эту операционную систему различным пользователям. С этого момента ОС Unix неофициально стала коммерческим программным продуктом.
Калифорнийский университет в Беркли также приобрел лицензию на ОС Unix. Специалисты этого университета внесли много изменений, которые вскоре стали стандартными. В 1975 году Калифорнийский университет выпустил свою версию Unix -- Berkeley Software Distribution (BSD). Эта операционная система стала основным конкурентом операционной системы, разработанной компанией AT&T.
Постепенно другие компании, последовав примеру Калифорнийского университета, начали выпускать свои версии Unix. Например, в 1980 году компания Microsoft выпустила ОС Xenix. Правда, данная операционная система не могла составить конкуренцию Unix, так как не поддерживала многопользовательский режим, а была предназначена для одного пользователя.
В 1982 году компания AT&T выпустила версию Unix System 3. Это была первая официальная коммерческая версия ОС Unix. Следующей версией стала Unix System V. Помимо различных нововведений, эта версия отличалась серьезной технической поддержкой.
Разработчики BSD Unix также не сидели сложа руки и в 1983 году Калифорнийский университет выпустил версию Unix BSD 4.2. Эта операционная система содержала довольно мощные средства управления памятью, файлами, печатью, а также в ней был реализован протокол TCP/IP, который сейчас во всю применяется в сети Интернет. Многие фирмы-производители выбрали именно Unix BSD 4.2.
Широкое распространение различных версий Unix привело к необходимости создания стандарта на эту операционную систему. В середине 80-х годов выделились два основных стандарта — Unix System V и BSD Unix. Компания AT&T Labs передала права на разработку версии Unix System V компании Unix System Labs. Эта компания в 1991 году представила операционную систему System V 4, в которой были реализованы практически все возможности операционных систем System V 3, BSD 4.2, Xenix.
Каждая операционная система имеет свое «призвание». Операционную систему Windows NT Server предпочтительнее использовать как сервер рабочих групп сетей Microsoft. Система Novell Netware лучше «смотрится» в роли файлового сервера и сервера печати. ОС UNIX первоначально разрабатывалась как Интернет-сервер. Средства для работы с Сетью встроены непосредственно в ядро этой операционной системы, а все необходимое программное обеспечение для организации сервера входит в состав дистрибутива. UNIX-система работает со всеми сетевыми протоколами (особенно с TCP/IP) лучше, чем любая другая операционная система для платформы Intel. Все перечисленные выше качества касаются также и ОС Linux.
Устанавливая Linux, вы получаете также множество других преимуществ. Во-первых, вам становятся доступны исходные тексты ядра и вы можете модифицировать систему так, как вам нужно. Такое можно встретить далеко не в каждой операционной системе, особенно в ОС семейства Microsoft. Вы видели где-нибудь исходные тексты хотя бы Блокнота Windows?
Во-вторых, ОС Linux абсолютно бесплатна. Конечно, существуют коммерческие версии Linux, но в этом случае вы платите за некоторые дополнительные функции и техническую поддержку. Купив однажды компакт-диск с Linux, вы можете установить эту операционную систему на неограниченном числе компьютеров. Вам не нужно ничего доплачивать, вам не нужно платить за каждый дополнительный процессор — ОС Linux поддерживает SMP и при этом тоже бесплатно. Кроме того, поскольку Linux является UNIX-подобной системой, в состав ее дистрибутива входит все программное обеспечение, необходимое для организации сервера.
В последнее время появилась тенденция выпускать многодисковые дистрибутивы или дистрибутивы, содержащие программное обеспечение отдельно для рабочей станции и отдельно для сервера. В этом случае вам нужно купить только первый и, возможно, второй компакт-диск. Если дистрибутивы разделены на категории «сервер» и «рабочая станция», как это сделали разработчики ASP Linux, покупайте, естественно, серверную версию.
Рис. 1.4. ОС Linux Ubuntu 8.10, работающий с GNOME (дата выхода 30 октября 2008, разработчик Canonical Ltd / Ubuntu Foundation)
Оригинальное имя проекта Ubuntu было no-name-yet.com.[4] Canonical продолжает использовать домен no-name-yet.com с тех пор, как был основан проект.
Первый релиз Ubuntu 20 октября 2004 начался как временный форк Debian GNU/Linux с целью регулярного получения кода Debian, чтобы выпускать каждые шесть месяцев новую версию системы. В отличие от некоторых других форков Debian общего назначения, таких как Xandros, Linspire и Libranet, Canonical осталась близко к философии Debian и использует для Ubuntu в основном свободное программное обеспечение вместо того, чтобы частично положиться на закрытые добавления.[6]
Ubuntu в настоящее время финансируется Марком Шаттлвортом через Canonical Ltd. 8 июля 2005 Canonical объявила о создании Ubuntu Foundation и обеспечила начальное инвестирование в размере 10 миллионов долларов. Цель фонда состоит в том, чтобы гарантировать поддержку и развитие для всех будущих версий Ubuntu, но на 2008 год фонд остается незадействованным. Шаттлворт описывает его как чрезвычайный фонд на случай, если поддержка Canonical прекратится.
Есть планы относительно ветки Ubuntu под кодовым именем «Grumpy Groundhog». Запланировано, что она будет оставаться непостоянной ветвью развития и испытаний, берущей начало непосредственно из контроля пересмотра различных программ и приложений, которые отправлены как часть Ubuntu. Это предусмотрено, чтобы позволить опытным пользователям и разработчикам проверять версии отдельных программ «с точностью до минуты», как если бы они появились для распространения уже сегодня, без необходимости самим создавать пакеты; планируется заранее предупреждать об ошибках сборки на различных архитектурах.[8] Пока Grumpy Groundhog недоступна для широкого круга пользователей.
Ubuntu сосредотачивается на удобстве и простоте использования, включает широко распространённое использование утилиты sudo, которая позволяет пользователям выполнять администраторские задачи, не запуская потенциально опасную сессию суперпользователя.[9]
Версия 6.06 и более поздние объединяют Live-CD и установочный CD в один компакт-диск. Этот диск загружает рабочий стол со всеми возможностями, давая пользователям возможность видеть, поддерживаются ли их аппаратные средства, и экспериментировать с доступными приложениями, и уже затем устанавливать Ubuntu на жёсткий диск, используя графический инсталлятор Ubiquity. Инсталляционный процесс сохраняет документы, созданные на «живом» рабочем столе. Альтернативная установка, использующая debian-installer, доступна для скачивания и нацелена на людей, разбирающихся в системе на более глубоком уровне, администраторов, устанавливающих много систем, и для сложного разбиения дисков, включая использование LVM или RAID, а также для установки с объёмом оперативной памяти менее 192 мегабайт.
Пользовательский интерфейс по умолчанию в текущей версии характеризуется оттенками коричневого и оранжевого цветов. Ubuntu имеет дополнительный пакет, названный ubuntu-calendar, который загружает новые обои, соответствующие коричневой цветовой теме, каждый месяц. В прошлом на этих обоях присутствовали частично обнажённые люди, поэтому они критиковались как рискованные. Это приводило к созданию таких прозвищ, как «Linuxxx».[12]
Релизы, помеченные как LTS (англ. Long Term Support; дословно «поддержка в течение длительного периода») поддерживаются Canonical дольше, чем большинство релизов Ubuntu. Обновление пакетов запланировано в течение трёх лет для пользовательских версий и пяти лет для серверных, с платной технической поддержкой от Canonical на этот период. В последний релиз Ubuntu 8.10 Intrepid Ibex включены GNOME 2.24, Mozilla Firefox 3, OpenOffice.org 2.4.0, GCC 4.1.3, поддержка 3G и ядро Linux версии 2.6.27.[26]
Canonical утверждает, что Ubuntu гарантирует пользователям свободу (в классическом определении Free Software Foundation), что декларировано в его манифесте, по духу напоминающем лицензию GPL. Однако варианты ОС по умолчанию содержат несвободные драйверы, а в специальном магазине имеются лицензированные у сторонних компаний несвободные декодеры проприетарных запатентованных мультимедиа форматов вроде Windows Media.[36]
Слово «убу́нту» на языках зулу и коса означает «гуманность, человеколюбие», и символизирует направленность на конечного пользователя и обеспечение максимальных удобств.
Во Франции в 2007 году в Парламенте отказались от использования Windows XP и перешли на использование Ubuntu, а в 2008 году было объявлено о планомерном переводе на эту ОС более 70 тыс. компьютеров полиции. Ubuntu используется как система по умолчанию в школах Грузии, Македонии. В Испании разворачивается проект на более чем 400 тыс. компьютерных систем с Ubuntu для учебных заведений. [37] В 2008 году на Ubuntu будет переведено от 5 до 8 тысяч десктопов, в последующие 4 года будет переводиться по 12—15 тысяч компьютеров ежегодно во всех отделах полиции в пределах Франции [38].
Google использует на своих «машинах» ОС под названием Goobuntu — модифицированный дистрибутив.[39]
Ubuntu используется в качестве основной операционной системы на серверах проекта «Википедия»[40].
Требования к аппаратным средствам:
Ничего сверхъестественного. Достаточно иметь 386SX-25 и 4 Мб оперативной памяти, но увеличение ОЗУ до 8 Мб значительно повысит производительность вашей системы. Шина особой роли не играет, Linux поддерживает как ISA, EISA, VLB и PCI, но игнорирует MCA (серия PS/2 фирмы IBM), которая у нас, впрочем, не очень-то распространена. Вовсе не обязательно использование процессоров фирмы "Intel" ≈ клоны производства фирм AMD, "Cirrus Logic", TI и так далее никаких нареканий не вызывают. Реальная потребность в дисковой памяти - от 80 Мб (вам ведь нужна не только сама система, но и прикладные пакеты, не так ли?). Для запуска большинства программ этого хватит (для удовлетворения потребностей программ в оперативной памяти вы всегда можете создать раздел для подкачки на диске).
1.4 Выбор операционной системыКонечно же, на выбор операционной системы самое прямое влияние оказывают те аппаратные средства, с которыми вам предстоит работать. Ведь если ресурсов вашего компьютера не хватит для загрузки системы, то разве вы сможете использовать все ее возможности?
Минимальные требования к аппаратным средствам следующие. Во-первых, вам необходим по меньшей мере процессор 80386 (то есть 32-разрядный). Конечно, повышение мощности процессора желательно, но не обязательно. Гораздо большее значение для повышения общей производительности системы играет объем оперативной памяти. Кстати, для запуска Linux или OS/2 вам потребуется хотя бы 4 Мбайта оперативной памяти, а для Windows NT ≈ по меньшей мере 12 Мбайт. Что касается дисковой памяти, то минимальные требования для Linux составляют 15 Мбайт, 32 Мбайт для OS/2 и 70 Мбайт для Windows NT. Но имейте в виду, что этих ресурсов хватит только для "пробы", а для реальной работы требования значительно более высокие (см.Таблицы 1 и 2).
Впрочем, надеюсь, читателя я не напугал. Ведь практически все современные компьютеры этим требованиям удовлетворяют. Но есть еще одна проблема ≈ проблема совместимости аппаратных средств. С точки зрения здравого смысла это кажется абсурдом ≈ жестко сконструированные аппаратные средства (hardware) подгоняются под существенно более гибкое и перестраиваемое программное обемпечение (software), в то время как изначальный замысел был прямо противоположным. И вот, если в вашем распоряжении оказалась ЭВМ с шиной MCA (MicroChannel Architecture), которой оснащены все компьютеры фирмы IBM серии PS/2, то можете распрощаться с идеей использования Linux (эту архитектуру Linux не поддерживает).А если на вашем компьютере установлена видеокарта Compaq Qvision, то может оказаться, что OS/2 ее не поддерживает. А если в компьютере установлен сетевой контроллер 3Com 3c501, то Windows NT может отказаться его поддерживать.
И это далеко не полный список проблем, который к тому же постоянно изменяется. Вообще говоря, вы должны отдавать себе отчет, что приобретение самого современного оборудования, только что появившегося на рынке, всегда чревато возникновением проблем совместимости -- ведь может случиться так, что надежных драйверов для ваших устройств еще нет. А поэтому... не стоит бежать впереди паровоза. Если, конечно, вас не интересует процесс отладки операционной системы, как таковой.
Иначе говоря, любая операционная система, вопреки заявлениям разработчиков, поддерживает вполне определенную номенклатуру аппаратных средств. Поэтому одним из вполне разумных выходов является приобретение готовой вычислительной системы с предустановленной операционной системой. И хотя на российском рынке не так уж много компаний, которые могут поставить компьютер с предустановленной Windows NT, OS/2 или Linux, вы сумеете сохранить много сил, если потратите несколько дней на поиски надежного поставщика, который сам подберет оптимальный состав аппаратных средств.
Если же приобретение нового компьютера целиком является для вас неприемлемым вариантом, то выход один ≈ просто начните устанавливать систему. Но если в процессе установки у вас возникнут проблемы, то в конце концов вы будете знать о своем компьютере куда больше того, что хотели бы знать!
Ведь операционная система определяет, какие приложения могут быть запущены на вашем компьютере, какой вид имеет интерфейс пользователей, а также, каким образом приложения будут взаимодействовать между собой. Например, если вы не можете жить без офиса фирмы Microsoft (Word, Excel, Access и PowerPoint), то вам придется отказаться от Linux.
OS/2 должна поддерживать эти приложения, но вы ведь помните, что в 1991 году Microsoft прекратила поддерживать проект фирмы IBM... Windows NT использует тот же самый интерфейс диспетчеров файлов и печати, к которому вы уже привыкли в Windows 3.1. Да, интерфейс не слишком удобен, но зато прост и привычен. А учитывая его ограниченность (пусть не обижается на нас г-н Гейтс), пользователь не может нанести ущерб системе, перетаскивая из угла в угол иконки и изменяя настройки среды.
В OS/2 реализована концепция объектно-ориентированного подхода к построению интерфейса пользователя. Как данные, так и программы представляют собой объекты, которые могут быть объединены практически произвольным образом. Щелчок мыши на объекте данных приводит к запуску ассоциируемого с ним приложения. А перетащив файл данных на принтер, вы заставите систему его распечатать. Кроме того, пользователь имеет возможность изменить практически любые настройки системы, как говорилось в одном из рекламных роликов -- "до последнего миллилитра".
К сожалению, эта гибкость имеет и оборотную сторону. В частности, начинающий пользователь довольно легко может заблудиться в системе, ведь обнаружить нужные объекты может оказаться совсем непросто. А в этом случае, однообразность (обычно ее называют единообразием) интерфейса играет отрицательную роль ≈ поди отличи одно приложение от другого.
Linux, в отличие от остальных систем, использует X/Window. Это уникальная графическая среда ≈ своеобразный хамелеон, который может принимать любые обличия и по-разному обрабатывать запросы пользователя. Плюс очевиден ≈ гибкость и возможность настройки под свои задачи. Не менее очевиден и минус ≈ относительная сложность процесса указанной выше настройки. В этой системе реализовано большое количество различных пользовательских интерфейсов, каждый из которых получил более или менее широкое распространение. А это значительно затрудняет обучение пользователей и сопровождение системы в целом. Linux, по своей сути представляет собой операционную систему, ориентированную на управление с командной строки. Но не расстраивайтесь, разработаны и диспетчеры файлов и диспетчеры печати. Есть также и Midnight Commander ≈ "наш ответ Питеру Нортону". Кстати, большинство штучек, которые включены в состав Windows и OS/2 , без особых сложностей реализуются и в Linux. И хотя для первоначальной настройки требуется поработать достаточно квалифицированному специалисту, остальные пользователи Linux получат в свое распоряжение среду "со всеми удобствами". Все системы достаточно подробно освещены в литературе, которая оказывает существенную помощь в освоении.
И хотя Linux является бесплатной системой, внимания ему уделяют немало ≈ немало информации вы можете найти в Internet, выходит специализированный журнал Linux Journal, работают группы пользователей, в том числе и в России, да впрочем, и любая книга по UNIX может быть с успехом использована в вашей работе. Существенным преимуществом Linux явялетстся отсутствие технологических секретов, принадлежащих какой-либо одной компании, а также доступность исходного текста ядра операционной системы, которое может быть модифицировано для нужд фирмы или отдельного пользователя.И как ни удивительно, в результате использования общедоступной информации вы можете получить поистинне крохотную операционную систему, обладающую, тем не менее функциональной полнотой и отличной производительностью. Похоже, что IBM и Microsoft есть чему поучиться!
Это красивое слово из курса диалектического материализма в применении к операционным системам означает, что ОС ≈ это тот фундамент, на котором держатся все задачи пользователей. Поэтому имеет смысл выбирать ОС, содержащую все те функции, которые необходимы вам для решения текущих задач, а также тех, которые появятся в ближайшем будущем. Но при этом не забывайте о ресурсах, которые необходимы для поддержки функций системы.
Linux, так же как и OS/2, разрабатывался и оптимизировался для работы с процессором 80386 и совместимых с ним. А Windows NT, как ожидалось, должна была стать новым стандартом операционной системы и была портирована на MIPS и DEC Alpha. Но хотя фирма Digital и поставляет компьютеры на базе Alpha с операционной системой Windows NT, это направление, по всей видимости не является для Digital стратегическим. Иначе чем объяснить выпуск новой 64-разрядной версии UNIX для процессора Alpha? Полностью переработанное ядро системы, поддержка гигантских приложений и отказоустойчивых систем ≈ словом, Digital UNIX ≈ это потрясающе. Как ни крути, на этих процессорах существуют свои версии UNIX, которые пользуются все же большей популярностью.
Все три ОС поддерживают многозадачный режим работы, при котором одновременно выполняется несколько пользовательсктих приложений. Вы можете одновременно форматировать диск, выгружать файл из Internet или BBS, редактировать статью в текстовом процессоре. По сравнению с MS-DOS это существенный шаг вперед. NT поддерживает также многопроцессорный режим работы, который, впрочем, ориентирован на работу только с процессором Pentium. А вот для Linux завершается разработка сетевого планировщика, который позволяет превратить несколько Linux-машин на базе дешевых процессоров 80386 в некоторое подобие многопроцессорной системы (Purdue's Adapter for Parallel Execution and Rapid Synchronization). А кроме того, вы можете объединить несколько Linux-машин в один виртуальный многопроцессорный суперкомпьютер и даже создать гетерогенную сеть в которой расчетные задачи будет выполнять блок Linux-машин, а ввод/вывод данных можно выполнять на Sun, SGI, или из Windows. Кстати, именно такими системами занимается НПО ⌠Инфосервис■ и мы обязательно посвятим несколько изданий возможности эффективного использования свободных вычислитенльных ресурсов сети.
NT и Linux поддерживают также динамическое кэширование дисковой памяти, в то время как в OS/2 реализован традиционный подход, состоящий в выделении фиксированного объема памяти (от 512 Кбайт до 2 Мбайт). В результате производительность Linux и NT оказывается существенно выше, поскольку необходимые для обработки данные в большинстве случаев оказываются уже в кэш-памяти. В отличие от OS/2 и Windows NT многопользовательская работа поддерживается Linux в полном объеме. Локальные пользователи, удаленные терминалы, подключенные через модемы, а также пользователи, подключенные посредствоми локальной вычислительной сети без каких-либо ограничений могут одновременно работать с графическими и символьно-ориентированными приложениями.
Для многих практических ситуаций эта возможность ставит Linux вне конкуренции. Linux имеет также ряд средств обеспечения безопасности системы, предотвращающих попытки пользователей "сломать машинку".
Впрочем, хотя Windows NT не является многопользовательской системой, она проверяет полномочия подключившегося к ней пользователя. Поэтому вы можете без опаски предоставлять сетевой доступ к Linux- или NT-машине, в то время, как пользователь OS/2 имеет все необходимые средства для умышленного или неумышленного разрушения операционной системы.
Необходимо отметить, что развитость средств безопасности Linux не в последнюю очередь объясняется тем, что используются стандартные апробированные решения из мира UNIX, которые прошли испытания временем. Не забыты и современные решения ≈ уже сегодня вы можете установить в Linux системы контроля доступа семейства Firewall. Более того, эти средства поддерживаются ядром системы! Основные характеристики и возможности рассматриваемых систем сведены в Табл.3.
Очевидно, что каждая дополнительная функция, реализованная в системе, приводит к увеличению объема системы, что сказывается на требованиях к оперативной памяти и жестким дискам. Кроме того, чем больше объем операционной системы, тем медленнее она обычно работает. Windows NT является самой большой из рассматриваемых нами систем. Причиной этого является высокая сложность системы и большой набор поддерживаемых ею функций. Что, кстати, только повышает конкурентоспособность системы. Linux (в комплекте с X-Window) является следующей по размеру системой.
Собственно говоря, сам Linux занимает исключительно малый объем, но X-Window является довольно пухлым довеском. Впрочем, в большинстве случаев, графический интерфейс стоит этих затрат.
И наконец, OS/2 является наиболее компактной системой. Именно в этом и состоит привлекательность операционной системы, разработанной IBM. Пользователю необходимо иметь только 8 Мбайт оперативной памяти, чтобы приобщиться к миру объектно-ориентированного интерфейса, и представляет собой неплохую пплатформу для многозадачной работы с приложениями DOS, Windows и OS/2.
Если вы найдете силы пожертвовать графическим интерфейсом, то Linux окажется наиболее компактной операционной системой. А кроме того, и самой быстрой. При этом, для большинства задач вам будет достаточно 4 Мбайт оперативной памяти. В результате, Linux с успехом может эксплуатироваться на младших моделях, оснащенных процессором 80386, в то время, как для OS/2 или NT вам придется затратить немало средств на обновление компьютера. Конечно, и избытком оперативной памяти Linux сумеет распорядиться, что называется, по-хозяйски. Так, при работе с 16 Мбайт памяти, Linux оставит для приложений и динамического кэша около 12 Мбайт!
Отметим, что размер системы является одной из наиболее сильных характеристик Linux. система изначально проектировалась максимально компактной и производительной, в то время как для NT основным критерием оптимизации являлась переносимость, а для OS/2 ≈ совместимость с предыдущими версиями системы.А кроме того, поскольку любой администратор Linux-системы имеет в своем распоряжении полный исходный текст ОС, она может быть оптимизирована для работы с конкретным оборудованием и нуждами пользователя. Увы, OS/2 и NT похвастаться такой возможностью не могут.
Windows NT румяней всех, поскольку это устойчивая система, предназначенная для широко распространенных процессоров фирмы Intel.
OS/2 всех румянее по той причине, что это наилучшая система для запуска 16-разрядных приложений DOS и Windows, и при этом предоставляет возможность приобщиться к привлекательному миру 32-разрядных систем.
Но в обеих системах прячется червячок ≈ и OS/2 и NT привязывают пользователя к той или иной технологии ≈ ведь приложения будут работать либо в OS/2, либо в Windows NT. А вот Linux "всех белее", поскольку ему эта опасность не грозит. Приложения, разработанные для Linux могут быть перенесены на любую UNIX-систему. И если ориентация на "открытую технологию" IBM или Microsoft, является, по большому счету, рискованной игрой, то Linux предлагает выход из ловушек, расставленных гигантами.
Впрочем, на этом пути вас также поджидают определенные трудности. Для того, чтобы не оказаться запертым в рамках одной операционной системы вы должны выбирать приложения, которые поддерживаются различными платформами. Если ваши любимые электронные таблицы работают в Windows, OS/2, UNIX и на Macintosh, вы можете быть уверены, что сможете запустить этот продукт и в других системах.
Впрочем, не забудьте, что за это придется выкладывать звонкую монету из собственного кошелька. Приятной особенностью Linux является его способность использовать программное обеспечение, предназначенное для дркугих РС-ориентированных версий UNIX, таких, как например, SCO UNIX. Впрочем, для UNIX-систем пока не реализованы версии текстовых процессоров, сопоставимых с возможностями Microsoft Word или Lotus Word Pro. И к сожалению, именно этот факт сдерживает распространение Linux.
С точки зрения корпоративного пользователя Linux идеально вписывается в концепцию "клиент/сервер", реализуемую на базе протоколов TCP/IP. При этом Linux позволяет превратить казалось бы устаревшее оборудование в мощный файл-сервер, факс-сервер, работающий как шлюз для отправки факсов через внутреннюю систему электронной почты или postscript-ориентированный принт-сервер, который обслуживает обычные матричные или лазерные принтеры. При этом, Linux зачастую работает устойчивее, чем его коммерческие собратья. Система компактна и шустра, а кроме того, может быть перекомпонована для решения вполне определенных задач. Вы можете даже установить ее на индустриальный компьютер (например, Mitac или Octagon). В Linux встроены средства поддержки электронной почты и доступа к ресурсам Internet. Cистема отлично документирована и получает все большее распространение во всем мире.
Реализована поддержка работы работы с кириллицей. Но (!) есть и некоторые недостатки. Прежде всего, довольно ограничено количество коммерческих продуктов, хотя среди них уже есть и мощные SQL-серверы баз данных, и текстовые процессоры и прочие нужные вещи. Кроме того, в случае зависания системы, вы не можете свалить вину на "кривой код от Microsoft". И конечно, никто не обязан вылизывать обнаруженные вами ошибки, хотя разработчики программного обеспечения Linux обычно внимательно относятся к критике пользователей...
С точки зрения технически подготовленного пользователя Linux представляет отличный шанс "поковыряться" в операционной системе. Вам полностью доступен исходный код операционной системы, что само по себе является мощным учебным пособием, которое так и тянет опробовать на практике. В результате уже сегодня вы можете воспользоваться высокопроизводительными трассировщиками для мультипликации, спектроанализаторами на базе Sound Blaster, различными компиляторами (чем, например, плохи Ада или CommonLisp?) и играми (уже реализован DOOM) и прочими продуктами. Для новичков, конечно же, предпочтительными вариантами являются OS/2, и в меньшей степени, Windows NT.
Простой и понятный интерфейс OS/2 является серьезным побудительным мотивом, в то время как NT привлекает за счет своей мощи. Но, в то же время следует признать, что наибольший комфорт пользователь ощущает в старой доброй Windows 3.1, а также при работе с Norton Commander.
Процесс установки 32-разрядных операционных систем и их конфигурирование может оказаться процессом далеко не тривиальным.
Подводя итоги, отметим, что Linux оказывается неожиданно мощной системой, которая разработана неорганизованной группой программистов-любителей. Идеи положенные в его основу проверены временем. Количество и качество свободно распространяемых приложений просто завораживает. И если накнец будет завершен проект Wine, позволяющий запускать Windows-приложения в среде X/Window, Linux получит дополнительный козырь в борьбе с коммерческими операционными системами. Возможности этой системы открывают все новые и новые пользователи. И с эволюционным развитием всех трех систем наблюдается устойчивый рост количества пользователей Linux.
Компьютерное моделированиеПрежде чем приступить к компьютерному моделированию технологического процесса, необходимо знать простейшие математические уравнения для его проведения начнем с проверки воспроизводимости опыта.
Проверим воспроизводимость опытовУбедиться в том, что опыты воспроизводимы, т. е. результаты опытов, проведенных в одинаковых условиях, близки друг к другу. Для этой цели проводят несколько серий параллельных опытов. Условия реализации опытов каждой серии — одинаковы, а разных серий — отличаются друг от друга. Однако все опыты проводятся в рассматриваемой области изменения влияющих факторов. Результаты этих опытов сводят в таблицу табл. 10. Количество опытов во всех сериях должно быть одинаковым.
Для каждой серии параллельных опытов вычисляют среднее арифметическое значение функции отклика
где— номер серии;— число параллельных опытов, проведенных при одинаковых условиях.
Затем вычисляют для каждой серии параллельных опытов величину, называемую оценкой дисперсии:
Среди всех оценок дисперсий находят наибольшую. Мы обозначим ее через
аблица 10 Эксперимент для проверки воспроизводимости опытов
Номер серии опытов Результаты параллельных опытов Средние значения Оценки дисперсииЗатем находят отношение наибольшей из оценок дисперсий к сумме всех оценок дисперсий:
Таблица11 Критические значения критерия Кохрена
Число серий опытов (число оценок дисперсий) 1 2 3 4 2 0,999 0,975 0,939 0,906 3 0,967 0,871 0,798 0,746 4 0,907 0,768 0,684 0,629 5 0,841 0,684 0,598 0,544Величина Gp называется расчетным значением критерия Кохрена. Критические, т. е. предельно допустимые значения критерия Кохрена G, приведены в табл. 11.
Для нахождения G необходимо знать общее число N оценок дисперсий и так называемое число степеней свободы , связанных с каждой из них, причем
Опыты считаются воспроизводимыми, когда выполняется условие
Если опыты невоспроизводимы, то можно попытаться достигнуть воспроизводимости путем выявления и устранения источников нестабильности эксперимента, а также за счет использования более точных измерительных приборов.
Наконец, если никакими способами невозможно обеспечить воспроизводимость, то математические методы планирования к такому эксперименту применять нельзя.
Если при проведении эксперимента опыты дублируют и пользуются средними значениями функции откликато при обработке экспериментальных данных следует использовать В тех случаях, когда из-за недостатка времени, большой трудоемкости или высокой стоимости эксперимента опыты не дублируют, при обработке экспериментальных данных используют
Таким образом, вычисления, связанные с проверкой воспроизводимости опытов, достаточно просты. Для их проведения достаточно использовать микрокалькулятор.
Полный факторный эксперимент
Под математическим описанием технологического процесса обычно понимают систему уравнений, связывающих функции отклика с влияющими факторами. В простейшем случае это может быть одно уравнение. Часто математическое описание называют математической моделью.
С помощью математических методов планирования эксперимента можно получить математическую модель технологического процесса даже при отсутствии сведений о механизме его протекания. Это в ряде случаев бывает очень полезно.
Рис. 21 Введение кодированных переменных
На основе планирования эксперимента возможно моделировать химический состав продукта, его выход, усвояемость и др. показатели качества продукта или правильным термином «факторы».
Математические модели, получаемые с помощью методов планирования эксперимента, принято называть экспериментально-статистическими.
Метод полного факторного эксперимента дает возможность получить математическое описание пищевого технологического процесса в некоторой области факторного пространства, лежащей в окрестности выбранной точки с координатами где - число факторов).
Перенесем начало координат факторного пространства в данную точку рис. 21. С этой целью введем новые переменные величины
где— выбранный нами масштаб по оси
Величины не имеют размерностей и называются кодированными переменными.
С помощью полного факторного эксперимента ищут математическое описание технологического процесса в виде уравнения
В него входит свободный членчлены в виде произведений коэффициентов регрессиинаи члены, содержащие парные произведения кодированных переменных. Таким образом, это — неполное квадратное уравнение.
Все факторы в ходе полного факторного эксперимента варьируют на двух уровнях, соответствующих значениям кодированных переменныхи .
В табл. 13 приведены условия опытов полного двухфакторного эксперимента. Часть таблицы, обведенная штриховыми линиями, называется матрицей планирования.
Таблица 13 Условия полного двухфакторного эксперимента
Номер опыта Факторы Функция откликаX1
X2
1 -1 -1y1
2 +1 -1y2
3 -1 +1y3
4 +1 +1y4
Матрица содержит полный набор всех возможных комбинаций уровней варьирования факторов. Отсюда полный факторный эксперимент получил свое название.
Как следует из рис. 22, результаты опытов, приведенные в табл. 13, соответствуют на факторной плоскости вершинам квадрата с центром в начале координат.
Рис. 22. Полной двухфакторной эксперимент на плоскости
В табл. 14 приведены условия опытов полного трехфакторного эксперимента. Эти опыты соответствуют в факторном пространстве вершинам куба с центром в начале координат.
Основные принципы построения матриц планирования полного факторного эксперимента: 1) уровни варьирования первого фактора чередуются от опыта к опыту; 2) частота смены уровней варьирования каждого последующего фактора вдвое меньше, чем у предыдущего.
Таблица 13 Условия полного трехфакторного эксперимента
Номер опыта Факторы Функция откликаX1
X2
X3
1. - 1 - 1 -1y1
2. + 1 - 1 - 1y2
3. - 1 + 1 - 1y3
4. + 1 + 1 - 1y4
5. - 1 - 1 + 1y5
6. + 1 -1 + 1y6
7. - 1 + 1 + 1y7
8. + 1 + 1 + 1y8
Общее число опытов полного факторного эксперимента:
где n — число факторов.
На основании результатов полного факторного эксперимента вычисляют коэффициенты регрессии, пользуясь следующими формулами:
Некоторые из коэффициентов регрессии могут оказаться пренебрежимо малыми - незначимыми. Чтобы установить, значим коэффициент или нет, необходимо прежде всего вычислить оценку дисперсии, с которой он определяется:
Следует отметить, что по результатам полного факторного эксперимента все коэффициенты определяются с одинаковой погрешностью.
Принято считать, что коэффициент регрессии значим, если выполнено условие
где— значение критерия Стьюдента, взятое из табл. 15.
Для пользования табл. 15 необходимо знать число степеней свободысвязанное с оценкой дисперсии
Таблица 15 Значения критерия Стьюдента
f t 1 12,71 2 4,30 3 3,18 4 2,78 5 2,57 6 2.45 7 2,36 8 2,31 9 2,26 10 2,23Если проверка показала, что коэффициент регрессии незначим, то соответствующий член можно исключить из уравнения.
Получив уравнение регрессии, следует проверить его адекватность, то есть способность достаточно хорошо описывать поверхность отклика и прогнозировать результаты опытов. Для проверки адекватности вычисляют оценку дисперсии адекватности по формуле
Здесь — число значимых коэффициентов регрессии;— экспериментальное и расчетное значение функции отклика в опыте; — число опытов полного факторного эксперимента.
С оценкой дисперсии адекватности связано число степеней свободы
Затем находят расчетное значение критерия Фишера:
Уравнение регрессии считается адекватным, если выполняется условие
где — критическое значение критерия Фишера табл. 16.
Для пользования табл. 19 необходимо знать числа степеней свободы, связанных с числителем и знаменателем отношения
Методом дробного факторного экспериментаС увеличением числа учитываемых факторов резко возрастает число опытов полного факторного эксперимента.
Для нахождения коэффициентов регрессии не всегда требуется много опытов. В таких случаях можно уменьшить объем экспериментальных работ, воспользовавшись методом дробного факторного эксперимента, который известен также под названием метода дробных реплик.
Этот метод заключается в том, что для нахождения уравнения регрессии используется определенная часть полного факторного эксперимента:и т. д. Такие системы опытов называются дробными репликами табл. 19.
Таблица 19
Полный трехфакторный эксперимент и его дробные реплики
Расчет коэффициентов регрессии, проверка значимости коэффициентов и адекватности математического описания в данном случае осуществляются так же, как и при полном факторном эксперименте.
Пусть требуется найти коэффициенты уравнения регрессии
Если для этой цели воспользоваться полным трехфакторным экспериментом, то необходимо провести 8 опытов. Однако эту задачу можно решить и с помощью меньшего числа опытов. Например, возьмем матрицу полного двухфакторного эксперимента табл. 20 и приравняем произведение к фактору
Рассчитаем коэффициенты регрессии:
Обратим внимание на то, что в табл. 20 столбцы для произведенияи фактораполностью совпадают. Поэтому коэффициенты регрессииине могут быть определены раздельно.
Таблица 20 Дробный факторный эксперимент типа 23-1
Номер опытаX1
X2
X1X2
X3
Функция отклика 1 - 1 - 1 + 1 + 1y1
2 + 1 - 1 - 1 - 1y2
3 - 1 + 1 -1 - 1y3
4 + 1 + 1 + 1 + 1y4
Может быть найдена только их сумма:
Этот недостаток рассматриваемого плана является своеобразной «платой» за уменьшение общего числа опытов с восьми до четырех.
Такое планирование эксперимента, когда некоторые из факторов приравнивают к произведениям нескольких факторов, называется планированием со смешиванием. Его обозначают символом где — общее число факторов, а — число факторов, приравненных к произведениям. С этой точки зрения в табл. 20 приведена матрица планирования типа
Существует правило, позволяющее определить, какие коэффициенты регрессии определяются совместно при планировании со смешиванием. Рассмотрим это правило на примере.
Методом дробных реплик будем искать математическое описание процесса в виде уравнения регрессии
Воспользуемся планированием типаи примем
Такие равенства в методе дробных реплик называются генерирующими соотношениями.
Следует отметить, что выбор генерирующих соотношений в общем случае произволен. Однако он существенно влияет на характер совместных оценок коэффициентов регрессии.
Правило определения совместных оценок коэффициентов заключается в следующем:
Примем во внимание, что
Умножив обе части генерирующих соотношений соответственно наиполучим:
Эти равенства называются определяющими контрастами. Перемножив их почленно, получим новые определяющие контрасты.
В данном случае _
3. Составим алгебраическую сумму из единицы и правых частей всех полученных определяющих контрастов:
4. Умножив каждый из факторов на s и заменив факторы соответствующими коэффициентами регрессии р получим искомые совместные оценки:
где— истинные коэффициенты регрессии.
В рассмотренном примере удалось значительно сократить общее количество опытов. Так, полный пятифакторный эксперимент состоит из 32 опытов. План типасодержит 8 опытов, т. е. в четыре раза меньше.
Отметим еще одну интересную особенность дробного факторного эксперимента. Планирование со смешиванием иногда применяют в тех случаях, когда необходимо уменьшить влияние неуправляемых временных изменений некоторых влияющих факторов, т. е. влияние так называемого временного дрейфа. Примером временного дрейфа может служить уменьшение со временем активности катализатора вследствие отравления его каталитическими ядами.
При постановке большой серии опытов, требующих длительного времени, всегда приходится опасаться нежелательных изменений исходных свойств реагентов, некоторых характеристик технологического оборудования и т. п. Влияние этого временного дрейфа на параметры математического описания процесса можно практически устранить, разбивая всю серию опытов на отдельные блоки так, чтобы эффект от временного дрейфа оказался смешанным с произведениями факторов, для которых коэффициенты регрессии достаточно малы.
Допустим, что необходимо устранить влияние временного дрейфа на параметры уравнения регрессии, получаемого в результате полного трехфакторного эксперимента. С этой целью разобъем эксперимент на два блока и введем новую независимую переменную ХЛ, характеризующую дрейф. Положим
Исходя из матрицы планирования, представленной в табл. 21, будем считать, что в первом блоке все результаты опытов вследствие временного дрейфа завышены наа во втором — занижены на ту же величину.
Таблица 21 Планирование в условиях временного дрейфа
Если уравнение регрессии отыскивается в виде
то коэффициенты регрессии будут являться следующими оценками:
Рассчитаем, например, коэффициентыи:
Следовательно, все коэффициенты регрессии, кроме не содержат погрешностей, обусловленных временным дрейфом.
Крутое восхождениеПолученное с помощью полного или дробного факторного эксперимента уравнение регрессии служит не только математической моделью химико-технологического процесса, но используется и для его оптимизации. Оптимизацией процесса называют целенаправленный поиск наилучших в определенном смысле условий его проведения. Задачи оптимизации приходится решать при разработке новых технологий и реконструкции действующих производств.
Величина, характеризующая уровень оптимизации процесса, называется критерием оптимальности или целевой функцией. Например, критерием оптимальности может быть выход целевого продукта химической реакции в расчете на израсходованное сырье.
Качество процесса химической технологии обычно выражается не одним, а несколькими показателями. Безусловно, хочется, чтобы все показатели достигали одновременно своих наилучших значений. К сожалению, это невозможно. Например, максимальная производительность оборудования и минимальная себестоимость продукции обычно имеют место при различных технологических режимах.
Чтобы осуществлять оптимизацию, необходимо располагать определенными ресурсами. Например, для увеличения выхода целевого продукта химической реакции, мы должны иметь возможность варьировать в определенных пределах значениями таких величин, как температура реакционной-смеси, исходные концентрации реагентов и т. д.
Оптимизацию проводят, как правило, в условиях ограничений на ресурсы оптимизации и некоторые выходные параметры процесса.
Задачу оптимизации можно сформулировать следующим образом. Задан критерий оптимальности
и ограничения на остальные выходные параметры процесса:
Заданы ограничения на ресурсы оптимизации:
Требуется найти такие значения ресурсов оптимизации при которых критерий оптимальности достигает своего экстремального (т. е. наибольшего или наименьшего) значения.
Д. Бокс и К. Уилсон предложили использовать для оптимизации результаты полного или дробного факторного эксперимента. Сущность этого метода состоит в следующем.
Среди всех имеющихся функций отклика, описывающих объект оптимизации, выбирают одну наиболее важную и принимают ее в качестве критерия оптимальностиЗатем указывают ограничения, накладываемые на остальные функции отклика и на влияющие факторы.
Один из наиболее сильно влияющих факторов принимают за базовый и для него вычисляют произведение соответствующего коэффициента регрессии на шаг варьирования. Например, для первого фактора это произведение имеет видЗатем для базового фактора выбирают шагс которым будет осуществляться оптимизация. С целью более точного нахождения координат оптимума обычно принимают
После этого вычисляют отношение
Для всех остальных факторов шаги движения к оптимуму рассчитывают по формуле
Движение к оптимуму начинают из центра плана, который был использован для получения уравнения регрессии. Значения факторовна каждом новом шаге оптимизации находят путем прибавленияк соответствующим предыдущим значениям. Так осуществляется оптимизация по методу Бокса и Уилсона, получившему название метода крутого восхождения. Отметим некоторые особенности этого метода. Движение из центра плана начинается в сторону наиболее быстрого увеличения критерия оптимальности. Это происходит благодаря тому, что шагипропорциональны коэффициентам регрессии
Если ищется минимум критериято новые значения факторов находят из предыдущих путем вычитанияТакой способ оптимизации назван методом наискорейшего спуска.
Движение к экстремуму прекращают при выполнении следующих условий: 1) значения факторов(одного или нескольких) или функций отклика(одной или нескольких) вышли на допустимые границы; 2) достигнут экстремум критерия оптимальности.
Рис. 23. Оптимизация по методу крутого восхождения
Как следует из рис. 23, в ходе крутого восхождения по поверхности отклика сначала может быть достигнут локальный экстремум на направлении движения. В таком случае необходимо в окрестности этого экстремума поставить новый полный факторный эксперимент и реализовать новое крутое восхождение.
Отметим, что в реальных условиях оптимум обычно находится на границах области допустимых значений
1.4 Среда для моделирования технологических процессов Visual Studio.NETИз чего состоит .NET Framework, NET Framework состоит прежде всего из огромной библиотеки программ, к которой можно обращаться из различных языков программирования (например из С#) с помощью различных технологий объектно-ориентированного программирования (ООП, object-oriented programming). Эта библиотека разбита на несколько различных модулей таким образом, что имеется возможность использовать ту или иную ее часть в зависимости от требуемых результатов. Так, например, в одном из модулей содержатся "кирпичики", из которых можно построить Windows-приложения, в другом — "кирпичики", необходимые для организации работы в сети, в третьем — все необходимое для развития Всемирной паутины (Web). Некоторые из этих модулей подразделяются на более специфические подмодули: к примеру, в состав модуля для развития Паутины входит подмодуль, предназначенный для создания web-служб.
Основная идея в данном случае заключается в том, что различные операционные системы могут поддерживать некоторые или все из этих модулей (что зависит от характеристик этих операционных систем). Так, PDA потенциально мог бы поддерживать все основные функциональные возможности .NET, однако маловероятно, чтобы ему потребовались какие-либо более хитрые модули.
Часть библиотеки .NET Framework посвящена описанию некоторых базисных типов. Тип — это способ представления данных; определение наиболее фундаментальных из них (например 32-разрядного целого со знаком) облегчает совместное использование языков программирования с помощью .NET Framework. Все вместе это называется Common Type System (CTS — единая система типов)
Кроме вындописанной библиотеки, в состав системы входит также NET Common Language Runtime (CLR — единая система выполнения программ), которая ответственна за поддержку выполнения всех приложении, разработанных с использованием библиотеки .NET,
Как можно создавать приложения с помощью .NET Framework
Создание приложений с помощью .NET Framework означает написание программы (на любом из языков программирования, поддерживаемых системой) посредством использования библиотеки программ. В этой книге для наших разработок мы будем использовать VS, который представляет собой мощную интегрированную среду разработки, поддерживающую С# (а также управляемый и не управляемый
С+ + , Visual Basic.NET и некоторые другие языки программирования). Преимуществом данной среды является та простота, с которой возможности .NET могут быть интегрированы в наши программы. Код, который мы будем создавать, будет целиком написан на С#, однако в нем повсеместно будут использоваться возможности .NET Framework, а там, где возникнет необходимость, мы будем применять в VS дополнительные инструменты.
Для того чтобы написанная на С# программа могла быть выполнена, ее необходимо преобразовать в язык, понятный операционной системе, на которой эта программа будет выполняться; такой язык известен под названием родного кода. Подобное преобразование называется компиляцией программы н выполняется компилятором. Однако в .NET этот процесс состоит нз двух этапов.
MSIL и ЛТ
При компиляции кода, в котором используется библиотека .NET Framework, мы не получаем сразу родной код для конкретной операционной системы. Напротив, наша программа будет откомпилирована в программу на языке Microsoft Intermediate Language (MSIL — промежуточный язык компании Microsoft). Этот код не является специфическим ни для какой операционной системы и так же точно не является специфическим для С#. Компиляция с других языков программирования .NET — например с Visual Basic.NET — на первом этапе тоже происходит на этот язык. Данный этап компиляции выполняется VS в тех случаях, когда мы используем его для разработки приложений на С#,
Очевидно, что для запуска приложения потребуется сделать некоторую дополнительную работу. Эта работа возлагается на ЛТ-компилятор (Just-In-Time, своевременный), который осуществляет компиляцию MSIL-кода на код, специфический для ОС и архитектуры используемого компьютера. Только после этого операционная система может выполнить приложение.
В прошлом часто возникала необходимость транслировать написанную программу в несколько различных приложении, каждое нз которых предназначалось для конкретной операционной системы и архитектуры центрального процессора, Нередко это был один нз способов оптимизации (направленной на то, чтобы программа, к примеру, быстрее выполнялась на AMD-чнпах), но иногда это оказывалось критичным (например, когда приходилось использовать некоторые приложения одновременно и в среде Win9x, и в среде WinNt/2000). Теперь такая необходимость исчезла, поскольку ЛТ-компнляторы (как и предполагает их название) используют код на языке MSIL, который совершенно независим от компьютера, операционной системы н центрального процессора. Существует несколько различных JIT-компиляторов, каждый нз которых предназначается для некоторой конкретной архитектуры, поэтому для создания родного кода, необходимого в том или ином случае, будет использоваться соответствующий ЛТ-компилятор.
Удобство такого подхода заключается в том, что теперь приходится выполнять существенно меньший объем работы: фактически мы получаем возможность просто забыть о системно-зависимых особенностях и сконцентрироваться на более интересных функциональных возможностях создаваемой программы.
Модули
Когда выполняется компилирование приложения, создаваемый MSIL-код сохраняется в некотором модуле (assembly). В состав таких модулей входят как выполняемые файлы приложений, которые могут быть запущены из Windows напрямую и которым для работы не требуется никаких других программ (такие файлы имеют расширение .ехе), так и библиотеки, предназначенные для использования другими приложениями (они имеют расширение .dil).
Кроме данных на языке MSIL, в модулях хранятся метаннформацня (т. е. информация об информации, хранящейся в данном модуле, иначе известная под названием метаданных) и дополнительные ресурсы (дополнительные данные, используемые MSIL, например звуковые и графические файлы). Метаинформация делает модули полностью самоописательными. Для использования модуля не требуется никакой дополнительной информации; другими словами, исключается ситуация, когда не удается добавить необходимые данные в системный регистр, и все подобные ей, что составляло серьезную проблему прн разработке приложений на других платформах.
Отсюда следует, что установка приложений зачастую сводится к простому копированию файлов в директорию удаленного компьютера. Поскольку системам, под управлением которых будет выполняться приложение, не требуется никакой дополнительной информации, мы получаем возможность просто запускать выполняемый файл из этой директории (при условии, что на данном компьютере инсталлирована CLR.NET) без каких-либо дополнительных действий,
Естественно, размещать все необходимое для выполнения приложения в одном месте не обязательно. Существует возможность создавать код, выполняющий задачи, которые могут потребоваться нескольким приложениям. В подобных ситуациях полезно располагать такой многократно используемый код в месте, доступном всем приложениям. В .NET Framework таким местом является Global Assembly Cache (GAC — кэш глобальных модулей). Разместить код в таком кэше очень просто: для этого необходимо просто поместить модуль, содержащий соответствующую программу, в директорию, содержащую этот кэш.
Управляемый код
Использование CLR не ограничивается тем моментом, когда мы откомпилировали программу на MSIL, а некоторый ЛТ-компнлятор откомпилировал MSIL в родной код. Код, написанный с помощью .NET Framework, является управляемым на этапе выполнения (данный этап зачастую называется временем выполнения (runtime)). Это означает, что CLR отслеживает выполнение приложений, управляя памятью, межъязыковой отладкой, обеспечением безопасности и т. п.
Напротив, приложения, которые выполняются не под контролем CLR, называются неуправляемыми, и в них можно использовать определенные языки программирования, такие как С + + , для получения, например доступа к функциям нижнего уровня операционной системы. Однако на С# можно писать только код, который выполняется в управляемой среде. Мы будем использовать возможности CLR по управлению кодом и возложим осуществление любых взаимодействий с операционной системой на .NET.
Сборка мусора
Одной нз наиболее важных особенностей управляемого кода является понятие "сборка мусора". Это способ, применяемый в .NET и гарантирующий полное освобождение памяти, использовавшейся приложением, по завершении работы этого приложения. До появления .NET эта задача возлагалась на программистов, и наличие в программе пары простых ошибок могло привести к ситуации, когда огромные блоки памяти таинственным образом исчезали. Обычно это приводило к постепенному замедлению работы компьютера с последующим крахом системы,
Сборка мусора в .NET работает путем как можно более частого инспектирования памяти компьютера и удаления из нее всего, что уже не требуется. Здесь не существует никаких заранее определенных временных рамок; этот процесс может запускаться с частотой несколько тысяч раз в секунду или один раз в несколько секунд, но вы можете быть уверены, что рано нлн поздно это случиться.
В связи с этим программисты должны учитывать несколько важных аспектов. Поскольку подобные действия выполняются в заранее не известные моменты, приложения нужно разрабатывать с учетом этой особенности. Код, который использует большое количество памяти, должен сам очищать память, а не полагаться на автоматическую сборку мусора, тем более что реализовать это не так уж сложно.
Связывание
Существует еще одни момент, который необходимо учитывать в вышеприведенном процессе. Код на С#, который компилируется иа MSIL на шаге 2, совсем не обязательно должен находиться в одном файле. Имеется возможность разнести код приложения по нескольким исходным файлам, которые затем будут скомпилированы в единый модуль. Этот процесс известен под названием "связывание" н является чрезвычайно полезным. Причина такого положения дел заключается в том, что работать с несколькими не очень большими файлами намного легче, чем с одним огромным. Можно выделить логически связанный код в отдельный файл, работа иад которым будет вестись совершенно независимо и о котором можно забыть после того, как произойдет компиляция. Такой подход существенно упрощает выявление конкретных сегментов кода, когда они оказываются нужными, а заодно позволяет командам разработчиков разделить бремя программирования на отдельные куски, которые затем можно выверять без риска повредить правильно работающие сегменты и те части кода, иад которыми трудятся другие программисты.
Что такое С#
Как отмечалось выше, С# — один нз языков программирования, который может использоваться для создания приложений, выполняемых в среде .NET CLR. Этот язык — результат эволюции языков С и C#, созданный компанией Microsoft специально для использования на платформе .NET, Являясь новейшей разработкой, С# конструировался очень тщательно, с учетом наилучших возможностей других языков, предназначенных для решения специфических проблем.
Создавать приложения на С# легче, чем на C#, поскольку синтаксис языка С# более простой, чем синтаксис C#. Тем не менее С# является мощным языком программирования, и имеется мало вещей, которые можно сослать на C# и нельзя на С#. Однако необходимо помнить, что возможности С#, соответствующие наиболее продвинутым возможностям C# (например непосредственный доступ и внесение изменений в системную память), могут быть осуществлены только с помощью кода, помеченного как unsafe (небезопасный). Эти продвинутые способы программирования, как следует уже нз их названия, представляют потенциальную опасность, поскольку они позволяют записывать информацию в критические системные участки памяти с потенциально катастрофическими результатами. Именно по этой причине, а также нз некоторых других соображений мы не будем рассматривать данную тему в этой книге.
Иногда код на С# оказывается более объемным, чем на C#. Это следствие того, что в С# (в отличие от С+ + ) осуществляется контроль безопасности использования типов. С точки зрения непрофессионала это означает, что если некоторые данные отнесены к определенному типу, то впоследствии они не могут самостоятельно преобразовываться в другие типы, Поэтому, существуют строгие правила, которым необходимо следовать при выполнении преобразования из одного типа в другой. Это часто приводит к необходимости писать на С# больший объем кода, чем на C#. Однако взамен мы получаем то преимущество, что программа становится более надежной и ее отладка упрощается, поскольку .NET постоянно следит за тем, к какому типу относится данная переменная в каждый конкретный момент времени, К примеру, в С# мы не можем дать задание: "Возьми 4 банта памяти из этих данных и 10 байтов нз других данных и рассматривай эту область памяти как X", но это не обязательно является недостатком.
С# является всего лишь одним из языков, позволяющих работать в .NET, но на взгляд автора он безусловно лучший. Его главное преимущество заключается в том, что С# — единственный язык, разработанный для .NET Framework "с нуля", н он может использоваться в качестве основного языка для различных версий .NET, которые предназначаются для переноса на другие операционные системы. Для того чтобы некоторые языки — вроде VB.NET — в максимальной степени соответствовали своим предшественникам и прн этом могли работать с CLR, приходится отказываться от поддержки отдельных возможностей библиотеки программ .NET. Напротив, С# позволяет использовать любые возможности, предоставляемые библиотекой программ .NET Framework,
Какие типы приложений могут создаваться на С#
Как уже говорилось, .NET Framework не налагает никаких ограничений на возможные типы создаваемых приложений. С# использует эту систему и также не имеет никаких ограничений, касающихся типов приложений. Тем не менее давайте рассмотрим некоторые наиболее часто встречающиеся типы приложений:
□ Приложения Windows. Это приложения вроде Microsoft Office, имеющие знакомый "Windows-подобный" вид и представление. Создавать такие приложения достаточно просто с помощью модуля .NET Framework, который называется Windows Forms и представляет собой библиотеку управляющих элементов (кнопок, панелей инструментов, меню и т. п.); эта библиотека может использоваться для создания пользовательского интерфейса (user interface, UI) Windows.
□ Web-приложения. Эти приложения представляют собой web-страницы, которые могут просматриваться любым web-браузером. В состав .NET Framework входит мощная система динамического создания содержимого web-страниц, позволяющая идентифицировать пользователя, обеспечивать безопасность и пр. Эта система называется Active Server Pages.NET (ASP.NET — активные серверные страницы .NET); для создания приложений ASP.NET можно применять Web Forms языка С#,
□ Web-службы. Это новый замечательный способ создания гибких распределенных приложений. С помощью web-служб можно обмениваться по Интернету практически любыми данными с использованием единого простого синтаксиса независимо от того, какой язык программирования применялся при создании web-службы и на какой системы она размещена.
Приложениям всех перечисленных типов может потребоваться доступ к базам данных, что осуществляется с помощью раздела ,NET Framework, называемого Active Data Objects.NET (ADO.NET — активные объекты с данными .NET). Также можно использовать и многие другие ресурсы, например, инструменты для создания сетевых компонентов, графического вывода, выполнения сложных математических вычислений и т. д.
С# в этой книге
Второй и третий разделы данной книги посвящены синтаксису и использованию С#, при этом онн практически обходят вниманием -NET Framework. Это совершенно необходимо, поскольку без твердых навыков программирования на С# невозможно использовать .NET Framework. Фактически мы начнем с самых азов, а рассмотрение наиболее сложной темы — объектно-ориентированного программирования (ООП, Object Oriented Programming) — отложим до того момента, когда будут изучены основы. Материал будет излагаться начиная с самых простых принципов, исходя нз предположения, что у читателя отсутствуют какие-либо знания по программированию.
После этого мы окажемся готовы к созданию приложений тех типов, которые перечислены выше. В четвертом разделе настоящей книги будет описано программирование с использованием Windows Forms; в пятом разделе рассматриваются другие связанные с .NET темы (например доступ к базам данных); в шестом разделе вы познакомитесь с созданием web-приложений и web-служб. В заключение будут даны более сложные практические примеры, где будет применена информация из предшествующих разделов.
Пишите программы на C# в простом и четком стиле.
Теперь, когда мы выяснили, что из себя представляет С# и каким образом он вписывается в .NET Framework, настало время заняться грязной работой и написать конкретную программу. На протяжении всей книги мы будем использовать Visual Studio.NET (VS), поэтому первое, что необходимо сделать,— это получить некоторое представление о данной среде разработки. VS является очень большим и очень сложным продуктом, способным навести ужас на тех, кто встречается с ним впервые; однако использовать его для создания несложных приложений на удивление просто. Когда в данной главе мы начнем с ним работать, вы увидите, что немного "поиграть" с программами на С# можно и не обладая большими знаниями. В дальнейшем вам встретятся более сложные операции, которые может выполнять VS, однако на данный момент все, что нам потребуется,— это базовые знания о его возможностях.
Познакомившись с VS, мы создадим два простых приложения. При этом для нас будет важно не столько их программное наполнение, сколько то, что они работают правильно и что мы прошли через все процедуры создания приложений.
Первое приложение, которое мы собираемся создать, будет простым консольным приложением. Консольными называются такие приложения, в которых не используется многооконная графическая среда; поэтому нам не придется беспокоиться о кнопках, меню, организации взаимодействия с указателем мыши и тому подобных вещах. Это приложение будет запускаться нз окна командной строки, и взаимодействие с ним будет организовано весьма простым способом.
Вторым будет приложение Windows Forms. Его внешний вид и работа с ним окажутся очень знакомыми для пользователей Windows, а усилий на его создание потребуется {что удивительно) не так уж много. При этом синтаксис необходимого кода окажется более сложным, хотя во многих случаях нам не придется беспокоиться о деталях.
Приложения обоих типов будут использоваться нами на протяжении следующих двух разделов, причем вначале консольному приложению будет уделяться несколько больше внимания. Дополнительная гибкость окопных приложений не является принципиально важной нри изучении языка С#, в то время как простота консольных приложений позволит нам сосредоточиться на изучении синтаксиса и не беспокоиться о внешнем виде приложения.
При первой загрузке VS на монитор выводится множество окоп, большинство нз которых пусты, а также ряд пунктов меню и иконок, которыми нам предстоит пользоваться, но не волнуйтесь заранее: очень скоро они станут более попятными,
Рис. 2. Visual Studio 2008 (выпущена 19 ноября 2007 г, с 28 октября 2008 г впервые доступна версия на русском языке)
Основное окно, в котором при запуске VS появляется "начальная страница", в дальнейшем будет содержать весь наш код. Оно поделено на части так, чтобы можно было легко перемещаться между файлами, щелкая мышью по имени соответствующего файла. У этого окна имеются и другие функции: в нем могут выводиться графические пользовательские интерфейсы, разрабатываемые для наших проектов, файлы с обычным текстом, HTML, а также различные встроенные в VS инструменты. Все эти функции будут описываться по ходу изложения материала.
Выше основного окна располагаются панели инструментов и меню VS. Здесь могут находиться панели инструментов с са'мыми разнообразными функциональными возможностями: сохранение и загрузка файлов, создание и запуск проектов, отладка управляющих элементов и т. д. Повторим еще раз, что все эти возможности будут обсуждаться по мере возникновения необходимости в них.
Ниже приводится краткое описание основных возможностей VS, пользоваться которыми приходится наиболее часто:
□ Панель Server Explorer и панель Toolbox (инструменты) появляются при движении по ним указателя мыши, открывая различные дополнительные возможности, например, доступ к установкам сервера и службам, а также к элементам построения пользовательских интерфейсов для оконных приложений.
В окне Solution Explorer выводится информация о решении, загруженном в настоящий момент. "Решение" в терминологии Visual Studio обозначает один или несколько проектов вместе с их настройками. Здесь мы можем увидеть различные представления проектов, участвующих в решении: например, из каких файлов они состоят и что в этих файлах содержится.
Окно Properties (свойства) позволяет получить более детальное представление о содержимом проекта; в нем предусмотрена возможность дополнительной настройки отдельных элементов. К примеру* здесь можно изменить внешний вид кнопки приложения Windows.
Окно Task List/Output (список заданий/вывод) содержит информацию, относящуюся к компиляции проектов, а также задачи, которые требуют завершения (они представлены наподобие списка заданий в Microsoft Outlook). Эти задачи могут вводиться вручную, а могут генерироваться VS автоматически.
Может показаться, что-объем новой информации слишком велик, однако не беспокойтесь: пройдет немного времени, и вы привыкнете к Visual Studio. Итак, давайте приступим к созданию самого первого опытного проекта, который предполагает использование многих элементов VS из числа описанных выше.
MONO
Он предоставлял разработчику практически все те возможности, которые доступны Microsoft Visual Studio .NET.
Как построен курс учебника
Схема 1. Структура выполнения работ
Часть 2 Среда программирования на C#
Обычно системы программирования на C# состоят из нескольких частей: среда программирования, язык, стандартная библиотека С и различные библиотеки классов. Рассмотрим типичную среду разработки программ на C#, показанную на рис. 1.1.
Как правило, для того, чтобы выполнить программу на C#, надо пройти шесть этапов (рис. 1.1): редактирование, предварительную (препроцессорную) обработку, компиляцию, компоновку, загрузку и выполнение. Мы остановимся на системе C#, ориентированной на UNIX. Если вы не пользуетесь системой UNIX, обратитесь к справочникам для вашей системы или спросите вашего инструктора, как приспособить эти задачи к вашей операционной среде.
Первый этап представляет собой редактирование файла. Он выполняется с помощью редактора программ. Программист набирает с помощью этого редактора свою программу на C# и, если это необходимо, вносит в нее исправления.
Программа запоминается на вспомогательном запоминающем устройстве, например, на диске. Имена файлов программ на C# часто оканчиваются расширением .С (заметим, что С — прописная буква; некоторые операционные среды C# требуют других расширений, таких как .срр или .схх; для получения более детальной информации смотрите документацию по вашей операционной среде C#). В системе UNIX широко используются два редактора — vi и emacs. Некоторые пакеты C#, такие как Borland C# и Microsoft C/C++, имеют встроенные редакторы, которые органично объединены с операционной средой программирования. Мы предполагаем, что читатель знает, как редактировать программу.
На следующем этапе программист дает команду компилировать программу. Компилятор переводит программу в машинный код (называемый также объектным кодом). В системе C# перед началом этапа трансляции выполняется программа предварительной обработки. Эта программа в C# подчиняется специальным командам, называемым директивами препроцессора, которые указывают, что в программе перед ее компиляцией нужно выполнить определенные преобразования. Обычно эти преобразования состоят во включении других текстовых файлов в файл, подлежащий компиляции, и выполнении различных текстовых замен. Наиболее общие директивы препро- цессора обсуждаются в начальных главах; детальное обсуждение всех особенностей препроцессорной обработки дано в приложениях. Препроцессорная обработка инициируется компилятором перед тем, как программа преобразовывается в машинный код.
Следующий этап называется компоновка. Программы на C# обычно содержат ссылки на функции, определенные где-либо вне самой программы, например, в стандартных библиотеках или в личных библиотеках групп программистов, работающих над данным проектом. Объектный код, созданный компилятором, обычно содержит «дыры» из-за этих отсутствующих частей. Компоновщик связывает объектный код с кодами отсутствующих функций, чтобы создать исполняемый загрузочный модуль (без пропущенных частей). В типичной, основанной на UNIX, системе команда компиляции и компоновки программы на C# обозначается как СС. Чтобы скомпилировать и скомпоновать программу по имени welcom.C, наберите по приглашению UNIX
СС welcom.C и нажмите клавишу return (возврат каретки). Если программа скомпилирова-лась и скомпоновалась правильно, будет создан файл a.out. Это и есть исполняемый загрузочный модуль нашей программы welcome.С. Следующий этап называется загрузка. Перед выполнением программа должна быть размещена в памяти. Это делается с помощью загрузчика, который забирает исполняемый загрузочный модуль с диска и перемещает его в память.
Затем компьютер под управлением своего ЦПУ выполняет поочередно в каждый момент времени по одной команде программы. Чтобы загрузить и выполнить программу в системе UNIX, мы набираем по приглашению UNIX команду a.out и нажимаем клавишу return.
Программа редко работает с первой попытки. Каждый из описанных этапов может окончиться неудачей из-за разного типа ошибок, которые мы обсудим в этой книге. Например, исполняемая программа может пытаться разделить на нуль (операция, не разрешенная в компьютерах так же, как и в арифметике). Это приведет к печати компьютером сообщения об ошибке. Программист должен вернуться к этапу редактирования, внести необходимые исправления и снова провести программу через остальные этапы, чтобы убедиться в правильности сделанных исправлений.
СХЕМА Введение в программирование на C#
Язык C# облегчает структурированный и упорядоченный подход к проектированию компьютерных программ. Теперь мы познакомимся с программированием на C# и представим несколько примеров, иллюстрирующих многие важные свойства C#. Каждый пример посвящен одному оператору. В главе 2 мы детально рассмотрим структурное программирование на C#. Затем мы используем структурный подход при изложении материала главы 5. Начиная с шестой главы, мы изучим объектно-ориентированное программирование на C#. Из-за особой важности объектно-ориентированного программирования в этой книге каждая из первых пяти глав заканчивается разделом, озаглавленным «Размышления об объектах». Эти специальные разделы знакомят с основными идеями объектного подхода.
Простая программа: печать строки текста
В С# используются формы записи, которые непрограммисту могут показаться странными. Мы начинаем с рассмотрения простой программы, печатающей строку текста. Программа и результаты ее работы на экране показаны код. 1.2.
Код программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//Первая компьютерная модель выводящая текст
Console.WriteLine("Привет технолог, это первая компьютерная модель на С#");
}
}
}
Результат выполнения:
Привет технолог, это первая компьютерная модель на С# Для продолжения нажмите любую клавишу…
Код. 2.1. Первая компьютерная модель программы выводящая текст
При набирания кода, в окне Error List / Список ошибок рис. 2.1. помогает исправлять ошибки в коде, поскольку в нем выводятся сообщения о том, что необходимо сделать для успешной компиляции проекта. Если два раза щелкнуть мышью на ошибке, указанной в данном окне, то курсор переместится на ту позицию в строке исходного кода, где ошибка содержится (если файл с исходным текстом не был открыт ранее, он откроется в этот момент); это позволяет быстро исправлять промахи. В местах, где обнаружены ошибки, также можно увидеть волнистые линии красного цвета, благодаря чему можно быстро просматривать исходный код для выявления ошибок.
Рис. 2.1 Окно Error List / Список ошибок
Обратите внимание на то, что местонахождение ошибки указывается в виде номера строки. В текстовом редакторе VS номера строк по умолчанию не выводятся, однако такой режим вполне достоин того, чтобы в него перейти. Для этого потребуется установить соответствующий флажок в диалоговом окне Options / Опции (Параметры), в которое можно перейти через пункт меню Tools / Сервис | Options / Опции (Параметры) рис. 2.2.
Рис. 2.2 Окно параметров для вывода номера строк
Итоги: В данной главе вы познакомились с некоторыми инструментами, которые будут использоваться в остальной части книги. Мы в общих чертах — рассмотрели среду разработки Visual Studio.NET и использовали ее для создания двух типов приложений. Более простое из них консольное приложение; его вполне достаточно для решения большинства наших задач, и оно позволяет нам сосредоточиться на основах программирования на С#. Оконные приложения несколько сложнее, однако визуально они оказываются более впечатляющими н наглядными для пользователей, знакомых с оконной средой (т. е. почти для всех). Теперь, когда вы научились создавать простые приложения, можно перейти к настоящему изучению С#. Следующая глава посвящена основам синтаксиса С# и структуре программ на С#, которые необходимо освоить, прежде чем переходить к более сложным объектно-ориентированным методам. А изучив их, мы сможем перейти к вопросу об использовании С# для получения доступа к тем большим возможностям, которые предоставляет .NET Framework. Базовый синтаксис
2.1 Структура кода в моделирование
Код на С# представляет собой последовательность операторов, каждый из которых оканчивается точкой с запятой. С# — язык, обладающий блочной структурой; другими словами, каждый оператор является частью некоторого блока кода. Эти блоки, для обозначения начала и конца которых используются фигурные скобки { и }, могут содержать произвольное количество операторов или не содержать их вовсе. Обратите внимание, что фигурные скобки не сопровождаются точками с запятой. Итак, простой блок программы на С# может иметь следующий вид:
{
Строка кода 1, оператор 1;
…
Строка кода х, оператор y;
}
В этом простом примере кода использованы отступы, чтобы сделать запись на С# более наглядной.
Блоки могут быть вложены друг в друга (т. е. блоки могут содержать в себе другие блоки), и в таком случае величина отступа у вложенных блоков должна быть больше:
{
Строка кода 1, оператор 1;
{
Строка кода 2, оператор 2;
Строка кода 3, оператор 3;
}
Строка кода 4, оператор 4;
}
В коде на С# необходимо использовать комментарии. Для того чтобы обозначить комментарии по первому способу, используют сочетания символов /* в начале комментария, и */ в конце комментария. Другой подход к оформлению комментария состоит в использовании в качестве его начала символов //.
/* Длинный комментарии */
// Короткие комментарии
Переменные
Переменные тесно связаны с хранением данных. По существу, переменные в памяти компьютера можно представить в виде коробочек, лежащих на полке. Такие коробочки могут использоваться для того, чтобы что-нибудь в них класть, а затем вынимать обратно, или же можно просто заглянуть в них и узнать, есть там что-то или нет. Все это относится и к переменным, в которые мы можем помещать данные, а затем брать их оттуда или просматривать по мере необходимости.
Эти коробочки можно представить различных размеров и форм, причем разные объекты могут помещаться только в специально предназначенные для них коробочки.
Для того чтобы использовать коробочку (переменную) её необходимо объявить. Это означает, что ей должны быть присвоены имя и тип. Как только переменная объявлена, она может использоваться как хранилище для данных того типа, который указан в ее объявлении.
Объявления переменных:
{
тип переменной, её имя;
}
В табл. 2.1 приводятся некоторые имена типов и указывается, какому типу в библиотеке .NET Framework они соответствуют.
Таблица 2.1 Имена некоторых типов переменных
Тип Тип .NET Framework Допустимые значения sbусе System.SByte Целое в диапазоне от -128 до 127 byte System.Byte Целое в диапазоне от 0 до 255 short System.Int16 Целое в диапазоне от -32 768 до 32 767 uahort System.UInt16 Целое в диапазоне от 0 до 65 535 int System.Int32 Целое в диапазоне от -2 147 483 648 до 2 147 483 647 uint System.UInt32 Целое в диапазоне от 0 до 4 294 967 295Буква "u", встречающаяся перед некоторыми из имен, является сокращением от слова "unsigned" ("без знака"). Это говорит о том, что в переменных соответствующего типа не могут храниться отрицательные значения.
Естественно, что кроме целых чисел нам требуется хранить значения с плавающей запятой, которые представляют нецелые числа табл. 2.2.
Таблица 2.2 Имена некоторых типов переменных с плавающей запятой
Тип Тип .NET Framework Допустимые значения float System.Singleот 1,5х10-45 до 3,4х1038
double System.Doubleот 5,0х10-324 до 1,7х10308
Кроме численных типов, существует еще простые типы переменных табл. 2.3.
Таблица 2.2 Имена простых типов переменных
Тип Тип .NET Framework Допустимые значения string System.String Последовательность символов bool System.Boolean Логическое значение (Boolean), которое может принимать значения true (истина) или false (ложь)Логический тип bool — один из наиболее часто используемых в С# типов переменной; аналогичные типы часто встречаются в кодах на других языках программирования. Использование переменной, которая может принимать только два значения — либо true, либо false,— создает очень важную возможность ветвления логики приложения. В качестве простого примера представьте себе, какое огромное количество вопросов допускают d качестве ответа true или false ("да" или "нет"). Сравнение значений переменных и проверка допустимости введенной информации как раз представляют собой примеры программного использования логических переменных (эти примеры вскоре станут предметом нашего изучения). Пример использования переменных:
Имена переменные. В качестве имени переменной можно использовать произвольную последовательность символов.
Основные правила при именовании переменных следующие:
· Первый символ в имени переменной должен быть либо буквой, либо символом подчеркивания _;
· Последующими символами могут быть буквы, символ подчеркивания или цифры.
Кроме того, существуют определенные ключевые слова, которые обладают особым смыслом с точки зрения компилятора С#, например, waste или raw, Если по ошибке используется одно из них, компилятор выразит свое недовольство.
Следующие имена переменных являются правильными:
myRawGOST
GOST1
_waste
Не правильные имена переменных:
usernamespace
56Raw
I’ go-All-Over
Пример использование имент переменных:
Код программы:
static void Main(string[] args)
{
int myNumber;
string myRaw;
MyNumber = 320;
MyRaw = "Количество горбуши на складе";
Console.WriteLine("{0} {1} кг.", MyRaw, MyNumber);
}
Результат выполнения:
Количество горбуши на складе 320 кг.
Для продолжения нажмите любую клавишу…
Описание работы программы:
Объявление переменных осуществляет следующий код:
int MyNumber;
string MyRaw;
Следующие присваиваем им значения:
MyNumber = 320;
MyRaw = "Количество горбуши на складе;
Переменные выводятся с помощью следующей строки:
Console.WriteLine("{0} {1} кг.", MyRaw, MyNumber);
Это простой метод вывода текста на консоль, которым приводился в первом примере, но на этот раз выводим переменные. Строка, которую выводим - "{0} {1} кг.", - в примере, приведенном выше, значение {0} принадлежит переменной MyRaw, а значение {1} соответсвенно MyNumber. Этим методом пользуются для вывода на консоль.
Практическая часть
В практической части студент выполняет работы в зависимости от количества заработанных баллов. В работе представлены шесть практических работ начиная от моделирования приема сырья и заканчивая моделированием режимов его обработки и выпуском заданного вида продукта.
Перечень практических работ
1. Моделирование процесса приема сырья
2. Моделирование продуктового расчета
3. Совершенствование существующих программ (tex, исследователь, и др.)
4. Моделирование технологических режимов
5. Моделирование качество готового сырья
6. Моделирование (рыбо- мясо- молоко- перерабатывающего) производства
Цель практических работ
Научится применять компьютерное моделирование на практике своего направления
Используйте для создания программ методологию стандартных блоков. Избегайте заново изобретать колесо. Используйте существующие кусочки программ — это называется повторным использованием кодов и служит основой объектно-ориентированного программирования.
Практическая работа 1
Цель работы – изучить нормативную документацию и создать модель приема сырья и вывода его качественных показателей.
Задачи
- изучить нормативную документацию согласна выбранного варианта
- использую операторы из первой главы спроектировать модель приема сырья
Варианты работы
Вариант Наименование сырья Способ обработки 1 Горбуша сырец, мороженая, охлажденная 2 Минтай тоже 3 Треска тоже 4 Навага тоже 5 Камбала тоже 6 Креветка живая, охлажденная 7 Еж морской тожеПример выполнения работы
1. Создайте новый проект консольного приложения, выбрав пункт файл создать проект рис. р.1.1.
Рис. р.1.1 Создание нового проекта
2. В окне создания проекта выберите консольное приложение и задайте ему имя например «Project1» рис. p.1.2.
Рис. р.1.2. Выбор шаблона и задание имя проекта
3.Нажмите на кнопку ОК.
4. После того как проект будет инициализирован добавляете в файл свои строки. Ниже приведен пример модели приема сырья карася и сазана мороженого код. p.1.1.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Rabota1
{
class Program
{
static void Main(string[] args)
{
* программа модели приема сырья */
Console.WriteLine("Программа для моделирования приема сырья \n");
Console.WriteLine("Прием сырья:");
Console.WriteLine("1. Крась мороженый (ГОСТ 1168-86)");
Console.WriteLine("2. Сазан мороженый (ГОСТ 1168-86)");
Console.Write("Выбирите принятую рыбу на производство, 1 или 2: ");
int var = Convert.ToInt16(Console.ReadLine());
if (var == 1)
{
//код программы карась
Console.WriteLine("Выбрано сырье карась мороженый");
half:
Console.WriteLine("----------------------------------------");
Console.WriteLine("1. Инвормацию о нормативном докумете");
Console.WriteLine("2. Принять сырье");
Console.Write("Выберите пункт: ");
int var1 = Convert.ToInt16(Console.ReadLine());
if (var1 == 1)
{
Console.WriteLine("----------------ГОСТ 1168-86 - Рыба мороженая---------------");
Console.WriteLine("------------------------------------------------------------");
Console.WriteLine("| Наименование | Характеристика и норма для сортов |");
Console.WriteLine("| показателя | первого | второго |");
Console.WriteLine("------------------------------------------------------------");
Console.WriteLine("| Внешний вид |Поверхность рыбы чистая, естественной |");
Console.WriteLine("|(после размо- | окраски, присущей рыбе данного вида |");
Console.WriteLine("| раживания) | | |");
Console.WriteLine("| | | потускневшая |");
Console.WriteLine("| | | поверхность |");
Console.WriteLine("------------------------------------------------------------");
Console.WriteLine("| Разделка | | |");
Console.WriteLine("| | отклонение не более чем на: |");
Console.WriteLine("| | 1 см | 2 см |");
Console.WriteLine("------------------------------------------------------------");
Console.WriteLine("| Консистенция |Плотная, присущая рыбе данного вида. |");
Console.WriteLine("|(после размо- | |Допускается ослабе-|");
Console.WriteLine("| раживания) | |вшая, но не дряблая|");
Console.WriteLine("------------------------------------------------------------");
Console.WriteLine("| Запах | Свойственный свежей рыбе, |");
Console.WriteLine("|(после размо- | без порочащих признаков |");
Console.WriteLine("| раживания или | | кисловатый запах |");
Console.WriteLine("| варки) | | в жабрах |");
Console.WriteLine("------------------------------------------------------------");
goto half;
}
else
{
int indic1, indic2, indic3, indic4; //объявим переменные
int indic11, indic12, indic13, indic14;
Console.Write("Поверхность рыбы чистая, естественной окраски? 0-НЕТ 1-ДА ");
indic1 = Convert.ToInt16(Console.ReadLine());
if (indic1 == 1)
{
Console.Write("Поверхность потускневшая? 0-НЕТ 1-ДА");
indic11 = Convert.ToInt16(Console.ReadLine());
if (indic11 == 1)
{
Console.WriteLine("Сырье второго сорта");
}
else
{
}
}
else
{
Console.WriteLine("Разделка 2 см? 0-НЕТ 1-ДА");
Console.WriteLine("Консистенция плотная? 0-НЕТ 1-ДА");
Console.WriteLine("Консистенция ослабевшая? 0-НЕТ 1-ДА");
Console.WriteLine("Запах свойственный свежей рыбе? 0-НЕТ 1-ДА");
Console.WriteLine("Кисловатый запах в жабрах? 0-НЕТ 1-ДА");
}
}
// ввывод данных о сырье
Console.WriteLine("Сырье первого сорта");
Console.WriteLine("Сырье второго сорта");
Console.WriteLine("Сырье на кормовую муку");
}
else
{
//код тот же что и у карася
}
}
}
}
Код. p.1.1. Модель приема сырья карася и сазана мороженого
Для наглядности моделирования приема сырья приведен алгоритм построения программы рис.p.1.3.
Рис. р.1.3 Алгоритм компьютерной модели приема сырья
Компьютерное моделирование
Цель работы: рассчитать воспроизводимость опыта
ТерминыМашинный язык — это «природный язык» определенного компьютера.
Язык ассемблера - аббревиатуры, напоминающие английский язык
Компиляторы - программы трансляции, которые преобразуют программы на языках высокого уровня в машинные коды, называются
Языки высокого уровня - который выглядит почти так же, как повседневный английский, и используют общепринятую математическую нотацию
C# — разработан Бьерном Строустропом в начале 80-х годов в Bell Laboratories. Это гибридный язык, он предоставляет возможность программировать и в стиле структурного программирования, и в объектно-ориентированном стиле, и в обоих стилях сразу
Литеральная строка - содержит информацию, без изменения выводимую в отчет.
Язык Smalltalk - разработанный в Центре Исследований Palo Alto компании Xerox. Это чистый объектно-ориентированный язык.
Microsoft Visual Studio (по-русски обычно произносится [майкрософт ви́зуал сту́дио]) — линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств.
C# (произносится си-шарп) — язык программирования, сочетающий объектно-ориентированные и аспектно-ориентированные концепции. Разработан в 1998—2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio.
Linux (полное название GNU/Linux, произносится «гну слэш ли́нукс») общее название UNIX-подобных операционных систем на основе одноимённого ядра и собранных для него библиотек и системных программ, разработанных в рамках проекта GNU. Краткое название Linux распространено потому, что первой, наиболее популярной и единственной системной библиотекой, использовавшейся в системах на базе ядра Linux, была GNU C Library (glibc).
Microsoft Windows (произносится /ˈwɪndoʊz/) — семейство проприетарных операционных систем компании Майкрософт (Microsoft).
Microsoft .NET Framework — программная технология, предназначенная для создания как обычных программ, так и веб-приложений (в качестве платформы для разработок впервые предложена корпорацией Microsoft).
Стьюдент - это псевдоним английского математика и химика Госсета
Приложение2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace проверка_воспроизводимости
class Program
{
static void Main(string[] args)
{
*Пример эксперимента выхода вареной рыбы y(%), зависячая от
двух факторов: тепературы и времени запекания*/
int temp1=60, temp2=70, temp3=80, temp4=90;
int time1=15, time2=18, time3=10, time4=12;
double make1 = 95.5, make2 = 96.8;
double make3 = 98.8, make4 = 96.1;
double make5 = 75.4, make6 = 76.1;
double make7 = 65.5, make8 = 74.1;
double yi1 = (make1 + make2) / 2;
double yi2 = (make3 + make4) / 2;
double yi3 = (make5 + make6) / 2;
double yi4 = (make7 + make8) / 2;
double s1 = System.Math.Round((1 / 2 - 1) * System.Math.Pow((make1 - yi1), 2) * System.Math.Pow((make2 - yi1), 2), 2);
double s2 = System.Math.Round((1 / 2 - 1) * System.Math.Pow((make3 - yi2), 2) * System.Math.Pow((make4 - yi2), 2), 2);
double s3 = System.Math.Round((1 / 2 - 1) * System.Math.Pow((make5 - yi3), 2) * System.Math.Pow((make6 - yi3), 2), 2);
double s4 = System.Math.Round((1 / 2 - 1) * System.Math.Pow((make7 - yi4), 2) * System.Math.Pow((make8 - yi4), 2), 2);
double s1b = s1 - s1 - s1;
double s2b = s2 - s2 - s2;
double s3b = s3 - s3 - s3;
double s4b = s4 - s4 - s4;
таблица для вывода результатов
Console.WriteLine("-------------------------------------------------------");
Console.WriteLine("| Номер | Условия | Результаты | _ | |");
Console.WriteLine("| серии | опытов | измерений | уi,% | Si^2 |");
Console.WriteLine("| опытов|------|------ |------|------| | |");
Console.WriteLine("| | Темп | Время | 1 | 2 | | |");
Console.WriteLine("-------------------------------------------------------");
Console.WriteLine("| 1 | {0} | {1} | {2} | {3} | {4} | {5} |", +
temp1, time1, make1, make2, yi1, s1b);
Console.WriteLine("| 2 | {0} | {1} | {2} | {3} | {4} | {5} |", +
temp2, time2, make3, make4, yi2, s2b);
Console.WriteLine("| 3 | {0} | {1} | {2} | {3} | {4} | {5} |", +
temp3, time3, make5, make6, yi3, s3b);
Console.WriteLine("| 4 | {0} | {1} | {2} | {3} | {4} | {5} |", +
temp4, time4, make7, make8, yi4, s4b);
Console.WriteLine("-------------------------------------------------------");
double MaxS1 = System.Math.Max(s1b, s2b);
double MaxS2 = System.Math.Max(s3b, s4b);
double MaxS0 = System.Math.Max(MaxS1, MaxS2);
double Gp = System.Math.Round(MaxS0 / (s1b + s2b + s3b + s4b),3);
if (Gp <= 0.907)
{
Console.WriteLine("Эксперимент воспроизводим {0}<0.907",Gp);
}
else
{
Console.WriteLine("Эксперимент не воспроизводим {0}>0.907", Gp);
}
}
}
Литература· Эндрю Троелсен Язык программирования C# 2005 (Си Шарп) и платформа .NET 2.0 = Pro C# 2005 and the .NET 2.0 Platform. — 3-е изд. — М.: «Вильямс», 2007. — С. 1168. — ISBN 1-59059-419-3
· Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер C# 2008 и платформа .NET 3.5 для профессионалов = Professional C# 2008. — М.: «Диалектика», 2008. — ISBN 978-5-8459-1458-3
· Робинсон С., Корнес О. и др. C# для профессионалов//М., Лори, 2005 - С.123. ISBN 1-86100-499-0
· Гордон Хогенсон C++/CLI: язык Visual C++ для среды .NET = C++/CLI Primer. — М.: «Вильямс», 2007. — С. 464. — ISBN 1-59059-705-2
· http://ru.wikipedia.org/wiki/Ubuntu - Ubuntu Linux
· http://ru.wikipedia.org/wiki/Windows_7 - Microsoft Windows 7
· http://ru.wikipedia.org/wiki/Microsoft_Windows - Microsoft Windows
· http://ru.wikipedia.org/wiki/.NET_Framework - .NET Framework
· http://customize.ru/ themes_stylexp4.html - Скриншоты Windows Vista
· http://www.linux.org.ru/view-news.jsp?year=1999&month=11§ion=3 – Архив скриншотов Linux 1999 ноябрь