Earlier quoted context omitted.
What makes the CLI interface to the compiler more essential of an abstraction than a GUI interface to the compiler? Just that it is simpler, or that it's been around for longer? A GUI isn't necessarily just calling CLI apps in the background, it could be using programmatic interfaces too.
> " What makes the CLI interface to the compiler more essential of an abstraction than a GUI interface to the compiler? " Build and CI systems don't go through a GUI IDE, making it required for developers to understand the CLI anyway.
Don't Make Students Use Eclipse
171–180 of 255 posts
Re: Don't Make Students Use Eclipse
#172Earlier quoted context omitted.
What makes the CLI interface to the compiler more essential of an abstraction than a GUI interface to the compiler? Just that it is simpler, or that it's been around for longer? A GUI isn't necessarily just calling CLI apps in the background, it could be using programmatic interfaces too.
The CLI is more explicit than a GUI. In a GUI, compiling / running / testing your code is an afterthought that happens at the click of a button. In the CLI, you have to be explicit about what actions are taking place. You have to physically type in what command you want to run and the different arguments to it. The convenience of a GUI is fantastic, but the abstraction makes it a very bad learning tool. Being able to…
It doesn't matter whether I tick a checkbox for compiler warnings or add that option to the command line. The only difference is the IDE makes options easier to discover.
It's the same for Git. A decent GUI gives you a much better visual picture of the state of your working copy.
Re: Don't Make Students Use Eclipse
#173Earlier quoted context omitted.
CS students should be learning those fundamentals by programming , and so they should be taught enough tooling to program without tripping over themselves all the time. Programming without a build system, a version control system, or a reasonably intelligent editor is unnecessarily difficult and gets in the way of the concepts being taught.
> Programming without a build system, a version control system, or a reasonably intelligent editor is unnecessarily difficult and gets in the way of the concepts being taught. Programming with a build system, with a vcs and/or an editor with intellisense features will unnecessarily burden the student with learning these extra things. vanilla java, taught using a pure text editor (like pico, or notepad++, that has a s…
VCS is essential in a solo project of any real complexity because you will reach intermediate milestones, go off on tangents that don't pan out, and then desperately wish you had a way to get back to the working state you had hours previously. A true VCS with branching and merging is technically overpowered, since you could just make copies of the source for each "commit," but you may as well just use Git.
Build system is not about shipping to people, it's about running what you just wrote on your own machine when it's bigger than one unit of compilation (C file, Java class, whatever). You don't need anything fancy, can just be Make or a shell script, but building and running the whole project should take no more than a few keystrokes. Kids should be fumbling with GCC flags for maybe one assignment, not 4 years.
On the very first day of programming, all you need is a REPL. But once students are doing programming projects of nontrivial size, they should be invited to try incorporating the tools that make them manageable.
Re: Don't Make Students Use Eclipse
#174Earlier quoted context omitted.
It’s kind of embarrassing but I didn’t understand generics from my beginner CS course (taught in Java). It wasn’t actively tested on either. I only began to appreciate it when I took an online MOOC in OCaml on a whim.
Generics in Java were poorly-handled and almost universally considered to be a mistake.
Re: Don't Make Students Use Eclipse
#175I think a better alternative would be "Don't Make Students Use Java", I seriously can't think of a worse language for training beginner/intermediate programmers, I certainly wish my schooling experience consisted of something else. From day one you're introduced to magic on top of magic: "Open up and click 'new project' and name it 'MyProj' and now click on the file in the side menu that says 'MyProj' and inside `pub…
Then I found this new kid on the block Python and it was a completely different story. I fell in love with programming and hacking in general and finally at the end of the study I knew enough of python to bootstrap myself with Java which I still think is an abomination.
Re: Don't Make Students Use Eclipse
#176> ... it insulates the student from the javac command line program, and the command line environment itself Such a misguided article. The Java language has (quite literally) nothing to do with `javac`. In fact, there's a lot of other compilers out there. Taking a Java class should not focus on the intricacies and weirdness of Java compiler command line interfaces. It seems pretty amateurish to argue in favor of it. C…
Re: Don't Make Students Use Eclipse
#177Earlier quoted context omitted.
It’s kind of embarrassing but I didn’t understand generics from my beginner CS course (taught in Java). It wasn’t actively tested on either. I only began to appreciate it when I took an online MOOC in OCaml on a whim.
Generics in Java were poorly-handled and almost universally considered to be a mistake.
Re: Don't Make Students Use Eclipse
#178Re: Don't Make Students Use Eclipse
#179I completely agree. IDEs obscure the behavior of tools and languages. It's the last thing a student needs. I've been talking for a while about writing a course that teaches programming in 2 or 3 languages side by side to basically so the opposite of this. The specific quirks of languages or the things they obscure with magic melt away when you look at languages side by side. I wish university would teach in this way.
CS50 looks quite like what you're describing. One learns: - C - Python (+ Flask) - JavaScript - SQL I think this was the order. They learn C the most.
Re: Don't Make Students Use Eclipse
#180I'm not sure I agree much with this. When I first started learning Java I had six or seven years of programming experience and I still found dealing with matters of classpath and javac remarkably complicated. I had things down well enough with the tools I used before, but it all seemed so foreign in the Java world. And to this day I find junior devs struggle with the same things unless they have a maven/gradle projec…
I started my programming career writing C and C++ using the cli and a text editor.
Some years later I ended doing some Java and to me I found it quite easy as I could see similarities with things I had learned writing C and C++.
I could see the classpath and jar files where roughly equivalent to the concept of libraries and libpath found in the C and C++ linker (only much easier to use) and the javac was roughly equivalent to the gcc or g++ command line compilers.