Using Java or Python in a professional IDE like IntelliJ IDEA, NetBeans, PyCharm, or Eclipse is not a good first introduction to programming for co...
For further actions, you may consider blocking this person and/or reporting abuse
Sorry but javac is not your compiler when using Eclipse.
Eclipse is by far the best IDE for professional Java developer, it's good to have experience with it even if Android developers will be stuck with IntelliJ.
Teaching Python is just teaching bad design like "spaces are important" or OO is just passing "this" as first argument.
Why not teaching C ?
Students will learn what a compiler is, how computer works, and something more important : how blazing fast is a C program.
It's funny you phrase it that way because every Java dev (and other lang devs) I know likes it way more than Eclipse.
Using statements like that makes me think you don't understand why people teach Python first or know Python at all.
By "stuck", I mean, on Android you have no choice.
IntelliJ is slow, the debugger is far from the Eclipse one, it doesn't handle large projects (> 500klocs, ie the kind of projects I'm working on)... the list of issues is long.
See jrebel.com/blog/java-ide-usage-stats for real stats,
IntelliJ is #2 (thanks for Android).
People teach Python mainly because of AI frameworks.
Some aspects of why to teach (as a first langage is not a good idea) can be found here : medium.com/@natemurthy/all-the-thi...
Yeah.. no. It's a multi-purpose, multi-paradigm language where it's strengths are being general-purpose and multi-platform. Long seen as an alternative to bash scripting for complex automation, used as a web framework with the likes of Django and flask, and many other things are built on it. The ML/AI packages are fairly recent and built on C anyways
A 2,000 person survey is quite small.
The Murthy rant doesn't specifically address Python as a first language, and also really very... correct.
In any case, I'm not arguing for any particular language or tool - just against slapping bandaids on problems that require thoughtful solutions.
I recommend Python only as an example; but I think Java is too large a language to teach as a first language.
Regarding the Java compiler used, obviously Eclipse uses the JDT incremental compiler - but I doubt any student is taught that in their first class!
Teaching Java doesn't mean to teach every aspects of it, you can do a lot with a subset of Java.
Python being dynamically typed, isn't it confusing (or magic) for students and a source of bad habits?
Dynamic typing is not a "bad habit". I'm personally a fan of static typing, and write a lot of Rust, but dynamic typing is a valid engineering decision, especially for beginners.
"dynamic typing is a valid engineering decision"
Why?
Is discovering bug at runtime better than at compile time?
Strange view of what software engineering is.
This isn't an argument I'm interested in having with you. I could just as easily say, "why is it acceptable to have null values? Is discovering a bug at runtime better than at compile time? My favourite language, Rust, does not have nulls."
But that would be off topic and pedantic because we're discussing something completely other.
Disagree strongly on the premise you should walk to school uphills both ways because someone else had to. It's important to use the tools you'll be using in your career so you're productive and familiar. I'm largely a self-taught dev and don't have degrees in CS (but do in net. eng.), but I think it's a detriment to handicap yourself.
I feel like the middle of your article addresses failings on teaching CS, not why people shouldn't use IDEs. The core concepts never reach people because you don't know what you don't know.
For background, I work for a fortune 10 company as a SRE and the only folks that work on *nix are the devops types that coordinate ci/cd (from a container, not as their desktop).
I'm really sorry that that's what you took away from this post - it's not at all what I meant. This is why I pair the recommendation to not use an IDE at first with the recommendation to not teach Java (a language which really needs an IDE to be productive) at first, and suggest Python or other languages.
I absolutely agree. A big part of that, though, is instructors trying to shield their students from the reality of the computers they're working with - in large part by using IDEs instead of programming in a text editor and compiling at the command line.
This is a common experience in larger companies, but as .NET and other technologies move away from requiring proprietary platforms that will be less and less the case. Even Windows developers have a real shell at their fingertips these days.
I'm not certain this is the case. All the tools I use on Windows also have *nix counterparts. I think it's for ease of maintenance from an administrative and support perspective. My shell, browser, IDE and build toolchain all run on every platform (except Jenkins, this is the only pain point I have).
As a primarily Python dev these days, I'm not certain I'd recommend it first; package management is still a major point of pain. Rust has a much more intuitive first experience and better documentation imo. C# w/ .NET Core is also leagues better than it was in the Framework-only days, though using Visual Studio still provides a lot of "magic" to me.