воскресенье, 16 марта 2008 г.

День 1


The One


Первая Глава столь замечательной книги - Освой самостоятельно С++ за 21 день - 5 издание - Джесс Либерти, Брэдли Джонс - прошла на Ура. Прочёл за минут 40 , заостряя внимания на мелочах . Пора перестать читать книги поверхностно
Дало свою пользу. Выпишу такой мини конспект и самое интересное.

Языки бывают

Интерпретируемыми (Интерпретатор, последовательно, превращает инструкции программы в команды машинного кода ), и

Компилируемыми (Компилятор преобразует исходный код программы в некоторую промежуточную форму - объектный фаил.)

Здесь стоит сделать два замечания :

1. Интерпретатор, ... инструкции программы . Компилятор ... исходный код программы . Чувствуете разницу - если внимательно вчитывается то можно заметить такие тонкие нюансы.

2. Когда-то умные дядьки говорили что Компилятор создаёт .ехе фаил - а теперь мы видим что это несовсем так . Пометка : Исправляем неточности.


  • Язык С++ Объектно ориентированный язык программирования выросший из С (Си) , благодаря стараниям Бьёрна Страуструпа (Bjarne Stroustrup).

  • Язык компилируемый. Что значит создаёт независимые .ехе файлы .

  • Типы программирования

  • Процедурное, Структурное , Объектно-ориентированное

С процедурным неувязочка вышла - описано довольно смутно, пол абзаца. Ну мы не обижаемся и обязательно прочтём что это такое - Гугл.

Структурное - "разделяй и властвуй", разбиваем большую задачу на под задачи, потом ещё меньше , и ещё , и в итоге чему равна половинка от половинки - Половинке половинки ?

Уважаю , примерно так и в реальной жизни происходит решение каких либо повседневных задач

ООП - Всё есть объект. Каша. Каша состоящая из :

Инкапсуляция - ...

Наследование и многократное использование - ...

Полиморфизм - ...

Я специально оставил пустые места. Суть некоторых вещей мне , примерно, понятна, доходчивые примеры, но ! Что бы оставаться политкорректным дополню со временем.

Нужно ли изучить сначала язык С?

Авторы говорят нет. У меня есть несколько книг по С (Си), купленных мной время назад, если что можно будет взять задачи от туда, сравнить решения на Си и С++, что эффективнее и к месту применения конкретной задачи. Не проподать же добру ?

Управляемые расширения для языка С++

Что меня удивило так это возможность интеграции С++ с платформой .NET. Смутно себе это представляю, так как .NET как и JAVA это по сути виртуальные машины в которых и исполняются программы, написанные на языках ориентированных на ЭТИ среды. Интересно Flash Player и Silverlight можно отнести к этому семейству ? ;)

Ход создания программы :

Код -> Компиляция (Создание .obj файла) -> Компоновка (Собрать все необходимые файлы: .obj, библиотеки, в один .ехе фаил.)


#include

int main ()
{
std::cout << "Hello World!\n"; return 0; }

Интересные детали :


iostream сокращённо от Input-Output-Stream , соответственно и хранятся в этой библиотеке объекты (!) cout и cin. Тоже сокращённо от Console-Output , Console-Input. Когда разъясняешь столь простые вещи то становится ГОРАЗДО понятней - чем давать без смысловой нагрузки.

Если функция main() возвращает что-то то нужно писать int main () и в тексте программы в самом конце return 0; (пока что условимся на этом, как что узнаю обязательно дополню), если она нечего не возвращаем то можно писать void main().
Избегать писать void main() если main() что-то возвращает системе, даже если компилятор позволяет так делать.
Смутно понимаю зачем системе что либо вообще возвращать ? Гугл.

Инструменты :

Visual Studio 2008 Professional. IDE (Integrated Development Environment - Интегрированная среда разработки).
Почему взял такой сложный IDE дорогой ?! Мог взять DevC++ но там непонятная история с версиями IDE , с бетой 5 версии которая в режиме (currently beta) уже более 2 лет а по обещаниям разработчиков вот вот будет готова. Если что поставлю 4 версию и буду проверять спорные моменты там. А Microsoft по отзывам с VS 6 C++ стал только лучше Будем надеется

Быстрый запуск программы , удобно чертовски ;) Как понимаю программа проходит все этапы создания программы ?

main() должен быть один !

Звучит как Фраза из Горца. Для новичка такого как я кажется что достаточно создать новый проект и в нём уже создавать отдельные .cpp файлы и их компилировать. Но увы при создании двух файлов Hello1.cpp Hello2.cpp и их дальнейшеё компиляции (создании .obj файла) получаю сообщение Error 1 error LNK2005: _main already defined in hello1.obj hello2.obj Hello .

Нужно создавать новый проект. Умные люди говорят - main() должен быть один ! Есть способ как в 1 проекте компилировать множество .cpp файлов, но пока он мне неизвестен.

Комментариев нет: