Embrace Modern Technology: Using HTML 5 for GUI in C++ – Borislav Stanimirov – CppCon 2019


Discussion & Comments: https://www.reddit.com/r/cpp/

Presentation Slides, PDFs, Source Code and other presenter materials are available at: https://github.com/CppCon/CppCon2019

HTML 5 is likely the most widely used development stack in history. Because of this, there is an abundance of development tools and resources, and, more importantly, experts. HTML 5 is all about multimedia presentation. It’s designed to allow any look and feel with ease. Modern browsers are among the most sophisticated pieces of software ever produced. It’s hard to compete with what they achieve in terms of performance, security and stability.

HTML 5 is for web pages…

… or is it?

This talk introduces using HTML 5 as a graphical user interface framework for C++ native applications. In it we will explore several approaches and discuss their pros and cons. We will present several examples and demos which can help you start working on your own HTML 5 GUI right away.

Borislav Stanimirov
Software Engineer

Borislav has been a C++ programmer for 15 years. In the past 11 he has been programming video games. He has worked on C++ software for all kinds of platforms: desktops, mobile devices, servers, and embedded. His main interests are software architecture and design, and programming languages.

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com

11 thoughts on “Embrace Modern Technology: Using HTML 5 for GUI in C++ – Borislav Stanimirov – CppCon 2019

  1. Great talk, very interesting stuff; I wasn't aware of these websockets, that really makes dynamic web pages alot easier to write without your project have to generate html and be the http server

  2. Por lo que se, la misión SpaceX usa esta tencología: C++ y HMTL.

    Estamos hablando de tecnología que permite que un cohete llegue a su destino con humanos dentro. Me parece muy interesante.

    As far as I know, the SpaceX mission uses this technology: C ++ and HMTL.

    We are talking about technology that allows a rocket to reach its destination with humans inside. I find it very interesting.

  3. To make it really useful you would need a cut down browser engine a normal browser has way too many features that are not needed when you control the content being loaded. All you need are the HTML, CSS, JS, renderer/interpreter and DOM. Adblock, DNS, Bookmarking and even security is not as important. You could never run a full webkit browser on a small MCU and that is where this stuff is the most interesting because on a system with a browser you also have other GUI options such as QT and TK etc. The maker community has many young users for whom the Web stack is a lot easier to learn than C++ and their hardware can not run QT and other GUI libraries.

  4. This is cool, and definitely an interesting solution to the problem, but as others have said it is far from effectively using modern technology. It's these sorts of solutions which are why it so much modern software gobbles up way more memory that otherwise equivalent older software: unnecessary additional layers of libraries and interpreters and VMs.

    That being said, they definitely can speed up development times immensely, especially for less experienced programmers wanting to do more complex things. I guess the problem only comes when the crutch keeps getting used past the point where it should. For example, it's fine to use MIcrosoft Word to do research/engineering papers, but it's a problem if it's a reason not to learn LaTeX instead of what you use while learning LaTeX.

  5. IMHO, modern browsers are heavy, memory hungry and rather slow at the same time. Qt is much better answer: crossplatform, resource efficient, simpler for making gui interfaces. And there is QML if some wants simpler solution, it still faster than html5, more gui oriented and js may be used for gui and even business logic stuff. HTML was developed for documents and making app logic is in fact struggle against its purpose.

Leave a Reply

Your email address will not be published. Required fields are marked *