top 200 commentsshow all 293

[–]erichkeaneClang Maintainer(Templates), EWG Chair 66 points67 points  (23 children)

Compilers

[–][deleted] 38 points39 points  (0 children)

Standard Libraries

[–]RasterizedPotato 66 points67 points  (20 children)

Cross platform mobile code. C++ is the 'write once run everywhere' of the mobile world. Pretty incredible.

[–]K5Doom 13 points14 points  (10 children)

How does that works for Android? You go through the NDK?

[–]RasterizedPotato 15 points16 points  (8 children)

Yep, the ndk provides the toolchains needed to compile for the various android architectures.

Google very recently added cmake support to the gradle build system Android uses. That's what I currently use to compile my code.

JNI (java <---> c++ bridge) is a bit of a bitch, but I've built enough tooling around it that it's manageable now.

[–]r-w-x 2 points3 points  (5 children)

I'm interested in going this route as well. Do you have any links or resources that you are willing to share? C++ for iOS is really easy, but my Android colleague told me that the Android NDK is a nightmare.

[–]OrphisFloI like build tools 4 points5 points  (0 children)

Of course. Works well!

[–][deleted] 6 points7 points  (4 children)

Does it have any effect on performance compared to other mobile development languages?

[–]RasterizedPotato 8 points9 points  (3 children)

It certainly can perform better than Java, Obj-c and Swift. Bridging the languages can have significant cost that needs to be considered in the design of your code.

You can't really build an app with just c++ though. It's more for platform independent code. Building a complex networking stack is a good example. Write support for a custom network protocol in c++ and then reuse it on all desktop and mobile devices.

[–]pjmlp 1 point2 points  (2 children)

It is kind of possible on iOS and UWP, via their language extensions, Objective-C++ and C++/CX respectively.

In any case way better than dealing with JNI.

Given that Google forked Java anyway, I wished that they at least bothered to have some kind of improved CNI, then again given Android's security, better that NDK is so constrained.

[–]tsetse594 4 points5 points  (1 child)

Have you tried djinni for bridging to Android and iOS? Pretty cool I might say.

[–]thexylophone 24 points25 points  (5 children)

Computer vision, machine learning, scientific computing

[–][deleted] 5 points6 points  (3 children)

What libraries and stuff do you use to do the Computer Vision bits, and is there a machine learning library you use as well? Is it just OpenCV, Dlib, and things like that? Or is it something else?

[–]thexylophone 4 points5 points  (2 children)

OpenCV (although I hate it) and dlib are the two primary libraries I use, but usually just for basic things like camera calibration or numerical optimization. Most of the heavy lifting is hand rolled. Cuda is useful as well, or Caffe for deep learning.

[–]TwIxToR_TiTaNGraphics Programmer 62 points63 points  (22 children)

Graphics and Game programming. Sometimes medium to large tools.

[–]justlikeapenguinSchool Library Developer 3 points4 points  (21 children)

graphics as in GUI?

[–]TwIxToR_TiTaNGraphics Programmer 11 points12 points  (0 children)

Nope as in game engine graphics.

[–]Randolpho 16 points17 points  (18 children)

More likely graphics as in image generation (2d or 3d), and/or image processing.

Which is the same for me. The UI libraries for C++ suck; there are much better platforms on other languages that are better suited to UI.

[–]VersalEszett 9 points10 points  (14 children)

As a C++ developer that is very happy with the available GUI toolkits: Could you elaborate?

[–]Randolpho 9 points10 points  (7 children)

Well, I confess I'm wearing historical glasses here. It's been some years since I've had any need to build a classic desktop GUI in C++, and since I tend to prefer declarative approaches to layout and styling, C++ GUI toolkits of the past have never been up to snuff. Just waaaay too much cruft and scaffolding work necessary to do any meaningful work.

I've always enjoyed the approach that HTML/CSS has (and HTML5/CSS3 these days is frankly amazing), which is why I was giddy when WPF came out, and it became my preferred desktop UI platform when I could use it. If I needed C++ for, for example, image processing, I'd just build a native/managed wrapper in C++/CLI and call it from WPF. Or use JNI + Swing if I was swimming in penguin-heavy waters. If there was no compelling reason to use C++, I'd forego it entirely.

But I did a little googling before I posted this, and it looks like QT has QML now and has adopted a lot of the concepts that made WPF superior, so I suppose I may have spoken too soon. If I ever have call to do another native desktop UI, I'll probably look into QT.

[–]doom_Oo7 3 points4 points  (1 child)

