4 ms·
I spend all of my working hours with modern PHP. IMHO, although its improved A LOT it’s still a mess. But with the right tooling you can kinda-sorta make it be
by stefanfisk 2y ago
I spend all of my working hours with modern PHP.
IMHO, although its improved A LOT it’s still a mess. But with the right tooling you can kinda-sorta make it behave like a sane language if you squint a bit.
- dalemhurley 2y agoEvery single language is a mess. Just look at time and floating point numbers in Java (not having a go at Java).
- IshKebab 2y agoEvery single language has parts that are a mess, or at least not perfectly designed. But that doesn't mean that languages all have an equal amount of mess. Python clearly has less mess than Perl. Rust clearly has less mess than C++. Zig clearly has less mess than C. There should be a name for the "nothing is perfect so everything is equally bad" fallacy. It's surprisingly common.
- networked 2y agoThe fallacy of gray? https://www.greaterwrong.com/posts/dLJv2CoRCgeC2mPgj/the-fallacy-of-gray https://www.greaterwrong.com/posts/dLJv2CoRCgeC2mPgj/the-fal... > The Sophisticate: “The world isn’t black and white. No one does pure good or pure bad. It’s all gray. Therefore, no one is better than anyone else.” > The Zetet: “Knowing only gray, you conclude that all grays are the same shade. You mock the simplicity of the two-color view, yet you replace it with a one-color view . . .” > —Marc Stiegler, David’s Sling
- IshKebab 2y agoAh nice, thanks!
- guenthert 2y ago> There should be a name for the "nothing is perfect so everything is equally bad" fallacy. It's surprisingly common. I think this falls under splitting (black-and-white thinking), a form of defense mechanism or (I suspect) mere rhetorical tool. https://en.wikipedia.org/wiki/Black_and_white_thinking https://en.wikipedia.org/wiki/Black_and_white_thinking
- IshKebab 2y agoNo, black and white thinking is a different thing. It's "the fallacy of grey", linked in a sibling comment.
- donatj 2y agoIn Python, default arguments are mutable. That's the ultimate WTF and footgun.
- orbisvicis 2y agoThat's somewhat of misnomer. The root cause is that default arguments are evaluated during function creation rather than when the function called. And... this is invaluable for forcing immediate evaluation of otherwise late-binding closures. What can be confusing is mixed lifetimes of nested generators using `yield from`. If any outer generator has a shorter lifetime, when it is garbage collected `yield from` will forward `close()` to the inner generator. Attempting to re-use the inner generator will result in a premature `StopIteration`. Iterators do not have `close()` and so are unaffected. This affects only `yield from` and not `for i in gen: yield i`.
- IshKebab 2y agoYeah that is definitely a footguns but I think calling it the ultimate footgun is overselling it. Perl implicitly casts between strings and integers. That's a waaaay bigger footgun.
- aspenmayer 2y ago> There should be a name for the "nothing is perfect so everything is equally bad" fallacy. It's surprisingly common. https://en.wikipedia.org/wiki/Perfect_is_the_enemy_of_good https://en.wikipedia.org/wiki/Perfect_is_the_enemy_of_good
- IshKebab 2y agoThat's a totally different thing.
- aspenmayer 2y agohttps://en.wikipedia.org/wiki/Nirvana_fallacy https://en.wikipedia.org/wiki/Nirvana_fallacy
- IshKebab 2y agoAlso not the same thing. That would be someone saying "we can't use any language because they all have flaws". The one I'm talking about is the fallacy of grey, linked from a sibling comment.
- DanielHB 2y agoThere are lasting languages and good languages, but there are no lasting good languages.
- nycdotnet 2y ago“There are only two kinds of languages: the ones people complain about and the ones nobody uses.”. Bjarne Stroustrup
- DanielHB 2y agoAlthough I don't disagree with that statement it is not exactly what I was implying. I was implying that good languages eventually grow into bad languages. Usually happens through tacking on new features and standard API functions without removing old ones. I wish modern languages would allow different modules within the same project to use different versions of the language and be more aggressive about deprecating/removing old features. So like if you open a module and see "version 3.0" in the manifest you know for sure that this module is not using stupid feature X from version 1.0. While still being able to use "crucial library not updated since 2003" without much fuss. Most languages these days don't dare to change core syntax behaviour in order to not break backwards compatibility.
- IshKebab 2y agoNonsense. There are plenty of good languages that have lasted a while, unless your standard for "good" is unreasonably high. Java is probably the longest lasting language that I would consider good. Are there things that I hate about it? Of course. But it got a lot of things right - even things that more modern languages have done much worse at, like IDE support.
- desdenova 2y agoTaking two of the worst languages as an example of "every single language" doesn't really work.
- MrBuddyCasino 2y ago> Just look at time and floating point numbers in Java What do you mean? The time & date API in Java is excellent, and the float and double types follow the IEEE standard.
- badlibrarian 2y agoIt took nearly 20 years to sort it out. Before Java 8, January was 0 and getYear() for today would return 125.
- stefanfisk 2y agoWasn’t Java 8 released 11 years ago? If PHP had been in its current state back then it would have been a masterpiece.
- IshKebab 2y agoJanuary as 0 seems like a very definsible choice. Presumably they did it to match C. If anything the WTF there is that the day of the month doesn't start from 0. Dunno what's up with getYear() though!
- divbzero 2y agogetYear() must have been written in the 1990s during the early years of Java: 95 = 1995 96 = 1996 97 = 1997 98 = 1998 99 = 1999 100 = 2000 !?
- tonyedgecombe 2y ago>I spend all of my working hours with modern PHP. I'd love to see a PHP without the warts. Something that is trivial to embed in a web page just the way PHP is but without the foot guns.