4

I am teaching a second year programming course for adult students. It is an introduction to C++, with a chapter on Git. I'm not covering Makefiles and while I could find a bit of time to talk about build systems, the course is already pretty loaded (as any "introduction" to C++ can be).

The issue is that our school currently only supports Microsoft Visual Studio 2019, which is a behemoth and much too big for the tiny hello-world-ish stuff we need to do. It forces my adult students to go deeper into debt just to buy a new computer to run the thing.

It is also very complex and forces me to teach about managing Visual Studio's projects and files, competencies that are not really useful outside of Visual Studio.

I've been doing a lot of work with online tools (especially repl.it and onlinegdb.com), but our internet can be flaky and I would much rather have an offline tool.

Ideally, that IDE should be:

  • Simple, so it is not overloaded with features we won't need,
  • Lightweight, to work on older computers,
  • Offline, for when the internet goes into molasses-mode,
  • Portable, since students use various versions of Windows, Linux and Mac.

I am aware it is more of a wishlist and that there might not be a tool able to do all this.

What I've tried so far :

Adequate match:

  • CodeLite: Seems like a stable and up-to-date version of Code::Blocks/Dev-C++. Must install a compiler and debugger however, but it seems easy enough with GCC/GDB on Linux/Mac and Win-Builds' MinGW-w64 install on Windows. It also requires to add the executables to the $PATH environment variable on Windows.

Partial match:

  • Sublime Text: Lightweight and easy to use. Build system seems to be unique to Sublime Text however, but is not too hard to use. Nagware which require to pay for the official version.
  • Geany: Very lightweight, but not easy to use. Would require to teach Makefiles.

Bad match:

  • Code::Blocks: It is too unstable. It keeps crashing and students are confused whether their code is wrong or Code::Blocks is misbehaving again.
  • JetBrains CLion: Better than Visual Studio, but still heavy and complex to use.
  • Apache Netbeans: Current version (11.0) does not support C/C++.
  • Apple XCode: It is not portable outside of Mac.
  • Spyder3: Nice IDE, but really minded for Python.
  • Visual Studio Code: Too many complex configuration files, unique to VS Code.
  • Atom w/ gpp-compiler package: The IDE is added on top of the text editor. Error messages are difficult to read since they are on popups. Uses command-line GDB for debugging. The gpp-compiler package itself is still buggy.

Also, I tried to compile a list that already exists and is better documented at https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#C/C++