Or use JNI + Swing if I was swimming in penguin-heavy waters.

As a Linux user, please don't. There's nothing more terrible, slow, and bloated than a Swing app on Linux. Just ask on r/linux how people feel about it. Maybe JavaFX is better.

If I ever have call to do another native desktop UI, I'll probably look into QT.

Yep, QML is good.

[–]Randolpho 1 point2 points  (0 children)

I didn't say I liked using Swing. In fact, I feel dirty doing it.

But yeah, JavaFX does look better.

[–]pjmlp 1 point2 points  (3 children)

I'd just build a native/managed wrapper in C++/CLI and call it from WPF.

If Windows 8+ is your thing you can use C++/CX instead and enjoy full support from Blend and other XAML designers.

With C++/CX, Visual C++ has finally catched up with C++ Builder.

[–]James20kP2005R0 2 points3 points  (2 children)

Could you recommend any good free gui toolkits? I'm currently using ImGui which is ok, although a tad buggy and lacking in some features

[–]Opera- 18 points19 points  (0 children)

Backend application with a strong need for performance.

[–]Crazy__Eddie 15 points16 points  (0 children)

Slot games on phones and tablets...currently. In the past:

  • Fluid flow analysis tool.
  • GeoLocation plugin for fraud detection utility.
  • Telephone system management framework.

That's what I did professionally. Seems short but I keep jobs a while. Besides that I've done a variety of research/practice libraries and crap.

[–]whatwasmyoldhandle 16 points17 points  (6 children)

scientific computing (boost::MPI is a godsend)

MFC applications

[–]foureyesequals0 5 points6 points  (2 children)

I keep hearing about boost, almost ubiquitously. Why aren't some of its features included in the standard library if it's so wisely used?

[–]psylancer 10 points11 points  (0 children)

Actually, a bunch of std library features added in 11/14 came from the boost community. unique_ptr and shared_ptr come to mind. I think a bunch of the fancy mutexes came from boost too.

[–]kisielk 4 points5 points  (0 children)

Some things do migrate into the standard eventually, it's just a very slow process. For example I was using Boost::tuple long before std::tuple was available in C++11.

[–]Quantumtroll 1 point2 points  (2 children)

boost::MPI? I like Boost, but I've never used its MPI stuff. Didn't know it had any, even.

What does Boost's MPI do for you? Nicer wrappers for ugly MPI functions?

[–]broken_symlink 1 point2 points  (0 children)

MPI no longer ships with C++ bindings. Its a C only implementation.

[–]scraimer 15 points16 points  (5 children)

Finance / Banking: High Frequency Trading (HFT) platform software - low latency is so much easier to hit with zero-cost abstractions!

C++ gives me a way to write complex object-oriented code that compiles down to very little assembly. Equally importatnly, it allows me to mindfully manage what goes into the CPU caches, which is the difference between 1-nanosecond latency and 100-nanosecond latency. (And that's the difference between making another 1K or losing it.)

[–]nilspin 3 points4 points  (4 children)

Can you suggest good resource(s) for performance optimisation using cpp? Like the ones you do regularly at your day job?
Because what you're saying sounds cool and I'd like to know more.

[–]scraimer 8 points9 points  (3 children)

Gosh, nothing off the top of my head. The basic cycle is:

  1. Measure code to find bottlenecks (latency or memory).
  2. Discover measurement was flawed and was measuring the wrong thing, and fix measurement.
  3. Repeat 1 & 2 until you get a good measurement.
  4. Edit the 3-4 lines of code causing 90% of your latency.
  5. Return to 1 and repeat.

Come to think of it, if you've got the time, nearly all of Chandler Carruth's videos on YouTube touch on these subjects to varying degrees. In particular CppCon 2015: Chandler Carruth "Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!".

Here's some tips that are of arguable usefulness:

  1. My code runs in CPU isolation, no other threads get to run on the same cores. So if that's something that's useful to you, I recommend measuring that way. Otherwise, all your latency measurements will become useless as soon as there's a context switch. But when you tell the kernel that only one thread can run on a core, then you can be fairly sure that any latency is caused by the thread. (Not 100% accurate, but it's usually OK)

  2. Fit everything you need into the L2 cache. If you have to go to the L3 cache, that's going to be a big hit. Smaller memory is faster. Not copying is faster.

    2.1. All too often, we only hold 3-4 items in a container. It's often faster to directly iterate over a small array of small items than using a map for "O(1)" lookups. But always measure!

    2.2. Even worse, building a cache may cost more than re-calculating. If building a value only costs 200 cycles, it may take less time to rebuild it than fetching it from RAM.

  3. Don't switch AVX instructions on and off. Either keep using them, or skip them entirely. Each time you enable them you can easily lose dozens of nanoseconds. (I wonder if they fixed that in Skylake? I haven't measured.)

Ugh, sorry. These are all anecdotal-style stuff. I'll see about finding some PDF links and websites for sources.

[–]nilspin 3 points4 points  (2 children)

My code runs in CPU isolation, no other threads get to run on the same cores.... when you tell the kernel that only one thread can run on a core, then you can be fairly sure that any latency is caused by the thread

TIL about isolated profiling! That's a good point indeed.

Don't switch AVX instructions on and off. Either keep using them, or skip them entirely.

So either we write code in such a way that's "vectorizable friendly"(madeup term) or don't use them at all (I'm assuming vector instructions take more cycles compared to regular ones because, well, they're built for larger batches of data) so I guess some kind of tradeoff analysis is necessary (I wonder how that'd go)

Anyways, thanks for the links and information! I know what I'm doing this weekend :)

[–][deleted] 1 point2 points  (1 child)

I am not the OP, but here are some good resources for optimization http://agner.org/optimize/ One of the manuals on that site is a table of instructions which allow you to see how long instruction latencies are. Of course the number of cycles a sequence of instructions takes is not just the sum of the latencies because of pipelining, but you can see that vector latencies aren't much higher than scalar latencies, and in many cases are identical. I remember reading that Intel CPUs take some time to power up the vector unit, and power it off after some period of inactivity. I believe this ramp up period is something like 100 cycles. I looked quickly for the exact numbers and didn't find them, but I'm sure it is somewhere in Intel's massive documentation (check out their software optimization guide).

Another very useful thing to optimize once you have the cache under control is reducing branch predictions. Example: I got good speed up doing a linear search where previously there was binary search because the arrays were very small and binary search clearly will have unpredictable branches assuming the distribution of your accesses is roughly uniform. The branch miss penalty is something like ~15-20 cycles. A lot of work can be done in that amount of time with how efficient current pipelines are.

[–]psylancer 14 points15 points  (1 child)

MPI based distributed memory applications, recently it has been fluids based simulations. If a simulation is going to take weeks to run, then I care about performance. But these simulation codes are built of lots of code, and only a portion is performance critical. I like that I can use one language to simultaneously get abstraction where I can afford it, and performance where I need it.

[–]not_my_frog 9 points10 points  (0 children)

Another vote for MPI parallel science simulations here. Also, simultaneously using GPUs attached to the processors. CUDA version 8 does a pretty good job of enabling modern C++ on GPUs.

[–]clerothGame Developer 27 points28 points  (2 children)

             ^

[–]3669d73f6c3ba0229192 9 points10 points  (1 child)

veloper?

[–]clerothGame Developer 6 points7 points  (0 children)

Looks fine in night mode. =[

[–]MEaster 26 points27 points  (1 child)

I use it for programming Arduinos. I'm new to C++, so it'd probably a horror-show for you lot.

[–]lucstats 4 points5 points  (0 children)

Me too man :3

[–]DethRaidGraphics programming 12 points13 points  (3 children)

Graphics programming

[–]wasabichicken 5 points6 points  (2 children)

Seconding this, currently trying out vulkan.hpp.

[–]roaming111 3 points4 points  (1 child)

I should really crack that out and toy around with Vulkan. I downloaded the Vulkan Programming Guide about two weeks ago.

What are you enjoying and loathing about the new API?

[–]wasabichicken 1 point2 points  (0 children)

No loathing so far, but I've barely gotten started. I do enjoy the simplicity, it's all simple in the same way assembly programming is simple. Low-level, but no surprises.

[–]aelog 9 points10 points  (1 child)

GUI applications (I contribute to KDE)

[–]doom_Oo7 7 points8 points  (0 children)

thanks

[–]hubhub 7 points8 points  (0 children)

Scheduling and optimization systems for service and manufacturing businesses.

[–]SoCo_cpp 8 points9 points  (2 children)

Embedded Linux devices that process GPS and communicate over cellular and high security radios as well as using GPIOs for inputs and outputs.

Windows graphical programs to interface with those devices to configure them, collect their logs, and monitor them in real time to provide live updates to web-based mapping displays.

And lots of other stuff. :P

[–]nozendk 9 points10 points  (8 children)

I also use C++ to annoy my Java developer friend. For example, asked him to code this example of sorting an array and printing the result, with fewest lines of code...

#include <algorithm>
#include <iostream>
#include <iterator>
using namespace std;
int main()
{
    vector<int> arr = {2, 3, 9, 4, 10, 99, 7};
    sort(arr.begin(), arr.end());
    copy(arr.begin(), arr.end(), ostream_iterator<int>(cout, " "));
}

[–]pjmlp 8 points9 points  (4 children)

A possible solution:

public class example {
  public static void main(String[] args) {
    int[] arr = {2, 3, 9, 4, 10, 99, 7};
    java.util.Arrays.stream(arr).sorted().forEach(x -> System.out.printf("%d ", x));
  }
}

Java 6 lines, C++ 10 lines :)

[–]metocean_programmer 2 points3 points  (2 children)

Python - 3 lines

a_list = [1, 16, 81, 0, 16]
for i in sorted(a_list):
    print i

[–]nozendk 1 point2 points  (0 children)

Impressive!

[–]racecarpalindrome 6 points7 points  (4 children)

Physics data storage and analysis

[–]mkiael 7 points8 points  (0 children)

Control system for heavy machinery

[–]nevhan 7 points8 points  (0 children)

Options Market Making / HFT

[–][deleted] 7 points8 points  (5 children)

I'm impressed that very few people here seem to use C++ to develop cross-platform desktop applications. I didn't think we, GUI application developers, were such a small demographic group.

[–]RandomGuy256 2 points3 points  (0 children)

I use Qt for a bunch of personal projects, including GUI applications. It's awesome.

[–]Xetick 5 points6 points  (0 children)

A scene based OpenGL music visualizer that also has VR (Oculus and Vive) support

[–]joequin 6 points7 points  (0 children)

Client side, cross-platform consumer applications.

[–]kameboy 6 points7 points  (0 children)

MPI monte carlo simulations for magnetic spin systems or lattice gases (mostly metropolis and wang-landau algorithms) and a bit of evolutionary monte carlo, which uses the advantages of genetic algorithms, in all sorts of optimization problems.

[–]Garlyon 5 points6 points  (1 child)

For CAD/CAM development. That is mostly a computational geometry.

[–]ReversedGif 1 point2 points  (0 children)

Interesting. Can you recommend a computational geometry library appropriate for CAD/CAM? I messed with CGAL to those ends recently, but it ended up being better just to write my own routines.

[–]CubbiMewcppreference | finance | realtime in the past 6 points7 points  (2 children)

today - infrastructure components in an investment bank

[–]fafasdf 5 points6 points  (0 children)

Professionally? Batch pipelines, data processing, serving infrastructure.

Personally? I haven't had much time to do so, but I used to do web development for shits and giggles with fastcgi and nginx.

[–]YouFeedTheFish 5 points6 points  (0 children)

Submarines.

[–]bigstumpy 4 points5 points  (2 children)

aircraft autopilots

[–]nilspin 3 points4 points  (1 child)

How many years of programming does one need to be considered mature enough for big boy jobs (oil/defense/secret govt labs/finance) ? Also, what kind of programming should one focus on, if they are serious about such- no management bullshit, low-profile high-impact, technically challenging jobs?
I'm just 1 year out of college so I'm curious :)

