[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Стало известно, что состоялся выпуск новой предварительной версии набора инструментов и языка программирования F#. Как обычно пакет с инструментами выпущен в двух видах: установщик для Windows и Visual Studio и zip-архив со сборками под платформы: Xbox360, Mono, .NET Compact, Windows Phone 7.
В новой версии пакета представлены сборки для работы с новым Silverlight 5 Beta и интеграция с Visual Studio 2010 Service Pack 1.
Я зык F#, недавно пополнивший семейство языков Microsoft® .NET Framework, обеспечивает безопасность относительно типов, неплохую производительность, а также способен выступать в роли языка сценариев — все это в рамках платформы .NET. Это функциональный язык, разработанный Доном Саймом (Don Syme), сотрудником отдела исследований корпорации Майкрософт. F# создавался как синтаксически совместимый вариант OCaml для CLR, однако он довольно быстро перебрался из лабораторий в мир практики. Поскольку все понятия функционального программирования проникают в основные языки (C#, Visual Basic®) через такие технологии, как обобщенные типы .NET или LINQ, язык F# обязан своим успехом прежде всего сообществу .NET — причем успешен он был настолько, что в ноябре 2007 года корпорация Майкрософт объявила о том, что F# будет переведен в разряд поддерживаемых языков программирования .NET. На протяжении многих лет считалось, что функциональные языки (ML, Haskell и т. п.) больше подходят для академических работ, нежели для профессиональной разработки. И дело не в том, что языки эти не представляют никакого интереса. В действительности некоторые значительные возможности платформы .NET — обобщенные классы, LINQ, PLINQ и Futures, к примеру — обязаны своим появлением применению принципов функционального программирования к языкам, которые таких методов никогда до этого не использовали. Недостаточный интерес к функциональным языкам объясняется скорее тем фактом, что они предназначались для платформ, не имеющих особого значения для разработчиков, создающих программы под Windows®, недостаточно хорошо интегрировались в базовую платформу или не поддерживали жизненно важные функции (доступ к реляционным базам данных, анализ XML, внепроцессные механизмы связи). Однако же среда CLR и использованный в ней подход «много языков — одна платформа» неизбежно должны были расширить присутствие функциональных языков в мире Windows. И в равной степени неизбежным должен был стать рост важности функциональных языков для программистов-практиков. F# — один их таких языков. В этой статье мы рассмотрим ряд понятий, лежащих в его основе, и остановимся на преимуществах языка F#. Затем, дабы помочь вам начать работу с ним, мы вместе выполним установку и напишем несколько простейших программ.
Чем хорош F#? Очевидно, что лишь для малой доли программистов, работающих с платформой .NET, изучение функционального языка .NET Framework станет заметным шагом к написанию программ с большими возможностями. Для остальных же польза F# и вовсе большая загадка. Так в чем же преимущества F# для разработчиков? В последние три года одной из основных задач стало создание безопасных программ параллельной обработки, поскольку многоядерные процессоры перестали быть редкостью. Функциональные языки помогают поддерживать параллелизм, позволяя задействовать неизменяемые структуры данных, которые можно передавать между потоками и машинами, даже не задумываясь о безопасности относительно потоков или атомарном доступе. Помимо этого, функциональные языки упрощают создание библиотек, поддерживающих параллельную обработку, к примеру асинхронных рабочих потоков F# — их мы рассмотрим чуть позднее. Возможно, приверженцы объектно-ориентированного программирования и не согласятся с этим, но функциональные программы для решения определенного круга задач зачастую проще писать и обслуживать. Возьмите, к примеру, преобразование документа XML в документ другого формата. Разумеется, можно написать на C# программу, которая будет анализировать XML и, применяя ряд условных операторов, определять, какие действия нужно предпринять по отношению к тому или иному фрагменту документа, и все же с уверенностью можно утверждать, что программа на XSLT будет более удачным решением. Нет ничего удивительного в том, что XSLT имеет в своем запасе определенный пласт функционализма, равно как и SQL. F# выступает строго против использования значений null и активно поддерживает использование неизменяемых структур данных. В результате снижается риск ошибки в программе, поскольку скоращается объем кода, необходимого для обработки пограничных случаев. Программы на F# обычно получаются лаконичнее. С какой стороны ни посмотри, «типографии» получается меньше: сокращается не только количество символов, но и количество мест, где компилятор требует указать тип переменной, аргумента или возвращаемых значений. Значит, и обслуживать приходится меньший объем кода. По производительности F# сравним с C#, однако если сравнивать с языками, которые настолько же лаконичны, как F#, в частности с динамическими языками и языками сценариев, он имеет гораздо лучшие показатели. И так же как во многих динамических языках, в F# имеются средства, позволяющие проверить данные: написать фрагмент кода и запустить его в интерактивном режиме. Загрузить установочный пакет и архив с дополнительными сборками можно по следующей ссылке ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).
Уязвимость программного обеспечения российских пользователей не снижается
«НПО «Эшелон» опубликовал аналитический отчет по состоянию уязвимости программных ресурсов в мире и РФ за минувший год. В марте текущего года эксперты компании провели исследование баз уязвимостей и отчетов крупнейших зарубежных компаний, ассоциаций и тестовых лабораторий, занимающихся исследованием уязвимости программных платформ и реализаций.
В отчете говорится, что несмотря на старания лидирующих в мире разработчиков программных систем, количество уязвимостей в информационно-программных ресурсах не уменьшается; в России наметилась тенденция роста использования открытого программного кода и других заимствованных программных компонент. Проекты с открытым кодом имеют в целом сравнимый с коммерческим программным обеспечением уровень безопасности, но у них в среднем меньше время восстановления и потенциальных возможностей для обхода безопасности (например backdoors), чем у коммерческого программного обеспечения или у внешнего программного обеспечения.
Также здесь говорится, что язык программирования С/С++ еще сохраняет свою популярность, несмотря на архитектурные особенности, связанные с повышенным риском переполнений буфера и системных ошибок.
В процессе исследования, российская компания пришла к выводу, что одни из самых защищенных прикладных продуктов – приложения, написанные на Java, наиболее дефектным с точки зрения безопасности оказался программный код, написанный на языке Perl. Веб-сайты, построенные с помощью Perl (PL), Cold Fusion (CFM), Java Server Pages (JSP), PHP, скорее всего, имеют, по крайней мере, одну серьезную уязвимость, вероятность этого составляет примерно 80%. Сайты, построенные на других языках/платформах, имели уязвимости в среднем лишь в 10% случаев. 37% веб-сайтов на Cold Fusion (CFM) были уязвимы для SQL-инъекций, это самый высокий показатель, в то время как у Struts (DO) и JSP был самый низкий уровень подобной уязвимости — от 14% до 15%.
Исследование безопасности программных продуктов показало, что в 38% открытых продуктов были обнаружены незакрытые уязвимости, что несколько меньше уязвимостей, найденных в коммерческих проектах. После нахождения уязвимостей, для их исправления в проектах с открытым программным обеспечением потребовалось в среднем 36 дней, 48 дней заняла та же операция для внутренних приложений, и 82 дня — для исправления уязвимостей в коммерческих продуктах.
Скорость устранения «критических» уязвимостей межсайтового скриптинга во всех проверенных языках программирования и фреймворках оказалась в диапазоне 50% — 60%, исключение составил лишь PHP с 66%.
«Опыт по проведению аудита и сертификации показывает, что наиболее важными с точки зрения безопасности являются моменты, связанные с менеджментом процесса разработки и квалификация программистов, которые должны быть знакомы с достоинствами и недостатками той программной технологии, которую они используют. Несмотря на развитие средств, методов и подходов к аудиту программного обеспечения, приходится констатировать, что ситуация в области защищенности приложений практически не изменилась в лучшую сторону», — говорят авторы отчета.