Live data from Hacker News

The pool of talented C++ developers is running dry

efinancialcareers.com

831–840 of 869 posts

Re: The pool of talented C++ developers is running dry

#831
post #815

Earlier quoted context omitted.

Java is not very fast compared to c++, or you'd see it in embedded systems all over.

> Java is not very fast compared to c++, or you'd see it in embedded systems all over. Those are quite different domains, with only minimal overlap. Embedded systems more often that not are not seeking maximum performance. What matters is smaller code size and running on mimimal hardware. Java doesn't do so well there since you have the overhead of the VM. Java is rarely a sensible choice for embedded code. Just use…

I understand, but the topic of this article is about embedded systems. Java is not a player here.

Re: The pool of talented C++ developers is running dry

#832
post #679

Earlier quoted context omitted.

Try doing (serious) high frequency trading in rust, then come back to me.

Jane Street is doing it in Ocaml (which is pretty similar to Rust + GC) and they seem to be pretty serious. Are you working at a more "serious" company where they only use languages with the safety level of Assembly?

Two Sigma launched new Rust teams to replace their core systems.

Re: The pool of talented C++ developers is running dry

#833

I find it funny that the headline states it as a general trend while it's looking at it only through the prism of "the finance/crypto industry struggles to find C++ developers". Maybe part of the problem is that people don't want to work on your bullshit crypto products, or just on HFT.

Almost all crypto projects use Rust.

Re: The pool of talented C++ developers is running dry

#834

Earlier quoted context omitted.

> It seems what you're looking for is a "C++ developer who likes to write the same C++ style as myself" ;) No, I'm perfectly content with someone writing C++ in a different style. What I'm not content with is someone who uses old code without a technical reason why. C style arrays, for example, are 100% inferior to std::array. Old loops with indices are maybe 80% (off the cuff guesstimate) inferior to ranged-for. The…

> C style arrays, for example, are 100% inferior to std::array. Are the advantages of std::array over C arrays big enough to add 8kloc to each compilation unit though? ( https://www.godbolt.org/z/8noTndhcv ) A range-checked std::array replacement can probably be written in a few dozen lines of code. That's the problem with all C++ stdlib headers, they are incredibly overengineered for what they bring to the table.

> Are the advantages of std::array over C arrays big enough to add 8kloc to each compilation unit though?

I say yes, absolutely. C style arrays are _very easy_ to get wrong in many ways. Three just off the top of my head:

- iterating using a size_t instead of an iterator

- calculating the size of the array (and often using a preprocessor macro to do it)

- leaving things uninitialized

So a std::array provides iterators and works with a ranged-for loop. The only reason to use a size_t is if you truly need an index number (and I would argue: use `std::distance()` instead).

A std::array provides a `size()` giving the total number of objects in it. It also provides the type, so you can do sizeof(type) * array.size() -- though that's still error prone.

A std::array ensures that objects are correctly initialized.

And, if you still need to dangerously decay the data to a pointer, you can use .data() to grab that pointer.

> A range-checked std::array replacement can probably be written in a few dozen lines of code.

Can you provide an example?

> That's the problem with all C++ stdlib headers, they are incredibly overengineered for what they bring to the table.

I would argue that the standard library isn't overengineered. It's engineered for more than just your use case. Just because code "is there" doesn't mean that code makes it into your product. Pay for what you use, don't pay for what you don't use.

Re: The pool of talented C++ developers is running dry

#836

Earlier quoted context omitted.

Then it is not a replacement for C++. It's going to be slow.

it's not. it uses type inference to infer types and llvm to compile down to native code. differentialequations.jl is often faster than the fastest C and Fortran solvers, and Octavian.jl often beats MKL at matrix multiplication.

Type inference changes things. It's awesome that it can beat handwritten C and Fortran code.

Re: The pool of talented C++ developers is running dry

#837
post #707

Earlier quoted context omitted.

Assigning a part number to firmware is perfectly normal. It's part of the Bill of Materials for the product. What is not normal is referring to that part number anywhere except on the BoM.

Perhaps I'm missing some deeper use case here. More complicated firmware projects can have only part of the system loaded during production, namely the bootloader and some system level image(s). The firmware that has all of the business logic can be pushed/pulled when a customer activates it much later on. How would a part number for this image (or really set of images) be useful?

In your first case, imagine that you have a contract manufacturer that is told to build something according to a particular Bill of Materials. You change the firmware and assign it a new part number (or assume that the version is embedded in the part number). Internally, the BOM is updated with this new part# and as part of your process, the manufacturer is sent the new BOM. Manufacturer goes to build the product and discovers that the firmware they have is a different part number than on the BOM. If not for this, they'd be building with the wrong firmware version.

In your second case, if the only person loading it is the customer, a part number may not solve anything other than the business managing inventory. However, if you're already in the habit of assigning part numbers to everything you build (I have come to be a big advocate of this), then it really is just part of the process.

I've seen a mix of both: there is a standard firmware version for the hardware combined with a set of customer customizations. In this situation, not having a unique part number for each combination (of firmware + customer config) resulted in confusion, angry customers and a manufacturing department having no idea exactly what it was that they were supposed to be building.

Yes, there are other ways of solving these problems but assigning unique numbers works well enough.

Re: The pool of talented C++ developers is running dry

#838
post #765

Earlier quoted context omitted.

a) Yes I run technology at a more serious HFT firm than Jane Street. b) Jane Street also use FPGAs, so you cannot exactly say they just use ocaml, it’s more nuanced than that, they are using a mixture of technologies. I think they made a very unfortunate choice early on and are still paying for it.

