Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Interviews: Guido van Rossum Answers Your Questions

samzenpus posted about a year ago | from the listen-up dept.

Python 169

Last week you had a chance to ask Guido van Rossum, Python's BDFL (Benevolent Dictator For Life), about all things Python and his move to Dropbox. Guido wasted no time answering your questions and you'll find his responses below.From Google to Dropbox
by nurhussein

Hi, What prompted the move from Google to Dropbox? What did you do at Google, and what are you going to do at Dropbox?

Guido: After seven years at Google I was just ready for some change in environment, and then the Dropbox offer came along. At a high level, my job hasn't changed much: I still

- spend 50% of my time on whatever I want to do for Python in my BDFL role
- am a regular engineer in the organization (not a manager or even TL)
- do a lot of code reviews, architecture and design work
- handle a lot of email
- do a lot of actual coding for my job, in Python

The specifics differ of course. I really did only two things at Google: the first two years I worked on one of the first online code review tools Mondrian, which itself was never open-sourced but begat Rietveld, which did, and is used amongst others, by the Python, Go and Chromium communities. After that I joined Google App Engine where I did a lot of different things, almost all of them in Python. My last big project there was a new Python database API, NDB.

I've been at Dropbox for 7 months and my main project has been the design of the Dropbox Datastore API . It's ironic but not my fault that this also uses the "datastore" moniker -- there's little overlap between Dropbox Datastores and the Google App Engine Datastore.

What's even more ironic is that even though I did much of the design, and wrote two prototypes in Python, the SDKs we released last month only support Java, Objective-C and JavaScript. But I am working on a fix, this interview is just slowing me down. :-)



Why did Python avoid some common "OO" idioms?
by i_ate_god

Interfaces, abstract classes, private members, etc... Why did python avoid all this?

Guido: I can think of two reasons: (a) you don't really need them, and (b) they are hard to do if you have no compile-time type checking. Python started out as a skunkworks project (not endorsed or encouraged by management but not actively prevented), and I wanted results quickly. This led me to remove features that weren't actually needed or urgent; it also led me to do all type checking at run time, which gave me natural constraints on what features Python could support. I also had no religious OO ax to grind -- I just wanted an easy language, and it became OO more or less by accident.

In modern Python there are rough equivalents for all of these, but they don't necessarily work all that well, or they cause a lot of execution overhead, so they are often avoided, but they have their uses and their fans.



functional programming
by ebno-10db

Some people claim that Python is, at least partly, a functional language. You disagree, as do I. Simply having a few map and filter type functions does not make for a functional language. As I understand it those functions were added to the libraries by a homesick Lisper, and that several times you've been tempted to eliminate them. In general it seems you're not a fan of functional programming, at least for Python.

Question: do you feel that the functional programming approach is not very useful in general, or simply that it's not appropriate for Python? It would be nice to hear your reasons either way.


Guido: I'm not a fan of religiously taking some idea to the extreme, and I try to be pragmatic in my design choices (but not *too* pragmatic, see the start of this sentence :-). I value readability and usefulness for real code. There are some places where map() and filter() make sense, and for other places Python has list comprehensions. I ended up hating reduce() because it was almost exclusively used (a) to implement sum(), or (b) to write unreadable code. So we added builtin sum() at the same time we demoted reduce() from a builtin to something in functools (which is a dumping ground for stuff I don't really care about :-).

If I think of functional programming, I mostly think of languages that have incredibly powerful compilers, like Haskell. For such a compiler, the functional paradigm is useful because it opens up a vast array of possible transformations, including parallelization. But Python's compiler has no idea what your code means, and that's useful too. So, mostly I don't think it makes much sense to try to add "functional" primitives to Python, because the reason those primitives work well in functional languages don't apply to Python, and they make the code pretty unreadable for people who aren't used to functional languages (which means most programmers).

I also don't think that the current crop of functional languages is ready for mainstream. Admittedly I don't know much about the field besides Haskell, but any language *less* popular than Haskell surely has very little practical value, and I haven't heard of functional languages *more* popular than Haskell. As for Haskell, I think it's a great proving ground for all sorts of ideas about compiler technology, but I think its "purity" will always remain in the way of adoption. Having to come to grips with Monads just isn't worth it for most people.

(A similar comment applies to Scala. It may be the best you can do trying to combine functional and OO paradigms in one language, but the result isn't all that easy to use unless you're really smart.)



Multi-line lambdas
by NeverWorker1

One of the most common complaints about Python is the limitations of its lambdas, namely being one line only without the ability to do assignments. Obviously, Python's whitespace treatment is a major part of that (and, IIRC, I've read comments from you to that effect). I've spent quite a bit of time thinking about possible syntax for a multi-line lambda, and the best I've come up with is trying to shoehorn some unused (or little used) symbol into a C-style curly brace, but that's messy at best. Is there a better way, and do you see this functionality ever being added?

Guido: Really? I almost never hear that complaint except from people who submit questions to Slashdot interviews. :-)

There is indeed a better way, and that is using the 'def' keyword to define a regular function in a local scope. The defined function object becomes a local variable that has exactly the same semantics as a lambda except that it is bound to a local variable, and it doesn't have any of the syntactic constraints. For example, there is *no* semantic difference between

def make_adder(n):
__def adder(x):
____return x + n
__return adder

and this equivalent using lambda:

def make_adder(n):
__return lambda x: x + n

(except that when you introspect the lambda asking for its name, it will say '' instead of 'adder').

Andrew Koenig once pointed out to me that there's one pattern where lambdas are really much more convenient, and that is if you have a long list or dict (perhaps some kind of switching definition) containing lots of lambdas, since if you wanted to do that without lambda you'd end up first having to define lots of little functions, giving them all names, and then referencing them all by name from inside the list or dict. But in that pattern the lambdas are usually simple enough to be lambdas, and if you have a few exceptions, using 'def' before starting the list or dict is a fine compromise.



PyPy
by Btrot69

Do you see PyPy as the future? Or do you remain unconvinced, and -- if so -- why ?

Guido: I'm still unconvinced, for two reasons: (a) they don't support Python 3 (well) yet, and (b) there are lots of extension modules (both third party and in the standard library) that they don't support well. But I hope they'll fix those issues. I think it's competition from projects like PyPy, Jython and IronPython that keeps the CPython project honest and on its toes.



Python in the browser ?
by Btrot69

Over the years, there have been several attempts to create a sandboxed version of python that will safely run in a web browser.Mostly this was because of problems with Javascript. Now that Javascript works -- and we have nice things like CoffeeScript -- is it time to give up on python in the browser ?

