![](/static/66c60d9f/assets/icons/icon-96x96.png)
![](https://beehaw.org/pictrs/image/7a17afb3-71f4-4ef1-a5ce-d2975ba46c88.png)
They share a genealogy, but as programs are created and maintained in different languages, developers come to wish for different syntaxes that would (1) reduce how much code must be written to accomplish a common logical task, (2) make the code that’s written easier to read/understand, (3) reduce concerns about variable types until runtime, and/or (4) overly restrict not just the variable types but also if/when variables can be modified. This list is not exhaustive.
There is a partial programming language family tree here, showing which languages influenced other languages: https://www.researchgate.net/figure/Genealogy-of-Programming-Languages_fig36_260447599
My first programming language was QBasic, then Visual Basic, then Java, then C# (most experience with), then C++, then Python, and now Rust. Only when I learned C++ in college did I truly grasp the power of memory management. I think it’s important for new programmers to have some understanding of and experience with pointers, but it doesn’t need to be your first language. I think it’s okay to start with Python or C#, but you’ll want to go back and learn the hard stuff at some point (C++ and then Rust). Python will be super easy to learn the basics (data structures, algorithms, etc.). C# is also a good choice, but has you learning a few more things at the same time you’re trying to learn the basics.