this post was submitted on 04 Dec 2024
24 points (96.2% liked)

Programming

17666 readers
365 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

I am fairly new to programming and for my cs class i need to run individual programs. they don't need to interact with anything else, so i am trying to just run the file I'm currently on but Kate just greys out the option. I really want to avoid using projects if i can because they're just extra effort for no reason when I only need to run a single file. I did try using one, but Kate doesn't have a new project button for some reason and i had some trouble with Cmake.

I'm aware that these are actually pretty basic things, but I can't find anything online that actually explains how to use Kate at all. I would try using something else, but every IDE seems to have this same issue where by default it can't run code and it has no documentation of any kind regarding actually running code, so i'll just stick with the one that came with my distro.

also as a bonus question, why does every IDE seem to require you to configure every single option before it can run code and why do they all seem to discourage doing anything less than making an entire app?

top 41 comments
sorted by: hot top controversial new old
[–] moonpiedumplings@programming.dev 18 points 2 weeks ago (2 children)

also as a bonus question, why does every IDE seem to require you to configure every single option before it can run code

What IDE's have you tried?

Kate (and vscode) aren't really IDE's, they're more like extremely extensible text editors. You can make them IDE's, but they dob't come like that out of the box.

On the other hands, actual IDE's often have the inbuilt capability to install and manage the programming language related software.

[–] unknown1234_5@kbin.earth 3 points 2 weeks ago

I've tried Kate, vscode, some python one on windows (idk which one it was years ago), kdevelop, and I think a couple others but I forgot which ones.

[–] akkajdh999@programming.dev 10 points 2 weeks ago (1 children)

I struggled with stupid basic things like that ("how do I run a file??!") when I was beginning to learn programming. What you can do is just open a terminal and run a command, that's it, like python main.py. Sorry that it doesn't answer the question.

[–] redbr64@lemmy.world 6 points 2 weeks ago

TBH, I haven't really used Kate for coding, but I vaguely remember it having a built in a terminal as a pane, like many IDEs

[–] Redkey@programming.dev 9 points 2 weeks ago (1 children)

I hadn't heard of Kate before, so I can't offer much hands-on advice. I dug around and found a "handbook" here: https://docs.kde.org/stable5/en/kate/kate/index.html

Unfortunately it does look like you need to define a project to compile/run anything, which appears to require manually creating a .kateproject file in the directory as outlined here: https://docs.kde.org/stable5/en/kate/kate/kate-application-plugin-projects.html#project-create

I had exactly the same problem when I moved from languages that were interpreted or combined the IDE and runtime environment into one, and starting to use languages which had their own external compiler. Unfortunately, open source project user documentation is often terrible for beginners (what I found above for Kate seems to be no exception), and IDEs often seem to be written by people who don't really expect anyone to actually use the included build options (to be fair, most folks seem to like using their own separate build utilities, so probably this is often the case)

If you can tell us which compiler or interpreter you're using (e.g. gcc, clang, Python), someone can probably tell you how to compile and/or run a single-file program from the terminal with a fairly simple command.

[–] unknown1234_5@kbin.earth 2 points 2 weeks ago

I believe both clang and gcc are present on my system right now. and yeah, the Kate documentation was a little lacking. they do have little pop-ups letting you know though

[–] FourPacketsOfPeanuts@lemmy.world 5 points 2 weeks ago (1 children)

What language are you programming in?

As far as I'm aware, in many cases, Kate just gives you access to the terminal where you can type commands to compile / run your code.

[–] unknown1234_5@kbin.earth 1 points 2 weeks ago (1 children)
[–] FourPacketsOfPeanuts@lemmy.world 4 points 2 weeks ago (1 children)

So, I'm a bit rusty, but I believe in Kate you would hit F4 to get a terminal window and you would execute

gcc your_file.c -o your_output_file

Then after that's run you'd type just "your_output_file" and hit enter

I think on windows you'd need to make sure the output file name ends with .exe but I'm not sure about that, maybe someone else can chime in?

[–] unknown1234_5@kbin.earth 3 points 2 weeks ago (3 children)

that does work, it's a little clunkier than i'd like but it's better than the code not running

