5 ms·
Maybe I'm the only one that finds Python simultaneously verbose and lacking? Either you need 500 dependencies to do something in a simple way, or you need dozen
by 0xbadcafebee 1y ago
Maybe I'm the only one that finds Python simultaneously verbose and lacking? Either you need 500 dependencies to do something in a simple way, or you need dozens (if not hundreds) of lines to do trivial things. I avoid writing Python because there's so much bullshit to add. Much prefer Perl, I can actually get things done quickly. Python feels like programming for the sake of programming.
- supportengineer 1y agodang the backend is leaking old comments from 2007
- mystifyingpoi 1y agoCould you share an example, where Perl is quicker to use and more powerful?
- lucb1e 1y agoAnd not write-only (https://handwiki.org/wiki/Write-only_language https://handwiki.org/wiki/Write-only_language)
- const_cast 1y agoUsing it as a replacement for Bash. No environment required, Perl is already installed on every computer on earth. Perl is generally quicker to write for string-oriented workflows - which is what Bash is. Regex is quick and easy. Perl falls apart when you need structure and even small projects. For short scripts meant to do what you would use Bash for, it's a godsend. Safer, more portable, less friction.
- 0xbadcafebee 1y agoPerl does not fall apart when you need structure, it's OO. In fact it's better structured than Python (hello, PyPI? It's CPAN calling, we wanted to let you know hierarchical packages are a thing). If you mean "forcing people to program in an opinionated manner", it doesn't do that by default, but that's what linters and formatters are for (like the ones Python programmers use)
- const_cast 1y agoPerl has OO but I don't like it much.
- wslh 1y agoYMMV, but in my experience, Python's top use cases tend to require fewer dependencies, not more. Many trivial tasks are already built into the language. Not saying Python is perfect, but it's definitely well-oriented in that regard. I'm curious in what kinds of use cases have you found the opposite to be true? I think the classic Python vs. Perl question ultimately comes down to using what you feel most comfortable with. People are different, and that's totally fine.
- nickjj 1y agoI have a bunch of zero dependency projects. You can get a lot done with the standard library and single file projects which you can run on most systems without needing to do anything except curl it down and run it since Python is available. For example here's a ~2k line Python project which is a command line finance income and expense tracker: https://github.com/nickjj/plutus/blob/main/src/plutus https://github.com/nickjj/plutus/blob/main/src/plutus It uses about a dozen stdlib modules. About 25% of the code is using argparse to parse commands and flags. With that said, I tend to prefer code that yields more lines for the sake of clarity. For example this could technically be 1 or 2 lines but I like each parameter being on its own line. parser_edit.add_argument( "-s", "--sort", default=False, action="store_true", help="Sort your profile and show a diff if anything changed", )
- deleted 1y ago[deleted]
- 0xbadcafebee 1y agoArgparse is part of my problem with Python! I can never remember the weird ways it wants to collect all these attributes and features, so I'm always leafing through manual pages or googling for examples. Same for if I'm modifying existing Argparse code, I have no idea how to make it do what I want. It can do a lot for you, but it's a pain in the ass to use. It's so much easier to write a simple usage() function that has all help text in one big block, and Getopt with a case block. Anyone can just look at it and edit it without ever looking up documentation.
- nickjj 1y agoArguments can get pretty complicated. One nice thing about argparse is it comes with a helper function for mutually exclusive groups that can be optional or required. For example you can have --hello OR --world but not both together.
- dndurbah 1y ago> Much prefer Perl, I can actually get things done quickly Python lets you just nest data structures without having to twist your brain. You want a tuple in a list in a dictionary value: you just write it down and can access it with a unified notation. Bam. No reference madness and thinking about contexts. It's a big part of what I typically need to get things done quickly and understand how I did it 5 years later. That has to count for something. Python is boring in that sense, Perl is fun. But that's exactly my problem with it. It's too clever for it's own good and writing it does things to your brain (well at least mine).
- fireflash38 1y agoMajor downside to dictionaries being so useful in python... Everyone uses dictionaries everywhere. I'm so happy for dataclasses and attr, because having to check that str keys are right without ugly ass constants is miserable.
- kstrauser 1y agoThat's what got me off Perl. I loved it and was skeptical about Python, but one time after trying it for a week or so, I wondered what it would look like to pass a dict of lists of dicts into a function, then reference items inside it. My first try worked: I made a dict, with a list inside it, and a dict inside that list, and passed it as an argument without any sigils or reference decorators or anything. That was about the time I stopped using Perl for any new projects. I never wanted to go back.
- dapperdrake 1y agoThat is a surprisingly succinct take. That may actually have affected the demise of perl, apart from perl's breaking changes. Powershell is also horribly offended by trying to nest arrays. As is bash.
- 0xbadcafebee 1y agoPerl also lets you nest data structures, no brain twisting involved. Perl doesn't have Tuples natively but you can add them with a module. You can also nest objects in complex data structures. perl <<'EOF' my $object = bless sub { my ($s) = @_; if ($s eq "thingy") { return("hello world!") } else { return("goodbye world!") } }; my %hash1 = ( baz => "here we go", foo => $object ); my @array1 = ( undef, undef, undef, \%hash1 ); my %hash2 = ( bar => \@array1 ); my $reference = \%hash2; print( $reference->{bar}->[3]->{baz}, "\n" ); print( $reference->{bar}->[3]->{foo}->('thingy') , "\n" ); print( $reference->{bar}->[3]->{foo}->('something') , "\n" ); EOF here we go hello world! goodbye world! Perl being Perl, TMTOWTDI, but you can enforce your own style using linters and formatters.
- bobsmooth 1y agoThe best part about python is that there's a library for everything.
- milin 1y agoHave you met Java?
- dapperdrake 1y ago"Only in my web browser." Those were the days…
- mekoka 1y agoWhen you say "I actually can get things done quickly", does that include reading that same source a year from now?
- kelvinjps10 1y agoPython is a language that the standard lib is big enough that you don't need dependencies
- dapperdrake 1y agoTechnically, C or assembly also fulfill this "requirement". There seems to very few smart people who agree with this in practice, however.
- jhasse 1y agoI need JSON with comments and trailing commas