00 C++17 & OpenGL Красота в коде
В жизни каждого человека есть то любовь к которому он пронес через всю жизнь. В моей жизни такой любовью был язык программирования С++. Встреча с ним состоялась в те далекие времена, когда в продаже появились первые нормальные компьютеры с 486 процессором, Windows 95 и Visual C++ 6.0.
В то время С++ только родился и большинство профессиональных программистов восприняло его в штыки - он требовал совершенно другого стиля мышления. Как в той истории про 40-ножку, которую спросили с какой ноги она начинает ходить только наоборот. От способа описания какой ногой и куда ходить перешли к определению самой 40-ножки, а какой ногой она ходит - пусть сама разбирается.
Справедливости ради, нужно сказать, что большинство программистов быстро оценили всю мощь нового языка - он позволил создать программы, которые сами стали писать программы.
А в 2011, 2014 и 2017 годах произошло рождение бабочки из куколки старого С++. Сейчас написано достаточно книг об этом новом С++. Одно «но» - их очень скучно читать. И это проявляется с двух сторон - вы вручную набираете код и вам это быстро надоедает. Или вы используете готовый код, который предлагают авторы книг - вы его скопировали, он заработал и ... вы его благополучно забыли. А все потому, что пример там правильные, но НИ О ЧЕМ.
Решение пришло, как всегда, неожиданно - читая книгу «Бьярне Страуструп. Программирование. Принципы и практика с использованием С++. Второе издание. Москва • Санкт-Петербург • Киев . 2016», я обнаружил, что целых пять глав плюс одно приложение он посвятил графической библиотеке FLTK.
В старых С++ была собственная графическая библиотека, которая подключалась к проекту через файл «graphics.h» и в большинстве случаев ее вполне хватало. Но в дальнейшем она тихо исчезла.
Однако FLTK предоставляет возможность программирования только двухмерной графики. Для трехмерной она использует OpenGL.
И я подумал - а зачем мне посредник? Почему бы не использовать OpenGL напрямую?
И это оказалось именно той фишкой, которая сделала процесс изучения С++17 не просто интересным, а по-настоящему увлекательным.
Все привыкли, что графическая программа это, как минимум, несколько десятков строк кода, который так сразу и не поймешь. Попробуйте, например, написать простейшее окно под Виндовс.
А теперь предлагаю оценить всю мощь и красоту С++17 - вот минимальная РАБОЧАЯ программа на С++ и OpenGL:
#include <GL/glut.h>
int main()
{
glutCreateWindow("Small program");
glutDisplayFunc([]{});
glutMainLoop();
}
для сравнения минимальная программа на «чистом» С++:
#include <iostream>
int main()
{
std::cout << "Hello, World!" << std::endl;
stl::cin.get();
}
Обалдеть! Графическая программ всего НА ОДНУ СТРОЧКУ больше.
И вот у меня есть желание поделится этой красотой - красивыми бывают не только музыка или любое другое искусство, но и программный код - это тоже ОЧЕНЬ КРАСИВО.
Я не буду рассуждать на темы «почему?» - для этого есть специальная литература. Я буду показывать «как» сделать то или другое с чем у меня возникали проблемы и как красиво их можно решить на С++17.
Единственное - это первая и последняя моя статья на эту тему на КОНТе. Основная проблема с ним - перестали приходить извещения на почту.
Для тех, кого это заинтересует - буду писать в своем ЖЖ
http://wlad55wlad.livejournal.com/
Оценил 1 человек
1 кармы