You don't need any kind of special computer to learn programming. Find an introduction to programming course in Python that works for you and just go for it. Eventually a nice laptop will be useful but you're not writing the kind of code that's going to take hours to compile for the first couple of years anyway.
Programming
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
A lot of courses online now provide sandboxes to code.
For example, freecodecamp - you can learn web dev without ever leaving the browser.
You're overthinking this. You can almost always get by with whatever system you already have available, until you get a full job, at which point the job will probably provide you with a machine.
Linux on an old laptop is perfect for learning Python. You're set for ages.
The OS won't matter much in the beginning, though it helps that you're already using Linux as you likely already have Python and GCC installed.
I don't think you need a better PC than what you already have if the only goal is to learn programming, so I'd spend that money on something else.
I'd suggest you go through Harvard's CS50 if you've never been exposed to computer science before: https://www.harvardonline.harvard.edu/course/cs50-introduction-computer-science . You can audit it for free, you don't really need to pay for the certificate (which IMO doesn't have much value at that level anyway).
Also, try to get into a computer science degree if you want to do that as a career, bootcamps and MOOCs are nice additions but will never replace a real degree.
I also liked Harvards course. I got to like chapter 8 then I switched to start learning Rust because I liked it more than Python.
I don't think you need a better PC
This will hold true as long as OP doesn't trash his IDE's performance with too many plugins where even smaller project might run into performance issues if this mistake is made. But it doesn't mean OP has to distract themselves with learning a modal TUI editor, although it'll probably be beneficial for their productivity if they persevere and better to do that early than waste time hopping IDEs just for the sake of it. Tip for staying somewhat flexible if you still haven't decided yet is using something like vim plugin to vscode or vice versa, trying Neovim "distributions" (see awesome Neovim for some examples) and switching to a more feature-rich, GUI-based IDE.
You're on Linux Mint already, which is great. As others have said, Linux drives the world. Pretty much anything you write for a server will be running on Linux.
There's a high likelihood that universities will either have a programming environment from before 2010 or before 2020. They are often slow to change. Bootcamps mostly use the tools that are most hip.
If you want to start with Python, I recommend and integrated development environment (IDE) like PyCharm. It handles a great deal for you and allows you to learn the low level stuff and python tooling at your own pace. Stuff like virtual environments, debugging with breakpoints, documentation,
If you're interested in anything surrounding data science JupyterNotebook is great as it allows you to see the output of your code as you progress. That output can also be visual (graphs, images, variable values, etc.)
Today, no matter where and how you write your code, there's almost 100% chance that the place it will run is on Linux. Even the places it can run that don't look like Linux, are - in most cases - Linux.
Source: I'm a connoisseur of places code can run that aren't Linux, and they are becoming fewer and farther between every day.
What are some places that don't look like Linux but actually are?
I'd think most PC games and other desktop GUI software runs on windows and looks like it runs on windows. And I'd imagine that a web browser on windows isn't secretly a Linux environment.
But yeah, I've written way more code that runs on a web browser or a Linux server than runs on windows.
What are some places that don't look like Linux but actually are?
Amazon Lambda, Azure Automation, GitHub Actions, Amazon CodeDeploy, Azure DevOps, anything Android (not GNU, but runs a Linux kernel), SteamDeck, almost every miniature gamesystem (Genesis Mini, PlayStation Classic, etc), and a variety of the smallest chips that usually run raw C code are gradually getting powerful enough to have a Linxu kernel (I E. Raspberry Pi Zero replacing Arduino in various recipes).
With the SteamDeck's recent rise here's also been a shift towards video games being written first for Linux, then cross-compiled for Windows and much later ported to Nintendo Switch.
I don't know if we have confirmation on whether PlayStation and XBox or Switch run Linux under the hood yet.
Switch almost certainly doesn't (or at least not a recognizable version) or we wouldn't see the release delays we currently see.
It seems like the vast majority of portable hardware above very low power stuff runs a Linux kernel now, even when the rest of the OS is unrecognizable. Mostly via Android, but in exceptional cases with a custom OS.
I'd think most PC games and other desktop GUI software runs on windows and looks like it runs on windows.
Right.
Most PC games currently run on Unity, which doesn't care whether it's running on Linux or Windows. I'm not aware of whether PlayStation runs a Linux kernel, but I would bet it does, since they wouldn't get a good price from MS on OS bulk licenses. When the game is installed on a Windows PC, it's obviously running on Windows. When a game is on any of the various (non-Microsoft) game consoles, odds are it's actually running under a Linux Kernel.
And I'd imagine that a web browser on windows isn't secretly a Linux environment.
True. I would argue that's running half on Windows, of course. The other half, the server, had about a 99.7% chance of being Linux, today. Mostly Amazon Linux running in AWS. Even websites recently developed entirely on Microsoft libraries, and served in Microsoft's cloud service Azure, are largely running under a Linux kernel.
I want start with python
Start with futurecoder.io.
Bookmark:
- The official documentation for Python
- realpython.com [stick to the free content]
.
Don't pay for a bootcamp.
If you want to get a degree, consider WGU.edu
Good luck, have fun!
This. If you want to start coding on your own computer, the Python IDLE is great for beginners (it's probably inside a package named idle
). Just click on 'File > New' to start writing a new program and press the F5 key to run it!
Agree on the bootcamp part, but 8k a year for a degree? Hopefully OP has more options than that
Are you from somewhere that's not the US? University of Southern California is not a particularly stand out school for academics costs 80k per semester. 8K a year is hard to beat in the US.
Depends, What kind of programming are you interested in and what do you want to do with it?
-
Low level microcontrollers (PLC's, Robotics, Control systems, ROS, Automation, etc)
-
Higher level systems (Software Engineering, Enterprise Software, Networking, etc)
-
UX programming (Graphical User interfaces, human-machine interfacing, websites, etc)
-
Video Game Programming
-
AI Programming, Machine Learning, Prompt Engineering, maybe Data Processing, Vision systems, Simulations, etc
All depends on what you want to do with your programming. You'll need to narrow down and focus on what you hope to do with it.
... though if you're just starting to learn Python, any machine with a web browser and a keyboard (like a Chromebook) is enough to get going.
Use the OS you are most comfortable with. When it comes to programmming try and learn 1 "thing" at a time. If you trying to learn Python and how to use Linux as well as Python then you learning 2 (or more..) things at once so stick with what you know for now. If you are comfortable with Linux (or Mint as you say) then stay with that because I have found running Python on Windows is a Pain but that could just be the environment we are using. Good Luck and Have fun!
Your mint setup is fine to start learning, as others have said. Start with something simple : python, javascript, ...
For programming, there are tools available on every OS. However I have found that those tools are easier to use on Linux. Okayish to use on MacOS. Programming with Windows, on the other hand is, well... it certainly is possible, but... see for yourself.
For instituitions it varies depending on each one of them. Usually they have their own tools because it is easier to organise a class if everyone works on the same IDE but if you get good enough it does Not matter what is your OS/IDE of choice. VSCodium is nice but anything like kwrite/kate/gedit/geany is good enough. Hell, even nano can get the job done.
Depending on how much you want to work on servers later, getting used to vim might be worth it. With neovim there's also a modern take on vi, that can fully replace any IDE.
Just use what works for you. Only downside to IDEs is you might not graps all the magic going on in the back, so take your time to understand the ropes of the build and deployment systems before you let your IDE handle it for you.
I started using vim to learn rust. It's awfully powerful and I fully understand the hype.
However when I started to program, vim was NOT a good option to learn. Because you have to learn how to code and how to use the coding tool at the same time. It can be too much to take in.
Yeah, I understand that. I myself stayed an emacs user up to today because it was easier to get into it (the rabbit hole starts tumbling down some time later with emacs). But in these days eclipse was the shiny new star of IDE (cringe). However, when you face rolling out somestuff or setting up your own first services, the afternoon needed to get basic grasp of vim is well spend.
Doesn't depend on programming language but something with visual debugger. You know that stuff when you can see current line of your source code highlighted, press a key to step into, step over and so on. You can see values inside your variables. You can also change your variables mid-run right form the debugger.
Because you spend 20% of your time writing bugs and the other 80% debugging them. At least make it pleasant experience (no printf-style debugging).
Back in the day I was using Turbo Pascal, Delphi, Visual Basic, C#, Java, PHP with Zend, Java Script, today I'm using Visual C++.
@MarekKnapek That's something that people love to ignore even if it's important as heck. It means nothing if someone can code in +10 languages, or if someone can type 100 lines of code in 20 seconds, and how skilled a beginner or an experienced programmer is means nothing if they do not know how to debug. I quit print-debugging almost a year ago and decided to learn to debug properly, and since then I no longer spend days trying to find any bug at all, and in general I'm a better developer.
Yes but how are you going to leave a printf('oh noes I fucked up!') statement in by mistake, for someone to find in production ten years down the line when the planets align and a strange set of circumstances occur?
That's half the fun :)
What operating system and tools should a beginner use to learn programming
Chances are you'll have to switch to whatever your job has eventually so just pick what you like. I really like VsCode personally because you can read the documentation of methods without leaving your program. The best system and tools is whatever gets you to start learning though.
I want start with python but I don't know what operating system and tools to use
Python is great and easy to learn but I think it leads to misunderstandings about how programming languages work if that's your only experience. If you can get a Programming Fund 1 class in C or C++, you can transfer over those skills to Python in a week. If you start with Python, then you'll be mostly starting from scratch if you need to learn other languages. But it's entirely your choice.
In terms of programming institutions (universities bootcamps, etc..), do each institutions have its own preference or does it let its student choose?
My university had Windows for the public computers but as long as you turned in your code it didn't matter where it was written. I know lots of people who used a Linux VM that they carried on a USB stick. They completed their assignments just fine.
I've had the opposite experience at my past and current job.
I've always been given the choice of Windows or MacOS, with a remote Linux machine available if needed (first job I ran remote IDEs on it, second job I've gone full local development). Same with IDEs. As long as I was able to properly write and test code it did not matter what I used as both companies had licenses for the top IDEs (JetBrains suite, Visual Studio, etc.), and would buy one-offs if you wanted to use something else. There was always a general team convention simply due to ease of use, but I occasionally opted for a heavily modified VSCode workspace over PyCharm and the like.
Any operating system can run Python just fine. That being said, your laptop would benefit from a light weight system like Linux with Xfce or Lxde. I’ve never heard of a programming course requiring a specific OS (aside from courses on OS specific tools, like Cocoa).
Programming has very low hardware requirements, much lower than web browsing. Just don't get sucket into the whole maelstrom of people trying to convince you that you need a bunch of complicated tools. If you are just stating out, Gedit or equivalent will work out just fine.
In terms of operating systems, if given the choice professionals tend to congregate around Linux and MacOS as the development experience historicaly has been much better due to having access to a proper terminal. This is something you want to familiarize yourself with if you haven't already. Other factors may apply, especially in professional environments, where clients / employers mandate the use of Windows or something else, but this probably does not apply to you.
Universities usually have their curriculum, which is rather narrow in the beginning and widens in later terms, especially in masters classes. When it comes to teaching fundamentals, language and tools really does not matter much. It's more about keeping things manageable for the teacher.
Start with an interpreter just running on a website. Low barrier to entry is key at the start
It really doesn’t matter. Literally a Raspberry Pi will do for a beginner.
If all you want is to familiarize yourself with some basic programing concepts, programming language constructs (types, expressions and control statements like if and while) and was able to solve some simple problems with basic algorithms, I think your current setup is enough. You can learn all these on your 6 GB RAM laptop.
But if you were gonna learn programing in certain domains, for exmaple, most of deep learning things is both computing intensive and IO bound, you might be forced to consider upgrading your PC.
Linux (because Unix was originally created for programmers), and C because so many other languages derive from it.
Learn the language (types, functions, how to set up a project, etc), then learn the library (you can use the man pages from Linux).
You can use this knowledge for Python, as Python uses the library too, under the hood.