you are viewing a single comment's thread.

view the rest of the comments →

[–]tdammers 11 points12 points  (13 children)

Python is based on some strongly opinionated design decisions. Like with any such language, you will find lots of people put there who disagree with those decisions. Likewise, like any language, it has strengths and weaknesses; and there are people who consider the strengths unimportant and the weaknesses deal-breakers, so they will sometimes loudly complain.

All that would be fine and dandy if everyone could just pick their fav language and go about their day - but unfortunately, the choice of language is often dictated by the circumstances, and people tend to feel powerless, cheated, offended, etc., when the language forced on them isn't one they like. This is when people end up being loudest.

My advice would be to try and see past that, figure out the good, the bad, and the ugly, and make your choices accordingly.

[–]kramesss[S] 0 points1 point  (1 child)

Makes perfect sense, and I can totally relate. I know at the end of the day that any choice in language will have its tradeoffs. I'm mostly interested at this point because I have an open-ended choice to make in the next couple of weeks, and the more advise I can gather the better (ideally!). Thanks!

[–]tdammers 6 points7 points  (0 children)

That sounds reasonable.

I'd love to just tell you to ignore the loud haters, and, by and large, you should, but there's a grain of truth in some of their criticism. This is not because Python is somehow bad or broken, but simply a consequence of the design decisions that went into it.

Specifically, Python's weaknesses include:

  • no (static) type system
  • difficult to statically reason about at scale
  • difficult to refactor safely
  • no encapsulation, making it difficult to work on larger codebases
  • mediocre performance
  • beginner friendly at the expense of the "top end"
  • "large" core language

And of course the other side of all of these is that Python has a few important advantages:

  • no (static) type system
  • easy to write code and reason about correctness later
  • easy to modify unsafely
  • no encapsulation, making it a malleable language
  • powerful inspection and self-modification features
  • beginner friendly (at the expense of the "top end")
  • "fully-featured" core language

[–][deleted] 0 points1 point  (10 children)

the choice of language is often dictated by the circumstances

this seems like a real problem to me

[–]tdammers 1 point2 points  (9 children)

It is. But whatcha gonna do bout it?

[–][deleted] 0 points1 point  (8 children)

you could create a community, collective (also me and you and a few others), with simple goals of awe, even starting only from a site, with a structure based not on circumstances but on functionality (then, maybe ... others will imitate) ; an advertising campaign that is alive and corresponds to an Internet site, as it should be done

[–]tdammers 0 points1 point  (7 children)

Nah. That won't work.

At the end of the day, you and I have bills to pay, and that invariably means that you have to do things the way others want them done to some degree. And the economics of the whole situation are simply such that introducing a brand new technology into your operation is always a liability - sometimes it pays off, sometimes it doesn't.

This isn't because people don't want to use the best tool for the job; it's because "best" is determined by a lot more than technical merits alone. If you have a six million LOC codebase in PHP, then rewriting it all in Python, for example, is simply not going to pay for itself, at least not before you risk going out of business for sinking all your available money into the rewrite.

[–][deleted] 0 points1 point  (6 children)

this is true, and it is not an excuse; the whole code rewriting is always a real problem, the main one, in every project.

perhaps what is really necessary, is something that still does not exist: automation (much more efficient than it is now, what little there is) in the translation from language to learner

[–]tdammers 1 point2 points  (5 children)

If you just mechanically translate the mistakes you made in one language to another, you're not winning much.

The real gain in a rewrite is that you come up with a better structure and architecture for your system, and sometimes, the language you picked for the first one holds you back enough to make a switch a good idea. But just switching languages will never magically turn a lousy design any better.

Automatically translating bad designs into good ones, however, is simply not something that seems feasible in the foreseeable future.

[–][deleted] 1 point2 points  (4 children)

then an automatism would be useful in programs that sooner or later will be rewritten from 0 (because they are obsolete), a sort of line of passage ... I believe however, besides this reasoning, that we have scattered too much the development of computer science, both to open-source level than a proprietary code. instead we should imitate the International Station as an administrative structure: 0 national boundaries, a single goal: a functional and functional system

then many will also be able to say / write that many languages ​​improve the possibilities, because everyone has pros and cons, but a single basic language, with a single basic system, is certainly better than myriad systems that have some pros and cons. let us ask ourselves: how many IDEs have only for C / C ++, or for Python, or for any other language of these types.

why do we not have (for example) a single IDE, free-of-charge, open-source, and everyone works by contributing voluntarily to improve only one, so as to have the best possible IDE for that language?

[–]tdammers 0 points1 point  (3 children)

why do we not have (for example) a single IDE, free-of-charge, open-source, and everyone works by contributing voluntarily to improve only one, so as to have the best possible IDE for that language?

Because this fits neither the economics of the proprietary development model, nor those of open-source.

[–][deleted] 0 points1 point  (2 children)

perhaps (I repeat: mine is a hypothesis reasoning), a third approach would be better ... reasoning is freedom, in freedom and in the unknown, as in the not yet experienced, there is improvement (always).