34 votes

What programming language do you think deserves more credit?

My pick is Perl5. Even though a lot people (mostly those who’ve never touched Perl) say it’s a “write only” language, I think it does a lot right. It’s easy to prototype with, and it gives you a lot of freedom in how you want to solve a problem; which I think is one of the most important features of a programming language.

I’d like to know what your picks are!

78 comments

  1. [17]
    welly Link
    PHP 7.x. PHP is obviously an easy target for 'haters', and historically criticism was probably quite fair, but it has come on leaps and bounds since those earlier days and I do think the 7.x...

    PHP 7.x.

    PHP is obviously an easy target for 'haters', and historically criticism was probably quite fair, but it has come on leaps and bounds since those earlier days and I do think the 7.x branch of PHP is great, certainly not perfect but definitely deserves more credit than it is getting!

    21 votes
    1. [10]
      Emerald_Knight (edited ) Link Parent
      Yeah, I don't really understand the criticisms myself. A lot of the criticisms I see concern the syntax, particularly the use of -> for accessing class members and invoking methods, :: as a scope...

      Yeah, I don't really understand the criticisms myself. A lot of the criticisms I see concern the syntax, particularly the use of -> for accessing class members and invoking methods, :: as a scope resolution operator, and . for concatenation. But when you realize that dot-concatenation avoids the type coercion bullshit from JavaScript (e.g. accidentally concatenating a number and numeric string), you end up preferring it, and the other two operators are from C++, so it's not like they're unique.

      The other big source of complaints typically concerns standard library naming/parameter order inconsistencies. But really, who the fuck does any development without an IDE anymore? Just use autocomplete. And if it really bothers you, then write a quick wrapper function or create some wrapper objects.

      Most other complaints basically boil down to "I hate this thing that literally every other weakly-typed language does!", "I hate this language because X, Y, and Z frameworks are garbage!", or the best yet, "I hate this language because the older versions that aren't even relevant anymore sucked!".

      The only complaint I have is that some behavior is unintuitive, e.g. when calling empty("0") you would expect it to evaluate to false, but it evaluates to true. But you know what? I wrote a fucking wrapper function for that instead of bitching online about it. It took me more time to write those last two sentences than it did for me to write code to solve the problem.

      Granted, there are still valid complaints about PHP. But that's the case for any language. And just like any language, PHP has its upsides and downsides, things you're going to love and things you're going to hate, standard behavior and its own individual quirks. It's kind of ridiculous to complain that a programming language behaves like a fucking programming language.

      Then again, I've been working with PHP for a couple of years now with a proprietary framework that isn't complete shit, so maybe I'm a bit biased ;)

      9 votes
      1. [2]
        spit-evil-olive-tips Link Parent
        I do. Lots of other people do, too. If I wanted programming to require an IDE I would have continued to slave away in the Java Mines. Instead I write Python every day with Atom on one monitor, a...

        But really, who the fuck does any development without an IDE anymore?

        I do. Lots of other people do, too. If I wanted programming to require an IDE I would have continued to slave away in the Java Mines. Instead I write Python every day with Atom on one monitor, a terminal window on another, and library documentation / google results / stack overflow / etc on a 3rd. For me, an IDE just gets in the way, I can think much easier with just a text editor and not a 747 cockpit.

        And it's not just about IDE vs. text editor - it's about cognitive overhead, the number of things a language (or framework, library, etc) forces me to keep in my head at one time. Little inconsistencies add up.

        The only complaint I have is that some behavior is unintuitive, e.g. when calling empty("0") you would expect it to evaluate to false, but it evaluates to true. But you know what? I wrote a fucking wrapper function for that instead of bitching online about it.

        That's...not a good solution in the general case. Should every PHP codebase in the world have a my_empty or real_empty function in some utils.php file to work around the standard library's empty being weird?

        And if I'm working as a PHP dev and switch jobs, do I then have to un-learn the helper functions I was used to and re-learn whatever subtly different wrapper functions my new team uses?

        working with PHP for a couple of years now with a proprietary framework that isn't complete shit

        Would you want to do PHP development using purely open-source tech, and not the proprietary framework?

        12 votes
        1. Emerald_Knight Link Parent
          I was being facetious. I know there are plenty of people who prefer to write code from a CLI. Every single code base that isn't complete shit usually has additional helper functions defined to...

          I do. Lots of other people do, too.

          I was being facetious. I know there are plenty of people who prefer to write code from a CLI.

          Should every PHP codebase in the world have a my_empty or real_empty function in some utils.php file to work around the standard library's empty being weird?

          Every single code base that isn't complete shit usually has additional helper functions defined to accommodate for the lack of functionality in any given programming language. Often times you'll find certain primitive types wrapped in objects to help avoid certain edge cases, and at others there are third-party libraries or extensions installed that don't have native support and you want to wrap some piece of functionality to avoid headaches down the line. These implementations will typically differ quite a bit from project to project.

          If every programming language is a language, then every project is a different dialect of that language. There are certain pieces of vocabulary that are used more than others, some new introductions, and even what you could call "slang" (e.g. a wrapper function for array operations). The different style guidelines and preferences regarding coding standards will quite often result in you needing to learn these different dialects, anyway. I mean hell, it's not uncommon to switch from one project where you're accustomed to using snake case for variable names and find yourself working on another where the convention is to use camel case.

          I don't think it's unreasonable to be expected to dig through a utils.php file at the start of any project just to see what helper functions and classes your project works with to solve commonly encountered problems that the language itself doesn't handle natively, and to see what changes might've been made to adhere to desired conventions.

          Would you want to do PHP development using purely open-source tech, and not the proprietary framework?

          By "proprietary", I mean that it was developed in-house by a company I used to work for. It's open-source, albeit lesser-known, and I work on a fork of it to be compatible with up-to-date tooling. There's a separate, more frequently maintained version in a private repo that gets licensed out as well, so there's an actual fully proprietary version. I'd plug it here, but it's used so seldom by outside companies that I'd definitely be giving away my identity if someone knew the name, and I'd prefer to keep some level of anonymity :)

          1 vote
      2. idapp3r Link Parent
        Even the non-proprietary stuff is pretty good now. I've started a project with Laravel, and I got to say I am actually enjoying writing PHP which is a fun surprise.

        Even the non-proprietary stuff is pretty good now. I've started a project with Laravel, and I got to say I am actually enjoying writing PHP which is a fun surprise.

        4 votes
      3. welly Link Parent
        Agreed. Syntax is syntax, once you learn it then it just is. I find Python's white space syntax weird by Python developers just get used to it. I'd probably do the same if I wrote Python. And yes,...

        Agreed. Syntax is syntax, once you learn it then it just is. I find Python's white space syntax weird by Python developers just get used to it. I'd probably do the same if I wrote Python.

        And yes, the function naming/parameter order still annoys me and I still keep forgetting the name of many string functions but as you say, IDE. It's not the end of the world. Other languages have their own quirks that require either a documentation lookup or an IDE autocomplete so in reality it's really not an issue.

        I've also been working with PHP for quite some time now, and so I'm possibly biased although I was certainly ready to move on from PHP 5.x. With PHP 7.x, my enjoyment of the language and being able to get things done as well as feeling like I'm writing proper code, has been renewed.

        2 votes
      4. [4]
        Neurotrace Link Parent
        I don't think anyone complains about :: as a scope resolution operator. That's pretty standard. C#, Rust, and probably others use it. In my experience, most people complaining about PHP were...

        I don't think anyone complains about :: as a scope resolution operator. That's pretty standard. C#, Rust, and probably others use it.

        In my experience, most people complaining about PHP were exposed to v4 - v6. Myself included. Those versions of PHP were very counter-intuitive, easy to accidentally expose your source code to the world, lacked a strong type system, and errors leaned towards the incomprehensible or just got eaten. I hear 7.x is better but if you're going to defend it, at least argue against the things that people complain about.

        Source: Wrote PHP 5 for ~3 years

        1 vote
        1. [3]
          Emerald_Knight Link Parent
          ...I mean, I kind of did?

          I hear 7.x is better but if you're going to defend it, at least argue against the things that people complain about.

          "I hate this language because the older versions that aren't even relevant anymore sucked!"

          ...I mean, I kind of did?

          3 votes
          1. [2]
            Neurotrace Link Parent
            Sorry, I guess I missed that line.

            Sorry, I guess I missed that line.

            2 votes
            1. Emerald_Knight Link Parent
              No problem. It was admittedly a brief mention. Easy to miss :)

              No problem. It was admittedly a brief mention. Easy to miss :)

              3 votes
      5. onyxleopard Link Parent
        Personally, I don’t want to write code to solve problems inherent to the language I’m usuing. I want to write code to solve my problems. If I have to write a small library to fix a language, there...

        Personally, I don’t want to write code to solve problems inherent to the language I’m usuing. I want to write code to solve my problems. If I have to write a small library to fix a language, there has to be some major benefit of the language that I can’t get elsewhere to compensate. What is that pay-off for PHP?

        1 vote
    2. [4]
      acdw Link Parent
      Do you have any tips on getting started with PHP 7? I've tried to find tutorials but all the stuff I can see is for older versions.

      Do you have any tips on getting started with PHP 7? I've tried to find tutorials but all the stuff I can see is for older versions.

      4 votes
      1. idapp3r Link Parent
        https://www.tutorialrepublic.com/php-tutorial/ looks pretty good. It goes into everything from what I can tell (I am learning as well, PHP is not something I use often but I have been trying it...

        https://www.tutorialrepublic.com/php-tutorial/ looks pretty good. It goes into everything from what I can tell (I am learning as well, PHP is not something I use often but I have been trying it out again with Laravel and its kind of neat)

        2 votes
    3. Ib_dI Link Parent
      I think PHP got about as much credit as it deserved tbh. There are plenty of people who talk about how great it is and since it was used at Facebook it got a lot of credibility. That said, it...

      I think PHP got about as much credit as it deserved tbh. There are plenty of people who talk about how great it is and since it was used at Facebook it got a lot of credibility.

      That said, it deserved the reputation it had for a long time, even into the 7.x releases. There are still a lot of awful bugs in it but it can be a good language if used well.

      1 vote
    4. rickdg Link Parent
      Yep, F5-based development is pretty good.

      Yep, F5-based development is pretty good.

  2. [6]
    gabelanglais Link
    Rust They’ve seemed to solve many of the discrepancies I had with C/C++. I believe it can become a solid competitor to C++ in due time.

    Rust
    They’ve seemed to solve many of the discrepancies I had with C/C++. I believe it can become a solid competitor to C++ in due time.

    20 votes
    1. [4]
      Ordinator Link Parent
      I think Rust gets all the credit it deserves. I think it's a great language, and I hope that eventually I'll never have to write a line of C++ again, but it's also talked about a lot any time it's...

      I think Rust gets all the credit it deserves. I think it's a great language, and I hope that eventually I'll never have to write a line of C++ again, but it's also talked about a lot any time it's even remotely topical.

      20 votes
      1. [3]
        DeAngeloVickers Link Parent
        Rust is actually not that widely known. It is very talked about in certain circles but I think the industry as a whole is mostly ignorant of Rust.

        Rust is actually not that widely known. It is very talked about in certain circles but I think the industry as a whole is mostly ignorant of Rust.

        2 votes
        1. [2]
          Ordinator Link Parent
          Maybe we're working off of different versions of "deserves more credit". I should have added the word "positively" to my original post. The key to me is that whenever Rust is talked about, it's...

          Maybe we're working off of different versions of "deserves more credit". I should have added the word "positively" to my original post. The key to me is that whenever Rust is talked about, it's already in a neutral or positive light. Whether anyone actually uses it is unrelated to whether people think it's any good (i.e. whether it gets credit) IMO.

          4 votes
          1. DeAngeloVickers Link Parent
            Ah, I took "credit" to mean "recognition". I do not believe Rust is widely recognized, despite its impressive accomplishments.

            Ah, I took "credit" to mean "recognition". I do not believe Rust is widely recognized, despite its impressive accomplishments.

            3 votes
    2. DeAngeloVickers Link Parent
      I think one of the major limiting factors for Rust adoption is ... Rust adoption. As far as I know, there are no large production ready projects written in Rust. As the creators and primary...

      I think one of the major limiting factors for Rust adoption is ... Rust adoption. As far as I know, there are no large production ready projects written in Rust.

      As the creators and primary maintainers of the language, I think it is up to Mozilla to show the rest of the industry that Rust is ready for prime time use. Instead, after years of development, Mozilla's flagship product is still 28% C++ and >7% Rust.

      Compared to something like Go, Rust has had an incredibly slow adoption rate, even after accounting for the difficulty of learning each language. On the TIOBE index Go is #18 and Rust is at #37 (below languages like D, Dart, and Scratch). I think this is largely due to the fact that Google started using Go for serious projects immediately, but no one has done anything with Rust outside of relatively small experiments.

      I think Rust still needs one big project to be used as an example in convincing average joe PM's that Rust is a safe choice for starting new projects and sparking widespread industry adoption.

      6 votes
  3. [8]
    Gibdeck Link
    Laugh all you want - VBA. It's old, it's not too pretty, but its integration with Microsoft Office can't be beaten. My job is to automate reporting and when working in "secure" or old-school...

    Laugh all you want - VBA. It's old, it's not too pretty, but its integration with Microsoft Office can't be beaten. My job is to automate reporting and when working in "secure" or old-school environments - where you need to write a full on business case just to have notepad++ installed - VBA is king. Everyone in the organisation is able to open and work on a xlsm or xlsb file without needing anything else installed.

    It keeps Excel files sizes down to a minimum and opening fast. None of that processing 5%....yawn...6% on every cell update and happily outputs anything to Word, Powerpoint etc. with minimal code.

    COM for dictionaries, file systems and data connections for querying tables in sheets, csv files or something else is fantastic.

    I'm just sorry that it hasn't developed more.

    16 votes
    1. [6]
      PepperCat Link Parent
      Do you think is an easy la gauge to learn for a noob? I’ve been wanting to learn to program but I’m currently interested in learning in Python just because it seems to be easy and powerful...

      Do you think is an easy la gauge to learn for a noob?
      I’ve been wanting to learn to program but I’m currently interested in learning in Python just because it seems to be easy and powerful according to what I have read.

      2 votes
      1. Elronnd Link Parent
        Not the GP, and I don't really know VBA, but I would recommend sticking with python. Python is much more popular, which means there will be more libraries (code other people have written that you...

        Not the GP, and I don't really know VBA, but I would recommend sticking with python. Python is much more popular, which means there will be more libraries (code other people have written that you can plug into your own code), larger community, more/better learning resources. Python has also been much more influential, partly because of its popularity, partly because of its age, so learning python will give you a better jumping-off point to learn other programming languages.

        6 votes
      2. [2]
        hungariantoast Link Parent
        I'd recommend Python. I feel like its greater popularity means there are more resources out their to learn it. As for where to begin, you can't go wrong by reading Automate the Boring Stuff with...

        I'd recommend Python. I feel like its greater popularity means there are more resources out their to learn it.

        As for where to begin, you can't go wrong by reading Automate the Boring Stuff with Python by Al Sweigart. It's free to read on the website, you can buy a physical book, and there's a video series of the book by the author on Udemy if that's what you'd prefer.

        3 votes
        1. ali Link Parent
          +1 on automate the boring stuff. It's an amazing beginners book, but even for advanced people it's a nice resource to learn specific tasks (my specific questions was : what should I use to parse html)

          +1 on automate the boring stuff. It's an amazing beginners book, but even for advanced people it's a nice resource to learn specific tasks

          (my specific questions was : what should I use to parse html)

          3 votes
      3. [2]
        Gibdeck Link Parent
        It's fairly easy to learn, but like Elronnd and hungariantoast have already said stick with Python. Python has some powerful things built in like the ability to make a list of everything - is...

        It's fairly easy to learn, but like Elronnd and hungariantoast have already said stick with Python. Python has some powerful things built in like the ability to make a list of everything - is where VBA fails. 1 line of code in Python = 5 or so lines of code in VBA.

        That being said, if you are in an environment where it's a pain in the arse to have IT install other stuff, your options become limited and you start becoming creative.

        3 votes
        1. PepperCat Link Parent
          Thanks for your answers!

          Thanks for your answers!

          1 vote
    2. Archimedes Link Parent
      It's definitely useful and ubiquitous, but I just hate working with it, personally. I've found the M language in the query editor a much cleaner approach to many of my uses, but I work mostly with...

      It's definitely useful and ubiquitous, but I just hate working with it, personally. I've found the M language in the query editor a much cleaner approach to many of my uses, but I work mostly with tables.

      2 votes
  4. tak Link
    D Low-key, carefully and thoughtfully designed language. If I were to start on a new C-ish project, I'd be taking a very close look at it. PS. In fact, it'd be nice to send a quick invite to...

    D

    Low-key, carefully and thoughtfully designed language. If I were to start on a new C-ish project, I'd be taking a very close look at it.

    PS. In fact, it'd be nice to send a quick invite to WalterBright.

    14 votes
  5. [7]
    Staross Link
    Julia, I'd take it over R/Python/Matlab any day of the week. I find it fun to work with, because it's quite elegant and well designed, it feels good somehow.

    Julia, I'd take it over R/Python/Matlab any day of the week. I find it fun to work with, because it's quite elegant and well designed, it feels good somehow.

    11 votes
    1. [2]
      ali Link Parent
      I had to work on a computer vision course in Julia. I had a lot of problems using different libraries written in it, because it just seems like they are not documented enough. When you look up...

      I had to work on a computer vision course in Julia. I had a lot of problems using different libraries written in it, because it just seems like they are not documented enough. When you look up errors on python, you can debug them or find others running into the errors. With Julia it just seemed like (in the libraries at least) - well something went wrong, good luck.
      Also: trying to pass in a transposed matrix, when you have to pass in a matrix won't work, because the type has changed to transposed matrix. It was just a huge cause of headache for someone not new to programming but to the language

      5 votes
      1. Staross Link Parent
        In some domains the libraries are still a bit under-developed yes. I would rather recommend Julia for developers than end-users at the moment. That said debugging is easy in Julia, since...

        In some domains the libraries are still a bit under-developed yes. I would rather recommend Julia for developers than end-users at the moment.

        That said debugging is easy in Julia, since everything is written in Julia you easily edit packages and even the language itself. That's a bit different in other languages where c/c++ fallbacks are very common (try fixing a bug in numpy or R dataframes).

        I think transposed matrices were changed recently to be lazy. Basically when you transpose a matrix it just change its type without changing the memory layout, which is more efficient (e.g. if you transpose twice nothing is done at all). If a package doesn't support transposed matrices it's a bug with its interface.

        2 votes
    2. [2]
      Archimedes Link Parent
      Mathematica is super powerful for certain types of things in that realm too.

      Mathematica is super powerful for certain types of things in that realm too.

      2 votes
      1. Staross Link Parent
        I like Mathematica yes, they even have a decent online version now that you can use for free.

        I like Mathematica yes, they even have a decent online version now that you can use for free.

        1 vote
    3. [2]
      Nmg Link Parent
      Julia is wonderful, the only thing is, last time I checked... \psi looks the same as \Psi, yet refer to different variables importing packages takes bloody forever, it's only useable in a jupyter...

      Julia is wonderful, the only thing is, last time I checked...

      • \psi looks the same as \Psi, yet refer to different variables

      • importing packages takes bloody forever, it's only useable in a jupyter notebook

      1 vote
      1. Staross Link Parent
        The psi issue is probably a problem with the font rather than the language. Loading time is an issue yes, it forces you to adopt a particular working style in which you don't reload things often....

        The psi issue is probably a problem with the font rather than the language.

        Loading time is an issue yes, it forces you to adopt a particular working style in which you don't reload things often. The reason for these long loading time is that Julia is compiled just in time, so code needs to be compiled when you first run it. Currently part of the compilation is cached on disk, but not the whole thing. There's some plans to cache more things (PackageCompiler.jl works quite well apparently) but it's not quite done yet.

        3 votes
  6. [5]
    Liru Link
    I think Erlang, as well as Elixir, deserve more love, if only for the ways they force you to think about your code. They help you organize and think about the flow. They also have better pattern...

    I think Erlang, as well as Elixir, deserve more love, if only for the ways they force you to think about your code. They help you organize and think about the flow.

    They also have better pattern matching. It makes almost any other language that claims to have pattern matching feel simplistic in that regard.

    11 votes
    1. [4]
      cadadr Link Parent
      How does it compare to Haskell and MLs? I've only played with Erlang a few years ago, and IIRC it was just like other MLs.

      They also have better pattern matching. It makes almost any other language that claims to have pattern matching feel simplistic in that regard.

      How does it compare to Haskell and MLs? I've only played with Erlang a few years ago, and IIRC it was just like other MLs.

      1 vote
      1. [2]
        Liru Link Parent
        I'm an idiot; when I wrote that, I was mostly tunnelvisioned onto imperative languages that claim to have pattern matching instead of other functional languages. I haven't done any programming in...

        I'm an idiot; when I wrote that, I was mostly tunnelvisioned onto imperative languages that claim to have pattern matching instead of other functional languages. I haven't done any programming in any MLs, but it would probably be about equivalent to Haskell's, from my limited experience with it.

        2 votes
        1. cadadr Link Parent
          :) BTW MLs are quite similar to Haskell. I used SML for a few times when following a Udacity course (IIRC) a few years ago. The other well known ML is OcaML. They differ from Haskell in that they...

          :) BTW MLs are quite similar to Haskell. I used SML for a few times when following a Udacity course (IIRC) a few years ago. The other well known ML is OcaML. They differ from Haskell in that they allow functional impurity.

          1 vote
      2. wirelyre Link Parent
        Erlang takes a lot of inspiration from Prolog too. The syntax in particular resembles Prolog quite strongly, with English punctuation (fac(0) -> 1; fac(N) -> N * (N-1).), a strong emphasis on tail...

        Erlang takes a lot of inspiration from Prolog too. The syntax in particular resembles Prolog quite strongly, with English punctuation (fac(0) -> 1; fac(N) -> N * (N-1).), a strong emphasis on tail recursion (i.e. cuts), capitalization distinguishing variables and atoms, and probably more.

        When I walked through the manual a few years ago, I remember being delighted with bitstrings — it's possible to pattern match directly on bytes and bits.

        There are a few other surprises, like hot-swappable code. Essentially all of the unusual features are stuff you'd typically find in libraries (threading, actors, byte parsing), lifted into the core language. It's a very well-designed system.

        2 votes
  7. [6]
    vakieh Link
    Person who programmed perl before here. Perl is a write only language. Perl5 is too little, too late, and it still hasn't learned that TIMTOWTDI was utterly and unarguably annihilated by PEP 20....

    Person who programmed perl before here. Perl is a write only language. Perl5 is too little, too late, and it still hasn't learned that TIMTOWTDI was utterly and unarguably annihilated by PEP 20.

    it gives you a lot of freedom in how you want to solve a problem; which I think is one of the most important features of a programming language

    This is literally the opposite of an important feature, as the current safe memory scuffle happening in the industry is proving yet again.

    As for languages that need more credit - functional languages as a family. Sure, lisp and haskell look funny, but as the call for programmers doing mapreduce and whatever else with Hadoop/Spark/Flink/etc the demand for programmers who can think functionally will only increase (bonus points: Python has that more or less covered too).

    10 votes
    1. cadadr Link Parent
      Perl has its place, and it is possible to write good Perl. But I think Ruby is a good replacement for many applications of Perl, maybe except when you need regexp soups. The only downside of Ruby...

      Perl is a write only language.

      Perl has its place, and it is possible to write good Perl. But I think Ruby is a good replacement for many applications of Perl, maybe except when you need regexp soups. The only downside of Ruby is that documentation is not nearly as good. With Perl, the perl* man pages and perldoc can help with almost all your docs needs. Wish Ruby's case was similar.

      5 votes
    2. Akir Link Parent
      I agree functional languages need more credit. There is a reason why the older languages still in wide use have all added mechanisms for functional programming (i.e. Lambdas in Java) in the past...

      I agree functional languages need more credit. There is a reason why the older languages still in wide use have all added mechanisms for functional programming (i.e. Lambdas in Java) in the past few years.

      3 votes
    3. [2]
      judah Link Parent
      Hmm I somewhat disagree. Technically any language can be write only, I just think the line between “good” and “bad” Perl is much finer than in other languages. But I agree that it’s definitely...

      Hmm I somewhat disagree. Technically any language can be write only, I just think the line between “good” and “bad” Perl is much finer than in other languages. But I agree that it’s definitely easier to write horrible code in Perl than in most other languages lol

      I also don’t necessarily think freedom corresponds with a lack of memory safety. No matter what systems programming language you use (besides Ada), you always have the possibility of memory safety issues. Even Rust, which touts itself as the safe alternative still has memory leaks.

      2 votes
      1. Neurotrace (edited ) Link Parent
        Memory leaks, not memory safety issues. You can't dereference a null pointer, overflow a buffer, or stomp all over the stack (in normal, safe mode). Any language which allows looping and does some...

        Memory leaks, not memory safety issues. You can't dereference a null pointer, overflow a buffer, or stomp all over the stack (in normal, safe mode). Any language which allows looping and does some kind of dynamic memory allocation will have leaks. No way around that.

        4 votes
    4. Ephemere Link Parent
      It's very interesting to see this perspective - I program in perl more or less professionally (yes, in 2019) and I honestly haven't experienced parsing the language as a pain point, even when...

      It's very interesting to see this perspective - I program in perl more or less professionally (yes, in 2019) and I honestly haven't experienced parsing the language as a pain point, even when dealing with code written by a large body of different people. This is on a fairly large (to me, at least) codebase, I'm guessing in the low few million lines of code.

      Perhaps this is the result of working in a post Modern Perl and Perl Best Practices world? We don't even have rigidly enforced style guides.

      Not to negate your experience at all, mind.

      2 votes
  8. gyrozeppeli Link
    Rust. Just kidding ;) If anything I'd pick some of the functional languages like Clojure. I think they really get slept on. Maybe C# gets passed up sometimes due to the M$ ecosystem, but it's...

    Rust.

    Just kidding ;)

    If anything I'd pick some of the functional languages like Clojure. I think they really get slept on. Maybe C# gets passed up sometimes due to the M$ ecosystem, but it's actually quite pleasant to work with.

    9 votes
  9. [6]
    phlm Link
    Clojure and Ruby. While Ruby had it's 5 minutes of fame /w Rails, I think it's the language with very nice community and very bright future with Ruby 3. Not even mentioning other options like...

    Clojure and Ruby.

    While Ruby had it's 5 minutes of fame /w Rails, I think it's the language with very nice community and very bright future with Ruby 3. Not even mentioning other options like truffle and GraalVM.

    Clojure is probably a real underdog here, since it's lisp-inspired (I won't call it true lisp descendant because it has it's differences compared to Lisps), but it's running on JVM which is big advantage compared to anything else. You can do a lot of stuff with it. And it is best programming experience I've had. It is such a nice language, so pragmatic and expressive. But it has it fair share of problems alongside community and Cognitect, that's just a story on its own.

    9 votes
    1. [2]
      cadadr Link Parent
      Clojure has non-technical problems. The community around is problematic, and the development style is right there in the worst spot between usual open-source software and proprietratry, where all...

      Clojure has non-technical problems. The community around is problematic, and the development style is right there in the worst spot between usual open-source software and proprietratry, where all everything depends on the whim of just one guy. Which is no problem if it was just some tool that you could replace whenever you wanted, but when it is the programming language, it's harder to jump ship.

      It also does not offer something like CL restarts, or even proper, usable error messages at all, let aside useful. That might have changed since last time I used it tho. There are a few error signalling and restarts-like libraries I've seen, but AFAIK they are not used by the core, and not widely used in general. And when your error handling is a library, how do you deal with it when different libraries choose different ones?

      6 votes
      1. thundergolfer Link Parent
        When I was in a team that owned a project written in Clojure, this was basically all true.

        When I was in a team that owned a project written in Clojure, this was basically all true.

        2 votes
    2. [3]
      acangiano Link Parent
      Agreed on both. Though, I would argue that Ruby had more than its 5 minutes of fame thanks to Rails. It was a primary choice for most startups for a decade. Today, many people mistakenly assume...

      Agreed on both. Though, I would argue that Ruby had more than its 5 minutes of fame thanks to Rails. It was a primary choice for most startups for a decade. Today, many people mistakenly assume it's dead. It's not. It's alive and kicking.

      I'll add Elixir to your two suggestions. It's incredible what it has to offer (via BEAM/OTP) and although it's appreciated by many, it's still far from mainstream.

      3 votes
      1. markh Link Parent
        If anything, I’d say that Erlang is the one that’s underappreciated. With that said, Elixir is an amazing language with a wonderful community. Highly recommend trying it out!

        If anything, I’d say that Erlang is the one that’s underappreciated. With that said, Elixir is an amazing language with a wonderful community. Highly recommend trying it out!

        2 votes
      2. thundergolfer Link Parent
        Yeah Ruby+Rails is still prominent in the codebases of a handful of billion-dollar+ tech companies, maybe a dozen. Sure most are now doing rewrites in Golang or Java or Scala, but it seems to me...

        Yeah Ruby+Rails is still prominent in the codebases of a handful of billion-dollar+ tech companies, maybe a dozen. Sure most are now doing rewrites in Golang or Java or Scala, but it seems to me Ruby had about 10 years of prominence.

        1 vote
  10. [2]
    Diff Link
    Golang for me. Almost any time it's brought up I see people basically just mocking it with such dumb, stale criticisms. "No generics," "needs a runtime, it's barely faster than C#," "lol it's...

    Golang for me. Almost any time it's brought up I see people basically just mocking it with such dumb, stale criticisms. "No generics," "needs a runtime, it's barely faster than C#," "lol it's garbage collected," "just use rust."

    None of them are technically wrong but I feel like they're really missing the point. Go is lightning fast to understand and write. I was up in running in hours, and I felt comfortable in days. In Rust I never felt comfortable and it took me weeks to start writing code.

    It reminds me a lot of Python but compiled. Even if you don't compile it ahead of time, running .go programs with go run script.go for me is instant, as fast as Python's interpreter while the actual execution time is leaps and bounds ahead of the performance of my little Python scripts.


    A few years back I was playing with roguelike map generators, my favorite was this cellular automaton-based cave system generator. Problem was, in Python even modestly sized maps would take painful amounts of time to generate.

    I stumbled on Go and rewrote my stuff in Go and it compiles fast, it runs fast, and I didn't spend weeks tearing my hair out just trying to figure out how I could properly represent my program's logic without Rust's compiler chewing me out. Everything feels very clean and simple.

    9 votes
    1. Grand0rbiter Link Parent
      There's a lot of neat projects in Go for Linux. The lf file manager is one example. I'm learning to code right now and after i'm done with shell script i think i'm going straight to Go.

      There's a lot of neat projects in Go for Linux. The lf file manager is one example.

      I'm learning to code right now and after i'm done with shell script i think i'm going straight to Go.

      4 votes
  11. [4]
    shaunxcode Link
    Occam - if you dig csp/go/core.async you owe it to yourself to learn Occam and there is a plethora of old books and example programs to play with! Plus the transputer was 20 years ahead of its...

    Occam - if you dig csp/go/core.async you owe it to yourself to learn Occam and there is a plethora of old books and example programs to play with! Plus the transputer was 20 years ahead of its time.

    APL/j/k - first got into these when I was doing project Euler and once finishing a problem in a blub language I would find the APL answer was so terse and so much faster I HAD to know how and why. I bought APL with a mathematical accent and never looked back. I still need to buy a new dyalog keyboard to replace my ibm model m that shorted out.

    Forth - lisp like in its simplicity and ability to bootstrap your own world from nothing. Definitely a desert island language to build your ideal lisp upon even.

    Smalltalk - I got lucky and took the last year that the open university used smalltalk to teach oo concepts and I am forever grateful. If you want to see what real oo could had been download squeak or pharo and dig in.

    Self - imagine stripping out the classes and instances from smalltalk but retaining the graphical environment. Also if you really want to understand prototype centric oo ala javascript learning self is essential. I wish there was a newer version with better graphics but it is still fun to poke at.

    scheme - buy SICP and drop out of life with parens in hand.

    JavaScript - last but not least. This strange scheme like self like Algol syntaxed specimen truly is a great language.... if you are holding it right and seeing it through the lens of its predecessors.

    6 votes
    1. [3]
      jenz Link Parent
      life←{ ↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵ } ⍝ John Conway's "Game of Life". That's Conway's Game of Life in one line 1, APL is amazing.

      APL

      life{ 1 .3 4=+/,¯1 0 1∘.¯1 0 1∘.⌽⊂ } ⍝ John Conway's "Game of Life".
      

      That's Conway's Game of Life in one line 1, APL is amazing.

      2 votes
      1. [2]
        cprayingmantis Link Parent
        Not trying to funny or anything but where are those characters on the keyboard? Is that part of the learning curve?

        Not trying to funny or anything but where are those characters on the keyboard? Is that part of the learning curve?

        1 vote
        1. yellow Link Parent
          This appears to be a common layout. I haven't used APL, but I imagine getting used to that requires some effort. I think there might be some way to write out functions names instead, but that...

          This appears to be a common layout. I haven't used APL, but I imagine getting used to that requires some effort. I think there might be some way to write out functions names instead, but that would certainly take away some of the elegance of the language. There are also APL keyboards with the symbols printed on them.

          1 vote
  12. [9]
    SystemicPlural Link
    I've never used Perl5. It's been over a decade since I used Perl at all. So I can't comment on it. What do you use it for? Everyone loves to hate on it, but my favourite language is modern...

    I've never used Perl5. It's been over a decade since I used Perl at all. So I can't comment on it. What do you use it for?

    Everyone loves to hate on it, but my favourite language is modern JavaScript. ECMAScript 6+. Sure JavaScript comes with lots of Wat, but when combined with Node it is so universal in scope. There have been a lot of growing pains and the eco system is messy, but it has really started to tidy up in the last year. I do almost everything in it these days and it is great to not have to constantly switch syntax when I switch from client to server code.

    5 votes
    1. [7]
      ddevil Link Parent
      I haven't touched JavaScript in several years and just started learning ES6 and Typescript. The let keyword alone makes a huge difference and being able to have types makes me feel much safer...

      I haven't touched JavaScript in several years and just started learning ES6 and Typescript. The let keyword alone makes a huge difference and being able to have types makes me feel much safer coming from Java. After using Kotlin for the last few years there are definitely some niceties I miss. I didn't realize how much I loved the syntax for when the last argument is a lambda until now.

      7 votes
      1. [6]
        cadadr Link Parent
        What resources did you use to learn ES6? I want to dedicate some time to it in a couple months, I forgot a lot about webdev.

        What resources did you use to learn ES6? I want to dedicate some time to it in a couple months, I forgot a lot about webdev.

        2 votes
        1. [2]
          piedpiper Link Parent
          You could try free code camp. It has a section on ES6 specifically. I also found this paid course, and while I haven't taken it myself, I have done some of his free courses in the past and enjoyed...

          You could try free code camp. It has a section on ES6 specifically. I also found this paid course, and while I haven't taken it myself, I have done some of his free courses in the past and enjoyed them. He also has some free tutorials on his main site.

          2 votes
        2. ddevil Link Parent
          Since I already have a bunch of JavaScript experience I just brushed up on the new features with the site, http://es6-features.org/#Constants. Learning TypeScript also made it easy to understand...

          Since I already have a bunch of JavaScript experience I just brushed up on the new features with the site, http://es6-features.org/#Constants. Learning TypeScript also made it easy to understand how the scoping of let works (basically exactly as you would expect block scope to work). https://www.typescriptlang.org/docs/handbook/variable-declarations.html

          2 votes
    2. judah Link Parent
      Funnily enough, I don’t use Perl very much if at all anymore. I mostly used it like a systems programming language though. My favorite projects were a DSL parser, an automated monthly expense...

      Funnily enough, I don’t use Perl very much if at all anymore. I mostly used it like a systems programming language though. My favorite projects were a DSL parser, an automated monthly expense tracker, a subreddit scraper, and my own tiny version of Make.

      2 votes
  13. [2]
    cadadr Link
    Prolog, maybe. It's always been one of those languages that sound interesting in theory, but lack practical, famous examples of application. I was a language geek some years ago and played with...

    Prolog, maybe. It's always been one of those languages that sound interesting in theory, but lack practical, famous examples of application. I was a language geek some years ago and played with almost anything under the sun, and I encountered it back then. Would expect to see its applications in AI, maybe open source libraries.

    5 votes
    1. xxzozaxx Link Parent
      Honstly, this comment should be on the top.

      Honstly, this comment should be on the top.

  14. [2]
    balooga Link
    AppleScript. It's an insanely powerful automation tool that almost no one has even heard of. Mac-only, which is probably close to the root of the issue.

    AppleScript. It's an insanely powerful automation tool that almost no one has even heard of. Mac-only, which is probably close to the root of the issue.

    3 votes
    1. onyxleopard Link Parent
      It also makes some really weird design decisions aimed at non-programmers such as 1-based indexing and attempts at natural English like syntax. I used it little many years ago, but once I started...

      It also makes some really weird design decisions aimed at non-programmers such as 1-based indexing and attempts at natural English like syntax. I used it little many years ago, but once I started getting more comfortable with bash and Unix utils, AppleScript became more trouble than it was worth. If you need to script macOS GUI apps that provide dictionaries, it’s still good to know, though. I heard that Apple was trying to replace AppleScript with JavaScript for automating macOS, but that seems like a bad idea to me.

      2 votes
  15. Elronnd Link
    I've never used perl5, but my pick solidly goes to perl6. As a refugee from d who was looking for a new programming language, perl6 was exactly what I was looking for, actually for similar reasons...

    I've never used perl5, but my pick solidly goes to perl6. As a refugee from d who was looking for a new programming language, perl6 was exactly what I was looking for, actually for similar reasons to the ones for which you praise perl5. It seems as if-- you know how, in lisp, you can express your code however you want, because the language gives you constructs (macros) that let you translate your expression of code into the expressions provided by the language? In perl6, that seems unnecessary, superfluous, because there all possible ways to express code are already provided by the language. Some people would say that this makes for a bloated language (or whatever), but that hasn't been my impression at all. Lisp comes with a lean language (kind of), but you fatten it up as you use it and add your own toolset of macros. And that's fine. But with perl6, it's easier to understand someone else's code because they have to create fewer of their own constructs, but it's still easier to write than other languages because you don't have to think as much about how your ideas translate into the ideas of the language you're working on.

    An honourable mention goes to jai, which looks like the systems language I've been looking for (c, c++, d, rust, zig, nim, and others have failed to provide the things I want, although my favourites are c and d), if only it would come out already!

    2 votes
  16. jlpoole Link
    Perl 5 -- no ands, ifs, or butts.

    Perl 5 -- no ands, ifs, or butts.

    1 vote