Среда для языка си. Выбор среды разработки(IDE)

Среда для языка си. Выбор среды разработки(IDE)

30.05.2019

Май 5 2012

Владимир Биллиг

Основы объектного программирования на С#

(C# 3.0, Visual Studio 2008)

Часть 1
Ядро языка

Цели курса

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

В этой книге в качестве языка программирования выбран язык C# — его версия 3.0, в качестве среды разработки программных проектов – Visual Studio 2008, Professional Edition и Framework .Net в версии 3.5.

Язык C#

Язык C# является наиболее известной новинкой в области создания языков программирования. По сути это язык программирования, созданный уже в 21-м веке. Явившись на свет в недрах Microsoft, он с первых своих шагов получил мощную поддержку. Язык признан международным сообществом. В июне 2006 года Европейской ассоциацией по стандартизации принята уже четвертая версия стандарта этого языка: Standard ECMA-334 C# Language Specifications, 4-th edition –

Международной ассоциацией по стандартизации эта версия языка принята как стандарт ISO/IEC – 23270. Заметим, что первая версия стандарта языка принята еще в 2001 году. Компиляторы Microsoft строятся в соответствии с международными стандартами языка.

Язык C# является молодым языком и продолжает интенсивно развиваться. Каждая новая версия языка включает принципиально новые свойства. Не исключением явилась и версия 3.0, рассматриваемая в данном учебном курсе.

Руководителем группы, создающей язык C#, является сотрудник Microsoft Андреас Хейлсберг. Он стал известным в мире программистов задолго до того, как пришел в Microsoft. Хейлсберг входил в число ведущих разработчиков одной из самых популярных сред разработки – Delphi. В Microsoft он участвовал в создании версии языка Java – J++, так что опыта в написании языков и сред программирования ему не занимать. Как отмечал сам Андреас Хейлсберг, C# создавался как язык компонентного программирования, и в этом одно из главных достоинств языка, направленное на возможность повторного использования созданных компонентов. Создаваемые компилятором компоненты являются само документируемыми, помимо кода содержат метаинформацию, описывающую компоненты, и поэтому могут выполняться на различных платформах.

Отметим следующие важные факторы:

  • C# создавался и развивается параллельно с каркасом Framework .Net и в полной мере учитывает все его возможности;
  • C# является полностью объектно-ориентированным языком;
  • C# является мощным объектным языком с возможностями наследования и универсализации;
  • C# является наследником языка C++. Общий синтаксис, общие операторы языка облегчают переход от языка С++ к C#;
  • Сохранив основные черты своего родителя, язык стал проще и надежнее;
  • Благодаря каркасу Framework .Net, ставшему надстройкой над операционной системой, программисты C# получают преимущества работы с виртуальной машиной;
  • Framework .Net поддерживает разнообразие типов приложений на C#;
  • Реализация, сочетающая построение надежного и эффективного кода, является немаловажным фактором, способствующим успеху C#.

В каком направлении развивается язык C#? Назовем новинки, появившиеся в версии 3.0:

  • На первое место я бы поставил возможности создания качественно новых типов проектов на C#. Конечно, новые типы проектов нельзя отнести к новинкам языка C#. Эти возможности предоставляет каркас Framework .Net 3.5 и Visual Studio 2008. Но поскольку язык, среда разработки и каркас среды тесно связаны, то с точки зрения программистов, работающих на C#, их возможности построения программных проектов на C# существенно расширились.
  • Введение в язык инструмента, получившего название LINQ (Language Integrated Query). Сегодня ни один серьезный проект на C# не обходится без обмена данными с внешними источниками данных – базами данных, Интернет и прочими хранилищами данных. В таких ситуациях приходилось использовать специальные объекты (ADO .Net или их более ранние версии). При работе с ними нужно было использовать SQL — специальный язык запросов. Благодаря LINQ язык запросов становится частью языка программирования C#. Тем самым реализована давняя мечта программистов – работать с данными, находящихся в различных внешних источниках, используя средства, принадлежащие языку программирования, не привлекая дополнительные инструментальные средства и языки.
  • Введение в язык инструментария, характерного для функционального стиля программирования, — лямбда-выражений, анонимных типов и функций. Андреас Хейлсберг полагает, что смесь императивного и функционального стилей программирования упрощает задачи разработчиков, поскольку функциональный стиль позволяет разработчику сказать, что нужно делать, не уточняя, как это должно делаться.
  • Новые возможности появились при реализации параллелизма в программных проектах.

Эти и другие новинки будут подробно рассмотрены в соответствующих разделах курса.

Будущее С#

Следующая версия языка С# 4.0 должна появиться параллельно с выходом новой версии Visual Studio 2010. Продолжается работа над версией C# 5.0. Можно отметить три основные тенденции в развитии языка – декларативность, динамичность и параллельность. Разработчики языка пытаются придать языку C# свойства, расширяющие традиционные возможности процедурных языков. Явно заметен тренд к функциональным языкам с их декларативным стилем. Такие свойства появились уже в C# 3.0, в следующих версиях они только расширяются.

В новой версии Visual Studio 2010 должны появиться новые динамические языки программирования – «железный змей» — Iron Python и Iron Ruby. Эти языки проще устроены, во многом из-за того, что не являются строго типизированными и потому не позволяют проводить контроль типов еще на этапе компиляции. В C# 4.0 введена возможность задания динамических переменных, аналогично тому, как это делается в динамических языках.

Параллельные вычисления в ближайшие 5-10 лет станут реальностью повседневной работы программиста. В этом направлении развивается техника. Языки программирования должны поддерживать эту тенденцию.

Компилятор как сервис, программирование на лету, — такие возможности должны появиться в C# 5.0. Можно не сомневаться, что C# программистам в ближайшие годы скучать не придется.

Visual Studio 2008

Как уже отмечалось, принципиальной новинкой этой версии является возможность построения новых типов программных проектов, что обеспечивается новой версией каркаса Framework .Net 3.5. Если не считать этой важной особенности, то идейно Visual Studio 2008 подобна предыдущим версиям Visual Studio 2005 и Visual Studio 2003.

Рассмотрим основные особенности среды разработки Visual Studio.

Открытость

Среда разработки программных проектов является открытой языковой средой. Это означает, что наряду с языками программирования, включенными в среду фирмой Microsoft – Visual C++ .Net (с управляемыми расширениями), Visual C# .Net , Visual Basic .Net, – в среду могут добавляться любые языки программирования, компиляторы которых создаются другими фирмами.

Таких расширений среды Visual Studio сделано уже достаточно много, практически они существуют для всех известных языков – Fortran и Cobol , RPG и Component Pascal , Eiffel, Oberon и Smalltalk .

Новостью является то, что Microsoft не включила в Visual Studio 2008 поддержку языка Java. Допустимые в предыдущих версиях проекты на языке J++ в Visual Studio 2008 в настоящее время создавать нельзя, ранее созданные проекты в студии не открываются.

Открытость среды не означает полной свободы. Все разработчики компиляторов при включении нового языка в среду разработки должны следовать определенным ограничениям. Главное ограничение, которое можно считать и главным достоинством, состоит в том, что все языки, включаемые в среду разработки Visual Studio .Net должны использовать единый каркас – Framework .Net. Благодаря этому достигаются многие желательные свойства: легкость использования компонентов, разработанных на различных языках; возможность разработки нескольких частей одного приложения на разных языках; возможность бесшовной отладки такого приложения; возможность написать класс на одном языке, а его потомков - на других языках. Единый каркас приводит к сближению языков программирования, позволяя вместе с тем сохранять их индивидуальность и имеющиеся у них достоинства. Преодоление языкового барьера – одна из важнейших задач современного мира. Visual Studio .Net, благодаря единому каркасу, в определенной мере решает эту задачу в мире программистов.

Framework .Net – единый каркас среды разработки приложений

В каркасе Framework .Net можно выделить два основных компонента:

  • статический – FCL (Framework Class Library) – библиотеку классов каркаса;
  • динамический – CLR (Common Language Runtime) – общеязыковую исполнительную среду.

Библиотека классов FCL – статический компонент каркаса

Понятие каркаса приложений – Framework Applications появилось достаточно давно, оно широко использовалось еще в четвертой версии Visual Studio. Библиотека классов MFC (Microsoft Foundation Classes) играла роль каркаса приложений Visual C++.

Несмотря на то, что каркас был представлен только статическим компонентом, уже тогда была очевидна его роль в построении приложений. Уже в то время важнейшее значение в библиотеке классов MFC имели классы, задающие архитектуру строящихся приложений. Когда разработчик выбирал один из возможных типов приложения, например архитектуру Document-View, то в его приложение автоматически встраивались класс Document, задающий структуру документа, и класс View, задающий его визуальное представление. Класс Form и классы, задающие элементы управления, обеспечивали единый интерфейс приложений. Выбирая тип приложения, разработчик изначально получал нужную ему функциональность, поддерживаемую классами каркаса. Библиотека классов поддерживала и традиционные для программистов классы, задающие расширенную систему типов данных, в частности, динамические типы данных – списки, деревья, коллекции, шаблоны.

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

Единство каркаса

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

Встроенные примитивные типы

Важной частью библиотеки FCL стали классы, задающие примитивные типы, те типы, которые считаются встроенными в язык программирования. Типы каркаса покрывают основное множество встроенных типов, встречающихся в языках программирования. Типы языка программирования проецируются на соответствующие типы каркаса. Тип, называемый в языке Visual Basic – Integer, а в языках С++ и C# — int, проецируется на один и тот же тип каркаса System.Int32. В языке программирования, наряду с «родными» для языка названиями типов, разрешается пользоваться именами типов, принятыми в каркасе. Поэтому, по сути, все языки среды разработки могут пользоваться единой системой встроенных типов, что, конечно, способствует облегчению взаимодействия компонентов, написанных на разных языках.

Структурные типы

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

Архитектура приложений

Существенно расширился набор возможных архитектурных типов построения приложений. Помимо традиционных Windows- и консольных приложений, появилась возможность построения Web-приложений. Большое внимание уделяется возможности создания повторно используемых компонентов – разрешается строить библиотеки классов, библиотеки элементов управления и библиотеки Web-элементов управления. Популярным архитектурным типом являются Web-службы, ставшие сегодня благодаря открытому стандарту одним из основных видов повторно используемых компонентов.

Модульность

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

В пространство System вложен целый ряд других пространств имен. Например, в пространстве System.Collections находятся классы и интерфейсы, поддерживающие работу с коллекциями объектов – списками, очередями, словарями. В пространство System.Collections, в свою очередь, вложено пространство имен Specialized, содержащие классы со специализацией, например, коллекции, элементами которых являются только строки. Пространство System.Windows.Forms содержит классы, используемые при создании Windows-приложений. Класс Form из этого пространства задает форму – окно, заполняемое элементами управления, графикой, обеспечивающее интерактивное взаимодействие с пользователем.

По ходу курса мы будем знакомиться со многими классами библиотеки FCL.

Общеязыковая исполнительная среда CLR – динамический компонент каркаса

Важным шагом в развитии каркаса Framework .Net стало введение динамического компонента каркаса — исполнительной среды CLR . С появлением CLR процесс выполнения приложений стал принципиально другим.

Двухэтапная компиляция. Управляемый модуль и управляемый код

Компиляторы языков программирования, включенные в Visual Studio .Net, создают код на промежуточном языке IL (Intermediate Language) – ассемблерном языке. В результате компиляции проекта, содержащего несколько файлов, создается так называемый управляемый модуль – переносимый исполняемый файл (Portable Executable или PE-файл). Этот файл содержит код на IL и метаданные – всю информацию, необходимую для CLR, чтобы под ее управлением PE-файл мог быть исполнен. Метаданные доступны и конечным пользователям. Классы, входящие в пространство имен Reflection, позволяют извлекать метаинформацию о классах, используемых в проекте. Этот процесс называется отражением. Об атрибутах классов, отображаемых в метаданные PE-файла, еще будем говорить неоднократно. В зависимости от выбранного типа проекта, PE-файл может иметь разные уточнения — exe, dll, mod или mdl.

Заметьте, PE-файл, имеющий уточнение exe, хотя и является exe-файлом, но это не обычный исполняемый Windows файл. При его запуске он распознается как PE-файл и передается CLR для обработки. Исполнительная среда начинает работать с кодом, в котором специфика исходного языка программирования исчезла. Код на IL начинает выполняться под управлением CLR (по этой причине код называется управляемым ). Исполнительную среду следует рассматривать как виртуальную IL-машину. Эта машина транслирует «на лету» требуемые для исполнения участки кода в команды реального процессора, который в действительности и выполняет код.

Виртуальная машина

Отделение каркаса от студии явилось естественным шагом. Каркас Framework .Net перестал быть частью студии, а стал надстройкой над операционной системой. Теперь компиляция и создание PE модулей на IL отделено от выполнения, и эти процессы могут быть реализованы на разных платформах.

В состав CLR входят трансляторы JIT (Just In Time Compiler), которые и выполняют трансляцию IL в командный код той машины, где установлена и функционирует исполнительная среда CLR. Конечно, в первую очередь Microsoft реализовала CLR и FCL для различных версий Windows, включая Windows 98/Me/NT 4/2000, 32 и 64-разрядные версии Windows XP , Windows Vista и семейство.Net Server. Облегченная версия Framework .Net разработана для операционных систем Windows CE и Palm.

Framework .Net развивается параллельно с развитием языков программирования, среды разработки программных проектов и операционных языков. Версия языка C# 2.0 использовала версию Framework .Net 2.0. Операционная система Windows Vista включила в качестве надстройки Framework .Net 3.0. Язык C# 3.0 и Visual Studio 2008 используют версию Framework .Net 3.5.

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

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

Дизассемблер и ассемблер

Для проекта, построенного на C#, иногда полезно провести анализ построенного PE-файла, его IL кода и связанных с ним метаданных. В состав Framework SDK входит дизассемблер – ildasm, выполняющий дизассемблирование PE-файла и показывающий в наглядной форме метаданные и IL код с комментариями. Мы иногда будем пользоваться результатами дизассемблирования. У меня на компьютере кнопка, вызывающая дизассемблер, находится на рабочем столе. Вот путь к папке, в которой обычно находится дизассемблер:

C:\Program Files\Microsoft Visual Studio .Net\FrameworkSDK\Bin\ildasm.exe

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

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe

В этой книге к ассемблеру мы обращаться не будем, упоминаю о нем для полноты картины.

Метаданные

Переносимый исполняемый PE-файл является само документируемым файлом и, как уже говорилось, содержит код и метаданные , описывающие код. Файл начинается с манифеста и включает в себя описание всех классов, хранимых в PE-файле, их свойств, методов, всех аргументов этих методов – всю необходимую CLR информацию. Поэтому помимо PE-файла не требуется никаких дополнительных файлов, записей в реестр, вся нужная информация извлекается из самого файла. Введение метаданных не только важная техническая часть CLR, но это также часть новой идеологии разработки программных продуктов. Мы увидим, что и на уровне языка C# само документированию уделяется большое внимание.

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

Сборщик мусора – Garbage Collector и управление памятью

Еще одной важной особенностью построения CLR является то, что исполнительная среда берет на себя часть функций, традиционно входящих в ведение разработчиков трансляторов, и облегчает тем самым их работу. Один из таких наиболее значимых компонентов CLR - сборщик мусора (Garbage Collector) . Под сборкой мусора понимается освобождение памяти, занятой объектами, которые стали бесполезными и не используются в дальнейшей работе приложения. В ряде языков программирования (классическим примером является язык C/C++) память освобождает сам программист, в явной форме отдавая команды, как на создание, так и на удаление объекта. В этом есть своя логика – я тебя породил, я тебя и убью. Однако можно и нужно освободить человека от этой работы. Неизбежные ошибки программиста при работе с памятью тяжелы по последствиям, и их крайне тяжело обнаружить. Как правило, объект удаляется в одном модуле, а необходимость в нем обнаруживается в другом далеком модуле. Обоснование того, что программист не должен заниматься удалением объектов, а сборка мусора должна стать частью исполнительной среды, дано достаточно давно. Наиболее полно оно обосновано в работах Бертрана Мейера и в его книге «Object-Oriented Construction Software», первое издание которой появилось еще в 1988 году.

В CLR эта идея реализована в полной мере. Задача сборки мусора снята не только с программистов, но и с разработчиков трансляторов; она решается в нужное время и в нужном месте – исполнительной средой, ответственной за выполнение вычислений. Здесь же решаются и многие другие вопросы, связанные с использованием памяти, в частности, проверяется и не допускается использование «чужой» памяти, не допускаются и другие нарушения. Данные, удовлетворяющие требованиям CLR и допускающие сборку мусора, называются управляемыми данными .

Но, как же, спросите вы, быть с языком C++ и другими языками, где есть нетипизированные указатели, адресная арифметика, возможности удаления объектов программистом? Ответ следующий – CLR позволяет работать как с управляемыми, так и с неуправляемыми данными . Однако использование неуправляемых данных регламентируется и не поощряется. Так, в C# модуль, использующий неуправляемые данные (указатели, адресную арифметику), должен быть помечен как небезопасный (unsafe), и эти данные должны быть четко зафиксированы. Об этом мы еще будем говорить при рассмотрении языка C# в последующих лекциях. Исполнительная среда, не ограничивая возможности языка и программистов, вводит определенную дисциплину в применении потенциально опасных средств языков программирования.

Исключительные ситуации

Что происходит, когда при вызове некоторой функции (процедуры) обнаруживается, что она не может нормальным образом выполнить свою работу? Возможны разные варианты обработки такой ситуации. Функция может возвращать код ошибки или специальное значение типа HResult, может выбрасывать исключение , тип которого характеризует возникшую ошибку. В CLR принято во всех таких ситуациях выбрасывать исключение. Косвенно это влияет и на язык программирования. Выбрасывание исключений наилучшим образом согласуется с исполнительной средой. В языке C# выбрасывание исключений, их дальнейший перехват и обработка – основной рекомендуемый способ обработки исключительных ситуаций .

События

У CLR есть свое видение того, что представляет собой тип. Есть формальное описание общей системы типов C TS – Common Type System. В соответствии с этим описанием, каждый тип, помимо полей, методов и свойств, может содержать и события . При возникновении событий в процессе работы с тем или иным объектом данного типа посылаются сообщения, которые могут получать другие объекты. Механизм обмена сообщениями основан на делегатах – функциональном типе. Надо ли говорить, что в язык C# встроен механизм событий, полностью согласованный с возможностями CLR. Мы подробно изучим все эти механизмы, рассматривая их на уровне языка.

Исполнительная среда CLR обладает мощными динамическими механизмами – сборки мусора, динамического связывания, обработки исключительных ситуаций и событий. Все эти механизмы и их реализация в CLR созданы на основании практики существующих языков программирования. Но уже созданная исполнительная среда в свою очередь влияет на языки, ориентированные на использование CLR. Поскольку язык C# создавался одновременно с созданием CLR, то, естественно, он стал языком, наиболее согласованным с исполнительной средой, и средства языка напрямую отображаются в средства исполнительной среды.

Общие спецификации и совместимые модули

Уже говорилось, что каркас Framework .Net облегчает межъязыковое взаимодействие. Для того чтобы классы, разработанные на разных языках, мирно уживались в рамках одного приложения, для их бесшовной отладки и возможности построения разноязычных потомков, они должны удовлетворять некоторым ограничениям. Эти ограничения задаются набором общеязыковых спецификаций – CLS (Common Language Specification). Класс, удовлетворяющий спецификациям CLS, называется CLS-совместимым . Он доступен для использования в других языках, классы которых могут быть клиентами или наследниками совместимого класса.

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

Framework .Net 3.5

Рассмотрим новинки, появившиеся в последней версии Framework .Net 3.5. Прежде всего, заметим, что практически все новинки языка C# 3.0 поддержаны нововведениями в Framework .Net 3.5.

LINQ и деревья выражений

Уже говорилось, что в C# 3.0 встроен язык запросов к данным, что существенно облегчает работу с данными, поступающими из внешних источников. Этот языковый механизм поддерживается классами библиотеки FCL Framework .Net 3.5. Пространство System.Linq содержит классы, задающие типы, интерфейсы, стандартные операторы запроса. Пространства System.Data.Linq , System.Data.Linq.Mapping поддерживают работу с реляционными базами данных. Классы пространства System.XML.Linq поддерживают запросы к XML- данным. Новые классы DataRowComparer, DataRowExtensions, DataTableExtensions позволяют локально хранить данные, заменяя объекты DataSet ADO .Net. Классы из пространства System.Linq.Expressions позволяют работать с деревьями выражений, используемых в запросах.

Windows Presentation Foundation

В Visual Studio 2008 появились новые типы проектов, основанные на возможностях предоставляемых технологией WPF (Windows Presentation Foundation). Эта технология позволяет строить новое поколение систем презентации – с новыми графическими возможностями, связыванием данных и прочими элементами, придающими приложению принципиально новые свойства. Предполагается, что этот тип приложений постепенно будет вытеснять традиционные Windows приложения, основанные на понятии окна.

Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF)

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

