Hacker News new | past | comments | ask | show | jobs | submit login

> How else will the language improve then?

That question hides the assumption that static languages are always an improvement over dynamic ones, when in reality we should think as different species that have adapted to fit into different environments.

> We can improve the tooling and train the team with better practices though.

"Better practices" are what makes you team more productive, not just blindly copying what other people are doing. If your colleagues really believe that automated tests/type checking are not worth the effort, you are not going to convince them by saying "but so-and-so said otherwise". What you can do is ask for their pain points, and see if the tooling can help with it. You can look at your past burn charts and say "look at this bug here, what caused and why did it take so long to fix? Is this the type of problem that would be easier to solve with static analysis of the code? Look at this refactor that we are planning for next quarter, should we try to increase the test coverage to make sure we have more confidence in the changes?"




> That question hides the assumption that static languages are always an improvement over dynamic ones, when in reality we should think as different species that have adapted to fit into different environments.

Let me give you a twofold answer to this.

1. I do think statically typed languages are generally better than dynamic languages for most use cases (with a few exceptions). I don't expect to convince you or anyone else of this. It may even be the case that I'm mistaken about this, but I made my mind after years of experience with both kinds of languages.

2. The alleged hidden assumption is not truly important. One should always criticize flawed features of any language, static or dynamic, and the answer should never be "well, choose another language". How else will languages improve if nobody is working on addressing their pain points?

> "Better practices" are what makes you team more productive, not just blindly copying what other people are doing. If your colleagues really believe that automated tests/type checking are not worth the effort, you are not going to convince them by saying "but so-and-so said otherwise". What you can do is ask for their pain points, and see if the tooling can help with it.

I'm both nodding in agreement and finding it very hard to think of something I said that made you think I disagreed with this.


> generally better than dynamic languages for most use cases

Shouldn't then the exercise be to figure out if these use cases are applicable to your situation?

What is your team and company optimizing for?

> How else will languages improve if nobody is working on addressing their pain points?

"See, at my work we need to travel between two islands as fast and cheap as possible. My team is used to high-speed motorboats, but my experience tells me that hydroplanes are faster. I tried putting wings on my motorboats, but it still wasn't as fast. No, we can not buy hydroplanes. No, my team is not licensed to fly. But if no one acknowledges that motorboats are slower, how will they ever be as fast as a hydroplane?

And no, I haven't really looked into the fuel costs of planes vs boats..."


Your "islands" anecdote is amusing, if a bit condescending. Do you honestly think it fairly addresses the very direct question I asked you?

Also, do you honestly expect me to detail what my team and company is optimizing for here? What for? What does it have to do with Python type hinting?


The problem I see is that you are trying to peg a square in a round role and thinking that the square is at fault for not being flexible enough.

Anyone that has seen the py2 -> py3 debacle will tell you that "let's make python static" is not something that could happen unless you are willing to rewrite the entire ecosystem of libraries and applications, and quite possibly upsetting the majority of current users who were attracted to it in the first place precisely because it is so easy to get started with it.

You can not turn Python into a "fully static" language without changing it so much to the point of making into a different beast. And why should others make all this work to fit into your view of what is "best" when you can just use another language in the first place?


I don't want to turn Python into a statically typed language. I think there's valid criticism to be made about the flaws of its type hinting (as does the article's author), and I cannot help but compare its usefulness to static type checking.

I also cannot choose the language. I'm not in a position to choose languages at my current job; I seldom find myself in that position at any job.


We are going to go back in circles, but as I said in the very first comment: mypy is the tool you want [0]. It won't do everything, but progress has been steady and more and more projects are providing type libraries for it.

But given that your response to the mypy recommendation was to complain (it's slow, it doesn't catch everything) then it makes it difficult to acknowledge the "valid criticism"... as in: people are working on it, what else do you want?

[0] https://mypy.readthedocs.io/en/stable/existing_code.html


> "We are going to go back in circles, but as I said in the very first comment: mypy is the tool you want [0]"

What makes you think I'm not using mypy, or that I didn't read the article you linked to or follow its guidelines (which are very sensible)?

In your mind, is it the only possibility when someone criticizes a tool that they are "using it wrong" (to paraphrase Steve Jobs)? No other possible reason?

> "But given that your response to the mypy recommendation was to complain (it's slow, it doesn't catch everything) then it makes it difficult to acknowledge the "valid criticism"... as in: people are working on it, what else do you want?"

Given that I didn't say or imply that I don't believe there are people working on improving mypy and Python type hints, "what I want" is merely to support the article's assertion that the current version of type hints Python provides is confusing and not very good.

Please, for the love of all that is holy, don't recommend to me again that I switch to a different language. That's not how this works.


> "what I want" is merely to support the article's assertion that the current version of type hints Python provides is confusing and not very good.

What I am having trouble to grasp is: if you understand that Python is not a statically typed language, and if you claim that you do not want to "turn" Python into such, why do you keep conflating type hinting with type checking?

They are two separate things. That is the nature of the game. Do you have criticisms about limitations from mypy, fine, but then you are not talking about issues with type hinting but merely the type checker tool.


> "What I am having trouble to grasp is [...] why do you keep conflating type hinting with type checking?"

It's not my business to help you with your trouble grasping things, but why do you think I'm conflating type hinting with type checking? I specifically asked in this comments section what type hinting meant if not what I thought, and was told by several people "it's just standardized comments", which I then explained was unsatisfying (and other people agreed with me).

> "you are not talking about issues with type hinting but merely the type checker tool"

How about both?

Let me suggest you a more productive use of your time: address the article's complaints as a top-level comment (which I see you haven't yet). I suppose you're more interested in the article's topic than in correcting my alleged misconceptions?


