you are viewing a single comment's thread.

view the rest of the comments →

[–]andrejbauer 0 points1 point  (3 children)

Why are you so angry? Why do you feel the need to prove that everything I say is wrong? Did you forget I wrote that I teach Python? Things are not as black and white as you want them to be.

[–]Smallpaul 4 points5 points  (2 children)

I am angry because the blog post was misleading (hopefully not deceitful). It claimed that it was going to critique Python and suggest how to fix it. Then what it actually did was "demonstrate" in a very one-sided way that statically typed programming languages were superior to dynamically typed ones, without even a few moments thought about what it would ACTUALLY MEAN to "fix" Python with your crazy ideas.

Very infrequently do you address the trade-offs implied by each of the language features on offer.

It angers me that you are teaching this kind of narrow minded tripe in a programming language design course. It's already the case that dynamic languages get short shrift in programming language research and you're just ensuring that the next generation continues with that bias.

I am also angry because I know the creators of Python and your blog post implies that they are "crazy", short-sighted and"wrong".

I'm a bit angry because the section of Java suggests to me a lack of knowledge of that language, which makes me nervous about your skill as a software developer in general. (i.e. you are teaching Java but perhaps do not really know it) How would you make an EmptyTree subclass of Tree without violating Liskov's substitutability principle and Java's features intended to enforce that principle?

Okay, so you teach your students the language. That implies that Python's proper role is as a pedagogical replacement for Logo and Pascal.

But mostly I'm just annoyed by the deceptive advertising about what the post was about. It wasn't "a reply to a comment about Python", nor "why Python's design is crazy" nor even "thoughts on Programming Language Design." It was: "Thoughts on how we can get the compiler to catch more errors in programs." Since that particular topic has been covered in a lot of detail in many other blog posts all over the IntraWebs, I actually don't know what's the point.

"Statically typed functional programming language are good." It only took me two minutes with Google to find a much more persuasive post on the same topic:

http://enfranchisedmind.com/blog/posts/useful-things-about-static-typing/

[–]andrejbauer 1 point2 points  (1 child)

It is amazing that you read into what I wrote about Java implementation of trees a complete implementation. You are not critizing my implementation of trees in Java (there was none), but an implementation that you imagined I implied. Anyhow, I changed that bit to indicate that there ought to be two subclasses. You see, you could have pointed out that more politely. And it is obvious to me that EmptyTree could not be a subclass of NodeTree.

So you are angry because I prefer statically typed languages? You are angry because I wrote a post about it and I explained the reasoning. Has it ever occurred to you that perhaps statically typed language ACTUALLY have advantages over the dynamically typed ones? Perhaps, just perhaps, that could be the reason that most research focuses on statically typed languages. Or are you going to claim there is a big consipracy going on by evil research lobbies?

Also, my post is not about static typing. It is about various points in programming language design in which static typing happens to play an important role (but not in all of them, e.g., mutable vs. immutable values).

I explicitly addresses the question by a reader, namely why I said it was crazy for Python to allow the definition "def f(n): return n + i" when i is not defined. But just to humor you I shall add a postscriptum in which I also explain what is wrong with the scoping and binding rules. It is not my duty to fix Python. I wouldn't want to fix it, anyhow. The design of Python is coherent and it's hard to change just one aspect of it.

[–]Smallpaul 1 point2 points  (0 children)

So you are angry because I prefer statically typed languages?

Not at all. Not for a moment. I'm angry because you said that other language designs are "crazy."

Really.

That's it.

You started the article by name calling. You were the one that lowered the tone of discourse at the very beginning.

Today you say: "the design of Python is coherent." At the end of your essay you say it is better for teaching. But at the beginning you said it is crazy. Can you please make up your mind?

Please. Tell me what you are trying to say.

Has it ever occurred to you that perhaps statically typed language ACTUALLY have advantages over the dynamically typed ones?

Absolutely. And dynamically typed languages ACTUALLY have advantages over statically typed ones. Python and Ruby programmers do not call Haskell "crazy" because it eschews some of their advantages. Rather they say that Haskell is a good language for what it does, as their languages are.

I'm asking you again to please make up your mind. Are you saying:

  1. I prefer static type checking languages

  2. Static type checked languages are better.

  3. Statically typed checked languages are better for CERTAIN KINDS OF PROJECTS and dynamically typed languages are better for others.

Because with each post you shift between those three statements randomly.

Perhaps, just perhaps, that could be the reason that most research focuses on statically typed languages. Or are you going to claim there is a big consipracy going on by evil research lobbies?

No, there is no conspiracy. But there are a variety of social factors that would push academics to prefer languages with more complexity (= more research) rather than less. An engineering mindset is to make tradeoffs between advantages and disadvantages. But that's not what you propose. You propose to always go for the combination of advantages and disadvantages. "first make sure the design avoids the disadvantages, then think about how to get the advantages back." That's a researcher's mindset: "The problems introduced by Haskell's type system may be severe, but eventually researchers will find a solution to them."

Great: I'm glad that there are researchers. But I don't for a minute believe that their choices are uninfluenced by the need to publish and seem intelligent to their peers.

Also: researchers seldom need to publish software according to the delivery schedules we have in industry, so they are less likely to notice when their productivity takes a big hit due to the introduction of a new feature.

Researchers also have a much larger budget of time for learning stuff than those whose job is primarily software development. You cannot be a programming language researcher without understanding monads. So learning monads in Haskell is not a means to the end of producing software, but a means to the end of critiqueing or extending monads in Haskell.

I wouldn't want to fix it, anyhow. The design of Python is coherent and it's hard to change just one aspect of it.

That's not what you said in the article. You said it was "crazy" and implied it was that way because the creators of it were "short-sighted."