ASP .NET

Новые возможности Framework .Net 3.5 облегчают разработку Веб- приложений, в частности построение сайтов с AJAX (Asynchronous Javascript and XML) – свойствами. Приложения с такими свойствами становятся более быстрыми и удобными, позволяя при взаимодействии с сервером не перезагружать всю страницу полностью.

Другие новинки

Трудно, да и не имеет особого смысла перечислять все нововведения, появившиеся в Framework .Net 3.5. При обсуждении новых возможностей при построении приложений на языке C# несомненно речь будет идти и о том, как эти возможности поддерживаются в CLR и FCL.

Управляемый и неуправляемый код

Как уже отмечалось результатом написанного на C# проекта и скомпилированного в Visual Studio 2008 является сборка (assembly), содержащая IL-код проекта и манифест, полностью описывающий сборку. Сборка может быть создана на одном компьютере, на одной платформе, а выполняться на другом компьютере с другим типом процессора, с другой операционной системой. Для выполнения сборки необходимо и достаточно установки на целевом компьютере соответствующей версии Framework .Net, представляющего надстройку над операционной системой.

Когда мы говорим о сборках, то язык программирования, на котором создавался исходный код, уже не имеет значения, его особенности никак не отражаются в сборке. Сборки, созданные на VB или C++ с управляемыми расширениями, неотличимы от сборок, созданных на C# или других языках, включенных в состав Visual Studio 2008 и использующих каркас Framework .Net при компиляции управляемого кода.