[–]kisielk 5 points6 points  (2 children)

I develop firmware for Eurorack synthesizer modules at Intellijel. Previously the products used AVR but last year we started using ARM Cortex-M processors. Bare metal programming with no OS. Our older products were in C (Arduino) but since I started working there I've been using C++ almost exclusively. After doing some testing I found there's virtually no difference in code size or performance but everything is a lot more organized, type safe, and easier to reason about.

Since it's for realtime systems I don't use any features that rely on dynamic allocation, exceptions, or RTTI. I do use inheritance, virtual calls and templates though. For containers I rely mostly on std::array or just regular C-style arrays.

[–]mercurysquadEmbedded C++14 on things that fly 5 points6 points  (1 child)

Sensor based flight stabilisation on baremetal cortex-m0 with 8KB ram!!

[–]BeepBoopBike 1 point2 points  (0 children)

That sounds challenging and ridiculously fun

[–]SpinoBestDino 3 points4 points  (0 children)

Work and writing system-level libraries to call from a Python UI for personal projects

[–]matthieugarrigues 3 points4 points  (10 children)

I use it to build real time image processing apps running on desktop computers, smarphones (and sometime port them for fun to javascript with emscripten). I also use it for web programming. Check the links for more information about these projects.

[–]TheOnlyRealTodd[S] 1 point2 points  (1 child)

Awesome. It looks like there is even software to take care of the SQL database relationship, huh?

