Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Философия программирования на C++


Первый выпуск. Ознакомительная информация.

Добрый день, уважаемые подписчики.

В этом выпуске я бы хотел рассказать вам о чем будет идти речь в рассылке, а также рассказать начальный пожалуй для всех программистов пример "Hello world" :)

Итак, о рассылке. Я начал данную рассылку для обмена опытом с другими программистами. То есть я что-то даю вам, и, надеюсь, какие-то знания получаю от вас. Рассылка не планируется как какой-нибудь крупный проект, не будет она коммерческой и тд и тп. Данная рассылка является тестовой. В общем, как повезет. В ней я планирую рассказывать поначалу довольно простые вещи, но и по возможности открывать что-то новое в этих простых вещах. Рассылка поможет как тем, кто не знает и не имеет вообще ничего (кроме компилятора и документации, но об этом позже), так и "уже не начинающему" классу программистов. Вся информация будет даваться в сжатом виде, считается что вы очень хотите чему-то научиться и будете что-то делать и сами :) Кроме того я очень надеюсь на обратную связь. Было бы неплохо, если бы вы писали мне (адрес в конце рассылки) свои комментарии, замечания, предложения по содержанию рассылки, по ее улучшению, а так же приветствуется критика :) Кроме того я планирую давать что-то вроде заданий (пока точно не решил что это будет), так что в этом случае буду ждать ваши решения. В общем я надеюсь, что мы окажемся полезными друг другу и каждый получит, что хочет.

Стиль  рассылки стандартный (может, в будущем ближайшем я его и изменю, но сейчас почему-то лень :) все-таки рассылка тестовая).

Начнем... Сначала о компиляторах. В интернете существует полно статей на эти темы, воспользуйтесь любым поисковиком и найдите (если еще нету) какой-нибудь бесплатный компилятор. Почему я не привожу список рекомендуемых мною компиляторов? Потому что я считаю, что это скорее дело вкуса (хотя многие люди в интернете выясняют, какой компилятор в чем лучше, но на процесс обучения это никак не влияет). Хотя следует отметить, что следует выбирать компиляторы, наиболее близкие к стандарту С++. Да и хороший программист должен уметь искать информацию в интернете, так что с этим проблем быть не должно :)

Кроме того каждый программист должен иметь под рукой документацию... ну там справочник, или же различные сайты с нею... Это очень полезная и нужная вещь (но в принципе поначалу вы не заметите в ней необходимости).

Если у вас есть какие-либо вопросы, пишите, буду рад ответить на них.

Ах да, и еще. В рассылке я буду рассказывать именно о языке С++ (не о языке С!). И более того - я буду демонстрировать отличия подходов С и С++, рассказывая основные ошибки бывших программистов на С, перешедших на плюсы.

Ну и что-то вроде первого урока :) Обещанная программа "Hello world" (во всех выпусках все исходники будут корректно работать на большинстве поддерживающих стандарт компиляторах, все они проверяются мною перед отправкой в рассылку).

Сначала я приведу собственно код. Сразу скажу, что первый выпуск не рассчитан на "неновичков" :) Они могут дальше не читать.

#include "iostream"
using namespace std;
int main() {
    cout << "Hello, world!";
}

Итак, это хоть и не минимально возможная программа, но это пожалуй самая простая, выдающая какой-то результат (строку "Hello, world!"). Первое, что вы обнаружите скорее всего после компиляции данного кода и его запуска - появляется и тут же исчезает черное окошко (консоль). Да, забыл сказать. Необходимо создать консольный проект :) Но этому я учить не буду, мое дело - сам С++ и код! :) Вернемся к исчезающей консоли. У меня в компиляторе если запускать не в режиме отладки (debug), то окошко не исчезает, а после завершения работы программы выдается что-то вроде Press any key to continue.

Я опять что-то забыл сказать (первый выпуск все-таки!). Для наиболее успешного обучения программингу необходимо знать английский! Без него вам будет очень туго, хотя у меня есть некоторые такие друзья :) Но если вы его не знаете, советую параллельно срочно начать его изучать. Ведь дополнительное знание не помешает, не так ли?

