A Few Questions About Getting Started with Virtual Machines, Linux, Python, and Databases

A Few Questions About Getting Started with Virtual Machines, Linux, Python, and Databases
A Few Questions About Getting Started with Virtual Machines, Linux, Python, and Databases
1. Which database is better for beginners?
For beginners, I recommend starting with a lightweight desktop database. In terms of support for standard SQL and relational database design, small desktop databases are broadly similar to medium and large commercial databases (although in practice, different databases do have fairly obvious differences). The main distinction is that desktop databases usually store data in a single database file. Their performance drops quickly under heavy concurrency, so they are not suitable for medium- or large-scale applications, but they are perfectly appropriate for personal use or learning.
The most popular desktop databases are probably Microsoft Access and SQLite. The former is one of the most overlooked yet genuinely useful tools in the Microsoft Office suite, while the latter is the king of desktop databases in the open-source world. Personally, I recommend beginning your database journey with SQLite rather than Access, unless your work is mainly centered on Office development or Office-based applications. Otherwise, learning Access can make it difficult to migrate to other systems later, because it contains too many Microsoft-specific design choices that differ significantly from standard SQL. Its ease of use can also encourage dependency on its particular way of doing things, and of course, its performance is also worth complaining about. By contrast, SQLite is small but elegant. In many lightweight application scenarios, it can even be used in production. Its compatibility with languages like Python also creates a good foundation for learning programming, and moving from SQLite to databases like MySQL is relatively easy. That makes it an excellent choice for beginners.
Besides the above, NoSQL databases such as MongoDB may also represent an important trend. But at present, relational databases are still the mainstream in practical applications, so beginners are still better off starting with traditional relational databases.
2. How should a physics major begin learning practical programming skills?
Personally, I suggest starting with two books. The first is Effective Computation in Physics with Python. This book is relatively basic. It starts from Python language fundamentals and also includes some examples of Python applications in physics. The second is A Student’s Guide to Python for Physical Modeling. This one covers some modeling concepts related to physics.
If you want to continue further, I would also recommend studying some tutorials on Anaconda, since Anaconda is one of the most widely used Python distributions in scientific research. For this area, books like Python for Scientific Computing or Python Data Science Handbook can also be helpful. Life is short, using Python.
3. How can a virtual machine communicate with external devices or networks?
There are many different ways to handle this in practice. If you use VirtualBox, Hyper-V, VMware, or other virtualization software, the specific steps and procedures will differ. But the overall idea is similar. In actual implementation, however, some virtual machine platforms may not be able to achieve the desired effect because they lack certain features. So personally, I recommend using VMware whenever possible, because compared with it, VirtualBox feels somewhat less stable, and Hyper-V, in my opinion, is somewhat lacking in functionality.
Generally speaking, after installing a virtual machine, if you want it to communicate directly with external hardware, you may need to install enhancement tools or guest additions (for VMware or VirtualBox). If you are using a dedicated communication card, then both the virtual machine and the host machine may need the corresponding drivers installed. I have not personally tried making a virtual machine work together with a specialized communication card, so I will not go into detail here.
If you are using a serial port or a USB-to-serial adapter, virtual machine software usually provides an option to assign hardware resources directly to the virtual machine. Once you assign the needed resource (such as a particular serial port or USB port), the virtual machine can use it, and subsequent operations are basically the same as on a physical machine.
If you are using network communication, then the situation is quite different. When using a virtual machine’s network adapter, you need to pay attention to how the host machine is configured: NAT, bridged mode, or virtual routing. Under different modes, the virtual machine will have different IP addresses. In some modes, the VM may not be able to access the external network at all; in others, it may fail to meet the common requirement of PLC and similar devices that the controller and host computer be on the same subnet. There are already many resources online explaining the various virtual networking modes, so I will not repeat them here.
4. How should beginners install Linux?
If you do not already have fairly solid system administration experience, installing Linux yourself can be somewhat difficult in practice. If your goal is learning and your computer is powerful enough, then installing Linux in a virtual machine first is a good option. If you rashly replace the only computer you use for study or work with Linux, while lacking sufficient Linux experience and knowledge, you will quickly run into a lot of inconveniences. Many commonly used applications simply do not exist on Linux. That inconvenience may affect your willingness to use the system at all. So I strongly recommend trying Linux first in a virtual machine and then transitioning gradually.
There is another approach as well. Most Linux distributions provide a LiveCD or live environment mode, meaning you can learn and try the system without actually installing it. To do this, you can go to the Linux distribution’s website—beginners might try Ubuntu or Fedora (in fact, those are the only two I have personally used)—download the ISO image, burn it to a disc or create a bootable USB drive by following the official instructions, and then choose LiveCD mode during startup. Generally speaking, even if you plan to install the system formally, it is still a good idea to boot into the live environment first to check hardware compatibility and discover driver issues in advance.
If you do not care much about desktop Linux, another option is to rent a cloud server and use Linux that way. Mature cloud service providers usually support one-click system installation.
5. For someone outside IT, is it better to switch into database operations or web front-end development?
If your current level in both areas is average, then you first need to choose one direction and study it in depth. And if you do not come from a professional IT background, then web front-end should be your first choice, for several reasons:
-
Lower barrier to entry. Compared with database operations, web front-end has a lower entry barrier. JavaScript is relatively easier to understand, and frameworks are also easier to learn. Databases, by contrast, are easy to start with but hard to master, and the learning curve is much steeper.
-
Easier to find a job. Even without extensive experience, people can still become employable in web front-end after training. But database operations are different. Think about it: what organization would confidently hand over its database systems to a complete beginner with no practical experience?
-
Broader range of work. Of course there is also a lot of work to be done in the database field, but it is still not as broad as front-end work. Especially as programming languages and computing capabilities advance, more and more functionality can now be completed directly on the front end.
-
Plenty of room for growth. Front-end development is not something you master overnight; there is a lot of space to keep improving and going deeper. By comparison, more advanced database operations often require understanding database internals and principles, which are harder for ordinary learners to reach.
6. Why should beginners learn Python instead of C or C++?
There are several reasons to learn Python.
-
The advantage of C is that it is closely tied to low-level systems. It is widely used in embedded systems, and programs written in C are usually efficient. But nowadays, as labor among programmers becomes more specialized and hardware becomes much more powerful, software developers often care more about development productivity, while runtime efficiency is often a secondary concern. In terms of ease and speed of programming, Python’s advantage over C is enormous.
-
Python is an advanced object-oriented language, while C is a traditional procedural language. Like BASIC, procedural-first thinking is destined to become history. One major reason C still has so many applications in software is historical legacy. For new programmers, learning Python first is more efficient, and it also makes it easier to grasp the idea of object-oriented programming—one of the most valuable concepts in software engineering over the years.
-
Python has extremely broad applications and library support in major fields of computer science such as machine learning, artificial intelligence, and big data. This is not something C can match.
Compared with other languages, Java—like C—is also moving toward redundancy and heaviness. Although it is still widely used, signs of decline are already visible. C++ is too difficult to get started with, especially for beginners. C# is too tightly tied to Microsoft, which limits it. Go is emerging, but it has not yet become a dominant force. Taken together, Python is a better choice to learn than C or C++.
7. If you learn C/C++ and Linux well, what kind of work can you do?
If you can truly master even one of these, you can achieve a lot—let alone all three. But genuinely learning them well is far from easy. So let’s just briefly talk about practical applications.
To some extent, C is the bridge between traditional and modern programming languages. Although it may be in relative decline, in most situations it still holds a very important position. If you learn C well, you can work in embedded systems development, write low-level extensions for Python (after all, Python itself is written in C), or participate in any project built with C.
The same is broadly true of C++. In some respects, C++ can be seen as an extension of C in both functionality and object-oriented design. But C++ is famously difficult to learn, so unless you have a strong foundation and solid understanding, I would not recommend taking that path lightly.
As for Linux, it is an operating system with many distributions. If you learn it well, you can work in operations and maintenance, because most of the world’s servers currently run Linux, and those servers all need administrators. If your skills become advanced enough, you could even participate in Linux development itself. I think that is the ultimate answer to this question—after all, Linux creator Linus writes in C.
8. What is it like to install Linux on a desktop PC?
If you simply want to experience it, I would still advise against it. Linux’s strengths lie in being open source and stable, but even though many companies and communities have put in tremendous effort, Linux on the desktop is still not user-friendly enough. That does not mean you cannot do office work, programming, or graphic design on it. The issue is that many everyday applications still do not have Linux versions for various reasons. For example, Windows power users often rely on software such as QQ, Xunlei, Baidu Netdisk, and so on. Even if these can be made to work on Linux, the process is often complicated, and the result is usually less stable than on Windows or macOS. On top of that, software version incompatibilities are common, so using Linux desktop well requires patience and a willingness to tinker.
By contrast, Linux is used far more extensively on the server side than on the desktop side. If you are not a professional, I still would not recommend going out of your way to wrestle with it.
One last aside: if the Linux community were not so fragmented as it is now, maybe it could still compete more seriously with Windows and macOS. In its current state...


