Earlier quoted context omitted.
Here's an experienced C programmer and fan telling you a list of ways Fortran is higher-level and superior to C for numeric programming: http://www.ibiblio.org/pub/languages/fortran/ch1-2.html
Most everything here is subjective, inaccurate, or outdated by C99, save Fortran's multi-dimensional array handling which is legitimately superior to C despite partial reconciliation by VLAs.
Why I don't spend time with Modern C++ anymore
171–180 of 264 posts
Re: Why I don't spend time with Modern C++ anymore
#172Earlier quoted context omitted.
"Parallelism: yes, although OpenMP isn't nearly as accessible as e.g. Swift async closures." I'm not familiar with them, do you have a pointer? Cilk does have powerful semantics and a very light weight syntax. "C++ only got proper language-native threading in C++11." Sure, but OpenMP and Cilk are significantly older. "Do google view their datacenters as a single flat cache-coherent memory space?" No, but I'm pretty s…
> I'm pretty sure they whish they could [view their datacenters as a single flat cache-coherent memory space]. Many HPC clusters do present a single memory image across thousands of machines. No not really, at some point when you're dealing with PetaBytes of RAM and millions of cores, the Law of Physics kicks in, your RAM is spreading across a large physical area no matter how clever you are. If you want a flat memor…
There is nothing wrong with NUMA (well, ccNUMA, but today that's a given). Even a simple modern two socket server is a NUMA machine.
Anyways, as I've commented elsewhere, I'm not arguing that shared memory is practical today on a large HPC cluser.
Re: Why I don't spend time with Modern C++ anymore
#173Earlier quoted context omitted.
This argument always feels like "It's not a Pyramid Scheme! It's a Triangle Opportunity!" People use the term not because it is an exact fit, but because it is the closest match we have and the intention is largely the same. HFT being a lot about using computers to gain tiny information advantages (racing the speed of light between exchanges for example) to make perfectly safe arbitrages millions of times a day and e…
> effectively skim off of the top of the market The problem with this point of view is that it implies they are just taking, and not providing. HFT provides a more accurate market price by providing liquidity at small price differences. Whether what they provide justifies their cost is another question though.
Re: Why I don't spend time with Modern C++ anymore
#174Earlier quoted context omitted.
This argument always feels like "It's not a Pyramid Scheme! It's a Triangle Opportunity!" People use the term not because it is an exact fit, but because it is the closest match we have and the intention is largely the same. HFT being a lot about using computers to gain tiny information advantages (racing the speed of light between exchanges for example) to make perfectly safe arbitrages millions of times a day and e…
Exactly my intent. Well-worded. I'm not sure quite how to describe it how average person would understand. So, insider trading is one option to approximate it. Pyramid Scheme seems like another one in the rip-off aspect but doesn't fix the specifics as well. The traits to categorize are it's rigged, parasitic on others, requires enormous investment, and requires physical proximity that's fairly exclusive.
I'm not sure that's a good way to frame them. If you frame them as parasitic, then the argument shifts towards how we can stop them, as they don't provide any value. HFT firms do provide value in liquidity and more accurate market prices. Whether the cost them impose for these is worthwhile is an open question, but then the argument is about how to tweak incentives and rewards to best utilize this resource, not how to prevent it from working at all. The framing matters.
Re: Why I don't spend time with Modern C++ anymore
#175Earlier quoted context omitted.
I think the author was mostly referring to meta programming / templates. You have to admit, they can get pretty obscure sometimes. I agree, lambdas simplify callbackas/async programming immensely.
Right, but there's nothing "modern" about templates. Those have been a disaster for compile times forever. C++98 with no Boost is an awful language that nobody should want to go back to. It's one where you could legitimately prefer C99, despite its lack of RAII and other conveniences. Actual modern C++ is a great language to write, though the compile times haven't really improved.
Re: Why I don't spend time with Modern C++ anymore
#176Earlier quoted context omitted.
That's some serious sour grapes by Allen. Her assertion that Fortran and COBOL are higher level than C is .. difficult to support given the reliance of both languages on GOTO. The assertion that compilers weren't taught any more is just silly.
Here's an experienced C programmer and fan telling you a list of ways Fortran is higher-level and superior to C for numeric programming: http://www.ibiblio.org/pub/languages/fortran/ch1-2.html
Re: Why I don't spend time with Modern C++ anymore
#177Earlier quoted context omitted.
> effectively skim off of the top of the market The problem with this point of view is that it implies they are just taking, and not providing. HFT provides a more accurate market price by providing liquidity at small price differences. Whether what they provide justifies their cost is another question though.
It's algorithms guessing about something in nanoseconds with little context. Feels like that would reduce accurate pricing. Not a finance guy, though, so my intuition could be wrong.
I'm not a finance guy, but I've followed it here for quite a while, and this is my general impression of it. I used to be fairly anti-HFT until I learned more about it. Now I'm somewhat ambivalent, except for the topic of rogue trading algorithms, which seem fairly dangerous, but the genie's out of the bottle.
Re: Why I don't spend time with Modern C++ anymore
#178HFT is a pretty limited and extreme application case. From what I understand - everything is not enough for HFT - network cards, kernel drivers, cables, etc. You have milliseconds (edit: nanoseconds !) to receive, process and push your orders before someone else does it and gets the prize. It's an arms race between technologists for the purpose of making a small number of people rich. I doubt that these requirements…
He explained that himself in the comments below his post: C++ is his tool of choice but he "just wanted to stir the pot".
Anything in his post is contrary to my personal experience with C++.
Re: Why I don't spend time with Modern C++ anymore
#179There are two separate rants here that aren't delineated well. 1) C++ is too complicated, and therefore hard to reason about and slow to compile. We're going to argue about this forever, but you'll have to agree that the spec is very large and warty compared to other languages, and that C++ tends to take far longer to compile (this was already a problem a decade ago, it's not specific to "modern" C++). 2) The future…
Don't we tend to reason predominantly about the written-down code rather than about the language itself? Once the developer has delineated the semantic circle he will be using, the big part of the specification is left out. Granted, the question is open when we are contemplating a blank ... err, code editor, but does that occur all that frequently?
> Presumably this speculation is based on the Intel-Altera acquisition.
Well, it has been a while companies sell high performance network cards equipped with gigabytes of RAM and an FPGA. I'd be curious to know what people do with that? The level of prices seems to indicate the target would be financial institutions, but how about the developers -- where does one find people proficient in finance, math and verilog/VHDL all at once? And at what price?
Re: Why I don't spend time with Modern C++ anymore
#180Earlier quoted context omitted.
std::unique_ptr, move constructors, etc and you're pretty safe, but it's still not in the same league as Rust. In my opinion you should probably learn Rust unless you want to get a job writing C++ (e.g. game development).
I never quite understood why unique_ptr and move semantics are supposed to improve memory safety over new and delete. They reduce leaks, sure, since the compiler inserts free for you at a hopefully-useful place. But you still effectively have to decide when to free, and there is no protection against dangling iterators, references, or pointers. From a security point of view, use after free is far worse than leaking,…
Though it isn't the type of safety you're thinking of, if you use make_unique/make_shared you'll also be exception-safe... which is a very nice benefit.