ok, remove go-tos and replace common blocks with shared modules. But the king of mistake I’m referring to here is the kind of mistake that makes the code slow (algorithms apart). Those are rare in Fortran, and quite common in Julia.
When one comes to the details I don´t see we can really judge what is better for one’s uses, because essentially all the languages can achieve similar goals one way or the other. It is by having some experience with them that one feels in which language one is more productive and, very importantly for me, in which language I have more fun.
Another related topic where I feel the Julia community is overly harsh is benchmarking.
Common Scenario
A python user hears Julia is faster. They write a simple function and use the built-in @time tool to check. Time is higher than expected, so they ask about it on discourse.
The response is always one of the following (with hyperbole):
Why would you think it is okay to use @time to time your function? You obviously have to load a separate third-party package for that. Those results are meaningless.
Your result includes compilation time which doesn’t count. Run the timer twice and ignore the slow one like time-to-first-plot isn’t the biggest technical problem with Julia right now. Those results are meaningless.
The content of your function makes no sense for benchmarking due to some aspect of computer internals you know nothing about. Those results are meaningless.
The questions come innocently, and the answers contain valuable truth. However, because the topic titles can sometimes be pointed like “Julia isn’t actually fast?”, the answers don’t bother to explain the nuance, instead resorting to defensive blaming.
That is the toughest one, because first it may count for what the user actually wants to do. Second, because as a new user he/she is probably not aware of the best ways to develop in Julia, and thus is experiencing that delay repeatedly in everything he/she tries. Fact is, TTFP makes the initial barrier high, for implying how benchmarking must be done but, most importantly, for imposing development workflows which are not required for other languages.
All of these examples feel somewhat misleading to me.
All performance questions that are ‘innocently asked’ get polite and helpful answers, sometimes to the point where posters put down hours of work to help and improve the code.
Explanations of why some code is slow, or how to improve benchmarking should not be painted as aggressive or condescending.
The questions that do get defensive or dismissive responses are virtually never innocent, but either asked in a demanding or angry tone, or with a dismissive ‘what is this crap language, it doesn’t even support OOP’ tone. And if someone draws categorical conclusions: “This language isn’t fast, it’s just marketing hype”, then it is entirely appropriate to suggest that it might be the a problem with the code, not the language.
Polite questions get polite answers. Other questions might get matching replies. Since this is not a professional help desk with paid employees, that is perfectly fine.
I agree. I have seen this issue mostly in the form of short, snippy answers (“well you did this wrong.”). They leave the asker with more questions than answers.
The real problem is that there aren’t thousands of Common Lisp users just waiting for a lisp suitable for numerics with a clever mathy syntax. If you come from Common Lisp, Julia feels right at home.
Right on the money, each language has their easy and hard parts. Neither language, and indeed no language, makes it absolutely easy to write performant code; you have to learn particular “habits.” “Easy as Python”/“runs like Python” makes Julia sound like a performant Python compiler, and many people don’t question “wait why don’t they just implement it for Python.” “Dynamically typed and garbage-collected like Python” might be a more accurate version, though that is a very incomplete picture without type inference and stability habits.
There’s been many comments on how Julia is harder, but I’ll point out one way that Python is pervasively harder, at least for me. Every object is heap-allocated, even immutable ones, and although reference counting takes a lot of strain off the GC (to the point that the GC does not track some types specified to be incapable of reference cycles), the ubiquitous heap allocations and deallocations aren’t cheap. For example, indexing an isbits array heap-allocates a new object, and the overhead is one reason you need to learn “vectorized” functions that drop down to loops in C. It’s not even close to a dealbreaker, but it is something you do have to learn habits to get around, habits that become far less necessary in a language with lots of stack allocations.
I disagree here - even if a question is not polite or even outright wrong, we should respond in a polite way ourselves. Doing so paints a picture of a humble community, instead of one that’s purely reactive or knee-jerky to particular “triggers” (most often benchmarks…). This has nothing to do with being a paid helpdesk or not, this is basic human decency (even if some posts don’t extend that courtesy to us).
The fact that “responding in kind” to rude/non-polite questions is acceptable and seems to get a lot of here (even if intended for other parts of your answer!) is one aspect of our community I really don’t want to see grow and is something (I think) casual passerbys can easily interpret as hostile.
I liked DNFs post, because what I read is, that nearly every answer is very polite. Even most answers to the more rude questioners are kind and respectful. “Most” means just not always like in 100% which will not be achievable (I point on myself here).
Nobody would say, we as a community should answer rude questions in a rude way, and that’s of course not what DNF meant or wants to imply.
For me, this discussion (and I read it all) is a bit artificial. It puts all the blame on a extremely helpful and kind community. This community here (discourse mainly for me) is exceptional kind and helpful. In general and especially, even more exceptional, for a highly technical topic and people.
What is done on the other side, is, that some really rare events are stylized to a general problem.
This doesn’t help for more kindness, but put those off, who try hard to comply to this extreme expectation. In the result, those who have already done very well, loose the motivation to help again.
The other thing, which stand out for me, is, that it is ignored that the questioner is already with his question a part of this community. The community is not only those who answer regularly here. It’s everybody independent if asking a lot or answering a lot. Or, if we don’t think so, we need to define a threshold for being part of the community. We can’t put different measures on those who have their first question here and those who answer a lot. If it is a problem, that there are not so kind answers seen, why isn’t it a problem, that rude questions appear? It’s both and it’s the same: as long as it isn’t prevalent, it’s just human and we should not put superhuman expectations on us.
No, that is exactly what I took from the part I quoted, which says precisely that there are polite questions, and other questions (i.e., not polite ones? If not that, what else are “other” questions?) that should get a matching reply. I explicitly wanted to call that out as not acceptable. How things are worded matters, so we should act accordingly to write things as we mean them, to effectively communicate.
I really don’t want this discourse to devolve into an “us vs them” mentality, but for outsiders of the community, the problems encountered are not rare events. When you only touch something once or twice and get burned each time, to them, that’s the norm, not the exception.
Exactly! So if we want to see them as part of our community, shouldn’t we give them the benefit of doubt and be polite, always (and if we can’t be, recognize that as an opportunity to take a step back to let things cool off)? If we didn’t, we’d admit that we don’t want/need to be polite in our community, which I REALLY hope is not the case.
Of course it’s a problem that sometimes newcomers can be a bit rash, but that’s something to be patient with, not to be ridiculed and/or downplayed. I don’t think “trying to be polite” is a superhuman expectation.
In my experience on this discourse (I can’t speak for other forums), most responses to rude questions were actually quite patient and polite. Occasionally there will be responses that aren’t, because nobody’s perfect. So I agree that it’s important to speak up, request cooler heads, or remind people it may be better to walk away from the situation. Many people, including me, try to anyway, and maybe it would be helpful if more people did, too, just to better mitigate the occasional rude responses.
I don’t have much time to answer this from work. But you should read again what I wrote (since, as you say, wording matters). I spent several minutes getting that phrasing right, actually:
Also, you are excluding a large middle region. There is a lot of open ground between ‘humble’ and ‘rude’, and in that region there are both ‘courteous’, ‘civil’, ‘direct’, ‘to the point’, and ‘chilly’. Requiring that posters should be ‘humble’ in the face of rudeness (and even personal insults) is unreasonable.
In order to try to understand what I actually mean, ask yourself: Does the tone of the person you are talking to never influence your own, in any way or degree? Shouldn’t it? Are you equally warm and cordial to everyone, always and all the time? This is what I am talking about, not being rude yourself, but allowing your tone to cool in the face of rudeness.
Perhaps if newcomers are too rash we should have more strict pre-post guidelines about code formatting and describing the question properly.
A lot of questions come from people who are dipping their toes in and are really motivated to find the solution to their problem quickly. What unfortunately happens is that because of bad code formatting, no runnable example, or too vague a problem description, we are unable to help and it’s frustrating for both sides.
You are right here, but I still insist, that it isn’t meant like this from DNF, despite that it was written like this. For me it is clear from the whole conext and from the knowledge of DNFs acting in the long past.
Yes, I agree.
And this is an artificial made up expectation, as humans don’t communicate like this, despite that it would be sometimes better if it would be like this. And if we would do, it would be often enough sound rude, because it would miss all the nice and kind words to fill it up to be nice.
This will always happen, We can’t achieve 100%. In your example, each time is still only one or two times. If this unlucky person judges this community from this, without reading some other topics here, there are enough, it’s a pitty but nothing we can solve or avoid in 100% in future. Expecting this is superhuman expectation.
We do exactly this in almost all cases.
This doesn’t happen (again, not in 100% not, but clearly extremely rare).
This is how this community is doing (being patient!). It should not be questioned it should be praised. Somebody may analyze a bunch of topics regarding this and I am sure, the result will be something to be proud of.
This all doesn’t mean that everybody should not be working on it’s self awareness to avoid the rare outliers. But the current state, all in all, isn’t a problem. It is extremely good. Of course this my personal perception and I didn’t count and analyzed the topics. But I am reading many, nearly every day. That’s why I am convinced, that I don’t want to be made artificially to problem, just because there are a few unlucky people, who got offended by a single post ( I know that with my last sentence I do belittle those to whom it happened and this is wrong, but I do it to show, that blaming this community to be not kind enough is wrong also).
True, which is probably a situation where it’s better to walk away without another word, or at most a reminder that hostility is against community standards. If anyone is dead-set on creating a hostile environment, then it’s warranted for the other people involved to report them. I’ve seen this a few times, and while they might complain about being “silenced” afterward, I think we can’t stop a stubbornly nasty person from badmouthing whomever they want, but we can collectively respond as an accountable community rather than a hostile one.
Yes, but again, there’s a middle ground. That poster may not be in violation of any guidelines, but simply have an unpleasant tone. That doesn’t justify rudeness on my own part, but, in my opinion, it is then fine to take a cooler or more direct tone with them.
If the community expectation is either ‘bowing and scraping’, or ‘walking away’, then I don’t think that is very healthy. If there isn’t room for direct and honest disagreement, then it isn’t a very welcoming community.
Yes, disagreements can land on any part of the spectrum from civil to hostile. I have a few personal guidelines to lean toward civility:
Stay patient and amicable, even when sticking to your opinion. Leave if you can’t.
Ideally, criticisms are about programming or the work. Criticisms of character should only be done when absolutely necessary, like reminding people to maintain a civil discussion.
Try to frame yourself as coming from a different perspective rather than their priorities being “wrong”, even if it really seems that way. Taking the original topic of Julia’s flaws, one could say “yes Julia isn’t good at what you’re exactly asking for, but here are the options I know of to approach the same problem, or here’s why these limitations exist and here’s the current progress”
Leave when you’ve had your say or if it’s no longer worth doing so. Don’t repeat yourself or demand some compromise or agreement, your comments will still be there if they ever reconsider.
Flag unambiguous hostility (picking fights, personal insults, obscene comments, threats). Do not confuse this with just stubborn disagreement.
That’s not what you suggested initially though, which was “matching” their tone. I took that to mean to treat them as they treated us, which does directly mean that we should be rude if they’re rude, cold if they’re cold and so on. If that’s not what you meant, that’s fine and I’m happy to hear that! It just circles back to what I wrote earlier, that we should communicate effectively.
What I wanted to convey was that such “matching” of emotions is bad, and from what you’ve written since that we should stay polite and not “stoop down to their level” - in which case, great, we agree! Miscommunication solved!
That’s not at all what I suggested and not at all what “being humble” means. We’re all wrong sometimes and discussions can get derailed/get our emotions high. It’s those cases where taking a break and maybe coming back later is a good idea. I certainly did not write/mean to just ignore them or “bow and scrape”.
“Might get”. And I think that is ok, as long as one does not violate community guidelines. Which, if I remember correctly, does not mean rudeness is ok.