On Linux, you just open up a text editor, write some C/Python, then pop open a terminal and directly invoke gcc/python. There's typically nothing that needs to be installed - and if something's missing, it's just an 'apt install' away. As a beginner you can see how everything fits together since there's no IDE in the way. And if you want to dig deeper into how things work, everything is documented in the man pages.
On Windows, you need to go online, find the right downloads, then install various developer utilities just to get to a working build environment. From there everything is typically done from the IDE - which means setting up projects and dealing with more abstraction.
I'm firmly of the belief that IDEs are a great tool, but aren't something that should be introduced until after students have a firm grasp of the underlying fundamentals.
Me too. Professionally, I develop for a number of operating systems, including Linux and Windows. I much prefer developing on a Linux system over the others, in part because it's easier to get going (most of what you need is installed with the OS), and in part because it's more flexible.
Or get the IT to install the respective C compiler.
Plus just because there is a C compiler, it doesn't mean IT has made it available to common mortals, or allowed exec on $HOME for the clever dudes that try to sneak in one.
Why would having better IDE support make for a better learning environment? It masks what is going on, and complicates it (for the benefit of people doing much more complicated things). But if you're bashing out helloworld.py you've just made it hard to disambiguate what the file is doing, what the runtime, and what the IDE.
Linux/CLI: Learn an obtuse (beginners, remember) command line text editor, save the file, run another text command to run it, remember the error as you go back in. Fight with apt to get things to work, pray there are no dependency conflicts/errors, learn sudo, go find an IRC channel to help with a package not working with some obscure error about "but it depends on .. which is not installed, try (command that won't fix anything)"
First one sounds much easier for a beginner to me. Making programmers learn on linux is like making student drivers start on manual tractor trailers.
They didn't say it wasn't easier, just that they'd learn less. A better platform to learn on doesn't result in you learning less.
This is even true among "professional" developers, they think somethings impossible just because it can't be done inside visual studio because they don't know how all the parts fit together, all they can do is hit F5.
> Linux/CLI: Learn an obtuse (beginners, remember) command line text editor, save the file, run another text command to run it, remember the error as you go back in. Fight with apt to get things to work, pray there are no dependency conflicts/errors, learn sudo, go find an IRC channel to help with a package not working with some obscure error about "but it depends on .. which is not installed, try (command that won't fix anything)"
Aside from the command line text editor you have deal with almost similar issues with VS, different but similar. You can end up in DLL hell from nuget, you can fight with click once deploys, you can find useless "answers" on MSDN, etc.
Can't say VS has ever given me problems outside very complex large projects that are out of scope here while the Linux part is based on experience.
You seriously underestimate the amount of work people have to do to get started in an IDE.
Really though, thinking on it the best environment for a total beginner is probably one of those web-based things like codeacademy.
Let's agree to disagree.
As an example I write papers using latex.
On Windows I have to:
- Figure out that I need miktex.
- Find its website and download the installer and install it.
- Find an "IDE" like TeXniccenter.
- Find its website, download it and install it. - Configure it.
- I have buttons to click, great. I click on them and pray that it works. What if it doesn't? Error messages are buried somewhere and problems are horribly difficult to fix (e.g. utf8 problems or missing perl).
- I need to convert some graphics from one type to the other. Can Windows do that? What do I need to install? Photoshop?
On linux:
- Open the software center/appstore/whatever.
- Search "latex".
- Click on all the stuff I like. Done.
- Everything works out of the box and does not need fiddling.
The second one is much, much easier for a beginner.
Don’t get me wrong, IDEs can be great, but they come and go or change significantly over a decade and the knowledge you build with it won’t work once you SSH into a headless server.
Why not both?