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…
The pool of talented C++ developers is running dry
831–840 of 869 posts
Re: The pool of talented C++ developers is running dry
#832Earlier 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?
Re: The pool of talented C++ developers is running dry
#833I 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.
Re: The pool of talented C++ developers is running dry
#834Earlier 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.
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
#835Re: The pool of talented C++ developers is running dry
#836Earlier 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.
Re: The pool of talented C++ developers is running dry
#837Earlier 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 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
#838Earlier 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)
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
#839This 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.
Re: The pool of talented C++ developers is running dry
#840Earlier 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…
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.