From 577812c4937bca49914b096ab40563408efd5e7b Mon Sep 17 00:00:00 2001 From: thomasabishop Date: Thu, 31 Oct 2024 15:37:49 +0000 Subject: [PATCH] chore: add test files for local dev --- dev-data/Network_fundamentals.md | 19 ++++++++++++++++ dev-data/Peer_to_peer_network.md | 35 +++++++++++++++++++++++++++++ dev-data/Turing_completeness.md | 38 ++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 dev-data/Network_fundamentals.md create mode 100644 dev-data/Peer_to_peer_network.md create mode 100644 dev-data/Turing_completeness.md diff --git a/dev-data/Network_fundamentals.md b/dev-data/Network_fundamentals.md new file mode 100644 index 0000000..2d8456b --- /dev/null +++ b/dev-data/Network_fundamentals.md @@ -0,0 +1,19 @@ +--- +title: Network_fundamentals +tags: [networks, network-protocols] +created: Saturday, August 03, 2024 +--- + +# Network fundamentals + +> A network is a system that allows computing devices to communicate and +> exchange information with each other. + +In order for devices to be able to communicate they must share a common +**communication protocol**. + +A protocol specifies **rules determining how information is to be exchanged**. +(Simply connecting two devices is not sufficient for them to be able to +communicate, they must have a shared language.) + +The nodes of a network are called [hosts](Network_hosts.md). diff --git a/dev-data/Peer_to_peer_network.md b/dev-data/Peer_to_peer_network.md new file mode 100644 index 0000000..9e14cce --- /dev/null +++ b/dev-data/Peer_to_peer_network.md @@ -0,0 +1,35 @@ +--- +title: Peer_to_peer_network +tags: [networks] +created: Friday, August 09, 2024 +--- + +# Peer to peer network + +A decentralised network model where each participant (peer) acts as both a +client and a server. + +Resources are shared directly between peers rather than being coordinated via a +server. + +Under a server architecture, multiple requests are made from different hosts for +resources. The server manages this load and is in control of what is being +shared, to whom, and when. With P2P there is no central authority equivalent to +this. Each peer both shares and consumes resources and in this sense is both a +client and a server. + +A practical example of this is [torrenting](Torrenting.md) - an applicaton of +P2P technology to file sharing. + +## Benefits + +- Decentralisation, no central authority, also means no single point of failure. +- Scalable: the network capacity grows with the number of users (contrast + servers) +- Efficiency: idle resources of peers are put to use +- Improved performance for popular content + +## Drawbacks + +- Security: potential for malicious peers and content +- Inconsistent availability of resources diff --git a/dev-data/Turing_completeness.md b/dev-data/Turing_completeness.md new file mode 100644 index 0000000..5e3665a --- /dev/null +++ b/dev-data/Turing_completeness.md @@ -0,0 +1,38 @@ +--- +title: Turing_Completeness +tags: [theory-of-computation, Turing] +created: Friday, September 13, 2024 +--- + +# Turing Completeness +We know that a [Turing machine](Turing_machines.md) is a theoretical construct +of a computer that: + +> contains mutable state, executes sequences of simple instructions that read +> and write that state, and can pick different execution paths depending on the +> state (via conditional branch instructions.) + +A Turing Complete (TC) system is a system that abides by, or can be reduced to, +the above description. + +TC also serves as a _definition of computability_ and provides a formal basis +for conceiving of computation at a theoretical level. + +All Turing Complete systems are functionally equivalent. This means they can +simulate each other given enough time and memory. Similarly a TC system can in +principle perform any computation that any other programmable computer can +perform. This is true for _other_ TC systems and also those that are not TC +however the inverse doesn't hold: a non-TC system cannot emulate a TS system. +For instance a calculator cannot do what a TC smart phone can do. But a smart +phone can act as a calculator. + +Completeness applies to the hardware of computers as well as their software. + +Turing Completeness is the theoretical basis of the practical concept of a +"general-purpose computer": a general-purpose computer is such because it is +TC - it can in theory compute anything that is computable. + +Most modern programming languages are Turing Complete in that they can, in +theory, be used to compute anything that is computable. + +What about Universal Turing Machines eh?