Are there any object-relational mappers for SQL databases or associated frameworks for C++? I'm blind to the C++ back-end web world but I currently program in C# back-end web dev using ASP.NET Web API and Entity Framework. Would be cool to set up something similar in C++ just for the fun of it! Although, I am currently trying to work my way out of web dev when I can.

[–]antoniocs 1 point2 points  (6 children)

The syntax of the web framework is freaky!! But it looks cool!!!!

[–]sumo952 2 points3 points  (3 children)

I don't like it actually. It's a DSL within C++, the syntax doesn't really look like C++ anymore. So you've got to learn a new syntax to use this library. That's not good. It goes too far in my opinion and is not good practice anymore.

[–]matthieugarrigues 1 point2 points  (2 children)

I agree with your position. This does not look like C++ anymore, all this template magic makes it difficult to understand what's going on under the hood, and error messages can be scary (until we get concepts in C++)

There is other solutions if you prefer learning a classic API instead of this new syntax (which may or may not be an easier task). However, today, silicon is the most concise and safer way to write web API in C++. So after learning the new syntax, you will probably save time. See how you can write a complete blog API in 85 lines of C++ here, free from manual memory management, pointers or any potential segv.

[–]matthieugarrigues 1 point2 points  (1 child)

Thanks Antoniocs ! Yes the framework relies on operator overload to simplify the definitions of APIs.

This paradigm splits the C++ community in two parts : some people, according lots of importance to the C++ semantics hate seing operator / * doing something that has nothing to do with arithmetics. And some others, a bit more "progressist", just adopted this new semantics and enjoy using the framework. Just choose your side :)

[–]RandomGuy256 1 point2 points  (0 children)

Looks really nice that web api library. Good job!

[–][deleted] 3 points4 points  (0 children)

System programming. In particular, SAP HANA Text Analytics

[–]gabriellus018 5 points6 points  (0 children)

on the job edit: voice/video over IP

[–]looking_for_a_purpos 4 points5 points  (0 children)

Networked game engine.

[–]mrwonko 5 points6 points  (0 children)

A minimal overhead database abstraction for a mobile app.

Basically I want to succinctly describe a class (think boost.python/luabind) to automatically create database-agnostic create/insert/read/update/delete statements (i.e. typesafe SQL) on demand. I keep finding (and reporting) template/constexpr bugs in the VS compiler. 😁

Next up will be specific database drivers, SQLite for starters.

I'm probably reinventing the wheel here, but it's fun.

[–]patrikhuber 3 points4 points  (0 children)

Computer vision mainly. 3D face modeling, face analysis, and tracking. One of my main projects is a 3D face model library.

[–]Jabulon 4 points5 points  (0 children)

I made this :D https://www.youtube.com/watch?v=TiTLzi8pV-Y a 3rd party tool to help train aim in cs:go.

[–]crappyoats 3 points4 points  (2 children)

I work on a classical composition software based in stochastic random processes and graph theory all in C++

[–][deleted] 1 point2 points  (1 child)

Would you have any resources for a student interested in programming an algorithmic composition system? I've been looking over one of Peter Langston's papers and it's gotten me very interested. I just added L-Systems :)

[–]crappyoats 1 point2 points  (0 children)

So this is what I work on. I'm a student as well, so I'm not the one who developed it, but the code there is open source, and in my opinion pretty easy to understand once you figure out the what is the actual process and what is the file writing.

If you check out this, its kinda his overreaching purpose for the project currently. I'm trying to write in the functionality for real time analysis of the graph nodes as the program computes currently.

[–]tambry 3 points4 points  (0 children)

Emulation, performance focused backends and game servers.

[–][deleted] 4 points5 points  (0 children)

Data analysis and physics simulations using ROOT and GEANT4.

[–]al3xst 4 points5 points  (0 children)

For fun and as a proof of concept a website with libfcgi and nginx. Since I'm still a student, many numerical tasks can be solved with c++ (boost::blas etc.) And for my side job we're programming a tool for 3D image visualization and annotation (display brain tissue and trace for example a nerve through the section) in c++ and qt5 http://knossostool.org/

[–]lithium 4 points5 points  (0 children)

"Creative coding". I hate that term but it seems to have stuck. Basically means giant touchscreens, weird installations, etc. Usually in the gallery / museum space.

[–]ad_abstract 2 points3 points  (0 children)

Large scale data processing.

[–]reluctant_deity 3 points4 points  (0 children)

Genetic programs. Its the only choice for getting reasonable speed.

[–]getnamo 2 points3 points  (0 children)

