News for hackers. Stuff that matters.
Re:Stop Making Students Use Eclipse (2020) by SPBS on Sunday November 07, 2021 @01:42AM (#29137113)
I pity the student who only knows how to hit the compile button in the IDE and not `javac`. That's a terrible thing to inflict on a beginner, everything will seem like a mystical black box to them with no way forward when they hit encounter their first compilation problem.
Re:Stop Making Students Use Eclipse (2020) by faizshah on Sunday November 07, 2021 @02:35AM (#29137310)
I completely disagree, when I was a beginner programmer my only concern was “how do i make games?” i didn't really care about the game engine, the compilation process, the algorithms even, my focus was on making a game. From middle school until early high school all my coding was in IDEs and I never really tried to use the command line it just wasnt my concern, it was much easier to hit the green run button. Throughout that time I was learning all the basic concepts of how a program is executed, what is control flow, how do you write good code, how does the program even run (i recall one time in middle school trying to figure out if all the lines in a program run at once or in sequence), how do you simplify booleans, how do you debug etc.

It was only later once I was interested in web development that I started picking up linux, learning more deeply about the compilation process, learning algorithms etc. For a beginner all that stuff is just more roadblocks to building your interest and foundation. But later I started hitting a wall when trying web development or 3d game programming where I didn’t have the fundamentals and thats when I started learning all the other skills besides just typing some code and hitting the green run button. In the transition from beginner programmer to Intermediate programmer is where I would say one should learn the behind the scenes concepts not while you’re still building an interest and foundation.

Also interesting aside the programming environment I started on was called “Kids Programming Language” it was like a kind of simplified blackbox environment that I compared to flash (but didnt cost money). Even today I prefer to introduce coding in such blackbox environments like processing.js maybe because of that.

Re:Stop Making Students Use Eclipse (2020) by simion314 on Sunday November 07, 2021 @02:27AM (#29137284)
I am helping my son to learn c++ for his school clases. This shit that makes sense for us has no fucking sense for a beginner.

So for the simple for loop for(int i = 0; i< something; i++){} there is a large number of syntax errors a beginner can do, he can forget to open or close the () , he can forget about the : or placed them in the wrong place, he can forget about the {}.

For sure I do not start teaching my son about the c++ compiler, linker though I show him how the program runs in the IDE debugger and how changes update.

Low level stuff is needed much later for maybe parts of the students, at the beginning is too much junk that needs to be learned like a parrot.

Re:Stop Making Students Use Eclipse (2020) by astrobe_ on Sunday November 07, 2021 @05:28AM (#29138114)
> For sure I do not start teaching my son about the c++ compiler, linker

You could, or at least the tip of that iceberg. Compiling a simple program often is a simple one-line command. Perhaps you can show him how to automate this with a shell script or (gasp) a makefile.

The reason why it is not "junk" is that it will teach him a bunch of important things: that you can "talk" to a computer using different languages, that those languages have different capabilities, different properties and different grammars (syntax), and that languages are all about grammar and semantics.

> Low level stuff [...] at the beginning is too much junk that needs to be learned like a parrot.

I see a problem with teaching there, rather than a problem with what to teach. Anytime you make people learn by heart something that needs to be understood first, there's a failure to teach.

It seems these days that we are trying to rush people who are not even comfortable with files and folders to "code". That's stupid in itself.

How about teaching them how to use a computer before trying to program it? Is it not a saner approach? Even if they don't get programming at least they'll know a bit better how those things actually work.

(And why the hell your son has to learn C++ first thing in the morning when there are more beginner-friendly languages. That's another major failure, if that's true.)

It follows the general philosophy that a computer is just a tool that should be at people's command. But that approach only makes good customers, people that are helpless when problems come. Farmers had that sort of problem and had to fight to have the right to repair their "tool".

The correct and actually beneficial philosophy is user-tool co-evolution, that is mutual adaptation. And for this to happen, the user has to really understand their tool.

Re:Stop Making Students Use Eclipse (2020) by Dirak on Sunday November 07, 2021 @06:55AM (#29138679)
> The reason why it is not "junk" is that it will teach him a bunch of important things: that you can "talk" to a computer using different languages, that those languages have different capabilities, different properties and different grammars (syntax), and that languages are all about grammar and semantics.

This would be a good point if the year where 2003. Compiling code and setting up a proper coding environment is a solved problem that isn't worth the headspace of a young and aspiring programmer. In the modern day, you can open up the console on your browser and start writing and running code just like that.

What's far more important for a beginner is to learn algorithms and data structures, which are timeless concepts that are highly valued and can be applied to any language or environment (and to give OP credit, C++ is a fine language for learning these concepts). Recursion vs iteration, control flow, data structures, time-complexity -- gaining a mastery of these topics will enable the student to write programs that make it worth while to then learn the auxiliary technologies that can make their programs usable and sharable -- unix commands, compilers, linkers, etc -- learning these tools as a means to an end.

> The correct and actually beneficial philosophy is user-tool co-evolution, that is mutual adaptation. And for this to happen, the user has to really understand their tool.

I would argue that a lot of existing technologies such as unix are less so philosophy driven and more so backwards-compatibility driven where things exist purely for historic reasons. The idiosyncrasies of say unix can be a headache for a beginner, and it'd be a better use of their time to only interact with those technologies when absolutely necessary.

Re:Stop Making Students Use Eclipse (2020) by astrobe_ on Sunday November 07, 2021 @10:52AM (#29140446)
> This would be a good point if the year where 2003. Compiling code and setting up a proper coding environment is a solved problem that isn't worth the headspace of a young and aspiring programmer. In the modern day, you can open up the console on your browser and start writing and running code just like that.

"Modernity" has nothing to do with it. In the old days you could switch on you family computer and start entering Basic just like that too. The only difference between yesterday and now, is that the leverage is much stronger.

Adding and multiplying matrix has been a solved problem too for an even longer time, yet we teach students how to do it manually. It's a solved problem, yet we expect them to understand the solution and be able to execute it.

I don't know why it shouldn't be the case also in CS, unless what you want is code monkeys [1]

> Recursion vs iteration

You cannot explain that properly without explaining first that compilers to stack machines, routine calls and jumps. If you skip that you just end up saying "anyway use iteration when your program mysteriously blows up". Actually if you do go all of a sudden low-level like this, your students will discard your explanation and remember the previous rule of thumb. That's one of the reasons why some people bad mouth us, saying we abuse the terms "science" and "engineering" in "computer science" and "software engineering".

CS 101 should always be in assembly language on some 8bits micro-controller. If you don't do that, you are cutting corners.

[1] https://www.joelonsoftware.com/2005/12/29/the-perils-of-java...

Re:Stop Making Students Use Eclipse (2020) by simion314 on Sunday November 07, 2021 @01:30PM (#29142063)
>You cannot explain that properly without explaining first that compilers to stack machines, routine calls and jumps. If you skip that you just end up saying "anyway use iteration when your program mysteriously blows up"

Isn't this a implementation detail? I mean it depends if your course is focused on teaching programming first level (how to get some simple problem then math and code it with if, for and while and some variables) or if you actually have a course about say c++ where you get in detail about why this old languages are designed how they are.

Just to make things clear, I don't like "magic", I too prefer to understand how the computer works from the logic gates up though I am still missing some stuff in my knowledge. But what I noticed is the introduction to programming is very hard, I remember me wasting hours explaining stuff to a student colleague and after those many hours he had the revelation " so this computer is dumb, we have to tell it to do everything step by step , all details..." , so you have the problem of teaching the students algorithms where for myu son they use some C-like pseudo code, then you want them to start running those algorithms ASAP so they can get feedback from the machine , but the syntax is a big issue. It would not be efficient to teach them to also use the command line(Windows and Linux), run the compiler, troubleshoot if the command fails to run(maybe wrong directory or paths), then do the parse the syntax errors and try to find the actual error that produces that sometimes unrelated message. With and IDE you might get the red squiggly lines as you type with some hints on what is missing (before you write 10 new lines and not know what is the problematic one.

But I agree with you if the student is not in the first year of learning programming and indeed the people that do computer science they will study compilers and CPu architecture, and data structures and lot of stuff.

Re:Stop Making Students Use Eclipse (2020) by astrobe_ on Sunday November 07, 2021 @06:22PM (#29144568)
> Isn't this a implementation detail? I mean it depends if your course is focused on teaching programming first level (how to get some simple problem then math and code it with if, for and while and some variables) or if you actually have a course about say c++ where you get in detail about why this old languages are designed how they are.

As much as the fact that numbers are stored on a finite number of bits. Your iterative factorial won't blow up for 100! but gives an obviously wrong result, like a negative number.

Don't blame C/C++; blaming the tool is generally a bad idea (now if your school teaches cooking using flamethrowers that's a different story...). Many languages don't make promises about tail call optimization. A lot of languages don't have "big numbers" (as in Lisp) support - even "modern" ones. Very few languages will accept recursive data structure definitions without using pointers (or references if you want, but the label you put on this can of worms doesn't make much difference). Some will actually give the right-ish result because they use floating point numbers internally, but then you might have to explain why the hell 1/10 does not give exactly 0.1 (which is why, in some algorithms, you compare not-so-real numbers using <= instead of ==).

You cannot escape the fact that computers are mechanical machines, not abstract math machines (unless you load a program that does precisely that). Part of "the Art of Programming" is about overcoming that limitation.

Abstractions are lies by definition. Lies are sometimes a necessary evil, but abstraction abuse is a poison.

Re:Stop Making Students Use Eclipse (2020) by kaba0 on Sunday November 07, 2021 @07:05AM (#29138737)
I’m neutral on whether knowing how to compile from terminal is essential or not, but I disagree with this:

> Compiling code and setting up a proper coding environment is a solved problem that isn't worth the headspace of a young and aspiring programmer. In the modern day, you can open up the console on your browser and start writing and running code just like that.

Noone should get into writing more complex programs without understanding the basics of the tooling, and we at most only have a few auto-generators that will create a skeleton that can and will break with ever so slightly a change.

Re:Stop Making Students Use Eclipse (2020) by simion314 on Sunday November 07, 2021 @06:27AM (#29138475)
In Romanian high schools they learn c++ and maybe soem high schools might still teach Pascal. This is the reality, before high school I helped him with some Lua scripting in Gary's mod so he is a bit familiar already with concepts as variables, if, comparisons etc.

>The reason why it is not "junk" is that it will teach him a bunch of important things: that you can "talk" to a computer using different languages, that those languages have different capabilities, different properties and different grammars (syntax), and that languages are all about grammar and semantics.

My point is not that he should not know about the low level stuff eventually, but keep that for the second or third year.

But int he end the reality s that we write text and some tool makes it run and print stuff on screen, is not important that everyone understands that the compiler has 3 parts/stages and that the linker searches for stuff in some weird paths using some weird algorithm... for first years of teaching I think is OK we focus on understanding the fundamentals and not the tools, we would waste our time teaching them about the c++ linker or Java classpath if they will use Python or JS in the real world.

I identified 2 hard parts

1 create the solution for the problem, like say add all numbers from 1 to n , my son can't invent the solution, I have to make with him similar problems over and over again until things connect (is the same for Math and physics, we repeat same type of problem until it makes sense and he can solve them himself)

2 the syntax, I can work with him, make some simple programs and next week he fails to use "cout" and "cin" properly , this means I failed to identify that he did not properly understand how this crap works and have to do more examples with cout and cin too.

Re:Stop Making Students Use Eclipse (2020) by WithinReason on Sunday November 07, 2021 @04:08AM (#29137689)
I think you hit the nail on the head. For a beginner learning about a language is so much more important than the compiler, and there's only so many things you can pay attention to at a time. When you're starting it's very important to only learn the minimal subset needed. Later you can expand if you need it, but I have been programming for close to 2 decades and I can count on one hand how many times I had to call a compiler directly. I didn't code much Java though, so maybe there it's different?
Re:Stop Making Students Use Eclipse (2020) by astrobe_ on Sunday November 07, 2021 @05:42AM (#29138195)
I have been programming for 3 decades, the 2 last as a dayjob. It seems to me that there is a deep cultural chasm around the new century. Before 1990 you had next to no Internet and computers were shipped with book-sized printed manuals that were trying to explain how the thing worked, not just how to operate it. After 2000 they begun to come with a single sheet showing how to plug them and www address for perverts who want to download manuals.

However it's not entirely a matter of when you started to touch the keyboard. Around me I see "people who understand" and "people who use" of various ages. Guess who helps who more often.

Re:Stop Making Students Use Eclipse (2020) by simion314 on Sunday November 07, 2021 @06:30AM (#29138501)
The pint we are discussing is teaching in the first years, I agree that you don't want to hire a c++ programmer that does know what "linking" means or a Java developer that does not know what the classpath is, or a JS developer that does not know that he can leak memory too and you should manually cleanup sometimes in JS too.
Re:Stop Making Students Use Eclipse (2020) by WithinReason on Sunday November 07, 2021 @05:51AM (#29138233)
In my experience the people who are helping are the ones who use tools that lets them work more efficiently. They have more time to learn new things, while the ones who use less efficient tools use much of their mental effort on the tools themselves.
Re:Stop Making Students Use Eclipse (2020) by irl_chad on Sunday November 07, 2021 @01:56AM (#29137168)
I’ve been programming in Java for about 10 years now. I would consider myself an expert - I’m not just some guy who built crud apps, I’ve gotten messy with Java. I came up programming for minecraft servers - lots of interesting challenges there.

The only time I have ever used javac was for fun. Not once professionally.

Re:Stop Making Students Use Eclipse (2020) by lordnacho on Sunday November 07, 2021 @03:10AM (#29137427)
I think I'm in your camp. When you're a programmer, there's a lot of things you rely on that have been done by someone else and you don't really understand, neatly packaged.

There's not much point in teaching specific things, because there are thousands of specific things that make a program work. Yesterday my code failed because the whitelist at the server was checking my ipv6 address instead of the ipv4 on the website interface. The day before I was stumped on a Rust borrow checker thing.

You end up learning the things that you run into. If you've never needed compiler flags, it's actually not that easy to learn without a motivation. Same goes with memory barriers, garbage collection, and so on.

There's just so many rabbit holes. Telling people they need to know this or that is futile, what they need to know is how to figure out whatever their issue is. Some common tools with some common comments about pros and cons, warnings about where the caves are and what's more trivial than it looks.

My wife is starting a CS degree, and I'll be looking over her shoulder providing this kind of advice, rather than recommending anything in particular.

Re:Stop Making Students Use Eclipse (2020) by ajuc on Sunday November 07, 2021 @02:13AM (#29137240)
It's not that you need to use it. It's that you need to understand classpath and classloaders to solve some problems. And if you always use IDE automation there's no incentive until it's too late. Stuff is autoimported and autoinstalled. There's dozens of forms where you can add paths to classpaths depending on what button you press to run stuff. It's all magic when it works, and when it doesn't work it's random changes in random places to fix it. There's many more variables than if you just run the compiler from the command line.

Good education should give you understanding of the basics, not just higher-level stuff. It's easier to learn high-level stuff when you got the basics down than to unlearn the "magic black box" approach and dive into basics when you need it.

Re:Stop Making Students Use Eclipse (2020) by KronisLV on Sunday November 07, 2021 @02:34AM (#29137308)
> And if you always use IDE automation there's no incentive until it's too late.

Too late for what, though? At any point in time there's a certain subset of knowledge that's most relevant that you're trying to do. If it's learning overall programming concepts not the internals of a language which you may or may not use, then NOT using the IDE automation would be detrimental.

Furthermore, in every single project that i've worked on professionally, attempting to manually manage dependencies and the way things are compiled would earn me odd looks, since that's far more tedious and less productive than just using Maven/Gradle. Not only that, but manually attempting to manage imports as opposed to letting my IDE do everything that's needed in the background would provide me precisely 0 benefit.

In my eyes, "It just works", isn't a bad thing at all, as long as you:

  - can look into the lower level mechanisms (but only once actually needed)
  - can find information about all of it, to make the above easier
Why would you "unlearn" something if you'll still use it in 95% of the cases, the lower level approaches being the outlier?
Re:Stop Making Students Use Eclipse (2020) by ajuc on Sunday November 07, 2021 @03:16AM (#29137459)
> in every single project that i've worked on professionally, attempting to manually manage dependencies and the way things are compiled would earn me odd looks, since that's far more tedious and less productive than just using Maven/Gradle

Of course, we're not talking about doing javac manually when you're working, we're talking about learning the basics before going on to use the automation. BTW Maven and Gradle have plenty of gotchas of their own. If you don't understand what exactly happens you won't solve "magical" problems like old builds of non-snapshot versions remaining in the repo for example.

> manually attempting to manage imports as opposed to letting my IDE do everything that's needed in the background would provide me precisely 0 benefit.

you say that, and just last month I've had to help a guy manually remove an import of Token class from a wrong package that "magically broke his code" :)

> Why would you "unlearn" something if you'll still use it in 95% of the cases, the lower level approaches being the outlier?

Because I've seen a lot of people decide something that always worked is not their responsibility to fix when it doesn't work. That's how you end up with 1 guy in the company that understands the build system :)

Re:Stop Making Students Use Eclipse (2020) by KronisLV on Sunday November 07, 2021 @03:41AM (#29137558)
> you say that, and just last month I've had to help a guy manually remove an import of Token class from a wrong package that "magically broke his code" :)

Hmm, the IDE should offer you multiple classes to import from in a dropdown if there's any ambiguity, as well as highlight any of the methods that aren't present or whose signatures differ and provide popups with essentially the same information that you'd get from the compiler, without even having to compile the project. In that regard, i'd say that IDEs are actually superior. A single ctrl+click that'd take you to the source of the class that you've imported should also clear up any confusion about the import.

Importing the wrong thing and not bothering to figure out why their code doesn't work honestly feels like not being familiar with the language itself (as opposed to the tooling) and for some reason not trying to figure it out on their own by reading what the IDE is telling them - to me, that does sound more like learnt helplessness than anything else, which would also manifest itself when writing code and running into design patterns that they don't understand, as well as any number of other situations.

> Because I've seen a lot of people decide something that always worked is not their responsibility to fix when it doesn't work. That's how you end up with 1 guy in the company that understands the build system :)

To me, this also feels like more of an organizational issue: if companies don't have a RACI matrix (https://en.wikipedia.org/wiki/Responsibility_assignment_matr...) and have a low bus factor (https://en.wikipedia.org/wiki/Bus_factor), then that's on them. If no one takes initiative and the company fails to find employees who will, that's also on them. If only one person understands how things work and doesn't document it, nor are there processes in place to ensure any sort of knowledge transfer, then that's also on them.

That does sound like a dysfunctional environment and at that point builds will be the least of your worries - figuring out how to get code to prod, how to work with the DB and run tests (if any are present), as well as any other steps that haven't been formalized with an "Infrastructure as Code" approach will cause far worse problems down the road. Good luck if any of your servers ever go down and you haven't used something like Ansible for configuring them, but instead it was done N years ago by someone who's long gone along with their knowledge about how to do that.

If you work in such an environment and care about personal success, consider either changing the company or changing companies.

Re:Stop Making Students Use Eclipse (2020) by ajuc on Sunday November 07, 2021 @04:21AM (#29137763)
> Importing the wrong thing and not bothering to figure out why their code doesn't work honestly feels like not being familiar with the language itself (as opposed to the tooling) and for some reason not trying to figure it out on their own by reading what the IDE is telling them - to me, that does sound more like learnt helplessness than anything else

To be fair they have 30 files open in the IDE and 100 lines are highlighted cause of spelling errors, it's easy to miss the line highlighted in red as opposed to yellow or black. If you look at the console output you will know the reason build failed immediately, but that's hidden behind 5 different things begging for your attention.

It is learned helplessness, but there's a reason people learn it - they went straight for the industrial tools with dozens of variables that were never explained. They never learnt how it works under the hood and what all the knobs do. They were taught to follow the tutorial, ignore the warnings, leave the defaults as is and click the big green triangle to run the program. 99% of the time it works and when it doesn't maybe start from the beginning again and follow the tutorial more carefully :)

It's a generalization of course, there are people who problem solve better and worse in any demographic, but in my opinion the tendency is - depending on tools and automation early in your education makes you a worse problem-solver.

> If no one takes initiative and the company fails to find employees who will, that's also on them. If only one person understands how things work and doesn't document it, nor are there processes in place to ensure any sort of knowledge transfer, then that's also on them.

There's organizational goals and processes, and there's company culture. The latter is far more important in practice. And it's mostly shaped by the attitudes and expectations of people, not by putting a document on company's wiki or talking about it in a meeting.

Re:Stop Making Students Use Eclipse (2020) by KronisLV on Sunday November 07, 2021 @04:43AM (#29137871)
> To be fair they have 30 files open in the IDE and 100 lines are highlighted cause of spelling errors, it's easy to miss the line highlighted in red as opposed to yellow or black. If you look at the console output you will know the reason build failed immediately, but that's hidden behind 5 different things begging for your attention.

Then why not address those things first? Most IDEs should allow you to set up inspection profiles or customize the spellchecker and version this configuration so all developers would get a consistent and noise free experience, just like you should be doing anyways when not using an IDE but instead using a code editor together with a linter/formatter and Git hooks.

JetBrains products are actually pretty good in that regard, personally i've sometimes enabled almost all of the warnings, apart from some of the conflicting ones, just to learn about more concerns that i would have otherwise not thought about myself. Not that most people should do in their everyday lives when they want to get things done, but being able to do so is nice.

> They were taught to follow the tutorial, ignore the warnings, leave the defaults as is and click the big green triangle to run the program.

That sounds like that joke about everyone ignoring 99 warnings within their project because the code compiles and runs. Once again, i do believe that this is a bit orthogonal to the IDE vs code editor debate, because if there are warnings within your project you should address them regardless of the tools that you use. If it's a bad tutorial, then why are you using it?

Of course, one can also talk about how defaults should be sensible and the default configurations/examples should never have warnings, but i guess that's just what you get when people don't pay attention to the quality of the things that they make, which is at the very least understandable in our current world.

> It's a generalization of course, there are people who problem solve better and worse in any demographic, but in my opinion the tendency is - depending on tools and automation early in your education makes you a worse problem-solver.

This is an interesting argument. I don't necessarily agree that the automation is the cause for this, merely a canary of sorts. Perhaps the people who don't have the patience to struggle with the "traditional/old" way of doing things would simply not stick around in the industry for long (this probably applies to situations where they'd have to write ASM instead of Python, as an example) due to the frustration they'd experience with all of it and not getting any demonstrable results early on, which is extremely discouraging, as opposed to the more patient and persistent people? In that regard, IDEs indeed enable a wider variety of people to stay within the industry.

I cannot comment on whether that's a bad thing or a good thing, much like some people said that we'd not always have calculators with us and yet almost everyone does have a smartphone in their pocket.

> There's organizational goals and processes, and there's company culture. The latter is far more important in practice. And it's mostly shaped by the attitudes and expectations of people, not by putting a document on company's wiki or talking about it in a meeting.

This is debatable. Those two are not mutually exclusive. Look for environments where both live up to your standards and contribute to both in a positive way.

I certainly have, for example, in one of our projects now all of the configuration lives in Git and is managed through Ansible, so we know when, why and who changed things. I've also made running services more consistent, have containerized apps to get rid of the dependency hell and have written plenty of scripts for automating the bits where people made mistakes, e.g. long DB migration names that need a particular format like V20211107.5.4.2.21.1.0_Alter_Some_Table_Do_Something

At the same time i've also onboarded new people, helped them get started and have explained things both about the projects as well as things in the industry in general, as well have pointed them towards useful learning resources. Being pleasant to work with and having a healthy environment doesn't need to come at the expense of anything else, apart from maybe people's egos sometimes (including mine).

Of course, no one wants to do things for just putting a checkbox in some corporate form, but in practice most of the meaningful ways to minimize risks and make people's lives easier down the line are worth it and there are no excuses not to implement them in any mature company. That's why having documentation and enforcing that it's present is a good idea, especially if you do IaC and most of it is actually code, that's commented as well as the rest of your codebase should be.

Re:Stop Making Students Use Eclipse (2020) by cerved on Sunday November 07, 2021 @04:03AM (#29137665)
You realize the IDE relies on the compiler to do all that magic stuff, right? So when you get to the point where you have a build error because some odd/unexpected import/target all of a sudden everything in the project is an error and the IDE is suddenly not so helpful.
Re:Stop Making Students Use Eclipse (2020) by KronisLV on Sunday November 07, 2021 @04:29AM (#29137805)
> So when you get to the point where you have a build error because some odd/unexpected import/target all of a sudden everything in the project is an error and the IDE is suddenly not so helpful.

This has not been my experience, at least with IntelliJ in the context of Java projects. Bad imports result in IDE highlighting the erroneous usages of the imported class, by showing which methods aren't available. The red squiggles provide immediate feedback and let you know whether any problem lies within the method parameters, or whether the method itself isn't found, before you try to compile/run anything manually. Tooltips about the error contents are also pretty useful, no need to manually go to the file/line based on some text output in a terminal.

Bad language targets/JDK choices are far "louder" as far as the amount of errors output go, but they're easy to figure out, since if you ignore everything being red in the IDE and instead try to compile the project, you'll get the exact same output that the compiler will generate. It's just a matter of Googling those errors, regardless of how you compile your projects.

The only problems of such sort that i've run into have all been because of the Spring framework and its configuration mappings not being detected properly because some developer decided to initialize it in a non-standard way which confuses the IDE. Then again, using a code editor instead of an IDE wouldn't really provide any useful functionality/hints for Spring either, so i guess that ended up being roughly equivalent.

Re:Stop Making Students Use Eclipse (2020) by cerved on Sunday November 07, 2021 @05:19AM (#29138060)
I should preface that my experience primarily comes from Scala and dotnet, I don't really use Java.

Sure you can play Google whackamole but a lot of times the compiler message alone isn't going to help you and when you Google the message you there are 20 questions on SO where the top answer has 1000 votes and says something like, delete the bin folder and restart.

But that's not the issue. The issue is your importing two projects that are targeting different dotnet frameworks.

The dependency project builds fine on its own.

They project using the dependency just loudly proclaims that the imported type doesn't exist.

Rider gives you a few squiggly lines and tells you "Computer says no"

You yourself have to figure out that one of the projects has changed targeting framework while the other one hasn't

Re:Stop Making Students Use Eclipse (2020) by FpUser on Sunday November 07, 2021 @02:08AM (#29137217)
I spent bout 3 years in the 90s when I needed to mess with Java code. Would not dream about going through all those giant piles of enterprise code without IDE.
Re:Stop Making Students Use Eclipse (2020) by saagarjha on Sunday November 07, 2021 @02:11AM (#29137226)
It’s good that we don’t throw people directly into a professional environment when teaching them how to code, no?
Re:Stop Making Students Use Eclipse (2020) by FpUser on Sunday November 07, 2021 @02:51AM (#29137365)
I see no point in wasting time. I learned programming on my own. Started with machine codes. But I grabbed every tool that can help (including IDE) as soon as they appeared. Programming to me was / is a tool I use to make products. I see no point in suffering for the heck of it. Instead of fucking with 10 miles long command line and remembering every squiggly thingy I think it is better to explain to students how computers really work instead.
Re:Stop Making Students Use Eclipse (2020) by saagarjha on Sunday November 07, 2021 @06:59PM (#29144799)
It's nice to learn how tools work internally, so you can fix them when they break. Once you know how to do that, it's fine to graduate into something that does the work for you.
Re:Stop Making Students Use Eclipse (2020) by kaba0 on Sunday November 07, 2021 @07:08AM (#29138760)
I have yet to write java byte code manually, but a high level understanding of them do make me a better developer in my opinion. It’s not about the number of times one uses it, but knowing about the underlying abstraction.
Re:Stop Making Students Use Eclipse (2020) by edave64 on Sunday November 07, 2021 @02:57AM (#29137378)
Yes, what a pitty. They will have to read that compilation error from the IDEs "compile" window and not the console. Or just see the red squiggly lines in the code. That is a problem for some reason.

And you know what happens when people use a black box and that stops working? They start learning how it works then. When it has actually any relevance for them. Until then it's just a more complicated way of doing things that doesn't benefit them in any way whatsoever.

Re:Stop Making Students Use Eclipse (2020) by alpaca128 on Sunday November 07, 2021 @03:34AM (#29137519)
> people use a black box and that stops working? They start learning how it works then.

No, they don't. Because they don't even know where to start. They never learned anything outside of the compile button and the project settings.

I know because I was in that boat once. Nothing ever boosted my programming skills more than learning the basics or another layer of what's actually going on behind the abstractions.

You also need to consider hardware. School computers are not very good in general. The one I had to use for Eclipse took at least 2 minutes to start the IDE until it reached the point it actually reacted to mouse clicks. You can guess how fun the rest was. But I didn't even consider using a lightweight tool back then. Why? Because the only editor I knew was Notepad, and nobody would use that voluntarily. And nobody taught something other than fat IDEs. There was a time I'd programmed for over a year and could not code in languages like C because the program didn't have a Compile button. It was confusing and I gave up.

You underestimate how bad an IDE-only approach to teaching programming is. It comes with batteries but also learned helplessness included.

Re:Stop Making Students Use Eclipse (2020) by approxim8ion on Sunday November 07, 2021 @03:48AM (#29137592)
>No, they don't. Because they don't even know where to start. They never learned anything outside of...

This is fixable though, instead of just telling them to use the tools you can teach students how to use them well. It also doesn't hurt to inculcate a mindset that shows them how to look for help when they are stuck. Discarding the IDE entirely is like throwing the baby out with the bathwater in my opinion.

Re:Stop Making Students Use Eclipse (2020) by alpaca128 on Sunday November 07, 2021 @04:27AM (#29137791)
I'm not saying they should ignore IDEs entirely. But by teaching everything in the context of IDEs is limiting, it hides a lot of things that students don't even know exist. I went through 5+ years of education without knowing what e.g. the classpath is. Guess how much fun it was to fix classpath issues for the first time. One single lesson outside the IDE would have filled this gap.

> instead of just telling them to use the tools you can teach students how to use them well

Yes, that would be great. If only I'd ever met a teacher able and motivated enough to do that. Coincidentally, it's easier to teach about how to run a couple CLI commands and read the documentation than explaining a behemoth including everything from version control to debuggers that's all thrown in your face at once.

Re:Stop Making Students Use Eclipse (2020) by yeputons on Sunday November 07, 2021 @04:35AM (#29137833)
> One single lesson outside the IDE would have filled this gap.

Hmm, what would the lesson look like? I doubt there is a way to teach everything about out-of-IDE/advanced Java development in just a single hour or two. You mentioned CLASSPATH, but there are also JARs with manifest files, there are multitude of build systems with their own configuration languages/plugins/conventions, there are ClassLoaders, there are Java Compiler Plugins... Just too much.

You either list terms for two hours straight without any details and exercises or you choose some semi-random subset of topics, which may very well not include CLASSPATH for some reason. Alternatively, you teach for ten hours instead of two.

Re:Stop Making Students Use Eclipse (2020) by approxim8ion on Sunday November 07, 2021 @04:45AM (#29137878)
>and read the documentation

This part stays intact either way though. You're not wrong that teaching students to run a couple of CLI commands is easier, but they still need to understand what they're doing, otherwise it can be just about as opaque as clicking a button in a graphical program.

Considering the vast majority of them will be using IDEs if they are coding in Java professionally, personally I feel it is worth taking some extra time to at least give them a starting-off point and then letting them access the documentation that the IDEs themselves provide. Whether this comes after teaching them the basics of the language through the barebones text editor + CLI tools approach or is what they are taught from the ground up is a matter of choice.

Re:Stop Making Students Use Eclipse (2020) by agent327 on Sunday November 07, 2021 @04:01AM (#29137649)
So you are saying they don't know where to start, and as an example of someone not knowing where to start you present... yourself, doing the exact thing you claim they can't do.
Re:Stop Making Students Use Eclipse (2020) by alpaca128 on Sunday November 07, 2021 @04:32AM (#29137819)
> yourself, doing the exact thing you claim they can't do

I'm confused. Where did I describe doing something as example of not being able to do it? Maybe I worded something wrong. My point was just that I was completely lost and confused in many areas for years until I went out of my way to learn things properly, despite everyone teaching me to not do it like that.

Re:Stop Making Students Use Eclipse (2020) by agent327 on Sunday November 07, 2021 @04:59AM (#29137960)
You wrote:

"No, they don't. Because they don't even know where to start. They never learned anything outside of the compile button and the project settings. I know because I was in that boat once."

The original statement was that people can learn about lower-level details when stuff breaks. You quoted this statement, and then add the claim they can't learn [when stuff breaks], "because they don't even know where to start". You support that by adding personal experience: "I know because I was in that boat once".

However, for other people in that proverbial boat, it seems to me that they can do the same thing that you apparently did, which is to learn what they need to know - something you deny is possible: "no, they don't."

Also, since we are quibbling about text interpretation, I'm fairly confident that nobody is _teaching_ you not to use a non-IDE approach to development. Maybe they are advising it (on the basis of IDEs being more approachable to a student) or demanding it (on the basis of an entire team working with the same tools), but _teaching_? I don't think that's right.

Re:Stop Making Students Use Eclipse (2020) by crossroadsguy on Sunday November 07, 2021 @02:17AM (#29137253)
I think it’s time to move on :-)

That ship sailed long ago. There’s honestly no need for majority of programmers these days to go cli, vim/emacs way or whatever the one true way is these days. It’s just not needed.

And the ones who need it for their work they learn it, know it, and do it.

Or for the fun and satisfaction of maintaining, running, and keep oiling something antique and/or analogue.

Re:Stop Making Students Use Eclipse (2020) by kevin_thibedeau on Sunday November 07, 2021 @03:03AM (#29137402)
Good luck throwing CI scripts at someone who can only drive an IDE.
Re:Stop Making Students Use Eclipse (2020) by lordnacho on Sunday November 07, 2021 @03:20AM (#29137467)
Everybody who can code started out not being able to do either of those things.

Cross the bridge when you get there.

Re:Stop Making Students Use Eclipse (2020) by crossroadsguy on Sunday November 07, 2021 @05:22AM (#29138077)
I chew CI scripts for breakfast and CD for lunch.

Jokes aside, it’s a decent part of my day job and never faced any problem. Neither do my younger colleagues who never ever were even exposed to those esoteric programming thingies.

The problem is the belief that cli or mildly esoteric CS practises and skills have to be some kind of mandatory initiation.

Re:Stop Making Students Use Eclipse (2020) by denton-scratch on Sunday November 07, 2021 @03:30AM (#29137501)
> There’s honestly no need for majority of programmers these days to go cli

I never did CS classes (I taught a couple once).

I agree that you don't need to learn CLI in the first year.

The idea that the majority of "programmers" can tackle production code without ever being introduced to a CLI is terrifying, though. I'm astonished to learn that some people think you can get a Computer Science degree without learning processor architecture, IO, operating systems and so on.

FWIW, I hate git. It's the devil to learn, and it solves a load of problems I've never had. I wouldn't inflict it on a first-year student.

Of course you need to know what a file is to use git; but you need to know what a file is to use any VCS. I don't see how you can teach someone programming before they know what a file is.

Is a CS course now little more than a way to get an introductory programming qualification?

Re:Stop Making Students Use Eclipse (2020) by yeputons on Sunday November 07, 2021 @04:30AM (#29137808)
Everything does seem like a mystical black box with no way forward when you're just getting started. Does not matter if it's GUI, CLI, IDE or a raw compiler.

What is `SyntaxError: invalid syntax` for `print(hello world)`? What is `NameError: name 'Print' is not defined`? I don't have any names, I just want to show a string.

The only differences are: a) amount of new things to learn (e.g. students already know how to use GUI, but learning CLI is a whole separate skill); b) quality of the tool (e.g. how relevant/readable error messages and configuration are); c) your ability to get help with the specific tool you're using.

You have to stop digging into details somewhere. You can always go deeper, if you want.

In my opinion, it's perfectly reasonable to learn one thing at a time. You can start with learning CLI and then learn Java using javac. You can also start with learning some IDE and its build facilities and use Java completely inside it.

Re:Stop Making Students Use Eclipse (2020) by karottenreibe on Sunday November 07, 2021 @02:11AM (#29137223)
What sort of compilation problem would that be that's only solvable by manually running javac outside your IDE?
Re:Stop Making Students Use Eclipse (2020) by Supermancho on Sunday November 07, 2021 @02:48AM (#29137355)
> What sort of compilation problem would that be that's only solvable by manually running javac outside your IDE?

Figuring out compilation errors when using the configuration of the IDE versus using known system environment variable that are using different values. Notably the resolution of classpaths.

The fact you are asking about it, is scary.

Re:Stop Making Students Use Eclipse (2020) by matsemann on Sunday November 07, 2021 @03:15AM (#29137452)
Way to gatekeep, bravo.

I've programmed java professionally for 6+ years, never had to deal with that.

Re:Stop Making Students Use Eclipse (2020) by Supermancho on Sunday November 07, 2021 @03:43AM (#29137569)
Even scarier that you have that attitude, given your experience.
Re:Stop Making Students Use Eclipse (2020) by matsemann on Sunday November 07, 2021 @09:14AM (#29139571)
Or maybe you're just wrong? Or maybe I'm out there solving business problems while you're dabbling with your tools?
Re:Stop Making Students Use Eclipse (2020) by approxim8ion on Sunday November 07, 2021 @03:43AM (#29137570)
All these things are exposed by the IDE if you are willing to look for them. This kind of purism is pointless in my opinion. I did start off with just vi and javac and never complained, but I feel like it's just a matter of knowing the tools you use, even if some of them are an abstraction over the barebones stuff.
Re:Stop Making Students Use Eclipse (2020) by Supermancho on Sunday November 07, 2021 @03:47AM (#29137585)
We're talking about how you should learn to use the tools you are using.

Talking about implicitly learning from your IDE is a lot like learning to program with React versus the browser console (or a sandbox). I'm not sure how 'purism' applies.

Re:Stop Making Students Use Eclipse (2020) by chrisseaton on Sunday November 07, 2021 @09:03AM (#29139508)
> We're talking about how you should learn to use the tools you are using.

I don't think there's any difference between using javac and using an IDE. They're both tools that you configure and the press a button to run. What's the difference?

And the danger with saying 'you should understand it at the lower level' is anyone can challenge you if you understand the tools you use at a lower level, and at some point you won't, because nobody understands it all, and then they can point and laugh at you like you're pointing and laughing at others.

Re:Stop Making Students Use Eclipse (2020) by WithinReason on Sunday November 07, 2021 @04:16AM (#29137737)
An IDE and a command line are just different interfaces to the same thing, the compiler. One is not somehow superior to the other, in principle they are interchangeable.
Re:Stop Making Students Use Eclipse (2020) by approxim8ion on Sunday November 07, 2021 @03:50AM (#29137600)
I'm not saying it has to be implicit. If we are talking about a student environment there's no reason why educators can't do a deep dive to explicitly learn the features of the tools they are using.
Re:Stop Making Students Use Eclipse (2020) by agumonkey on Sunday November 07, 2021 @02:29AM (#29137291)
I'm viscerally into this camp. I just cannot fathom using black box. I went to college to engineer not to reuse, at least not blindly. And things like eclipse have just too many layers and principle-less helpers. Even when an intern, we had to make tiny eclipse wizards (that didn't add anything of value, just cute helpers ala visual studio to setup some files) I was physically unhappy because it's the opposite of how I'm wired. Whenever something doesn't go your way.. well you're back to square one, having to understand java, javac, the jvm AND eclipse stack and logic on top.
Re:Stop Making Students Use Eclipse (2020) by agent327 on Sunday November 07, 2021 @04:10AM (#29137702)
Do you have any clue how many layers there are below the java/javac layer? What made you decide that that particular layer is where it's at, and that just one layer up everything is bad?
Re:Stop Making Students Use Eclipse (2020) by agumonkey on Sunday November 07, 2021 @04:50AM (#29137911)
Good point. Somehow the compiler is the critical tool, eclipse was failing to provide value while impeding me to work too early for me. I was happier with a makefile most of the time because I had the information in short form under my eyes. With the jvm you have a spec, it's somehow meaningful, Eclipse APIs were quite horrendous and if you need to go that low to understand why your project fails to run it's not a good tool.
Re:Stop Making Students Use Eclipse (2020) by agent327 on Sunday November 07, 2021 @05:41AM (#29138184)
I completely understand that. I'm not a java programmer; my experience is limited to fixing one tiny bug, in one java program, and I struggled a bit with Eclipse before realising building from the commandline was also possible and pretty simple.

But I do most of my work in Visual Studio, which I prefer over vim+make+gdb because a powerful IDE does give you a significant advantage over a 'mere' text editor. I also find that working in vim imposes a much higher mental load than doing the same in MSVC (and don't get me started on vi without the 'm'...).

Re:Stop Making Students Use Eclipse (2020) by agumonkey on Sunday November 07, 2021 @06:58AM (#29138700)
I have no conclusion on the matter to be honest. Like many I wasted time trying to setup emacs for language L and had a broken support system (especially regarding debugging). But I often felt that IDEs brought as much cost as value. And up until very recently, linting and ergonomics were below what I'd got with emacs (and if you've seen the regular posts about magit you have an idea of what I mean).
Re:Stop Making Students Use Eclipse (2020) by jcelerier on Sunday November 07, 2021 @03:43AM (#29137568)
I pity the HN commentor who only knows how to hit the "power on" button on his computer and not how the CPU will actually power-up and start running instructions.
Re:Stop Making Students Use Eclipse (2020) by IshKebab on Sunday November 07, 2021 @03:36AM (#29137527)
> everything will seem like a mystical black box

The whole reason computers work at all is because of the many many layers of abstraction. At some point everything seems like a mystical black box to you too.

Sure it might be at a lower level. But there's always a point where you get to "I just do this and it does what it says it should. I don't understand how it works." Do you feel like a terrible thing has been inflicted on you because you don't know how the Linux kernel works internally, or how `idiv` is implemented, or which SRAM cells your CPU uses?

You have to stop somewhere, and running javac manually is something almost no Java developers do so learning it definitely seems like a terrible thing to inflict on beginners.

Re:Stop Making Students Use Eclipse (2020) by cerved on Sunday November 07, 2021 @04:13AM (#29137720)
Java is a terrible thing to inflict on beginners
Re:Stop Making Students Use Eclipse (2020) by irl_chad on Sunday November 07, 2021 @04:34AM (#29137830)
My favourite programming language is supreme because of some objective reason and totally not because it’s my favourite.

Yeah we’ve all heard that one before

Re:Stop Making Students Use Eclipse (2020) by IshKebab on Sunday November 07, 2021 @05:05AM (#29137986)
Hard to disagree with that! Though it does have some redeeming features: it's statically typed, runs pretty fast, has absolute rock solid code intelligence (the best of any language in my experience) and a ton of learning resources.
Re:Stop Making Students Use Eclipse (2020) by cerved on Sunday November 07, 2021 @05:28AM (#29138112)
Unfortunately it's ridiculously verbose and static typing isn't inferred.
Re:Stop Making Students Use Eclipse (2020) by in3d on Sunday November 07, 2021 @05:08AM (#29138008)
Sarcasm? I hope?