That's a **very** broad question, so rather than go into detail, I'll just give some very high-level answers, and you can ask for clarification as needed.

 > how does software work?

Software is simply a set of instructions for a computer to follow. The "how" is fairly complex, but it boils down to setting voltages on billions of tiny circuits inside the computer in a very specific way.

 > For that matter hardware too

Hardware is generally composed of billions of transistors, which are like tiny electrical "switches".  A signal to one part can switch the transistor on or off, allowing other signals to either be blocked or allowed through.

Using transistors, you can build logic gates: circuits that perform operations like AND (give a high-voltage output only if both of the inputs are high-voltage), OR (give a high-voltage output if *either* of the inputs are high-voltage), NOT (give a high-voltage output for a low-voltage input, and vice versa), etc.

Using logic gates, you can build slightly more complex things, like adder circuits that can add binary numbers.

Using those more complex circuits, you can build even more complex things, like a CPU that can act on certain pre-defined instructions.

 > I hear these terms - application, server, middleware.

An application is just a piece of software, and is generally used to describe something that needs an operating system to run (the Operating system itself is just a very complex bit of software, but is generally not referred to as an "application").  Internet Explorer is an application, for instance.  So is iTunes.  And Steam.  And anything else that your computer can run.

A server is a computer that is set up to listen for network requests and respond to them (usually "serving up" webpages, hence the "server" name).

Middleware is a bit abstract.  It's specialized software that exists to make it easier for other types of software to communicate with each other.

 > When I read something like - "x application was built on top of y server" - what does that mean?

It's hard for me to say without knowing what X and Y are.  My guess is that they're using the other definition of "server" that I haven't mentioned.  Software that takes requests and sends responses is also referred to as a "server".  For instance, when you check your email, your computer contacts the "mail server".  In one sense, this describes the computer that is responding with your email.  But in the other sense, the "mail server" is the specific application/software running on that computer that does all the mail-related stuff.  The same computer might also serve up web pages, and the application that does that would be a "web server".  The computer itself can be referred to as either a "mail server" or a "web server" depending on context (though it's pretty standard just to call it "the server").

Also, the opposite of a "server" is a "client".  Whatever application/computer consumes messages sent by a server is referred to as a client.  So Internet Explorer is a "web client", for instance.  If you play online games, the game software itself is a client.

So "x application was built on top of y server" probably means that "x application" is some type of middleware that acts as both a server and a client, taking requests from other programs, modifying them somehow, and passing them on to "y server".

But again, without specifics, it's hard to say for certain.
එය **ඉතා** පුළුල් ප්‍රශ්නයක්, එබැවින් විස්තර කිරීමට වඩා, මම ඉතා ඉහළ මට්ටමේ පිළිතුරු කිහිපයක් පමණක් දෙන්නෙමි, ඔබට අවශ්‍ය පරිදි පැහැදිලි කිරීමක් ඉල්ලා සිටිය හැක. &gt; මෘදුකාංගය ක්‍රියා කරන්නේ කෙසේද? මෘදුකාංගය යනු පරිගණකයකට අනුගමනය කළ යුතු උපදෙස් මාලාවකි. &quot;කොහොමද&quot; තරමක් සංකීර්ණයි, නමුත් එය ඉතා නිශ්චිත ආකාරයකින් පරිගණකය තුළ ඇති කුඩා පරිපථ බිලියන ගණනක වෝල්ටීයතාවයක් දක්වා අඩු කරයි. &gt; ඒ සඳහා දෘඪාංග ද සාමාන්‍යයෙන් කුඩා විදුලි &quot;ස්විච&quot; වැනි ට්‍රාන්සිස්ටර බිලියන ගණනකින් සමන්විත වේ. එක් කොටසකට සංඥාවක් ට්‍රාන්සිස්ටරය සක්‍රිය හෝ අක්‍රිය කළ හැක, අනෙක් සංඥා අවහිර කිරීමට හෝ ඉඩ දීමට ඉඩ සලසයි. ට්‍රාන්සිස්ටර භාවිතයෙන්, ඔබට තාර්කික ද්වාර සෑදිය හැක: AND වැනි මෙහෙයුම් සිදු කරන පරිපථ (ආදාන දෙකම අධි වෝල්ටීයතාවයක් නම් පමණක් අධි වෝල්ටීයතා ප්‍රතිදානයක් ලබා දෙන්න), හෝ (ආදාන වලින් *එකක්* නම් අධි වෝල්ටීයතා ප්‍රතිදානයක් දෙන්න. අධි-වෝල්ටීයතා), NOT (අඩු වෝල්ටීයතා ආදානයක් සඳහා අධි-වෝල්ටීයතා ප්‍රතිදානයක් ලබා දෙන්න, සහ අනෙක් අතට) යනාදිය. තාර්කික ද්වාර භාවිතා කරමින්, ඔබට ද්විමය සංඛ්‍යා එකතු කළ හැකි එකතු කිරීමේ පරිපථ වැනි තරමක් සංකීර්ණ දේවල් ගොඩනගා ගත හැකිය. එම වඩාත් සංකීර්ණ පරිපථ භාවිතා කරමින්, ඔබට නිශ්චිත පූර්ව නිර්වචනය කළ උපදෙස් මත ක්‍රියා කළ හැකි CPU වැනි ඊටත් වඩා සංකීර්ණ දේවල් ගොඩනගා ගත හැකිය. &gt; මට මෙම නියමයන් ඇසේ - යෙදුම, සේවාදායකය, මිඩ්ල්වෙයාර්. යෙදුමක් යනු මෘදුකාංගයක් පමණක් වන අතර, සාමාන්‍යයෙන් මෙහෙයුම් පද්ධතියක් ක්‍රියාත්මක වීමට අවශ්‍ය දෙයක් විස්තර කිරීමට භාවිතා කරයි (මෙහෙයුම් පද්ධතිය යනු ඉතා සංකීර්ණ මෘදුකාංගයක් වන නමුත් සාමාන්‍යයෙන් එය &quot;යෙදුම&quot; ලෙස හඳුන්වනු නොලැබේ). උදාහරණයක් ලෙස Internet Explorer යනු යෙදුමකි. iTunes එකත් එහෙමයි. සහ වාෂ්ප. සහ ඔබේ පරිගණකය ධාවනය කළ හැකි වෙනත් ඕනෑම දෙයක්. සේවාදායකයක් යනු ජාල ඉල්ලීම්වලට සවන් දීමට සහ ඒවාට ප්‍රතිචාර දැක්වීමට පිහිටුවා ඇති පරිගණකයකි (සාමාන්‍යයෙන් &quot;සේවාකරන&quot; වෙබ් පිටු, එබැවින් &quot;සේවාදායක&quot; නම). Middleware ටිකක් වියුක්තයි. එය වෙනත් ආකාරයේ මෘදුකාංග සඳහා එකිනෙකා සමඟ සන්නිවේදනය කිරීම පහසු කිරීම සඳහා පවතින විශේෂිත මෘදුකාංගයකි. &gt; මම යමක් කියවන විට - &quot;x යෙදුම ගොඩනගා ඇත්තේ y සේවාදායකයේ ඉහළින්&quot; - එයින් අදහස් කරන්නේ කුමක්ද? X සහ Y යනු කුමක්දැයි නොදැන මට කියන්න අමාරුයි. මගේ අනුමානය නම් ඔවුන් භාවිතා කරන්නේ &quot;සේවාදායකය&quot; යන්නෙහි මා සඳහන් නොකළ වෙනත් නිර්වචනය බවයි. ඉල්ලීම් භාර ගන්නා සහ ප්‍රතිචාර එවන මෘදුකාංග &quot;සේවාදායක&quot; ලෙසද හැඳින්වේ. උදාහරණයක් ලෙස, ඔබ ඔබේ විද්‍යුත් තැපෑල පරීක්ෂා කරන විට, ඔබේ පරිගණකය &quot;තැපැල් සේවාදායකය&quot; හා සම්බන්ධ වේ. එක් අර්ථයකින්, මෙය ඔබගේ විද්‍යුත් තැපෑල සමඟ ප්‍රතිචාර දක්වන පරිගණකය විස්තර කරයි. නමුත් අනෙක් අර්ථයෙන්, &quot;තැපැල් සේවාදායකය&quot; යනු එම පරිගණකයේ ක්‍රියාත්මක වන විශේෂිත යෙදුම/මෘදුකාංගය වන අතර එය තැපැල් සම්බන්ධ සියලු දේ කරයි. එම පරිගණකයම වෙබ් පිටු සඳහාද සේවය කළ හැකි අතර, එය කරන යෙදුම &quot;වෙබ් සේවාදායකයක්&quot; වනු ඇත. පරිගණකය සන්දර්භය මත පදනම්ව &quot;තැපැල් සේවාදායකයක්&quot; හෝ &quot;වෙබ් සේවාදායකයක්&quot; ලෙස හැඳින්විය හැක (එය &quot;සේවාදායකය&quot; ලෙස හැඳින්වීම ඉතා සම්මත දෙයක් වුවද). එසේම, &quot;සේවාදායකයේ&quot; ප්රතිවිරුද්ධය &quot;සේවාදායකයා&quot; වේ. කුමන යෙදුමක්/පරිගණකයක් සේවාදායකයක් විසින් එවන ලද පණිවිඩ පරිභෝජනය කරයිද එය සේවාලාභියෙකු ලෙස හැඳින්වේ. උදාහරණයක් ලෙස Internet Explorer යනු &quot;වෙබ් සේවාදායකයෙක්&quot; වේ. ඔබ ඔන්ලයින් ක්‍රීඩා කරන්නේ නම්, ක්‍රීඩා මෘදුකාංගයම සේවාදායකයෙක් වේ. එබැවින් &quot;x යෙදුම y සේවාදායකයට ඉහළින් ගොඩනගා ඇත&quot; යන්නෙන් අදහස් වන්නේ &quot;x යෙදුම&quot; යනු සේවාදායකයක් සහ සේවාලාභියෙකු ලෙස ක්‍රියා කරන, වෙනත් වැඩසටහන් වලින් ඉල්ලීම් ලබාගෙන, ඒවා කෙසේ හෝ වෙනස් කර, &quot;&quot; වෙත ලබා දෙන යම් මිඩ්ල්වෙයාර් වර්ගයකි. y සේවාදායකය&quot;. නමුත් නැවතත්, විශේෂතා නොමැතිව, නිශ්චිතව පැවසීම අපහසුය.