Packaging and Distribution

Packaging and Distribution

Packaging
         Software System or application မ်ားအား  ေရးသား ဖန္တီးၿပီးေသာအခါ အသံုးၿပဳသူ user မ်ားအတြက္ သက္ဆိုင္ရာ operating system မ်ားတြင္ အသင့္ ထည့္သြင္း တပ္ဆင္ရန္ ထုပ္ပိုးမွဳ ၿပဳလုပ္ေသာ အဆင့္ကို packaging ဟုေခၚသည္။ Windows Operating system မ်ားအတြက္ installer package မ်ားအၿဖစ္ standard executable file(.exe) ဖိုင္မ်ားႏွင့္ microsoft installer file(.msi) ဖိုင္မ်ားကို အသံုးၿပဳၾကသည္။ Linux operating system အတြက္မူ .deb ဖိုင္မ်ား၊ tar.gz ဖိုင္မ်ား စသၿဖင့္ အသံုးမ်ားၾကသည္။
         Windows Operating System မ်ားအတြက္ installer package မ်ားၿပဳလုပ္ရတြင္ သီးၿခား installer maker ၿပဳလုပ္ေသာ application မ်ားရွိသကဲ့သို႔ အခ်ိဳ႕ေသာ Visual Studio ကဲ့သို႔ေသာ IDE မ်ားတြင္ setup file ၿပဳလုပ္ေပးႏိုင္ေသာ function မ်ား ပါဝင္လာသည္။ Java language တြင္မူ executable jar file အၿဖစ္ .jar file တစ္ဖိုင္တည္းတြင္ class file မ်ား၊ audio file မ်ား၊ image file မ်ား၊ icon file မ်ားကို စုစည္း၍ ၎ jar ဖိုင္ကို Java Runtime Environment (JVM) က execute လုပ္ေပးသည္။

Distribution
        Software system တစ္ခု ၿပီးေၿမာက္ေသာအခါ အမ်ားသို႔ မၿဖန္႔ေဝမီ အမွားအယြင္းမ်ား မရွိေစရန္ စမ္းသပ္သည့္ အေနၿဖင့္ အစမ္း သံုးစြဲၾကည့္ရသည္။ ထိုသို႔ စမ္းသပ္ သံုးစြဲရာတြင္ System ဖန္တီးသူမ်ားအခ်င္းခ်င္း စမ္းသပ္သည့္ version ကို alpha version ဟု ေခၚသည္။ Alpha version တြင္ အမွားအယြင္းမ်ား ရွိေနဦးမည္ၿဖစ္သၿဖင့္ ၿပန္လည္ေရးသားၿပီး ထပ္မံ စမ္းသပ္ၾကသည္။ Alpha version တြင္ေက်နပ္မွဳရွိပါက ဖန္တီးသူ အဖြဲ႔အစည္းအတြင္း သံုးစြဲေနရာမွ ၿပင္ပေလာက အသံုးၿပဳသူမ်ားထံသို႕ ၿဖန္႔ေဝ၍ စမ္းသံုး ၾကည့္ေစသည္။ ၎ကို beta version ဟုေခၚသည္။ Beta version ကို သံုးစြဲေနသူ user မ်ားထံမွ မည့္သည့္ အခ်က္ကို ႀကိဳက္သည္၊ မႀကိဳက္သည္၊ မည္သို႔ၿဖစ္ေစခ်င္သည္၊ မၿဖစ္ေစခ်င္သည္ စသၿဖင့္ စနစ္အတြက္ အႀကံၿပဳခ်က္မ်ားသည္ ဖန္တီးသူ အဖြဲ႔အစည္း ထံသို႔ၿပန္လာသည္။ ထိုအခ်က္အလက္မ်ားကို ၿပန္လည္ဆန္းစစ္ ဖာေထးၿပဳၿပင္၍ ၿပည့္စံုၿပီ အသံုးၿပဳ သူမ်ား၏ လိုလားခ်က္မ်ားႏွင့္ ကိုက္ညီသည္ဟု ဆံုးၿဖတ္ေသာ အေၿခအေနရွိသည့္ version ကို ၁၅ ရက္ ရက္ ၃၀ စသၿဖင့္ ရက္အကန္႔အသတ္ၿဖင့္ၿဖစ္ေစ စနစ္၏ လုပ္ေဆာင္ခ်က္အခ်ိဳ႕ မပါဘဲႏွင့္ၿဖစ္ေစ အသံုးၿပဳသူ user မ်ားထံသို႔ ၎တို႔၏   တရားဝင္ website မ်ားမွ ၿဖန္႔ေဝသည္။ အကယ္၍ ႀကိဳက္ႏွစ္သက္ပါက online ေငြေပးေခ်မွဳစနစ္ၿဖင့္ ၿဖစ္ေစ၊ ဆိုင္မ်ားတြင္ တရားဝင္ေရာင္းခ်ေသာ အေခြမ်ားမွ ၿဖစ္ေစ ဝယ္ယူအားေပး သံုးစြဲႏိုင္သည္။ ထိုသို႔ၿပည့္စံုေသာ စနစ္ကို full version ဟုေခၚသည္။

Software Engineering Process and Modeling

Software Engineering Process and Modeling

Software
         Software  ဆိုသည္မွာ programming language တစ္ခုခုၿဖင့္ ေရးသားထားေသာ program မွ်သာမက၎ႏွင့္ သက္ဆိုင္ေသာ အၿပင္အဆင္၊ ရုပ္ပံု၊ အသံဖိုင္မ်ား၊ အသံုးၿပဳနည္းလမ္းညႊန္မ်ား အားလံုးကို စုေပါင္း ေခၚေဝၚသည္။

