Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

What's bad about Python?

Name: Anonymous 2005-12-21 8:09

Because I'm learning it, almost done through the tutorial, and it looks great.

Name: Anonymous 2006-02-04 7:13

>>40
I wasn't referring to Zope, although Zope has a mean hump for a learning curve. Zope3 is decently commented in many parts. I was referring to the third-party programs, some of them fairly major. You've heard of Mailman, I presume?

Talking about zope3, did you know that many of the books that are written about it are out of date? Even the ones published just one year ago? It's really fucking annoying wondering why your code doesn't work, to then copy the code straight out of the book and discover that you're not wrong; it's the book.

Name: Anonymous 2006-02-04 13:42

>>37
In general, I find Python is verbose compared to the other scripting languages. It's like the Java of the scripting world: fast (yet with as a long start-up time compared to others), verbose, not pretty, has comprehensive libraries, and with language features made to scale.

It's indeed verbose and I wouldn't use it for quick scripting (I use PHP CLI and Perl for that), but I would use it for applications and prototypes. It's definitely prettier than Java, and way prettier than Perl too. I don't have experience with its libraries, but I hope they won't be overengineered to the point of being useless as Java's.

>>38
Perhaps you'd prefer columns of statements
Look: http://ntsecurity.nu/toolbox/shellcode/win32socketshell.asm

>>39
What I'd like is sane commenting. You know, a comment that indicates what each paragraph of code does. That way I don't need to get into the minutiae in order to have a general understanding of what is going on.
I agree with this too

>>40
Yeah, for what I've heard, Zope sucks. I'll be sure to stay away from it.

Name: Anonymous 2006-02-04 18:08

I hope they won't be overengineered to the point of being useless as Java's.

Ah, Java. I hate that language.

No matter what gripes I have about Python, it's way better than Java. The libraries don't feel overengineered, and you don't need to jump through ten hoops to get something simple done. Even not-simple things are often simple in Python.

And then of course there is the object model. Message passing >>> static class hierarchies.

Name: Anonymous 2009-01-14 5:08

Python is slow,bloated,FIOC and its bad OOP

Name: Anonymous 2009-03-06 12:16


It which is what women do It   is move a   count into e   cx and proceed   cautiously with care   and attention to   what letters would   by typed by   that series of   prelude short scenarios.

Name: Anonymous 2011-02-03 3:14

Name: Anonymous 2011-07-19 19:46

I love >>1-43 consist of intelligent, well thought-out discussion, three years pass, then >>44

lol FIOC

And it pretty much turns to shit from there.

I guess /prog/ used to be good. Oh well.

Name: Anonymous 2011-07-19 20:08

What's bad about Python?

Python is, on average, 35 times slower than equivalent C/C++ code, as much as 150 times slower for certain tasks on single-threaded problems. It get's worse with concurrency, where on threaded benchmarks running on quad-core machines, it can be as much as 450 times slower. The CPython implementation (the main canonical implementation of Python) has no thread-scalability except with asynchronous I/O, due to the global interpreter lock.

http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php

Name: Anonymous 2011-07-19 20:15

>>49
That's CPython's fault (and by extension, that of its partly braindead designer).  But yes, CPython's performance and lack of proper multithreading are sickening.  Let's not even mention the retarded GC.

Name: Anonymous 2011-07-19 20:19

Python has too many non-orthogonal features. Principally is dictionaries and objects. Why have both? It's object model is silly: why have both types and duck-typing? What the fuck is that for? It's as if all its used for is isInstance and friends, since the way Python does inheritance, it's easy to do just as well with functions that insert methods into dictionaries. If it's just gonna hash a string anyway, then why bother carrying around a type? This isn't CLOS for fuck's sake -- it's not actually dispatching methods on types.

I also don't like the relationship between Python's syntax and semantics. Little things like the way generators work (put this keyword here and it drastically changes the meaning of the surrounding code!) and the way self is magically passed to methods and the way class bodies are pseudo-closures but not really.

Speaking of generators: fuck em! they are coroutine's retarded cousin, which are continuation's retarded brother.

I also don't like the gimped anonymous functions. the fuck is that.

I also don't like auto-local scope and the "nonlocal" keyword or whatever that nonsense is. Just have lexical scope like JavaScript and Lua, fuck.

In general I don't like the syntax. Big single-liners that can't be broken up are annoying. Why is there ":" in the syntax if it almost always has a newline after it?


There are things I like about Python, but not enough to make me want to use it for anything.

tl;dr: if it ain't Lisp, it's crap.

Name: Anonymous 2011-07-19 20:31

Python is poorly designed and has no excuse.

Name: Anonymous 2011-07-19 20:37

>>51
tl;dr: if it ain't Lisp, it's crap.
What if it's Scala or Haskell?

Name: Anonymous 2011-07-19 20:52

>>51
they are coroutine's retarded cousin, which are continuation's retarded brother.
Continuations that aren't limited to one shot often result in excessive stack copying (because even if it already fired, you still have to keep around a clean copy of the entire fucking stack in case someone decides to fire it again). You don't want that now, do you?

I agree with everything else in your post, except for
tl;dr: if it ain't Lisp, it's crap.
Will you please fuck off and die already you piece of shit spammer.

Name: Anonymous 2011-07-19 21:38

python is __ugly__. I would rather use Lua or Ruby.

Name: Anonymous 2011-07-19 22:56

