<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ProGrammer &#187; Программные продукты и пакеты</title>
	<atom:link href="/?feed=rss2&#038;cat=16" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Сайт о программировании, математике и моделировании</description>
	<lastBuildDate>Sat, 21 Jan 2012 17:31:04 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>ПОСТРОЕНИЕ ЗАЩИЩЕННОГО ПРИЛОЖЕНИЯ НА DOTNET</title>
		<link>/?p=321</link>
		<comments>/?p=321#comments</comments>
		<pubDate>Fri, 01 Apr 2011 16:31:24 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Информатика и программирование]]></category>
		<category><![CDATA[Программные продукты и пакеты]]></category>
		<category><![CDATA[.NET Framework]]></category>
		<category><![CDATA[жизненный цикл]]></category>
		<category><![CDATA[защита информации]]></category>
		<category><![CDATA[программное обеспечение]]></category>
		<category><![CDATA[уязвимости]]></category>

		<guid isPermaLink="false">/?p=321</guid>
		<description><![CDATA[В данной статье будет рассмотрен процесс создания защищенного программного комплекса на платформе .Net и даны рекомендации по повышению его уровня безопасности. Жизненный цикл программного комплекса состоит из следующих процессов: 1) Разработка технического задания. 2) Разработка программы: - кодирование; - отладка; - тестирование; 3) Разработка документации. 4) Внедрение. 5) Поддержка. С точки зрения безопасности, при разработке]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В данной статье будет рассмотрен процесс создания защищенного программного комплекса на платформе .Net и даны рекомендации по повышению его уровня безопасности. Жизненный цикл программного комплекса состоит из следующих процессов:</p>