Guido: I gave up on it in 1995, so yes. And please don't try to compile Python to JavaScript. The semantics are so different that you end up writing most of a Python runtime in JavaScript, which slows things down too much. (CoffeScript's strength is that it is designed to map cleanly to JavaScript, and the two are now co-evolving to make the mapping even cleaner.)



Python 3
by MetalliQaZ

How do you feel about the current state of the migration to Python 3 (Py3k)? From a user perspective it seems that the conversion of popular libraries has lagged far behind, which has impeded the transition. In my professional capacity, nearly every single system I use lacks an installed 3.x interpreter. In fact, 2.7 is a rarity. I'd like to get your thoughts.

Guido: Curious where you work. I agree that Python 3 migration will still take a long time, but if your systems don't come with Python 2.7 they must be pretty ancient! When I left Google they were about done with the internal transition to Python 2.7 (having successfully migrated from 2.4 to 2.6 over the past few years) and here at Dropbox both the client and the server are using Python 2.7. Both companies are already thinking about Python 3 too.

Back to Python 3 migration, I am actually pretty optimistic. Lots of popular libraries have a working port or are working on one. (The Python Software Foundation also occasionally funds projects to port libraries that are widely used but don't have enough of a community to do a port.) It will take a long time, but I see a lot of progress, and in a few years I expect most new code will be written in Python 3. Totally eradicating Python 2 usage will probably take much longer, but then again, Windows XP isn't quite dead yet either. :-)



Key question for any language designer
by dkleinsc

Have the prospects of Python in any way improved since you grew a beard? To what degree does language success correlate to beard length?

Guido: It is absolutely essential. Just look at Perl's fate -- Larry Wall is just too clean-shaven. :-)

Sorry! There are no comments related to the filter you selected.

Rancid as a nigoola on a Sunday on the 4th of July (-1, Offtopic)

