පරිගණක මෘදුකාංග

[thumb|right|වින්ඩෝස් මෙහෙයුම් පද්ධතිය මත ධාවනය වන සිංහල වදන් සකසන මෘදුකාංගයක්,([සිංග්ලිශ් ටයිප්රයිටරය|සිංග්ලිශ්).]]
**පරිගණක මෘදුකාංග (Computer Software)** යනු පරිගණකයක් භාවිතා කර යම් කටයුත්තක් කර ගැනීමට ඇති පරිගණක වැඩසටහන් (Programs), ඒ සම්බන්ධ උපදෙස්, ලේඛන, ක්‍රියාවලි එකක් හෝ කිහිපයක එකතුවකි.

පරිගණක වදන් සකසන මෘදුකාංග වැනි යෙදුම් මෘදුකාංග (Application Software) මෙන්ම මෙහෙයුම් පද්ධති (Operation System) වැනි පද්ධති මෘදුකාංගද (System Software) මීට අයත් වේ. තවද සේවා පද්ධති (Servers), විසිරි පද්ධති (Distributed Computers) වල ක්‍රියාකාරීත්වයටද මෘදුකාංග අවශ්‍ය වේ.

## දෘඩාංග හා මෘදුකාංග 
thumb|238x238පික්
දෘඩාංග (Hardware) යනු පරිගණකයක ඇති භෞතික වස්තූන්ය. ඊට සාපේක්ශව මෘදුකාංග යනු භෞතිකව ස්පර්ශ කල නොහැකි දෙයකි. එමෙන්ම අපට මෘදුකාංගයක් ක්‍රියා කරවිය හැක්කේ දෘඩාංගයක් මතය, (මෘදුකාංගයක් අපට ගෝචර වන්නේ දෘඩාංග වල ක්‍රියාකාරීත්වය මතය). එනම් දෘඩාංග ක්‍රියා කරනුයේ එය මත ක්‍රියා කරන මෘදුකාංගය අනුවය. මෘදුකාංගයක් යනු එය ක්‍රියාත්මක වන දෘඩාංගය සඳහා දෙන ලද උපදෙස් මාලාවකි. මෙසේ දෘඩාංග වල ක්‍රියාකාරීත්වය පාලනය කිරීම සඳහාම නිපදවන ලද මෘදුකාංග පද්ධති මෘදුකාංග හෝ මෙහෙයුම් පද්ධති ලෙසද හැඳින්වේ.

මෘදුකාංගයක් පරිගණකයේ ප්‍රධාන මතකය (Main Memory) මතට ප්‍රවේශ වී එහි ඇති උපදෙස් මාලාව (Instruction set) එකින් එක පිලිවෙලට (Sequence) ප්‍රධාන සැකසුම් ඒකකයට (central processing unit) ලබා දෙයි. මෘදුකාංගයක් එහි සූක්ශමතම මට්ටමේදී පවතින්නේ ද්වීමය (Binary) සංඥා මාලාවක් වශයෙනි. මේවා යන්ත්‍ර භාෂාවෙන් (Machine Language) ඇති උපදෙස් ය.  ප්‍රධාන සැකසුම් ඒකකය එම උපදෙස් වලට අනුව පරිගණකයේ දෘඩාංග වලට විද්‍යුත් සංඥා නිකුත් කරයි. ඒ අනුව ක්‍රියාකාරීත්වය සිදු වේ.

## දත්ත හා මෘදුකාංග 
මෘදුකාංග තනන්නේ මිනිසුන් ගේ ජීවත් වන ලෝකයේ පවතින ගැටලු වලට විසඳුම් සෙවීමටය. මෘදුකාංග තැනීමට ප්‍රථම ඊට‍ අදාල මෘදුකාංගයේ සැකිල්ල (Software framework) තනනු ලැබේ. විසඳුම් සෙවීමටනම් ගැටලුව පිලිබඳ තොරතුරු හා දත්ත අවශ්‍ය වේ. පරිගනකයකට ඇතුලත් කරන ලද දත්ත ගබඩා කර තබාගැනීමට, සැකසීමට, ගනනය කිරීමට, සන්නිවේදනය කිරීමට සහ එය නැවත ලබා දීමට එයට හැකිය. මේ ක්‍රියාවලිය ප්‍රධාන වශයෙන් ම පාලනය කරනු ලබන්නේ මෘදුකාංග මගිනි.

මෙසේ ප්‍රධාන මතකයට ඇතුල් කරන දත්ත හා තොරතුරු, පරිගනකයේ විදුලිය විසන්ධි කිරීමෙන් පසු මතකයෙන් ඉවත් වේ. නමුත් එම තොරතුරු ද්වීතියික මතකය (ස්ථීර මතකය) මත ගබඩා කිරීමෙන් එකම දත්ත නැවත නැවත ඇතුල් කිරීමට සිදු නොවේ.

පරිගනක සම්බන්ධ පලමු නීතිය වන GIGO (Garbage In Garbage Out) යන්නද, දත්ත හා සබැඳි අදහසකි. එයට අනුව වැරදි දත්ත ඇතුල් කිරීමෙන් ලැබෙන්නේ වැරදි ප්‍රතිදානය. නිවැරදි ප්‍රතිදානය ලබාගැනීමට නිවැරදි දත්ත ලබා දිය යුතුය.

පරිගනක ආශ්‍රිත පද්ධතියකින් නියම ප්‍රයෝජන ගැනීමටනම් එහි ඇති දත්ත...
* නිවැරදි විය යුතුය, (Accurate).
* යාවත්කාල විය යුතුය, (Up to date).
* සම්පූර්ණ විය යුතුය, (Complete).
* පරස්පර විරෝධී නොවිය යුතුය, (Consistent).

පරිගනකයක වැඩසටහනකට දත්ත ඇතුල් කිරීමේදී එම දත්ත වල නිවැරදි භාවය තහවුරු කිරීමට validation (නිවැරදිබව තහවුරු කිරීම) භාවිතා කරයි. මෙහිදී සිදු වන්නේ එම දත්ත දී ඇති රටාවක් (pattern), (regular expression) හෝ අර්ථදැක්වීමකට (definition) අනුගතදැයි පරීක්‍ෂා කර බැලීමයි. මෙමගින් වැරදි දත්ත ඇතුල් කිරීමේදීම වලක්වාගත හැක. නමුත් validation නීතියක් සමත් වීම එම දත්තය නිවැරදි බව මුලුමනින්ම සනාථ නොකරයි. ඉන් අදහස් වන්නේ එම දත්තය වැරදි වීමට ඇති විෂාල ඉඩකඩක් (සම්භාවිතාවක්) අඩු බවයි. එනම් validation අසමත් වූ දත්තයක් මුලුමනින්ම නිශ්ප්‍රයෝජන බවය.

## පද්ධති වැඩසටහන්කරනය සහ යෙදුම් මෘදුකාංග 
මෙහෙයුම් පද්ධතියක් යනු ප්‍රධාන වශයෙන් ම පරිගනකයේ ඇති දෘඩාංග, මතකය හා සැකසුම් කාල අවකාශය පාලනය කරන වැඩසටහනකි. මීට අමතරව පරිගනකය මත ක්‍රියා කරන යෙදුම් මෘදුකාංග සඳහා වේදිකාවක් ලෙස ක්‍රියා කිරීමද ඉතා වැදගත් අංගයකි.

thumb|right|පරිගනකයේ ප්‍රධාන මතකයේ ඇති ද්වීමය උපදෙස් මාලා සහ දත්ත, (debug විධානය මගින් බලා ගැනීම).
පද්ධති මෘදුකාංගයක් මගින් කෙලින්ම පරිගනකයේ දෘඩාංග ක්‍රියා කරවන අතර යෙදුම් මෘදුකාංගයක් ක්‍රියා කරන්නේ මෙහෙයුම් පද්ධතිය මතය. එනම් යෙදුම් මෘදුකාංගයක් පරිගනක පද්ධතියට බලපෑම් කරන්නේ මෙහෙයුම් පද්ධතිය හරහාය. යෙදුම් මෘදුකාංගයේ ඇති යාන්ත්‍රික උපදෙස් මාලාව මෙහෙයුම් පද්ධතිය මගින් යන්ත්‍ර භාෂාවට පරිවර්තනය කර දෘඩාංග ප්‍රධාන සැකසුම් ඒකකයට ලබා දෙයි.

මෙහිදී ඇතිවන ප්‍රධානතම ගැටලුවක් වන්නේ යෙදුම් මෘදුකාංගය මෙහෙයුම් පද්ධතියේ ස්වභාවය මතට සීමා වීමයි. එනම් එක් මෙහෙයුම් පද්ධතියක් සඳහා නිර්මානය කරන ලද යෙදුම් මෘදුකාංගයක් වෙනත් මෙහෙයුම් පද්ධතියක් මත ක්‍රියා නොකිරීමයි.

### Virtual Machine 
මෙයට විසඳුමක් වශයෙන් Virtual Machine යන සංකල්පය බිහි විය. එහිදී සිදු වන්නේ යෙදුම් මෘදුකාංගය එක් මෙහෙයුම් පද්ධතියකට සීමා නොවන ලෙස තනා, එය ක්‍රියා කිරීම සඳහා නොයෙක් මෙහෙයුම් පද්ධති සඳහා වෙන වෙනම වේදිකා තැනීමයි. එවිට වෙනස් මෙහෙයුම් පද්ධති මත එකම යෙදුම් මෘදුකාංගයට ධාවනය විය හැක.

මෙහි තවත් ප්‍රධාන වාසියක් වන්නේ යෙදුම් මෘදුකාංග වැඩසටහන්කරනය පහසු වීමයි. එනම් Virtual Machine තුලම බොහෝ වැඩසටහන් සඳහා අවශ්‍ය වන පොදු libraries අන්තර්ගත වීමයි.

;.net platform : .net වේදිකාව (Platform) යනු මයිකෙ‍්‍රාසොෆ්ට් සමාගම විසින් .net භාවිතා කර තනන ලද මෘදුකාංග ධාවනය සඳහා නිපදවා ඇති මෘදුකාංග වේදිකාවයි.
:මෙහි ප්‍රධාන කර්තව්‍ය වන්නේ .net Intermediate Languge (අතරමැදි භාෂාව) ඇති වැඩසටහනක් පරිගනකයේ මෙහෙයුම් පද්ධතියේ විධාන වලට පරිවර්තනය කිරීමයි.
:.net platform 3.5 Beta 2

;JVM (Java Virtual Machine) : JVM යනු Sun Microsystems(පසුව Oracle) සමාගම විසින් ඔවුන්ගේ ජාවා (Java) පරිගනක භාෂාව සඳහා නිපදවා ඇති වේදිකාවයි. මෙහි ප්‍රධාන කර්තව්‍ය වන්නේ Java Bytecode ගොනුවක් ඒ ඒ මෙහෙයුම් පද්ධතියේ විධාන වලට පරිවර්තනය කිරීමයි.
:https://www.oracle.com/technetwork/java/index.html

;Mono : Mono යනු විවෘත මෘදුකාංග ව්යාපෘතියකි. මෙහි අරමුන වන්නේ මයිකෙ‍්‍රාසොෆ්ට් .net, Python මෙන්ම Sun Java වැඩසටහන් ධාවනය කල හැකි Windows, Linux, UNIX, Mac-OS.X මෙන්ම Sun Solaris මතද ක්‍රියා කල හැකි පොදු වේදිකාවක් තැනීමයි.
:http://www.mono-project.com/Main_Page

;MSVBVM : Microsoft Visual Basic Virtual Machine යනු විශුවල් බේසික් (Visual Basic) 5.0 සහ 6.0 භාවිතා කර තැනූ වැඩසටහන් ධාවනය කිරීම සඳහා වින්ඩෝස් මෙහෙයුම් පද්ධතියට එකතු කල හැකි කුඩා DLL ගොනුවකි.

## මෘදුකාංග වැඩසටහන් සහ library 
library යනු පරිගනක වැඩසටහනක් හෝ කිහිපයක් තවත් වැඩසටහනක් එහි ක්‍රියාකාරීත්වයට දායක කරගැනීමයි. මෙහි ඇති විශේෂත්වය වන්නේ මෙම libraryය එක් පුද්ගලයෙකු විසින් ලියා ඇති විට වෙනත් අයෙකුට එය තමාගේ වැඩසටහනකට බද්ධ කරගත හැකි වීමයි. එම නිසා library භාවිතය, පරිගනක වැඩසටහන්කරනය පහසු කරයි, එකම කාර්යය සඳහා නැවත නැවත එකම කේත කොටස ලිවීම වලකා කාලයත් ශ්‍රමයත් ඉතිරි කරයි.

DLL ද බලන්න

## Three layers of software
## බලපත්‍රය 
බලපත්‍රලාභී පරිසරයක් තුළ මෘදුකාංගය භාවිතා කිරීමේ අයිතිය භාවිතා කරන්නාට ‘මෘදුකාංග බලපත්‍රය’ මගින් ලබා දේ. සමහර මෘදුකාංගවල බලපත්‍රය පැමිණෙන්නේ අදාල එකතුව මිළ දී ගැනීමෙන් පසුව වන අතර සමහර දෘඪාංග හා බැදී එන (මුල්ම උපාංග බලපත්‍රය) (OEM - Original Equipment Manufacturer ) සමග බලපත්‍රය හිමි වේ. අනෙක් මෘදුකාංග නිදහස් මෘදුකාංග බලපත්‍ර සේ ලබන්නාට එය වෙනස් කිරීමට හා නැවත බෙදා හැරීම සඳහා අවසර දෙමින් නිකුත් කෙරේ. මෘදුකාංග බොහෝ විට නිදහස් මෘදුකාංග හෝ සීමිත මෘදුකාංග ආකාරයෙන් දැකිය හැක.

## මෘදුකාංග භාවිත කරන්නන් සදහා සාරධර්ම සහ අයිතීන් 
සමාජයේ අළුත් පාර්ශවයක් ලෙස මෘදුකාංග භාවිතා කරන්නන් සදහා තිබිය යුතු අයිතීන් යන අදහස වඩා වර්ධනය වූවක් නොවේ. නිදහස් මෘදුකාංග සමාජය වැනි ඇතැමෙක් තමන් භාවිත කරන මෘදුකාංග නවීකරණය හා නැවත බෙදාහැරීමේ අයිතිය මෘදුකාංග භාවිත කරන්නන්ට තිබිය යුතුය යයි විශ්වාස කරයි. එක් එක් පුද්ගලයාට තම පරිගණකය පාලනය කිරීමට මෙම අයිතීන් අත්‍යවශ්‍ය බවත් එමගින් සියලු දෙනාට සහයෝගයෙන් ඔවුන් තෝරාගන්නා පරිදි සමාජයක් ලෙස එකට වැඩ කිරීම හා මෘදුකාංගයෙහි වර්ධනය වන දිශාව පාලනය කිරීමට හැකියි ලෙස ඔවුන් වාද කරති. අනෙක් පාර්ශවය , මෘදුකාංග භාවිතා කරන්නන්ට ලැබිය යුතු අයිතීන් මෘදුකාංග නිර්මාණකරුවන් තීරණය කළ යුතු යයි විශ්වාස කරයි.

## වර්ග 
පද්ධති මෘදුකාංග වැඩ සටහන් සම්පාදන මෘදුකාංග හා යෙදුම් මෘදුකාංග ලෙස ප්‍රායෝගික පරිගණක පද්ධති ප්‍රධාන පන්ති තුනකට මෘදුකාංග පද්ධති වෙන් කරයි. මෙම වර්ගීකරණයේ මතභේදකාරී වාගේම බොහෝවිට නොපැහැදිලිය.

* පද්ධති මෘදුකාංග (System software)
පරිගණක දෘඪාංග හා පරිගණක පද්ධති ධාවනයට උදව් කරයි. එහි මෙහෙයුම් පද්ධති උපකරණ ධාවක , දෝෂ විනිශ්චය පිළිබද උපකරණ ,මෙහෙයන් , කවුළුමය පද්ධති , ප්‍රයෝජනවත් සේවාවන් හා තවත් දේ අඩංගුය. පද්ධති මෘදුකාංග හි අරමුණ හැකිතාක් දුර සුවිශේෂ භාවිත කළ පරිගණක සංකීර්ණයේ විස්තරය , විශේෂයෙන් මතකය හා අනෙකුත් දෘඪාංගවල ලක්ෂණ , අමතර උපාංග සන්නිවේදනයන් , මුද්‍රණ යන්ත්‍රයන් , කියවන්නන් , විදහා පෙන්වීම් , යතුරු පුවරු හා තවත් දෑ වැනි කාර්යය ක්‍රම සම්පාදකට පරිවහණය කිරීමයි.

* ක්‍රම සම්පාදන මෘදුකාංග (Programming software)

සාමාන්‍යයෙන් ඉතා පහසු ආකාරයට වෙනස් පරිගණක භාෂා භාවිතා කරමින් පරිගණක වැඩ සටහන් හා මෘදුකාංග ලිවීමට ක්‍රම සම්පාදකට සහාය දැක්වීමට මෙවලම් සපයයි. මෙවලම් පාඨ සංස්කාරකයන්, සංග්‍රාහකයන් , පරිවර්තකයන් , බන්ධකයන් , නිදොස්කරුවන් හා තවත් දෑ අඩංගුය . සමෝධානය කළ සංවර්ධන පරිසර‍යක් (IDE) එම මෙවලම් මෘදුකාංග පොදියකට ඒකාබද්ධ කරන අතර ක්‍රම සම්පාදක හට සම්පාදනය කිරීමට , පරිවර්තනය කිරීමට , නිදොස් කිරීමට , අංශු මාත්‍රණයට , හා වෙනත් දෑ සදහා ගුණාකාර විධාන ටයිප් කිරීම / ලිවීම අවශ්‍ය නොවේ. මක්නිසාදයත් IDE සාමාන්‍යයෙන් දියුණු කළ ග්‍රාසිකාකාර පරිශීලක අතුරු මුහුණත තිබේ. (GUI – Graphical User Interface)

* යෙදුම් මෘදුකාංග (Application software)

අවසන් පරිශීලකයාහට විශේෂ (පරිගණක නොවන ආශ්‍රීත) මෙහෙයන් එකක් හෝ කිහිපයක් ඉටු කිරීමට ඉඩ සලසයි. නියමානුකූල යෙදීම් කර්මාන්ත ශාලා ස්වයංක්‍රීයකරණය , ව්‍යාපාරික මෘදුකාංග , අධ්‍යාපනික මෘදුකාංග, ඹෟෂධීය මෘදුකාංග / වෛද්‍ය මෘදුකාංග , පරිගණක දත්ත ගබඩා සහ පරිගණක ක්‍රීඩා අඩංගු වේ. යෙදුම් මෘදුකාංග විශාලතම භාවිතා කරන්නන් ව්‍යාපාරිකයන් වුව ද සෑම අතින්ම පාහේ යෙදුම් මෘදුකාංග ආකාරයක් මිනිස් ක්‍රියාකාරකම් ඇති සෑම ක්ෂේත්‍රයකම භාවිතා කරයි.

## ලේයර 3 
1980 සිට අද දක්වා යෙදුම් මෘදුකාංග බහුල වශයෙන් විකිණි ඇත. යමක් පරිශීලනය කර්නා බොහෝ විට එහි සම්පාදකයට වඩා වෙනස් ලෙස එය දකියි. පොදු කාරය පරිගණක (නිහිත පද්ධති ප්‍රතිඝම පරිගණක, සුපිරි පරිගණක ආදිය නොව) භාවිතා කරන්නන් සාමාන්‍යයෙන් මෘදුකාංගයක පදනම් වේදිකාව යෙදුම හා පරිශිලක ලෙස ස්ථර 3 ක් ක්‍රියාත්ක වන බව හදුනා ගෙන ඇත.

පදනම් මෘදුකාංග 	-	මෙයට ස්ථිරාංග, උපක්‍රම ධාවක, මෙහෙයුම් පද්ධති හා නිශ්චිතවම ග්‍රැපිකරෑපී අතුරැ මුහුණක් අඩංගු වේ. එක්ව කැටි ක මෙය පරිශිලකය පරිගණකය හා එයට අදාළ අනෙකුත් උපකරණ සමග අන්තර් ක්‍රියා කිරීමට මග පාදයි. මෙම මෘදුකාංග බොහෝ විට පරිගණකයන් සමග ලබාදේ. පෞද්ගලික පරිගණක ඔබට සාමානයෙන් පදනම් මෘදුකාංගයක් වෙස් කළ හැක.

යෙදුම් මෘදුකාංග	-	බොහෝ විට පුද්ගලයන් මෘදුකාංගයක් කියු පමණින් හිතේ මවා ගන්නේ යෙදුම් මෘදුකාංගයනකි. පැහැදිලි උදාහරණ ලෙස office suites සහ විඩියෝ ක්‍රීඩා දැක්විය හැක. යෙදුම් මෘදුකාංගයක් බොහෝ විට වෙමම පරිගණක දෘඪාංග වලට පරිබාහිරව මිලදි ගත හැක. සමහර අවස්ථාවල පරිගණකයන් සමගම මේවා ලබා දෙන අතර එහෙත් ස්වාධිනව ක්‍රියාත්මික වන සෙසු වේ. එසේම හැමවිටම වගේ මෙහෙයුම් පද්ධතියෙන් සවාධීනව මේවා ක්‍රියාත්මක වන නමුත්ඒවා පාදන්නේවිශේෂිත පදනමක් (Platform) මුල් කරගෙනය ‍බොහෝ අය සම්පාදක (Compilers) පරිගණක දත්ත ගබඩා සහ අනෙකුත් පද්ධති මෘදුකාංග සලකන්නේ යෙදුම් ලෙසය 

පිරිශීලක මෘදුකාංග	-	පරිශීලක මෘදුකාංග පරිගණක පද්ධතිවට එය පරිශිලනය කරන්නගේ සකස්න විද්‍යාත්මක නිරෑපණය සහ චිත්‍රක හා සජීවිකරණය සදහා පිටපත් මෙම ගණයට වැට්. ‍එස්ම ඉබලෙක්ට්‍රොනික් තැපැල් ෆිල්ටර් ද මෙම වර්ගයේ මෘදුකාංග වේ. පරිශීලය කරන්නේ මෙම මෘදුකාංග තමන් සදහාම සාදා ගන්නා අතර නිතරම එහි වැදගත්කම පරික්ෂා කර බලයි
		පරිශීලක මෘදුකාංග, යෙදුම් පැකේජ වලට එකතු වී ඇති උසස් ආකාරය අනුව‍ බොහෝ පරිශීකයකන් හට මිලදී ගත් යෙදුම් පැකේජ වල හා පරිශීලක මෘදුකාංග අතර වෙනම හා ඒවාට පසුව එක්වුයේ මොනවාදැයි නිසි වැටහීමක් නැත.

## මෘදුකාංග නිර්මානය 
## වැඩසටහන් ගබඩාව 
පරිඝණක වැඩ සටහනකින් පමණක් කාර්යක් ක්‍රියාවට නැන්වීමට නොහැකි වන අවස්ථා ඇත. එම වැඩසටහන අවශ්‍ය බාහිර මෘදුකාංග කොටස්ද වන අතර මේවා Vbraies නමින් හැදිනවේ. මෙවැනි Briberies තනිව ක්‍රියාත්මක වීමට නොහැකි වැඩසටහන් උදාහරණයක් ලෙස සමහර Stand Alone වැඩසටහන් කොටස් Liparies ලෙස ඇති අතර වැඩසටහන් ලිවීමේ ක්‍රියාවට පැනවෙන නමුත් ඒවා අමතන වැඩසටහන් සදහා දත්ත නැවත භාරදීම සිදු නොකරන Stand Alone Cadging proges වැඩසටහන්ද Libraries තුල අන්තර්ගත ‍ෙව් Libraries එකක් හෝ බොහොමයක් වැඩසටහනක් Libraries ඇමතීම හෝ වැඩසටහන් තවත් වැඩසටහනක් ඇමතීම හෝ කිසිදු වැඩසටහනක් ඇමතීම සිදු නොකීරීම සිදුවිය හැක.

## මෘදුකාංගවල නිරවද්‍යතාවය 
## මෘදුකාංග නිර්මාණ හිමිකම් පත්‍ර (මුදෘකාංග පේටන්ට් බලපත්‍ර) 
## තවද බලන්න 
* විවෘත මෘදුකාංග (Open and/or Free software)
* මෘදුකාංග කර්මාන්තය (Software industry)

## බාහිර සබැඳි 
* Programming Tutorials

## මූලාශ්‍ර
ප්‍රවර්ගය:පරිගණක තාක්ෂණය
ප්‍රවර්ගය:පරිගණකවේදය