Kinda funny you bring that up, as I had to write a conservative line rasterization algorithm today for lines of arbitrary width and grids of arbitrary size. The internet didn't have any articles on this, at least on the first couple pages of DDG. There were similar but wrong articles, and the details are important.
The "programming" it seems capable of doing is copy-pasting popular webshit from Stack Overflow. That's a big industry, and lots of people do it as a full-time job. But it's always just another CRUD app that's no different from the last or the next when you get down to it.
The true zen of programming is making your code such that you don't have boilerplate anymore. The closer you can get to that, the more productive you'll be in reality.
Mainly, stop the CIA from propping them up. That's the big one nobody seems to remember: the US created and sustains the cartels in order to flood the country with drugs for their evil schemes and profits.
Not even the ones of Indians and shit-powered toilet machines? Or the videos of various world leaders robbing convenience stores dressed as petty thugs from their respective countries? Or the AI deepfakes of famous people giving ridiculous speeches?
Actual C17 photo of like a gazillion people getting crammed in. The only thing preventing this is some military officer saying so. Civilian courts don't get to say how many criminals the Air Force can cram in one plane if the Air Force is told to transport them.
I find that most functional programming languages have too high of a cognitive base load to do sophisticated things with them. It feels cool to map-reduce-filter everything, but a for loop uses less brain power, which means more brain power is left over for the actual task. When you're making trivial web apps it doesn't matter too much, but the cognitive load becomes prohibitive when you can barely understand a complicated task in the first place.
C in bare form has a similar problem in that there are no data structures included. The first task for anyone using C is to make or include a good, capable, terse data structure library that has dynamic arrays and hash tables (arbitrary key and value) at a bare minimum. Anything less is an exercise in insanity.
What if I told you you could make massively parallel, high performing applications without concurrency bugs.... in C? The whole trick to what languages like Elixir do is break things down into tasks and then pass messages between them through a thread-safe queue. This can be done relatively trivially in C with the right sort of zen about it, and probably an order of magnitude better performance than anything else.
I recently did this to my texture loading and processing system for the game.
There are some non-reentrant functions, but they are documented. Most have *_r versions now too. The important things, like malloc and free, are thread safe in any sane libc. It's up to the programmer to coordinate access to non-thread-safe functions. C doesn't hold your hand or wipe your ass; it assumes you're a big boy who knows how threads and memory work.
Locking, even atomics, is expensive. It has to coordinate between all the core' cache's in hardware, which is slow, even if it just looks like you're setting a variable. Locking everywhere all the time just so the programmer can be lazy is dumb in a high performance language.
I agree, but the problem is retarded managers who can't tell good devs from bad ones, and "architecture astronauts" who think the entire app should be implemented using template metaprogramming.
Learn about joins and "database normalization". It will save you headaches later on when you suddenly need to support having multiple phone numbers or email addresses for some reason.
CGI involves spawning a new process every time there's a request. SCGI listens to nginx on a persistent socket, and as such allows everything to stay in a single process. This means you can do simple, in-process synchronization between threads rather than having to fuck around with clunky IPC.