leftcursor
  • 43
  • 1
  • 5
  • 1
    If a complex IDE supports more than just one language then it might be well worth the initial pain of learning it. I use Eclipse, which is also gigantic, written in Java, but supports many languages and other sorts of projects since it has a plugin architecture. Learn it once, use it always. – Buffy Apr 20 '20 at 15:19
  • Have you thought about using something like Vagrant or Docker to create a standard environment? Down-sides; It could be challenging if you've never done anything like it before,\* and the instructions for installing Vagrant/Docker will be different for students running on different hardware platforms. Up-side: Once everybody's got it installed and running, then all of your students will be running in _exactly_ the same environment. – Solomon Slow Apr 20 '20 at 17:05
  • \* You might get lucky and find that somebody has already built a Vagrant Box or a Docker container that meets your needs. – Solomon Slow Apr 20 '20 at 17:05
  • Look at [NetBeans](https://netbeans.org/downloads/old/8.2/), pre 9.0 should be light enough and is available in all 3 platforms. – Gypsy Spellweaver Apr 20 '20 at 17:29
  • @SolomonSlow: I thought about using Docker but I wasn't sure which IDE to put on it. It could resolve part of the portability issue, however! – leftcursor Apr 20 '20 at 20:37
  • 2
    Don't teach git and C++ at the same time. I don't care how much experience they have there brain will explode (30 years in not enough). Teach git, using one of there existing languages. Then move on to C++. – ctrl-alt-delor Apr 21 '20 at 07:04
  • 1
    As you are teaching `git` maybe you can help with my question, it about 2 years old, has had loads of attention, but still no satisfactory answer. It is asking how can I teach git? (I would be happy if I could just become proficient with it) https://cseducators.stackexchange.com/q/2897/204 – ctrl-alt-delor Apr 21 '20 at 07:08
  • Do you need a projects system (i.e. an integrated zero-configuration build process)? If not, and editor like VS Code might meet your requirements. – VisualMelon Apr 21 '20 at 11:14
  • @ctrl-alt-delor, "Teaching git" leaves a lot unsaid. There are entire books devoted to the subject, but you can do a few simple things—enough for a lone committer to manage a single branch—if all you have is a cheat sheet with a few magic spells. The ocean is vast and deep, but you don't have to know the techniques of celestial navigation or deep sea diving in order to enjoy an afternoon at the beach. Yeah, you can get into trouble at the beach, but hopefully, leftcursor is prepared to play the role of lifeguard. – Solomon Slow Apr 21 '20 at 14:24
  • 1
    I agree with @ctrl-alt-delor, but I don't have the liberty to alter the curriculum. So I do a quick dip in Git, just so the students know how to commit, branch and resolve conflicts. More a trip to the lake than the beach, but I think a lot of my students drown anyway :P – leftcursor Apr 21 '20 at 19:17
  • @VisualMelon : Zero-configuration would be a bonus, but I can deal with minimal configuration. I heard VS Code works on Linux and Mac, I should give it a try. – leftcursor Apr 21 '20 at 19:23
  • Who comes up with the curriculum? Do they teach? It is like someone is saying that we eventually need to be able to drive an F1 car, and that is hard, so better start now. Except these F1 cars have manual gear-change, manual ignition advance (yes. who can remember what that is), manual fuel mix control, separate break pedal for each wheel (one for each foot), manual independent power distribution between all 6 wheels, etc... – ctrl-alt-delor Apr 21 '20 at 21:21
  • Would [this](https://blog.codingblocks.com/2019/setting-up-a-c-competitive-programming-environment/) be something you are looking for? It's not exactly an IDE though. – Sharat Apr 22 '20 at 08:27
  • Is DEV-C++ by Embarcadero that is suggested in this thread truly portable, i.e. can the install folder be moved around without breaking the app? When I execute it, I find it odd that it defaults to the C:/Program Files/ folder for install. From installing tons of portables, it's not the standard behavior. Since it is a +-500Mb install, I prefer to be 100%! Thanks! – Ken Feb 20 '21 at 19:01
  • I suspect that in 2022, vscode is probably the best tool fits your bill and it is not that complex to set it up. – Qiulang 邱朗 Aug 22 '22 at 02:15

2 Answers2

4

My department uses Dev-C++. It's free, simple, offline, portable, and lightweight. Windows native.

Over the years the maintainer has swapped hands a number of times, it's occasionally gone a number of years without updates, and the size of the install has increased. But I like it quite a bit. As of this edit it got a new maintainer and update to v.6 a few months ago (November 2020):

Mirrors for the v.6 version that avoid the current maintainer's request for a lot of personal data can be found here and here.

Daniel R. Collins
  • 1,252
  • 1
  • 6
  • 14
  • I think I found a compromise with CodeLite. It's lightweight, portable and easy to use. The main drawback is you need to install a compiler/debugger yourself, which is not that easy on Windows. I used MinGW-w64 using the binaries provided by Win-Builds (with a manipulation of the $PATH environment variable), but with students it could be a challenge. – leftcursor May 26 '20 at 23:19
  • @leftcursor: Yeah, that would be a non-starter with our students. – Daniel R. Collins May 27 '20 at 01:19
  • @DanielRCollins : The new TDM-GCC is much easier to install on Windows: https://jmeubank.github.io/tdm-gcc/ DevC++ also got an important update, so I will be checking it out. Especially since I'm having a ton of issues with CodeLite. – leftcursor Feb 08 '21 at 18:27
  • @leftcursor: Thanks for drawing my attention back to this answer. I also discovered the Dev-C++ update at the end of December, and I've been very happy with it (suggested we switch in our school labs to that). Not sure if it's approved to update an answer like this here, but seems important enough I'll do that now. – Daniel R. Collins Feb 08 '21 at 19:53
2

Small == Old. Modern IDE != Small.

However, would Turbo C++ or OpenWatcom work? I believe both have "free" licenses.

Caution: your students will get spoiled by how fast Turbo C++ is and then complain about every other compiler in existence.

Good luck.

  • I admit that "lightweight" is a qualitative term and can vary wildly from person to person. I think we can get relatively "lightweight" modern IDEs. @RedDragon mentioned SublimeText, and I tried Geany, two text editors with IDE plugins which are both modern and simple to use. – leftcursor May 01 '20 at 13:58