• 0

Learning C (Basically for working with Kernals and everything really comple


Question

What is the best book or site where I could learn every aspect of "C"? I've decided next summer that I want to live a little more custom and I want to restructure the way I work. I'm a quick, but thorough person, and I'd like to work with the Linux Kernal from scratch.

Recommended Posts

  • 0

You might want to start with an introductory book to C/C++ (I would suggest C++). Then, you need to build your way up by reading more advanced books. However, reading is not the end to this. Learning a programming language also depends on using it frequently. You will build up experience but that needs patience. Try to get real world jobs that would force you to impliment what you have learned from reading. Be patient. It takes so much time. I would say years. Good luck :)

  • 0

Stackoverflow.com has a good list of books: http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list

Do you have any prior programming experience or knowledge of how operating systems work? Being able to make sense of the Linux kernel will take more than just a working knowledge of the C language.

  • 0

Not exactly. That's why I'm starting to read Linux From Scratch and other possible references to get a possible understanding of how it works. I'm only being experimental. Thanks for the link by the way.

  • 0
  • 0

I do love these threads where someone comes in, with little or no prior programming experience, and sets themselves ridiculously lofty goals such as "learning every aspect of C so I can work with the kernal from scratch", and expects a single book or a short timescale.

Don't get me wrong, I applaud people's eagerness to learn, but assuming that it can be done from one book over a short period of time...

It kinda ****es on the 4 years at uni and over 15 years in industry that I (and others) have, and I still don't know "every aspect" of anything.

  • 0

I do love these threads where someone comes in, with little or no prior programming experience, and sets themselves ridiculously lofty goals such as "learning every aspect of C so I can work with the kernal from scratch", and expects a single book or a short timescale.

Don't get me wrong, I applaud people's eagerness to learn, but assuming that it can be done from one book over a short period of time...

It kinda ****es on the 4 years at uni and over 15 years in industry that I (and others) have, and I still don't know "every aspect" of anything.

Amen.

  • 0

Amen.

I love threads like this,

First of all to be a Kernel Developer learn how to spell Kernel. You must have a good understanding of how a Operating System Kernel works, Right?

You say you want to work with the Kernel. Why? You have an idea for a Kernel App? Maybe a Firewall? Or Anti Virus/Malware Program that runs at the Kernel level?

You have this warped view of how you can pick up a C Book and then start writing Kernel Mode Applications that plug straight into the Kernel API. What OS are you going to be working with? Linux Maybe. Windows I doubt it. For obvious reasons...

  • 0

Not to be a Debbie Downer, but while learning the internals of an operating system and how to program at the kernel level is a lofty goal, it probably isn't something that you're going to learn in just a year, no less a summer. If you are just starting out with C and have very little understanding of how operating systems interface with hardware (or provide services to higher levels), its likely to be extremely difficult. If you are really serious about it, you can do it, but don't expect it to be fast or easy.

I am a meticulous and thorough person, like you claim to be. While it has helped me gain a deep understanding of some subjects, it certainly has not made me fast. I started learning C++ 7 years ago, C 4 years ago, GNU/Linux 3 years ago, and kernel level programming within the last year. While it is something that I am very interested in, I'm still not at the point where I could write my own kernel module from scratch. I understand just enough to read Linux kernel code, debug it (to some extent), and patch it where necessary. I watch the Linux commit logs and mailing lists and hope to eventually learn enough to be able to write my own kernel module from scratch -- but I'm not there yet.

In my experience, most descent programmers have a healthy ego: that's why programmers tend to suck at giving time estimates. You could learn kernel programming faster than me. In fact, I'm sure that many others have. I'm not the best programmer out there -- I'm probably not even above average -- but I am thorough. Don't give up because you can't learn it as fast as you would like. Start at an upper level (such as C++ desktop application development) and work your way down (to kernel level). If you really love it, stick with it: you will get there eventually.

  • 0

Take a class. Learning C by yourself is like picking your nose in public- you can do it, it isn't pretty tho. :laugh:

Take it from somebody that tried...

If you just want to screw around with a simple OS, get virtual box and play with this:

http://mikeos.berlios.de/

  • 0

