3 ms·
> Tell me any library which can only be built for Python? Are you really making the "every programming language is Turing-computable" argument? All your talk
by eesmith 4y ago
> Tell me any library which can only be built for Python?
Are you really making the "every programming language is Turing-computable" argument?
All your talk of features is missing an important point - Python is one of the few languages designed with insight from how to develop a programming language for non-programmers. In Python's case, experience drawn from ABC.
These are people for whom "public class java { public static void" is a barrier to entry.
For whom diagnosing segfaults is arcane knowledge.
And for whom hygienic macros sounds like a bathroom product.
I like Python because it's a language that my colleagues - most of whom are not software developers but who do some programming for their research - can productively use. Even with all the complexity of modern Python.
So no, there are zero features in Python which don't exist in other programming languages.
And it doesn't matter.
What better options do you suggest to a grad student in chemistry, biology, or physics?
- z9znz 4y agoYou are just arguing that a simple language is good for beginners, and I agree with that. We want a beginner language which has easy (and consistent) syntax, no requirement to specify datatypes (implicit), and can be interpreted (no compiling required). In its most basic use, namely just writing procedural code with basic built-in data structures, Python is pretty ok. But it has some warts and gotchas, not the least of which is mutable default parameters in functions. Now maybe the ultimate beginner doesn't use defaults for parameters, so it's not a problem (yet) for them. Same goes for the OO features. While the beginner may not write OO Python, using modules written by other people probably will require them to step into the Python version of OO. Now it gets messier. Ruby is superior in the simple beginner case and the complex (OOP) case. It is superior and more consistent for functional cases as well, despite it not being designed as a functional language (it still has mutability risks all over the place as does Python, except for that default parameter razorblade). The only beginner-unfriendly thing I can think of for Ruby is the optional parenthesis on function calls. I still think optional parens is a bad design choice, and I encourage people to always use them. It's usually a style choice (but not always, because sometimes it matters for how code is parsed), and I think it's better to know as a reader that foo.bar() is a function being called. foo.bar is unclear. One small but significant feature Ruby provides is the ability to write more expressive function names with ? and !. A common pattern is to use foo? to indicate that the function will return a boolean. The alternative, without ?, is is_foo(). Likewise, ! usually (at least for standard libraries) indicates mutation. Back to the point though, Python used simply in isolation is not terrible for a beginner. But inevitably outside modules will get used, and the misfeatures of Python will appear more frequently. And then a further eventuality is that this new programmer will now be a "python programmer", choosing Python for future bigger work because that's what they know. Why not start with a language that is also beginner friendly but also better for large, long-lived projects?
- eesmith 4y ago> You are just arguing that a simple language is good for beginners, and I agree with that. No, I am not. As you must surely know, "simple" is not a well-defined concept. Forth is a simpler language than Python. Yet I am certainly not saying it's as good a language for beginners. I'm saying that languages can be treated as a user interface, and improved based on feedback with the target audience. Python - unlike most other languages - incorporated insights from developing the ABC language as a teaching language for non-programmers. Your "We want a beginner language" description is too broad as it also describes ABC, without including discussion of why Python succeeded where ABC did not. > Ruby is superior in the simple beginner case If you are basing things on your intuition and personal experience, then my intuition and experience says otherwise. That's why these arguments are rather pointless. > One small but significant feature Ruby provides Yes, I get it - you like Ruby. But shrug some people like Fords while others prefer a Chevy. And still my point is that Python explicitly incorporates design elements based on experience from teaching non-programmers to program. If it's part of Ruby, it's much less of an emphasis. That's nothing at all to do with a language feature, which was your focus earlier.