С другой стороны понятно, что в состав Visual Studio 2008 могут включаться языки, не использующие Framework .Net, не создающие сборки с управляемым кодом, а использующие собственные библиотеки и собственные каркасы приложений (Framework Applications). В частности на языке С++ в рамках Visual Studio 2008 можно писать проекты, использующие библиотеки MFC и ATL, ориентированные исключительно на С++ и создающие в результате компиляции проекта, обычные exe-файлы.

Сегодня на всех компьютерах, работающих под управлением любой из версий Windows, установлена соответствующая версия Framework .Net, так что на таких компьютерах могут выполняться и сборки и обычные exe-файлы. Поскольку Framework .Net, также как и C# стандартизован и является свободно распространяемым программным продуктом, то его можно встретить и на тех компьютерах, где нет Windows.

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

Рис. 1_1 Управляемый и неуправляемый код

Заметьте, два мира программ, выполняемые по-разному, могут взаимодействовать друг с другом – из управляемого кода возможен вызов программ с неуправляемым кодом и наоборот. В проектах, написанных на C#, можно управлять офисными приложениями – документами Word и Excel. Офисные документы – это COM-объекты, принадлежащие миру неуправляемого кода, а проекты C# — это сборки – жители страны с управляемым кодом.

Проекты C# в Visual Studio 2008