[–] FourPacketsOfPeanuts@lemmy.world 3 points 2 weeks ago* (last edited 2 weeks ago)

Mate, I've built a career on that

[–] rimu@piefed.social 1 points 2 weeks ago (1 children)

Great!

But now try to set a breakpoint and do some debugging and you'll realise why most devs use real IDEs instead.

[–] 3h5Hne7t1K@lemmy.world 2 points 2 weeks ago

Dishonest and misleading. gdb ./main.elf, break 45. Learn your tools. Optimize for learning. Select tools that generalize. Avoid lock-in.

[–] Redkey@programming.dev 1 points 2 weeks ago

That's kind of the bare bones of how it works, underneath all the abstraction layers and pretty GUIs.

Then it evolves.

First, you start splitting your code into multiple source files, either because your programs get too big to keep scrolling up and down one huge file to cross-check things, or because you want to incorporate someone else's code into your program, and it's more than just one or two functions you can easily copy and paste. You can still keep compiling and linking all of this in one step, but the command gets so long that you make a shell script/batch file as a shortcut.

After that, you might want to mix-and-match various source files to target different platforms, or to make other bulk changes, and you start going down the rabbit hole of having your shell script take arguments, rather than having a dozen different scripts. And then one day you take another look at "make" and realize that whereas before it seemed like impenetrable overengineering, it now makes complete and obvious sense to you.

Then you discover using "make" (or a similar utility) to split compilation and linking into separate steps, which used to seem nonsensical, but now you're dealing with codebases that take more than a couple of seconds to compile, or precompiled libraries or DLLs, and you get comfortable with the idea of just hanging on to compiled object files and (re)using them when the source for that part of the program hasn't changed.

And finally (maybe) you look at some of the crazy stuff in fancy IDEs and understand why it's there; that it's just representations of all this other stuff that you now know about and feel competent with. I say "maybe" because I've been programming for over 35 years, occasionally professionally but mostly as a hobbyist, and there are still things in IDEs that I either don't understand, or don't see the point of having them. But knowing the underlying principles makes me feel comfortable enough to ignore them.

[–] razorozx@lemm.ee 4 points 2 weeks ago* (last edited 2 weeks ago)

From my experience and understanding there are generally two ways to 'run' a file.

Firstly, the output is an executable itself. Assuming the permissions are valid you can just do ". /yourFile" and it'll just execute. If the file doesn't have the proper permissions, just do "chmod +x ./yourFile" to allow execution.

Secondly, some executables require you to run them through a specific program. Such as Java or Python. If Java, it'd be something like "java ./yourFile.jar" If Python, it'd be something like "python ./yourFile.py"

Sometimes it requires extra flags like "-jar" or similar. You just gotta look it up at that point. ¯_(ツ)_/¯

In Kate, you can toggle the terminal through a shortcut for easy access.

[–] MicrowavedTea@infosec.pub 2 points 2 weeks ago (2 children)

When learning a programming language I think it's better to find the commands you'd use to compile/run the program and run them in the terminal the first few times so you know what's actually happening behind the run button. Then start running things through the IDE if it's more convenient. If you tell us the language we can help with the commands (is it C?)

[–] unknown1234_5@kbin.earth 1 points 2 weeks ago

it's C, I'll add that to the post in a second

[–] unknown1234_5@kbin.earth 1 points 2 weeks ago

it's C, I'll add that to the post in a second

[–] FizzyOrange@programming.dev 1 points 2 weeks ago (1 children)

What language are you using?

[–] unknown1234_5@kbin.earth 1 points 2 weeks ago (1 children)
[–] FizzyOrange@programming.dev -1 points 2 weeks ago

In that case I would recommend using an IDE that supports C well. On Windows Visual Studio will get you far and it is the easiest to set up with wizards to create projects etc.

Alternatively you could use VSCode but it's a bit harder to set up.

  1. Install VSCode
  2. Install the clangd extension from the marketplace. It's better than the official Microsoft C++ one.
  3. Also install the CMake extension.
  4. Create a CMake project by hand (you need CMakelists.txt and main.c). In the CMake make sure you add
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)

That will give you perfect code intelligence (error squiggles etc).

[–] sentient_loom@sh.itjust.works 0 points 2 weeks ago

Try asking her.