DEV Community

"Stop Making Students Use Eclipse"

Leonora Tindall on April 12, 2020

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...
Collapse
 
blueos profile image
Guillaume Maillard

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.

Collapse
 
mburszley profile image
Maximilian Burszley • Edited

stuck with IntelliJ.

It's funny you phrase it that way because every Java dev (and other lang devs) I know likes it way more than Eclipse.

Teaching Python is just teaching bad design like "spaces are important" or OO is just passing "this" as first argument.

Using statements like that makes me think you don't understand why people teach Python first or know Python at all.

Collapse
 
blueos profile image
Guillaume Maillard

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...

Thread Thread
 
mburszley profile image
Maximilian Burszley • Edited

People teach Python mainly because of AI frameworks.

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.

Thread Thread
 
noracodes profile image
Leonora Tindall

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.

Collapse
 
noracodes profile image
Leonora Tindall

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!

Collapse
 
blueos profile image
Guillaume Maillard

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?

Thread Thread
 
noracodes profile image
Leonora Tindall

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.

Thread Thread
 
blueos profile image
Guillaume Maillard

"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.

Thread Thread
 
noracodes profile image
Leonora Tindall

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.

Collapse
 
mburszley profile image
Maximilian Burszley • Edited

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).

Collapse
 
noracodes profile image
Leonora Tindall • Edited

Disagree strongly on the premise you should walk to school uphills both ways because someone else had to.

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.

The core concepts never reach people because you don't know what you don't know.

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.

the only folks that work on *nix are the devops types that coordinate ci/cd (from a container, not as their desktop).

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.

Collapse
 
mburszley profile image
Maximilian Burszley • Edited

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.