При запуске Visual Studio 2008, которая, надеюсь, уже установлена на Вашем компьютере, открывается стартовая страница. В окне «Recent Projects» стартовой страницы есть две скромные, непрезентабельного вида две ссылки – «Open: Project…» и «Create Project…».

Они задают две основные функции, которые может выполнять разработчик в Visual Studio 2008, – он может открывать существующие проекты и работать с ними, или создать и работать с новым проектом. В большинстве случаев после открытия стартовой страницы щелчком по одной из ссылок мы переходим к созданию или открытию проекта. Вид стартовой страницы показан на рис. 1_2.

Рис. 1_2 Вид стартовой страницы

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

Для компьютера, подключенного к интернет, стартовая страница автоматически связывается с сайтом, содержащим текущую информацию по C# и Visual Studio 2008, — по умолчанию показываются новости с сайта msdn. Выбрав соответствующий пункт из раздела Getting Started (Давайте Начнем), можно получить информацию из центра разработчиков C#, можно подключиться к одному из трех форумов по языку C#, можно получить нужную справку в режиме «on line».

На стартовой странице, помимо вкладки «StartPage», расположена вкладка «Главная страница MSDN», позволяющая перейти к соответствующему сайту. На рис. 1_3 показана страница, открытая при выборе этой вкладки.

