Penguin

Differences between version 18 and predecessor to the previous major change of WhyIHatePerl.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 18 Last edited on Thursday, August 25, 2005 12:32:33 am by AristotlePagaltzis Revert
Older page: version 17 Last edited on Wednesday, August 24, 2005 12:03:32 pm by JaredUpdike Revert
@@ -80,8 +80,10 @@
  
 The thing with Pascal is that it was impossible to do most things. Standard Pascal didn't treat files like most newer OS's did (a stream of bytes? wazzat?), but it's big failing was that the size of the array is part of the type, and there was no way to write a generic function to handle arrays of varying sizes. Since strings were a kind of array, you couldn't write a function to take a generic string. Sure, langauges like TurboPascal resolved most of these issues in incompatible ways. Delphi shows that Pascal can be a nice language when "touched up". 
  
 Perl may be expressive, but the problem is that you have to maintain other peoples perl programs, and since other peoples Perl programs are difficult at best to modify, you have a problem. while this may not be the language's fault, it __is__ a problem with the language IMHO. --PerryLorier 
+  
+----  
  
 Exactly. What I hear sounds like contradicting logic to me: 
  
 # Perl is great because it frees you to do things the way you want and doesn't force you to do things a certain way. 
@@ -93,8 +95,24 @@
  
 The problem is, other people use Perl so I have to whether or not I want to. That's where my frustration is coming from: things just don't work right the first time, and I have learned and used many new languages in the last 6 years that did work right the first time: Lisp, Python, Scheme, OCaml, Haskell, etc.[4] 
  
 P.S. If LarryWall was trying to reproduce the chaos, power and ambiguity of natural languages he hit the $nail on the $head. Kudos to Perl for being that one big loveable hateable monster. Just like the English language: it's easy if you grow speaking it natively. --JaredUpdike 
+  
+----  
+  
+Well, I remember very well how I took my first steps with Perl. Coming from Pascal, Assembler and C, the only real clincher was understanding lists as first-class citizens. That was the one qualitative step I needed to understand the language. Ever since, learning has been purely gradual.  
+  
+And yes, there are very obscure aspects of the language, most of which stem from its awk/sed heritage (like nearly all of the strange punctuation variables). I learned awk, sed and shell long after Perl, and would frequently go "oh, so that's where Perl got that from." They are very useful in oneliners, but good Perl hackers avoid them in lasting code, and they only really matter if you're maintaining a script written by a Perl hack (as opposed to Perl hacker).  
+  
+The big reasons I can think of that people have trouble grokking Perl as such (rather than any particular codebase) are a) references b) context sensitivity b) functional constructs.  
+  
+* As for references, well people have trouble understanding pointers too. All I can say is "get over it, it's just a phase." Understanding the concept of "something that stands for something else" in any of its forms is crucial to doing any non-trivial things.  
+* Context sentivity is pretty unique, and if you have trouble keeping interacting layers of things straight in your head, I admit they can cause surprises. Context issues have caught ''me'' out a couple of times; though for the most part context fits the way my brain works.  
+* Functional constructs, well, all I can say here is "get over it." Having understood and used them, I balk every time I find myself in a language where I have to make do without. But you said you know several functional languages, so those can't be your problem.  
+  
+Then again, since you've basically just said "Perl sucks, I can't read it," I can't say much more than this either.  
+  
+--AristotlePagaltzis  
  
 ---- 
  
 !!! AristotlePagaltzis and his soapbox 
@@ -136,5 +154,5 @@
 [2] I think a similar, pleasant feeling of busyness while coding explains some of the popularity of [C]. "I'm doing lots of work, I must be getting a lot done. Right?" 
  
 [3] I claim that arbitrarily-nested compound data structures (lists, dictionaries/hashes and all possible nestings) are simple things. Any book on Scheme will cover them in the earliest of chapters. 
  
-[4] When I say "work right the first time" I usually mean syntactically or semantically, not algorithmically or without bugs. But there have been those times when even a complex algorithm I wrote worked the first time: it happens sometimes in Python and frighteningly often in Haskell (or OCaml). And while I'm talking about Haskell, the best thing is that it DOES change the way I think, giving me newer and better and higher ways to things (I didn't even really know were possible to do!) that you really CAN'T do in Perl, despite the big-time claim that Perl let's you do anything you want, even unintended things. 
+[4] When I say "work right the first time" I usually mean syntactically or semantically, not algorithmically or without bugs. But there have been those times when even a complex algorithm I wrote worked the first time: it happens sometimes in Python and frighteningly often in Haskell (or OCaml). And while I'm talking about Haskell, the best thing is that it DOES change the way I think, giving me newer and better and higher ways to things (I didn't even really know were possible to do!) that you really CAN'T do in Perl, despite the big-time claim that Perl let's you do anything you want, even unintended things. %%% ''[Disagree. | http://hop.perl.plover.com/] Also, I have this exact experience with Perl; I think of something, and the first time I write it down, it works. Syntactically, always; in terms of logic, about 80% of the time. Maybe that's why I am so fond of the language and why you are not. --AristotlePagaltzis''