>>54
u mad

Name: Anonymous 2011-07-19 23:02

>>34
What, have you've tied your identity so much to your favorite language you can't bear to hear criticism? It's just a language.
Programmers do this with everything.  I don't understand why.

Name: Anonymous 2011-07-19 23:21

>>54
Will you please fuck off and die already you piece of shit spammer.

If it ain't a joke, you're getting it.

Name: Anonymous 2011-07-19 23:40

>>51
Principally is dictionaries and objects. Why have both?
JS got that right.
I also don't like the gimped anonymous functions. the fuck is that.
That also breaks the ``def f(...1): ...2 is sugar for f = lambda ...1: ...2'', which simplifies the language and the implementation.

>>54
Continuations that aren't limited to one shot often result in excessive stack copying (because even if it already fired, you still have to keep around a clean copy of the entire fucking stack in case someone decides to fire it again). You don't want that now, do you?
That's one way to implement them. There are better ways, and delimited continuations can be less expensive to implement because it just partially copies ``the stack'', and they're more expressive than undelimited continuations.

Name: Anonymous 2011-07-20 1:11

If you're using Python, you're using shit.

Name: Anonymous 2011-07-20 2:58

FORCED INSERTION OF COCK anyone?

Name: Anonymous 2011-07-20 3:04

I'm going to rip your dick off and rape everybody in your family with it.

Name: Anonymous 2011-07-20 3:05

I'm going to rip your dick off and rape everybody in your family with it.

Name: Anonymous 2011-07-20 3:05

I'm going to rip your dick off and rape everybody in your family with it.

Name: Anonymous 2011-07-20 3:05

I'm going to rip your dick off and rape everybody in your family with it.

Name: Anonymous 2011-07-20 3:05

I'm going to rip your dick off and rape everybody in your family with it.

Name: Anonymous 2011-07-20 5:07

>>59
Ooh, very interesting.  I wonder how far one can go in implementing control flow (and exception handling) using only delimited exceptions.

Name: Anonymous 2011-07-20 6:20

>>49-67

still shit

Name: Anonymous 2011-07-20 6:46

>>68 is still a huge fag

Name: Anonymous 2011-07-20 7:00

NASA uses Python faggots.

Name: Anonymous 2011-07-20 7:30

>>70
Yes, it uses Python faggots.

Name: Anonymous 2011-07-20 7:35

Homosexuals use Lisp faggots.

Name: Anonymous 2011-07-20 7:50

>>67
You can do pretty much everything with them: generators, resumable exceptions, dynamic state, zippers, threads, ...

See also: http://okmij.org/ftp/continuations/undelimited.html#delim-vs-undelim

Name: >>67 2011-07-20 8:29

The last word of my post should be ``continuations''. Damn.

>>73
Would you mind explaining what ``zippers'' are to an idiot who knows C, Javascript, Lua, Pascal, and Python?

Name: Anonymous 2011-07-20 8:32

>>34
Emile Juanita impeccable compartment confer. Chlorine deodorant mung dobson... Naivete Herr Jan Waldo flippant ratify?

Name: Anonymous 2011-07-20 8:47

Winch arbitrate emolument.

Name: Anonymous 2011-07-20 8:55

Squishy Brownian hologram aqueous fritillary sensible apocalyptic.

Name: Anonymous 2011-07-20 9:04

Colombia salivate killdeer veneer couldn't primate detriment problem mudsling!

Name: Anonymous 2011-07-20 9:10

Nathaniel trainmen bartend Honda spheroid veridic Taurus grab. Similitude gallonage runneth caddy barricade Cumberland.

Name: Anonymous 2011-07-20 9:47

>>74
Basically, they're a cursor (or iterator) of a traversable data structure that lets you change the nodes in a purely functional way.
They're useful for obvious reasons when you have to move around in a complex tree-like data structure, like a representation of a file system (see ZipperFS, you also get transactions for free)

Example implementation using delimited continuations:

;; version of `map' that shares as much state as it can with the original list.
(define (map/share f xs)
  (if (null? xs) xs
      (let ((a (car xs))
            (d (cdr xs)))
        (let ((a1 (f a))
              (d1 (map/share f d)))
          (if (and (eq? a a1) (eq? d d1)) xs
              (cons a1 d1))))))

(struct zipper (cont value))

(define (list->zipper xs)
  (reset (map/share (lambda (x)
                      (let-values (((change-node? new-val)
                                    (shift k (zipper k x))))
                        (if change-node? new-val x)))
                    xs)))

(define (zipper-next z)
  ((zipper-cont z) #f #f))
(define (zipper-set z x)
  ((zipper-cont z) #t x))

(define (zipper-unzip z)
  (if (zipper? z) (zipper-unzip (zipper-next z)) z))

(define lst '(1 2 3 4 5 6 7 8 9))
(define z (list->zipper lst))

(let* ((z (zipper-next z)) ; go to the second node.
       (z (zipper-set z 10))  ; set it to 10.
       (z (zipper-set z 100)) ; and set the third node to 100.
       (xs (zipper-unzip z))) ; we're done, get the list.
  (values xs           ; '(1 10 100 4 5 6 7 8 9)
          lst          ; '(1 2 3 4 5 6 7 8 9)
          (eq? xs lst) ; #f
          (eq? (cdddr xs)
               (cdddr lst)) ; #t, these nodes are shared with the original list
          ))

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List