Вернемся к коду. Разберем построчно. Первая строка - подключение заголовочного файла. В нем хранятся классы, функции и переменные для работы с потоками ввода-вывода. Если вам что-то из этого непонятно - не переживайте, позже вы все узнаете. Напомню, что все будет даваться в сжатом виде, поэтому мы довольно быстро дойдем до сложных вещей. Итак, мы подключили нужное нам, теперь можем использовать поток вывода (вывода на консоль, то бишь на экран).

В следующей строке используется пока непонятная конструкция - это пространство имен. Пока достаточно знать, что в данном пространстве имен хранятся почти все необходимые стандартные функции, классы и переменные стандартного С++, и что его просто нужно так включать в начало после всех #include. Но сразу отмечу, что подобное отношение портит программистов. Хотя я буду пока использовать подобный подход, не следует привыкать к нему. Многие мои знакомые программисты начинают использовать using namespace в своих проектах везде где можно и нельзя, чтобы сократить размер кода (если его не писать, пришлось бы писать везде что-то вроде std::cout). Это плохой подход, поскольку от этого можно многое потерять. Но я буду постоянно об этом напоминать, советую не привыкать использовать вторую строчку, но пока без нее не обойтись (с ней проще). Позже я расскажу подробнее о пространствах имен (да-да, не все профессионалы умеют его использовать и не все его ценят... особенно программисты С).

Далее мы объявляем функцию main() - это точка входа в программу. Что такое функция? Позже на примерах вы научитесь их писать и начнете их понимать (да, я не сказал, что обучать понимаю С++ буду только на примерах... по крайней мере буду стараться... только практика поможет глубокому пониманию основных концепций С++!). Скажу лишь, что функция должна иметь тип возвращаемого значения, имя, параметры, объявленные в скобках, а также тело функции. Вам это может ни о чем не говорить) Это не страшно, первый выпуск не рассчитан на понимание и не является обучающим. Я просто привел пример работающего кода, чтобы вы научились на нем использовать компилятор и, быть может, документацию.

Ну и на следующей строке собственно то, что и выводит на экран нашего монитора строку. Как вы уже наверно догадались, строка задается в С++ в кавычках. Вывод ее делается очень просто - с помощью потока вывода и оператора <<. Интуитивно должно быть понятно, что делает эта строка. В этом есть преимущество С++ над С, его код выглядит интуитивно более понятно :) Отмечу, что загадочное cout (console out) является тем самым потоком вывода, он определен в заголовочном файле "iostream", для этого мы его ведь и подключали :) Кроме того после каждого оператора необходимо ставить точку с запятой. Просто так надо. Если забудете - не страшно, компилятор вам об этом скорее всего скажет (попробуйте убрать ее, поучитесь использовать компилятор для поиска ошибок, это тоже очень необходимо в программировании!).

Некоторые программисты, которые не очень хорошо знают стандарт С++, сразу крикнут (мне такое говорили не раз!): а где же строка "return 0;" ??? Объясняю: в новом стандарте (хотя какой он новый? просто он является новым для программистов С) его использование не обязательно. И компилятор не должен выдавать даже предупреждений, если выдает - скорее всего у вас не очень хороший компилятор, наверное, его лучше сменить (потому что это не по стандарту).

 

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

Стоит отметить, что в дальнейшем я буду обращать ваше внимание и на стиль оформления кода. Сейчас я ничего о нем не говорил намеренно :) Ведь нам, программистам, нужно правильно оформлять код, ведь его читаем не только мы сами! Но, об этом позже.

Рассылки будут выходить примерно раз в неделю по воскресеньям (может, чаще, может, реже).

Первая рассылка по пониманию С++ с обучением планируется через неделю, удачи!

С уважением, Рушан Сулейманов, mail: asm_89@mail.ru

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


В избранное