Блог пользователя Илья Лесной

Заметки по Си++

Информация для гостей блога


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

Важно

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

Миссия блога

Говорят, что C++ невозможно выучить. Чем больше изучаешь этот язык, тем больше соглашаешься с этим утверждением. Если же Вам кажется, что Вы владеете этим языком полностью, скорее всего Вы или выдающийся гений, или еще не успели столкнуться с чем-то новым :) Но C++ можно понять, можно научиться пользовать его идеально, а весь массивный слой знаний, который, ввиду человеческих возможностей, запомнить или помнить всегда невозможно – законспектировать, и при необходимости обращаться к конспектам как к проверенному источнику знаний.

Автор блога cpp-code.ru уделяет максимум внимания деталям, иногда, в тех местах, где возможны тонкости, строки кода разбираются вплоть до каждого оператора в строке. Обычно, в статьях, не уделяется такого внимания самому языку. Но автор считает полезным писать так подробно, на случай если что-то будет забыто – это исключает возможное недопонимание. Так же, такое внимание, облегчает понимание новичкам в языке. Автор предупреждает: рассмотрение спускается на довольно низкий уровень сущностей, разбирается их поведение или код их реализации, и может делаться вывод о поведении на конкретной платформе конкретных языковых или библиотечных сущностей, с дальнейшим причислением выделенного поведения в категорию "по стандарту языка", или же "неопределенное поведение", "неуточняемое поведение". К сожалению автор блога не знаком с английским языком на достаточном уровне, чтобы иметь возможность читать стандарт языка Си++, поэтому в некоторых местах блога могут быть некорректные утверждения про "стандарт языка" или неверное причисление какого-либо явления в одну из категорий неуточняемого или неопределенного поведения.

Тем не менее, собранный материал в блоге достаточно подробно проверяется, и иногда это позволяет замечать ошибки или неточности, даже в очень серьезных источниках, например в таких как cppreference.com. При этом, если в таких серьезных источниках могут быть неточности, то что говорить о непогрешимости информации, предоставленной здесь. Всегда будьте критичны, и не ленитесь проверять. Это увлекательно. Автор же блога предполагает в течении 5 лет выделить время на освоение английского до уровня уверенного чтения технической документации :)

Предыстория появления данного сайта.

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

Люди одни из самых социализированных животных, из социализации людей вытекает даже некое явление, которое я бы назвал "социально-сетевой-эксгибиционизм" - это всё то, чем люди занимаются в соцсетях не ради бизнеса или прочих дивидендов. Я тоже подвержен данному явлению, поэтому, как отражение моего любимого хобби прошлого, а теперь просто приятного увлечения, есть фотогалерея.

Добро пожаловать :)

Популярные записи

28 September 2016. Аллокаторы в C++. Или свой распределитель памяти.
23 June 2016. Метапрограммирование. Часть 1. Взгляд издалека.
16 June 2016. Умные указатели.
25 May 2016. Немного про архитектуру STL итераторов.
01 April 2016. Кастуем.

немало полезных заметок собрано в комментариях к теме "Простые заметки про Си++".

Рекомендуемая литература

Т.А. Павловская, "C/С++ Программирование на языке высокого уровня", 2003 год.
Т.А. Павловска, Ю.А. Щупак "С++ Объекто-ориентированное программирование Практикум", 2006 год.

Именно с этих книг я бы порекомендовал начало изучение Си++.
Они создадут отличную базу для дальнейшего освоения языка и чтения более продвинутой литературы, из которой я бы порекомендовал Скотта Майерса.

Немного опыта

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

Читать далее...

История команд в консоле

Два года пользуюсь FreeBSD но только сейчас заметил что в отличии от стоковой консоли Debian (и всех других Linux дистрибутивов), если ввести какие-нибудь первые буквы команды которая уже есть в истории и начать нажимать стрелочки вверх - то будет листаться история именно команд, начинающихся с введенных символов. В Линуксах - просто листается история начиная от последней.

ПутеШествия по Новосибирску | Где погулять в Новосибирске?

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

В галереи или на внешних ссылках из неё можно отыскать вот такие уютные места для прогулки как на этих трёх фото - всё это Новосибирск. Все они доступны на общественном транспорте, а некоторые из них непосредственно в центре города :)
Читать далее...

Пикник на «Обском море»

Удалось выбраться в своё любимое место, где в прошлом году встречал закат с любимой. Выложил видео о событии на память, на ютуб. Впервые за 8 лет посещения этого дикого (ну или полудикого) пляжа мы увидели столько людей, подробнее в видео ^_^

Один солнечный денек за весь май

Решил порадовать себя небольшой прогулкой, упускать возможность погулять в такой солнечный и тёплый день я не смог )

Фото 1 - Начал расти Папоротник, вкусное сибирское лакомство.
Читать далее...

Шаблон шаблона

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

Возможно когда-то пригодится (мне вроде по началу пригождалоь, но позже отказался от идеи, но нарытое знание захотел законспектировать) итак

Например я хочу иметь некий класс контейнер. Реализовывать свой внутренний ф-л не хочу. Хочу пользовать STL. Вспоминуются адаптеры контейнеров. Но в итоговом продукте я не хочу чтобы пришлось писать такое при кастомизации адаптера:

  1. std::stack<int,std::set<int>> mySt;

Для STL стека такое многословие оправдано тем что он так сказать целиком конструируется из внешний кирпичиков. Мой же "адаптер" нуждается только в имени шаблона, актуализированный экземпляр которого послужит внутренним движком манипулирования коллекцией данных строго определенного типа, т.е. в итоге хочется такого род актуализацию:

  1. AttrContainer<std::list> container_list;
  2. AttrContainer<std::set> container_set;

Читать далее...

Windows 8.1 и 10 - лучшее и худшее что когда-либо делал Microsoft для Desktop

Давным давно мои интересы и любовь сосредоточились на Unix-подобные операционные системы. Были периоды что на моём компьютере вообще не было продуктов от Microsoft. Но GNU-GPL головного мозга я никогда не страдал, когда мне захотелось играть в видео-игры, я сделал "мультизагрузку". Это напомнило мне период выбора загрузки из нескольких Linux, FreeBSD, и нескольких Windows (помоему стояла XP для игр, и какая-то из Server 200n - не помню для чего, скорее просто по приколу).












рис.1 - win10 logo
Далее, где-то в начале 2010-х я увлёкся фотографий.
Читать далее...

MS Windows Philosophy [сборник интересных архитектурных решений]

1. Заметил что Win8 весьма быстро загружается. (Да линукс проще кастомизировать и т.д и т.п.) Но технология Prefetcher действительно позволяет загружать операционную систему и все необходимое окружение значительно быстрее. Т.е. от включения компьютера, последующего логина, кликанья на иконку файрфокса и его прогрузки на моей текущей конфигурации - Win8 тратит около 40 секунд. Различным дистрибутивам Linux (fedora,debian), с различными ui (lxde, gnome, kde) требуется от включения до прогрузки файрфокса около 1.5-2 минут.
Читать далее...

Страницы