July 21, 2013

C ද , JAVA ද වැඩිය හොඳ ??...!!




      එදා programming language පාඩම කියෙව්වනේ??? ඔන්න එහෙනම් පොරොන්දු උන විදියටම අද මන් කියල දෙන්න යන්නේ මන් බද කාට පුරා අපේ සෙට් එකෙන් ගුටි කන පාඩම...!!!
C     vs      JAVA

හරි එහෙනම් පාඩම පටන්ගමු. ඊට කලින් මන් කලින් දවසේ කිව්වා ඒවායේ පොඩි සාරාංශයක් කියන්නම්.මොකද එක අද ඕනේ වෙනවා 


රූප සටහන දැක්කම පාඩම මතක් වෙනවනේ ??? මිනිස්සු මුලින්ම හැදුවේ machine code කියන programming language එක ඊළගට එකම ටික modify කරලා හදාගත්ත assembly programming language එක, ඊළගට ඉතිහාසය උඩි යටිකුරු කරලා හැදුව human readable නැත්තම් මිනිස්සුන්ට තේරෙන භාෂාවෙන් code ගහන්න පුළුවන් High level language එක.

අද ඉදන් අපි කතා කරන්නේ මේ high level language එක ගැන. high level language එකේ ඇතිඋන languages ගොඩක් තියනවා ඒ අතරේ වැදගත්තම 2ක් තමා C කියන programming language එකයි Pascal කියන programming language එකයි.

                       C කියන programming language එක එක හැදුවේ Dennis Ritchie. ඒ 1972 දී. ඒවගේමයි pascal programming language එක හැදුවේ 1970දි Niklaus Wirth විසින් මේ භාෂා 2ක ගොඩක් සමානයි ඒවගේමයි 2කම ඒකාලේ හැටියට ගොඩක් හොඳ language 2ක්. එත් මේ 2ක අතරේ තිව්නා ලොකු වෙනසක් ඒ තමා, c කියන්නේ system programming type එකේ language එකක්එත් pascal කියන්නේ object oriented type එකේ මුලික අවදියේ programming language එකක්.  අන්න ඒ නිසා මේ 2කෙම තියන හොද දේවල් එකතු කරලා මිනිස්සු හැදුව C++ මේක system programming සහ object oriented programming කියන type 2කෙම අභාෂය ලබාගත්ත කවලම් මැල්ලුමක්. එත් මේ කවලම් මැල්ලුම කොයිතරම් හොඳට මිනිස්සුන්ට හිතට ඇල්ලුවද කිව්වොත් තවමත් මිනිස්සු C++ කියන language එක යොදාගන්නවා code කරන්න


         ඒ කොහොම උනත් මිනිස්සුන්ට ටික කලක් යනකොට අලුත් වෙනසක් ඕනේ උනා. අන්න ඒ වෙනස ඇතිකරේ James Gosline. ඒ 1995 දී JAVA කියන සම්පුර්ණයෙන්ම object oriented සංකල්පය මතම නිර්මාණය උන programming language එක නිර්මාණය කරලා. එදා ඉදන් අද වෙනකම් JAVA කියන භාෂාව මිනිස්සු භාවිත කරනවා code කරන්න. මොකද java කියන්න code කරන්න ගොඩක් පහසු language  එකක් අන්න එකයි ගොඩක අය JAVA යොදාගෙන program හදන්න පෙලබිලා ඉන්නේ.java වල මේ තත්වයත් එක්ක James Gosline, JAVA වල පැවැත්ම ඉස්සරහට ගෙනියන්න හැදුව Sun-microsystem කියන ආයතනය. පස්සේ කලෙකදී එක ORACLE සමගම විසින් මිලදී අරන් දැන් අපි හැමෝම අසාවෙන් code කරන java වල අයිතිකාරයා තමා ORACLE ආයතනය. අද වෙනකොට JAVA කොයිතරම් ජනප්‍රියද කිව්වොත් java SE,EE ,ME විදියට progrm අවශ්‍ය වන හැම තැනකටම program හදන්න පුළුවන් විදියට edition 3ක් ලබාදීලා තියනවා. අන්න ඒ නිසයි අපේ machine එකේ program හදන්න , වෙබ් site පිටු හදන්න විතරක් නෙමෙයි අපේ 4න් 1ක ඇතුලටත් java වලට රිංගගන්න පුළුවන් වෙලා තියනවා.

              java ඒ තරම් ලොකු ජනප්‍රියත්වයක් ලබගන්නකොට C++නුත් නිකම් ඉදියේ නෑ. 2001දේ C# කියල තවත් අලුත් programming language එකක් එලි දැක්වුණා. මේ C# කියන language එක සම්පුර්ණයෙන්ම වගේ system programming සංකල්පය මත නිර්මාණය උන එකක්.



               C++ , C# කියන programming language වලට වඩා JAVA කියන භාෂාව මිනිස්සු අතරට ගියපු එකට ප්‍රදානම හේතුව උනේ platform dependancy කියන එක. කට අරුණ නේ.............????

හරි මොකක්ද මේ programming language වල platform dependancy කියන්නේ?????

අපි එක එක්කෙනා භාවිතා කරන O/S නැත්තම් operating system එකිනෙකට වෙනස්. මන් windows භාවිතා කරනකොට තව කෙනෙක් Linux භාවිතා කරාවි තව කෙනෙක් macOS , තවත් කෙනෙක් Ubuntu නැත්තම් fedora කියල එකී මෙකි නොකී O/S භාවිත කරනවනේ... දැන් මන් මගේ ගාව තියන windows machine එකේ ඉදන් මොකක් හරි program එකක් හදල මගේ යාලුවෙක්ට දෙනවා