Рис. 1_3 Вид главной страницы MSDN

Коль скоро речь зашла о получении текущей информации и справок по языку C#, приведу несколько полезных ресурсов:

http://forums.msdn.microsoft.com/en-us/forums/ — англоязычный сайт предоставляет доступ к различным форумам, в том числе форумам по языку С#.

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

PyCharm

  • Создатель JetBrains
  • Закрытый исходник

Разработан под Python, Javascript, Coffeescript, Typescript, HTML/CSS, AngularJS, Node.js и другие языки. Возможности интегрированного модульного тестирования, проверки кода, интегрированного контроля версий, инструменты рефакторинга кода, набор инструментов для навигации проекта, выделения и автоматического завершения. Поддержка ряда сторонних фреймворков для веб-разработки, таких как Django, Pyramid, web2py, Google App Engine и Flask, что делает его универсальной IDE для быстрой разработки приложений.

PyDev

  • Плагин Python для Eclipse
  • Поддерживается всеми известными операционными системами
  • Источники в свободном доступе по публичной лицензии Eclipse
  • Обработка доработки кода, интеграция отладки Python, добавление токен-браузера, инструменты рефакторинга и многое другое
  • Возможность создания новых проектов Django, выполнение команд Django при помочи горячих клавиш и использование отдельной конфигурации запуска только для Django.

WingWare

  • Отличный IDE, разработанный WingWare
  • Поддержка Windows, Linux и MacOS
  • Это закрытый исходник

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

Komodo IDE

  • IDE для динамических языков, таких как Python, PHP и RUBY
  • Поддержка Windows, MacOS и Linux
  • Закрытый исходник с собственной лицензией

Поддержка Django: подсветка синтаксиса и завершение кода для шаблонов (кстати, я так и не столкнулся с ситуацией, где это было бы применимо). Содержит базовые функции, такие как рефакторинг кода, автозаполнение, calltips, сопоставление скобок, браузер кода, переход к определению, графическая отладка, многопроцессная отладка, многопоточная отладка, конфигурация точки остановки, профилирование кода, интеграция с тестируемым юнитом и интеграция со сторонними библиотеками, такими как pyWin32. Также в наличии такие функции как интеграция менеджера пакетов, отслеживание изменений, инструмент просмотра заметок, быстрые закладки, переход ко всему (Commando) и многое другое.

Eric

  • IDE и по совместительству редактор Python от Detlev Offenbach.
  • С открытым кодом
  • Поддержка Windows

Содержит такие функции как отладчик Python и Ruby, покрытие кода, автоматическая проверка кода, оболочка Python и Ruby, браузер класса и многое другое. Также имеются функции для совместного редактирования. Диалоги Regex и Qt, опции для создания сторонних приложений прямо в редакторе, диаграммы приложения, возможности управления проектами, а также интерактивная оболочка Python. Многоязычный пользовательский интерфейс, который включает в себя Английский, Немецкий, Русский, Французский, Испанский, Итальянский, Турецкий и Китайский языки, контроль версии для Subversion, Mercurial и Git, использование объявлений в плагинах, и многое другое.

Eclipse

  • Платформа общего назначения
  • Поддержка всеми операционными системами
  • Открытый код и поддержка всех ведомых языков
  • Великое множество плагинов

Geany

  • Доступно по лицензии GPL
  • Поддержка Linux, Windows и OSX
  • Поддержка сопоставления скобок, встроенный отладчик, автозаполнение и поддержка нескольких языков
  • Плагин поддержки

Spyder

  • IDE с открытым кодом для Python
  • Находится в свободном доступе под лицензией MIT

Содержит такие функции как многоязычный редактор, интерактивная консоль, просмотр документации, обозреватель переменных, поисковик файлов, поисковик в файлах, и многое другое. Хотя Spyder и является автономным IDE, который поддерживается множеством платформ, такими как Windows, Linux, Mac Os, Mac OS X, он также может быть использован в качестве библиотеки расширения PyQt и может быть встроен в приложения PyQt5 .

PyScripter

  • Находящийся в свободном доступе бесплатный IDE для Python, разработанный Kiriakos Vlahos.
  • Поддержка Windows
  • Поддержка проектов, редактирования файлов и отладки
  • Различные инструменты редактирования
  • Утилиты исходного кода Python

Python-IDLE

Часть стандартной библиотеки Python.
Весьма полезно при работе с небольшими фрагментами Python и экспериментами с различными функциями в Python.