> How about both?

Because the "issues" with type hinting that you are talking about are only based on what you wished it was, not on what it is or what it could become!

Ask yourself this: what about the python's type hinting story you think could be improved without turning python into a statically typed language? What about the python's type checking story that is missing or broken and that is attributable to the language and not to the tool?

> I suppose you're more interested in the article's topic.

Quite frankly, no. My motivation for the conversation now is mostly to see how long is going to take you to realize that you are merely wishing that your motorboat could fly like a hydroplane. It's not about "misconceptions", it's about you complaining about something not meeting your unfounded expectations .


> "Quite frankly, no. My motivation for the conversation now is mostly to see how long is going to take you to realize [...]"

Oh, I see. Well, I have no interest in that kind of conversation.

Goodbye.


Please don't read it as snark. It was not my intention.

What I am trying to say is that perhaps the lesson you could take from this it's to not think that something is "inferior" or "needs fixing" just because it doesn't immediately meet your expectations.

It isn't Python's fault that you have to use at the job even though you don't like it.

It isn't Python's fault that you have to use even though you are absolutely certain that dynamically typed languages are worse.

It isn't Python's fault that type hints are just hints and can not become a full-fledged type system.

It isn't Python's fault that mypy is still not mature enough to work reliably for you.

And it certainly isn't Python's fault that your coworkers don't care about all that as much as you do.


> "What I am trying to say is that perhaps the lesson you could take"

I think there's a lesson here, but it's for you rather than me.

This is tiring. You keep making stuff up for the sake of argument. I never claimed I didn't like Python; in fact I like it. I never claimed it was Python's fault.

I thought you were going to "wait until I realize". Go on waiting, then. Off you go!


I am sorry for my assumption, I just wouldn't think that someone so certain of the superiority of statically typed languages and so disappointed (with a feature that is barely a defining aspect of it) would also claim to like it.

Anyway, you also had the chance to respond to other questions I made, but instead you preferred to stick to defensive retorts.


Your questions weren't very reasonable, were they? You made lots of claims about what you supposed I thought. I'm under no obligation to answer, for example, what "my company and team are optimizing for", that's an open ended question which is not reasonable to ask in this context, nor would it benefit me to answer it in any way, nor is it related to the question at hand. It looks like cross-examination, something explicitly discouraged by HN guidelines.

I'm not interested in being "educated". In general, you sound very condescending regardless of your claims that you are not snarky.

It's easier to pick on someone's comments than to make a comment of your own, because that would open you to correction and criticism. I think that's what's going on with you in this case.

Regardless, I suggest you stick to commenting about TFA in the future. It will go better for you. You'll be criticized, but that's par for the course.


I don't see what is unreasonable about prodding for the "why" of the reasons you gave (which was basically the point of asking what your company wanted to optimize by using Python), and I don't see what is unreasonable about asking what would be your way to solving what "disappoints" you about the typing story without changing the language.

> I'm not interested in being "educated" by knowitalls.

From where I am standing, you are trying to get your coworkers to adopt some practice without a strong case for how it would help them or the bottomline, purely out of your belief that statically languages are better. If you think I am being the know-it-all here, fine.

> It's easier to pick on someone's comments than to make a comment of your own, because that would open you to correction and criticism.

Someone else in the thread already pointed out that your original comment and TFA are basically a statement of opinion, not of fact. I do not see what kind of comment we can have except the meta-commentary.


> I don't see what is unreasonable about prodding [...]

Yes, I can see that you fail to acknowledge the unreasonability of your prodding. Time to change your tack, maybe voice an opinion of your own, on the actual article, and expose yourself to critique?

Maybe drop the condescending tone and try to avoid the cross-examination? It's against the rules on HN.

> I do not see what kind of comment we can have except the meta-commentary.

I can't help you with what you "don't see"; I cannot make you fix your blind spots. I've already told you your meta-commentary is unwanted. I do not welcome it, it's unhelpful, and every single assumption you've made has been wrong (and smug) so far. It's not my job to present my case to you, you're not doing a consultancy here, nor do you demonstrate particular expertise on the subject.

