Продолжение предыдущего поста.
В этой части мы будем рассматривать не столько технические изменения в С++, сколько новые подходы к разработке и возможности которые дают новые средства языка. Предыдущий пост был с моей точки зрения просто затянувшимся вступлением, тогда как здесь можно вволю подискутировать.
Читать полностью »
Рубрика «c++» - 180
Аннотация к «Effective Modern C++» Скотта Майерса. Часть 2
2015-02-04 в 3:59, admin, рубрики: c++, Effective Modern C++, Scott Meyers, Программирование, С++, с++11, С++14Искусственный рассвет
2015-02-02 в 16:37, admin, рубрики: avr, c++, diy или сделай сам, hsv в rgb, LED, программирование микроконтроллеров, Электроника для начинающихНачалось всё год назад. Перед Новым 2014 годом несколько пришел в упадок жизненный тонус. Процесс самокопания привел к следующей мысли:
— А, что ж так темно-то, Господи? © День радио.
Впрочем, для человека, живущего зимой по летнему времени — мысль вполне естественная.
Читать полностью »
Итоги C++ розыгрыша и демо рефакторингов в CLion
2015-02-02 в 13:06, admin, рубрики: c++, Cpp, Блог компании JetBrains, конференция, Программирование, разработка, рефакторингиПривет Хабр,
Некоторое время назад мы объявили конкурс — требовалось продолжить фразу:
Бьёрн Страуструп создал С++ 36 лет назад, и он до сих пор востребован и пользуется популярностью у разработчиков, потому что...
Спасибо всем участникам за массу положительных эмоций и разнообразные предположения о том, что же сделало C++ таким популярным.
Посовещавшись, мы выбрали топ-6 ответов:
- Logonoff
Бьёрн Страуструп создал С++ 36 лет назад, и он до сих пор востребован и пользуется популярностью у разработчиков, потому что помимо языка Бьёрн изобрел также капсулу времени и ионный бластер, с помощью которых он уничтожает все альтернативные реальности в которых C++ непопулярен.
- poxu
Бьёрн Страуструп создал С++ 36 лет назад, и он до сих пор востребован и пользуется популярностью у разработчиков, потому что он лучше любого другого языка позволяет разрабатывать программное обеспечение, предназначенное для работы на платформах с произвольными ограничениями, будь то частота процессора, объём оперативной памяти или размер батарейки. А ещё, в отличии от plain C, в нём есть деструкторы!
- bogolt
мир захватывают самые практичные а не самые красивые.
- За внимательность спасибо fshp
Бьёрн Страуструп создал С++ 36 лет назад, и он до сих пор востребован и пользуется популярностью у разработчиков, потому что «C++» у вас написан кириллицей, а он таких ошибок не прощает.
- HDDimon
Бьёрн Страуструп создал С++ 36 лет назад, и он до сих пор востребован и пользуется популярностью у разработчиков, потому что позволяет придерживаться золотой середины между сложностью и производительностью.
- fogone
потому что это единственный нативный язык под который можно найти разработчиков
Довольно часто в программе, работающей с базой данных, в качестве идентификаторов сущностей используются значения целочисленного типа (например, long
). Но людям свойственно ошибаться, и программист может по ошибке использовать идентификатор одного типа сущности для адресации другой. Такая проблема может долго оставаться незамеченной, если идентификаторы сущностей пересекаются, а такое бывает довольно часто. К счастью, в языках, позволяющих манипулировать типами, коим является C++, есть довольно простое решение этой проблемы.
Читать полностью »
Как подружить QML с чужим OpenGL контекстом. Часть III: Обработка пользовательского ввода
2015-01-31 в 11:27, admin, рубрики: c++, QML, qt, qt quick, qt5, Программирование В данной статье я попытаюсь рассказать о том как передавать события мыши и клавиатуры в QQuickWindow, в случае его использования в связке с QQuickRenderControl. Причиной того, что этому необходимо уделять специальное внимание, является то, что в случае использования QQuickRenderControl, никакого окна на самом деле не создается, соответственно у QQuickWindow нет абсолютно никакой возможности получать какие либо события, и их приходится эмулировать. То же самое касается изменения размеров — об этой операции так же необходимо оповещать в явном виде.
Читать полностью »
Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 3.14 из 6
2015-01-30 в 19:55, admin, рубрики: c++, линейная алгебра, Программирование, Работа с анимацией и 3D-графикойСодержание основного курса
- Статья 1: алгоритм Брезенхэма
- Статья 2: растеризация треугольника + отсечение задних граней
- Статья 3: Удаление невидимых поверхностей: z-буфер
- Статья 4: Необходимая геометрия: фестиваль матриц
- Статья 5: Пишем шейдеры под нашу библиотеку
- Статья 6: Чуть больше, чем просто шейдер: просчёт теней
Улучшение кода
- Статья 3.1: Настала пора рефакторинга
- Статья 3.14: Красивый класс матриц
- как работает новый растеризатор
4 Приветствие и вступление
Нумерация в прошлой статье закончилась на 3, в этой будем продолжать нумеровать насквозь.
UPD: ВНИМАНИЕ! Раздел, начиная с номера 3.1, 3.14 и 3.141 и далее, будет о тонкостях реализации основы основ компьютерной графики — линейной алгебры и вычислительной геометрии. О принципах графики пишет haqreu, я же буду писать о том, как это можно внятно запрограммировать!
Эта статья является продолжением серии статей о практической реализации элементов вычислительной геометрии, и, в частности, программного отрисовщика, с использованием C++98. Мы с haqreu сознательно идем на использование прошлой версии стандарта и написание собственной геометрической библиотеки для того, чтобы, во-первых, выпустить код примеров, которые без особых трудностей будут компилироваться большинством имеющихся компиляторов, а во-вторых, чтобы в нашем коде не было ничего, что скрыто в недрах библиотеки. В статье излагаются вопросы реализации шаблона прямоугольной матрицы template<size_t DimRows,size_t DimCols,typename number_t> class mat;
4.1 Благодарности
Я выражаю огромную признательность haqreu, как основоположнику данного курса. Так держать!
Я очень признателен lemelisk за предварительное рецензирование и ревью моих исходников. Спасибо за плодотворные дискуссии!
Читать полностью »
Категории Клейсли
2015-01-28 в 14:12, admin, рубрики: c++, haskell, математика, Программирование, теория категорий, функциональное программированиеКомпозиция логирования
Вы видели, как сделать категорию типов и чистых функций. Я также упомянул, что есть способ смоделировать побочные эффекты, или нечистые функции, в рамках теории категорий. Давайте рассмотрим пример: функции, которые логируют или записывают ход своего выполнения.
Читать полностью »
Boost.DI: внедрение зависимости в С++
2015-01-28 в 8:57, admin, рубрики: c++, dependency injection, Блог компании Инфопульс Украина, Проектирование и рефакторинг«Не звони нам. Мы позвоним тебе сами.» — принцип Голливуда
Внедрение зависимости (Dependency Injection — DI) означает передачу (внедрение) одной или более зависимости какому-либо объекту (клиенту, компоненту) таким образом, что после внедрения эта зависимость становится частью состояния объекта. Это немного напоминает паттерн проектирования Стратегия, с той лишь разницей, что стратегия задаётся лишь однажды — в конструкторе. DI позволяет создавать более слабо-связанную архитектуру приложения, которая лучше поддаётся поддержке и тестированию.
Итак, ещё раз плюсы:
- Уменьшает связность компонент (отделяет бизнес-логику от создания объекта)
- Позволяет писать более поддерживаемый код (в одни и те же объекты мы легко можем внедрять разные зависимости)
- Позволяет писать более тестируемый код (мы можем легче использовать стабы и моки)
Без внедрения зависимости | С внедрением зависимости |
---|---|
|
|
Городские легенды о медленных вызовах виртуальных функций
2015-01-28 в 8:52, admin, рубрики: c++, clang, gcc, vtable, Блог компании ABBYY, Компиляторы, оптимизация кодаТрадиционно компиляторы реализуют вызовы виртуальных функций через двойную косвенную адресацию — если класс содержит хотя бы одну виртуальную функцию, то в начале каждого объекта этого класса хранится адрес таблицы виртуальных функций. Если компилятор не знает конкретный тип объекта, на который указывает указатель, то для вызова виртуальной функции нужно сначала взять указатель на объект, прочитать адрес начала таблицы, затем по номеру метода прочитать адрес, где хранится реализация функции, затем вызвать функцию.
Процесс поиска конкретной функции по указателю на объект называется поздним связыванием и выполняется во время работы программы. Позднее связывание не только увеличивает накладные расходы на вызов, но и препятствует оптимизации кода компилятором. Из-за этого сами виртуальные функции принято считать замедляющими работу.
В тексте выше ключевое слово «если». Что, если компилятор знает, какую функцию на самом деле надо вызывать?
Читать полностью »
Я горжусь своей профессией. Я — программист
2015-01-27 в 9:48, admin, рубрики: c++, колледж, Программирование, профессия программиста, учеба
Любой человек должен уметь менять пеленки, планировать вторжения, резать свиней, конструировать здания, управлять кораблями, писать сонеты, вести бухгалтерию, возводить стены, вправлять кости, облегчать смерть, исполнять приказы, отдавать приказы, сотрудничать, действовать самостоятельно, решать уравнения, анализировать новые проблемы, вносить удобрения, программировать компьютеры, вкусно готовить, хорошо сражаться, достойно умирать.
Специализация — удел насекомых.
Роберт А. Хайнлайн
Писать про IT-профессии довольно сложно, ведь они сейчас в каждой сфере. Почти в любой профессии что-то связано с IT.
Дело, которым человек решил заниматься в жизни, должно быть значимым и нужным другим людям, приносить реальную практическую пользу. Можно сколько угодно внутренне самосовершенствоваться и утверждать, будто самое важное — это твой богатый внутренний мир, но, на самом деле, всё, что происходит в сознании человека, не имеет никакого смысла и значения, если не дает реальных ощутимых практических плодов, влияющих на жизнь и развитие общества в целом. Объективно, человек — это его работа, это конечный результат прилагаемых усилий. Всё остальное — только почва, из которой такой плод — результат — может вырасти. Люди, не сумевшие вовремя этого осознать, обрекают себя на то, чтобы долгое время, если не навсегда, оставаться аутсайдерами, способными только ныть, жаловаться и недоумевать, почему общество их отвергает?!
Когда-то передо мной встал вопрос: кем стать?