While I personally agree that Python sucks, largely because I don’t agree with whitespace indentation defining blocks and I also don’t like Java…I’m neutral on Go, depending on the use case.
I know plenty of people who love Python, but I kind of wonder if it’s because they were brought up on it. I wasn’t. So we’re just in different camps. Whatever floats your boat I guess.
I was brought up on Python and also do not like it for a variety of reasons, both practical and by personal preference. I also have the opinion that if you are trying to learn software engineering it is not a good language to start out with, despite it being so easy to pick up at first.
Some people try to use Python’s popularity as a counterpoint, and while it does show that my view is a minority opinion, it’s not a very convincing argument for the language itself.
if you are trying to learn software engineering it is not a good language to start out with
Curious what options you would suggest instead? I’m an old C/++ embedded diehard, but I do use Python and have been considering it as the next step for my 9yo daughter after Scratch.
Python feels like the modern replacement for Basic that I grew up with as a kid. Interpreted, garbage collected, good library support, sane typing and not too wordy or confusing. Lots of options to do fun things with it from games to robots.
IMO for a young beginner the C-likes are too strict and segfault-y, Perl is too permissive and could breed sloppy habits, Basic is obsolete, all the web languages are way too application specific, I haven’t had a chance to get into Rust yet, and fuck Java as a matter of principle lol.
Well, I think for a 9 year old it’s fine. I think the stage where you would run into issues is when trying to get into “actual” software development, where the flexibility in scoping and typing afforded by Python can lead to some bad habits (e.g. overusing global/shared variables, declaring them from within functions, catching errors late instead of validating data first, …)
I don’t have a ton of experience with it but I think C# strikes a pretty good balance between strictness and beginner-friendliness. Modern Java isn’t all that bad either, though it doesn’t have very good options for fun things to build. But again, I don’t think this necessarily applies to a child; I’m an educator at a university so both my target audience and point of reference are freshman compsci students.
Thanks for your input, C# is a language I never really considered but it does sound like a good middle ground and possibility a good successor to Python for her. Very popular, powerful and a better approach to a “true OOP” language than Java IMO. Though as you state modern Java has come a long way from its origins.
overusing global/shared variables
I see you’ve been reviewing my Python code, lol. The structure of the language does lend itself to using globals as a shortcut when they shouldn’t be… And as a primary embedded dev I will admit that I’m already a heavier user of globals than most. But I agree being able to declare global variables inside a function is pretty gross, as is the scoping/declaration issue where you can easily end up with global and local variables with the same name without even throwing a warning.
you’ve probably read this many times before. prototyping, three users applications, routine, quick test, owning pretentious kids with some class inheritance, medium / small company data processing, free very good editors with all you need to code/debug, speed not necessary, my boss doesn’t like it… stuff like that
I love python just because of the community. It is a very popular beginner language (for better or for worse, depending on who you ask) and its community has grown to embrace that. They have the most active Discord I’ve seen for a language and they do a lot to curb elitism and plain old rudeness. Not that other communities are necessarily bad, but the Python community is where I end up whenever I really want to feel passionate about programming.
While I personally agree that Python sucks, largely because I don’t agree with whitespace indentation defining blocks and I also don’t like Java…I’m neutral on Go, depending on the use case.
I know plenty of people who love Python, but I kind of wonder if it’s because they were brought up on it. I wasn’t. So we’re just in different camps. Whatever floats your boat I guess.
I was brought up on Python and also do not like it for a variety of reasons, both practical and by personal preference. I also have the opinion that if you are trying to learn software engineering it is not a good language to start out with, despite it being so easy to pick up at first.
Some people try to use Python’s popularity as a counterpoint, and while it does show that my view is a minority opinion, it’s not a very convincing argument for the language itself.
Curious what options you would suggest instead? I’m an old C/++ embedded diehard, but I do use Python and have been considering it as the next step for my 9yo daughter after Scratch.
Python feels like the modern replacement for Basic that I grew up with as a kid. Interpreted, garbage collected, good library support, sane typing and not too wordy or confusing. Lots of options to do fun things with it from games to robots.
IMO for a young beginner the C-likes are too strict and segfault-y, Perl is too permissive and could breed sloppy habits, Basic is obsolete, all the web languages are way too application specific, I haven’t had a chance to get into Rust yet, and fuck Java as a matter of principle lol.
Well, I think for a 9 year old it’s fine. I think the stage where you would run into issues is when trying to get into “actual” software development, where the flexibility in scoping and typing afforded by Python can lead to some bad habits (e.g. overusing global/shared variables, declaring them from within functions, catching errors late instead of validating data first, …)
I don’t have a ton of experience with it but I think C# strikes a pretty good balance between strictness and beginner-friendliness. Modern Java isn’t all that bad either, though it doesn’t have very good options for fun things to build. But again, I don’t think this necessarily applies to a child; I’m an educator at a university so both my target audience and point of reference are freshman compsci students.
Thanks for your input, C# is a language I never really considered but it does sound like a good middle ground and possibility a good successor to Python for her. Very popular, powerful and a better approach to a “true OOP” language than Java IMO. Though as you state modern Java has come a long way from its origins.
I see you’ve been reviewing my Python code, lol. The structure of the language does lend itself to using globals as a shortcut when they shouldn’t be… And as a primary embedded dev I will admit that I’m already a heavier user of globals than most. But I agree being able to declare global variables inside a function is pretty gross, as is the scoping/declaration issue where you can easily end up with global and local variables with the same name without even throwing a warning.
you’ve probably read this many times before. prototyping, three users applications, routine, quick test, owning pretentious kids with some class inheritance, medium / small company data processing, free very good editors with all you need to code/debug, speed not necessary, my boss doesn’t like it… stuff like that
I love python just because of the community. It is a very popular beginner language (for better or for worse, depending on who you ask) and its community has grown to embrace that. They have the most active Discord I’ve seen for a language and they do a lot to curb elitism and plain old rudeness. Not that other communities are necessarily bad, but the Python community is where I end up whenever I really want to feel passionate about programming.