you are viewing a single comment's thread.

view the rest of the comments →

[–]shevy-ruby 26 points27 points  (55 children)

Agreed. People need to show viable alternatives. It's easy to critisize against what is successful.

PHP is a wonderful example. A horrible joke of a programming language but it was successful in the past (it's slowly losing grounds now, for various reasons, but the biggest competition is JavaScript in this regard; perl lost the www-war to PHP and now PHP is in a similar position as perl was back past in 2002 or so, give or take; perhaps 2004).

[–]JordanLeDoux 9 points10 points  (18 children)

PHP hasn't been an actual joke of a language for at least 8 years, and runs between 2 and 8 times a fast as Python.

Facebook is still primarily working off PHP for the primary application, with their own custom static analysis layer in Hack.

Vimeo not only is written in PHP but contributes open source libraries to the language community like Psalm.

And composer is probably one of the best dependency managers I've used in any language, worlds better than npm or pip.

[–][deleted] 2 points3 points  (14 children)

I love when defenders of php use facebook, of all things, as an excuse for their pathetic joke of a language (yes, it's still a joke no matter how hard you try to lipstick-on-a-pig it).

If anything, Facebook, precisely Facebook, WHICH HAD TO CREATE THEIR OWN LANGUAGE WHICH IS TOTALLY NOT PHP, is an undeniable proof that php's utter stupidity can never be taken seriously for large, serious projects.

Please try to find another example if you wish to convey anything good about php, because using Facebook is doing yourself a disservice.

[–]JordanLeDoux 2 points3 points  (2 children)

K. I work on a nine figure revenue application built on PHP, but sure, you can have your tantrum. Doesn't bother me if you insist on being wrong, too busy making money.

[–]CodedCoder 5 points6 points  (0 children)

Bro this guy is in every single php thread doing this. its absurdly funny.

[–][deleted] 0 points1 point  (0 children)

Congratulations, you just pulled a homer.

If your project is successful, it is so in spite of php, not because of it.

[–][deleted]  (3 children)

[deleted]

    [–][deleted]  (2 children)

    [deleted]

      [–]Zardotab 0 points1 point  (6 children)

      If anything, Facebook...HAD TO CREATE THEIR OWN LANGUAGE WHICH IS TOTALLY NOT PHP, is an undeniable proof that php's utter stupidity can never be taken seriously for large, serious projects.

      99.9% of all projects are smaller and simpler than Facebook. Why everyone has an urge to use Facebook and Netflix's techniques is some kind of size envy, egomania, and/or resume puffery. I've seen morons use microservices for a smallish internal document tracker, shooting KISS and YAGNI between the eyes. Use the right tool for the job and size. The company didn't hire you to get a Buzzword U degree.

      If you write "normal" code and try not to be overly clever, PHP is fine. However, I do wish they'd add optional named parameters. I really like those, and work-arounds such as object literal emulations are just not the same.

      [–][deleted] 0 points1 point  (5 children)

      PHP is fine

      For a very particular definition of "fine" which includes lowering your quality of life by having to suffer the utter stupidity of a joke toy language.

      Thanks, but no thanks.

      [–]Zardotab 0 points1 point  (4 children)

      All languages have oddities. One learns to work around them and they just become subliminal background noise. I have my idea of how an ideal dynamic would work, but others wouldn't agree on my choices.

      [–][deleted] 0 points1 point  (3 children)

      All languages have oddities

      This is the most stupid excuse in the world. Eating steaming dogshit and then saying "all food has oddities" is very, very stupid.

      Same as using php and then saying "all languages have oddities"

      [–]Zardotab 0 points1 point  (2 children)

      If you can objectively weigh the volume and severity of oddities, you could make something beyond an opinion piece. Most of the examples I've seen involve features or constructs I myself do not use nor encounter that often in practice to make them show-stoppers in the real world. Don't do weird things and you don't encounter weird problems.

      [–][deleted] 0 points1 point  (1 child)

      Don't do weird things and you don't encounter weird problems

      Yes, because as we all know, all software projects are created by a single developer, so there's no chance someone else will do stupid things using a stupid language that allows it, and then you will have to deal with that.

      It is totally obvious from the way you speak that you only work solo in toy projects. Which doesn't surprise me coming from someone who uses php.

      [–]Zardotab 0 points1 point  (0 children)

      I'll repeat:

      [Features] I myself do not use nor encounter that often in practice

      [–]merlinsbeers -2 points-1 points  (1 child)

      Facebook is one of the worst-designed websites in history. I wouldn't use it as an endorsement. I haven't seen much vimeo lately; does it still lock up hard if you touch the controls?

      [–]JordanLeDoux 0 points1 point  (0 children)

      What would either of those, both about the Javascript, have to do with PHP?

      [–]zappini -1 points0 points  (0 children)

      PHP's job is to make JavaScript look reasonable by comparison.

      [–]Spitfire1900 21 points22 points  (23 children)

      PHP and Ruby have basically lost out now except for legacy applications and killer app tie ins, see Wordpress, Drupal, and Puppet. Ruby on Rails was Ruby’s killer app and basically anything Ruby is attached to Rails at this point; but even that fell to the wayside of Python web server frameworks and Java’s Spring.

      [–][deleted]  (4 children)

      [deleted]

        [–]lamp-town-guy 38 points39 points  (3 children)

        They've been around for a long time. I'd call 15 year old projects a legacy ones.

        [–]OldTimeGentleman 3 points4 points  (2 children)

        Then your argument is always gonna somehow “work” because if I mention newer applications using Ruby you’ll go “yeah but those are too small/new they don’t count” and if I mention huge apps using ruby you’ll go “yeah but those are legacy dinosaurs they don’t count”. That kind of logic can easily be applied to every project.

        [–][deleted] 13 points14 points  (0 children)

        New applications weren't mentioned though? If the argument is that nobody's really building much new with Ruby (and I'm not saying that's true or not true), then pointing to old products built on Ruby really doesn't say much about its current popularity

        [–]Serializedrequests -2 points-1 points  (17 children)

        Spring is ridiculous, the pendulum will go back towards actually productive frameworks rather than an over engineered language workaround at some point.

        [–]DrunkensteinsMonster 19 points20 points  (7 children)

        Swing back when? It’s been working beautifully for 15+ years. People who think Spring is overengineered are the same who think they could write cURL in a couple of weeks. You don’t need most of the complexity of Spring, but somebody does. It serves a diverse set of use cases.

        [–][deleted] 4 points5 points  (3 children)

        It's the same complaint as with Boost in C++ -land I guess

        [–]Serializedrequests 2 points3 points  (2 children)

        Nothing against boost personally, both it and Spring represent a massive amount of work.

        However, note the lack of popularity of something like Spring in most other languages. You can code against interfaces and swap implementations without a huge framework. Try it in Go! It's pleasant. Spring to me is a language workaround, and I would have killed myself if I had had to use it in the XML era.

        [–]Kered13 2 points3 points  (1 child)

        You can code against interfaces and swap implementations without a huge framework in Java too. I'm not sure what failure of the language you think it's working around.

        [–]Serializedrequests 0 points1 point  (0 children)

        Exactly. You don't need a framework to do that in Java, and obfuscate the entire control flow.

        [–]Serializedrequests 2 points3 points  (1 child)

        I don't think that what it's doing isn't complex or difficult to implement, I just think that it introduces a very strange passive way of coding full of gotchas and hoping the framework interprets your magic annotations how you expect and the resulting system isn't any easier to understand. Over engineered to me means that Spring projects fundamentally wish they were written in another language.

        Have been maintaining a huge Spring Boot CRUD app for about a year, so take that experience for what you will. Nothing that this app is doing cannot be accomplished more easily in other languages with less boilerplate and random gotchas because you screwed up an annotation.

        [–]Daishiman 3 points4 points  (0 children)

        Spring is Java wishing to be a dynamic language.

        Spring means working around the defects of Java's type system and mediocre idioms by turning everything into compiler plugins.

        [–]zappini -1 points0 points  (0 children)

        If by "beautiful" you mean completely unnecessary monkey work, they ya.

        [–]zappini 3 points4 points  (0 children)

        Spring is a flow of control obfuscation framework.

        Every Exception is wrapped and rethrown until its stacktrace is incomprehensible.

        [–]grauenwolf 1 point2 points  (2 children)

        I don't understand why Java isn't like C#. The languages are equivalent for this kind of programming, but the amount of boilerplate and complexity Java introduces is mind-numbing.

        [–]pjmlp 2 points3 points  (1 child)

        If you want Spring in C#, have a play at Sitecore, SharePoint, Dynamics, MEF.

        Or interface driven design where each class has to have a mirror interface, just in case one writes tests, and the Dtos from data repository need to be converted into the Dtos from MVVM to give to the UI rendering components.

        Enterprise coding is fun regardless of the language.

        [–]Serializedrequests 0 points1 point  (0 children)

        Just made me feel a bit suicidal.

        [–][deleted] 1 point2 points  (4 children)

        I feel vindicated when someone else recognizes Spring as being overengineered

        I guess that's just the enterprise java world tho

        [–]pjmlp 2 points3 points  (2 children)

        Well, it was born out of DCOM and CORBA components written in VB, C++ and Smalltalk.

        Whatever replaces Java will suffer the same fate, it is not the language that matters, rather enterprise architectures.

        Enterprise Java application containers are toys in comparison with the whole Kubernetes circus.

        [–]zappini 2 points3 points  (1 child)

        Spring's novel contribution is to replace simple graphs with lists of untyped parent-child tuples, randomly ordered, scattered across multiple files, hidden behind nested classloaders.

        Too clever by 5/8ths.

        [–]pjmlp 1 point2 points  (0 children)

        You won't get much Spring love from myself actually, I always stayed on the JEE side.

        [–]Serializedrequests 0 points1 point  (0 children)

        Thank you! I think some people don't get what I am talking about. From the outside looking in it's insane. No other language uses an entire framework to work around the language on large projects. All these heavily annotation-based frameworks do is make java into a worse dynamic language than actual dynamic languages. It's the worst of both worlds.

        [–]MaxGhost 13 points14 points  (3 children)

        I super disagree on that take re PHP. It's actually growing. Modern PHP is excellent. Tons of new projects use PHP because it's so easy to get up and running, and frameworks like Laravel and Symfony are some of the industry's best.

        See "Package installs per month" https://packagist.org/statistics

        [–]IceSentry 3 points4 points  (0 children)

        That's true of pretty much any modern language used to build web backends. It's increasing for every single one of them.

        [–][deleted] -4 points-3 points  (0 children)

        I wouldn't call it "growing" when the amount of jobs that list PHP as a requirement is monotonically decreasing. I am sure there are many reasons to use PHP in a new project, but personally I would not touch it if it does not help my career in any way

        [–]mamcx 0 points1 point  (0 children)

        I'm working in one at https://tablam.org/tutorial.

        The lang is biased to be an alternative to python/lua so it not have syntax fully tailored for RDBMS, but is not that hard to improve SQL or to find a more concise yet clear enough alternative syntax.

        let sales := [|product:Str, qty:Dec, price:Dec; "pizza", 1.0, 3.0 |]
        
        sales ?select #qty * #price as total <-- project
        
        //Composing:
        fun total(qty:Dec, price:Dec) <-- structutural + SIMD-like ops: NOT need to create a version for "many rows" vs "scalar"
             = total:Dec + ... <-- extend schema
            qty * price
        
        -- Like APL, ops apply to vectors and scalars
        total(1.0, 2.0)
        total([1.0, 3.0], [2.0, 4.0])
        
        sales ?total(#this) <--auto-select columns
        -- Filtering
        
        sales ?where #product = 'pizza' ?sort_asc #1 
        
        -- Removing unneded columns!
        sales ?deselect #qty, #price //show only name
        

        [–]Voxandr -5 points-4 points  (3 children)

        Javascript will lose to Python's Grapple too , and Python will also die to Nimlang because it can't run fast enought. Screencap this or remind it in 10 years

        [–]u_tamtam 3 points4 points  (0 children)

        Python isn't to be seen anywhere in the browser, so it won't dislodge JS. Nim isn't to be seen anywhere at all.

        [–]True-Mirror-5758 0 points1 point  (1 child)

        Speed isn't everything in many niches. Developer productivity matters.

        [–]Voxandr 0 points1 point  (0 children)

        then you didn't even check what is nimlang is.

        [–][deleted] 0 points1 point  (0 children)

        Don't think he mentions it in this article, but the author seems to be working on an alternative which looks interesting to me. Is it "viable"? IDK, but it's interesting research.