Do you have actual technical explanation? (other than argument of authority)

Rust becomes extremely painful as soon as you want to push the boundary. If you need to ensure you fit a struct into a cacheline, or you need to ensure an object is reused. All of these things can be done, even things like recycled intrusive structures, but it’s constant friction.

If you don’t try and push the boundaries it’s fine (and if you make everything unsafe you’d also be fine), but otherwise life quickly becomes painful.

If you are going to go to that level of effort then you’ll find it much easier in c++ and the downsides of c++ become insignificant.

On the other hand if you’re writing a web backend c++ would be a terrible terrible choice.

Re: The pool of talented C++ developers is running dry

#839
post #658

This is good, right? There are better languages for most (although certainly not all) purposes, whether you measure "better" through features like memory-safety or through developer happiness or anything in between. Most of the systems that were written in C++ in the past didn't have to be written in C++. Now they'll become hard to support, because they are in fact hard to support, and eventually they will be refacto…

Unfortunately high frequency trading is an area where C++ is normally the right choice, even for a new project.

Fair, I hope I was clear in my post that I don't mean to say C++ is never the right choice, but... rarely.

Re: The pool of talented C++ developers is running dry

#840

Earlier quoted context omitted.

> Yes, the embedded space pays terrible, and the employers don't seem great on the whole. in europe c++ pay is in general ridiculously bad, I got some job ads this morning. Senior job in real-time trading in C++ in Paris, multithreading and linux knowledge, english first: 55-75k. Embedded senior C++ FPGA engineer in paris: 45k-65k. No bonus in either position. thanks but no thanks

Those job ads are both better than my current position. £40k for cross-platform C++ desktop app with both multi-core and distributed parallelism. PhD required. GPGPU experience preferred (notice that it's not CUDA experience because some users have AMD cards). Now, with two consecutive promotions, I could bump my salary up to £50k. Of course, to qualify for the second of those promotions, I need to receive personal c…

I feel your pain, I've been there.

My advice, get a job around (but not in) London area, if not, get a remote role with a company in south, that gave me a bump from 35k to 71k.

Even better, leave perm and get a contract (outside IR35), you can easily get between 350 to 450 a day.

... and yes, that's doing C++, some Qt, some MFC, some Python, and no PhD/MSc nonsense.

Post reply on HN