Компилятор преобразует исходный код (файлов *.с, *.cpp) в работающую программу. Если у вас нет компилятора, необходимо его установить, прежде чем начать программировать. Есть много компиляторов, которые доступны в Интернете для скачивания. Если вы являетесь пользователем Mac OS X, Linux или других *nix систем (например, Unix или FreeBSD), вероятно, у вас уже установлены компиляторы, такие как GCC или G++.

Основные понятия

Компилятор — программа, транслирующая исходный (высокоуровневый) код программы в конечный (низкоуровневый) код.
Компиляция — процесс преобразования высокоуровневого исходного текста программы, в эквивалентный текст программы, но уже на низкоуровневом языке.
Компоновщик (Линкер) — программа, которая генерирует исполнимый модуль путём связывания объектных файлов проекта.
IDE (Интегрированная среда разработки) — сочетание текстового редактора и компилятора. Разработка, компиляция и запуск своих программы осуществляется непосредственно в IDE. Интегрированные среды разработки упрощают процесс составления программ, так как написание кода компиляция и запуск программ выполняются в одной программе — IDE. Ещё одной важной особенностью IDE является то, что IDE помогает быстро найти и исправить ошибки компиляции.

Понимание процессов компиляции

Процессы компиляции и компоновки — краткое описание того, что именно происходит, когда вы компилируете программу.
Ошибки компиляции , в некоторых строках компилятор находит ошибки, которые нужно ликвидировать.
Предупреждения компилятора — что такое предупреждения компилятора, как и почему их устраняют.
В чём разница между объявлениями и определениями в С/C++ . Узнайте разницу между объявлением и определением в Си/C++, и почему это так важно.

Выбор компиляторов (IDE)

Для ОС Windows:
Code::Blocks с Mingw — рекомендуемая нами, бесплатная IDE! Code::Blocks также доступна на Linux. Посмотреть, как установить эту IDE можно в нашей статье Установка Code::Blocks и MINGW.
Microsoft Visual C++ — читайте о Visual C++. Руководство по установке Microsoft Visual Studio 2012

Быстрая навигация:
Xcode - среда разработки для Mac Среда разработки для языка Си - Visual Studio 6 Dev-C++ (Dev-Cpp) - среда разработки приложений для Си/С++ Интерпретатор Python для iOS IDLE - интегрированная среда разработки Python Python - высокоуровневый язык программирования + интерпретатор

Вы скажете - а почему мы знакомимся с этой устаревшей средой разработки, когда уже имеется версия намного современнее и мощнее?
Причина в том, что новые версии платные, а для знакомства с основами языка Си нам будет достаточно и того функционала, который нам предоставляет эта бесплатная версия.
Конечно же вы можете использовать и более новые версии студии...
Нам же будет достаточно или VS6 или же ранее рассмотренный

В отличии от Dev-C++, Visual Studio не работает с отдельными файлами - только с проектами .
По этому если использовать данную среду разработки для изучения основ программирования на языке Си для каждого примера необходимо будет создавать отдельный проект, даже если вы хотите посмотреть как работает самая простейшая программа состоящая из нескольких строк.

Ниже мы посмотрим как это делается...
Для начала необходимо установить Visual Studio.

Файлы для скачивания:
Вы можете скачать установочный файл и файл апгрейда отсюда:
Скачать Visual Studio 6.0 - 68,5Mb
Скачать апгрейд для VS6 - 63,8Mb

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

1
Запускаем программу Visual Studio 6
Перед вами открывается окно с несколькими рабочими областями:
Левое - для отображения файлов проекта.
Его можно скрыть для увеличения рабочей области при написании программного кода в окне редактора - которое находится справа...
В нижней части находится окно для вывода служебной информации и вывода сообщений об ошибках в процессе компиляции.

2
Для старта работы необходимо создать новый проект.
Как уже было сказано это необходимо делать для каждого отдельного программного кода (в отличии от Dev-C++).
Открываем Visual Studio 6.0
Создаем новый проект: File - New . Выбираем вкладку Project
В списке названий шаблонов проекта выбираем Win32 Console Application
В поле имени проекта - Project name - пишем имя проекта.
Это имя будет также являться названием папки...
В поле "расположение" - Location - выбираем путь, по которому будет располагаться данный проект.


После этого выводится окно с подтверждением создания пустого проекта и мы соглашаемся с этим нажимая в подтверждение кнопку ОК

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

4
Создаем новый файл проекта:
File - New . Выбираем вкладку Files
В списке шаблонов выбираем С++ Source File
Это не должно вас смущать, поскольку мы создадим файл для работы именно на языке Си, а не на С++
Для этого в момент создания имени файла в поле File name - мы обязательно должны поставить расширение ***.c
Если этого не сделать, то создастся файл с расширением ***.cpp

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

5