<p style="text-align: justify;">1) Разработка технического задания.</p>
<p style="text-align: justify;">2) Разработка программы:</p>
<p style="text-align: justify;">- кодирование;</p>
<p style="text-align: justify;">- отладка;</p>
<p style="text-align: justify;">- тестирование;</p>
<p style="text-align: justify;">3) Разработка документации.</p>
<p style="text-align: justify;">4) Внедрение.</p>
<p style="text-align: justify;">5) Поддержка.</p>
<p style="text-align: justify;">С точки зрения безопасности, при разработке технического задания важно обозначить функции, которые будет выполнять программа, а также определить какие требования  предъявляются к системе безопасности программы. Исходя из разрабатываемых функций можно сделать вывод, какими уязвимостями будет обладать программа.<span id="more-321"></span></p>
<p style="text-align: justify;">В таблице 1 в первой колонке перечислены свойственные платформе .Net уязвимости, во второй примеры функций, которые обладают этими уязвимостями, а в третьей механизмы по закрытию данной уязвимости. Здесь не указана уязвимость переполнения буфера, так как платформе .Net она не свойственна.</p>
<p style="text-align: justify;">Таблица №1. Уязвимости платформы .Net</p>
<table style="text-align: justify;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="121" valign="top">Уязвимость</td>
<td width="151" valign="top">Пример функции</td>
<td width="367" valign="top">Механизмы защиты от уязвимости</td>
</tr>
<tr>
<td width="121" valign="top">Ошибки канонизации</td>
<td width="151" valign="top">Работа с файлами</td>
<td width="367" valign="top">- проверка пути на допустимые символы</p>
<p>- получение обсолютного пути файла, перед   обращением к нему(System.IO.Path.GetFullPath для Windows, Request.MapPath для   ASP.Net)</p>
<p>- настройка ACL, CAS</td>
</tr>
<tr>
<td width="121" valign="top">Межсайтовое кодирование</td>
<td width="151" valign="top">Форум или иной обмен информации между   пользователя в формате HTML</td>
<td width="367" valign="top">- очистка данных введенных пользователем от   кода HTML (HttpUtility.HTML.Encode())</p>
<p>- ограничение набора используемых тэгов HTML</p>
<p>- атрибут ValidateRequest защиты ASP.Net</td>
</tr>
<tr>
<td width="121" valign="top">Вставка SQL</td>
<td width="151" valign="top">Работа с базой данных</td>
<td width="367" valign="top">- настройка разрешений SQL</p>
<p>- использование хранимых процедур</p>
<p>- использование параметризированных команд SQL</p>
<p>- очистка вводимых пользователем данных от   символом апострофа и процента</td>
</tr>
<tr>
<td width="121" valign="top">Отказ в обслуживании</td>
<td width="151" valign="top">Клиент-серверное взаимодействие</td>
<td width="367" valign="top">- аутентификация и авторизация до выделения   ресурсов используя средства системы, базы данных, платформы .Net либо ASP.Net</p>
<p>- закрытие подключения при генерировании   ошибки. Для отловки ошибки использовать блок try catch</p>
<p>- выявление подозрительной активности и   переход в более безопасный режим либо блокирование</td>
</tr>
<tr>
<td width="121" valign="top">Использование посредника</td>
<td width="151" valign="top">Передача данных по сети</td>
<td width="367" valign="top">- шифрование данных передаваемых по сети,   использую протоколы SSL, IPSec, HTTPS</p>
<p>- фильтрация пакетов маршрутизатором</p>
<p>- фильтрация пакетов аппаратным сетевым   экраном</p>
<p>- фильтрация пакетов программным сетевым   экраном</td>
</tr>
<tr>
<td width="121" valign="top">Взлом паролей</td>
<td width="151" valign="top">Аутентификация пользователей с помощью паролей</td>
<td width="367" valign="top">- ограничение попыток число ввода пароля</p>
<p>- выявление подозрительной активности и переход   в более безопасный режим либо блокирование</td>
</tr>
<tr>
<td width="121" valign="top">Криптографический взлом</td>
<td width="151" valign="top">Шифрование</td>
<td width="367" valign="top">-использование надежных методов шифрования,   хеширования и цифровой подписи (классы rijndael, RSACryptoServiceProvider,   MD5CryptoServiceProvider, SHA512Managed и другие)</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">
<p style="text-align: justify;">Если программа будет обладать теми или иными потенциальными уязвимостями и техническое задание предъявляет требования по их закрытию, то делать это нужно с самого начала разработки приложения, реализуя механизмы по закрытию уязвимостей.</p>
<p style="text-align: justify;">При разработке программы разработчики должны следовать принципам создания многоуровне-защищенного кода, безопасной конфигурации системы и оборудования, строя многоуровневую защиту приложения.</p>
<p style="text-align: justify;">Программу необходимо строить по трем принципам:</p>
<p style="text-align: justify;">1) Принцип разделения привилегий.  Пользователей надо классифицировать, например, по членству в группах пользователей Windows, роли в базе данных или собственным способами. У каждой группы пользователей должны быть свои привилегии. После разделения привилегий нужно проводить аутентификацию и авторизацию пользователей. Система .Net имеет мощные встроенные средства для проведения этих операций (Windows.Identity, Windows.Principal, PrincipalPermission, интерфейсы System.Security.Principal.IIdentity, System.Security.Principal.IPrincipal, классы  System.Security.Principal.GenericIdentity, System.Security.Principal. GenericPrincipal, средства аутентификации и авторизации ASP.Net). Разделение привилегий можно также проводить не только на уровне пользователей, но и на уровне приложений. Для этого в .Net имеет средство CAS позволяющее проводить разграничение доступа приложений .Net не хуже чем пользователей.</p>
<p style="text-align: justify;">2) Принцип наименьших привелегий. Программа должна предоставлять пользователю минимум ресурсов системы, сервера, базы данных, необходимых ему для работы.  Рекомендуется разрабатывать приложение с правами обычного пользователя.</p>
<p style="text-align: justify;">3) Принцип уменьшения поверхности атаки. Приложение должно предоставлять пользователю простейший из возможных интерфейсов и предоставлять пользователям (и другим приложениям) минимум способов ввода запросов.</p>
<p style="text-align: justify;">Любые данные введенные пользователем должны быть тщательно проверены и пройти три этапа обработки, перед тем как использоваться:</p>
<p style="text-align: justify;">1) Ограничение. Все данные не соответствующие типу, длине, формату и диапазоны должны быть отклонены. Для этого можно использовать строгое определение типа, регулярные выражения, элементы управления ASP.Net, свойство String.Length, сравнение типизированных данных.</p>
<p style="text-align: justify;">2) Отклонение. Данные содержащие известные вредоносные значения и фразы должны быть отклоненты. Для этой цели удобно использовать регулярные выражения.</p>
<p style="text-align: justify;">3) Очистка. Символы, имеющие особое значение для приложения должны быть очищены с помощью функции замены.</p>
<p style="text-align: justify;">В случае возникновения не штатной ситуации при работе приложения (ошибки), пользователю необходимо выводить минимум информации об ошибке, а подробную информацию об ошибке записывать в журнал ошибок, куда есть доступ только у администратора . Например, если из за неправильного синтаксиса SQL-команды приложению не удалось сформировать отчет, то пользователю достаточно вывести сообщение «ошибка формирования отчета», а информацию о причине и SQL-команде записать в журнал. Такой подход даст пользователю понятную ему информацию, а потенциальному злоумышленнику минимум сведений о внутреннем устройстве приложения, что уменьшит шансы на успешное проведение атаки. В то же время у администратора будет вся необходимая информация об инциденте.</p>
<p style="text-align: justify;">Также при разработке программы полезным будет создать средства мониторинга и аудита, а также функцию по оповещению разработчиков об ошибке и функцию по обновлению приложения.</p>
<p style="text-align: justify;">В некоторых случаях, злоумышленник может попытаться подменить компоненты программы. Для защиты компонентов программы от подмены, сборки программы нужно подписывать строгим именем. Подпись сборок, запрет на вызов неподписанных сборок и сохранения закрытого ключа в тайне делает задачу подмены компонента очень сложной.</p>
<p style="text-align: justify;">При разработке приложения следует избегать вызова внешних компонентов, так как не следует доверять стороннему разработчику. Особенно нужно избегать вызова неуправляемого кода, на который не действуют разграничения CAS и который может содержать уязвимости переполнения буфера. Это существенно снижает уровень безопасности. Если же это необходимо, такие компоненты следует вызывать с наименьшими привилегиями и проверять хэш компонента перед вызовом. Хранимое значение хэш должно быть защищено (например, подписью сборки).</p>
<p style="text-align: justify;">Для тестирования программы существуют разные подходы. Разработчик может использовать упреждающее тестирование, создавая методы тестирования методов, до написания самых методов. Для тестирования модулей можно использовать собственные средства или средства сторонних компаний, например утилиту NUnit, FxCop, сетевой монитор, Application Center Test, Permission View, PEVerify. Если в ходе проведения тестирования были обнаружены недостатки, их нужно устранить и провести тестирование заново.</p>
<p style="text-align: justify;">Оттестировав программу,  нужно разработать документацию. В документации должна быть указана информация по настройке и экспуатации программы. Эта информация поможет администраторам и пользователям лучше разобраться в программе и, как следствие, возможно, поможет избежать некоторых ошибок в процессе использования программы, в том числе ошибок безопасности.</p>
<p style="text-align: justify;">Следующим этапом создания программного комплекса является внедрение. Приложение нужно устанавливать с минимальным набором пользовательских функций. Так как большинство пользователей не меняют настройки по умолчанию при установке, то об этом нужно позаботиться разработчику, сделав так, чтобы по умолчанию ставилось минимум функций снижающих уровень защиты приложения. Но у пользователя должна быть возможность изменить перечень устанавливаемых функций. Также, при установке рекомендуется изменение некоторых стандартных параметров, например, изменение номера порта, через который приложение взаимодействует с сервером.  Данное изменение приведет к тому, что экземпляр программы будет отличатся от других экземпляров этой программы, установленных в других местах,  и , в случае массовой атаки таких приложений по номеру порту, программа с измененным номером порта не пострадает.</p>
<p style="text-align: justify;">Если программа многопользовательская, то администраторам нужно завести учетные записи пользователей,  разграничить права доступа в соответствии с политикой безопасности и научить пользователей пользоваться программой. В этом им поможет разработанная документация.</p>
<p style="text-align: justify;">Заключительным этапом в последовательности жизненного цикла програмного обеспечения является поддержка. После внедрения приложения необходимо поддерживать его защиту, проводя мониторинг атак, выполняя аудит, обнаруживая не закрытые уязвимости приложения, а также выпуская исправления системы безопасности и устанавливая их. Для аудита и мониторинга можно использовать средства Windows, такие как аудит системы и аудит ресурсов, средства базы данных, например, монитор активности, а также средства программного обеспечения, сетевого монитора и др.</p>
<p style="text-align: justify;">Если в процессе эксплуатации программы у разработчика появилась информация об уязвимости, то ему необходимо заново пройти по всем этапам жизненного цикла приложения от технического задания на устранение уязвимости, до выпуска обновлений, внедрения и поддержки.</p>
<p style="text-align: justify;">Платформа .NET Framework содержит гораздо более надежный набор функций обеспечения безопасности, чем любая другая среда разработки, когда-либо выпущенная Microsoft. Если разработчик программного обеспечения будет следовать рекомендациям, описанным в данной статье, это не исключит, но существенно снизит вероятность успешного проведения атаки против програмного комплекса.</p>
]]></content:encoded>
			<wfw:commentRss>/?feed=rss2&#038;p=321</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Платформа Microsoft.NET как инструмент многоагентного моделирования</title>
		<link>/?p=243</link>
		<comments>/?p=243#comments</comments>
		<pubDate>Sat, 15 Jan 2011 13:14:05 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Инструменты разработки многоагентных систем]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Prolog]]></category>
		<category><![CDATA[многоагентные системы]]></category>
		<category><![CDATA[язык моделирования]]></category>

		<guid isPermaLink="false">/?p=243</guid>
		<description><![CDATA[Платформа Microsoft.NET является одной из наиболее перспективных платформ для разработки программного обеспечения в настоящее время.  Это наиболее современная и перспективная платформа для коммерческих приложений. Среда разработки MS Visual Studio 2005 включает в себя такие языки программирования как: Visual Basic, C#, C++, J#. Интерес представляет язык C#, который обладает следующими преимуществами: компонентно-ориентированное программирование; объектная ориентированность; безопасный ]]></description>
			<content:encoded><![CDATA[<p>Платформа Microsoft.NET является одной из наиболее перспективных платформ для разработки программного обеспечения в настоящее время.  Это наиболее современная и перспективная платформа для коммерческих приложений. Среда разработки MS Visual Studio 2005 включает в себя такие языки программирования как: Visual Basic, C#, C++, J#. Интерес представляет язык C#, который обладает следующими преимуществами:</p>
<p><span id="more-243"></span></p>
<ul>
<li>компонентно-ориентированное программирование;</li>
<li>объектная ориентированность;</li>
<li>безопасный  код;</li>
<li>унифицированная система типизации;</li>
<li>поддержка событийно-ориентированного программирования;</li>
<li>«родной» язык для создания приложений в среде .NET;</li>
<li>объединение лучших идей современных языков программирования: Java, C++, Visual Basic .</li>
</ul>
<p style="text-align: justify;">Данный язык программирования вобрал лучшие черты целого ряда своих предшественников. Несмотря на весьма существенные различия между компонентной объектной моделью COM (основного стандарта Microsoft для компонентного проектирования и реализации программного обеспечения) и моделью Java Beans (базовым стандартом Sun Microsystems для компонент),  язык программирования C# имеет довольно много общего с языком Java. Использование МАС, основанной на языке традиционного программирования, в отличие от языка искусственного интеллекта (Lisp, Prolog и т.п.), упростит &laquo;интегрированность&raquo; МАС в информационную систему и снизит требования к быстродействию и емкости памяти.</p>
]]></content:encoded>
			<wfw:commentRss>/?feed=rss2&#038;p=243</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Достоинства и недостатки Ассемблера</title>
		<link>/?p=186</link>
		<comments>/?p=186#comments</comments>
		<pubDate>Fri, 03 Dec 2010 19:34:43 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Описание языков программирования]]></category>
		<category><![CDATA[ассемблер]]></category>

		<guid isPermaLink="false">http://s12.localhost/?p=186</guid>
		<description><![CDATA[Команды языка ассемблера один в один соответствуют командам процессора и фактически, представляют собой удобную символьную форму записи команд и аргументов. Также, язык ассемблера обеспечивает связывание частей программы и данныx через метки, выполняемое при ассемблировании (для каждой метки высчитывается адрес, после чего каждое вхождение метки заменяется на этот адрес).  Поскольку системы команд микропроцессоров различаются, каждый процессор]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Команды языка ассемблера один в один соответствуют командам процессора и фактически, представляют собой удобную символьную форму записи команд и аргументов. Также, язык ассемблера обеспечивает связывание частей программы и данныx через метки, выполняемое при ассемблировании (для каждой метки высчитывается адрес, после чего каждое вхождение метки заменяется на этот адрес).  Поскольку системы команд микропроцессоров различаются, каждый процессор имеет свой набор команд на языке ассемблера и свои ассемблеры.<span id="more-186"></span></p>
<p style="text-align: justify;">Обычно программы или участки кода пишутся на языке ассемблера в случаях, когда разработчику критически важно оптимизировать такие параметры, как быстродействие (например, при создании драйверов) и размер кода (загрузочные сектора, программное обеспечение для микроконтроллеров и процессоров с ограниченными ресурсами, вирусы, навесные защиты).</p>
<p style="text-align: justify;">Большинство современных компиляторов позволяют комбинировать в одной программе код, написанный на разных языках программирования. Это позволяет быстро писать сложные программы используя высокоуровневый язык, не теряя быстродействия в критических ко времени задачах, используя для них части написанные на языке ассемблера. Комбинирование достигается несколькими приемами:</p>
<p style="text-align: justify;">Вставка фрагментов на языке ассемблера в текст программы (специальными директивами языка) или написание процедур на языке ассемблера. Способ хороший для несложных преобразований данных, но полноценного ассемблерного кода — с данными и подпрограммами, включая подпрограммы с множеством входов и выходов, не поддерживаемых высокоуровневыми языками, с помощью него сделать нельзя.</p>
<p><strong> Достоинства языка ассемблера</strong></p>
<p style="text-align: justify;">Максимально оптимальное использование средств процессора, использование меньшего количества команд и обращений в память, и как следствие — большая скорость и меньший размер программы. Использование расширенных наборов инструкций процессора (MMX, SSE, SSE2, SSE3)</p>
<p style="text-align: justify;">Доступ к портам ввода-вывода и особым регистрам процессора (в большинстве ОС эта возможность доступна только на уровне модулей ядра и драйверов)</p>
<p style="text-align: justify;">Возможность использования самомодифицирующегося (в том числе перемещаемого) кода (под многими платформами эта возможность недоступна, так как запись в страницы кода запрещена, в том числе и аппаратно, однако в большинстве общедоступных систем из-за их врожденных недостатков имеется возможность исполнения кода содержащегося в сегменте (секции) данных, куда запись разрешена).</p>
<p>Максимальная «подгонка» для нужной платформы</p>
<p style="text-align: justify;">NB: Последние технологии безопасности, внедряемые в операционные системы и компиляторы, не позволяют делать самомодифицирующего кода, так как исключают одновременную возможность исполнения программы и запись в одном и том же участке памяти (технология W^X).  Технология W^X используется в OpenBSD (где и появилась), в других BSD-системах, в Linux, в Microsoft Windows (начиная с Windows XP SP2) используется схожая технология DEP.</p>
<p><strong>Недостатки</strong></p>
<p style="text-align: justify;">Большие объемы кода, большое число дополнительных мелких задач, меньшее количество доступных для использования библиотек, по сравнению с языками высокого уровня. Трудоёмкость чтения и поиска ошибок (хотя здесь многое зависит от комментариев и стиля программирования). Зачастую компилятор языка высокого уровня, благодаря современным алгоритмам оптимизации, даёт более эффективную программу (по соотношению качество/время разработки). Непереносимость на другие платформы, кроме совместимых.</p>
<p>Ассемблер более сложен для совместных проектов</p>
<p style="text-align: justify;">В итоге можно сказать В тех областях, где необходимо проводить вычисления с большими числами по алгоритмам длинной арифметики,  которые будут рассматриваться далее, важную роль играет эффективность этих алгоритмов. Оценить её можно по времени их работы. Предположительно, наиболее выгодно использовать языки программирования низкого уровня, в частности Ассемблер.</p>
]]></content:encoded>
			<wfw:commentRss>/?feed=rss2&#038;p=186</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Язык Ассемблер</title>
		<link>/?p=183</link>
		<comments>/?p=183#comments</comments>
		<pubDate>Fri, 03 Dec 2010 19:32:23 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Описание языков программирования]]></category>
		<category><![CDATA[ассемблер]]></category>
		<category><![CDATA[С++]]></category>

		<guid isPermaLink="false">http://s12.localhost/?p=183</guid>
		<description><![CDATA[Ассемблер (от англ. assemble — собирать) — компилятор с языка ассемблера в команды машинного языка. Русифицированное название — мнемокод. Предназначен для представления в удобном (мнемоническом) виде машинные коды команд. Обеспечивает наиболее эффективное использование ресурсов системы (процессор, память, периферия). Используется в «узких» местах — требуется большое быстродействие, ограничение по размеру оперативной памяти и другие. Ассемблером также]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="/wp-content/uploads/2010/12/crittografia_thumb.jpg"><img class="alignleft size-medium wp-image-184" title="ассемблер" src="/wp-content/uploads/2010/12/crittografia_thumb-300x104.jpg" alt="" width="300" height="104" /></a>Ассемблер (от англ. assemble — собирать) — компилятор с языка ассемблера в команды машинного языка. Русифицированное название — мнемокод. Предназначен для представления в удобном (мнемоническом) виде машинные коды команд. Обеспечивает наиболее эффективное использование ресурсов системы (процессор, память, периферия). Используется в «узких» местах — требуется большое быстродействие, ограничение по размеру оперативной памяти и другие. Ассемблером также называют иногда саму систему команд центрального процессора.<span id="more-183"></span></p>
<p style="text-align: justify;">Под каждую архитектуру процессора и под каждую ОС или семейство ОС существует свой Ассемблер. Существуют также так называемые «кросс-ассемблеры», позволяющие на машинах с одной архитектурой (или в среде одной ОС) ассемблировать программы для другой целевой архитектуры или другой ОС, и получать исполняемый код в формате, пригодном к исполнению на целевой архитектуре или в среде целевой ОС.</p>
<p style="text-align: justify;">Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM) и Macro Assembler (MASM). Также в своё время был популярен простой ассемблер A86.</p>
<p style="text-align: justify;">Изначально они поддерживали лишь 16-битные команды (до появления процессора Intel 80386). Более поздние версии TASM и MASM поддерживают и 32-битные команды, а также все команды, введённые в более современных процессорах, и системы команд, специфических для конкретной архитектуры (такие как, например, MMX, SSE, 3DNow! и т. д.).</p>
<p style="text-align: justify;">При появлении операционной системы Windows появилось расширение TASM, именуемое TASM32, позволившее создавать программы для выполнения в среде Windows. Последняя известная версия Tasm — пятая, включая различные к ней дополнения.</p>
<p style="text-align: justify;">Для более удобного создания программ на ассемблере для Windows появился пакет, названный MASM32, автором которого является hutch (Стив Хатчессон).</p>
<p style="text-align: justify;">Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).</p>
<p style="text-align: justify;">FASM — молодой, но быстро развивающийся и завоёвывающий популярность ассемблер, распространяется с исходным кодом, есть версии для KolibriOS, Linux и Windows, использует Intel-синтаксис. Также fasm поддерживает инструкции AMD64. Достоинством является очень сильный макроязык, разнообразие форматов выходных файлов и несколько изменённый (в лучшую сторону, но несколько непривычный для «старой школы») синтаксис.</p>
]]></content:encoded>
			<wfw:commentRss>/?feed=rss2&#038;p=183</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Выбор среды программирования для вычислений с большими числами</title>
		<link>/?p=92</link>
		<comments>/?p=92#comments</comments>
		<pubDate>Wed, 01 Dec 2010 20:15:41 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Описание языков программирования]]></category>
		<category><![CDATA[Borland C++Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[UBASIC]]></category>
		<category><![CDATA[ассемблер]]></category>
		<category><![CDATA[РО-алгоритм Полларда]]></category>
		<category><![CDATA[С++]]></category>

		<guid isPermaLink="false">http://s12.localhost/?p=92</guid>
		<description><![CDATA[В тех областях, где необходимо проводить вычисления с большими числами, важную роль играет эффективность выбора языка программирования. Оценить её можно по времени  работы алгоритмов реализованных на этом языке. Предположительно, наиболее выгодно использовать языки программирования низкого уровня, в частности Ассемблер. Но с другой стороны наряду с эффективностью немаловажную роль играет и удобство использования того или иного]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В тех областях, где необходимо проводить вычисления с большими числами, важную роль играет эффективность выбора языка программирования. Оценить её можно по времени  работы алгоритмов реализованных на этом языке. Предположительно, наиболее выгодно использовать языки программирования низкого уровня, в частности Ассемблер.<span id="more-92"></span></p>
<p style="text-align: justify;">Но с другой стороны наряду с эффективностью немаловажную роль играет и удобство использования того или иного языка. И Ассемблер здесь – не лучший вариант. Предпочтение отдаётся языкам программирования высокого уровня (С++, Delphi и др.).</p>
<p style="text-align: justify;">Созданы и получили достаточно широкое распро­странение даже специальные языки программирования для вычислений с большими числами, например UBASIC. Этот язык включают в себя набор специальных подпрограмм, которые позволяют большое число разбить на меньшие блоки, с которыми компьютер может оперировать так же, как мы оперируем с цифрами, когда прово­дим вычисления вручную на бумаге.</p>
<p style="text-align: justify;">Таким образом, выбор языка программирования для реализации РО-алгоритма Полларда  заключается  в выборе наиболее оптимального варианта, который окажется наиболее эффективным и в то же время удобным в использовании.</p>
<p style="text-align: center;"><a href="/wp-content/uploads/2010/12/125.png"><img class="aligncenter size-full wp-image-93" title="выбор языка программирования" src="/wp-content/uploads/2010/12/125.png" alt="" width="590" height="296" /></a></p>
<p style="text-align: justify;">Анализ таблицы  показал что самым оптимальным вариантом языка программирования  является С++, реализованный в среде программирования Borland C++ Builder 6.0. C++ Builder 6.0 – это продукт фирмы Borland, предназначенный для быстрой разработки приложений (RAD – rapid application development) на языке С++. С помощью C++ Builder 6.0 можно создавать Windows-программы на С++. Также можно создавать как консольные приложения, так и использовать графический интерфейс пользователя (GUI – graphical user interface).</p>
<p>Язык C++ наиболее популярный клон С, в котором реализован наиболее полный (на сегодняшний день) механизм объектно-ориентированного программирования.</p>
]]></content:encoded>
			<wfw:commentRss>/?feed=rss2&#038;p=92</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Краткое описание MathCAD</title>
		<link>/?p=34</link>
		<comments>/?p=34#comments</comments>
		<pubDate>Wed, 01 Dec 2010 18:29:55 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Математические пакеты]]></category>
		<category><![CDATA[Программные продукты и пакеты]]></category>
		<category><![CDATA[Maple]]></category>
		<category><![CDATA[MathCAD]]></category>
		<category><![CDATA[MatLAB]]></category>

		<guid isPermaLink="false">http://s12.localhost/?p=34</guid>
		<description><![CDATA[Системы MathCAD традиционно занимают особое место среди множества таких систем (Eureka, Mercury, MatLAB, Mathematica 2 и 3, Maple V R3 и R4 и др.) и по праву могут называться самыми современными, универсальными и массовыми математическими системами. Они позволяют выполнять как численные, так и аналитические (символьные) вычисления, имеют чрезвычайно удобный математико-ориентированный интерфейс и прекрасные средства графики.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Системы MathCAD традиционно занимают особое место среди множества таких систем (Eureka, Mercury, MatLAB, Mathematica 2 и 3, Maple V R3 и R4 и др.) и по праву могут называться самыми современными, универсальными и массовыми математическими системами. Они позволяют выполнять как численные, так и аналитические (символьные) вычисления, имеют чрезвычайно удобный математико-ориентированный интерфейс и прекрасные средства графики. Системы класса MathCAD предоставляют уже привычные, мощные, удобные и наглядные средства описания алгоритмов решения математических задач.<span id="more-34"></span></p>
<p style="text-align: justify;">MathCAD — математически ориентированные универсальные системы. Помимо собственно вычислений они позволяют с блеском решать задачи, которые с трудом поддаются популярным текстовым редакторам или электронным таблицам.</p>
<p style="text-align: justify;">MathCAD не только средство для решения математических задач. Это, по существу, мощная математическая САПР, позволяющая готовить на высочайшем полиграфическом уровне любые относящиеся к науке и технике материалы: документацию, научные отчеты, книги и статьи, диссертации, дипломные и курсовые проекты и т. д. При этом в них одновременно могут присутствовать тексты сложного вида, любые математические формулы, графики функций и различные иллюстративные материалы.</p>
<p style="text-align: justify;">Все версии MathCAD под Windows позволяют работать как с латинскими буквами, так и с кириллицей, греческим алфавитом и вообще с любыми символами, доступными Windows. Более того, благодаря применению масштабируемых TTF-шрифтов можно управлять как размером символов, так и их стилем (делая буквы прямыми или наклонными, тонкими или жирными). Все это дает возможность готовить документы и электронные книги высокого качества как на английском, так и на русском языках. При этом такая возможность есть и в русифицированных, и в англоязычных версиях MathCAD.</p>
]]></content:encoded>
			<wfw:commentRss>/?feed=rss2&#038;p=34</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Краткое описание Borland C++ Builder</title>
		<link>/?p=31</link>
		<comments>/?p=31#comments</comments>
		<pubDate>Wed, 01 Dec 2010 18:27:03 +0000</pubDate>
		<dc:creator>root</dc:creator>
				<category><![CDATA[Описание языков программирования]]></category>
		<category><![CDATA[Borland C++Builder]]></category>
		<category><![CDATA[Borland Delphi]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[С++]]></category>

		<guid isPermaLink="false">http://s12.localhost/?p=31</guid>
		<description><![CDATA[Borland C++Builder,сегодня является наиболее совершенной визуальной средой быстрой разработки на Си++ для Windows. В ее состав входит около 200 самых разных компонентов, а создание законченной программы требует минимума усилий. Ближайший конкурент Borland C++Builder — это не система Microsoft Visual C++, которая построена по другой схеме, a Microsoft Visual Basic. Однако эффективность программ, создаваемых с помощью]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="/wp-content/uploads/2010/12/intro.jpg"><img class="alignleft size-medium wp-image-32" title="Описание языков программирования" src="/wp-content/uploads/2010/12/intro-300x200.jpg" alt="" width="300" height="200" /></a>Borland C++Builder,сегодня является наиболее совершенной визуальной средой быстрой разработки на Си++ для Windows. В ее состав входит около 200 самых разных компонентов, а создание законченной программы требует минимума усилий. Ближайший конкурент Borland C++Builder — это не система Microsoft Visual C++, которая построена по другой схеме, a Microsoft Visual Basic. Однако эффективность программ, создаваемых с помощью C++Builder, в десятки раз превосходит быстродействие программ, написанных на MS Visual Basic. Да и по числу свободных доступных компонентов равных среде C++Builder сегодня не найти.</p>
<p style="text-align: justify;">У этой системы есть родной брат — среда Borland Delphi, технология работы с которой полностью совпадает с технологией, принятой в С++Builder. <span id="more-31"></span>Только в Delphi программный код пишется не на языке C++, а на языке программирования Паскаль, точнее на его объектно-ориентированной версии ObjectPascal. Но самое интересное, что Borland C++Builder позволяет писать программу при желании одновременно и на Си++, и на Паскале!</p>
<p style="text-align: justify;">Вместо отдельного инструментария, оперирующего визуальными элементами управления, в C++ Builder интегрирована так называемая Палитра компонент, разделенная картотечными вкладками на несколько функциональных групп. Функциональные возможности поставляемых компонент можно достаточно просто модифицировать, а также разрабатывать компоненты, обладающие совершенно новым оригинальным поведением.</p>
<p style="text-align: justify;">Система содержит Библиотеку из более 100 повторно используемых визуальных компонент, которые перетаскиваются мышью на форму и сразу становятся элементами управления прототипа вашей программы. Помимо известных элементов управления Windows (кнопки, линейки прокрутки, поля редактирования, простые и комбинированные списки и т.д.) Библиотека содержит новые компоненты поддержки диалогов, обслуживания баз данных и многие другие.</p>
<p style="text-align: justify;">После размещения компонент на форме, Инспектор объектов поможет вам устанавливать их свойства и предписывать событиям коды обработки. Ваш проект будет строиться постепенно, на фоне производимых вами изменений в свойствах, событиях и функциях используемых элементов. Хорошо продумано разделение и редактирование программного модуля по двум его частям: интерфейсной и собственно кодовой.</p>
<p style="text-align: justify;">C++Builder поддерживает основные принципы объектно-ориентированного программирования &#8211; инкапсуляцию, полиморфизм и множественное наследование, а также нововведенные спецификации и ключевые слова в стандарте языка C++.</p>
<p style="text-align: justify;">C++Builder обеспечивает высокое быстродействие при компиляции и сборке 32-разрядных приложений для современных операционных систем Windows 95 и Windows NT, включая OLE взаимодействие клиент-сервер. Система даже отображает время, затраченное на основные этапы построения программ. Результирующие программы хорошо оптимизированы по скорости исполнения и затратам памяти. Хотя отладочный режим низкого уровня полностью интегрирован в среду C++Builder, к отладке также пришлось привыкать. Дизайнер форм. Инспектор объектов и другие средства остаются доступными во время работы программы, поэтому вносить изменения можно в процессе отладки.</p>
<p style="text-align: justify;">C++ Builder поддерживает связь с различными базами данных 3-х видов: dBASE и Paradox: Sybase, Oracle, InterBase и Informix; Excel, Access, FoxPro и Btrieve. Механизм BDE (Borland Database Engine) придает обслуживанию связей с базами данных удивительную простоту и прозрачность. Проводник Database Explorer позволяет изображать связи и объекты баз данных графически.</p>
<p style="text-align: justify;">Благодаря средствам управления проектами, двусторонней интеграции приложения и синхронизации между средствами визуального и текстового редактирования, а также встроенному отладчику (с ассемблерным окном прокрутки, пошаговым исполнением, точками останова, трассировкой и т.п.) &#8211; C++ Builder корпорации Borland предоставляет собой впечатляющую среду разработки.</p>
]]></content:encoded>
			<wfw:commentRss>/?feed=rss2&#038;p=31</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>