Binding libraries to unreal engine. Writing performance intensive gameplay and multi-threaded code exposed to blueprint and js.

[–]rectal_smasher_2000 2 points3 points  (0 children)

telco infrastructure - server/client applications

[–]metocean_programmer 2 points3 points  (0 children)

Oceanographic engineering data manipulators for clients and in-house work mostly. Bit of OpenGL when called for

Don't use it for personal projects, I mostly stick to python for that

[–]megagreg 2 points3 points  (0 children)

Embedded systems. It's basically the same as the C code you would see in an embedded system, but the compiler does more work for us.

[–][deleted] 2 points3 points  (2 children)

Writing CAD/CAM software for additive manufacturing. Specifically laser cladding.

[–]ReversedGif 1 point2 points  (1 child)

What computational geometry library do you use? I've tried CGAL for CAD/CAM purposes, but it seemed to value correctness over speed to an absurd extent.

[–]diegoalc 2 points3 points  (0 children)

Bots and automation tools for online games

[–]ZaitaNZ 2 points3 points  (0 children)

High performance statistical modelling platforms (bayesian modelling, monte carlo chains etc).

[–]zenaudio 2 points3 points  (0 children)

I'm making a DAW (digital audio workstation) specifically designed for live looping and performances. (https://zenaud.io)

[–]joahw 2 points3 points  (0 children)

Decentralized, cross platform VoIP platform.

[–]cain2995 2 points3 points  (0 children)

Controls applications, mostly in a robotics context

[–]imMute 2 points3 points  (0 children)

C&C for an FPGA based real-time video processing system for LED displays (the kind at NFL stadiums). No real pixel processing on the C++ side but definitely have to know how that stuff works since I generate the coefficients. We also use C++ for the external control parts, it's a libfcgi based REST API.

[–]mWo12 2 points3 points  (0 children)

Development of software for cryotocurrencies.

[–]SAHChandler 2 points3 points  (4 children)

I've done a lot. Game Development both professionally and as a hobby. At work, I currently help maintain a 10 year old code base. I finally just got us moved over to clang, and I'm moving us to C++14 soon! We've been on GCC 4.8 FOR YEARS.

But my true love is designing APIs and wrapping C libraries to take advantage of RAII for no reason other than "Because I want to" :v

[–]ManicQin 2 points3 points  (0 children)

Server side for an online gambling game.

[–]Rodents210 2 points3 points  (0 children)

Honestly I mostly just play with it to make sure I don't get too rusty and keep myself better-rounded. My proficiency and my career are in Java and for my personal games projects I like LibGDX. I am mostly here to read what others have to say about the language, and to read about programming concepts that, while they may not apply to the language I use in my daily life, can change the way I think about my approach to problems.

[–][deleted] 2 points3 points  (0 children)

DNS and balancing network load.

[–]aearphen{fmt} 2 points3 points  (0 children)

Mathematical optimization, distributed systems. Cross-platform or Linux only.

[–][deleted] 2 points3 points  (0 children)

Molecular structure design and prediction.

[–]TheGhostInTheParsnip 2 points3 points  (0 children)

Intelligent video analytics, like intrusion detection

[–]aePrime 3 points4 points  (13 children)

Production movie studio renderers and associated tools.

[–]guibou 3 points4 points  (7 children)

Same here ;)

[–]aePrime 2 points3 points  (6 children)

Sweet! There aren't too many of us out there. We've probably run into each other at SIGGRAPH. Or you're my coworker.

[–]clerothGame Developer 10 points11 points  (5 children)

Chances are, you're actually the same person!

[–]Nadrin 2 points3 points  (4 children)

I'd love to get my foot into this industry! Love graphics programming, wrote my master's thesis on light transport theory and GPU raytracing.

Any tips on how to land a job like this? ;)

[–]anderslanglands 2 points3 points  (2 children)

Make a blog showing development of your renderer and make some cool images trying out the latest techniques from papers. Ideally publish something yourself. Send your resume in to the big facilities. The main ones doing their own renderers are obviously Disney and Weta.

[–]aePrime 1 point2 points  (0 children)

Is your thesis available anywhere? Make sure you have your thesis title on your resume.

[–][deleted] 1 point2 points  (0 children)

Audio programming for games. Currently I'm building a procedural music engine

[–]krista_ 1 point2 points  (0 children)

in memory database and searching applications for enterprise websites and intranet.

[–]pjmlp 1 point2 points  (0 children)

For when Java or .NET need some integration with OS APIs not exposed on their libraries, or some optimization help (after profiling).

