• 0 Posts
  • 64 Comments
Joined 2 years ago
cake
Cake day: June 18th, 2023

help-circle





  • That’s a very narrow definition of limited usefulness, and in practice it means your code is overly verbose and inflexible. You get stuck with polymorphism everywhere or you’re explicitly converting data all the time for nothing.

    Plus, if you try to process some data from an external source (which you have to if you want to do anything useful) you don’t have any way to test if it’s the right type before execution, so you’re back at the same place that Python is, without the ability to cleanly recover.


  • You’re spewing nonsense.

    There absolutely is a type system in Python. The fact that you have dynamic types doesn’t preclude having also strong types and certainly doesn’t mean you don’t have types at all. Try to do 2+“a” in Python and you’ll get a TypeError. The thing with Python is that values have a type, not variables. Because all variables are essentially pointers.











  • Branches are distinct.

    Let’s say you have a main and a dev branch, and you periodically merge dev into main. Because of fast forwarding (on by default) the main branch is completely gone from the history. If you then add bug fixes and project branches it becomes a tangled mess really quickly and it’s nearly impossible to understand the structure by looking at the tree.

    On mercurial every branch is named and distinct forever. You don’t have to try to understand what happened to the project since it’s obvious by looking at the tree.

    Now there are ways to have a clean git history, but afaik you either need to make sure nobody ever messes it up or have everyone rebase everything and only keep the history of the main branch.

    When working in a hyper structured organization that may work, but for more casual developers (scientists, students) that aren’t system experts and where you have messy history, mercurial default settings are less confusing, easier to learn and produce better results.