Kinds of Software Product
        Software product မ်ားကိုအေၿခခံအားၿဖင့္ ႏွစ္မ်ိဳးခြဲၿခားထားသည္။
  • Generic Products  ႏွင့္
  • Bespoke (or Customized ) Products ဟူ၍ၿဖစ္ပါသည္။
        Generic Products  ဆိုသည္မွာ programming ေရးသားေရာင္းခ်ေသာ team or company တစ္ခုခုမွ မည္သည့္ customer အတြက္မဆို ရည္စူး၍ ေစ်းကြက္သို႔ ေၾကၿငာေရာင္းခ်ေသာ product မ်ိဳးၿဖစ္သည္။ ဥပမာ-လက္ရွိ အသံုးၿပဳမ်ားေသာ Microsoft Office, Page Maker, Photoshop, Auto CAD စသည္တို႔ၿဖစ္ၾကသည္။ ထုတ္လုပ္သူမွ ပိုင္ဆိုင္ၿပီး ၿပဳၿပင္ေၿပာင္းလဲမွဳ မ်ားကိုလည္း ထုတ္လုပ္သူမွသာ ၿပင္ဆင္ေၿပာင္းလဲခြင့္ရွိသည္။
        Bespoke (or Customized ) Products ဆိုသည္မွာ customer တစ္ေယာက္ေယာက္မွ သီးၿခား မွာယူအပ္ႏွံသည့္ product မ်ိဳးၿဖစ္သည္။ ဥပမာအားၿဖင့္ သီးသန္႔စီးပြားေရး လုပ္ငန္းတစ္ခုခု ေဆာင္ရြက္ရန္အတြက္ လာေရာက္ အပ္ႏွံေသာ software မ်ား၊ အေသ တပ္ဆင္ထားေသာ အီလက္ထေရာနစ္ ကိရိယာမ်ားရွိ ထိန္းခ်ဳပ္မွဳစနစ္မ်ား၊ ေလေၾကာင္း ထိန္းသိမ္းေရး စနစ္မ်ားတြင္ အသံုးၿပဳေသာ software မ်ား စသည္တို႔ၿဖစ္သည္။ customer မ်ားမွ ပိုင္ဆိုင္ၿပီး ၿပဳၿပင္ေၿပာင္းလဲမွဳ မ်ားမွာလည္း customer အလိုက် သာၿဖစ္သည္။
Software Engineering
        Software Engineering  ဆိုသည္မွာ software တစ္ခုအား စတင္ဖန္တီးရန္အတြက္ လိုအပ္ခ်က္မ်ားအား စတင္ စဥ္းစားခ်ိန္ မွစ၍ ထုတ္လုပ္ ဖန္တီးၿပီးသည့္ အခ်ိန္ထိ အၿပင္ ေရရွည္ အသံုးၿပဳႏိုင္ေရးအတြက္ ထိန္းသိမ္းမည့္ နည္းလမ္းမ်ား စသၿဖင့္ လုပ္ငန္းစဥ္ အားလံုးႏွင့္ သက္ဆိုင္သည့္ engineering စည္းမ်ဥ္းစည္းကမ္းမ်ား ၿဖစ္သည္။      
        Software Engineering  သည္
  • အခ်ိန္ႏွင့္တေၿပးညီရွိမွဳ(အခ်ိန္ကုန္သက္သာေစမွဳ)
  • ကုန္က်မွဳသင့္တင့္မွဳ
  • လက္ခံႏိုင္ေလာက္ေသာစြမ္းေဆာင္ႏိုင္မွဳ
  • မွန္ကန္ေသာလုပ္ေဆာင္မွဳ
            စသည့္ အရည္အခ်င္းမ်ားရွိေသာ software system မ်ားကို ထုတ္လုပ္ႏိုင္ေစမည့္ ကြန္ပ်ဴတာသိပၸံပညာႏွင့္ အႏုပညာ ေပါင္းစပ္မွဳ တစ္ရပ္ ၿဖစ္သည္။
Modeling
        Software တစ္ခုတည္ေဆာက္ၿပဳလုပ္ပံုအား ၿပင္ပလက္ေတြ႕ေလာကတြင္ အိမ္တစ္လံုး တည္ေဆာက္ပံုႏွင့္ ႏွိဳင္းယွဥ္ ေလ့လာ ၾကည့္ၾကပါစို႔။ အိမ္တစ္လံုး ေဆာက္ရန္အတြက္ ပထမဆံုး လိုအပ္ေသာ အဆင့္မွာ ဗိသုကာဆရာ Architect ထံသို႔ သြားေရာက္၍ မိမိေဆာက္လုပ္လိုသည့္ အိမ္ပံုစံအမ်ိဳးအစား၊ မိမိတတ္ႏိုင္ေသာ ကုန္က်စရိတ္၊ အသံုးၿပဳလိုသည့္ ေဆာက္လုပ္ေရး ပစၥည္းမ်ား စသည္တို႔အား architect အားေၿပာၿပ၍ architect မွတြက္ခ်က္ကာ ေနာက္ဆံုးတြင္ အိမ္ပံုစံ ဒီဇိုင္းႏွင့္ အၾကမ္းဖ်ဥ္း ကုန္က်စရိတ္အား ရရွိမည္ၿဖစ္သည္။ ထိုပထမအဆင့္သည္ software engineering လုပ္ငန္းတြင္ modeling ၿပဳလုပ္သည္ဟု ေခၚသည္။
        ထိုအိမ္ပံုစံ ဒီဇိုင္းအား မည္သည့္ ေဆာက္လုပ္ေရး ဝန္ေဆာင္မွဳေပးေသာ construction company တြင္ ၿဖစ္ေစၿပသ၍ အခေပး ေဆာက္လုပ္ႏိုင္ေစပါသည္။ Software engineering လုပ္ငန္းတြင္လည္း system architect ဟု ေခၚေသာ ပညာရွင္မ်ားမွ ဆြဲေပးေသာ ဒီဇိုင္းပံုစံအတိုင္း programmer မ်ားမွ coding မ်ား ေရးသားရသည္သာ ၿဖစ္သည္။ Programmer မ်ားတြင္လည္း ၎တို႔၏ သက္ဆိုင္ရာအလိုက္ ကၽြမ္းက်င္ တတ္ေၿမာက္ထားေသာ programming language မ်ားမွာ မတူညီႏိုင္ၾကေပ။ ထို႔ေၾကာင့္ system architect မ်ားႏွင့္ အၿခား programmer မ်ား အားလံုး၏အၾကားတြင္ နားလည္ရန္လိုအပ္ေသာ modeling language တစ္မ်ိဳး လိုအပ္လာသည္။ ၎လိုအပ္ခ်က္ကို UML (Unified Modeling Language) က ၿဖည့္ဆည္းေပးသည္။ UML သည္ language တစ္ခု ၿဖစ္ေသာ္လည္း အၿခား Language မ်ားကဲ့သို႔ စာသားမ်ားသက္သက္ မဟုတ္ပဲ ပံုမ်ားၿဖင့္ ကိုယ္စားၿပဳေသာ Diagram Language ၿဖစ္သည္။ UML diagram တစ္ခုကိုၾကည့္၍ မည္သည့္ language programmer ကမဆို coding ကို ေရးသားႏိုင္ရမည္ၿဖစ္သည္။ ဥပမာအားၿဖင့္ ကိန္းႏွစ္ခုကို ေပါင္းေပးေသာ system တစ္ခုအတြက္ system architect က ေအာက္ပါအတိုင္း UML diagram တစ္ခု ဆြဲေပးသည္ဆိုၾကပါစို႕။ 

        ၎ ပံုကိုၾကည့္၍ မည္သည့္ language programmer ကမဆို သက္ဆိုင္ရာ language ၿဖင့္ လိုလားခ်က္ ၿပည့္စံုေစမည့္ coding ကို ေရးသားႏိုင္ရမည္ ၿဖစ္သည္။ ဥပမာအားၿဖင့္ ဆိုရေသာ္ ဒိုေရမီဖာ ေတးဂီတႏုတ္ တစ္ခုကိုၾကည့္၍ မည္သည့္ တူရိယာ ပညာရွင္ ကမဆို တီးခတ္ႏိုင္ေသာ သေဘာမ်ိဳးပင္ ၿဖစ္သည္။ အထက္တြင္ ေဖာ္ၿပေသာ Model ပံုမ်ိဳးကို Usecase Diagram ဟုေခၚသည္။ Usecase diagram ဆိုသည္မွာ System တစ္ခုကို user တစ္ေယာက္အေနၿဖင့္ မည္သို႔အသံုးခ်၍ ရသနည္းဟု အသံုးၿပဳသူ ဘက္မွ စဥ္းစားေသာ user view ကို အေလးေပးသည့္ diagram မ်ိဳးၿဖစ္သည္။ UML တြင္ diagram ၉ မ်ိဳးရွိသည္။


