PHP, Perl, Python-- how three scripting languages starting with P fucked-up their respective releases



  • @blakeyrat said:

    I would like to point-out for the record to people who bitch that Win32 API doesn't support UTF-8 when (most of) it was built after UTF-8 was invented that neither does/did any of the three scripting languages mentioned in this post. (Only Perl, IIRC, pre-dates UTF-8. The others have no excuse.)

    UTF-8 is its own can of worms from a "string slicing and dicing in memory" perspective -- I'm not nearly as flustered by the W32 ...W APIs as I am about the MSVCRT's known deficiencies in its Unicode support (thankfully, they are ever so slowly being fixed). If the MSVCRT was as good as the underlying APIs, we wouldn't be in half the Unicode pickle on Windows that we're all in right now.



  • @accalia said:

    i disagree, i think i understand your point perfectly.

    I'm saying you divorce these things entirely:

    Bytecode + ABI

    Language

    So you can change the language version (or, for that matter, write an entirely new language) without worrying about touching your libraries or bytecode interpreter.

    This is the Java idea, and it's a really good idea.



  • @accalia said:

    this is true, however those 95% of people constructing the house for habitat for humanity are simply following plans laid out by an architect, They also do not have any interoperability concerns with other houses that they built because houses are complete stand along things, not frameworks upon which other things are built.

    Your analogy is flawed there. The house once built is not maintained by the builders of the house, but by the occupants the house was built for/sold to. a language is maintained by the builders.

    All of this misses the point:

    1. We know how to build quality housing

    2. We know how to build quality software

    Therefore, there's no obstacle to having quality volunteer software projects.

    Except the problem is that open source developers generally do not know how to build quality software. (Look at how many of them think they don't need a shared library if they have a CLI, or how many of them fail utterly to port their software to Windows.) So it kind of falls apart.

    @accalia said:

    other volunteer organizations can manage with 90 to 95% unskilled or semiskilled labor, overseen a ... odel as habitat for humanity manages.

    Excuses, excuses.



  • @accalia said:

    I'd love to see a non profit organization that requires the level of technical skill on the part of all volunteers that software development needs be organized and successful using the same business model as habitat for humanity manages.

    How about Doctors Without Borders?



  • @ijij said:

    Dang... they upgraded my lumber from 3.1 to XP and now my old blueprints aren't compatible!!

    https://www.youtube.com/watch?v=XmSBtDLgBSQ&t=5m56s


  • Discourse touched me in a no-no place

    @blakeyrat said:

    MOBILE PHONE

    That's a pretty discoursy excuse.



  • @Zecc said:

    Don't forget encouraging the declaration of character encoding.

    Sorry, the only proper way to handle character encoding is to read UTF-8, write UTF-8, and punch you in the face if you try to use anything else. With the possible exception of UTF-32, that one's alright.

    And fuck Pyton for not letting me write accented characters in comments without the stupid declaration.



  • @ijij said:

    Filed under: "Dang... they upgraded my lumber from 3.1 to XP and now my old blueprints aren't compatible!!"

    Already happened. 2x4s aren't.



  • @blakeyrat said:

    There's no such thing.

    Closures in C# changed in a rather important way around the change from .NET 3.5 to 4 iirc, but the behavior you had to rely on to cause a problem there was usually worked around, because no one liked it.


  • FoxDev

    IIRC, it was to do with closing over a variable with something delay-executed; the workaround was to copy to a local, and close over the local. Of course, the workaround still works exactly as it did before, so no-one really noticed 😄



  • Of course, but it was potentially breaking if you actually used the old behavior. But I can't really think of a time when that would be a good thing.


  • FoxDev

    @Magus said:

    Of course, but it was potentially breaking if you actually used the old behavior.

    If you used the old behaviour, then you're a moron for relying on a serious bug 😛



  • Statement form print removed in favor of function print(), ostensibly to make a consistent API but really just to mess with people.

    So true.
    Every time I try to quickly print something while debugging* in python 3, I forget the parentheses.

    * - TRWTF?



  • @blakeyrat said:

    That's one thing HTML and XML got right. Shove the version number right there in the file.

    Except then you need to parse the file to work out how to parse the file.



  • @RaceProUK said:

    If you used the old behaviour, then you're a moron for relying on a serious bug

    Oh, man, I hope not. Because I've written stuff using a bazillion obsolete behaviors. :facepalm:

    None of them were obsolete at the time, but since then...



  • @blakeyrat said:

    95% of Habitat for Humanity volunteers already have day jobs, etc, and the houses they build are perfectly average in quality. Or better.

    So are many open source libraries.

    As far as I remember, Freetype is a volunteer effort, I don't really know how much it's got in donations, and it's good. It's in fact so good that I bet any non-Windows, non-OSX box that displays text uses it (even Apple's iPod classic has it).

    The volunteers are not necessarily clueless undergrads. Many of them are professional enough not to do shit (if you have limited resources, you can always trim the scope and still deliver fine craft).

    The assumption that someone that's good on his day job does shitty work when volunteering is the same as someone being a brilliant driver at work, at the same time being a lousy one when driving their own private car. Never seen one in the wild. Or a proofreader that does excellent job while working for their publisher but makes "there/their" and "your/you're" mistakes in private emails.


  • FoxDev

    Depends: were the obsolete behaviours buggy?



  • @Zemm said:

    If people are complaining [Perl 6] is slow then we won't be moving to it (from perl 5.10.1 if you don't read my other threads): we'd probably change to a completely different language if/when support is dropped for perl 5.

    Perl 6 is a different language than Perl 5. There were a quite a few heavy debates on what to name the new language created by Larry Wall and unfortunately (IMHO) Perl 6 was chosen, instead of something completely different.

    Perl 5 development will continue, separate from Perl 6 development. There will most likely be some cross-pollination of interesting features.
    Moving to Perl 6 to run your Perl 5 codebase isn't something you should do. You'd gain nothing (and might even hit a few bumps when Perl 5 code uses features that aren't completely or correctly implemented in Inline::Perl5).

    Inline::Perl5 is not a backward compatibility hack in the same way that e.g. Inline::Python is not a Python compatibility hack 😄

    @Zemm said:

    We found even "use utf8;" slows things down measurably, which is probably where a lot of the slowness comes from in perl 6.

    If you need raw speed, don't use a scripting language :trollface:

    The slowness in Perl 6 comes from the complete lack of premature optimization (at least, AIUI). The Perl 6 developers focus on writing (testable, provable?) correct code.
    Speeding up can be done at a later stage, after the necessary mechanisms are in place to verify speed refactoring doesn't introduce regressions or other bugs.


  • Discourse touched me in a no-no place

    @OffByOne said:

    Speeding up can be done at a later stage

    In theory. In practice, speeding things up without thinking about it a lot at the design stage is very painful.



  • @blakeyrat said:

    I would like to point-out for the record to people who bitch that Win32 API doesn't support UTF-8 when (most of) it was built after UTF-8 was invented that neither does/did any of the three scripting languages mentioned in this post. (Only Perl, IIRC, pre-dates UTF-8. The others have no excuse.)

    Your claim is bullshit.

    Perl 5 has the best UTF-8 support out there if you have a recent enough version. "Recent enough" in this context means at the very least Perl 5.12 (release date: 2010-May-13), but preferably Perl 5.14 (release date: 2011-May-14) or more recent.

    That said, doing The Right Thing™ with respect to Unicode isn't always straightforward, also not in Perl (see http://www.perl.com/pub/2012/04/perlunicook-standard-preamble.html).
    At least Perl has everything on board for complete and correct Unicode support.



  • @dkf said:

    In theory. In practice, speeding things up without thinking about it a lot at the design stage is very painful.

    That's part of the reason it takes so long before Perl 6 is released. The underlying VM has been rewritten a few times to make future optimizations possible (no cite here, I'm going from memory).

    I just learned about http://perl11.org/. I don't know what to think about it...


  • BINNED

    @OffByOne said:

    perl11

    Perl 11? As in Perl 5 + 6? Clever.



  • @OffByOne said:

    That said, doing The Right Thing™ with respect to Unicode isn't always straightforward, also not in Perl (see http://www.perl.com/pub/2012/04/perlunicook-standard-preamble.html).

    I don't want to use any language that has something called "the standard preamble".

    I hope about halfway through writing that, he felt really really ashamed of it.

    Your own source makes it sound like Perl 5 is closer to "can be made to support UTF-8" than "supports UTF-8". Otherwise, why the preamble?



  • Isn't this less of a WTF with Perl since it has never really be backwards compatible with previous major versions?



  • @blakeyrat said:

    I don't want to use any language that has something called "the standard preamble".

    I hope about halfway through writing that, he felt really really ashamed of it.

    Your own source makes it sound like Perl 5 is closer to "can be made to support UTF-8" than "supports UTF-8". Otherwise, why the preamble?

    Since that series of blog posts was published (which was in 2012), there have been severe improvements.

    The utf8::all Perl module has been created (and is still actively maintained and updated).
    use utf8::all; is all preamble required for turning on all Perl UTF-8 features (in addition to installing the utf8::all module in the first place). It's a shorthand for the preamble referenced above, and then some.

    Why isn't the Unicode stuff enabled by default? Backward compatibility. Enabling Unicode by default all of a sudden would break countless scripts that have been working for ages.



  • @JazzyJosh said:

    Isn't this less of a WTF with Perl since it has never really be backwards compatible with previous major versions?

    What are you referring to with "this"? We've been talking about incompatibilities between Perl 5 and Perl 6, Perl 6 taking a very long time until first release, Unicode support in Perl 5, ...


  • ♿ (Parody)

    @OffByOne said:

    Why isn't the Unicode stuff enabled by default? Backward compatibility

    Only Micro$oft is allowed to use that excuse.



  • @blakeyrat said:

    Microsoft is still supporting stuff from 30 years ago.

    Lie. What stuff from 30 years ago do they support ?



  • @TimeBandit said:

    Lie. What stuff from 30 years ago do they support ?

    All the APIs that enable Visicalc 1.0 to run. At minimum.

    A lot of other applications that old still run, but Visicalc is the most famous.



  • @RaceProUK said:

    Depends: were the obsolete behaviours buggy?

    Oh, yes, some of them.



  • @OffByOne said:

    incompatibilities between Perl 5 and Perl 6

    this



  • @JazzyJosh said:

    [incompatibilities between Perl 5 and Perl 6]

    That's just it. Perl 6 is a different language, not a backward maybe-compatible successor to Perl 5, like Perl 5 was to Perl 4.

    That's why naming it "Perl 6" was a less than stellar idea IMHO. If you google "perl 6" naming, you'll find that there was a lot of disagreement about this name.

    In the end it was Larry Wall's call what to call his new language. He decided on Perl 6, so that's what it's called.



  • It probably is a poor name, I'm just pointing out that it actually has some reasoning to it and isn't a complete :wtf:


  • FoxDev

    @blakeyrat said:

    All the APIs that enable Visicalc 1.0 to run.

    wait, we're talking about the DOS based visicalc, right?

    this one: http://en.wikipedia.org/wiki/VisiCalc

    .... that still works on windows 8.1‽ really‽

    okay, that's impressive.


  • FoxDev

    @accalia said:

    that still works on windows 8.1‽ really‽

    Not on mine:

    Anyone with a 32-bit version of Windows 8.1 want to try?



  • People always get mad at windows' bloat, and microsoft wants to get rid of it. But people like things to keep working. We have the same problem at work. We deploy things in system32 because thats how things had to be done a few decades ago apparently. Our clients are banks.


  • FoxDev

    @RaceProUK said:

    Not on mine:

    Repro'd on windows 7 64 bit.

    same error (different path though.)


  • FoxDev

    That'll be because 64-bit Windows lacks the 16-bit compatibility layer 😛

    32-bit Windows should be able to run it though


  • Discourse touched me in a no-no place

    The 16-bit code path is very thoroughly doomed, so much so that normal installations by people won't be able to run code using it any more. Which is a good thing really; some levels of compatibility are best being put out to pasture taken round the back of the barn…

    The support costs once you get out of the 10 year window start to really increase, as it becomes hard to find hardware that will even run code from that far back, let alone with the fidelity to replicate all issues seen by only the crustiest of users. It also becomes a bit of a millstone, as you end up unable to support new things just because old Uncle McFloggarty's steam powered PC-AT can't handle the amount of computation required.

    Cost-benefit analysis says “don't support those idiots forever”.


  • FoxDev

    @dkf said:

    Cost-benefit analysis says “don't support those idiots forever”.

    QFFT

    now if some business managers would figure that out....



  • @JazzyJosh said:

    It probably is a poor name, I'm just pointing out that it actually has some reasoning to it and isn't a complete :wtf:

    I never doubted the name has some reasoning behind it, I'm just not convinced it's a reasoning I agree with ;)

    While DDG-ing for Larry's reasons to stick with "Perl 6" as the name for the language (I didn't find anything definitive and I'm not going to spend my evening of blackjack and hookers searching the Internet instead), I encountered this:

    [quote="http://www.linuxformat.com/content/larry-wall-interview"]
    Larry Wall: Our unofficial slogan is: "Perl 6: second-system syndrome done right". [Second-system syndrome is when coders try to make a 2.0 release much better than the 1.0 release, but end up adding lots of bloat.] But the only way to do second-system syndrome correctly is to take enough time to actually think through all the second and third order effects.
    [/quote]

    There you have it, straight from the mouth of the language designer 😄



  • On 32-bit Windows 8.1, yes.

    It can't work on 64-bit OSes because the CPU prevents it. If the CPU allowed it, you bet your ass it'd run.

    Of course Microsoft does own virtualization and emulation technology, so if you have like the free Virtual PC (is it still free?) and you use it to emulate a 32-bit CPU, you should be able to run Visicalc there.



  • @Magus said:

    We deploy things in system32 because thats how things had to be done a few decades ago apparently. Our clients are banks.

    You are wise to not buy it, because that's total shit.


  • Discourse touched me in a no-no place

    @blakeyrat said:

    If the CPU allowed it, you bet your ass it'd run.

    Win 10 32-bit:

    if I hit Ignore, it resizes my command prompt window, then crashes NTVDM.



  • End of an era.


  • BINNED

    @OffByOne said:

    That's why naming it "Perl 6" was a less than stellar idea IMHO.

    Perl One.


  • FoxDev

    @Onyx said:

    Perl One.

    And the runtime for Perl One can be called Knit One



  • Oyster 2015.



  • @anonymous234 said:

    So read the first line to determine the version and run the parser after that?

    I mean, I'm sure there's a lot of smaller problems to solve, but it definitely seems possible and worth it.

    Maybe you could start that first line with #!



  • @OffByOne said:

    Our unofficial slogan is: "Perl 6: second-system syndrome done right".

    How cute of them: getting straight into the textbook second-system syndrome while going to extremes trying to avoid the second-system syndrome. I think they are already a case study in some circles.

    What they are doing is a spherical horse in vacuum. People do languages and interpreters to do some actual applied shit with. What Perl 6 developers do is eternal masturbation with orgasm denial.


Log in to reply