• 2 Posts
  • 58 Comments
Joined 2 years ago
cake
Cake day: June 14th, 2023

help-circle


  • PHP grew “organically” out of a perl library. There was never a consistent plan/idea about the set of abstractions it provides, the type system, builtin functions etc… Everything has been bolted on here and there, some additions good, some bad, some terrible pitfalls. A language with builtin operators that are basically unusable (comparison!) and where some functions return false when the input is invalid, is really fundamentally broken. I agree that many of the worst failures of PHP have been (kind of) fixed after PHP5 and that’s nice for large existing PHP codebases (mediawiki, wordpress, nextcloud, typo3). But I just can’t understand why one would start new projects in PHP in a world where so many very well designed and well thought through languages exist.

    Edit: First sentence is misleading. Of course it wasn’t a perl lib, but basically a thrown together bunch of functionality, unified into one package, so it can replace using various perl libraries. The syntax was also very inspired by perl.















  • I’m not talking about companies that use windows vs companies that use mac but about the systems themselves. It’s very possible that most companies that use macs are generally better equipped, treat their devices better, upgrade more often, etc… But that’s a correlation, not a causation. You are right about the quality baseline because apple forces them to buy very specific hardware. But if they’d instead spend the same money for a windows machine and set it up decently, I would prefer that by a lot. MacOS is just terrible. It’s less keyboard friendly, always messy, forces users into a overpriced and shitty proprietary lock-in ecosystem, etc.

    I’m not sure how long I’ll say that though since microsoft really manages to make windows so much worse with every version they release, it has also reached a barely usable state to be honest.


  • The existence of undefined behaviour does not at all help performance. Those unnecessary if-checks are mostly a myth and even when they are introduced (e.g. bounds-checks when indexing arrays), they are usually outweight by the advantages of disallowing aliasing (references can be used much more “carelessly” without rutime checks, because these checks happen at compile time by default, comlilers can generally optimize code better because they know more about aliasing of specific data or the lack thereof). In larger, modern c++ projects a lot of smart pointers are used to enforce similar aliasing rules, which are then enforced at runtime though. Generally, the lack of undefined behaviour enables both programmers and compilers to design, architect and optimize code better. There are enough examples out there. Cloudflares in-house proxy solution comes to mind, which is written in rust and easily beats nginx (!!), serving billions of requests per day.