Type of Application and Choosing Language

Type of Application and Choosing Language

         Programmer တစ္ေယာက္ အၿဖစ္ ရပ္တည္လိုသူ တစ္ေယာက္အတြက္ application အမ်ိဳးအစားမ်ားကို သိရွိၿပီး programming language မ်ားကို ေရြးခ်ယ္ေလ့လာ သင္ယူႏိုင္ရန္အတြက္ အေၿခခံ သေဘာတရားမ်ားကို ဆက္လက္ေဆြးေႏြး ေပးသြားပါမည္။ Application မ်ားကို အေၿခခံအားၿဖင့္ web application ႏွင့္ desktop or standalone application ဟူ၍ ႏွစ္မ်ိဳးခြဲၿခား ႏိုင္ပါသည္။ Web application ဆိုသည္မွာ web browser မ်ား (Internet Explorer, Mozilla Firefox, Google's Chrome, Opera စသည္မ်ား…) မွတဆင့္ အသံုးၿပဳႏိုင္ေသာ application မ်ားၿဖစ္သည္။ မည္သည့္ operating system တြင္မဆို web browser ပါသည္ႏွင့္ အသံုးခ်ႏိုင္ေသာ application အမ်ိဳးအစားမ်ိဳးၿဖစ္သည္။
        
Web application မ်ားေရးသားရာတြင္အသံုးၿပဳေသာ language မ်ားမွာ
  • HTML (Hypertext Markup Language)
  • CSS (Cascading Style Sheet)
  • Java script
  • vb script
  • PHP (Hypertext Pre-processor)
  • JSP (Java Server Pages)
  • ASP (Active Server Pages)
  • ASP.Net (Active Server Pages on .Net Framework)
စသည္တို႔ၿဖစ္သည္။
        
 Desktop or standalone application ဆိုသည္မွာ သက္ဆိုင္ရာ operation system တြင္ installation ၿပဳလုပ္၍ အသံုးၿပဳရေသာ application အမ်ိဳးအစားမ်ိဳးၿဖစ္သည္။ Operating system မ်ားအလိုက္သက္ဆိုင္ရာ version ရွိသည္။ ဆိုလိုသည္မွာ Windows OS မ်ားအတြက္ အသံုးၿပဳေသာ Mozilla Firefox browser application သည္ linux OS တြင္ installation ၿပဳလုပ္၍ အသံုးၿပဳ၍မရေပ။ Linux version အတြက္ ထြက္ရွိထုတ္လုပ္ထားေသာ Mozilla Firefox browser application သည္လည္း Windows ႏွင့္ အၿခား OS မ်ားတြင္အသံုးၿပဳ၍ မရေပ။ Desktop application မ်ား ေရးသားရာတြင္ အသံုးမ်ားေလ့ရွိေသာ language မ်ားမွာ
  • C,C++
  • VB(Visual Basic)
  • Java
  • C#
စသည္တို႔ၿဖစ္ၾကပါသည္။
         Computer Prorammer တစ္ဦးအၿဖစ္ ရပ္တည္လိုသူတစ္ဦး အေနၿဖင့္ မိမိသည္ Web programmer အၿဖစ္ရပ္တည္မည္ သို႔မဟုတ္ desktop programmer တစ္ေယာက္ အၿဖစ္ ရပ္တည္မည္ကို ဆံုးၿဖတ္သည့္အေပၚ မူတည္၍ သင့္ေတာ္ေသာ programming language တစ္ခုကို အထူးၿပဳ ေလ့လာတတ္ေၿမာက္ထားရန္ လိုအပ္လွေပသည္။ အကယ္၍ Web programmer အၿဖစ္ရပ္ တည္လိုသူ တစ္ဦးအေနၿဖင့္ web language တစ္ခုကို ေရြးခ်ယ္ရမည္ၿဖစ္ၿပီး Desktop application မ်ား ေရးသားလိုသူမ်ား အတြက္ မိမိ target ထား ေရးသားလိုသည့္ OS ေပၚတြင္ run ႏိုင္သည့္ Framework(Runtime) တြင္ အလုပ္လုပ္ႏိုင္မည့္ language တစ္ခုခုကို ေရြးခ်ယ္ တတ္ေၿမာက္ထားရမည္ ၿဖစ္သည္။

Programming Framework and OS Dependency

Programming Framework and OS Dependency

         Programming ကမၻာတြင္ Programming Language မ်ား ေၿမာက္မ်ားစြာရွိသည္။ အသံုးခ်နယ္ပယ္ႏွင့္ target Operating System မ်ားအေပၚ မူတည္၍ မိမိတို႕စိတ္ႀကိဳက္ language မ်ားကို အသံုးၿပဳၾကသည္။ Programming language တိုင္းသည္ သက္ဆိုင္ရာ Language Virtual Machine မ်ားအေပၚတြင္ အလုပ္လုပ္ၾကရသည္။ ၎တို႕ကို Framework သို႔မဟုတ္ Environment သို႔မဟုတ္ Runtime စသၿဖင့္ ေခၚေဝၚၾကသည္။ ဆိုရလွ်င္ C++ ၿဖင့္ေရးသားထားေသာ application မ်ားအလုပ္လုပ္ရန္ အတြက္ သက္ဆိုင္ရာ operating system မ်ားတြင္ C++ Runtime လိုသည္။ Java ၿဖင့္ေရးသားထားေသာ application မ်ာ းအလုပ္လုပ္ရန္အတြက္ သက္ဆိုင္ရာ operating system မ်ားတြင္ Java Runtime Environment (JRE) လိုသည္။ Visual Basic ၿဖင့္ ေရးသားထားေသာ application မ်ား အလုပ္လုပ္ရန္အတြက္ သက္ဆိုင္ရာ operating system မ်ားတြင္ Microsoft Visual Studio လိုသည္။ C#, C++.Net, VB.Net, J#, F# စသည္တို႔ၿဖင့္ ေရးသားထားေသာ application မ်ား အလုပ္လုပ္ရန္အတြက္ သက္ဆိုင္ရာ operating system မ်ားတြင္ Microsoft.Net Framework လိုသည္။

        မိမိ target ထား၍ application ေရးသားလိုေသာ Operating System မ်ားတြင္ရရွိႏိုင္သည့္ Framework, Environment, Runtime မ်ား အေပၚမူတည္၍ programming language မ်ားကိုေရြးခ်ယ္သင့္သည္။
        Visual Basic language အလုပ္လုပ္ေသာ Microsoft Visual Studio သည္ Microsoft မွထုတ္လုပ္ေသာ operating system မ်ားတြင္သာအလုပ္လုပ္သည္။ အၿခား company မ်ားမွထုတ္လုပ္ေသာ OS မ်ား- ဥပမာ-Apple ၏ Mac OS, Unix, Linux စသည္တို႔ေပၚတြင္ အလုပ္လုပ္ႏိုင္ၿခင္းမရွိေပ။ တစ္နည္းအားၿဖင့္ Microsoft Visual Studio သည္ အၿခား OS မ်ားအတြက္ version မရွိေပ။ ယခင္ Sun ယခု Oracle ပိုင္ Java Runtime Environment သည္ အၿခား OS version မ်ားအတြက္ ထုတ္လုပ္ေပးထားသည္။ ထို႔ေၾကာင့္ java language ၏ "တစ္ႀကိမ္ေရး ႀကိဳက္တဲ့ေနရာ အလုပ္လုပ္" "Write Once Run Anywhere" ေဆာင္ပုဒ္သည္ ေက်ာ္ၾကားခဲ့သည္။ နာမည္ေက်ာ္ Microsoft ၏ .Net Framework သည္ ကနဦးေပၚကာစတြင္ Microsoft OS မ်ားၿဖစ္သည့္ Windows OS မ်ားေပၚတြင္သာ အလုပ္လုပ္ႏိုင္ခဲ့ေသာ္လည္း ယခုအခါတြင္ linux ႏွင့္ အၿခား OS မ်ားအေပၚတြင္အလုပ္လုပ္ႏိုင္ေသာ Mono ကဲ့သို႔ Open .Net Framework Platform မ်ားရွိလာၿပီၿဖစ္သည္။ ထို႕ေၾကာင့္ programming ေလာကတြင္ .Net Framework ေပၚတြင္ အဓိကအလုပ္လုပ္ေသာ C# Langauge ၏ က်ယ္ၿပန္႕မွဳသည္ ထင္ရွားလာသည္။ Java ထက္လည္း Object Oriented နည္းပညာ ပို၍သာလြန္သည္ဟု ဆိုသည္။

Compiler and Interpreter (Compiled & Interpreted Language)


Compiler and Interpreter (Compiled & Interpreted Language)

         အမွန္တကယ္ ကြန္ပ်ဴတာမ်ား နားလည္ၾကသည္မွာ machine language သာၿဖစ္သည္။ လူသားမ်ာ းနားလည္ ၾကသည္မွာလည္း အဂၤလိပ္အကၡရာမ်ားႏွင့္ သခ်ၤာဂဏန္းမ်ား၊ သေကၤတမ်ား စသၿဖင့္ၿဖစ္သည္။ ထိုအခါ လူသားမ်ားမွ ကြန္ပ်ဴတာကို ဆက္သြယ္ထိန္းခ်ဳပ္ ေၿပာဆိုရန္ၾကားထဲတြင္ လိုအပ္ခ်က္တစ္ခု ရွိလာသည္။ Compiler ဆိုသည္မွာ လူသား Programmer မ်ားေရးသားေသာ program source code (အဂၤလိပ္ အကၡရာမ်ားႏွင့္ သခ်ၤာဂဏန္းမ်ား၊ သေကၤတမ်ား) မွ စက္နားလည္ေသာ machine executable object code အၿဖစ္ ေၿပာင္းလဲေပးေသာ အရာ (program) တစ္ခုပင္ ၿဖစ္သည္။ 

Figure 2.1 Compiler သည္ source code မွ object code သို႔ေၿပာင္းလဲေပးပံုအဆင့္ဆင့္
        Interpreter ဆိုသည္မွာ programmer ေရးသားေသာ program source code မွ computer နားလည္ေသာ object code သို႔မေၿပာင္းလဲပဲ တိုက္ရိုက္ computer သို႔ခိုင္းေစေသာ အရာပင္ၿဖစ္သည္။ ဥပမာ- vbs (Visual Basic Script) language သည္ compiler မလိုပဲ interpreter မွ တိုက္ရိုက္ run (execute) လုပ္ေပးေသာ interpreted language တစ္ခုၿဖစ္သည္။ user ဖန္တီးေသာ vbs file မ်ားအားလံုးကို system32 ရွိ wscipt.exe(vbs interpreter) မွ ဒိုင္ခံ၍ execute (run) ေပးသည္။ လက္ေတြ႕ သင္ခန္းစာ တစ္ခု လုပ္ၾကည့္ၾကပါစို႔။ Notepad ဖြင့္ၿပီး msgbox(“Hello World!”) ဟုရိုက္ၾကည့္ပါ။ file type အား All File ေရြးၿပီး File Name ကို Hello.vbs ဟု save လိုက္ပါ။ ၎ vbs file အား compile လုပ္စရာမလိုပဲ double click လုပ္၍ run ႏိုင္မည္ၿဖစ္သည္။ vbs language သည္ interpreted language ၿဖစ္ေသာေၾကာင့္ wscript interpreter မွတိုက္ရိုက္ စက္နားလည္ေအာင္ run ေပး ေသာေၾကာင့္ၿဖစ္သည္။ 


Figure 2.1 Interpreter  သည္ source code အား compile မလုပ္ပဲ တိုက္ရိုက္ computer အား interprete လုပ္ေပးပံု
        Interpreted Language မ်ားမွာ vbs, js, python script, windows shell scipt Language(.cmd,.bat file မ်ား) စသည္တို႔ၿဖစ္ၾကပါသည္။ java,C#, C,C++ စသည့္ language မ်ားသည္ compiled Language မ်ားၿဖစ္သည္။
မွတ္သားရန္-       Microsoft Windows Platform တြင္ java မွလြဲ၍ က်န္အားလံုးလိုလို compiled language မ်ားမွ source code မ်ားကို compiled လုပ္လိုက္လွ်င္ Windows ၏ standard executable ဖိုင္ၿဖစ္ေသာ .exe ဖိုင္အၿဖစ္ out put ထုတ္ေပးသည္။ java compiler ကား .class ဖိုင္ out put ထုတ္ေပးသည္။

Basic commands in Windows' cmd

Basic commands in Windows' cmd

        Fundamental Knowledge for Operating System တြင္ operating system မ်ား၏ command line shell မ်ားအေၾကာင္းကိုေဖာ္ၿပခဲ့ၿပီး ၿဖစ္သည္။ Operating system မ်ားစြာရွိသည့္အနက္ စံ,အေနၿဖင့္ windows OS ၏ command မ်ားကိုေဖာ္ၿပ ေပးသြားမည္ၿဖစ္သည္။
        Windows တြင္ command prompt(cmd.exe) ကိုဖြင့္ ရန္ Windows Key ႏွင့္ R ကိုတြဲႏွိပ္၍ေပၚလာေသာ Run တြင္ cmd ဟုရိုက္ၿပီး enter ႏွိပ္ပါ။ command prompt ေပၚလာပါလိမ့္မည္။

        ပံုမွန္အေနၿဖင့္ လက္ရွိ ရွိေနတတ္ေသာေနရာမွာ user profile ၿဖစ္ေသာ C:\Users\Administrstor (မိမိ၏ အေကာင့္ အမည္တစ္ခုခု) ကို၀င္ေရာက္ ထားေပးသည္။ ထိုမွတဆင့္ မိမိသြားေရာက္လိုေသာ ေနရာသို႔ သြားေရာက္ ရမည္ၿဖစ္သည္။ ဥပမာ မိမိက Desktop ေပၚသို႔ သြားေရာက္လိုလွ်င္ cd Desktop ဟုရိုက္ၿပီး Enter ႏွိပ္ရမည္ၿဖစ္သည္။ ထိုအခါ command prompt တြင္ ေရာက္ရွိေနရာအား C:\Users\Administrstor\Desktop> ဟုၿပသေနမည္ၿဖစ္သည္။ ရိုက္ၾကည့္ပါက ေအာက္ပါအတိုင္း ၿပမည္ၿဖစ္သည္။

မိမိ ေရာက္ရွိေနေသာ ေနရာတြင္ရွိေသာ ဖိုင္၊ဖိုဒါ(Directory) မ်ားကိုၾကည့္ခ်င္ပါက dir ဟူေသာ command ကိုရိုက္ၿပီး Enter ႏွိပ္ပါ။


        Desktop ေပၚရွိ ဖိုင္၊ဖိုဒါမ်ားကို command prompt တြင္ၿပသေနမည္ၿဖစ္သည္။ Desktop ေပၚတြင္ ဖိုဒါ(Directory) အသစ္တစ္ခု ဖန္တီးလိုပါက လိုအပ္ေသာ command မွာ
md မိမိဖန္တီးလိုေသာဖိုဒါအမည္
ၿဖစ္သည္။ (md သည္ make directory ၿဖစ္သည္။)။ အကယ္၍ မိမိဖန္တီးလိုေသာ ဖိုဒါအမည္သည္ space ၿခားေနပါက double quote(“ ”) ခံေပးရမည္ ၿဖစ္သည္။ ဥပမာအားၿဖင့္ C Program ဟူေသာ ဖိုဒါတစ္ခု ဖန္တီးလိုပါက ရိုက္ရမည့္ command မွာ
md “C Program”
ၿဖစ္သည္။ C ႏွင့္ Program အၾကားတြင္ space ၿခားေနေသာေၾကာင့္ “” သံုးေပးရၿခင္းၿဖစ္သည္။ အကယ္၍ “C Program” ဟူေသာ ဖိုဒါအား “C tutorial” ဟုအမည္ေၿပာင္းခ်င္ပါက သံုးရမည့္ command မွာ
ren “C Program” “C tutorial” ၿဖစ္သည္။ 
လက္ရွိေရာက္ေနေသာ Desktop မွ “C tutorial” ဖိုဒါ(Directory) သို႔ဝင္ေရာက္လိုပါက cd command ၿဖင့္ဝင္ေရာက္ရမည္ၿဖစ္သည္။ cd “C tutorial"



 လက္ရွိေရာက္ရွိေနေသာ ေနရာမွ ေနာက္သို႔တစ္ဆင့္ဆုတ္ၿပန္ထြက္ခ်င္လွ်င္ cd.. command ကို သံုးရမည္ၿဖစ္သည္။

အကယ္၍ေနာက္ဆံုး drive အထိၿပန္ထြက္ခ်င္ပါက သံုးရမည့္ command မွာ cd\ ၿဖစ္သည္။

အၿခား drive သို႔သြားခ်င္ပါက ဥပမာ drive D:\ သို႕သြားခ်င္ပါက သံုးရမည့္ command မွာ D: ၿဖစ္သည္။
         Desktop ေပၚသို႔ၿပန္သြားၾကည့္ပါစို႔။ ရိုက္ရမည့္ command မ်ားမွာ
C:                              <Enter>
cd %userprofile%        <Enter>
cd Desktop                    <Enter>
ၿဖစ္သည္။

ခုနက ဖန္တီးခဲ့ေသာ “C tutorial” ဖိုဒါထဲသို႔ၿပန္ဝင္လုိပါက cd “C tutorial” ၿဖစ္သည္။


         Windows တြင္လည္း text file မ်ားကိုဖန္တီးႏိုင္ေသာ Command line application တစ္ခုရွိသည္ (Linux တြင္ vi editor ကဲ့သို႔ၿဖစ္သည္။)။ ၎မွာ edit ၿဖစ္သည္။ file name အတိအက်မွာ edit.com ၿဖစ္ၿပီး system32 ဖိုဒါတြင္ရွိသည္။ လက္ရွိေရာက္ေနေသာ desktop ေပၚရွိ C tutorial ဖိုဒါထဲတြင္ hello.c ဟူေသာ C program source code ဖိုင္ေလးတစ္ခုအား edit ကိုအသံုးၿပဳ၍ တည္ေဆာက္ၾကပါစို႔။ command prompt တြင္ “C tutorial” ေနရာသို႔ ၀င္ေရာက္ထားပါ။ ထို႔ေနာက္ edit hello.c ဟုရိုက္လိုက္ပါ။
ေအာက္ပါအတိုင္းေပၚလာမည္။

        ၎မွာ edit ဟူေသာ command line application ၿဖစ္ၿပီး notepad ကဲ့သို႔ပင္ text file မ်ား program source code file မ်ားကို ဖန္တီးႏိုင္သည္။ edit တြင္ C program တစ္ပုဒ္ေရးၾကည့္ၾကပါစို႔။

        ေရးၿပီးေသာအခါ သိမ္းဆည္းရန္အတြက္ File menu မွ save ကိုႏွိပ္ပါမည္။ command line application ၿဖစ္ေသာေၾကာင့္ mouse မသံုးပဲ keyboard ၿဖင့္သာ အသံုးၿပဳၾကပါစို႕။ File menu ေပၚလာေစရန္ Alt+F ကို ႏွိပ္ပါမည္။ ေအာက္ပါအတိုင္း ေပၚလာမည္။

Save ကိုေရြးရန္ S ကိုႏွိပ္ပါ။
edit မွ ထြက္ရန္ Alt+F ထပ္ႏွိပ္ၿပီး X ကိုႏွိပ္ပါ။
မူလ command prompt သို႕ ၿပန္လည္ေရာက္ရွိမည္ ၿဖစ္သည္။ dir command ၿဖင့္ ့hello.c ဖိုင္ေလးအား command prompt တြင္ၾကည့္ပါ။
        Hello.c ဖိုင္သည္ လူသား programmer ေရးသားထားေသာ text ဖိုင္နည္းတူ အၿခားလူသားမ်ား ဖတ္ႏိုင္ေသာ source code ဖိုင္မွ်သာ ၿဖစ္သည္။ စက္နားလည္ ေသာ object code(exe file) ၿဖစ္ရန္ gcc compiler ၿဖင့္ compile လုပ္ရမည္ၿဖစ္သည္။ gcc hello.c –o hello.exe ဟုရိုက္၍ Enter ႏွိပ္ပါ။
        dir command ၿဖင့္ ၿပန္ၾကည့္ၾကည့္ပါ။ မူရင္း source code ဖိုင္ၿဖစ္ေသာ hello.c ဖိုင္ေလးအၿပင္ gcc compiler မွ ထုတ္ေပးေသာ hello.exe ဖိုင္ေလးကိုပါ ေတြ႕ရပါမည္။
မွတ္သားရန္မွာ-
  • hello.c ဖိုင္သည္ source code ဖိုင္ၿဖစ္သည္။ programmer မွေရးသားဖန္တီးသည္။ run ၍မရ။ အမွားၿပင္ဆင္ရန္ သို႕ အၿခား programmer မ်ားဖတ္ရန္သာ ၿပန္လည္ၾကည့္ရွဳ ၿပင္ဆင္ႏိုင္သည္။
  • hello.exe ဖိုင္သည္ object code ဖိုင္ၿဖစ္သည္။ compiler မွထုတ္ေပးသည္။ စက္တြင္ run ရန္ၿဖစ္သည္။ source code မည္သို႔ေရးသားထားသည္ကို ၿပန္ၾကည့္၍မရ။

hello.exe ဖိုင္အား run ရန္ command prompt တြင္ hello.exe ဟုရိုက္ၿပီး enter ႏွိပ္ပါ။ ေအာက္ပါအတိုင္း result ေပၚလာမည္။

        hello.exe ဖိုင္အားဖ်က္လိုပါက အသံုးၿပဳရမည့္ command မွာ del (သို႔မဟုတ္) erase ၿဖစ္သည္။ del hello.exe ၿဖစ္သည္။ erase hello.exe လည္းရသည္။ အထူးသတိၿပဳရန္မွာ command ၿဖင့္ဖ်က္လိုက္ေသာ ဖိုင္မ်ားသည္ recovery ၿပန္လည္ လုပ္ယူရန္ အလြန္ခက္ခဲလွသည္။

dir command ၿဖင့္ၿပန္ၾကည့္ၾကည့္ပါက hello.c တစ္ဖိုင္တည္းကိုသာေတြ႕ရမည္ၿဖစ္သည္။

        “C tutorial” ဖိုဒါထဲတြင္ lesson1 ဟူေသာ ဖိုဒါတစ္ခုထပ္ေဆာက္ၾကည့္ၿပီး hello.c ဖိုင္ေလးအား ၎ lesson1 ဖိုဒါသို႔ ေရႊ႕ေၿပာင္းၾကည့္မည္။ command prompt တြင္ေအာက္ပါအတိုင္း လုပ္ၾကည့္ပါစို႔။ md lesson1 ဟူေသာ command ၿဖင့္ lesson1 ဖိုဒါေဆာက္မည္။

        ေရႊ႕ေၿပာင္းရန္အတြက္ သံုးေသာ command မွာ move ၿဖစ္သည္။ သံုးနည္းမွာ move  ေရႊ႕ေၿပာင္းလိုသည့္လိုသည့္ဖိုင္ ေရႊ႕ေၿပာင္းလိုသည့္လိုသည့္ေနရာ ၿဖစ္သည္။ အတိအက်ဆိုလွ်င္ move .\hello.c .\lesson1 ၿဖစ္သည္။ ဤေနရာတြင္ .\ သည္ လက္ရွိ ေရာက္ေနေသာ ေနရာကို ဆိုလိုသည္။ အကယ္၍ C:\ ထဲရွိ hello.c ဖိုင္ကို D:\ သို႔ေၿပာင္းေရႊ႕လိုလွ်င္ သံုးရမည့္ command မွာ move C:\hello.c D:\ ၿဖစ္သည္။
မွတ္သားရန္မွာ
         move command သည္ cut/paste သေဘာမ်ိဳးၿဖစ္သည္။ တစ္ေနရာမွ ဖိုင္ကို ေနာက္တစ္ေနရာသို႔ ေရႊ႕ၿခင္းၿဖစ္သည့္အတြက္ မူလေနရာတြင္ ဖိုင္မက်န္ေနေတာ့ပါ။ လက္ရွိ ေရာက္ရွိေနေသာ ေနရာသည္ desktop ေပၚရွိ “C tutorial” ဖိုဒါထဲတြင္ၿဖစ္သည္။ ထို “C tutorial” ဖိုဒါထဲရွိ lesson1 ဖိုဒါရွိ hello.c ဖိုင္ေလးအား “C tutorial” ဖိုဒါထဲသို႔ ေကာ္ပီပြားလိုပါက copy command ကိုသံုးရမည္။ သံုးနည္းမွာ
copy ကူးလိုသည့္မူရင္းဖိုင္ ပြားလိုသည့္ဖိုင္
ဤေနရာတြင္သံုးရမည့္ command မွာ
copy .\lesson1\hello.c .\helloCopy.c ၿဖစ္သည္။
         desktop ေပၚရွိ “C tutorial” ဖိုဒါထဲရွိ lesson1 ဖိုဒါ ရွိ hello.c ဖိုင္ေလးအား helloCopy.c အမည္ၿဖင့္ “C tutorial” ဖိုဒါတြင္ ပြားလိုက္ၿခင္းၿဖစ္သည္။ desktop ေပၚရွိ “C tutorial” ဖိုဒါထဲရွိ lesson1 ဖိုဒါ ရွိ hello.c ဖိုင္ေလးအား ဖ်က္လိုပါက ရိုက္ရမည့္ command မွာ
del .\lesson1\hello.c ၿဖစ္သည္။
         lesson1 ဖိုဒါအား ၿပန္လည္ဖယ္ရွားလိုပါက သံုးရမည့္ command မွာ rd .\lesson1 ၿဖစ္သည္။ rd အရွည္ေကာက္သည္ remove directory ၿဖစ္သည္။
မွတ္ခ်က္
         Command prompt အား စတင္သင္ၾကား အသံုးၿပဳရာတြင္ မိမိအတြက္အေရးပါေသာ data မ်ားပါရွိသည့္ file အစစ္မ်ားႏွင့္ စမ္းသပ္ၿခင္းကို ေရွာင္ၾကဥ္ပါ။ Command prompt သည္ system ၏ kernel သို႔ တိုက္ရိုက္ ခ်ိတ္ဆက္ ခိုင္းေစေသာေၾကာင့္ လုပ္ေဆာင္ခ်က္မ်ားမွာ ၿမန္ဆန္လွသည္။



Fundamental Knowledge for Operating System

Fundamental Knowledge for Operating System

What is operating system?
        Operating system ဆိုသည္မွာ Hardware devices မ်ားႏွင့္ ကြန္ပ်ဴတာ အသံုးၿပဳသူမ်ား၊ အသံုးခ်ေဆာ့ဖ္၀ဲ ကိုၾကားခံ ခ်ိတ္ဆက္ေပးေသာ မရွိမၿဖစ္ software တစ္မ်ိဳးၿဖစ္သည္။



               Operating System အမ်ိဳးအစားမ်ားစြာရွိသည္။ အသံုးအမ်ားဆံုးမွာ Microsoft Coporation မွ ထုတ္လုပ္ေသာ Microsoft Windows Operating System မ်ားၿဖစ္သည္။ ဥပမာ- Windows XP, Windows Vista, Windows 7, Windo -ws 8 စသည္တို႔ၿဖစ္သည္။ အၿခား operating system မ်ားမွာ Unix, linux အမ်ိဳးအစားမ်ားၿဖစ္ေသာ Ret hat, Ubuntu, Fedora, Suse, Free BSD စသည္မ်ား၊ Oracle company ၏ solaris၊ Apple ၏ Mac OS စသၿဖင့္ မ်ားစြာရွိသည္။ သို႔ေသာ္ အသံုးအမ်ားဆံုးမွာ Microsoft Windows Operating System မ်ားသာၿဖစ္သည္။ ကြန္ပ်ဴတာအားလံုး၏ ၈၈ ရာခိုင္ႏွဳန္းသည္ Microsoft Windows Operating System မ်ားၿဖစ္သည္ဟုဆိုၾကသည္။ 
         Programmer မ်ားအေနၿဖင့္မိမိတို႔ေရးသားဖန္တီးေသာ application မ်ားအားမည္သည့္ OS မ်ားေပၚတြင္အလုပ္လုပ္ေစမည္ကိုစဥ္းစားတတ္ေစရန္လိုအပ္သည္။ ဥပမာ-မိမိသည္ Software Engineer တစ္ေယာက္ ၿဖစ္သည္ဆိုပါစို႔။ user တစ္ေယာက္သည္ မိမိထံသို႔ စာစီစာရိုက္ application တစ္ခုလာေရာက္အပ္ႏွံသည္ဆိုပါစို႔။ user အသံုးၿပဳေနေသာ computer သည္ မည္သည့္ OS တင္၍အသံုးၿပဳေနသည္ကို မိမိကသိရွိမွသာ ထို OS က လက္ခံေသာ Platform တြင္အလုပ္လုပ္ႏိုင္ေသာ programming language ကိုေရြးခ်ယ္ႏိုင္မည္ၿဖစ္သည္။ Windows user အတြက္ application ေရးသားရန္ Visual Basic ကဲ့သို႔ေသာ language ၿဖင့္ေရးသားႏိုင္ေသာ္လည္း Linux user အတြက္ အၿခား language တစ္ခုၿဖင့္ေရးသားေပးရမည္ၿဖစ္သည္။

How they work
        Operating System တစ္ခုတြင္အဓိကအလုပ္လုပ္ေသာအစိတ္အပိုင္းသည္ kernel ၿဖစ္သည္။ သို႔ေသာ္ user ႏွင့္အဓိကထိေတြ႔ႏိုင္ရန္ shell မွတဆင့္ၾကားခံေပးသည္။


Figure 1.1 Block diagram for operating system
         ပံုပါလမ္းေၾကာင္း 1 ကိုရွင္းၿပပါမည္။ Windows operating system တြင္ start Menu, Task Bar,My Computer, Desktop, Icons စသည္မ်ားသည္ Windows ၏ GUI Shell ၿဖစ္သည့္ Explorer.exe ဟူေသာ Windows Explorer program ၏ ၿပသခ်က္မ်ားပင္ၿဖစ္သည္။ ဥပမာ- user တစ္ေယာက္သည္ ဖိုင္တစ္ခုကိုဖ်က္မည္ဆိုပါက Windows operating system ၏ GUI Shell ၿဖစ္ေသာ  Windows Explorer program ၏ အကူအညီၿဖင့္ My Computer ကိုဖြင့္ကာ မိမိဖ်က္လိုေသာဖိုင္ရွိရာေနရာ သို႔သြား၍ဖ်က္သည္ဆိုပါစို႔။ user သည္ shell သို႔အလုပ္တစ္ခုေပးလိုက္ၿခင္းသာၿဖစ္သည္။ ထိုအခါ explorer shell သည္ kernel သို႔လွမ္း၍ဆက္လက္ေၿပာသြားမည္။ kernel မွတဆင့္ assembler သို႔ဆက္ေၿပာၿပီးေနာက္ဆံုးတြင္ hardware (harddisk) သို႔ ဖိုင္တကယ္ပ်က္ေစမည့္ voltage တစ္ခုကိုလွမ္းထုတ္ၿပီး hardware ေပၚရွိဖိုင္ကို တကယ္ပ်က္ေစမည္ၿဖစ္သည္။
        ပံုပါလမ္းေၾကာင္း 2 ကိုရွင္းၿပပါမည္။ ဥပမာ- user တစ္ေယာက္သည္ Neo software ၿဖင့္အေခြတစ္ေခြ burn မည္ဆိုပါက Neo software ကိုဖြင့္၍ burn လိုေသာဖိုင္မ်ားကို ထည့္ရပါမည္။ ေနာက္ဆံုး burn ေစမည့္ button တစ္ခုကို click ၍ burn လိုက္သည္ဆိုပါစို႔။ user မွ application ကိုခိုင္းလိုက္ၿခင္းပင္ၿဖစ္သည္။ Neo application သည္ Microsoftware Visual C# languageၿဖင့္ေရးသားထားသည္ဆိုပါစို႔။ user ခိုင္းေစေသာအလုပ္ကို C# Language ၏ Framework ၿဖစ္ေသာ Microsoft.Net Framework ကိုဆက္၍ေၿပာမည္။ Microsoft.Net Framework မွ kernel ကိုလွမ္း၍ေၿပာမည္။ kernel မွ assembler ကိုဆက္၍ေၿပာမည္။ assembler မွ ေနာက္ဆံုး hardware(CD/DVD drive) ကိုလွမ္းေၿပာကာ အေခြတြင္ data burn ေစေသာ voltage မ်ားလႊတ္ေပးမည္ၿဖစ္သည္။

User interface mode
        Operating system ႏွင့္ User မ်ားဆက္ဆံရာတြင္ အေၿခအေနႏွစ္ခုရွိသည္။
  1. Graphical User Interface(GUI) ႏွင့္
  2. Command Line Interface(CLI) တို႔ၿဖစ္ၾကသည္။
        Graphical User Interface(GUI) ဆိုသည္မွာ window Forms မ်ား၊ buttons မ်ား၊ menu မ်ား၊ textbox မ်ား၊ picturebox မ်ားစသည္ၿဖင့္ user အား mouse ၿဖင့္လြယ္လင့္တကူ click ၍အသံုးၿပဳႏိုင္ေစေသာ စနစ္မ်ိဳးၿဖစ္သည္။ လက္ရွိအသံုးၿပဳေနေသာ Microsoft ၏ Windows စနစ္သည္ GUI စနစ္ၿဖစ္သည္။ GUI ၿဖင့္ new Folder တစ္ခုတည္ေဆာက္လိုပါကေအာက္ပါပံုအတိုင္း user ၿပဳလုပ္ရမည္ၿဖစ္သည္။
Figure 1.2 A GUI Windows
        Command Line Interface(CLI) ဆိုသည္မွာ command processor ၿဖစ္သည့္ command prompt (Linux တြင္ terminal) မွတဆင့္ မိမိၿပဳလုပ္လိုေသာ ေဆာင္ရြက္ခ်က္မ်ားကို တိုက္ရိုက္ အမိန္႔ေပးၿခင္း ၿဖစ္သည္။ ဥပမာ-drive C ထဲတြင္ tutorial ဟူေသာ folder တစ္ခု ၿပဳလုပ္လိုပါက ရိုက္ထည့္ရမည့္ command မွာ md C:\tutorial ၿဖစ္သည္။


Figure 1.3 A CLI Windows
အသံုးၿပဳသည့္နည္းလမ္းမ်ားကြာၿခားေသာ္လည္းလုပ္ေဆာင္မွဳႏွစ္ခုလံုး၏ ရလဒ္မွာအတူတူပင္ၿဖစ္သည္။

Types of OS
        Operating System မ်ားကိုအေၿခခံအားၿဖင့္ kernel ေပၚမူတည္၍
  1. Open Source ႏွင့္
  2. Close Source ဟူ၍ ႏွစ္မ်ိဳးခြဲၿခားထားသည္။

        မူရင္းေရးသားထားေသာ OS ၏ source code ကိုၿပန္လည္ၿပင္ဆင္ ေၿပာင္းလဲေရးသားႏိုင္သည့္ OS မ်ိဳးကို open source ဟုေခၚသည္။ ဥပမာ- Linus Torvalds ေရးသားထားေသာ Linux ဟု အမည္ေပးထားသည့္ kernel ကို အသံုးၿပဳထားသည့္ Linux မ်ိဳးကြဲ OS မ်ား(Ubuntu, RetHat, Fedora, Suse စသၿဖင့္) ။ Ubuntu Linux ဆိုလွ်င္ အခမဲ့ၿဖစ္သည္။ Ubuntu ဟူသည့္ ေ၀ါဟာရ၏ အဓိပၸါယ္မွာပင္ အာဖရိကဘာသာစကားၿဖင့္ “လူသားၿခင္း စာနာေထာက္ ထားၿခင္း” ဟူ၍ၿဖစ္သည္။ ၎တြင္ အသံုးၿပဳသည့္ application မ်ား အားလံုးသည္လည္း အခမဲ့ပင္ၿဖစ္သည္။


Figure 1.4 Linus Torvalds, 2000



Figure 1.5 Ubuntu
         မူရင္း ေရးသားထားေသာ OS ၏ source code မ်ားကို ၿပန္လည္ၿပင္ဆင္ခြင့္မရွိပဲ အသံုးၿပဳခ အဖိုးအခ ေပးရသည့္ OS မ်ိဳးသည္ close source ၿဖစ္သည္။ ဥပမာ- Microsoft ၏ Windows မ်ားၿဖစ္သည့္ Windows 7, Windows 8 စသၿဖင့္။ ၎ OS မ်ားတြင္ အသံုးၿပဳသည့္ application မ်ား အားလံုးလိုလိုသည္လည္း အဖိုးအခ ေပးရသည္။


Figure 1.6 Microsoft Windows 7


Figure 1.7 Windows သံုး application တစ္ခုမွ user အား၀ယ္ခိုင္းေနပံု