I foresee another pointless reply of your own. I'll let you have the last word.

Bye.


> maybe voice an opinion of your own

In regards to "type hinting/type checking" in Python, my "opinion" is somewhat similar to automated testing: "use it when it can help increase your confidence about the soundness of your program and its design, but don't rely on it as a guarantee of it being bug-free."

In regards to the article, my opinion is that if you want to claim "disappointment" with a language your expectations should be aligned with the language developers and the general motivations of the community at large. Another opinion is that if the author took the time to understand these underlying motivations there would be no "disappointment" and consequently no article, perhaps?

> expose yourself to critique

Hum, that's interesting. I don't think of "expressing an opinion" as something that "exposes oneself to critique". Maybe I am too accustomed with the idea of "keeping my identity small" and "strong opinions, loosely held", that it's natural to me to differentiate an "attack" on the argument vs the person?

Any chance is this why you are so defensive?

> try to avoid the cross-examination? It's against the rules on HN.

First, not rules but guidelines. Second, you have been responding with passive-aggressive insults and retorts which also makes for unpleasant conversation. Third and most important, there is no cross-examination. I am not challenging your motives or trying to invalidate you as a way to invalidate your opinion. The "prodding" is because I don't think your argument has any merit yet, but perhaps this could change if you provided some underlying reason?

> I've already told you your meta-commentary is unwanted.

It's not lost on me that I when I asked "what you would like to change about python's type hinting without changing the language, and what is wrong about python's type checking that is not just a matter of improving the tool", you completely ignored it and preferred to continue with this grating back-and-forth.

Anyway, you are right when you say it's time to lay this one to rest. I hope the next one gets to be more enlightening to both of us.


> First, not rules but guidelines. Second, you have been responding with passive-aggressive insults and retorts which also makes for unpleasant conversation.

You continue nitpicking! You would do better if you followed those "guidelines". Indeed this conversation has been unpleasant, but it's all on you. You have been condescending and insulting. I suggest you focus your energies on better enterprises next time, maybe engage with the article itself instead of picking on others. It will do you good.

> The "prodding" is because I don't think your argument has any merit yet, but perhaps this could change if you provided some underlying reason?

Surely you can see there's nothing to gain by explaining myself to someone who thinks "my argument doesn't have any merit" (and who doesn't think that's insulting) and who keeps misrepresenting everything I say? I just said something, shared by many others, and you felt triggered by the opinion: that's fine, I don't want to convince you of anything, nor do I feel like being "educated" by you.

> Maybe I am too accustomed with the idea of "keeping my identity small" and "strong opinions, loosely held", that it's natural to me to differentiate an "attack" on the argument vs the person?

Well, you haven't done a good job at it, then!

What do you hope to gain, at this point? Are you waiting for me to "see reason"? That's not going to happen. Surely you see sooner or later dang will intervene here and tell us to shut it down?

re: insulting, passive-aggressive behavior: I re-read our exchange from the start. I was polite, even agreed with you sometimes ("I'm nodding in agreement, why do you think I think otherwise") while your tone kept getting more condescending with each reply, failing to accept my agreements and prodding in what I guess you felt was an "educational" tone. Honestly, hand on your heart, do you believe your responses were made in the best possible tone and were the best way to conduct an honest conversation? Do you believe the default position of "this argument has no merit, but maybe if this person explains his team's and company's motivations to my satisfaction I might change my mind" is a mindset that is conducive to amicable conversation? I think, if you're honest, you should admit maybe a tiny bit of misbehavior here.

I also read replies you've made in other articles and you seem more reasonable. I'll chalk it up to you not being able to let go at this point, and so you must bite and nitpick at everything I say. I really think you should let it go, make your peace with not being able to convince me of your point of view, and move on to other enterprises.


I thought you were going to let me have the last word. ;)

> someone who thinks "my argument doesn't have any merit" (and who doesn't think that's insulting)

You forgot the yet. No, it's not nitpicking. Without it, it would be a mere judgmental sentence and it would make sense if you felt dismissed. With it, it is a sign that I am trying to reach for a point of agreement or an understanding.

You are claiming I am the one "biting and nitpicking on everything", but you also could've given a much more charitable interpretation to this, much like you could have done it for the last 6-7 exchanges we had.

And sorry, but I really don't see what is "insulting" about it. Well, at least I don't see how this is insulting if we are to have a rational conversation. This would be insulting only for those who'd be tying their self-image to any of the things being discussed.

> Honestly, hand on your heart, do you believe your responses were made in the best possible tone and were the best way to conduct an honest conversation?

Yes...?

Maybe I am relying too much on the Socratic method, but my questions were mostly to dig in for Truth, not to grieve you. But given the way that old man died, perhaps I should try a different path to not end on the same way as he did.


> "Maybe I am relying too much on the Socratic method, but my questions were mostly to dig in for Truth, not to grieve you."

Oh. My. God.

A Socrates complex.

I give up.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: