# Programming Guide

So, first of all, there's one thing that you gotta get through your head. If you haven't already heard this:&#x20;

> *There is no "best" programming language. If you wanna learn programming, just pick a language and start from there. If you master one, you'll master most others with little to no difficulty.*

You should note that you shouldn't *just pick one randomly.* There are some good choices to go with (like starter Pokemon if you will). I personally recommend `python` since it's easy to understand for beginners and has awesome documentation.

Now that that's dealt with, let's begin. First off, you can go ahead and go through the *"hello, world!"* programs, the basic arithmetic stuff, variable declarations, and whatnot. Don't try and marathon it all in one go. Go at a steady pace and understand each of the base concepts. Don't leap into rabbit holes just yet ;)

If you're choosing `python` as your starting point, here's a recommended path to follow:

1. Classic `"hello, world!"` program, teaches how to print shit to the console.&#x20;
2. Variables and expression (the latter is usually not explained well as far as I've seen, see the [Expressions](/malware-development-guide/appendix/elementary-concepts-and-stuff/expressions.md) page in the appendix for more info)
3. Control flow and functions
4. File I/O
5. Classes and some Object Oriented Programming (OOP)
6. Modules and Files (Writing portable code with a multi-file structure)

And that's it! In mastering these concepts, you'll be set for most of the stuff you'll make use of when developing malware and scripting. Albeit, there's not much to go by if you *just* use these 6 pointers as a reference, so I'll write individual sections in the [Appendix](/malware-development-guide/appendix/pivoting.md)for reference.

Now, since malware development often requires you to be *very* specific in what you wanna do, you'll also need a language that has portability as well as some *fine control.* `C/C++` are the literal best choice in this regard. They're fast, have low-level control, and can compile for literally *any* platform. So once you've mastered `python` you can try and get a working-level know-how of `C/C++`.&#x20;

{% hint style="info" %}
**DO NOT SPEND MONEY ON BOOT CAMPS AND COURSES.** There's a literal shit ton of FREE content all over the internet. Just use that, spending money (unless you really *need/want* to) is just a waste. I encourage you to try and build your own repository of resources and stuff you've used for learning. I recommend [Obsidian](https://obsidian.md/) if you're looking for a note-taking app.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://arachn3.gitbook.io/malware-development-guide/baby-steps/programming-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
