1,667 karma · joined October 3, 2017
With Python, you don't even have to go "alternative" to use LLVM compiler infrastructure. You can use CPython + Numba and compile your kernels for both CPU and GPGPU on the go. Which is very practical.
Which is ironic, to compile a CUDA kernel in C++, you would have to use an alternative NVidia implementation of the language.
Just as a piece of evidence, there are interpreted C++ (http://www.artificialworlds.net/wiki/IGCC/IGCC) and AOT Python (https://github.com/exaloop/codon) implementations.
Programming in C++ is also an outdated habit. There are better languages, better technologies, and there are generally better ways to create software than writing code, compiling the code, replacing std::abs with abs (real issue, these are different functions) and recompiling the code again. But writing in a horrible language is a proper right as well. People write in Brainfuck for fun and good for them!
Jack Rusher sums up what better programming looks like in his Strange Loop talk https://www.youtube.com/watch?v=8Ab3ArE8W3s
We need to look into something far more fascinating like http://www.spiral.net/ Something that creates value a mere compiler, which is a technology from the 50s, can not.
I have been writing in C++ for most of my professional career, I wrote company-wide guidelines, I still teach and consult. I absolutely agree that C++ is not going anywhere anytime soon. That being said, so is smoking. We can't just tell people not to smoke anymore, we live in a free society. But we really shouldn't drag more people in.
There is no such thing as an "intellectual need". All the needs are fundamentally emotional. Mastodon addresses the identity need, it creates the sense of a community, and, as all the social media, it grants both cheap entertainment and immediate gratitude for conformity. It is a good "social network", it's just what we call a phenomena of "social network" is essentially shit.
It's almost impossible to stay sober with all the social pressure. In our culture, every event has to have alcohol in it. Every occasion is a drinking occasion. Which is fine, except that I already drank my share for life and now just prefer enjoying life in other ways. So now I show up in full gear, put my helmet on display and have a nice evening without any nudging and questioning.
The next one sold none. Which is expected since I made it openly available from my site. It hit about half a million downloads in the first year. Alas, most of them were from one IP somewhere in Czechia so I guess someone's spider got stuck in the web. But real people downloaded it too, about 12 000 copies. I even got a positive review from John D. Cook of which I'm extremely proud https://www.johndcook.com/blog/2020/04/24/programming-langua...
I'm now working on Geometry for Programming book for Manning https://www.manning.com/books/geometry-for-programmers. This would be my first collaboration with a publisher and so far it looks like it will become a moderate success. The early access sales are good, the reviews are encouraging. Even though, I would expect first year sales to be in thousands, maybe even low tens if we're lucky but no more. Definitely not enough to live of.
So while the post doesn't reveal any specific statistics, it does agree with my experience. Most books might indeed sell in very low numbers but they are not really published and maybe not even really books. If you're working with a well established publisher, you will get some moderate sales numbers guaranteed, and a even small chance to go big.
But unread books are useless for this purpose unless they are dictionaries or references. And surely there is no point in keeping them in your own home. A proper place to keep unread books is a public library.
My https://wordsandbuttons.online/ uses default browser colors for anything other than interactive illustrations. For those, I just don't know how to make user choice work with the graphics they show since the graphics is always different from picture to picture, so I impose slightly tinted background as part of the palette.
But it still pays to peek into disassembly every now and then. For instance, one time I got to shorten a kernel runtime by switching an index type from size_t to uint32_t. Apparently, 64-bit integer division wasn't supported directly by the target architecture and instead of some kind of IDIV, there was a 100-lines function embedded and called on every division.
Just downcasting an index before pushing it to the kernel made the whole thing considerably faster. But I wouldn't know I should have done this if not for the disassembly.
If you're under 30, you shouldn't be worried too much. We've all been like this.
I got my math education in a tramway since it was the only distraction free place and I had to be there anyway.
I do my wordsandbuttons.online in similar spirit: no dependencies, and all the pages are kept below 64KB. However, as the code base grows, I'm starting to employ scripts to do the grunt work for me. So while I don't have dependencies per se, code patterns become dependency it its own right.
It doesn't take too much technical know-how to build a site. Basic HTML+CSS+JS is enough really. Writing, editing, visual design, UI design, - it all requires way too much expertise in comparison. You have to be a creative let's say 80% of the time and technical for about 20%. Reducing the last 20% only wins you 20% of the effort. But! by concentrating the technical expertise in your own head you get another level of freedom as a creative person too.
I was writing on Livejournal, habrahabr, Codrspace, and Medium before I went stand-alone. And the main reason was not ideological but rather practical. I wanted to make interactive illustrations, quizzes, and puzzles for my pages. I wanted very specific very custom things no platform would provide.
And that's why I went small web. Small web but full tech. I enjoy my creative freedom by employing let it be modest technical expertise but exactly in a way I want to employ it. And I think, investing into technical skills to get creative freedom is well worth it.
Disassembly is either way our end result so unless you're looking for something particular, it makes sense to browse that first just to check that the compiler gets your intention just right.
Also, this is an odd choice of program to compare. Compilers often do suboptimal on superscalarisation, inlining, or simplifying control flow. In this example, there is not enough space to go wrong nor for a compiler neither for a programmer.
I don't really care if I have to write SELECT or \forall or σ as long as they all have the same meaning. But I'd prefer to use SELECT because I already spent time learning how to work this way.
SQL as a language is fine. There is no real need to reinvent SQL unless you're going to reinvent the math behind it too.
Well, I suspect it's not about Studio per se but rather the git integration but still. Someone avoided a "fancy algorithm" and wasted both my time and the product reputation with a "small n" workaround. Because, git is about small commits right?
I'd like to restate the first rule as "You can't tell where a program is going to spend its life".
But if it's only about language, no additional perks, then it just isn't worth investing your time.
If continue the parallel with programming languages, there are tons of C-killers nobody knows about. I think, roughly every third programmer in the world tried to write more ergonomical C at some point in their live. And there is Rust. Which is not about ergonomics really but about memory safety combined with comparable performance. No more buffer overflows, no more Heartbleed. People see what they are trading their time on Earth for and the language is getting traction because of that.
This is, of course, only my personal opinion but languages are just thin interfaces over technologies.