4 ms·
Good to see you read the article. I already have a VPS set up running django for my band website. Python is great, but Perl is great too.
by DavidMcLaughlin 18y ago
Good to see you read the article. I already have a VPS set up running django for my band website. Python is great, but Perl is great too.
- jimbokun 18y agoWhat things do you like better about Perl than Python? (honest question)
- DavidMcLaughlin 18y agoI didn't say I liked anything in Perl better than Python. There may be a couple of things, but it would just boil down to personal taste. Conversely, I like Python better than Perl in two major departments though: 1) The way you import stuff in Python. If you have a long namespace in Perl you have to type it out every time you instantiate an object. Example: use Organisation::Project::App::Models::Feature; my $feature = Organisation::Project::App::Models::Feature->new(); In Python you would do: from organisation.project.app.models import feature; feat = feature(); It's a small point, but when you have multiple views/actions inside a controller that all use the same model you start to get annoyed typing that namespace in Perl. 2) The native OOP system in Python is much easier than Perl. With Moose this is far less important than it used to be, but comparing core Perl to core Python it is an issue.
- draegtun 18y agoYes its seems common for Perl libraries in commercial environments to get very long and come a right PITA ;-( However check out the excellent "aliased" module... http://search.cpan.org/dist/aliased/ http://search.cpan.org/dist/aliased/ From its POD... use aliased 'My::Company::Namespace::Customer'; my $cust = Customer->new; use aliased 'My::Company::Namespace::Preferred::Customer' => 'Preferred'; my $pref = Preferred->new;
- DavidMcLaughlin 18y agoCPAN strikes again, I was actually hoping someone would show me a better way when I posted that. So thanks!
- d0mine 18y agoIn Python there is no one obvious place to go for 3rd party packages (easy_install is a dwarf compared to cpan). In Python there is no one obvious documentation system (Sphinx, epydoc, pydoctor, ...). Syntax for working with regular expressions is not builtin in Python. One-liners are useless in Python (due to whitespace sensitivity). Chaining of expressions (in functional style) is more cumbersome in Python than in Perl. Compare (from http://www.hidemail.de/blog/perl_tutor.shtml http://www.hidemail.de/blog/perl_tutor.shtml): Print the canonical sort order in Perl: say sort grep /\w/, map { chr } 0 .. 255; Literal translation to Python: print ''.join(sorted(filter(lambda c: re.match(r'\w', c), map(chr, range(256))))) A more pythonic version: print ''.join(sorted(re.findall(r'\w', string.maketrans('', '')))) Ruby version: puts (0..255).collect { |i| i.chr }.select { |c| c =~ /\w/ }.sort.join '' Output: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
- newt0311 18y agoBetter python version: print ''.join(chr(i) for i in range(256) if re.match(r'\w', chr(i)) Learn to use list comprehension.
- d0mine 18y ago1. where is `sorted()`. 2. where is closing `)`. 3. DRY principle is more important than a couple of parentheses here and there (there could be a heavier function than `chr()`). And I know list comprehension (and generator expressions, and dictionary comprehension, and set comprehension). One of versions I've considered for Python was: print ''.join(sorted(c for c in map(chr, range(256)) if re.match(r'\w', c))) And even: print ''.join(sorted(c for i in range(256) for c in (chr(i),) if re.match(r'\w', c)))
- newt0311 18y agoSorted is unnecessary: the range function generates them in the right order. The last ')' character is missing. Sorry about that. I have been spoiled by show-paren-mode. The DRY principle is great when applied to large swaths of code but in this case, seriously, it is faster and more concise to just write it again. Either the language optimizer will optimize out the extra work (not in CPython though...) or it will not. Either way, your functions would be slower as they have to explicitly allocate either two lists or a list and a tuple unless they are optimized further, not to mention that the added structures will make optimization challenging. Principles are great in theory but try considering practical aspects once in a while.