@alcinnz@floss.social
The most difficult task a computer undertakes is simply to communicate its computations with other software, hardware, computers & through them us humans!
Communicating to another program involves "serializing" the data into a common usually-bytestream format for it to "lex" then "parse", same for sending data into the future. If the communication/storage channel is unreliable we need error-correction/detection. If it doesn't have enough bandwidth we need compression/decompression.
1/2
@alcinnz@floss.social
In many cases that becomes a back & forth communication, especially when communicating humans or other computers. This becomes challenging in kernelspace with all the hardware wanting to set the schedule.
Drivers beneath, within, & above Linux abstracts this communication into a common interface. Fileformats & helper libs aid generating sheer quantity of output data.
Or the hardware needs to be emulated.
& libraries like GTK need to establish a shared language to communicate with humans.
2/2