I said "I'm only being experimental.", don't be so hard on me. Sorry I spelled it wrong, I was typing quick and was in a hurry at the time.

I'm aware of how hard it really is, I was so much in interest about a custom OS since before Codename "Longhorn". Not even, ever since I was once a member in the old JoeJoe forum.

Other than that, I just want to start learning C because I want to live a little custom throughout the next few years and experience new things since I grew up a Web Developer.

  • 0

I don't think that anyone was overly harsh on you. There are some very helpful and constructive comments above. Its not that we are trying to discourage you, its just that some of us with more experience (and I'm not claiming to be one) see the warning signs and are trying to warn you. Although they haven't posted much in this thread, Dr_Asik and n_K in particular have extensive experience: listen to them.

  • 0

I do love these threads where someone comes in, with little or no prior programming experience, and sets themselves ridiculously lofty goals such as "learning every aspect of C so I can work with the kernal from scratch", and expects a single book or a short timescale.

Everyone when they first start programming usually ask ambisous questions like this, I've been programming for 17 years and I vagually remember when I first started programming I posted on some board "I want to develop my own operating system how do i do it?" I personally actually like when people ask questions like this, it shows a great level of ambition in people, that I think is personally lacking in to many people.

It kinda ****es on the 4 years at uni and over 15 years in industry that I (and others) have, and I still don't know "every aspect" of anything.

Why would you want to know every aspect of everything? Over 17 years I've specialized in a lot of different areas, and I can tell you over the years it all starts to blur together and as I'm sure your aware with every new thing you learn the more cynical you get :p.

First of all to be a Kernel Developer learn how to spell Kernel.

Lol seriously get over yourself : ).

I'm aware of how hard it really is

You have no idea how difficult and time consuming this is going to be.

Lets start off by saying, you want to do something that is really boring and what you want to do has very little pay off at the end of the day. A kernel is really the unspoken "hero" of any modern operating system, its basically a abstraction layer between the hardware, memory, and software. There are just too many concepts there that you need to know that you don't know, and you won't be able to learn all of the stuff before you get bored and give up.

On the off chance you actually coded a kernel that was a half assed best thing you could come up with, no one will use because of a few things.

  1. There is a good chance it will be a insecure nightmare. No beginner programmer can even fathom how to code something securely because you don't know how a computer really works.
  2. You won't have any drivers, so your kernel couldn't fully use key devices like the graphics card. Unless you force all of your programmers to code there stuff for every single device out there(anyone remember the DMX sound engine? :p ).
  3. IHV - Indepedent hardware vendors half ass their driver code to the point that all of their drivers(even if you code a 100% complient linux kernel) that won't work under your kernel besides you did something different than whats in the main stream linux kernels.

I would steer clear of any type of kernel development. Let us assume that you are superman and can learn everything on the job. You can still do operating system level coding without having to touch the kernel stuff, you can basically grab a unix(not LINUX, but UNIX) kernel and try and build something off of that. But again this is all very dry and boring stuff.

Frankly if you have very little coding experience I would basically start else were(if your favorite game has public source code out there, I would do some basic mods for that first). You want a challenge that not to many people are doing that you can learn how to think while learning how to program, hell try some kinect stuff. Focus your ambition in a area that you can get a decent pay off at the end of day.

its just that some of us with more experience (and I'm not claiming to be one) see the warning signs and are trying to warn you

A lot of professional developers with years of experience always try and bite off more than they can chew(DNF anyone?), its a human trait to always to do something AWESOME and BAD ASS :). You will notice really quickly why programmers are hid away in isolated areas in a company that no body goes to; were arrogant, personality challenged individuals.

18188.strip.gif

Don't stop programming because of some of stuff on here, and if you continue programming you will soon end up like us...its inevitable.

  • 0

Yea, but it's not like I'm trying to make an OS to replace a part of my life here. :p

I just want to know what it's like to work on a new OS, I have family that can definitely code like crazy and I'm just the youngest who would love to understand the concepts. :) If anything, being experimental is what should count, right? That's what I've been trying to say here. I'm using the Linux kernal to start off with and reading documents of LFS and such to know where to start. But I never said I was starting now was I? I mean shoot, reading, examining, etc to even code basic programs for starts are what I'm actually trying to do before I go to something even more complex. I'm just trying to create steps in my journey as a 19 year old who's been trying to code at all since 12 years old starting with html/css php & javascript. Come on guys, try to boost spirits at the same time as giving warning shots! :D

  • 0

Yea, but it's not like I'm trying to make an OS to replace a part of my life here. :p

I just want to know what it's like to work on a new OS, I have family that can definitely code like crazy and I'm just the youngest who would love to understand the concepts. :) If anything, being experimental is what should count, right? That's what I've been trying to say here. I'm using the Linux kernal to start off with and reading documents of LFS and such to know where to start. But I never said I was starting now was I? I mean shoot, reading, examining, etc to even code basic programs for starts are what I'm actually trying to do before I go to something even more complex. I'm just trying to create steps in my journey as a 19 year old who's been trying to code at all since 12 years old starting with html/css php & javascript. Come on guys, try to boost spirits at the same time as giving warning shots! :D

Its just not going to give you the e-nerd-boner your expecting, if you want to try awesome,difficult, do some Kinect work. Better pay off and the non programmers in your family will give you the ooo and ahhh's that your looking for. If you got a something working in terms of a kernel, or even if you added some feature to a existing kernel and you showed it to your family, the non technical individuals will go "Oh honey thats nice" and pat you on the head. The technical members of your family will go "seriouslly? you wasted your time on that?".

I'm not trying to kill your spirits, i'm only trying to redirect your ambition into something that has a decent pay off at the end of the day.

If your hell-bent on doing this, try this first(humor me). Make a simple console application that prints out something if you enter in a value, and something else if you enter something else. Download a dis-assembler such as IDA pro, and figure out how to change your app so it prints the opposite thing WITHOUT CHANGING THE SOURCE CODE. A very basic thing you need to know is assembly, and the way I at least started assembly was actually modding Diablo 1 :/. Once you know assembly come back and ask us again what you should start next.

  • 0

A lot of professional developers with years of experience always try and bite off more than they can chew(DNF anyone?), its a human trait to always to do something AWESOME and BAD ASS :). You will notice really quickly why programmers are hid away in isolated areas in a company that no body goes to; were arrogant, personality challenged individuals.

Don't stop programming because of some of stuff on here, and if you continue programming you will soon end up like us...its inevitable.

Just to clarify, I'm not trying to claim that he shouldn't try. None of us would program like we do today if we didn't start somewhere. You're absolutely right: be ambitious. However, that is also somewhat dangerous, especially for a new programmer. If you expect something to be easier than it actually is because you don't understand the scope at the onset, it is somewhat discouraging and often leads to burnout. It would be negligent not to mention the possible side effects in addition to the major positives.

  • 0

I've always tested OS's and different projects in VMWare. Heck, the first time I ever worked with C was C# when I was around 15 years old. To this day I've yet to work with all that I can as far as coding from something as simple as a Linux command screen.

What do you guys expect me to do if I can't learn from mistakes? That's what makes us all developers, humans actually. :)

  • 0

I've always tested OS's and different projects in VMWare.

Downloading leaked builds of a OS doesn't quantify you as a tester; that's just like saying "I'm a game tester cause I download the Public Test version of Starcraft". Doing QA means you do a lot more than anything you did.

Heck, the first time I ever worked with C was C# when I was around 15 years old.

I started doing programming I was 7 and started professional programming(where I actually got a paycheck) at 15 :p, trust me you aren't special there are lot of people that started programming before college, and a lot like myself that do it at a professional level.

To this day I've yet to work with all that I can as far as coding from something as simple as a Linux command screen.

Listen people like myself here are just trying to tell you we have been were your at. I personally don't give a rats ass whether you do this or not. I don't give a damn about what you do : ), but what your asking for requires someone on here to type out a huge post that won't benefit you at all because A) no one could type everything you need to know in one post on here and B) once you start doing it...you will stop. I promise you...you will stop doing it.

Instead of getting frustrated at something that won't give you the pay off your expecting, do something that WILL benefit you.

Bottom line if you want to do this, do what everyone else has done before you...teach your self and figure it out. No one will type out all the stuff you need to know to do what you want to on here. No one....it won't happen :p.

  • 0

Never said I was testing leaked OS's.

Was never trying to be a computer developer at a professional level. I want a fully custom OS for personal use one day. I'm just a Web Developer, that's my main focus.

The 4th comment of this topic actually helped me with C.

I'm not asking for anyone to be my teacher, just resources are what I need.

  • 0

Never said I was testing leaked OS's.

You mentioned Longhorn :), and at any rate I'm sure the testing you did wasn't "testing" it was using whatever you were testing and hoping it didn't crash.

Was never trying to be a computer developer at a professional level. I want a fully custom OS for personal use one day. I'm just a Web Developer, that's my main focus.

Now I am going to scream at you, learning what you will during the time your spinning the wheels with this will apply to every programming challenge you can think of EXCEPT Web Design lol. The programming behind any type of scripting language requires a different type of thinking than coding in any of the major languages. Java accidently falls in this catagory :p but it is a script language.

What you need to focusing on to be a good web developer is UI design. Your way way way off base.

  • 0

Longhorn, as in the OS people had customized when Vista wasn't much of an option.

Longhorn was a design disaster, and would a case and point to your situation. Biting off more than you can chew leads to Longhorn/Vista : ).

I was a designer before I was a Web Developer.

Post some of your work.

  • 0

If you really want to give yourself a chance of understanding how the linux kernel works you'll need:

- expert skills in C

- expert skills in data structures and algorithms

- expert in computer architecture

- expert in operating systems

- expert with build systems and debugging tools

In other words you're looking at Computer Science or Software Engineering post-graduate level competence, with a particular focus on C and operating systems. That's several years of formal training. In fact, I do recommend you take CS or SE if you're really into programming. However, you'll have to start with much smaller and simpler projects. What you're asking is akin to "I want to learn everything in order to design a new type of space shuttle, and I have no prior experience in physics or mechanics". No one can answer that question except to point you towards basic physics and mechanics learning material, and tell you you won't be designing space shuttles any time soon.

In fact I don't suggest you start with C because AFAIK there's no really good introduction to programming that's also a good introduction to C. The best introductions to programming I know of exist for other languages:

C# : The Yellow Book : this is just the best intro to programming I've ever seen.

Java: Think Java : the "Think X" series is a very solid, well-paced introduction to computer science, complete with exercices, and they are available for a few different languages.

Python: Think Python

C++: Think C++

Python goes to great lengths to introduce non-programmers to programming: http://wiki.python.o.../NonProgrammers

Java accidently falls in this catagory :p but it is a script language.
Javascript is a script language perhaps? Not Java...
  • 0

In other words you're looking at Computer Science or Software Engineering post-graduate level competence,

As a side note make sure you go a school with a good curriculum, I can't tell you how many incompetent college computer science students I've interviewed that said they had a 4.0 gpa(which I beleived), but they were just stupid. Especially when it comes to something as complicated as this, be very careful where you go if you care enough to pursue this route.

Javascript is a script language perhaps? Not Java

You are correct, I missed typed. I always keep forgetting people actually used Java at one point : ), I always put Java Java next to Cobol in the "Languages that should have never existed category".

*Waiting for the hate mail*

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Helium Browser 0.13.4.1 by Razvan Serea Helium is a private, fast, and honest Chromium-based web browser — built for people, with love. It offers the best privacy by default, unbiased ad-blocking, and a clean experience free from bloat and noise. Proudly based on Ungoogled-Chromium, Helium removes Google’s clutter while keeping a fast, efficient development pipeline. With thoughtful touches like native !bangs and split view, Helium is a people-first, fully open-source browser that puts control back in your hands. Privacy, security, and control come first. Ads, trackers, and third-party cookies are blocked automatically, HTTPS is enforced everywhere, and all Chromium extensions work seamlessly — while Google can’t track your activity. Helium’s 13,000+ offline-ready !bangs let you jump straight to sites or AI tools like ChatGPT instantly. Open-source, people-first, and unbiased, Helium delivers a browsing experience that’s fast, secure, and free from noise, ads, and compromises. Helium Browser key features: Performance Fast, efficient, and lightweight — built on Chromium’s optimized engine. Energy-saving and consistent — stays fast over time without slowing down. No bloat — stripped of unnecessary components for maximum speed. Minimalist interface — compact, clean, and distraction-free. Customizable toolbar — hide elements you don’t need. Smooth and stable — no flicker, lag, or animation glitches. Comfort-focused experience — intuitive and unobtrusive. Privacy & Security Best privacy by default — blocks ads, trackers, phishing, and third-party cookies. Unbiased ad-blocking — powered by community filters and uBlock Origin. No telemetry or analytics — zero background web requests on first launch. Strict HTTPS enforcement — warns for insecure sites. Passkeys supported — modern authentication made simple. No built-in password manager or cloud sync — your data stays yours. Extension Compatibility Full Chromium extension support — including MV2 extensions. Anonymized Chrome Web Store requests — Google can’t track extension installs. Extended MV2 support — maintained for as long as possible. Smart Features Native !bangs — browse faster using 13,000+ offline-ready shortcuts. AI integration — use !chatgpt and others directly from the address bar. Offline functionality — bangs work without an Internet connection. Philosophy People-first design — open source, transparent, and community-driven. No ads, no noise, no bias — privacy and honesty over profit. Helium Browser 0.13.4.1 changelog: 0a4f1149 revision: bump to 4 (#1969) 4848de1f helium/core: enable the chromium screenshot feature (#1968) e0dec3f5 onboarding: integrate strings to i18n system (#1948) 417fa5bc i18n: fix newline parsing for onboarding 7a339b39 i18n: add foraged translations for onboarding 4f090cff i18n/generate: add handling for onboarding strings bfe48d58 i18n_apply: manually override parent grd logic for onboarding strings ab214e3c onboarding: bump in deps, wire up grdp afa6a059 helium/core: disable pdf infobar feature (#1965) eba585e7 helium/ui/vertical: fix new tab button alignment and icon size (#1964) 6ecfc9e0 helium/ui/tabs: fix horizontal tab hover background color (#1963) 3db87dc0 helium/ui/tabs: fix new tab button hover/press colors (#1962) 6bbdcc3e helium/ui: improve tab group UI in all layouts (#1961) 53deb314 helium/ui/tabs: enable tab group hover cards e93aece7 helium/ui/vertical: fix tab group appearance, prevent line overlap 629f5495 helium/ui/tabs: restore solid group header colors, enable new colors 961c962e helium/ui/tabs: move horiz tab group underline to bottom, make it thick c96deab6 merge: update to chromium 149.0.7827.155 (#1959) 36db56b4 i18n: update source.gen.json 5ce006ae patches: refresh for chromium 149.0.7827.155 b4c1ea62 merge: update ungoogled-chromium to 149.0.7827.155 4e5e8671 Update to Chromium 149.0.7827.155 08a3e7da helium/ui/layout: disable mute on collapsed vertical tabs (#1778) a0a5bbaf helium/core: simplify context menu and prevent huge widths (#1951) c4732aac devutils/i18n: add forage command (#1944) 11d16986 devutils/i18n: add an option to translate using local CLI tools (#1942) d820c3a2 i18n/prompt: tighten translation rules to prevent common errors (#1940) cf827007 Update to Chromium 149.0.7827.114 6e3d5164 Update to Chromium 149.0.7827.102 Download: Helium 64-bit | Portable 64-bit |~100.0 MB (Open Source) Download: Helium ARM64 | Portable ARM64 Links: Helium Home Page | macOS | Linux | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Glow 26.10 by Razvan Serea Glow provides detailed reporting on every hardware component in your computer, saving you valuable time typically spent searching for CPU, motherboard, RAM, graphics card, and other stats. With Glow, all the information is conveniently presented in one clean interface, allowing you to easily access and review the comprehensive hardware details of your system. Glow provides detailed information on various system aspects, including OS, motherboard, processor, memory, graphics card, storage, network, battery, drivers, and services. The well-organized format ensures easy access to the required information. You can export all the gathered data to a plain text file, facilitating sharing with others for troubleshooting purposes. No installation needed. Just decompress the archive, launch the executable, and access computer-related information. Glow runs on Windows 11 and Windows 10 64-bit versions. Glow 26.10 changelog: New Features The bootstrapping algorithm has been completely redesigned. The software can now launch directly without requiring TS Preloader. As part of this change, the startup splash screen displayed during initialization has been removed. In addition, spikes in CPU usage have been eliminated, resulting in a more stable architecture with significantly lower memory consumption. The Microsoft Office detection infrastructure within the Operating System section has been enhanced. Additional detection support has been added for Office C2R (Click-to-Run) installations. Furthermore, the license status evaluation system has been improved, and the priority order has been revised as follows: Licensed > Grace Period > Other (NOTIFICATIONS, EVALUATION, etc.). Glow now includes preliminary support for Wi-Fi 8 technology, allowing more detailed information to be displayed for Wi-Fi 8-compatible network adapters. Glow now provides full support for Bluetooth 6.2. Adapters supporting Bluetooth 6.2 can be analyzed in greater detail and with improved accuracy. The disk distribution view in the Disk section has been modernized, replacing the traditional table layout with a new 2×2 card-based design. The TS Custom Controls module has been updated to v26.7. Thanks to the new custom controls, all Türkaysoft applications now offer a more modern and consistent user interface aligned with Windows 11 design standards. Bug Fixes Potential line-ending handling issues in the Office detection code within the Operating System section have been resolved. Additionally, the output format has been standardized to UTF-8 to prevent character encoding issues and ensure consistent data processing. Several stability and file management issues within the Debugging infrastructure have been addressed. Problems that prevented new log files from being created after Debugging was disabled, as well as issues causing debug records to be lost, have been fixed. File deletion and reaccess issues that occurred after file locks were released have also been resolved. In addition, a bug that caused newly recreated log files to remain locked after deletion has been eliminated. Unnecessary blank lines within debug logs and the extra empty line that could appear at the end of log files have also been corrected. A shortcut key conflict caused by assigning identical hotkeys to both the DNS Test Tool and the Donation page has been fixed. The DNS Test Tool can now be accessed using CTRL + Shift + D, while the Donation page is available via CTRL + Alt + D. Changes The service responsible for providing the Public IP Address and Internet Service Provider information in the Network section has been updated to use the ipinfo.io infrastructure. This change improves the accuracy and consistency of the displayed data. (No external requests are made while Hiding Mode is enabled.) Some terms in the Dutch and Korean language files have been updated to make them clearer and more user-friendly. [TS Updater] Before the update process begins, users are now prompted to choose whether they would like to view the release notes. Note: Always unzip the program before using it. Otherwise you may get an error. Download: Glow 26.10 | 1.8 MB (Open Source) Links: Glow Homepage | Screenshot | Github Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Maradona if hydration breaks had existed in Mexico 86.
    • The quantum search for Time's origin had an equally mind-boggling conclusion by Sayan Sen Image by Steve Johnson via Pexels A theoretical study from researchers at the University of Surrey suggested that the direction of time may not be fundamentally fixed in certain quantum systems. The work, published in Scientific Reports, examined how the “arrow of time” could emerge from microscopic physics and found that time-reversal symmetry can remain intact even in models used to describe processes such as energy loss and thermalisation. The arrow of time refers to the observed one-way direction from past to future in everyday life. In macroscopic processes, this is easy to see. Spilled milk spreads across a table and does not gather back into a glass, and heat flows from hotter objects to colder ones. These processes shape the common sense idea that time moves in a single direction. However, at the level of fundamental physics, many equations do not prefer a direction of time. Time-reversal symmetry means that the same physical laws can describe a system whether time moves forward or backward. This has made it difficult to explain why irreversible behaviour appears in the large-scale world even when the underlying rules do not require it. Dr Andrea Rocco, Associate Professor in Physics and Mathematical Biology at the University of Surrey, described this contrast: "One way to explain this is when you look at a process like spilt milk spreading across a table, it's clear that time is moving forward. But if you were to play that in reverse, like a movie, you'd immediately know something was wrong – it would be hard to believe milk could just gather back into a glass. However, there are processes, such as the motion of a pendulum, that look just as believable in reverse. The puzzle is that, at the most fundamental level, the laws of physics resemble the pendulum; they do not account for irreversible processes. Our findings suggest that while our common experience tells us that time only moves one way, we are just unaware that the opposite direction would have been equally possible." The study focused on open quantum systems, which are quantum systems that interact with a surrounding environment. This environment, often described as a heat bath, can exchange energy and information with the system. The researchers used this framework to study how a direction of time might appear even when the underlying physics does not enforce one. A key part of the analysis involved the Markov approximation. This is a simplification used in many models where the system is assumed not to retain memory of its past states. The idea is that changes depend only on the current state, not on earlier history. This is commonly used when studying thermalisation, which is the process where a system settles into equilibrium with its environment. The study also used concepts such as master equations, including the Lindblad and Pauli equations, which describe how probabilities of different quantum states change over time. Another related model discussed was quantum Brownian motion, which describes the random-like movement of a quantum particle interacting continuously with its environment. In these descriptions, a “memory kernel” can appear, which is a mathematical term that accounts for how past states influence current behaviour. The researchers found that applying the Markov approximation did not break time-reversal symmetry. Even when the system interacted with an effectively infinite heat bath, the resulting equations of motion remained symmetric in time. This meant that the same mathematical description could, in principle, run forward or backward in time without contradiction. The study further showed that standard frameworks used in open quantum systems, including quantum Brownian motion and master equations like the Lindblad and Pauli forms, could be written in a time-symmetric way. These equations are typically used to describe processes that look irreversible, such as dissipation and thermalisation, but the results suggested they can also be interpreted as allowing evolution in both time directions. Thomas Guff, Research Fellow in Quantum Thermodynamics, said: "The surprising part of this project was that even after making the standard simplifying assumption to our equations describing open quantum systems, the equations still behaved the same way whether the system was moving forwards or backwards in time. When we carefully worked through the maths, we found that this behaviour had to be the case because a key part of the equation, the "memory kernel," is symmetrical in time. We also found a small but important detail which is usually overlooked – a time discontinuous factor emerged that kept the time-symmetry property intact. It’s unusual to see such a mathematical mechanism in a physics equation because it's not continuous, and it was very surprising to see it appear so naturally." The researchers also noted that deriving a one-way arrow of time from time-reversal symmetric microscopic dynamics remains an open problem across fields such as thermodynamics, statistical mechanics, particle physics, and cosmology. Their results suggested that some standard descriptions of irreversible behaviour in open quantum systems may be better understood using a time-symmetric formulation of Markovianity. According to the study, processes such as thermalisation, which are usually treated as irreversible, could in theory be described in a way that allows evolution in either time direction under the same rules. This does not imply that time reversal occurs in everyday life, but rather that the underlying equations do not strictly enforce a single direction. Overall, the findings suggested that the perceived direction of time may emerge from how physical systems are modelled and approximated, rather than from a fundamental asymmetry in the laws themselves. The researchers noted that this perspective could have implications for ongoing work in quantum mechanics, thermodynamics, and cosmology on the origin of time’s arrow. Source: University of Surrey, Nature This article was generated with some help from AI and reviewed by an editor. Under Section 107 of the Copyright Act 1976, this material is used for the purpose of news reporting. Fair use is a use permitted by copyright statute that might otherwise be infringing
  • Recent Achievements

    • Reacting Well
      BizSAR earned a badge
      Reacting Well
    • First Post
      AndreaB earned a badge
      First Post
    • Week One Done
      Huge Trailer earned a badge
      Week One Done
    • Week One Done
      Classifyskilleducation earned a badge
      Week One Done
    • One Month Later
      eurospharma62 earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      581
    2. 2
      +Edouard
      182
    3. 3
      PsYcHoKiLLa
      75
    4. 4
      Michael Scrip
      73
    5. 5
      neufuse
      64
  • Tell a friend

    Love Neowin? Tell a friend!