После этого у нас откроется текстовое окно для написания программного кода.
Как и в Dev-C++ после написания программного кода его сначала необходимо скомпилировать и только затем выполнить.
Это делается с помощью команд (или пиктограмм) которые указаны на скриншоте:
- создать (скомпилировать) - F7
- выполнить (создать и выполнить) - Ctrl + F5
Варианты создания программы можно выбрать также на вкладке - Создать - Build

Сред разработки на C++ очень много, и для каждой цели есть своя, особенная IDE. Здесь находятся 10 самых популярных сред разработки и редакторов исходного кода для C++.

1 — Microsoft Visual Studio

Если Xcode — любимая среда разработки Apple , то Visual Studio — это среда разработки от Microsoft. Visual Studio в основном известна для написания приложений, включающих в себя.NET. Это полный набор инструментов, позволяющий произвести точную отладку и настройку приложения. Есть как Community-версия, так и PRO.

Visual Studio предназначена не только для разработчиков на C++, но также поддерживает многие другие популярные языки, такие как C#, Visual Basic и F#.

Visual Studio предлагает множество функций, некоторые из которых:

  • интеллектуальное автодополнение кода;
  • дизайнер графических форм (GUI);
  • простая в использовании навигационная система.

Вы можете использовать IDE для разработки компьютерных программ для Microsoft Windows, а также веб-сайтов, веб-приложений и веб-сервисов.

Подробнее можно узнать .

2 -Xcode

Xcode — это не просто интегрированная среда разработки, а полный набор инструментов для разработки программного обеспечения, созданных Apple для разработки программного обеспечения для MacOS, iOS, WatchOS и tvOS.

Xcode — лучшая IDE для Mac хотя бы потому, что она создана разработчиками операционной системы. Поэтому, если вы являетесь разработчиками под платформы Apple, эта среда для вас.

Функции Xcode:

  • создание приложений под все Apple платформы;
  • автодополнение кода;
  • удобная работа с GUI.

Подробнее можно узнать .

3 — NetBeans

Хотя NetBeans славится разработкой на Java, это также одна из лучших сред разработки на C++ как для Windows, так и для Mac с Linux.

У NetBeans также есть много готовых шаблонных проектов для C и C++, которые можно использовать в качестве основы для ваших приложений. NetBeans был написан с использованием Java, он также может быть использован для проектов PHP и HTML5. Идеально подходит для начинающих, но и опытные программисты часто используют его.

Плюсы NetBeans:

  • это ПО о открытым исходным кодом;
  • разработан и поддерживается компанией Oracle;
  • поддержка визуализированного создания GUI-имнтерфейсов;
  • поддержка Qt Toolkit;
  • поддержка удаленного развития;
  • легкая файловая навигация.

Подробнее можно узнать .

4 — Eclipse

Eclipse — еще одна простая в использовании и при этом мощная IDE для C и C++. Между Eclipse и NetBeans мало различий, но все же Eclipse является более быстрой средой разработки.

Плюсы Eclipse:

  • простота установки и использования;
  • бесплатный и открытый источник;
  • поддержка нескольких платформ;
  • мощный движок создания GUI-интерфейсов;
  • удаленный системный проводник.

Подробнее можно узнать .

5 — CodeLite

CodeLite — это еще одна бесплатная и быстрая IDE для программирования на C и C ++. CodeLite также поддерживает разработку на PHP и JavaScript.

Функции CodeLite:

  • мультиплатформенная поддержка;
  • встроенная поддержка GCC/clang/VC++;
  • CodeLite обладает удивительно быстрым и мощным инструментом завершения кода из-за собственного анализатора;
  • поддержка профилирования, рефакторинга;
  • анализ статического кода и браузер классов.

Подробнее можно узнать .

6 — Qt Creator

Qt Creator — самая известная среда разработки для создания графических приложений. Если вы собираетесь создать хорошее приложение с графическим интерфейсом, Qt Creator станет для вас идеальным выбором.

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

Некоторые из функций Qt Creator:

  • простой и удобный конструктор GUI-форм;
  • кроссплатформенность;
  • поддержка отладки, компиляции, профилирования, автозаполнения кода и рефакторинга;
  • поддержка анализа статического кода;
  • быстрый компилятор Qt;
  • визуализация данных Qt;
  • Qt Quick 2D Renderer;
  • Qt WebView;
  • Qt Virtual Keyboard.

Подробнее можно узнать .

7 — Code::Blocks

Codeblocks — это еще одна свободная и открытая среда IDE для C и C++, написанная с использованием GNU C++. Главный плюс — кроссплатформенность программы. CodeBlocks также можно использовать для языков c и Fortran.

Некоторые из функций CodeBlocks:

  • простая и быстрая установка;
  • наличие портативной версии;
  • удобный конструктор GUI-форм;
  • встроенная возможность создания блок-схем.

Подробнее можно узнать .

8 — Dev-C++

Dev-C++ — это бесплатная интегрированная среда разработки с открытым исходным кодом, написанная в Delphi для Windows. Это легкая IDE, которой требуется всего на пару минут для установки. Это — лучшая среда разработки для новичков, в ней можно установить плагин для создания GUI-интрефейсов методом перетаскивания элементов.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows