5 ms·
I really would like to use PHP or Python in a big project to at least get some experience. I tell ya, I do love Perl. With limited exposure to PHP and Python,
by t0pj 18y ago
I really would like to use PHP or Python in a big project to at least get some experience.
I tell ya, I do love Perl.
With limited exposure to PHP and Python, could you elaborate on some of the things PHP and Python are lacking compared to Perl?
- emmett 18y agoNeither PHP nor Python have anything approaching CPAN. Ruby is slightly closer with Gems, but even that's a joke compared to the might of Perl libraries. Seriously, that's the big thing that's missing. Other than that both PHP and Python are prefectly servicable, although you're going to have an easier time finding smart Python developers than smart PHP developers (Blub hiring paradox).
- newt0311 18y agoAnd perl has nothing approaching Python's readability. Perl may be easier to start with now but in 6 months, it will become a major headache. Read http://www.linuxjournal.com/article/3882 http://www.linuxjournal.com/article/3882 . Using Python would be an excellent choice imo.
- t0pj 18y agoThanks for the link. That's one thing I love about Hacker News; all of the links y'all leave that lead to further study and growth.
- jrockway 18y agoPython being readable is FUD. I've seen tons of horrible Python. Of course, I've also seen tons of horrible Perl (and PHP, and even Lisp). Basically, in the hands of incompetent programmers, everything is unreadable. If you are disciplined, you can write easily-readable Perl. I (and my coworkers) do it every day. Oh, one other thing... the linked article is from 2000. In the last 8 years, the Perl community has figured out how to program... so most of his points aren't relevant anymore. Nobody writes 2000-style Perl anymore.
- xlnt 18y agoone can write readable anything, but some languages encourage it more, both in the language features and syntax, and also in the community, tutorials, etc
- natch 18y agoYes, Perl encourages readability in the language by one of its language features, the helpful prefixes in front of variable names.
- Jesin 18y agoThis is a joke, right? You can't possibly be serious.
- natch 18y agoNo, I was serious. When I look at a variable in Python, say, p, to take an example from the code shown in the Python documentation, there is no way to tell what p is. Is it an array? A dictionary? A tuple? Something else? With Perl I get more information just by looking at the variable. That makes it more readable. Python, on the other hand, is still very nice. Maybe one of these days it will get me, especially if the libraries grow to match the breadth of CPAN.
- jrockway 18y agoIncidentally, I often see people complaining about non-idomatic python tutorials here. What I see from this is that people will try to TMTOWTDI regardless of whether or not that's the language's philosophy. At least Perl prepares you to expect people writing code that doesn't look like yours. (And I'm used to people's weird styles. I have one friend who makes every line of code its own subroutine, and another that gives every method a super_descriptive_but_way_way_too_long_name. You get used to it, and emulate it when appropriate. It's better to decide on a style with your friends/coworkers instead of being told what to do by some guy that works at Google you've never met.)
- natch 18y agoPerl is more readable to someone who knows Perl, because it gives you indications what type each variable is: $ for scalars (single values without dimension) @ for arrays % for hashes (like python's dictionaries) With python, you have to guess. Of course, many people who are intimidated by Perl have made the same statement about readability, and it is often repeated unthinkingly. That doesn't mean it's true. On the other hand, Perl does make it easier to write unreadable code. Just like any powerful tool -- cars, telephones -- it can be abused. All that being said, I think Python is a great choice too; I just disagreed on the readability point.
- jrockway 18y agobecause it gives you indications what type each variable is: Not really. Guess what type $foo is in each case: my $foo = []; my $foo = {}; my $foo = "Hello, world."; my $foo = \"Hello, world.";
- systems 18y agowhile completely ignoring the right hand side, i can tell they are all scalars. Looking at the right hand side, I can tell the type of the value in that scalar type! ... the value type is a different thing than the variable type We can really debate and argue about the value of typeful variables ... the value seem to be that it allow a combination of syntactic sugar and availability of the reference type! So basically, if you want a reference type, you need syntax to dereference the reference. And if you have that, you will eventually need syntax sugar for when you dont want to use the dereferencing syntax. This is probably why in Perl things are the way they are! I am not sure thought if the reference type is at all needed, it some occasions I see it clarify cases when values are passed by reference vs passed by value, because a reference in Perl is a real value, not something that is implied! ... but this i would say is largly subjective
- jrockway 18y agoI don't understand most of your post (too many ...s that aren't clear), but you should probably stay away from the word "type" when you are talking about Perl variables. "Scalar" doesn't really mean anything. If anything, it describes the cardinality of the contained value, but certainly not the "type". Even values stored in variables have very flexible "types" that I wouldn't really call a "type". If you store "42 is a number" in a scalar, you still don't have a type. Maybe it's a string, maybe it's an integer, maybe it's a boolean. Types only show up when you apply an operator. If you say "42 is a number" - 42, then the result is 0 because "-" coerces the string into an integer (actually a SvPv to an SvPvIv, and then looks at the integer part of the data structure). This is different from other languages that choose the operator based on the type of the value (look at how SBCL chooses the right + operator to used based on the types of the contained values. the exact opposite of Perl). As an aside, this coercion isn't an implementation detail; Perl exposes it all to you. If you "use overload", you can have "boolify" subroutine called when someone does "!$your_object", a stringify subroutine that's called when someone does "$your_object =~ /.../" or "qq{$your_object}", a "numify" subroutine that's called when someone does "$your_object - 42", etc. Anyway, not sure what my point is... but don't use the word "type" to talk about values or variables in Perl. It just doesn't make sense. Perl is totally different from other languages here, and the word "type" has too much incompatible baggage associated with it.
- xirium 18y agoMost fundamentally, PHP combines Perl's array and hash data structures. Although you can access name/value pairs as even and odd array elements, code that doesn't need both sets of properties will run slower and consume more memory because a structure implementing both sets of properties is implemented automatically. Why use a languge like that when you're already familiar with Perl?
- t0pj 18y agoThanks. I didn't know about PHP's array/hash combo. Would there be nothing for someone familiar with Perl to learn from using a language like Python? I appreciate your thoughts.
- jrockway 18y agoIf I recall correctly, a PHP "array" doesn't necessarily iterate (with foreach) in numerical order. That's just weird.