jpublic (3023069) | about a year ago | (#44677233)

Fellow Slashdotters, you have something I desire. Fellow Slashdotters, you have something I admire.

Enough of this charade. I want your rancid assholes and nothing else! My fetid, disease-ridden cock licks its filthy chops when I think about smooching the deepest reaches of your repugnant, feces-filled rectums! I can't wait to drill your smelly assholes! To make things even more exciting, my energetic tadpole friends and your feces will mix together to form rectum soup! I can't hold anymore! What say you?

BAHAHA!!! (-1)

Anonymous Coward | about a year ago | (#44677315)

For example, there is *no* semantic difference between

def make_adder(n):
def adder(x):
return x + n
return adder

and this equivalent using lambda:

def make_adder(n):
return lambda x: x + n

(except that when you introspect the lambda asking for its name, it will say '' instead of 'adder').

Thanks for the laugh, /.

Re:BAHAHA!!! (-1)

Anonymous Coward | about a year ago | (#44677333)

Well, leaving aside the fact that neither of them will compile because of lack of whitespace. Editors, you might want to think about when use of the <pre> tag is appropriate.

Re:BAHAHA!!! (1, Troll)

h4rr4r (612664) | about a year ago | (#44677365)

Or maybe someone should consider such silliness when they make a new language.

Re:BAHAHA!!! (-1, Troll)

jpublic (3023069) | about a year ago | (#44677389)

Something just licked its chops, and it was neither you nor me. Something fetid is afoot...

Re:BAHAHA!!! (1)

the_B0fh (208483) | about a year ago | (#44678865)

Someone should consider what a posting to slashdot would look like when they make a new language...?

Re:BAHAHA!!! (1)

h4rr4r (612664) | about a year ago | (#44679935)

Yeah, I was going for funny but I guess no one got that.

I dislike whitespace having meaning, but was just trying to make a joke. As you noticed the idea was ridiculous, thus the joke.

Re:BAHAHA!!! (1)

Billly Gates (198444) | about a year ago | (#44677425)

Well, leaving aside the fact that neither of them will compile because of lack of whitespace. Editors, you might want to think about when use of the <pre> tag is appropriate.

I still wish the parrot project took off and combined with Perl. Just imagine the poor joy using Lambda's combined with Perl and white spaces? Sounds like a pure paradise.

Re:BAHAHA!!! (1)

doti (966971) | about a year ago | (#44677779)

What is not appropriate is for a language to rely on whitespace.

Re:BAHAHA!!! (0)

Anonymous Coward | about a year ago | (#44677867)

Which is why python is dead to me.
I only tolerate makefiles because I must.

Whitespace in Python (1)

fyngyrz (762201) | about a year ago | (#44679481)

Luckily, both of your opinions on whitespace were not, and are not, either significant or involved in Python's design.

And that's why you two don't have to be dead to me. :)

Plus, you can keep working with whatever it is that you DO like. Imagine that!

Re:BAHAHA!!! (-1, Troll)

jpublic (3023069) | about a year ago | (#44677361)

What question did you just ask me? I'm fairly certain you asked me how I produced a sound that resembled the sound of someone licking his/her chops without actually doing that. The answer is quite simple, and I would normally answer your question in an expeditious manner, but your rancid asshole seems to be sucking my fetid friend in...

Re:BAHAHA!!! (0)

Anonymous Coward | about a year ago | (#44677631)

What makes the one line lambda worse is the fact that in Python, not everything is an expression.

That one change would clean up so much bullshit in the language.

Other than the redundant self's everywhere because he was stupid enough to not include lexical scoping early on.

It is a dumb OO language, at least as dumb as C++

Re:BAHAHA!!! (1)

Half-pint HAL (718102) | about a year ago | (#44680935)

What makes the one line lambda worse is the fact that in Python, not everything is an expression. That one change would clean up so much bullshit in the language.

Or perhaps it makes the one-line lambda better...? As per Guido's own example, lambda's are essentially redundant, as you can achieve the same results with a locally-defined function. The one real difference is that certain things aren't permitted in a lambda, because they're not expressions... which makes a lambda an approximation of a true function, rather than a procedure (Python's "functions" are in reality "procedures")....

Broaden your functional horizons, Guido! (3, Interesting)

EricTheGreen (223110) | about a year ago | (#44677433)

but any language *less* popular than Haskell surely has very little practical value, and I haven't heard of functional languages *more* popular than Haskell.

There is this language called Lisp. Might have heard of it before.

Erlang, also.

I understand the kiddies are feeling the Clojure love these days as well (although I suppose that just ends up categorized as a Lisp subset)

C'mon Guido, you're smarter than this...

Re:Broaden your functional horizons, Guido! (4, Insightful)

DuckDodgers (541817) | about a year ago | (#44677627)

If Lisp was going to take over the world, or even just be used in as much as 10% of the software created in any given year, it would have done it already. That, I think, is the entire reason why Clojure ( and before Clojure, Scheme and Racket, https://en.wikipedia.org/wiki/Racket_(programming_language) [wikipedia.org] , and since Clojure, Hy http://docs.hylang.org/en/latest/ [hylang.org] ) have been created - attempts to tweak the Lisp formula into something more palatable for the mainstream without losing any of the core features that make the language useful.

I wish Lisp and Clojure were more prevalent. Most of my work experience is with Java, and now that I've become comfortable with Lisp and Clojure in my spare time I'm chafing at the tools I have to use for work. There just aren't that many jobs around, at least outside Silicon Valley, that use either language. So I'm trying to do useful Clojure stuff in my spare time in order to have a portfolio I can show off for a Clojure shop.

But to your point, I think Guido is safe to dismiss Lisp - it's a spectacular functional language, it's one of the most well known functional languages, and at least in original and Common Lisp form it just can't get traction in the mainstream.

Re:Broaden your functional horizons, Guido! (1)

HiThere (15173) | about a year ago | (#44678199)

Lisp doesn't work well without a good IDE...and I don't count EMACS.

Racket would be ok. It has a decent IDE. But it doesn't do multi-processing, even though it has the appropriate language features.

I don't know Clojure well enough. The last time I tried it (over a year ago) the install instructions produced an only-partially-working result. This is probably NetBeans fault rather than Clojure, but I didn't follow this up. I never got as far as checking how it did on parallel processing.

Most Scheme's and most Lisps don't handle Unicode gracefully.

I've considered Lisp several times, and always found some reason, not always the same, why it was not satisfactory. Most of them weren't inherent in the language, but in the state of the libraries or of the development environment.

P.S.: For Python, Ruby, Vala, etc. I don't feel the need of an IDE. For Java one is highly desireable. For Lisp it's essential. This largely has to do with the state of the libraries and the documentation....but it also has to do with the size of the active namespace (and how familiar I am with it).

P.P.S.: If you're going to depend on a set of public libraries instead of an included set, they you had better verify them for quality. This is why Python's "batteries included" stance is so good. You can depend on the basic libraries. Ruby tries to handle this with Ruby gems. The quality isn't as good as Python, but it's pretty good, and it has wide coverage. Lisp....The public Lisp libraries often don't work as advertised. It appears as if anyone can add anything to the library collection without any quality control. D also has that problem. It's one of my favorite languages, but it's collection of libraries is abyssmal. Often they will only work with an old or new version, but the requirements aren't usually listed. Frequently they have dependencies that aren't listed.

Re:Broaden your functional horizons, Guido! (1)

DuckDodgers (541817) | about a year ago | (#44678571)

Maybe I was lucky, the first time I tried Clojure was within the past year and the installation worked flawlessly. My biggest problem with the language is that some error messages from simple mistakes (mis-aligned parenthesis, etc..) are obtuse - I consider that an obstacle to adoption of the language. I've acquired the patience to work past errors like that, even though they drive me bonkers for the first few weeks I'm learning a new language. But that kind of thing can and will make the difference between widespread adoption and fading to obscurity in the long term.

Once you do get comfortable with Clojure, the documentation search features right in the REPL are wonderful, so if you don't remember how to do a certain thing you can often find it quickly.

With regard to libraries, Clojure of course benefits from the fact that Java's standard library is rock solid. It's full of warts and odd inconsistencies, but it's reliable.

It's interesting that you mention D. It's one of the languages I spent some time learning when I began my "anything but Java" search, and I think the language itself is brilliant - definitely a huge evolutionary step forward from C++, in my humble opinion ahead of Google's Go language. But I hadn't realized the standard library was so weak, my exploration hadn't reached that far. That's a damn shame. Andrei Alexandrescu's "The D Programming Language" book is probably the best programming language book I've ever read.

Re:Broaden your functional horizons, Guido! (4, Insightful)

Anonymous Brave Guy (457657) | about a year ago | (#44680049)

If you're going to depend on a set of public libraries instead of an included set, they you had better verify them for quality. This is why Python's "batteries included" stance is so good. You can depend on the basic libraries.

Ironically, that's actually one of my biggest concerns about using Python. IME, the included batteries aren't very good, once you get past the first few parts of the library reference that everyone uses all the time. A lot of the later parts -- things like file and directory manipulation, data formats and compression tools, process control, networking, even some of the date/time functionality -- have elements that are horribly slow, platform-dependent, or simply too bug-ridden to trust in production.

It's unfortunate that package management in Python is such a mess, mostly for historical reasons. There's quite a bit of good stuff on PyPI these days, and if we were starting over, I think we'd do better to limit the standard library to a much smaller set of essential foundations, and to promote the best libraries from outside sources via the standardised package repository and tools.

Re:Broaden your functional horizons, Guido! (2)

ebno-10db (1459097) | about a year ago | (#44678215)

Even though I have mixed feelings about the Lisp family of languages, I wish they would become more popular. I've never been convinced that it's the One True Approach, but for some things they're great.

Unfortunately, much of the Lisp(s) community is the biggest enemy of the broader adoption of Lisp(s). Part of the problem is that one has to refer to Lisp(s) in the plural. Common Lisp is clearly the most powerful variant, but it's byzantine in its (unnecessary) complexity and redundant features, as well as still using a standard from 1985 (the later ANSI standard didn't change much). I understand that CL started as an attempt to unify various Lisp dialects, which explains its byzantine and redundant features. But that was 27 years ago! They could have moved towards deprecating parts of it. Allow it to compiled with a switch that says "accept deprecated", "warn on deprecated" or "forbid deprecated". The libraries also need some serious updating. 27 years ago people didn't expect networking and graphics in standard libraries, but times change. The usual rebuttal that there are many such libraries is part of the problem. Lisp is the ultimate in herding cats.

Scheme turns that around. It started as a "toy" language for teaching, but 30+ years still doesn't have standard features needed in a powerful language (e.g. a module system). R6RS tried to fix that, but was largely rejected by the implementers. R7RS is supposed to fix that, but we'll see. Meanwhile Racket (and other implementations) go off and do their own thing (albeit Racket has pragmas to enforce R5RS or R6RS compatibility).

Now along comes Clojure. I haven't even looked at it because my reaction is that the last thing the world needs is YALV (Yet Another Lisp Variant). Undoubtedly Clojure fans will tell me what's newer and betterer about it, but it's still YALV.

Lastly there's the attitude of a small but vocal minority of Lispers who believe Lisp(s) are the One True Approach, are condescending towards anyone who doesn't accept that as an article of faith, and argue that every drawback of Lisp(s) is actually an advantage that lesser programmers don't appreciate. If their goal is to keep Lisp(s) a niche language used only by the self-proclaimed cognoscenti, they're doing a damn good job of it.

Re:Broaden your functional horizons, Guido! (1)

DuckDodgers (541817) | about a year ago | (#44678835)

I'm a Clojure fan, sorry. :) Clojure offers many things, but I think the three most important features it adds to the standard Lisp strengths are:
1. Variables are immutable by default, though there are mechanisms for traditional mutable variables you have one extra step to use them. That makes it easier to reason about your code, without forcing every variable to be immutable like Haskell.
2. It's interoperable with Java, so aside from the relatively small Clojure standard library your extended "standard library" is the Java standard library. Plus of course you can use any of the tens of thousands of other existing Java libraries. That of course also provides Clojure with a single solution to the standard libraries question - under the hood you use java.net for networking, java.io and java.nio for IO, etc...
3. It's interoperable with Java, so the learning curve for developers and the adoption curve for tens of thousands of existing companies is much more straightforward than bringing in another Lisp dialect that's only compatible with C++, C#, Perl, Ruby, Java, etc... by using foreign function interfaces.

I think your point about multiple conflicting implementations and disputes between them is insightful. I do think that's the reason Clojure may have a better chance at mainstream adoption than any other Lisp dialect of the past 20 years.

Re:Broaden your functional horizons, Guido! (1)

ebno-10db (1459097) | about a year ago | (#44678937)

I agree points 2 and 3 are important. As for point 1, I didn't say that Clojure was a bad language (I don't even know it), just that it was YALV. Even if it's superior to other Lisp(s), it's still another step in the balkanization that has helped keep Lisp(s) in a niche.

Having many standards is the same as having no standard, and often even a mediocre standard is better than no standard at all.

Re:Broaden your functional horizons, Guido! (2)

DuckDodgers (541817) | about a year ago | (#44679193)

Right. But nobody in the Lisp community has the authority to fix the situation - and as you noted, the community is full of people who are opposed to any such fix, so the chances of someone entering the community to fix it is small.

So the best possible solution, weak though it may be, is to create something new that just borrows strengths from Lisp but is intentionally different. Clojure is that kind of attempt at a fresh start, and it breaks some Lisp syntax (using square brackets in some cases) and intentionally does not have compatibility with the Common Lisp standard. Maybe that's more balkanization, but maybe these intentionally more different offshoots have a chance to succeed when the dialects that are closer to each other have failed.

If you read articles on Lisp dialects on Github, the sad news is that Emacs Lisp configuration files are the most popular Lisp variant. That's great for fans of Emacs, not so great for people who want to see Lisp widely adopted. Outside of those files, the two most popular Lisp dialects are Clojure and Racket - which I believe are the two versions of Lisp that are furthest from the Lisp core family.

Armed Bear Common Lisp is a full Lisp implementation on the JVM. To my knowledge its popularity is miniscule. Clojure is newer, not a standard Lisp, and it's used hundreds of times as often.

Re:Broaden your functional horizons, Guido! (0)

Anonymous Coward | about a year ago | (#44678235)

It sounds like you're equating "traction in the mainstream" or "used in as much as 10% of the software created in any given year" with Guido's "very little practical value."

I think that's nutty. Practical value and mainstream acceptance don't correlate much. There are impractical things in the mainstream, and practical things outside of it.

Re:Broaden your functional horizons, Guido! (2)

DuckDodgers (541817) | about a year ago | (#44678465)

Then you and I are using different criteria to measure practicality - though I suspect my criteria line up more closely with Guido's criteria than yours.

No matter how effective a tool is, if it's not in mainstream use that's a significant mark against its practicality. Four decent Lisp developers might be able to build a particular piece of business software faster and with fewer errors than fifteen decent Python developers - but if I can't find four decent Lisp developers in the local market, I'm still going to pick Python when I start the project.

Re:Broaden your functional horizons, Guido! (1)

Half-pint HAL (718102) | about a year ago | (#44681023)

It sounds like you're equating "traction in the mainstream" or "used in as much as 10% of the software created in any given year" with Guido's "very little practical value."

I think that's nutty. Practical value and mainstream acceptance don't correlate much. There are impractical things in the mainstream, and practical things outside of it.

No, he's just using a different sense on the word "practical" from the one you're thinking of. You're thinking "practicality", as in "facilty, ease-of-use, utility and efficiency." Guido, on the other hand means "in practice, in the status quo". It's of little value in the real world if the work isn't there.

Re:Broaden your functional horizons, Guido! (2)

phantomfive (622387) | about a year ago | (#44677727)

FWIW Lisp isn't a functional programming language; it has functional parts, but it's a multi-paradigmatic language that includes object oriented programming. So yeah, it can be used like that, but modern Lisp is much, much more.

Incidentally, currently my favorite part of Lisp that I wish was in other languages is the way the variable binding allows for easy dependency injection, even in places where it wasn't originally designed that way. It makes unit testing a lot easier.

Re:Broaden your functional horizons, Guido! (-1)

Anonymous Coward | about a year ago | (#44677767)

No he is not smarter than that. He is a rank amateur

Why so many people waste their time using a gimped language like Python is a mystery to me.

Technically, Lisp is not a functional language, it is completely paradigm agnostic and can use it in any manner you wish.

Re:Broaden your functional horizons, Guido! (1)

Anonymous Coward | about a year ago | (#44677907)

Guido, you're smarter than this...

No, he isn't.
If he was, Python would not rely on whitespace for scoping.

Re:Broaden your functional horizons, Guido! (1)

BasilBrush (643681) | about a year ago | (#44680541)

Actually, if other language designers were smarter, other languages would use indenting for blocks.* Eliminating redundancy is a general aim in computing. Languages that use curly brackets or other delimiters for blocks are unreadable unless they also use indenting. And once you have the redundancy of both delimiters AND whitespace you have the danger that the two may not be in agreement. Which is compounded by the one that the compiler relies on (delimiters) not being the same as the one that stands out most to the human (indenting.)

Using indents for blocks has a drawback in that standard text editors aren't good at matching the indent level when cutting and pasting. But that simply means that only Python aware editors should be used for python code. Not difficult when most programmers use IDEs.

* (Which is what you actually mean. Scope relies on more than whitespace.)

Re:Broaden your functional horizons, Guido! (0)

Anonymous Coward | about a year ago | (#44677951)

eh, the functional guys scream and yell when you call lisp or erlang functional. I mean, they have side effects! No, you have to program in lambda calculus or some other gimped language that's not actually capable of doing anything useful.

Re:Broaden your functional horizons, Guido! (0)

Anonymous Coward | about a year ago | (#44678325)

Umm...and JavaScript.

It has first-class functions and closures, so it meets at least the minimum definition of functional. Though I might buy an argument that it's more of an abomination than a language. Still, there's no denying that it's more popular than Haskell.

Also, Scala is more popular than Haskell too.

Re:Broaden your functional horizons, Guido! (1)

angel'o'sphere (80593) | about a year ago | (#44679155)

Lips is a multi paradigm language, you hardly can call it functional. (Hint: is Lisp more popular than Haskel anyway?)
Erlang certainly is far less used than Haskel, so his point is very valid.

Benevolent Dictator For Life (-1, Flamebait)

Anonymous Coward | about a year ago | (#44677443)

Isn't that like giving someone a Nobel Peace Prize before they've even taken the job for which they are awarded the prize? Who says he'll be benevolent in the future?

Re:Benevolent Dictator For Life (0)

Anonymous Coward | about a year ago | (#44677805)

No, you knob: it's a Monty Python reference, like the language itself.

Re:Benevolent Dictator For Life (0)

Anonymous Coward | about a year ago | (#44678255)

I think "Benevolent Dictator For Life" is based on his love for the BBC show "Monty Python's Fying circus". Rossum named "python" after that.

I personally, don't recall any skit about a "Benevolent Dictator For Life". Does any one else?

He did answer one question (2, Funny)

buchner.johannes (1139593) | about a year ago | (#44677487)

He did answer one question once and for all. The smiley closes the bracket.
https://xkcd.com/541/ [xkcd.com] All hail the BDFL

Summary (0)

zepo1a (958353) | about a year ago | (#44677515)

"Guido wasted not time answering your questions and you'll find his responses below."

Just like editor wasted not time editing/checking the summary before posting.

Zep--

Re:Summary (1)

M. Baranczak (726671) | about a year ago | (#44677807)

"Wasted not" is synonymous with "did not waste". It sounds pretentiously archaic, but it is correct. On the other hand, borking up the whitespace in a Python code sample? That ain't OK at all.

Re:Summary (1)

fahrbot-bot (874524) | about a year ago | (#44677965)

On the other hand, borking up the whitespace in a Python code sample? That ain't OK at all.

Which is borked with respect to the whitespace, the example or Python? Obviously both and I submit that the latter enables the former which is why it's a horrible language "feature." [ Flame me if you want Python fans, but you know in your hearts I'm right. :-) ] [ And, *that*, Randall (https://xkcd.com/541/) is how you terminate a parenthetical with an emoticon :-) ]

Re:Summary (1)

M. Baranczak (726671) | about a year ago | (#44678105)

Both, of course.

My point was that removing indents is never OK, with any language, since it makes the code unreadable. In this case, it also made the code uncompilable, but that's just a secondary offense.

Re:Summary (1)

rwa2 (4391) | about a year ago | (#44679579)

This. Though I have to admit, I've often been tempted to insert meaningful whitespace [wikipedia.org] in there.

Maybe someday when I submit to the temptation to play with https://github.com/mame/quine-relay [github.com]

Re:Summary (1)

RoccamOccam (953524) | about a year ago | (#44679015)

Flamebait, but I'll bite.

The thing that got me interested in Python at the very beginning was its use of whitespace. So no, in my heart, I don't think you are right (I was a big fan of Occam). For me, it is clearly the way a programming language should be designed. I understand that it doesn't suit others; but, interestingly, that feature is one of the key (and overlooked) reasons why Python has become so prevalent.

There is clearly a (sufficiently) large subset of the programming community that strongly prefer whitespace scoping. And for those people, what are the other mainstream choices? Personally, I don't know of any (although, I'm sure that there are a few). And new language designers are less likely to follow Python's lead because of outspoken critics, like you.

Because of that, I believe that Python has a more loyal core group of supporters that are less likely to abandon it when the latest hotness comes out.

With a stronger base than most languages, Python is less likely to experience the dramatic momentum losses of more conventional languages. And it will continue to grow its community, as once-reluctant whitespace converts are picked up and other languages are less attractive to them, from then on.

Re:Summary (0)

Anonymous Coward | about a year ago | (#44679065)

The lambda's name was also lost because it happens to contain angle brackets. Is this the fault of Python?

What about Perl, where angle brackets are used for reading from a filehandle? Or just the right combination of arithmetic comparison and heredocs and shell redirection to trip an HTML parser? Is it the fault of all those languages for not designing themselves to be easily pasted into a markup language with no escaping?

Re:Summary (2)

ebno-10db (1459097) | about a year ago | (#44678337)

borking up the whitespace in a Python code sample? That ain't OK at all.

It may have to do with a sloppy HTML conversion by Slashdot or something, but it is ironic.

P.S. I'm actually a fan of the Python/Haskell whitespace approach.

whitespace (2, Interesting)

photonic (584757) | about a year ago | (#44677561)

I know about all the religious arguments pro or against whitespace as syntax. Personally, I am a happy user of python and I actually like the forced indentation, YMMV. But please slashdot, why do you screw up the indentation when the inventor of a whitespace-as-syntax-language gives a code example? This will be too easy for anyone arguing against the use whitespace of syntax.

Re:whitespace (5, Insightful)

Anonymous Coward | about a year ago | (#44677811)

What do you mean, too easy? That's exactly what's wrong with making indentation part of the syntax. It's too easy to break. It's only fitting that code given by the head honcho of Python falls victim to reformatting. It is literally his own fault.

Re:whitespace (4, Insightful)

Anonymous Coward | about a year ago | (#44677925)

I have found that everyone who complains about The Python Whitespace Thing are people who have convinced themselves that they are special little snowflakes and therefore any attempt to limit their creative output on whitespace use must be some kind of crime against humanity. Any time I get code in a free-whitespace language from someone like that, I need to run it through a code formatter before it's readable.

You are not special. Your unique ideas about how to indent code are not special, so fucking indent your code according to the standard. The fact that Python mandates proper indentation is a feature, not a bug. The fact that C lets you throw the whole program on one line is a bug, not a feature.

Re:whitespace (5, Insightful)

Anonymous Coward | about a year ago | (#44678317)

You can run my code through a code formatter if you don't like my choice of coding convention. You can not fix the broken code from the story by running it through a code formatter, because the inadvertent reformatting destroyed its meaning.

Re:whitespace (0)

Anonymous Coward | about a year ago | (#44679459)

Well, duh, it's Slashdot. They also posted a parody news article about Google's self-driving cars as fact. What exactly did you expect? I'm amazed that the site works at all.

Re:whitespace (1)

Anonymous Brave Guy (457657) | about a year ago | (#44680255)

You can run my code through a code formatter if you don't like my choice of coding convention.

Sure you can, as long as you promise to convert it back again perfectly before you commit, so anyone looking at the diffs later doesn't have to wade through 657 whitespace-related changes to spot the one line where you changes some behaviour.

Languages with syntactic whitespace are vulnerable to misrepresentation, but in practice 99% of that misrepresentation happens under exactly one condition: the code is being presented on a web page by someone who either doesn't know basic HTML or uses a crappy CMS that doesn't render proper HTML.

Re:whitespace (1)

rwa2 (4391) | about a year ago | (#44679681)

... also, they're probably butthurt from their python tweaks not compiling because they don't know how to configure their editor to replace tabs with [248] spaces

Re:whitespace (4, Insightful)

countach74 (2484150) | about a year ago | (#44677985)

I do a fair bit of programming in Python and curly-bracket languages (C, C++, JavaScript, PHP, etc.) and interestingly, a forgotten/misplaced curly bracket in any of those various curly-bracket languages seem to break my code vastly more often than indentation issues do. Your code should *always* be indented. Python whitespace should already be there in all of your code (minus an occasional tweak here and there). Why complain about having to write {} less frequently?

Re:whitespace (1)

You're All Wrong (573825) | about a year ago | (#44678093)

Because your code is more fragile to misrendering or mistransmission by Slashdot, and MS Exchange, and yahoogroups, and google groups, and ...

The answer to your question was in your parent post, did you not see it?

Re:whitespace (0)

Anonymous Coward | about a year ago | (#44678265)

You shouldn't be using Exchange for code. Or Slashdot.

Use a Markdown-supporting site if you must post it, otherwise do it right with Git/Mercurial/SVN and friends.

This is not a downside. It's cleaner and more readable without the curly-brace spam, not to mention less taxing from a repetitive stress standpoint.

Re:whitespace (1)

Anonymous Coward | about a year ago | (#44678531)

See, Guido is wrong again. Shouldn't have used Slashdot.

Re:whitespace (0)

Anonymous Coward | about a year ago | (#44678575)

I thought "You're holding^Wposting it wrong" was reserved for aloof CEOs of multibillion corporations, not plain old Python-loving ACs.

Re:whitespace (1)

rwa2 (4391) | about a year ago | (#44679821)

Slashdot is fine, though not ideal, for posting code stuff, since you have some HTML tags available, such as <pre> :

def make_adder(n):
    def adder(x):
        return x + n
    return adder

def make_adder(n):
    return lambda x: x + n

The full list of HTML that's not filtered out is supposedly somewhere on the http://slashdot.org/faq [slashdot.org] , but I can't find it right now.

Re:whitespace (1)

countach74 (2484150) | about a year ago | (#44679397)

As others have stated, use a proper means of code sharing. It's pretty terrible reading any language when all indentation white space is stripped from it. This is not a problem unique to Python (or other languages with significant white space). Just because the code in question can pass a syntax check does not mean that it is not easily misrendered or mistransmitted.

Re:whitespace (1)

AuMatar (183847) | about a year ago | (#44679923)

A website is a proper means of code sharing. If your language has issues with it, your language is broken and unusable. There is no excuse for not supporting the most popular method of idea exchange in the last 20 years.

Re:whitespace (1)

BasilBrush (643681) | about a year ago | (#44680765)

The fault here is the misuse of HTML, not the language with significant whitespace. After all, any other language would also lose it's indentation in such a situation, which is still not an acceptable representation of the code, regardless of whether it will compile. Code put on web pages are normally snippets used for learning from, not compiling from, and therefore loss of readability is the major problem, and affects all languages.

Note that Slashdot is also horrendously broken in many other formatting respects. It breaks HTML code far more than it does Python (in both cases, unless one takes significant effort and care to deal with the issue.)

Re:whitespace (1)

AuMatar (183847) | about a year ago | (#44679889)

Funny- I've lost weeks of my life tracking down python indentation errors, and I've only used it sporadically. I've used C and C like languages for almost 2 decades and I've lost maybe 2-3 days of my life total on missing }. It almost never happens, and never happens with a good IDE. Whereas spacing issues happen whenever you copy paste from a website.

Guido made 1 major mistake. It actually wasn't using whitespacing- it was in not forcing a specific amount of whitespace. If the language had enforced that every indent must be exactly 4 spaces, it wouldn't be an issue. The fact that 4 spaces or 3 spaces or a tab all work is what causes it to break horribly- to the point where I will no longer ever work on a Python program again. I'll tell my boss to find someone else to do it.

Re:whitespace (2)

tuffy (10202) | about a year ago | (#44680019)

Or you could've saved weeks of your life by running the pep8 tool [python.org] on your code, which will tell you all the lines that aren't indented by a multiple of 4, or which lines have tab characters in them, or any number of other formatting problems that aren't recommended by the style guide.

Re:whitespace (1)

BasilBrush (643681) | about a year ago | (#44680859)

Funny- I've lost weeks of my life tracking down python indentation errors, and I've only used it sporadically.

What's your problem? Are you perhaps trying to use a text editor that doesn't understand python for editing python code?

Whereas spacing issues happen whenever you copy paste from a website.

No it doesn't. Look at stack overflow for example. Any code there will copy'n'paste to a text editor with the indents intact. Any properly written website will be the same. And any website that specializes in coding should work properly in this respect. It's scandalous that slashdot still doesn't.

Note Slashdot breaks HTML code even worse than it does Python. (In both cases unless you make efforts to stop it from doing so.)

Re:whitespace (1)

BasilBrush (643681) | about a year ago | (#44680879)

Guido made 1 major mistake. It actually wasn't using whitespacing- it was in not forcing a specific amount of whitespace. If the language had enforced that every indent must be exactly 4 spaces, it wouldn't be an issue. The fact that 4 spaces or 3 spaces or a tab all work is what causes it to break horribly

That part I agree with.

Re:whitespace (1)

31eq (29480) | about a year ago | (#44679919)

This is a Python article! Of course somebody has to complain about whitespace! When did you ever know a Python article to not start an argument about whitespace?

Re:whitespace (0)

Anonymous Coward | about a year ago | (#44680669)

It's an article with a code example by Mr. Python himself, and it's broken because of misrendered whitespace. Snark all you want, but Alanis Morissette ought to be working on a rerecording of her biggest hit right about now.

Re:whitespace (1)

BasilBrush (643681) | about a year ago | (#44680889)

Indeed. It's a bit like the same as people starting iPhone articles with a complaint about the supposed patenting of rounded corners.

Re:whitespace (0)

Anonymous Coward | about a year ago | (#44679981)

It should *always* be indented, curtesy of your editor, according to your instructions via curly brackets :p

Re:whitespace (1)

phantomfive (622387) | about a year ago | (#44680827)

I do a fair bit of programming in Python and curly-bracket languages (C, C++, JavaScript, PHP, etc.) and interestingly, a forgotten/misplaced curly bracket in any of those various curly-bracket languages seem to break my code vastly more often than indentation issues do.

How often does that really happen? Because it's been a long time since I've had a problem with curly brackets. Or with indentation, for that matter. Is either one worth worrying about? Arguing about the topic is silly.

There are multiple solutions to the problem of 'block delineation,' and both of these work fine.

Re:whitespace (0)

Anonymous Coward | about a year ago | (#44679107)

Code breaks when parts of it are blindly deleted. News at 11.

Do you also bitch about shell, Perl, Ruby, et al. for making frequent use of a left angle bracket followed by a word? Because that'll break if you paste it as literal HTML too, and in a much less obvious way.

Re:whitespace (0)

Anonymous Coward | about a year ago | (#44679291)

Yeah, if only he'd seen this coming! It was so obvious, what with the popularity of HTML back when Python 1.0 was released, in January 1994, almost two years before the first standard spec of HTML was blessed in November 1995.

Some people just have no foresight whatsoever.

face it, it *does* cause problems (0)

Anonymous Coward | about a year ago | (#44677977)

Although on the whole I think using whitespace to define blocks works very well, and I use python quite a lot, I think optional braces would be extremely useful at times. i.e. for copying and pasting code fragments. Python code is absolute pain in the butt to copy and paste to/from browsers, repl, etc.

But braces are clearly against Guido's religion.

Re:face it, it *does* cause problems (1)

phantomfive (622387) | about a year ago | (#44678577)

It's like the brace war.......it's silly because you should be able to handle braces at the end of a line, or on a new line. It's not like either one is very hard, so just do it.

Same with space. Personally I don't prefer it, but it's just syntax. There are a hundred other things that are more important about a programming language than block delineation.

Re:face it, it *does* cause problems (1)

MetalliQaZ (539913) | about a year ago | (#44678595)

With the broken indentation, would braces really have made it any easier to read? Barely.

Whether it was C code, bash, or Lisp, the editors should have used CODE blocks. That's the problem, not Python.

Re:face it, it *does* cause problems (0)

Anonymous Coward | about a year ago | (#44680057)

not much easier to read, but correct, and easier to fix

sure, there are ways around it, but it's enough of an obstacle to be annoying, and it means python is useless for one-liners

Re:face it, it *does* cause problems (1)

TopherC (412335) | about a year ago | (#44678745)

I find that copy and paste in Python is very easy to do in any editor that lets you block indent (most do). I've also seen lots of C++ and Java recently that have been cut & pasted with little regard to indentation which makes reading it misleading to say the least. I'm not saying that one syntax (with curly braces or without) is better than another, but curly braces are no panacea. I've uncovered a LOT of bugs in C++ caused by cut & paste with sloppy and wrong attempts to re-balance the braces. I've also found Python bugs caused by wrong indentations, often caused by letting an editor run wild with auto-indent -- you can do that in bracey languages so Python runs a little counter to that habit. Also for Python if sections of code at some indentation level get way too long, then there's probably a more readable way to break that code down.

I've been working on an Android project for the past couple years, using Python for test automation, C for the kernel and drivers of course, C and C++ for low-level Android OS stuff and native libraries, and Java for upper layers (internals and apps). Whitespace in the C-like languages is inconsistent across the board, sometimes even within a file. Tab widths and tab/space usage are different for each developer (and their "style periods"). We cannot enforce a corporate policy in whitespace because we get so much (99.9%) of the code from open source and other suppliers. But thanks to PEP 8, Python code from multiple sources all looks pretty much the same and you don't have to invest time customizing your editor to use one style for files from one subtree, change formatting on the fly, etc.

I should mention that where Python has Guido, The Linux kernel has Linus and his style guide. I find even local kernel module code is consistent style-wise. But outside of that, on my project anyway, it's a style free-for-all.

The only language designer worse than Guido (-1)

Anonymous Coward | about a year ago | (#44677581)

Guido is a fairly unintelligent guy who managed to build a cult of parrots that accept anything from this incompetent wretch.

The most incompetent language designer is of course Rasmus Lerdorf, although giving him the title language designer is a bit of a stretch. Language excreter is a more accurate term

Re:The only language designer worse than Guido (0)

Anonymous Coward | about a year ago | (#44678679)

It must be painful to be as intelligent as you believe you obviously are and yet unable to develop your own programming language

Fate (0)

Anonymous Coward | about a year ago | (#44677783)

It is absolutely essential. Just look at Perl's fate -- Larry Wall is just too clean-shaven. :-)

What fate? Having multi-line anonymous functions? Being stable? Still being popular? Another language growing in popularity does not threaten that.

Re:Fate (1)

fyngyrz (762201) | about a year ago | (#44679503)

How about being unable to create a 2D array without jumping through hoops (backwards, on fire, and without your pants)?

Re:Fate (0)

Anonymous Coward | about a year ago | (#44680011)

Guido doesn't get it. He wants python to be java or ruby but half its users would prefer MATLAB or lisp. He can mock perl all he likes, but that's where python will be heading if he's not careful.

Re:Fate (1)

MetalliQaZ (539913) | about a year ago | (#44680143)

Create a 2D array, like you would do in C? That's not pythonic. If you want C, then use C.

In Python you don't have to define memory before you can fill it with stuff. You plan your data structures and the interpreter manages memory. If you need default data then just go straight to writing the initializer function. Otherwise use higher level functions like append() or extend() while creating your data.

To answer GvR's question (3, Informative)

MetalliQaZ (539913) | about a year ago | (#44677979)

I asked the Python 3 question and to answer Guido's question of me; I work at a large conglomerate that does a lot of defense contracting. In my area we deal with aerospace applications and so our linux systems are not Internet-facing. They are real-time systems that run simulations and data-acquisition. As you might expect, they only get upgraded when they really need it. We had a PDP-11 down in the lab until 2010.

I'm not sure why I mentioned my workplace other to demonstrate how distant Py3k can seem to be. My main concern was the apparent lack of 3.x support in the big libraries out there. PIL is a great example. Also PyPy. It seems to me that there are many users that will only upgrade when the 3rd party libraries require it.

Re:To answer GvR's question (0)

Anonymous Coward | about a year ago | (#44678145)

Do you ever wish that someone made python faster like was done to javascript or even PHP? Or it's not really important?

Re:To answer GvR's question (1)

MetalliQaZ (539913) | about a year ago | (#44678549)

Is python really that slow? I never do anything with Python that has made me notice a slowdown.

One of the nice things about Python is the really well supported interface for C. If you have a problem that requires a computationally intensive solution, then you can put the worker code in C and wrap it in Python for the I/O and UI and glue logic.

Re:To answer GvR's question (1)

EvanED (569694) | about a year ago | (#44678631)

CPython is... really quite slow. You [i]do[/i] have to do something computationally intensive to notice, of course.

That point and your parent's question are actually related to the PyPy question in the interview actually. PyPy is a JIT for Python that is able to get significant speedups for computationally-bound code. They run 20 benchmarks comparing PyPy and CPython, they are faster on all 20, and see speedups ranging from about a 27% improvement to a ~30x improvement, on average running 6.2 times faster. (Link [pypy.org] )

Re:To answer GvR's question (1)

TopherC (412335) | about a year ago | (#44678853)

It all depends on your frame of reference. CPython is a blurry rocket of speed when compared with Jython. And in theory you can write all the compute-expensive routines in C++.

Re:To answer GvR's question (1)

EvanED (569694) | about a year ago | (#44679055)

CPython is a blurry rocket of speed when compared with Jython.

Is Jython an order of magnitude slower than CPython? Because that's my rule of thumb for CPython vs C. (Actually the programming language shootout [debian.org] 's numbers are more like 30-40x slower than C, though that needn't be representative.)

And in theory you can write all the compute-expensive routines in C++.

Sure, but then that's not Python being fast, it's C++ being fast. "You could write the expensive parts in C or C++" can be said of nearly any language. :-)

Re:To answer GvR's question (1)

rwa2 (4391) | about a year ago | (#44679759)

Shoot, I did my master's thesis in python. Using the psyco JIT engine (sorry, 32-bit only for old python), my stuff ran ~10 - 100x faster by just including one import statement.

I'll play with running it under PyPy and see how it does nowadays. But yeah, I find stuff like PyPy essential for a lot of the stuff I like doing.

Re: To answer GvR's question (1)

Anonymous Coward | about a year ago | (#44678379)

You can use Pillow to replace PIL on python 3. Works on python 2 as well.

Re:To answer GvR's question (3, Informative)

EvanED (569694) | about a year ago | (#44678609)

Just to add my input, in the CS department at my university, the Linux that is currently in use is RHEL, the latest version of which (RHEL6) ships with 2.6.6.

Now that said, we also have several other Python installations available from nonstandard locations, and a [i]python[/i] shell alias for me runs 2.7.3 and [i]python3[/i] runs 3.2. (Huh, 3.3 is available. I should update that.)

Also, the Python project that I use that it'd be nice to see support Python 3 is SCons, and there's some talk of that going on and they'll get there eventually, but it's not clear when.

Re:To answer GvR's question (4, Informative)

codealot (140672) | about a year ago | (#44679111)

I was a little surprised by GvR's answer to this. RHEL 6 ships with Python 2.6, last I checked, and we don't normally deviate from Red Hat packages without good reason. Getting the masses off pre-2.7 versions of Python will also entail releasing newer OS distributions and retiring older ones, both of which happen slowly.

Not everyone can keep up with the latest/greatest versions out there, especially when they have hundreds of servers and big legacy applications to support.

AMA on reddit (0)

Anonymous Coward | about a year ago | (#44678063)

Can you do one there?

Functional programming is no harder than OOP (0)

Anonymous Coward | about a year ago | (#44678381)

Haskell and monads are hard, so functional programming is hard, huh?

Rubbish.

OOP is just as full of esoteric, mind-bending weirdness as functional programming is, and for a language that prides itself on readability python sure has it's share of WTF magic. If you think reduce is hard to understand, you might like to try explaining reduce versus some of the following python features to a noob:-

  • super and multiple inheritance (ha ha, good luck with that!)
  • list incomprehensions (they're cool, but you really think they're obvious?
  • using dicts for case/switch-type problems (or even better, using types & overloading)
  • iterators and generators
  • why tuples are more important than arrays
  • in what way the new print function is more intuitive than the old print statement

OOP is a great way to write crappy, bloated, buggy, unmaintainable code, and ruby does it better than python. As you admit yourself python will never be the language of the web either. But sure, just carry on 'dissing functional programming and alienate some more of your core users.

Re:Functional programming is no harder than OOP (2)

phantomfive (622387) | about a year ago | (#44678587)

But sure, just carry on 'dissing functional programming and alienate some more of your core users.

After that post, I seriously doubt you are a core user.....

Re:Functional programming is no harder than OOP (0)

Anonymous Coward | about a year ago | (#44678807)

It's the libraries that make the difference. I thought it was a clean, pragmatic language in the beginning, but as time goes by I am less and less convinced.

Re:Functional programming is no harder than OOP (2)

MetalliQaZ (539913) | about a year ago | (#44678681)

Did you read what he said? He wasn't dissing functional programming. His point was that FP features require powerful compilers. Python doesn't have that kind of compiler. Therefore the features don't have much use to Python.

By the way, I don't believe they made the print function to be intuitive. They made it because print had no reason to be a statement. Also who said that tuples are more important than arrays? Arrays are really a concept for lower-level languages. Tuples, lists, and dictionaries are higher-level concepts that might be implemented with arrays behind the scenes. Lists function similarly to how many people visualize arrays. The beauty of tuples is that they are immutable, which means that they never change and can be thought of as a single, meaningful package with its contents. In contrast, lists have to be thought of as containers that can contain unknown things that may change at any moment.

Re:Functional programming is no harder than OOP (0)

Anonymous Coward | about a year ago | (#44679845)

Yeah, I read his excuse about python's compiler. That's probably why all the functional stuff is in functools, right?

And my point about tuples (I like the immutability btw) is that by wasting parentheses on tuples, there were no square brackets left for arrays. A list of lists is a poor substitute for a real array.

A lot of functools and numpy stuff could so easily have been part of the core language. What a waste.

Smileys and parenthesis (1)

ericcc65 (2663835) | about a year ago | (#44680769)

Interesting interview. Surely there were more important topics but if nothing else this interview was useful in that it taught me it's okay to use the parenthesis at the end of a smiley to serve double duty as the end of a parenthetical statement (kind of like this one :-). At least when your smiley is left in plain text, that is.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?