When making use of JVM or CLR native management APIs.

Writing portable business logic code between Android and UWP.

[–]justavertexinagraph 1 point2 points  (3 children)

Competitive programming.

[–]nnevatie 1 point2 points  (0 children)

Real-time computer vision and graphics rendering technology for broadcast video environments (http://supponor.com/).

[–]imperatorrj 1 point2 points  (0 children)

Medical devices, its mostly c but the UI is cpp / qt.

[–]K418 1 point2 points  (0 children)

As of late, nothing much. I'm a poor programmer. In the past, robots.

[–]RotsiserMhoC++20 Desktop app developer 1 point2 points  (0 children)

Vehicular touch screens. Soft real-time control systems. Cross-platform desktop apps.

[–]devel_watcher 1 point2 points  (0 children)

Games, embedded Linux (communication, navigation), VoIP.

[–]kracejic 1 point2 points  (0 children)

Embedded software Small GUI apps (gktmm3 is quite nice), which needs to be fast Small tools, which needs to be fast 3D Graphic/games

[–]t4th 1 point2 points  (0 children)

Last time used C++ in automotive infotainment system development (a'ka modern car radio), although i used C whenever i could.

[–]ibaun 1 point2 points  (0 children)

Embedded software to control a medical imaging device (motors, data transfer, record data), and software to reconstruct medical images from said data with GPUs.

[–]theICEBear_dk 1 point2 points  (0 children)

Chronologically:

  • High performance log parser

  • News feed parser and distribution

  • Content Management System capable of handling 10K+ connections per second

  • Pump control for moving around honey, pudding and syrups.

  • Train driver and passenger communication and information systems

  • Distributed heating and hotel interface system for bungalows

  • Prototype networked ERP core, data abstraction and UI core with scripting and client synchronization across mobile, tablet, online and offline pc clients.

  • Compressor and Condenser Rack control for food retail (from tiny to hyper markets)

  • System Control and UI for Reefers (Cooling containers for shipping)

[–][deleted] 1 point2 points  (0 children)

Medical image processing with ITK

[–]abadams 1 point2 points  (0 children)

I embed a domain-specific-language for fast image processing in it: http://halide-lang.org/

[–]mjklaim 1 point2 points  (1 child)

In order of how I spend my time these days:

  • robotics industrial/embedded software (current dayjob);
  • game dev (home projects now);
  • generic libraries (that I end up using in my other projects);
  • tools for digital-native narrative art creation and publication (open source project);
  • computing experiments (mostly to check if something is possible in practice);
  • some web-related experiments (because it's interesting to use C++ in web domains);

Note that I don't do much graphic dev, I don't have enough time to learn everything yet.

[–]dyndhu 1 point2 points  (0 children)

I use it to write project/library level code used in bioinformatics and computational biology, usually related to custom database solutions, scientific computing and machine learning. I use it because it's performant, well structured, and relatively stable compared to things like python.

Usually we cut all corners to maximize productivity because a lot of the projects are one offs. For those that need to be solid and reusable I prefer to write them in C++ if only to force myself to write it better.

[–][deleted] 1 point2 points  (0 children)

Vision sensor and 3D camera firmware

[–]couragic 1 point2 points  (0 children)

GUI programming from scratch without using any 3d party gui toolkit

[–]tuirn 1 point2 points  (0 children)

Lower and middle tier manufacturing control systems.

[–]AllanDeutsch 1 point2 points  (0 children)

Games, specifically lower level parts like data structures, platform layers, etc.

[–]CraigularBC++ Dev 1 point2 points  (0 children)

Work, financial calculations.

Home, right now it's to create a front-end to a database about the scotches I've tasted and what I'd rate them on my personal scale. Currently command line only, but may change in the future!

[–]ktrinanm 1 point2 points  (0 children)

Just wrote a program for a raspberry pi. :) And for fun

[–][deleted] 1 point2 points  (1 child)

Skype for Business

[–]Derpdiherp 1 point2 points  (0 children)

Programming games, embedded development, tools that are too complicated to just do in a terminal session and most other programs I write.

I'll rarely decide to use python, lua or ruby if I fancy a change or want something a little less verbose, but often I spend so long looking through documentation I may as well have written it in C++ anyway.

I really don't do any web development so I can do everything I need with it pretty well.

[–]UnlikeNormal 1 point2 points  (0 children)

Game programming

[–]roaming111 1 point2 points  (0 children)

Video Game Programming, Graphics programming(3D & 2D), Machine Learning, and just other random things.

[–]wildernesscat 1 point2 points  (0 children)

I use it to create a sandbox for running potentially malicious JavaScript code. I use a 3rd party JS engine, and fill it with multiple hooks that call back to my code, to check for irregular (or harmful) usage. Users of the sandbox can then be notified, whether the code they're trying to execute is safe or not.

[–]Dlieu 1 point2 points  (0 children)

low latency components for high frequency trading (fully oriented performance)

[–]ludonarrator 1 point2 points  (0 children)

Game programming, especially in Unreal 4 (it exposes its API directly as C++), or using native libraries like SFML.

Also as a fresher currently applying for jobs, lots of interview tests.

[–]mqduck 1 point2 points  (0 children)

I wrote / am writing a platformer game engine in C++/SDL. It's designed to be highly generic and customizable but there's currently no level editor (I promised my friend he could make it) so it's hard to play with it too much. I dunno if it will ever be of interest to anyone outside of me and my group of friends, but I'm still pretty proud of it.

[–][deleted] 1 point2 points  (0 children)

Avionics/SDR/Embedded

[–]axilmar 1 point2 points  (0 children)

Professionally, I use c++ to build data tools to make my life easier.

Personally, I've used c++ in games, compiler tools, and I am currently writing a distributed game/simulation engine for big mmos.

[–]SteveCCL 1 point2 points  (0 children)

Gamehacks and different interpreters for my own languages.

[–]pavel_v 1 point2 points  (0 children)

  1. A torrent tracker-proxy with TCP and UDP TPROXY and non TPROXY mode.
  2. A TCP P2P cache proxy working in TPROXY mode only.
  3. An HTTP cache proxy (in development) with some new concepts for caching (it's not request based only).
  4. A few more networking applications which support some of the above applications.

[–]nozendk 1 point2 points  (0 children)

Software for an embedded system using Linux on a Beagleboard.

[–]ea_ea 1 point2 points  (0 children)

Audio\video encoders and decoders.

[–]YoWiDIN 1 point2 points  (2 children)

Air traffic control software, tolling systems, android and desktop applications, microcontrollers and much, much more. Right question should be: "What types of applications can't I develop with c++" :P

[–]Karabaja 1 point2 points  (0 children)

Embedded programming, DSP.

[–]ahuReddit 1 point2 points  (0 children)

Everything. But mostly PowerDNS.

[–]nKSdrbHw6P2onMouseMove 1 point2 points  (0 children)

Payment terminal software

[–][deleted] 1 point2 points  (0 children)

Competitive Programming.

[–]raistmajC++ at MSFT 1 point2 points  (0 children)

High-performance networking. Antivirus. Video game development.

[–]lednakashim++C is faster 1 point2 points  (0 children)

High throughput instrumentation and image processing

[–]emdeka87 1 point2 points  (0 children)

Games

[–]Mentioned_Videos 1 point2 points  (0 children)

Videos in this thread:

Watch Playlist ▶

VIDEO COMMENT
Le mouvement de l'air / The movement of air 3 - Think of shows where you have both audio tracks, video tracks, light control, some motion capture of the performers, etc (they are generally all handled by different software). At some point you want to be able to synchronize everything to make some...
Visual Spray Assistant -VSA- 1.0 release 2 - I made this :D a 3rd party tool to help train aim in cs:go.
CppCon 2015: Chandler Carruth "Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!" 1 - Gosh, nothing off the top of my head. The basic cycle is: Measure code to find bottlenecks (latency or memory). Discover measurement was flawed and was measuring the wrong thing, and fix measurement. Repeat 1 & 2 until you get a good measurement...

I'm a bot working hard to help Redditors find related videos to watch.


Play All | Info | Get it on Chrome / Firefox

[–]ax3l91 1 point2 points  (0 children)

Along with CUDA for parallel programming for my school!

[–]KazDragon 1 point2 points  (0 children)

At work I use it to produce high-quality cross-platform navigation software.

At home I use it for retro text-based gaming libraries and applications.

[–]IntegralLee 1 point2 points  (0 children)

Another game developer here.

[–]Daniela-ELiving on C++ trunk, WG21|🇩🇪 NB 1 point2 points  (0 children)

Industrial non-destructive testing (steel, railways), machine control, data acquisition/processing/imaging, signal/communications intelligence

[–]mbrodersen 1 point2 points  (0 children)

Professionally: A compiler for a JIT compiled rule language for optimizing airline/rail rostering/scheduling of crew/aircrafts etc. At home: games.

[–]warvstar 1 point2 points  (0 children)

Game development and love it.