“ මචන් මන් software එකක් හැදුව..! බලපං මගේ වැඩ කොහොමද කියල”

යාලුවත් ඉතින්              “ කෝ දියන් බලන්න”

 කියල ගෙදර අරන් ගෙහින් දාලා බලනවා... ටික වෙලාවකින් මට call එකක් එනවා
 “ අඩෝ මොකක්ද බන් මේ මගුල වැඩ කරන්නේ නැනේ ... “ කියල

මොකක්ද මේ උනේ....???????
එතකොට මන් යාලුවගෙන් අහනවා “ උබේ O/S එක මොකක්ද කියල “ බලනකොට ඌ ගව තියෙන්නේ Ubuntu O/S එක දාපු machine එකක්. 

මේ ප්‍රශ්නේ ට තමා platform dependancy කියල කියන්නේ C++, C# කියන language වල තියන ප්‍රධානම අව්ල තමා මේ. අපි බලමු ඇයි මෙහෙම් උනේ කියල





                      මන් ගාව තියනවා windows O/S එක තියන machine එකක්. ඒ machine එකේ ඉදන් C++ කියන programming language එක භාවිතා කරලා calc කියල program එකක් ලියනවා. ( අපි C++, C# භාවිත කරලා program එකක් ලිව්වම එක text file එකක් නෙමෙයි program එකක් සදහා ලිව්ව එකක් කියල හදුනාගන්න දීපු file extention එක තමා “ .cpp “ ඒ නිසා අපි අපිට තේරෙන භාෂාවෙන් ලියපු මේ calc.cpp කියන file එකට කියනවා අපේ program එකේ source code file එක කියල)

ඊළගට අර මන් කිව්වනේ programming language එකත් එක්ක එනවා කියලා compilar කෙනෙක් උ මොකක්ද කරන්නේ අපි අපිට තේරෙන භාෂාවෙන් ලියපු source code file එක O/S එකේ ඉන්න C.I ( command interpretor) කියවගන්න පුළුවන් භාෂාවකට හරවලා හදනවා calc.exe කියන file එක

ඊළගට මන් කරන්නේ මන් ගව තියන calc.exe කියන file එක අරන් පොඩි පරීක්ෂණයක් කරනවා 




            හ්ම්ම්ම්ම්ම්ම්ම්.......!! අපි අර source code file එක compile කරපු machine එකේ තිවනේ windows O/S එක නිසා මේ windows machine එකෙත් අර calc.exe එක run උනා. එත් linux O/S එක තිවන machine එකේ run උනේ නෑ. ඒ කියන්නේ මෙතන හුටපටේ තියෙන්නේ O/S එක මත. එහෙම නේද???
ඔව් එක හරි. දැන් අපි බලමු ඇයි මෙහෙම් උනේ කියල.

මුලින්ම බලමු මේ program එක run වෙන විදිය





                   අපි C++, C# වගේ platform dependent language එකක් පාවිච්චිකරලා program එකක් ලියලා compile කරන කොට එයා ඒ source code file එක compile කරන්නේ O/S එක ඇතුලේ ඉන්න Cammand interpretor ට තේරුම්ගන්න පුළුවන් වෙන්න බව අපි දන්නවනේ. එත් එක එක O/S ඇතුලේ ඉන්න C.I. ල එකිනෙකට වෙනස්.  ඒ කිව්වේ හිතන්නකෝ මෙහෙම  C.I. ල හරියට භාෂා 2ක් දන්න translators ල වගේ එයාලා දන්නේ processor එකත් එක්ක කතාකරන භාෂාවයි තව එයාලගේ මව් භාෂාවයි. දැන් මන් windows  machine එකේ ඉදන් calc.cpp එක compile කරනකොට එක compile වෙන්නේ windows C.I. ගේ මව් භාෂාව උන english වලින්. ඒ නිසා දැන් අපේ calc.exe එක ලියල තියෙන්නේ english වලින් දැන් මන් මේක ගෙහින් දානවා linux machine එකකට linux C.I.  කොන්දේ බැදපු චීනෙක්. මන් ඌට මන් ලග english වලින් ලියල තියන calc.exe එක දීල මේක කියවල වැඩේ කරපන් කිව්වට ඌට ඒක කියවගන්න බෑනේ.... අන්න ඕක තමා හේතුව.

ඒ කියන්නේ අපි C++, C# පාවිච්චි කරලා program හදනවනම් windows වලට 1යි, linuxවලට එකයි,ubuntu වලට එකයි කියල program බර ගානක් හදන්න වෙනවා.... මල පැනල අයෙ මල පනිනවා නේද...????

මෙන්න මේක වලක්වන්න නියම සුත්තරයක් හැදුව James Gosline. ඒ තමා JAVA





කලින් වගේම මන් program එකක් ලියනවා එත් මේපාර ලියන්නේ java වලින් ( මේකේ source code file එකේ extention එක “ .java” එනිසා source code file එකේ නම “ calc.java”)
ඊළගට මන් එක compile කරනවා.ආ.!!!!!!!!!!!!!!! යකෝ ආවේ ගියපාර වගේ “. exe “ file එකක් නෙමෙයි       “ . class “ කියල file එකක්. කමක් නෑ මන් අයෙ අර යාලුවට කතා කරලා මගේ calc.class කියන file එක දෙනවා.

යාලුවත් ඉතින් දෙන්නම් උබට මේපාරත් හොඳ කින්ඩියක් කියල හිතන් ගෙදර ගෙහින් දාලා බලනවා.





ටික වෙලාවකින් call එකක් එනවා “ අඩේ බන් උබනම් සුපිරිම වැඩ කාරයෙක් බන් ....!!” හුරේ වැඩේ හරි. එකියන්නේ java වලට O/S එකෙන් බලපෑමක් නෑ. සුපිරිනේ?????? ඔව් java කියන්නේ platform independent programming language එකක්. කොහොමද එක උනේ???

අපි බලමු java program run වෙන විදිය





හරි දැන් අපිට තියනවා අපේ java source code file එක calc.java අපි දැන් එක compile කරනවා.... අපිට ලැබෙන්නේ වෙනද වගේ calc.exe එකක් එනෙයි calc.class කියල file එකක් ඇත්තම කිව්වොත් මේ calc.class කියා file එක කිසිම command interpreter කෙනෙක්ට කියවන්න බෑ. එහෙනම් අහවල් එකකටද මේක හැදුවේ???
command interpretor ට කියවන්න බැරි උනාට අපි java install කරනකොට අපිට එයාල තව program එකක් දෙනවා ඒ තමා JVM නැතම් java vertual machine. ( දැන් නම් මේක ගොඩක් O/S එක්කම එනවා. එනිසා java නොදැම්මත් java program run කරවගන්න අපිට පුළුවන්) අපි compile කරනකොට ඒ calc.class කියන file එක හැදෙන්නේ මේ JVM එකට කියවගන්න පුළුවන් භාෂාවකින්. ඒ භාෂාව තමයි byte code language එනිසා මේ calc.class file එකට අපි කියනවා byte code file. අපි දැන් මේ calc.class කියන file එක run කරනකොට වෙන්නේ මේ JVM එක අර අපේ .class file එකේ තියන instruction කියවල එකින් එක translate කරලා C.I. ට ලබා දෙනවා ( අපි මේකට කියනවා interprite කරනවා කියල) C.I. එව්වා processor එකට තේරෙන්න translate කරලා processor එකට යවනවා. මෙන්න මේ නිසා අපි java හදුන්වනකොට කියනවා java කියන්නේ compile & interpreted programming language එකක් කියල.
දැන් බලමු කොහොමද කියලා මේක platform independent වෙන්නේ කියල.
දැන් මන් compile කරලා හදාගත්තු calc.class file එක ලියල තියෙන්නේ byte code language කියන භෂාවෙන් ඒක ඕනෙම JVM එකකට කියවගන්න පුළුවන්. JVM එකටත් තේරෙන්නේ භාෂා 2යි 1ක් byte code අනික එයා install වෙන වෙලාවේ බලනවා C.I. ට පුළුවන් මොන භාෂාවද කියල. ඊළගට අන්න ඒ භාෂාව ඉගෙන ගන්නවා. දැන් අපේ JVM එකට පුළුවන් නේ අපේ calc.class file එකයි C.I. නුයි අතරේ translator විදියට වැඩකරන්න. ඉත්න් මන් මේ calc.class file එක මොන O/S එකක run කරන්න හැදුවත් ප්‍රශ්නයක් නෑ නේද???
අන්න ඒ විදියටයි JAVA කියන programming language එක platform independent උනේ...

හ්ම්ම්ම්ම්ම්ම්ම්....!!! ඔය කියපුවා එක්ක C ද java ද හොඳම කියල තීරණය කරන එක ඔයාලට බාරයි.

ඔන්න බාගෙන බලංටකෝ..................................................................................


අපි ඊළගට හමුවෙමු අපේ 1වෙනි JAVA CODING පාඩමත් එක්ක..........


July 19, 2013

C libraries සහ C standard library ගැන පොඩ්ඩක්...

මෙන්න මගේ පලවෙනි post එක ලියන්නයි යන්නෙ මං මේ blog එකේ කලින් ලියල නෑ මුලින්ම ඇවිත් ඉතින් වැඩි කතා නැතුව CSinhalen එකේ කාටත් ආයුබෝවන් කියලා C වලදී නැතුවම බැරි code කොටසක් ගැන කියන්නයි හැදුවෙ. ඔන්න මේ කියන්න යන්නෙ අපි C code එකක් ලිව්වොත් අනිවාර්යයෙන් උඩින් දාන්න වෙන #include එක ගැන.

දැන් කිව්ව code කොටස දැකල ඇතිනේ. අපි ඔය #include එකෙන් කරන වැඩේට ගැළපෙනම උදාහරණෙ තමයි java වල import statement එක. ඒකෙන් කරන්නෙ oracle හෝ sun predefined java packages and classes අපි වැඩ කරන file එකට ගෙන්වාගන්න එක. අපි C වලදීත් ඕක තමයි කරන්නෙ #include එකෙන්.


ඔන්න ඉතින් C කියන්නෙ අයිති කාරයෙක් නැති language එකක්. මේකට අයිතිකාරයෙක් වෙනුවට තියෙන්නෙ committee එකක්. ඒ committee එක තමයි C පිලිබඳ තීන්දු තීරණ ගන්න ඉන්නෙ. C ආපු ගමන්ම මේ committee එකත් ආවෙ නැති හින්දා කාලයක් C තිබුනේ C users ලා මත තමයි. එහෙම තිබුන නිසා එක එක users ලා තාම තමන්ට අවශ්‍ය විදියට library files හදාගෙන C වලට add කළා. Library එකක් කියන්නෙ programming language වලදී predefined code set එකක්. ඉතින් මෙහෙම add වෙන්න ගත්තම C වල size එක වැඩි වුණා. එකම දේ duplicate වුණා. C මහා ජරාවක් වුණා.
මෙතැනදී තමයි C committee එක හැදුනෙ. කවුරුහරි C ට ආදරේ කෙනෙක් හදන්න ඇති. ඒකෙන් වැඩක් නෑ, මේගොල්ලෝ තමයි ඊළඟට C වල තිබුන වැඩකට නැති ඒවා අයින් කරලා දාලා හොඳ, වැඩකට ඇති, internationally users ලට බෙදන්න පුළුවන් libraries ටිකක් C තුල ඉතුරුකර ගත්තෙ. අපි දැන් කලින් කිව්ව libraries මෙයාල විසින් තමා ලබාදීල තියෙන්නෙ. දැන් committee එකෙන් වැඩක් නෑ libraries ගැන බලමු.


අපි C විතරක් install කරාම අපිට ලැබෙන ප්‍රධානම එක තමයි C standard library කියන්නෙ. මේකේ තියෙන්නෙ standard operations and commands වලට අයිති වෙන දේවල් තමයි. C library එකක් ගත්තම ඒක ඇතුලේ header files තියෙනවා, නිකන් java packages ඇතුලේ classes තියෙනවා වගේ. අපි මේ header file එකේ නම තමයි include statement එකට ලබා දෙන්නෙ. එතකොට එයා standard library එකෙන් ඒ නම තියෙන file එකේ තියෙන instructions ලබා ගන්නවා.


අපි දැකල තියෙනවා C වලදී එක එක header file names, මෙන්න මේ වගේ...
stdio.h,  stdlib.h,  ctype.h,  string.h,  math.h,  time.h,  etc...

මෙන්න මේ විදියට තමයි අපි මේවා අපේ file එකට ගෙන්න ගන්නේ...
#include
අපි අපේ C code එක තුල ලියන statements අනුව අපිට include කරන්න වෙන libraries වෙනස් වෙනවා. මේවා code එකට include කර ගත්තම අපිට ඒකෙන් functions ලබා දෙනවා වැඩ කරන්න.ඒ කියන්නෙ ඉතින් අපිටම තමයි පහසුව. Functions විතරක්ම නෙමේ තියෙන්නෙ හොඳද තව macros and variables මේවා ඇතුලේ තියෙනවා, දැනට ඕන නෑ.

උදාහරණයක් විදියට ඔයා C code එකේ input and output විධාන දෙනවනම් ඒවා ගැන අපේ C file එකට කියාදෙන stdio.h (Standard input output) කියන header file එක include කරන්න ඕනි. ඒක නැතුව මෙයා දන්නේ නෑ කොහොමද ඒවා තනියම කරගන්නෙ කියලා. ඔයා ඔයාගේ C code එකේ printf(), scanf(), putchar(), gets(), fclose() වගේ ඒවා ඇතුලත් කරනවානම් stdio.h include නොකර කවදාවත් compile කරන්න බෑ. ඒ header එක නැතුව එයා ඒවා දන්නෙ නෑ.

එතකොට ඔයා string සම්බන්ධ code එකක් ලියනවනම් ඒ ගැන උදවු තියෙන්නෙ string.h එකේ, ඔයා pointers වලින් වැඩ ගනිද්දි convert කරන්න ඕනවෙන atoi(), atof(), strtod(), strtol() වගේ ඒවා තියෙන්නෙ stdlib.h file එකේ. දැන් ඉතින් C pointers ගැන දන්නෙ නැත්නම් අවුලක් කරගන්න එපා, ඒක තවත් ලොකු පාඩමක්. දැනට මේක බලාගමු.
math.h කියන්නෙ මමත් ආස කරන තව හොද header file එකක්. මේකේ ලබාදීල තියෙනවා ගොඩක් mathematical operations වලට functions. fmod(), sqrt(), log(), log10() වගේ functions ගොඩක් මේක ඇතුලේ තියෙනවා.

පහලින් තියෙනවා C standard library එකේ එක එක header files අපි include කරගන්න ඕන මොකටද කියලා. Functions වෙන වෙනම ගැන කිව්වොත් නම් මේ post එක හොදට තියෙයි. ඒක නිසා මම නවතින්න කලින් මේක දිගටම පහලට කියවන අයට functions ගැන උදව්වක් දෙනවා. හැබැයි ඉතින් මෙතන තියෙන්නෙ C standard library එකේ තියෙන ඔක්කොම headers නම් නෙමෙයි. වැදගත් වන ටිකක් විතරයි.


assert.h - Pragram එක තුල programmer සිදුකරන assumptions තහවුරු කරගැනීම කරන්නෙ මේකෙන් තමයි. මේක debugging වලට අදාලයි.
ctype.h - char පාවිච්චි කරනකොට මේක ඕනවෙනවා. මේ file එකේ තියෙන isupper(), toupper(), isalpha(), etc. වගේ functions වලින් char values check and format කරගන්න පුළුවන්.
errno.h - System errors හඳුනගෙන ඒවට අදාලව int එකක් return කරන්න මේකේ තියෙන macro වලට පුළුවන්.
float.h - Floating point values හා සම්බන්ධ functions and constants set එකක් මෙම header file එක තුල ඇතුලත් වෙනවා.
limits.h - Variable types වල limits, නැත්නම් variable properties සහිත macros මේ තුල define කරලා තියෙනවා.
locale.h - විවිධ date formats and currency ගැන මේකේ තමා විස්තර තියෙන්නෙ.
math.h - මෙහි mathematical funcions බොහොමයක් අඩංගුයි. විශේෂත්වය තමයි ඔක්කොම parameters and return types double වීම.
setjmp.h - Process එක්ක වැඩ කරද්දි භාවිතා වෙනවා.
signal.h - Execution signals සමග කටයුතු කිරීමට අවශ්‍යයි.
stdarg.h - නොදන්නා arguements ප්‍රමාණයක් ලබාදෙන ආකාරයට function ලිවීමේදී මෙය ඇතුලත් වනවා. (allows functions to accept an indefinite number of arguements) Java වල var args වගේ තමයි.
stdio.h - System input and output methods සමග වැඩ කරන්න මේක include වෙලා තියෙන්න ඕන.
stdlib.h - Random number generation, number conversion සඳහා අවශ්‍යයි.
string.h - String සමග වැඩ කරන්න මෙම library එකෙන් තමයි instructions ලබා දෙන්නෙ.
time.h - Date and time අවශ්‍ය වුනොත් system එකෙන් ඒවා ගන්න නම් මෙය ඕන වෙනවා.
stdbool.h - boolean type එකෙන් process එක control වන හැටි මෙය තුල අඩංගුයි. C වල boolean data type එකක් නැති උනත් ඒ හා සම්බන්ධ operations කරන්න පුළුවන්. උදාහරණයක් විදියට if/else C තුලදී වැඩ නෙ.
complex.h - සංකීර්ණ සංඛ්‍යා (complex numbers) handle කරන්න කියල දෙන්නෙ මෙයා.



ඔන්න ඉතින් ඔය වගේ headers ගොඩක් තියෙනවා. වෙනත් library එකක් සැලකුවොත් ඒකෙත් තව headers තියෙනවා. ඕව ඔක්කොම ඕන නෑ, හැබැයි basically ටිකක් මතක තියාගන්න නම් අනිවාර්යයෙන් ඕන. Netbeans, C-Free, CodeBlocks වගේ IDE එකක් භාවිතා කරනවානම් ඒවා coding කරන් යනකොට ඉබේම include කරලා දෙනවා. ඒත් compile error එකක් ආවම confuse වෙනවට වඩා ටිකක් මතක තියාගෙනම ඉන්න එක තමයි වාසි.


මම කියපු පොඩිම පොඩි උදව්ව විදියට මෙන්න මෙතන පහලින් දීල තියෙන ඒවට ගිහින්  C standard library එක ගැන කියවන්න. ඕන අවුලක් ආවොත් හරි තවදුරටත් දැනගන්න හිතුනොත් හරි ඒක google කරන්න. නැත්නම් comment එකක් දාලා යන්න. Admin board එකෙන් දැක්කම දන්න දෙයක් නම් කවදාවත් නොකිය ඉන්නෙ නෑ.

 http://www.tutorialspoint.com/c_standard_library/string_h.htm
 http://en.wikipedia.org/wiki/C_standard_library
 http://en.cppreference.com/w/c/header
 http://en.wikibooks.org/wiki/C_Programming/Standard_libraries




දැනට ඉවරයි, තව post එකකින් තමයි එන්න වෙන්නෙ. කියෙව්වට thanks, Cheers!
BV


මොකක්ද මේ " PROGRAMMING LANGUAGE" කියන්නේ

           

          හරි එදා කියල දුන්නනේ “ program “ කියන පුස්කොල පොත ගැන. අද කියන්න හදන්නේ ඒ පුස්කොල පොත ලියල තියන භාෂාව ගැන ඒ කිව්වේ “ programming Language” එක ගැන තම අද පාඩම.

            මන් කලින් කිව්වා වගේ අපේ යකඩ ගොඩට මොකක්වත් තේරුම් ගන්න නම් බෑ. ඇත්තම කිව්වොත් අපි ලියන program පවා තේරුම්ගන්න තරම් වත් හැකියාවක් එකට නෑ. ඔන්න අයෙත් අව්ලක් තේරුම් ගන්න බැරිනම් මොකටද මේ අලුත්ම භාෂාවකුත් හදල program ලියන්නේ ???? මාරම අව්ලක් නේද. මන් කලිනුත් කිවනේ අපේ machine එකට දල ඉන්න O/S  එකේ ඉන්න පොඩි උනත් සැර වැඩකාරයෙක් COMMAND INTERPRETOR කියල, අන්න ඌ තමා අපි ලියන instruction තේරුම් අරන් processor එකට ( ඔය core i3,i5 කියන්නේ ඕකට තමා ) දෙනවා ඌට තේරෙන භාෂාවෙන්.

දැන් පොඩි ප්‍රශ්නයක් මන් අහන්නම් .. අපි දැන් මේ program එක ලියන භාෂාව නැත්තම් programming language  එක කාට තේරෙන විදියට හදපු එකක්ද????

මන් මේකට දෙන උත්තරය ටිකක් විවාදයකට ගන්න පුළුවන් එකක්. ඒ ඔයාලා programming language වල ඉතිහාසය ගැන දන්නේ නැති නිසා


හරි මන් එහෙනම් programming language වල ඉතිහාසය ගැන පොඩ්ඩක් කියලා ඉන්නම්

·         ලෝකේ පළවෙනියටම programming language එකක් භාවිත උනේ 1842 දී Charles Babbage ගේ Analytical Engine එකේදී.  ඒ කාලේදී බාවිතා උනේ machine code කියන programming language එක. මේ programming language එක කෙලින්නම processor එකට තේරුම් ගන්න පුළුවන් විදියට තම හදල තිවනේ මොකද මේ machine code කියන්නේ අද අපි 2කෙ පාදයේ සංක්‍යා කියල පාවිච්චි කරන binary pattern එකේ code. කිව්වම හිතාගන්න බැරිනම් මන් මෙහෙම් කියන්නම් හිතන්න මට ඕනේ ඉංගිරිසි හෝඩියේ මුල් අකුර Type කරගන්න ඔය print වෙන්න ඕන දේ ලියන හැටි බලාගන්නකෝ


                                                  A   à 01000001

    කොහොමද ආතල් එක. දැන් ඔය විදියට අකුරු 3නක වගේ වචනයක් ලියන්න උනොත් කොහොමද??? ඊටත් වඩා වාක්‍යක් ලියන්න උනාම???? කොහොමද සැප !!!


·         ඊළගට මිනිස්සුන්ට තේරුණා මේ වැඩේ හරියන්නේ නෑ කියල ඒ නිසා මිනිස්සු පුරුදු උනා අර වගේ machine code වලින් අකුර අකුර ගගහ code කරන්නේ නැතුව නිතර බවිත වන වචන අර විදියට හදල තියාගෙන ඒවා යොදා ගනිමින් program හදන්න මේ විදියට හදා ගත්ත වචන වලට එයාල නමක් දුන්න ඒ නම තමයි KEY WORDS, ඒ වගේම කෑලි එකතු කරලා හදාගත්ත භාෂාවක් නිසා එයාල මේ programming language එකට කිව්වා Assembly language එක කියල මේ language එක මුලින්ම බාවිත උනේ 1942දී ඒ John V Atanasoff  ගේ ලෝකේ පලවෙනි  true digital electronic computer ලෙස හදුන්වන Atanasoff-Berry Computer (නැතම් කෙටියෙන් මේක ABC කියලත් හදුන්වනවා. ඔය පහල රූපේ තියෙන්නේ එක තමා)






            මේ language 2කම සාමාන්‍ය මිනිහෙක්ට තියා expert programmer කෙනෙක්ටවත් බැලුවට තේරුම් ගන්න බෑ. 1 කේ ඒවා ගොඩකුයි 0 ඒවා ගොඩකුයි දැක්කම ඔලුව විකාර වෙනවනේ බලන්නකෝ පහල


                   0100100001000101010011000100110001001111

ඔය ලියල තියන එක තේරෙනවද ???? නැනේ ඔය තියෙන්නේ ලෝකේ වැඩි පුරම භාවිත වන වචනය. ඇලෙක්සැන්ඩර් ග්‍රැහැම් බෙල් ගේ පෙම්වතියගේ නම “ HELLO ” පොඩ්ඩක් ඉන්නකෝ මන් පෙන්නනම් මුලින්ම මන් මේක 8 ටේ කොටස් වලට කඩාගන්නවා

01001000   01000101   01001100   01001100   01001111
    H                  E                L                L               O

කොහොමද වැඩේ???????? බොක්කත් එක්ක cool වෙනවනේ ??? කොහොමද ඔහොම code කරන්න උනානම් !!!!!!

ඔන්න ඔය දේවල් නිසා මිනිස්සුනට ඕනේ උනා අපි කතා කරන භාෂාවෙන් ම code කරන්න පුළුවන් programming  language  එකක්. එක තමයි නව පරම්පරාවේ programming  language වල ආරම්බය.



·         මේ විදියට මිනිස්සුන්ට තේරෙන භාෂාවෙන් නැත්තම් Human readable  විදියට code කරන්න හදපු programming language වලට දාපු නම තමයි High Level Language. මේක නිසා අපිට code කරන එක ගොඩාක් ලේසි උනා. ඇත්තම කිව්වොත් programming කියන දේ මෙතරම් දියුණුවක් ලබාගන්න ප්‍රධානම turning point එක උනේ මේක.

මේ විදියට හදපු මුල්ම languages තමා;

     1.      John Backus  ගේ  FORTRAN (1955), "FORmula  TRANslator"  
     2.      John McCarthy  ගේ  LISP (1958),  "LISt  Processor"


       ඊළගට තමා අද අපි භාවිතා කරන C,C++,C#, JAVA වගේ languages බිහි උනේ. ඔන්න ඕක තමා programming language වල ඉතිහාසය

එත් මේ මාරු වීමත් එක්ක ලොකු ප්‍රශ්නයක් ඇති උනා මොකද අපිට තේරුම් ගන්න පුළුවන් උනාට මේ language එක processor  එකට තේරුම්ගන්න බෑ. අන්න එක නිසා මිනිස්සු හැදුව සැර වැඩකරුවෙක් ඒ තමා COMMAND INTERPRETER




 දැන් අයෙත් මන් මුලින් අහපු ප්‍රශ්නෙට යමු
අපි දැන් මේ program එක ලියන භාෂාව නැත්තම් programming language  එක කාට තේරෙන විදියට හදපු එකක්ද???

මේකට තියන උත්තරේ තමා මුල්ම කාලේ තිවන machine code සහ Assembly code කියන programming language 2ක කෙලින්ම processor එකට තේරුම් ගන්න පුළුවන් විදියට ලියපු language

එත් දැනට අපි පාවිච්චි කරන programming language , processor එකට කෙලින්ම තේරුම් ගන්න බෑ. ඒ program තේරුම් ගන්න පුළුවන් COMMAND INTERPRETER ට විතරයි. එයා එක machine code වලට translate කරලා processor එකට දෙනවා.






හරි දැන් අපි බලමු programming language එකක් වෙන්න නම් මොනවද තියෙන්න ඕනේ දේවල් කියල ( අමතක කරන්න එපා අපි දැන් කතා කරන්නේ High Level Language ගැන)



  1. අපිට අකුරු ලියන්න කොලේකුයි පෑනකුයි ඕනේ වගේ, machine එකේදී අපිට වචන ලියන්න ඕනේ වෙනවා text editor එකක් ඒ කිව්වේ notepad වගේ එව්වා අන්න එව්වට පොදුවේ කියන නම තමා text editors
  2. ඊළගට අපිට ඕනේ ඕනේ විදියට code ලිව්වට හරියන්නේ නැනේ. සිංහල පන්තියේදී උක්ත අක්‍යයාත සම්බන්දෙ වරද්දල ගුටි කල ඇතිනේ ඒවගේ තමා. අන්න එනිසා අපිට ඕනේ වෙනවා grammer , code කරන්නන්ගේ භාෂාවෙන් කිව්වොත් SYNTAX එකක්.
  3. ඒවගේ තමා අපි ලියන text file එක command interpreter ට කියවන්න පුළුවන් උනොත් අපිට නොවේ කවදාවත් ලියුමක් type කරගන්න වෙන්නේ නෑ මොකද command interpreter ඕක program එකක් කියල හිතල පිස්සු කෙලිනවානේ. අන්න එනිසා අපිට program හදුනා ගන්න දීල තියනවා ක්‍රමයක් ඒ තමා file එකේ වර්ගෙ program එකක වර්ගෙ නැත්තම් file extention එක තමා “ . exe “ එත් text file එකක වර්ගෙ “ . txt “ ඒ නිසා අපිට වෙනවා මේ  calc. txt කියන file එක  calc . exe බවට පරිවර්තනය කරගන්න. අන්න එකට අපිට ඕනේ වෙනවා COMPILAR කියල වෙනම පොඩි program එකක්
  4. ඊළගට අපිට ඕනේ වෙනවා predefined programs. ඈ..............??? කටවල් අරුනද වචනේ අහල??? බය වෙන්න එපා ඔය කිව්වේ කලින් හදලා තියල තිවන පොඩි පොඩි program. ගොඩක් ඕනේ වෙන program හදල එවල තියෙනවනම් අපිට වැඩක් කරන්න ලෙසිනේ??? මාළු කපල සුද්ද කරලා තියනවනම් ඕක හට්ටියට දාලා ලුණු මිරිස් ගොරක දාල ලිපෙතියල උඅගන්න එක මහලොකු කජ්ජක්ද??? නේද. ( ඔය කිව්වට මටනම් එකත් බෑ...) අන්න ඒවගේ ක්ෂණික නූඩල්ස් වගේ දෙයක් තමා predefined programs. අපිට තියෙන්නේ ඒවා යොදාගෙන අපේ වැඩේ කරගන්න එක.



ඔන්න ඔය කියන කරුණු 4 සම්පුර්ණ කරනවානම් අපි කියනවා එකට programming language එකක් කියල


හෝව් හෝව් ඔන්න බාගත කොරන් නිවිහැනහිල්ලෙ බලංටකෝ........................................................................................................................

අද පාඩම බාගන්න

අදට ඔය ඇති නේ අපේ ඊලග පාඩම ... මේක නිසා අපේ එවන් මට ගහවිද දන්නේ නෑ.

                                              “C “ ද හොඳ නැත්තම් “ JAVA” ද


July 18, 2013

මොකක්ද මේ " PROGRAMMING" කියන්නේ


 මොකක් හරි දෙයක් කරන්න කලින් ඒ දේ මොකක්ද කියල අවබෝදයක් ලබාගන්න එක ගොඩක් වැදගත්. අන්න ඒ නිසයි java ගැන කියන්න පටන් ගන්න කලින් කේත කරණය නැතම් තේරෙන සිංහලෙන් කිව්වොත් programming කියන්නේ මොකක්ද??? කොහොමද මේවා කරන්නේ ??? කියල, කියල දෙන්නයි අද හදන්නේ.....


කව්රුත් දන්නවා මේ මොකක්ද කියල. මේක computer එකක් නැත්තම් අදකාලේ කියන්නේ machine එකක් ( ගෙදර ඇදුම් මහන එක නෙමෙයි හොඳේ ). එත් මන් කියනවා මේක නිකම් ප්ලාස්ටික්, යකඩ,ඇලුමිනියම් වගේ දේවල් වලින් හදපු නිකම් උපකරණයක් විතරයි.ඇත්තම කිව්වොත් මේකට ගෙදර තියන හැන්දක් කරන තරම් වත් වැඩක් කරන්න බැ කියල, මොකද හිතන්නේ?????
ඔව් එක තමා ඇත්ත. එහෙනම් කොහොමද මේකට මෙතරම් වැඩ ගොඩක් කරන්න පුළුවන් උනේ???? අන්න එක තම රහස.ඔය යකඩ ගොඩට හිතන්න පුරුදු කරේ මිනිස්සුම තමා. අන්න ඒ හිතන්න උගන්නවන එකට තමා PROGRAMMING කියන්නේ.

            අපි මොකක් හරි පාඩමක් ඉගෙනගන්න කොට අපි එකට පොත් කියවනවා.හරියට අපි O/L කරන කලේ science ඉගෙනගන්නකොට අපිට තිව්නනේ රජයෙන් දීපු science අච්චු පොතක්, මතක ඇතිනේ ඒවා!!! PROGRAM එකත් හරියට ඒ පොත වගේ. කරන්න ඕන හැම දෙයක්ම පිළිවෙලට, තේරෙන විදියට අපිට තේරෙන බාසාවෙන් ( සිංහල අයට සිංහලෙන් පොත් ලැබුන දෙමල අයට දෙමළින් පොත් ලැබුනානේ...), ඒ science පොතේ ලියල තිවන වගේම program එකෙත් ඒවා ඒ විදියටම තියනවා.

campus වල අයියලා අක්කලා බලන නිසා මේකේ හරිම definition එකත් දෙන්නම්;


What is a program?

calc.exe                          
 It is a File which has,

  •    Instruction
  •    Syntax
  •    Specific task






           

           ඔන්න ඔය කියපු කරන 3න සපුරන file එකකට අපි කියනවා program එකක් කියල. ඕනෑම පොතකට නමක් තියනවනේ මන් මේ පොත නැතම් program එකට දෙනවා නමක්. එනම තමයි “calc” පොතකට තියෙන්නේ නම විතරද???? නැනේ ඒ පොත මොන වගේ විෂයකට අදාල අදාල පොතක්ද කියල වර්ගයක් තියනවනේ ( අපි ඔය “ඩිව් අංක” කියන්නේ ) හරියට අපේ වාසගම වගේ අන්න ඒවගේ මේ අපේ program එකටත් තියනවා වාසගමක්. එක තමා “ exe” කියන්නේ. ඒ නිසා මේ පොතේ නම තමයි “ calc.exe”

මන් කලින් කිව්වා වගේ, මේ පොතේ තියෙන්නේ අර යකඩ ගොඩට මොකක් හරි වැදගත් වැඩක් එහෙම නැතම් specific task  කරන්න ඕන කරන උපදෙස් ටික නැත්තම් instruction ටික. හැබැයි අපිට සිංහල  තෙරුනට මේ යකඩ ගොඩට සිංහල තේරෙනවා ඇති කියල ඔයාල හිතනවද??? අපෝ නැ සිංහල තියා මුට දෙමලවත් අන්ඩර් දෙමලවත් සුද්දගේ ඉංගිරීසී වත් තේරෙන්නේ නැ. ඌට තේරෙන්න එපයි අර පොත ලියන්න. ඒ නිසා මිනිස්සු ( මම නම් නෙමෙයි හොඳේ) හැදුව අලුත්ම භාෂාවක් අන්න ඒ language එකට තමයි “ PROGRAMMING LANGUAGE” එකක් කියන්නේ.

අපි සිංහල ඉගෙන ගන්නකොට ව්‍යාකරණ කියල ඉගෙනගන්නවා නේ , එතකොට English ඉගෙනගන්නකොට අපි ඉගෙනගන්නේ grammar.එත් programming language වල ඔය 2කම නැ. තියෙන්නේ “SYNTAX” එත් ඉතින් කලේ මාරු උනාට කොටියාගේ පුල්ලි මාරු වෙන්නේ නැ වගේ මේ syntax කියන්නෙත් අර ව්‍යාකරණ වගේ ඒවාටම තමා. සමහරු “ Order” කියල කියන්නෙත් එකටමයි.


දැන් බලමු මාර ගේමක් දීල ලියල තියන මේ program එක මේ යකඩ ගොඩ ඇතුලේ run වෙන්නේ නැත්තම් වැඩ කරන්නේ කොහොමද කියල.....


                මුලින්ම මන් මේකේ තියන කෑලි ටික මොනවද කියන්නම් ( මොකද අපේම සහෝදර සහෝදරියෝ ඉන්නවනේ මේවා ගැන දැනුමක් නැති. අපි මේ බ්ලොග් එක ලියන්නේ එයාලටත් ඉගෙනගන්න පුළුවන් විදියට තේරෙන සිංහලෙන් ඒවගේම අන්තිම ඩොටේ ඉදන් ).

Processor - ඕක තමා අර යකඩ ගොඩ ඇතුලේ තියන පුස් කාපු මොලේ ඕකෙන් තමා තීරණ ගන්නේ එතකොට  එකතු කිරීම් වගේ ගණිත කාර්ම කරන්නෙත් ඔකෙන්ම තමා.

RAM - නැත්තම් Random Access Memory මේක හරියට අපේ කෙටි කාලින මතකය වගේ machine එක off කරාම මතකේ තීව්න ඔක්කොම ඉවරයි

O/S - නැත්තම් Operating System ඔයාල ඔය windows 98, Xp,vista,7,8, mac,ubuntu එකී මෙකි නොකී කියල පාවිච්චි කරන්නේ අර machine එක on කරාම එක එක සද්ද දදා එන්නේ මේක තමා 

හරි දැන් බලමු අපේ calc.exe එක වැඩ කරන්නේ කොහොමද කියල

අපේ o/s එකේ ඇතුලේ තියනවා තව පොඩි program එකක් එකේ නම තමයි “COMMAND INTERPRETER”. මේකෙන් කරන්නේ අපේ calc.exe එකේ ලියල තියන instruction එක එක අරගන්නවා. එක තමයි මන් ඔය 1 කියල දක්වල තියෙන්නේ. ඒ ගන්නේ පිළිවෙලට එකින් එක. එහෙම අරන් ඒ ලියල තියන instruction අර මොලේ කළදක් නැති බුද්ධිමත් processor එකට තේරෙන විදියට translate කරලා ඉඩ මෙන්න මේක කරපන් කියල processor එකට දෙනවා. අන්න එතකොට processor එකත් වැඩර් වගේ කරන්න කිව්වා ඩේ කරලා ඌ තනියම ගේම දුන්න වගේ output එක දෙනවා.

මෙතැනදී අපිට මුණගැහෙන වැදගත්ම කෙනා තමා COMMAND INTERPRETER කියන්නේ. මෙයට පැවරිලා තියන රාජකාරිය තමා අර සිංහල නොතේරෙන processor එකට translater කෙනෙක් විදියට උදව් කරන එක.

ආ මෙන්න අපෙන් ඔයාලට පුංචි තෑග්ගක් අද පාඩම නිවිහැනහිල්ෙල බලන්නෙකා බාෙගන ඉවරෙවලාාාා

ඊලගට අපි බලමු  “ මොනවද මේ programming language කියන්නේ “ කියල....එක ඊලග කොටසින්............. 



image

About C

C is a good language for hardware based applications and is the base of the best selling Windows OS. And is a key subject to most of the university students.

image

About us

We are students from an institute of software engineering, Sri Lanka, and we aim to make this the best blogspot for C language. Thanks!