Ватсон Карли
Шрифт:
Вывод сообщения
Наконец мы переходим к строкам, которые действительно выводят сообщение на консоль. а затем в окно сообщения. В обоих случаях эти строки кода используют вызов свойств из поддерживающих эти два языка библиотек. Архитектура классов в стандартной библиотеке очевидно очень отличается от архитектуры библиотеки базовых классов .NET, поэтому детали вызовов методов в этих примерах кода различны. В случае C# оба вызова делаются как вызовы статических методов на базовых классах, в то время как вывод окна сообщения в C++ должен использовать нестандартную функцию API Windows
Базовые классы спроектированы интуитивно понятными, существенно более понятными, чем в стандартной библиотеке. Без какого-либо знания C# сразу становится ясно, что делает
Еще один момент, который легко можно пропустить: приведенный выше код показывает, что C# использует точку, т.е. символ вместо двух двоеточий
Сравнение свойств
Приведенный выше пример дает общее представление о различиях, которые будут показаны. Оставшуюся часть этого приложения мы посвятим детальному сравнению этих двух языков, периодически обращаясь к различным свойствам языков C++ и C#.
Архитектура программы
В этом разделе будет рассмотрен в очень общих терминах вопрос о том, как свойства двух языков влияют на общую архитектуру программ.
Программные объекты
В C++ любая программа состоит из точки входа (в ANSI C++ это функция
Файловая структура
В C++ синтаксис, на котором строится программа, основывается на понятии файла как единице исходного кода. Имеются, например, файлы исходного кода (файлы
При использовании C# в ведении компилятора находятся детали соответствия отдельных файлов исходного кода. Можно поместить исходный код в один файл или в несколько файлов, но это не играет никакой роли для компилятора и нет необходимости для любого файла явно ссылаться на другие файлы. В частности, не существует требования определять элементы до ссылки на них в любом отдельном файле, как это требуется в C++. Компилятор успешно находит определение каждого элемента, где бы оно не находилось. Как побочный эффект этого, не существует в действительности никакой концепции компоновки кода в C#. Компилятор просто компилирует все исходные файлы в сборку (хотя можно определить другие варианты, к примеру, модуль — единица, которая будет формировать часть сборки). Компоновка не имеет места в C#, но она в действительности ограничивается компоновкой кода с любым существующим библиотечным кодом в сборках. В C# не существует такого понятия, как заголовочный файл.
Точка входа программы
В стандартном ANSI C++ точка входа программы является по умолчанию функцией с именем
Здесь argc указывает число аргументов, передаваемых в программу, a argv является массивом строк, задающих эти аргументы. Первый аргумент всегда является командой, используемой для выполнения самой программы. Windows несколько изменяет это. Приложения Windows традиционно начинаются с точки входа, называемой