Saturday, September 22, 2012

ಗಳು ಬಾಟ್ - ಮುಟ್ಟು ಹಮ್ಮುಗಾರಿಕೆಯ ಒಡನುಡಿ -೩






ವಿಕ್ಶನರಿಯಲ್ಲಿ ಪದಗಳನ್ನು ಕಯ್ಯಾರೆ ಸೇರಿಸುತ್ತ ಸುಮಾರು ೬೦,೦೦೦ ಪದಗಳ ವರೆಗೂ ಗೆಳೆಯರು ಸೇರಿಸಿದ್ದರು. ಆಗ ಒಮ್ಮೆ  ಒಟ್ಟಿಗೆ ಕುಳಿತು ಮಾತಾಡುವಾಗ ಕೆಲವು ಸುಳುವಾದ, ಒಂದೇ ತೆರನಾದ ಪದಗಳನ್ನು ಸೇರಿಸಲು ತನ್ನಡೆಸಿಕೆ (Automation) ಬಳಸಿದರೆ ಹೇಗೆ ಎಂಬ ಯೋಚನೆ ನಮಗೆ ಬಂತು. ಇಂಗ್ಲೀಶ್, ತಮಿಳು ಮುಂತಾದ ವಿಕ್ಶನರಿಗಳಲ್ಲಿ ಆಗಲೇ ಬಾಟ್ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರು. ಕನ್ನಡದಲ್ಲಿ ಇಂತಹ ಯಾವುದೇ ಮೊಗಸು ನಾವು ಮಾಡಿರಲಿಲ್ಲ. ಅಲ್ಲದೇ, ತನ್ನಡೆಸಿಕೆಯಿಂದ ಕೆಲವು ಪದಗಳನ್ನು ನಾವು ಸೇರಿಸಬಲ್ಲೆವಾದರೆ ಅಂತಹ ಪದಗಳನ್ನು ಕಯ್ಯಾರೆ ಸೇರಿಸಲು ಕಶ್ಟವೇಕೆ ಪಡಬೇಕು? ಆ ಶ್ರಮವನ್ನು ತನ್ನಡೆಸಿಕೆಯಿಂದ ಸೇರಿಸಲಾಗದ, ಇಲ್ಲವೇ ಸೇರಿಸಲು ಕಶ್ಟವಾದ ಪದಗಳನ್ನು ಸೇರಿಸುವ ಕಡೆ ತಿರುಗಿಸಬಹುದು.

ಆಗ ನಮಗೆ ಬಂದ ಹೊಳಹು, ಹಲವೆಣಿಕೆ ಪದಗಳನ್ನು ತನ್ನಡೆಸಿಕೆಯಿಂದ ಸಲೀಸಾಗಿ ಸೇರಿಸಬಹುದೆಂದು. ವಿಕ್ಶನರಿಯಲ್ಲಿ ಆಗಲೇ ಇರುವ ಪದಗಳನ್ನು ಹುಡುಕುವುದು, ಮತ್ತು ಅವುಗಳ ಹಲವೆಣಿಕೆಯ ಪರಿಜು '-ಗಳು' ಇದ್ದರೆ ಅವನ್ನು ವಿಕ್ಶನರಿಗೆ ಸೇರಿಸುವುದು. ಎತ್ತುಗೆಗೆ, ವಿಕ್ಶನರಿಯ ಪದಗಳನ್ನು ಜಾಲಾಡುವಾಗ 'ಗಾಲಿ' ಎಂಬ ಪದ ಸಿಕ್ಕಿತೆಂದು ಇಟ್ಟುಕೊಳ್ಳೋಣ. ಇದರ ಹಲವೆಣಿಯ ಪರಿಜಾದ 'ಗಾಲಿಗಳು' ಎಂಬ ಪದವನ್ನು ವಿಕ್ಶನರಿಗೆ ಸೇರಿಸುವುದು.

ಇದನ್ನು ಮಾಡುವುದಕ್ಕೆ ನಾವು ಬಳಸಿದ್ದು, ವಿಕ್ಶನರಿ ಒದಗಿಸುವ ಮುಟ್ಟು ಹಮ್ಮುಗಾರಿಕೆಯ ಒಡನುಡಿ (Application Programming Interface). ಅದರಿಂದ ಹುಟ್ಟಿಕೊಂಡಿದ್ದು ನಮ್ಮ ಕನ್ನಡದ ಮೊದಲ ಬಾಟ್ 'ಗಳುಬಾಟ್'. ಸುಮಾರು ೩೦,೦೦೦ -ಗಳು,-ರು ಪದಗಳನ್ನು ಸೇರಿಸಲು ನಮಗೆ ನೆರವಾಯಿತು. ಮುಂದೆ ಅದೇ ಹಮ್ಮುಗೆಯನ್ನು ಬಳಸಿ, ಕೆಲವು ಮಾರ್ಪಾಡುಗಳನ್ನು ಮಾಡಿ ಹಲವು ಬಾಟ್ಗಳನ್ನು ಮಾಡಿದೆವು. ಅವುಗಳ ಬಗ್ಗೆ ಮುಂದಿನ ಬರಹದಲ್ಲಿ ತಿಳಿಸುತ್ತೇನೆ. ಹಾಗೆಯೇ ಇದಕ್ಕಾಗಿ ಬರೆದ ಜಾವಾ ಹಮ್ಮುಗೆಯ ಬಗ್ಗೆಯೂ ತಿಳಿಸುತ್ತೇನೆ.

Saturday, September 8, 2012

ಮುಟ್ಟು ಹಮ್ಮುಗಾರಿಕೆಯ ಒಡನುಡಿ - ೨



ತಿಟ್ಟ : ಫೇಸ್ಬುಕ್ 


ಹಿಂದೆ ಟ್ವಿಟ್ಟರ್ ಮತ್ತು ಫೆಸ್ಬುಕ್ಕುಗಳ ಎತ್ತುಗೆಯನ್ನು ಕೊಟ್ಟು 'ಮುಟ್ಟು ಹಮ್ಮುಗಾರಿಕೆಯ ಒಡನುಡಿ'ಯ  (Application Programming Interface) ಬಗ್ಗೆ ಹೇಳಿದ್ದೆ. ಈಗ ಇನ್ನೂ ಕೊಂಚ ಆಳಕ್ಕೆ ಇಳಿಯೋಣ.  ಒಂದು ಮುಟ್ಟು (application) ತನಗೆ ಬೇಕಾದ ತಿಳಿಹವನ್ನು (data) ಪಡೆಯಲು ಊಳಿಗಿ(server)ಯನ್ನು ತಲುಪ ಬೇಕಾಗುತ್ತದೆ. ಈ ಊಳಿಗಿಯು  ತಾನು ಕೊಡುವ ಊಳಿಗದ ಇಟ್ಟಳವೇ ಮ.ಹ.ಒ (API). ಈಗ ಒಂದು ಫೇಸ್ಬುಕ್ ಎತ್ತುಗೆಯನ್ನು ನೋಡೋಣ.

    GET https://graph.facebook.com/{ಬಳಸುಗ}

ಇಲ್ಲಿ {ಬಳಸುಗ} ಎಂಬುದು ಬಳಸುಗನ ಗುರುತು. ಇದು ಫೇಸ್ಬುಕ್ ಮ.ಹ.ಒ ಅಲ್ಲಿ ಬಳಸುಗನೊಬ್ಬನ ಬದಿನೋಟ(profile)ವನ್ನು ಹಿಂದಿರುಗಿಸುವ ಕೆಲಸ (operation, method). ನಿಮ್ಮ ಅಲೆಯುಲಿ(mobile phone)ಯಲ್ಲಿನ ಫೇಸ್ಬುಕ್ ಮುಟ್ಟು (application) ನಿಮ್ಮ ಬಳಸುಗ-ಬದಿನೋಟ(user profile)ವನ್ನು ತೋರಿಸಬೇಕಾದರೆ ಈ ಮೇಲಿನ ಕೆಲಸವನ್ನು ಕರೆಯಬೆಕು. ಈ ಕೆಲಸದ ಇಟ್ಟಳ(structure)ವೇ ತಿಳಿಸುವಂತೆ ಇದು ಒಂದು ಮಿರುಗೋದ ಸಾಗಣೆ ಒಡಂಬಡಿಕೆ(Hyper Text Transfer Protocol)ಯ ಕರೆ(call). ಅದಲ್ಲದೆ ಇದನ್ನು ಕಾಪು ಕುಳಿ ಪದರದಿಂದ (Secure Sockets Layer) ಜೋಪಾನ ಮಾಡಲಾಗಿದೆ. ಅದಕ್ಕೆ http ಜೊತೆ s ಬೇರೆ ಇದೆ. ಫೇಸ್ಬುಕ್ ಮ.ಹ.ಒ(API)ದ ಇಡೀ ಬರೆಗುರುತು (document) ಇಲ್ಲಿದೆ.

ಮುಂದಿನ ಬರಹಗಳಲ್ಲಿ ಫೇಸ್ಬುಕ್ ಅಲ್ಲದೆ ಇನ್ನಿತರೆ ಒದಗಿಸುಗರ (ಪ್ರೊವಯ್ಡರ್) ಮ.ಹ.ಒಗಳನ್ನು ಕರೆದು ನಮಗೆ ಬೇಕಾದ ತಿಳಿಹವನ್ನು (data) ಪಡೆಯುವ ಬಗೆಯನ್ನು ತಿಳಿಸಿ ಕೊಡುತ್ತೇನೆ.

Monday, September 3, 2012

ಕನ್ನಡದಲ್ಲಿ ಹಮ್ಮುಗಾರಿಕೆ





ಇಂಗ್ಲೀಶ್ ನುಡಿ ಆಡುಗರು ಮತ್ತು ಬಲ್ಲವರು ಇಂಗ್ಲೀಶಲ್ಲೇ ಹಮ್ಮುಗಾರಿಕೆ ನಡೆಸುವಂತೆ ಕನ್ನಡಿಗರು ಕನ್ನಡದಲ್ಲೇ ಹಮ್ಮಲು ಆಗುತ್ತಾ? ನನಗೆ ತಿಳಿದ ಮಟ್ಟಿಗೆ ಕನ್ನಡ ನೆಲೆಯುಳ್ಳ ಒಂದು ಹಮ್ಮುಗಾರಿಕೆಯ ನುಡಿ ಇಲ್ಲ. ಆದರೆ ಇರುವ ಕೆಲವು ಇಂಗ್ಲೀಶಿನ ನೆಲೆಯ ಹಮ್ಮುಗಾರಿಕೆಯ ನುಡಿಗಳು, ಅದರಲ್ಲೂ ಇತ್ತೀಚಿನವು, ಯೂನಿಕೋಡ್ ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತವೆ. ಅಂದರೆ ಮಾರ್ಪಡಬಲ್ಲಗಳು, ಕೆಲಸಗಳು, ಮತ್ತು ಬಗೆಗಳ ಹೆಸರುಗಳು ಕನ್ನಡದಲ್ಲಿ ಇರಬಹುದು.

ಹಳೆಯ ಹಮ್ಮುಗರಿಕೆಯ ನುಡಿಗಳಾದ ಸಿ, ಸಿ++ ಗಳಲ್ಲಿ ಇದು ಆಗದು. ಈ ನುಡಿಗಳು ಬರೀ ಆಸ್ಕಿಯನ್ನಶ್ಟೇ ಬೆಂಬಲಿಸುತ್ತವೆ. ಸೀ++ ನಲ್ಲಿ ಬರಿಗೆ-ಕಂತೆಯಲ್ಲಿ ಯೂನಿಕೋಡ್ ಬೆಂಬಲವಿದೆ. ಹಾಗಾಗಿ ಒಂದು ಹೆದೆಯಲ್ಲಿ ಕನ್ನಡವೂ ಸೇರಿದಂತೆ ಯಾವುದೇ ಯೂನಿಕೋಡ್ ಬರಿಗೆಗಳನ್ನು ಬಳಸಬಹುದು. ಆದರೆ ಈಚಿನ ನುಡಿಗಳಾದ ಜಾವ, ಸ್ಕಾಲ, ಪಯ್ತಾನ್ (೩ರ ಬಳಿಕ), ಸೀ ಶಾರ್ಪ್ ಗಳಲ್ಲಿ ಮೇಲೆ ಹೇಳಿದಂತೆ ಮಾರ್ಪಡಬಲ್ಲಗಳು, ಕೆಲಸಗಳು, ಮತ್ತು ಬಗೆಗಳ ಹೆಸರುಗಳೂ ಕನ್ನಡದಲ್ಲಿ ಇರಬಹುದು. ಹಾಗೆಯೇ, ಅನಿಸಿಕೆಗಳೂ ಕೂಡ ಕನ್ನಡದಲ್ಲಿರಬಹುದು. ಇದಕ್ಕೆ, ಜಾವಾದಲ್ಲಿ ಒಂದು ಎತ್ತುಗೆಯ ಹಮ್ಮುಗೆಯನ್ನು ನೋಡೋಣ:

// ಇದು ಕನ್ನಡದಲ್ಲಿ ಹಮ್ಮುಗಾರಿಕೆ ನಡೆಸುವ ಒಂದು ಎತ್ತುಗೆ
public class ಕನ್ನಡಎತ್ತುಗೆ {
  public static void main(String ಬಿತ್ತಿಗೆಗಳು[]) {
    int ಕೂಡಿ೧;
    int ಕೂಡಿ೨;
    int ಮೊತ್ತ;

    if (ಬಿತ್ತಿಗೆಗಳು == null || ಬಿತ್ತಿಗೆಗಳು.length <= 1) {
      System.out.println("ಸಾಕಶ್ಟು ಬಿತ್ತಿಗೆಗಳನ್ನು ಹಮ್ಮುಗೆಗೆ ನೀಡಲಾಗಿಲ್ಲ. ಹೊರಗೆ ಹೋಗುತ್ತಿದ್ದೇನೆ");
      System.exit(-1);
    }

    ಕೂಡಿ೧ = Integer.parseInt(ಬಿತ್ತಿಗೆಗಳು[0]);
    ಕೂಡಿ೨ = Integer.parseInt(ಬಿತ್ತಿಗೆಗಳು[1]);
    ಮೊತ್ತ = ಕೂಡಿ೧ + ಕೂಡಿ೨;
    System.out.println("ಒಟ್ಟು ಮೊತ್ತ: " + ಮೊತ್ತ);
  }
}

ಇದನ್ನು ಓಡಿಸಿದರೆ ಸಿಗುವ ಪಳಿ:
     ಬಿತ್ತಿಗೆಗಳನ್ನು ಹಮ್ಮುಗೆಗೆ ನೀಡಲಾಗಿಲ್ಲ. ಹೊರಗೆ ಹೋಗುತ್ತಿದ್ದೇನೆ

ಆದರೆ ೨ ಅಂಕಿಗಳನ್ನು ಬಿತ್ತಿಗೆಗಳನ್ನಾಗಿ ಕೊಟ್ಟರೆ ಏನು ಸಿಗುತ್ತೆ ನೋಡೋಣ:
     java ಕನ್ನಡಎತ್ತುಗೆ 1 2
     ಒಟ್ಟು ಮೊತ್ತ: 3



ಕೆಲವು ನುಡಿ ಆಡುಗರು ತಮ್ಮದೇ ನುಡಿಯ ನೆಲೆಯುಳ್ಳ ಹಮ್ಮುಗೆಯ ನುಡಿಗಳನ್ನು ಕಟ್ಟಿಕೊಂಡಿರುವುದುಂಟು. ಆದರೆ ಇವು ಹೆಚ್ಚು ಬಳಕೆಯಲ್ಲಿಲ್ಲ. ಕೆಲವಂತೂ ಬರೀ ಕಲಿಕೆಗಾಗಿ ಬಳಸಲಾಗುತ್ತಿವೆ. ರೂಬಿ (ಜಪಾನ್) ಮತ್ತು ಪಯ್ತಾನ್ (ನೆದರ್ಲ್ಯಾಂಡ್ಸ್) ನುಡಿಗಳು ಇಂಗ್ಲೀಶ್ ಆಡದ ನಾಡುಗಳಲ್ಲೇ ಹುಟ್ಟಿದರೂ ಇಂಗ್ಲೀಶ್ ನುಡಿಯ ನೆಲೆಯಲ್ಲೇ ಅವನ್ನು ಕಟ್ಟಲಾಯಿತು. ಆದರೆ ಇನ್ನೂ ಕಲಿಮನೆಯ ಮೊದಲನೇ ಇಲ್ಲವೇ ಎರಡನೇ ಹಂತದಲ್ಲಿರುವ ಇಂಗ್ಲೀಶ್ ಬಲ್ಲದ ಮಕ್ಕಳಿಗೆ ಹಮ್ಮುಗಾರಿಕೆಯನ್ನು ಕಲಿಸಲು ಅವರ ನುಡಿಯ ನೆಲೆಯಲ್ಲೇ ಹಮ್ಮುಗಾರಿಕೆಯ ನುಡಿಗಳನ್ನು ಪ್ರಪಂಚದ ಹಲವು ನಾಡುಗಳಲ್ಲಿ ಕಟ್ಟಿಕೊಂಡಿದ್ದಾರೆ. ಕನ್ನಡದಲ್ಲಿ ಇದು ಇನ್ನೂ ಆಗಬೇಕಿದೆ.

Sunday, August 26, 2012

ಮುಟ್ಟು ಹಮ್ಮುಗಾರಿಕೆಯ ಒಡನುಡಿ

ತಿಟ್ಟ: ಟ್ವಿಟ್ಟರ್ 


ಟ್ವಿಟ್ಟರ್ ಇಲ್ಲವೇ ಫೆಸ್ಬುಕ್ಕುಗಳ ಎತ್ತುಗೆಯನ್ನು ತೆಗೆದುಕೊಳ್ಳೋಣ. ಹೊಸ ಸುದ್ದಿ (message) ಇಲ್ಲವೇ ಮತ್ತೇನಾದರೂ ಹೊಸದಿಕೆ(update)ಯನ್ನು ಹಂಚಿಕೊಳ್ಳಬೇಕಾದರೆ ಏನು ಮಾಡುತ್ತೀರಿ?

ನಿಮ್ಮ ಎಣಿ(computer)ಯನ್ನು ತೆಗೆದು, ನಡುಬಲೆ(Internet)ಗೆ ಸಿಲುಕಿಸಿ (connect), ಹೊರಳಿ(browser)ಯನ್ನು ತೆಗೆದು, ಬೇಕಾದ ತಾಣಕ್ಕೆ ಹೋಗಿ (ಫೇಸ್ಬುಕ್ / ಟ್ವಿಟ್ಟರ್) ಹೊಸದಿಕೆಯನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತೀರಿ. ಆದರೆ ಹೀಗೆ ಎಣಿಯ ಮೂಲಕ ಮಾಡುವುದಕ್ಕೆ ಮನೆಯಲ್ಲೋ, ಅಳವೆಡೆ(office)ಯಲ್ಲೋ ಕುಳಿತಿರಬೇಕು. ಹಾಗಾದರೆ ಎಲ್ಲೋ ಹೀಗೇ ಪಯಣ ಕೈಗೊಂಡಾಗ ನಿಮ್ಮ ಬಗೆ
ಯೊಳಗಿನ ಮಾತು ಹೇಳಿಕೊಳ್ಳಬೇಕೆನಿಸಿದಾಗ, ಪಯಣದಿಂದ ಹಿಂದಿರುಗುವ ವರೆಗೂ ಕಾಯಬೇಕಾ? ಕಂಡಿತ ಇಲ್ಲ,  ಚೂಟಿಯುಲಿ(smart phone)ಗಳಿವೆ, ಅಲ್ಲವೇ? ಚೂಟಿಯುಲಿಗಳಿಂದ ನಡುಬಲೆಗೆ ಹೊಗಲು ೩ಜಿ ಊಳಿಗಗಳಿವೆ (services), ಮತ್ತು ಫೇಸ್ಬುಕ್ / ಟ್ವಿಟ್ಟರ್ ಮುಟ್ಟು(application)ಗಳಿವೆ. 

ನೀವು ಮಾಡಬೆಕಾಗಿರಿವುದು ಇಷ್ಟೇ: ನಿಮ್ಮ ಚೂಟಿಯುಲಿಯಲ್ಲಿ ಫೇಸ್ಬುಕ್ ಮುಟ್ಟನ್ನು ತೆಗೆದು ಅದರಲ್ಲಿ ನಿಮ್ಮ ಹೊಸದಿಕೆಯನ್ನು ಅಚ್ಚಿಸಿ ಹಂಚಿಕೊಳ್ಳ ಬಹುದು, ಎಲ್ಲಿಂದಾದರೂ! ತೀರಾ ಸುಳುವು ಅಲ್ಲವೇ?

ಆದರೆ ಇದರಲ್ಲಿ ನಿಮ್ಮ ಕಣ್ಣಿಗೆ ಕಾಣಿಸದೆ ಹಿನ್ನೆಲೆಯಲ್ಲೇ ಕೆಲಸ ಮಾಡಿ ಇದೆಲ್ಲವನ್ನೂ ಸುಳುವಾಗಿ ನೆರವೇರಿಸಲು ಸಾದ್ಯವಾಗಿಸುವ ಒಂದು ತೀರಾ ಮುಕ್ಯವಾದ ಅಂಶವಿದೆ. ಅದೇ ಮುಟ್ಟು ಹಮ್ಮುಗಾರಿಕೆಯ ಒಡನುಡಿ (Application Programming Interface - API).

ಚೂಟಿಯುಲಿ, ೩ಜಿ ಊಳಿಗ - ಇವೆರಡೂ ಇದ್ದಲ್ಲಿ ಫೇಸ್ಬುಕ್ ತರದ ಊಳಿಗಗಳನ್ನು ಪಡೆಯಲು ನಿಮಗೆ ಬೇಕಾಗಿರಿವುದು ಮುಟ್ಟುಗಳು. ಮತ್ತು ಮುಟ್ಟುಗಳಿಗೆ ಬೇಕಾಗಿರುವುದು ಮುಟ್ಟು ಹಮ್ಮುಗಾರಿಕೆಯ ಒಡನುಡಿಗಳು. ಇವು ನಡುಬಲೆಯಲ್ಲಿ ಇಲ್ಲವೇ ಒಳಬಲೆಗಳಲ್ಲಿ (intranet)  ಸಿಗಬಲ್ಲವಾದ್ದರಿಂದ ಬಲೆಯೂಳಿಗಗಳೆಂದೂ (web services) ಕರೆಯುವುದುಂಟು.

ಮು.ಹ.ಒ.ಗಳು (APIs) ಮುಟ್ಟುಗಳಿಗೆ ಯಾಕೆ ಬೇಕು ಮತ್ತು ಅವುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮುಟ್ಟುಗಳು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ ಎಂಬುದರ ಬಗ್ಗೆ ಮುಂದಿನ ಬರಹದಲ್ಲಿ ಬರೆಯುತ್ತೇನೆ.

Thursday, December 30, 2010

ಕನ್ನಡದಲ್ಲಿ Object Oriented Programming

ನಾನು ಮಾಡುವ ಕೆಲಸದಲ್ಲಿ Object Oriented Programming ಸಾಕಷ್ಟು ಬಳಸುವುದರಿಂದ ಕನ್ನಡದಲ್ಲಿ ಇದನ್ನು ಏನಂತ ಕರಿಬಹುದು ಅಂತ ಆರಯ್ಯುತ್ತಿದ್ದೆ, ಅಂದ್ರೆ ಯೋಚಿಸ್ತಾ ಇದ್ದೆ. Programming ಅನ್ನೋದಕ್ಕೆ ಆಗಲೇ ಹಮ್ಮುಗೆ ಅನ್ನೋ ಪದ ಇದೆ. Orientedಗೆ ಏನೋ ಒಂದು ಹುಡುಕಬಹುದು. ಆದರೆ Objectಗೆ ಕನ್ನಡದಲ್ಲಿ ಯಾವ ಪದ ಇದೆ?

ಹೆಚ್ಚು ಕಡಿಮೆ ಎಲ್ಲರು 'ವಸ್ತು' ಅನ್ನೋ ಸಕ್ಕದ ಪದವನ್ನ ಬಳಸ್ತೀವಿ. ಆದರೆ ಅಚ್ಚಗನ್ನಡದ್ದು? ಕೊಂಚ ಯೋಚನೆ ಮಾಡಿದೆ, ಆಮೇಲೆ ಪದನೆರಕೆಗಳಲ್ಲಿ ಹುಡುಕೋದಕ್ಕೆ ತೊಡಗಿದೆ. ಎಷ್ಟೋ ಹುಡುಕಿದ ಮೇಲೆ ಸಿಕ್ಕಿದ ಪದ - ಸರಕು. ಈ ಪದಕ್ಕೆ goods, merchandise ಎಂಬ ಅರ್ತ ಬರುವಂತೆ ಕನ್ನಡದಲ್ಲಿ ಬಳಸ್ತೀವೇ ಹೊರತು object ಎಂಬ ಅರ್ತದಲ್ಲಿ ಅಲ್ಲ.

ಹಾಗೇ ಸುಮಾರು ಹುಡುಕಿದ್ ಮೇಲೆ ಇನ್ನೊಂದು ಪದ 'ಹುರುಳು/ಪುರುಳು' ಅಂತ ಸಿಕ್ಕಿತು. ಇದು ಸಿರಿ, ಸಂಪತ್ತು, ದ್ರವ್ಯ ಅನ್ನೋ ಅರ್ತದಲ್ಲಿ ಬಳಕೆಯಾಗುತ್ತೆ.

ನಾವು ಹೊರ ಪ್ರಪಂಚದಲ್ಲಿ ಎಲ್ಲವನ್ನೂ ನೋಡುವುದು Objectಗಳಾಗಿಯೇ. ಅದಕ್ಕಾಗಿಯೇ ಮೊರೆಹಮ್ಮುಗೆ (procedural programming)ಯನ್ನು ತಿದ್ದಿ OOPಯನ್ನು ನಾವು ಹಮ್ಮುಗ(programmer)ರು ಕಂಡು ಕೊಂಡಿರೋದು. ನಾವು ಹಮ್ಮುವ ಬಗೆಯು, ನಾವು ಹೊರಪ್ರಪಂಚವನ್ನು ನೋಡುವ ಬಗೆಗೆ ಹೊಂದುಕೊಂಡರೆ ಹಮ್ಮುಗೆಯು ಸುಳುವಾಗುತ್ತೆ ಅಂತ. Object ಅನ್ನೋ ಇಂತಹ ಒಂದು ಸರಳವಾದ, ಸುಳುವಾದ, ಪರಿಕಲ್ಪನೆಗೆ ಕನ್ನಡದಲ್ಲಿ ಪದವೇ ಇಲ್ಲವಲ್ಲ, ಇದ್ದರೂ ಸಿಗದೇ ಇರೋ ಅಷ್ಟು ದಿನಬಳಕೆಯಲ್ಲಿ ಕಣ್ಮರೆಯಾಗಿದ್ಯಲ್ಲ ಅಂತ ಅಚ್ಚರಿಯಾಯಿತು. ಇರಲಿ, ಈಗ ನಾನು 'ಸರಕು' ಅನ್ನೋ ಪದವನ್ನೇ ಬಳಸೋಣ ಅಂತ ತೀರ್ಮಾನಿಸಿದ್ದೀನಿ. ನಿಮಗೆ ಇನ್ನೂ ಒಳ್ಳೆ ಪದ ಹೊಳೆದರೆ/ ಸಿಕ್ಕರೆ ನನಗೆ ತಿಳಿಸಿ.

ಹಾಗಾದರೆ ಈಗ 'Oriented' ಅನ್ನೋದನ್ನ ಏನಂತ ಹೇಳೋದು? Objet Oriented Programmingನಲ್ಲಿ, ಮೊರೆಹಮ್ಮುಗೆ(Procedural Programming)ಯಲ್ಲಿನಂತೆ, ಒಂದು ಹಮ್ಮನ್ನು (program) ಒಂದು ಕೆಲಸಗಳ ಇಲ್ಲವೇ ಎಸಕಗಳ ಸರಣಿ ಎಂದು ಬಾವಿಸದೆ ಸರಕು(Object)ಗಳ ಒಡನಾಟ(collaboration)ಗಳೆಂದು ಬಾವಿಸ ಬೇಕು. ಅಂದ್ರೆ ಹಮ್ಮುಗನಿಗೆ ಆ object ಬಾವನೆ ಇಲ್ಲವೇ ಸರಕು-ಬಾವನೆ ಬೇಕು. ಕನ್ನಡಲ್ಲಿ ಬಾವನೆಗೆ ಸರಿ ಹೊಂದೋ ಪದ 'ಉನ್ನು' ಅಂತ ನನಗೆ ಅನಿಸುತ್ತೆ. ಹಾಗಾಗಿ ನಾವು OOPಯನ್ನು 'ಸರಕುನ್ನುವ ಹಮ್ಮುಗೆ'ಅಂತ ಹೇಳಬಹುದು.

'ಉನ್ನು'(ಭಾವಿಸು) ಎಂಬುದು ಎಸಕಪದವಾದ್ದರಿಂದ 'ಸರಕುನ್ನು' (ಸರಕು + ಉನ್ನು) ಕೂಡ ಎಸಕಪದವೇ. ಶಂಕರ ಬಟ್ಟರು, ತಮ್ಮ ಒಂದು ಹೊತ್ತಗೆಯಲ್ಲಿ ಹೇಳುವಂತೆ, 'ಹಮ್ಮುಗೆ' ಅನ್ನೋ ಹೆಸರು ಪದದ ಮೊದಲು 'ಸರಕುನ್ನು' ಅನ್ನೋ ಎಸಕ ಪದ ಅದರ adjectiveಆಗಿ ಬರಬಹುದು. ಶಂಕರ ಬಟ್ಟರದೇ ಕೆಲವು (ಎಸಕಪದ + ಹೆಸರುಪದ) ಎತ್ತುಗೆಗಳನ್ನು ನೋಡಿ: ಸುರಿಮಳೆ, ಹುಟ್ಟುಹಬ್ಬ, ಊರುಗೋಲು, ಬೀಸುಗಲ್ಲು. ಹಾಗಾಗಿ ಇದನ್ನು ಎರಡು ಬಿಡಿಪದಗಳಾಗಿ ಹೇಳುವು ಬದಲು ಒಂದು ಜೋಡುಪದವಾಗಿ 'ಸರಕುನ್ನುಹಮ್ಮುಗೆ' ಅಂತ ಹೇಳಬಹುದು.

ಸರಕುನ್ನು = ಸರಕು + ಉನ್ನು

Object Oriented Programming = ಸರಕುನ್ನುಹಮ್ಮುಗೆ = ಸರಕುನ್ನು + ಹಮ್ಮುಗೆ  


Object Orientation = ಸರಕುನ್ನಿಕೆ 

Monday, December 27, 2010

ವಿಂಡೋಸ್ ಅವಾಂತರ

ಒಬ್ಬ ಹಮ್ಮುಗ(programmer)ನಿಗೆ ವಿಂಡೋಸ್ ಅಂದರೆ ಅಷ್ಟಕ್ಕೆ ಅಷ್ಟೇನೇ. ಒಂದಲ್ಲ ಒಂದು ತೊಡಕು ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತಲೇ ಇರುತ್ತೆ. ಹಿಂದಿನ ಬರಹದಲ್ಲಿ ಕೊಟ್ಟ ಹಮ್ಮು(program) ವಿಂಡೋಸ್ ಅಲ್ಲಿ ಕೆಲಸ ಮಾಡಿಸಬೇಕು ಅಂದರೆ ಕೊಂಚ ಎಚ್ಚರ ವಹಿಸಬೇಕು. ಏನು, ಯಾಕೆ ಅಂತ ಹೇಳುವುದಕ್ಕೆ ಮೊದಲು ಆ ಬರಹದಲ್ಲಿ ಕೊಟ್ಟಿದ್ದ .properties ಕಡತವನ್ನು ಗಮನಿಸಿ:

            ###
            username=username
            password=password
            search_prefix=ಕ
            wiki=kn.wiktionary.org
            output_file=out.txt

ಈ ಕಡತವನ್ನ ನೋಟ್-ಪ್ಯಾಡ್ ಅಲ್ಲಿ ಬರೆದು ಯು.ಟಿ.ಎಫ್ ಮಾರ್ಬರಹ(encoding)ದಲ್ಲಿ ಉಳಿಸಿ ಹಮ್ಮು ಓಡಿಸಿದ್ದೆ. ಸರಿಯಾಗೇ ಓಡಿತ್ತು. ಆದರೆ ಮೊದಲನೇ ಸಾಲಿನ ಅನಿಸಿಕೆ (comment - ####)ಯನ್ನು ತೆಗೆದು ಹಾಕಿ ಓಡಿಸಿದಾಗ ಪಾಪ ನಮ್ಮ ಹಮ್ಮು 'username' ಅನ್ನು ಸರಿಯಾಗಿ ಓದದೆ  '.username' ಅಂತ ಓದಿ, ಹೊಗುತೆ(login)ಯೇ ತೇರಮೆ (failure) ಕಂಡಿತು. ಯಾಕೆ ಅಂತ ಕೊಂಚ ವಿಕಿಪೀಡಿಯ ಹುಡುಕಿದಾಗ ತಿಳಿಯಿತು, ವಿಂಡೋಸ್ ನೋಟ್-ಪ್ಯಾಡಿನ ತೊಂದರೆ ಅಂತ. ಆ ವಿಕಿಪೀಡಿಯ ಬರಹದ ಈ ಸಾಲು ಓದಿ:

Many Windows programs (including Windows Notepad) add the bytes 0xEF, 0xBB, 0xBF at the start of any document saved as UTF-8. This is the UTF-8 encoding of the Unicode byte order mark (BOM), and is commonly referred to as a UTF-8 BOM, even though it is not relevant to byte order.

ಆದರೆ ನನಗೆ ಕಾಣಿಸಿಕೊಂಡ ಬಾಮ್(BOM) 0xFEFF. ಮತ್ತು ಮೇಲೆ ಹೇಳಿದಂತೆ ಒಂದಲ್ಲ, ಎರಡು ಎಂಕೆ(byte)ಯಷ್ಟು. ಇದೊಂದು ಬಿಟ್ಟರೆ ಕಡತದ್ಲ್ಲಿರೋ ಬೇರೆ ಎಲ್ಲ ಬರಿಗೆ(caracter)ಗಳೂ ಸರಿಯಾಗಿಯೇ ಬಂದಿದ್ದವು. ನಾನು ಬಳಸುತ್ತಿರುವುದು ವಿಂಡೋಸ್ ಎಕ್ಸ್.ಪಿ. ಆದರೆ ಬೇರೆ ವಿಂಡೋಸ್ಗಳಲ್ಲಿ ಬಾಮ್ ಆಗಿ ಎಷ್ಟು ಎಂಕೆ(byte)ಗಳು ಇರುತ್ತವೋ, ಅವುಗಳ ಬೆಲೆ ಏನೋ, ಯಾರಿಗೆ ಗೊತ್ತು? ಅವುಗಳೆಲ್ಲವನು ಓರುತ್ತ ಕೂತ್ಕೊಳ್ಳೋದಕ್ಕೆ ಆಗಲ್ಲ.

ಅದಕ್ಕೆ ಒಂದು ಸಣ್ಣ ಬಗೆಹರಿಕೆ(solution) ಇದೆ. ಮೊದಲನೇ ಸಾಲಿನಲ್ಲಿ ಯಾವುದೇ ಒಳುಪು(property)ಗಳನ್ನು ಹಾಕದಿರಿ. ಮೊದಲನೇ ಸಾಲು ಬರಿದಾಗಿ ಬಿಡಿ ಇಲ್ಲ ಅಂದರೆ ನಾನು ಮಾಡಿದ ಹಾಗೆ ಅನಿಸಿಕೆ (## ) ಹಾಕಿ. ಈ ತೊಂದರೆ ಕಣ್ಮರೆಯಾಗುತ್ತದೆ. ಆದರೆ ಯೂನಿಕ್ಸ್  ಇಡಿವಳಿ(system)ಗಳಲ್ಲಿ ಈ ತೊಂದರೆ ಇಲ್ಲ.

Thursday, December 23, 2010

ಕನ್ನಡ (ಯುನಿಕೋಡ್) ಕಡತಗಳಿಗಾಗಿ java.util.properties

ತೇಲುವ ಚುಕ್ಕಿಯ ಬಗ್ಗೆಯ ಬರಹಗಳನ್ನ ಮುಂದುವರೆಸುವುದಕ್ಕೆ ಮೊದಲು, ಒಂದು ಹಮ್ಮು ಹಂಚಿಕೊಳ್ಳೋಣ ಅಂತ ಅಂದುಕೊಂಡೆ. ಆದರೆ ಇದು ಜಾವ ಹಮ್ಮುಗ(programmer)ರಿಗೆ ಮಾತ್ರ.

ಇತ್ತೀಚಿಗೆ ವಿಕ್ಷನರಿಗೆ ಒರೆಗಳನ್ನು ಸೇರಿಸುವ ಮೊರೆ / ಪರಿವಿಡಿ(procedure)ಯನ್ನು ತನ್ನಡೆಸು(automate)ವ ಹೊಣೆಯನ್ನು ನನಗೆ ಸಂಜೀವ್ ವಹಿಸಿದರು. ಅದಕ್ಕಾಗಿ ಒಂದು ಸಣ್ಣ ಹಮ್ಮು ಬರೆದೆ, ಜಾವದಲ್ಲಿ. ಕೆಲವು ಒಳುಪುಗಳನ್ನು(properties) ಉಳಿಸಿಡಲು ಒಂದು .properties ಕಡತವನ್ನು ಬರೆದು ಅದರಲ್ಲಿ ಕೆಲವು ಕನ್ನಡದ ಬೆಲೆ(value)ಗಳನ್ನು ಬಳಸಿದೆ. ಅಂದರೆ ಕನ್ನಡ ಯುನಿಕೋಡ್ ಲಿಪಿಯಲ್ಲಿ ಬೆಲೆಗಳನ್ನು ಹಾಕಿದೆನು. ಆ ಕಡತದ ಒಳಪಿಡಿ(contents) ಹೀಗಿತ್ತು ನೋಡಿ:

###
username=username
password=password
search_prefix=ಕ
wiki=kn.wiktionary.org
output_file=out.txt

ನಾನು ಬರೆದ ಹಮ್ಮು (program) ಮಾಡಬೇಕಾಗಿದ್ದು ಇಶ್ಟು: ಈ ಕಡತದಲ್ಲಿ ಕೊಟ್ಟಿರುವ ಬಳಕೆಗಾರ-ಹೆಸರು (username) ಮತ್ತು ತೇರ್ಪದ(password)ವನ್ನು ಬಳಸಿ ವಿಕ್ಷನರಿಯನ್ನು ಹೊಕ್ಕು (login) 'ಕ' ಬರಿಗೆ(ಅಕ್ಷರ)ಯಿಂದ ಮೊದಲಾಗುವ ಎಲ್ಲ ಪದಗಳನ್ನು ಹುಡುಕಿ out.txt ಎಂಬ ಕಡತದಲ್ಲಿ ಹಾಕಬೇಕು.

ಹಮ್ಮನ್ನು ಓಡಿಸಿದೆ, ಆದರೆ ಏನೂ ಬರಲಿಲ್ಲ :-(!!! ಸರಿ ಅಂತ ಹುಳ ತೆಗೆಯೋದಕ್ಕೆ (debug) ತೊಡಗಿದೆ. ಆಮೇಲೆ ಗೊತ್ತಾಯ್ತು, ತೊಂದರೆ ಇದ್ದಿದ್ದು ನನ್ನ ಹಮ್ಮಿನಲ್ಲಿ ಅಲ್ಲ, ಈ ಕಡತವನ್ನು ಓದಲು ಬಳಸುತ್ತಿದ್ದ java.util.Properties.load() ಕೆಲಸ(function)ದಲ್ಲಿ ಅಂತ. ಇದರ ಜಾವ ಡಾಕ್ ಹೀಗೆ ಹೇಳುತ್ತೆ:

The load(InputStream) / store(OutputStream, String) methods work the same way as the load(Reader)/store(Writer, String) pair, except the input/output stream is encoded in ISO 8859-1 character encoding. Characters that cannot be directly represented in this encoding can be written using Unicode escapes ; 

ಅಂದರೆ, ಅಯ್.ಎಸ್.ಒ ೮೮೫೯-೧ ಬರಿಗೆ(character)ಗಳು ಮಾತ್ರ ಇರುವ ಕಡತವನ್ನು ಸರಿಯಾಗಿ ಓದುತ್ತೆ. ಆದರೆ ಯುನಿಕೋಡ್ ಬರಿಗೆ ಇದ್ದಲ್ಲಿ ಅದನ್ನು ಸರಿಯಾಗಿ ಮಾರ್ಬರೆ(encode)ಯಬೇಕು. ಅಂದರೆ ಈ ಕಡತದಲ್ಲಿ 'ಕ' ಬಳಸಿದ್ದೀನಲ್ಲ ಅದನ್ನ ಯುನಿಕೋಡ್ ಪಾರು ವರಸೆ (escape sequence)ಯಾಗಿ ಮಾರ್ಬರೆ(encode)ಯಬೇಕು. ಹೀಗೆ:

search_prefix=\u0C95

ಹೀಗೆ ಮಾರ್ಪಾಡು ಮಾಡಿ ಹಮ್ಮು ಓಡಿಸಿದಾಗ 'ಕ' ಇಂದ ಮೊದಲಾಗುವ ಎಲ್ಲ ಪದಗಳು 'out.txt'ಗೆ ಬಂದು ಬಿದ್ದವು. :-)) (ಚಪ್ಪಾಳೆ!!!!)

ಆದರೆ ಲಾಟಿನ್ ಬರಿಗೆಗಳನ್ನು (latin characters) ಬಳಸದ ಕನ್ನಡದಂತಹ ಲಿಪಿಗೆ ಇದು ಕೊಂಚ ತೊಡಕಿನ ಸಂಗತಿ. ಯುನಿಕೋಡ್ ಬರಿಗೆಗಳನ್ನು ಮಾರ್ಬರೆ(encode)ಯದೆ ಹಾಗೇ  .properties ಕಡತದಲ್ಲಿ ಕೊಟ್ಟಿದ್ದನ್ನು ಓದಿ ಬಳಸಬಲ್ಲ ನನ್ನದೇ ಆದ ಒಂದು Properties class ಅನ್ನು ಬರೆದೆ. ಯಾರದೂ ಹಂಗು ಬೇಡ ಅಂತ :-). ಕೆಳಗೆ ಅದರ ಹಮ್ಮು ಹಾಕಿದ್ದೀನಿ. ಇನ್ಮೇಲೆ .properties ಕಡತದಲ್ಲಿ ಕನ್ನಡ ಇಲ್ಲವೇ ಯಾವುದೇ ಯುನಿಕೋಡ್ ಬರಿಗೆಗಳನ್ನು ಬಳಸಬೇಕಾದಾಗ ಪಾರು ವರಸೆ (escape sequence)ಗಳ ಬಗ್ಗೆ ತಲೆ ಕೆಡಿಸ್ಕೊಳ್ಳೋದು ಬೇಡ. ಬಳಸಿ, ಹಾಗೇ ಹಂಚಿಕೊಳ್ಳಿ.


Thursday, November 11, 2010

ತೇಲುವ ಚುಕ್ಕಿ

ತೇಲುವ ಚುಕ್ಕಿಯ ಅಂಕೆ (floating point number) ಅಂದರೆ  ಏನು? ಹಾಗೆ  ಯಾಕೆ ಕರೆಯುತ್ತಾರೆ?
ಅದನ್ನೆಲ್ಲ ಮುಂದಿನ ಬರಹದಲ್ಲಿ ತಿಳಿಸುತ್ತೇನೆ. ಆದರೆ, ಸದ್ಯಕ್ಕೆ ಇಶ್ಟು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಿ. ನನ್ನಿಯಂಕೆ(real number)ಗಳನ್ನು ಎಣಿ(computer)ಯಲ್ಲಿ ಉಳಿಸಿ ಇಟ್ಟುಕೊಳ್ಳುವ ಒಂದು ಮಾರಾಳುತನ (representation) ಇದು. ಗಿರಕು ಚುಕ್ಕಿಯ ಮಾರಾಳುತನ(fixed point representation)ವೂ ಇದೆ. ಆದರೆ ಇದು ಹೆಚ್ಚು ಕಟ್ಟುನಿಟ್ಟಾ(precise)ಗಿದ್ದರೂ ತುಂಬಾ ಎಡೆ(space) ಹಿಡಿಸುತ್ತದೆ. ಹಾಗಾಗಿ ಈ ಮಾರಾಳುತನ(representation)ವನ್ನು ಈಗಿನ ಎಣಿಗಳು ಬಳಸುವುದಿಲ್ಲ. ತೇಲುವ ಚುಕ್ಕಿಯ ಮಾರಾಳುತನವನ್ನೇ ಬಳಸುತ್ತವೆ.

ಸಿ ನುಡಿಯಲ್ಲಿ ಮೂರು ಬಗೆಯ ತೇಲುವ ಚುಕ್ಕಿಯ ಅಂಕೆಗಳು ಇವೆ: float, double, long double. floatಗಿಂತ double ಅಂಕೆಯ ಕಟ್ಟುನಿಟ್ಟುತನ (precision) ಇಮ್ಮಡಿ. ಅದಕ್ಕೂ ಹೆಚ್ಚಿನ ಕಟ್ಟುನಿಟ್ಟುತನ ಅಂದರೆ long doubleದು. ಇವುಗಳ ಹರವು(range) ಎಷ್ಟು, ಮತ್ತು ಕಟ್ಟುನಿಟ್ಟುತನ ಎಷ್ಟು ಅಂತ ಮುಂದೆ ಹೇಳುತ್ತೇನೆ.

ಹಾಗಿದ್ದರೆ ನಮ್ಮ ಹಿಂದಿನ ಹಮ್ಮಿ(program)ನಲ್ಲಿ int ಬದಲಾಗಿ ಈ ಯಾವುದಾದರೂ ತೇಲುವ ಚುಕ್ಕಿಯ ಅಂಕೆಯನ್ನು ಬಳಸಬಹುದು. float ಅನ್ನು ಬಳಸಿ ನೋಡೋಣ.

#include<stdio.h>


main() {
   float km;
   int mile;
   scanf("%d",&mile);
   km = 1.61 * mile;
   printf("%f",km);
}

ಒಟ್ಟಿಸಿ (compile), ಎಸಗಿ(execute) ಪಳಿ(output)ಯನ್ನು ನೋಡೋಣ:

$ ./a.out
2
3.220000

$ ./a.out
5
8.050000

ಉತ್ತರಗಳು ಈಗ ಸರಿಯಾಗಿವೆ!

Monday, November 8, 2010

ಹಳ್ಳಿ ದಾರಿಯಲ್ಲಿ.....

ಮೈಲಿಗಲ್ಲುಗಳು, ಬೋರ್ಡುಗಳು ಇಲ್ಲದೆ ಇರೋ ಹಳ್ಳಿದಾರಿಯಲ್ಲಿ ಯಾವತ್ತಾದರೂ ಗಾಡಿ ಓಡಿಸ್ಕೊಂಡು ಹೋಗಿದ್ದೀರ? ಅಂತಹ ದಾರಿಯಲ್ಲಿ ಅಲ್ಲಲ್ಲಿ ದಾರಿಯ ಬದಿಯಲ್ಲಿ ಸಿಗೋ ಹಳ್ಳಿಯವರೇ ನಮಗೆ ಮೈಲಿಗಲ್ಲುಗಳು, ಬೋರ್ಡುಗಳು ಎಲ್ಲ. ಆದರೆ ತೊಂದರೆ ಏನು ಅಂದರೆ, ಆ ಮೈಲಿಗಲ್ಲುಗಳು ಕೊಡೋ ಮಾಹಿತಿ ತಲೆನಾ ಮೊಸರುಗಡಿಗೆ ಮಾಡದೇ ಇರಲ್ಲ. "ಸ್ಟ್ರೇಟ್ ವೋಯ್ತಾ ಇರಿ ಸಾರ್, ಇನ್ನು ೮ ಮೈಲಿ ಅಶ್ಟೆ" ಅಂತ ಒಬ್ಬನ ಹತ್ತಿರ ಕೇಳಿ ಇನ್ನೂ ೧೨ ಕಿ.ಮೀ ಬಂದ ಮೇಲೆ ಇನ್ನೇನ್ ನಾವ್ ಹೋಗ್ತಾ ಇರೋ ಊರು ಬಂದೇ ಬಿಡ್ತು (೧ ಮೈಲಿ = ೧.೬೧ ಕಿ.ಮೀ, ೮*೧.೬೧ = ೧೨.೮೮) ಅಂತ ಇನ್ನೊಬ್ಬ ಯಾರೋ ಬದಿಯಲ್ಲಿ ಸಿಕ್ಕಿದ ಅಂತ ಕೇಳಿದ್ರೆ "ಏ, ಇನ್ನೇನ್ ಊರ್ ಬಂತ್ರಿ; ಇಲ್ಲಿಂದ ೫ ಕಿಲೋಮೀಟ್ರು ಅಶ್ಟೆ. ಬೇಕಿದ್ರೆ ಈ ಕಡೆ ಎಡಕ್ ತಿರ್ಕೊಂಡ್ ಓಗ್ಬುಡಿ, ಸ್ಯಾನೆ ಅತ್ರ ಆಯ್ತದೆ". ಇದೇನ್ ಈ ಹಯ್ದ ಹೀಗಂದನಲ್ಲ ಅಂತ ತಲೆ ಕೆಡಿಸ್ಕೊಂಡು ಬೇಗ ಹೋಗೋಣ ಅಂತ ಅವನು ತೋರಿಕೊಟ್ಟ short cut ತೊಗೊಂಡರೆ ಸಿಗೋದು ಗಾಡಿನೇ ಓಡಿಸೋದಕ್ಕೆ ಆಗದೆ ಇರೋ ಅಂತಹ ಬರಿ ಕಲ್ಲು-ಮಣ್ಣುಗಳ ದಾರಿ. ಅಲ್ಲಿ ಒದ್ದಾಡಿಕೊಂಡು ಅರೆ ಗಂಟೆಯಲ್ಲಿ ೨ ಕಿ.ಮೀ ಓಡಿಸಿ ಇನ್ನೊಬ್ಬ ಯಾರೋ ಸಿಕ್ದ ಅಂತ ಅವನನ್ನ ದಾರಿ ಕೇಳೋದಕ್ಕೆ ಹೋದ್ರೆ ಮತ್ತೆ ತಲೆಯನ್ನ ಮೊಸರಗಡಿಗೆ ಮಾಡೋ ಉತ್ತರಾನೇ ಸಿಗೋದು.

ಇದನ್ನೆಲ್ಲ, ಇಲ್ಲಿ ಯಾಕೆ ಹೇಳ್ತಿದ್ದೀನಿ ಅಂದ್ಕೊಂಡ್ರಾ? ನನ್ನ ಬ್ಲಾಗಿನ ಮುಂದಿನ ಬರಹದಲ್ಲಿ ಮೈಲಿಗಳನ್ನು ಕಿ.ಮೀಗೆ ಮಾರ್ಪಡಿಸುವ ಒಂದು ಹಮ್ಮನ್ನು ಬರೆದು ತೋರಿಸೋಣ ಅಂತ ಅಂದ್ಕೊಂಡಿದ್ದೆ. ಆದರೆ, ಏನ್ ಮಾಡಲಿ ಹಳ್ಳಿ ದಾರಿಯಲ್ಲಿ ಆದ ಇಂತಹ ಅನುಭವ ನನಗೆ ಕೂಡಲೇ ನೆನಪಾಯ್ತು, ಮತ್ತು ಅದನ್ನು ಹಂಚಿಕೊಳ್ಳದೆ ಇರಲು ಆಗಲಿಲ್ಲ. ಇರಲಿ ಈಗ, ಮೈಲಿಗಳನ್ನ, ಕಿಲೋಮೀಟರ್ ಆಗಿ ಮಾರ್ಪಡಿಸುವ ಈ ಹಮ್ಮನ್ನು ನೋಡಿ:

#include<stdio.h>

main() {
   int km, mile;

   scanf("%d",&mile);
   km = 1.61 * mile;
   printf("%d",km);
}

ಈ ಹಮ್ಮನ್ನು ಒಟ್ಟಿಸಿ(compile), ಎಸಗಿ ನೋಡೋಣ:

$ ./a.out
2
3 $


$ ./a.out
5
8 $

೨*೧.೬೧=೩.೨೨
೫*೧.೬೧=೮.೦೫
ಆದ್ರೆ ಈ ಹಾಳಾದ್ದು ತಪ್ಪು ಉತ್ತರ ಕೊಡ್ತಿದ್ಯಲ್ಲ? ನಮ್ಮ ಹಳ್ಳಿಯವರ ಬುದ್ದಿ ನಮ್ ಹಮ್ಮಿಗೂ ಅಂಟಿಕೊಂಡಿತು ಅಂತ ಅಂದ್ಕೊಂಡ್ರಾ? ಸರಿಯಾಗಿ ಗಮನಿಸಿ ನೋಡಿ. ಇದು ಕೊಡುತ್ತಿರುವ ಪಳಿ(output)ಯಲ್ಲಿ ಹದಿ-ಚುಕ್ಕೆ (decimal point) ಮತ್ತು ಅದರ ಬಳಿಕ ಬರುವ ಅಂಕಿಗಳು ಮಾಯವಾಗಿದ್ದು ಹದಿ-ಚುಕ್ಕೆಯ ಮೊದಲು ಬರುವ ಅಂಕೆ ಸರಿಯಾಗಿಯೇ ಇದೆ. ನಮ್ಮ ಹಮ್ಮನ್ನು ಒಮ್ಮೆ ನೋಡಿದರೆ ಗೊತ್ತಾಗುತ್ತೆ, ನಾವು ಮೈಲಿಯ ಬೆಲೆಯನ್ನು ಪಡೆಯುವ ಮಾರ್ಪಡಬಲ್ಲ(variable)ವನ್ನು ತುಂಬಂಕೆ(int)ಯಾಗಿ ಸಾರಿದ್ದೇವೆ(declared). ಅಂಕೆಯಲ್ಲಿ ಚುಕ್ಕೆ ಬಂದರೆ ಅದು ತುಂಬಂಕೆಯಲ್ಲವಲ್ಲ, ಅದಕ್ಕೆ ಪಳಿ(output)ಯಲ್ಲಿ ಸರಿ-ಉತ್ತರದ ತುಂಬಂಕೆಯ ಪಾಲು ಮಾತ್ರ ಬಂದಿದ್ದು, ಚುಕ್ಕೆ ಮತ್ತು ಅದರ ಬಳಿಕ ಬರುವ ಅಂಕೆಗಳು ಮಾಯವಾಗಿವೆ.

ಮುಂದಿನ ಬರಹದಲ್ಲಿ ಇದನ್ನು ಸರಿಪಡಿಸುವುದು ಹೇಗೆ ಅಂತ ನೋಡೋಣ.

Wednesday, October 27, 2010

ಸಿ ಕೀಲಿಪದಗಳು

int ಅನ್ನೋ ತುಂಬಂಕೆ(integer)ಯನ್ನು ಸೂಚಿಸುವ ಕೀಲಿಪದ(keyword)ವನ್ನು ಹಿಂದೆ ನೋಡಿದ್ವಿ. ಇದನ್ನು ನೋಡಿದ ಕೂಡಲೇ ನಮಗೆ ಬರಬಹುದಾದ ಕೆಲವು ಪ್ರಶ್ನೆಗಳು ಇವು:

೧. ಕೀಲಿಪದ ಅಂದರೆ ಏನು?
ಉ. ಸಿಯಲ್ಲಿ ಕೆಲವು ಪದಗಳನ್ನು ಮೀಸಲಾಗಿ ಇಡಲಾಗಿದೆ. ಇವುಗಳನ್ನು ಕೆಲಸ(function), ಮಾರ್ಪಡಬಲ್ಲ(variable)ಗಳ ಹೆಸರುಗಳಾಗಿ ಬಳಸುವಂತಿಲ್ಲ.

೨. ಯಾಕೆ ಬೇಕು ಈ ಕೀಲಿಪದಗಳು?
ಉ. ಹಮ್ಮಿನಲ್ಲಿ ನುಡಿಯ ಕಟ್ಟು(construct)ಗಳನ್ನು ತಿಳಿಸಿವುದಕ್ಕೆ, ಕೊಡೆ ಬಗೆಗಳ(data types)ನ್ನು ಸೂಚಿಸುವುದಕ್ಕೆ, ಒಟ್ಟುಕ(compiler)ಕ್ಕೆ ಕೆಲವು ಸುಳಿವುಗಳನ್ನು ನೀಡುವುದಕ್ಕೆ ಬಳಸಲಾಗುತ್ತದೆ.

೩. ಸಿಯಲ್ಲಿ ಎಶ್ಟು ಕೀಲಿಪದಗಳಿವೆ ಮತ್ತು ಅವು ಯಾವುವು?
ಉ. ೩೨. ಆ ಎಲ್ಲ ೩೨ ಕೀಲಿಪದಗಳ ಪಟ್ಟಿ ಇಲ್ಲಿದೆ:

auto     double   int      struct
break    else     long     switch
case     enum     register typedef
char     extern   return   union
const    float    short    unsigned
continue for      signed   void
default  goto     sizeof   volatile
do       if       static   while

೪. ಈ ಒಂದೊಂದು ಕೀಲಿಪದದ ಹುರುಳೇನು?
ಉ. int ಬಗ್ಗೆ ಆಗಲೇ ಹೇಳಿದ್ದೇನೆ. ಮುಂದಿನ ಬರಹಗಳಲ್ಲಿ ಹೊಸ ಕೀಲಿಪದ ಬಳಸಿದಾಗಲೆಲ್ಲ ಅದರ ಹುರುಳನ್ನೂ, ಕುರಿ(ಉದ್ದೇಶ)ಯನ್ನೂ ಹೇಳುತ್ತೇನೆ.

Sunday, October 24, 2010

ಸಿ ಹಮ್ಮುಗೆ ೩

ಹಿಂದಿನ ಬರಹದಲ್ಲಿ ಒಂದು ಹೆದೆ (string)ಯನ್ನು ತೆರೆಯ ಮೇಲೆ ಅಚ್ಚಿಸಿದೆವು. ಈಗ ನಮ್ಮ ಎಣಿ(computer)ಯಿಂದ ಕೊಂಚ ಕೆಲಸ ಮಾಡಿಸೋಣ. ದೊಡ್ಡ ಕೆಲಸವೇನೂ ಅಲ್ಲ. ಕೂಡೋ ಲೆಕ್ಕ ಮಾಡಿಸೋಣ. ನಮ್ಮ ಹಮ್ಮು (program) ಎಸಗಿದಾಗ ಮಾಡ ಬೇಕಾಗಿರುವುದು ಇಶ್ಟು:

ಒಂದಾದ ಮೆಲೊಂದಂತೆ ಎರಡು integer ಅಂಕಿಗಳನ್ನು ತೊಗೋಬೇಕು. ಅಂದರೆ ಒಳವೊಡ್ಡಿಗಳಂತೆ (ಒಳ + ಒಡ್ಡು + ಇ = input) ತೊಗೋಬೇಕು. ಆಮೇಲೆ ಅವೆರಡನ್ನೂ ಕೂಡಿಸಿ ಅದರ ಮೊತ್ತವನ್ನು ಪಳಿ(output)ಯಾಗಿ ತೆರೆಯ ಮೇಲೆ ಅಚ್ಚಿಸ ಬೇಕು.

ಬಹಳ ಸುಳುವಾದ ತೊಂದರೆಯ ಹೇಳಿಕೆ (problem statement) ಅಲ್ವಾ? ಇದರ ಬಗೆಹರಿಕೆಯೂ ಅಶ್ಟೆ ಸಲೀಸಾದುದು. ನೋಡೋಣ ಬನ್ನಿ.

#include
main() {
int koodi1, koodi2;
int motta;

main() ಅಲ್ಲಿ ಮೂರು ಮಾರ್ಪಡಬಲ್ಲ(variable)ಗಳನ್ನು ಸಾರಿದ್ದೇವೆ (declare). ಮೊದಲನೇ ಸಾಲಿನಲ್ಲಿ ಎರಡು ಮಾರ್ಪಡಬಲ್ಲಗಳು ನಮ್ಮ ಎರಡು ಕೂಡಿ(addend)ಗಳ ಬೆಲೆ(value)ಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವುದಕ್ಕೆ. ಅಂದರೆ ಎರಡು ಅಂಕಿಗಳನ್ನು ಒಳವೊಡ್ಡಿ(input)ಯಾಗಿ ಕೊಡ್ತೀವಲ್ವಾ, ಈ ಎರಡು ಮಾರ್ಪಡಬಲ್ಲಗಳು ಒಳವೊಡ್ಡಿದ ಅಂಕಿಗಳ ಬೆಲೆಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತವೆ. ಮತ್ತು ಇವೆರಡನ್ನು ಕೂಡಿದ ಮೊತ್ತದ ಬೆಲೆಯನ್ನು ಉಳಿಸುವುದಕ್ಕಾಗಿ 'motta' ಎಂಬ ಮಾರ್ಪಡಬಲ್ಲವನ್ನು ಸಾರಿದ್ದೇವೆ. ಇವು ತುಂಬಂಕೆ(integer)ಯ ಬೆಲೆಗಳನ್ನು ಹೊಂದುವುದರಿಂದ int ಎಂಬ ಕೀಲಿಪದ(keyword)ವನ್ನು ಸಾರಿಗೆ(declaration)ಯ ಮೊದಲಲ್ಲಿ ಬಲಸಲಾಗಿದೆ. ಸಾರಿಗೆಯ ಹೇಳಿಕೆಗಳ ಸೋಲ್ಲಿಟ್ಟಳ(syntax)ವನ್ನು, ಕೀಲಿಪದಗಳು ಮತ್ತು ಅವುಗಳ ಬಳಕೆಯನ್ನು ಮುಂದಿನ ಬರಹಗಳಲ್ಲಿ ತಿಳಿಸುತ್ತೇನೆ.

ಈಗ ಒಳವೊಡ್ಡಿಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳೋಣ:

scanf("%d", &koodi1);
scanf("%d", &koodi2);

ಅಶ್ಟೆ! scanf() ಎಂಬುದು stdio.h ಕಣಜ(library)ದಲ್ಲಿರುವ ಒಂದು ಕೆಲಸ(function). ಇದು ಬಳಕೆಗಾರನು ತೆರೆಯ ಮೇಲೆ ನೀಡುವ ಒಳವೊಡ್ಡಿಗಾಗಿ ಕಾಯುತ್ತಿರುತ್ತದೆ. %d ಎಂಬುದು ಬರುವ ಬೆಲೆಯ ಕೊಡೆ ಬಗೆ(data type)ಯು integer ಎಂದು ತಿಳಿಸುತ್ತದೆ.

ಮತ್ತು ಎರಡನೇ ಬಿತ್ತಿಗೆ (parameter) '&koodi1' ಒಳವೊಡ್ಡಿದ ಬೆಲೆಯನ್ನು koodi1 ಮಾರ್ಪಡಬಲ್ಲಕ್ಕೆ ಪಡಿಯಿಸ (copy) ಬೇಕೆಂದು ಹೇಳುತ್ತದೆ. ಎರಡು ಸಲ scanf() ಕರೆಯುವುದರ ಕುರಿ (ಉದ್ದೇಶ) ಎರಡು ಕೂಡಿ(addend)ಗಳ ಬೆಲೆಗಳನ್ನು ಒಳವೊಡ್ಡುವುದು.

ಅದೇನೋ ಸರಿ, ಆದರೆ ಎರಡನೇ ಬಿತ್ತಿಗೆಯಲ್ಲಿ, kood1 ಮತ್ತು koodi2 ಮುಂದೆ & ಯಾಕೆ ಬಂದಿದೆ? 'ಹಮ್ಮುಗೆ'(programming)ಯಲ್ಲಿ ಕೆಲಸ(function)ಗಳಿಗೆ ಬಿತ್ತಿಗೆಗಳನ್ನು ಕೊಡುವ ಎರಡು ಬಗೆಗಳಿವೆ: 'ಬೆಲೆಯನ್ನು ಪಡಿಯಿಸುವುದು' ಮತ್ತು 'ಪತ್ತುಗೆಯನ್ನು ಪಡಿಯಿಸುವುದು' (copy by value, copy by reference). ಮುಂದೆ & ಹಾಕುವುದರಿಂದ ಕೆಲಸದೊಳಕ್ಕೆ ಪತ್ತುಗೆಯನ್ನು ಪಡಿಯಿಸಲಾಗುತ್ತದೆ. ಇದು ಏನು, ಯಾಕೆ, ಎತ್ತ ಅಂತೆಲ್ಲ ಈಗ ತಲೆ ಕೆಡಿಸ್ಕೊಳ್ಳೋದು ಬೇಡ. ಮುಂದೆ ಯಾವಾಗಲಾದರೂ ಹೇಳುತ್ತೇನೆ. ಸದ್ಯಕ್ಕೆ & ಬಳಸಬೇಕು ಅಂತ ನೆನಪಿಟ್ಟುಕೊಳ್ಳಿ ಸಾಕು.

ಎರಡು ಕೂಡಿಗಳ ಬೆಲೆ ತೆಗೆದು ಕೊಂಡಿದ್ದಾಯಿತು. ಈಗ ಅವೆರಡನ್ನೂ ಕೂಡಿಸಿ mottaಕ್ಕೆ ಅದರ ಬೆಲೆಯನ್ನು ಒಪ್ಪಿಸೋಣ (assign).

motta = koodi1 + koodi2;

ಈಗ ಅದನ್ನು ತೆರೆಯ ಮೇಲೆ ಅಚ್ಚಿಸೋಣ.

printf("\n%d", motta);

main() ಕೆಲಸ (function)ವನ್ನು ಮುಕ್ತಾಯ ಮಾಡೋಣ.

}

Monday, March 2, 2009

ಸಿ ಹಮ್ಮುಗೆ - ೨

#include
main () {
   printf("Hello world\n");
}

ಮೊದಲನೇ ಸಾಲು #include. ಇದು stdio.h ಎಮ್ಬ ಕಣಜ(library)ವನ್ನು ಹಮ್ಮಿಗೆ (ಹಮ್ಮು: program) ಸೇರಿಸುತ್ತದೆ. ಅಂದರೆ ಈ ಕಣಜದಲ್ಲಿ ಗೊತ್ತುವಳಿ (definition) ಪಡಿಸಿರುವ ಕೆಲಸಗಳು (funtions) ಹಾಗೂ ಮಾರ್ಪಡಬಲ್ಲಗಳು (variables) ನಮ್ಮ ಹಮ್ಮಿನಲ್ಲಿ ಬಳಕೆಗೆ ದೊರಕುತ್ತವೆ. printf ಎಮ್ಬ ಅಚ್ಚುಮಾಡುವ ಕೆಲಸವೂ (funtion) ಇದೇ stdio.h ಕಣಜದಲ್ಲಿ ಗೊತ್ತುವಳಿಸಲಾಗಿದೆ. 

ಎರಡನೇ ಸಾಲು "ಮೇನ್" ಎಮ್ಬ ಕೆಲಸವನ್ನು ಗೊತ್ತುವಳಿ ಪಡಿಸುವ ಸಾಲು. main ಎಮ್ಬುದು ಈ  ಕೆಲಸದ ಹೆಸರು. ಎಲ್ಲ ಸಿ ಹಮ್ಮುಗಳಲ್ಲಿಯೂ ಒಂದು main ಕೆಲಸವಿರಬೇಕು. ಹಮ್ಮಿನ ಎಸಕವು (execution) mainಇಂದಲೇ ತೊಡಗುತ್ತದೆ.
ಅದರ ಪಕ್ಕ ಇರುವ ಸುತ್ತುಗಟ್ಟಿನಲ್ಲಿ  (bracket) ಕೆಲಸದ ಬಿತ್ತಿಗೆ(parameter - ಯಾಕೆ ಈ ಹೆಸರು ಅಂತ ಕೆಳಗೆ ಹೇಳಿದ್ದೀನಿ)ಗಳನ್ನು ನೀಡಬಹುದು. ಇಲ್ಲಿ mainಗೆ ಯಾವುದೇ ಬಿತ್ತಿಗೆಗಳಿಲ್ಲ. ಇದರ ಮುಂದಿರುವ ಹೂ ಸುತ್ತುಗಟ್ಟು (flower bracket) ಕೆಲಸದ ಮಯ್ಯನ್ನು ಪ್ರಾರಮ್ಬಿಸುತ್ತದೆ. 

ಮೂರನೇ ಸಾಲಿನಲ್ಲಿ "printf" ಎಮ್ಬ ಕೆಲಸವನ್ನು ಕರೆಯಲಾಗಿದೆ. ಈ ಕೆಲಸದ ಕರೆ(function call)ಗೆ "Hello World\n" ಎಮ್ಬ ಹೆದೆ(string)ಯನ್ನು ಬಿತ್ತಿಗೆ(parameter)ಯನ್ನಾಗಿ ನೀಡಲಾಗಿದೆ. ಅಂದರೆ ಈ ಹೆದೆ(string)ಯನ್ನು ಅದು ತೆರೆಯ ಮೇಲೆ ಅಚ್ಚು ಹಾಕುತ್ತದೆ. \n ಎಮ್ಬುದು ಹೊಸ ಸಾಲನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಕೊನೆಯ ಸಾಲಿನಲ್ಲಿರುವ ಮುಚ್ಚುವ ಹೂ ಸುತ್ತುಗಟ್ಟು (closing flower bracket) main ಕೆಲಸದ ಕೊನೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ.

Glossary:
--------

ಕಣಜ : library
ಹಮ್ಮು: program
ಗೊತ್ತುವಳಿ: definition
ಗೊತ್ತುವಳಿಸು: define
ಕೆಲಸ: function
ಮಾರ್ಪಡಬಲ್ಲ: variable
ಸುತ್ತುಗಟ್ಟು: bracket
ಹೆದೆ: string
ಬಿತ್ತಿಗೆ: parameter. (parameter ಅಂದರೆ ಅದರ ಮೇಲೆ ಇನ್ನೊಂದರ ಪ್ರಮಾಣ ಇಲ್ಲವೇ ಬೆಲೆಯು ಮಾರ್ಪಡುತ್ತದೆ. ಅದಕ್ಕೆ ಬಿತ್ತು ಮೂಲದಿಂದ ಬಿತ್ತಿಗೆ ಎಮ್ಬ ಪದವನ್ನು ಬಳಸಿದ್ದೇನೆ).

Thursday, February 5, 2009

ಸಿ ಹಮ್ಮುಗೆ (Programming) - ೧

ಸಿ ಹೆಸರಿನಂತೆ ಸಿಹಿಯಾದ ನುಡಿ. ಸಿಹಿಯನ್ನು ವಿವರಿಸುವುದು ಕಷ್ಟ. ತಿಂದು ಅನುಬವಿಸಿಯೇ ತಿಳಿಯ ಬೇಕು. ಹಾಗೇ ಸಿ ನುಡಿಯ ಸವಿಯನ್ನು ಹಮ್ಮಿಯೇ (program(v)) ತಿಳಿಯ ಬೇಕು. ಪೀಠಿಕೆ ಇಷ್ಟು ಸಾಕು ಅನ್ನಿಸ್ತಿದೆ. ಒಂದು ಹಮ್ಮು (program(n)) ಬರೆದು ನೋಡಿಯೇ ಬಿಡೋಣ. 

#include
main () {
   printf("Hello world\n");
}

ಹಮ್ಮು ಬರೆದ ಮೇಲೆ 
1. ಅದನ್ನು ಒಂದು ಕಡತದಲ್ಲಿ ಉಳಿಸಬೇಕು.
2. ಅದನ್ನು ಒಟ್ಟಿಸ (compile)ಬೇಕು. ಒಟ್ಟು (compilation) ತೇರ್ಗಡೆಯಾದರೆ ಒಂದು ಎಸಗಬಲ್ಲ (executable) ಕಡತ ಬರುತ್ತದೆ. 
3. ಆ ಎಸಗಬಲ್ಲ ಕಡತವನ್ನು ಓಡಿಸಬೇಕು. 

ಆಗ ತೆರೆಯ ಮೇಲೆ ಈ ಪಳಿಯು  (output) ಬರುತ್ತದೆ 

     Hello World

ಮೊದಲು ಈ ಹಮ್ಮನ್ನು "hello.c" ಎಂಬ ಕಡತದಲ್ಲಿ ಉಳಿಸೋಣ.
ಮೇಲಿನ ಎರಡನೇ ಹಂತವನ್ನು ಎಸಗುವುದಕ್ಕೆ ಸಿ ಒಟ್ಟುಕ (compiler) systemಲ್ಲಿ ನೆಟ್ಟಿರಬೇಕು. ಯೂನಿಕ್ಸ್ systemಗಳಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ "cc" ಇಲ್ಲವೇ "gcc" ಒಟ್ಟುಕವು ಇರುತ್ತದೆ. ಅದನ್ನು ಬಳಸಿ ಒಟ್ಟಿಸುವುದಕ್ಕೆ ಅಪ್ಪಣೆ ಸಾಲಿನಲ್ಲಿ (command line) ಇದನ್ನು ಅಚ್ಚಿಸಿ:

$ cc hello.c

ಒಟ್ಟು ತೇರ್ಗಡೆಯಾದರೆ "a.out" ಇಲ್ಲವೇ "hello.exe" (ವಿಣ್ಡೋಸ್) ಎಂಬ ಎಸಗಬಲ್ಲ ಕಡತವು ಅದೇ ಮಡಿತೆ(folder)ಯಲ್ಲಿ ಕಾಣಿಸಕೊಳ್ಳುತ್ತದೆ. ಈಗ ಈ ಕಡತವನ್ನು ಎಸಗಬೇಕು. ಅದಕ್ಕಾಗಿ ಅಪ್ಪಣೆ ಸಾಲಿನಲ್ಲಿ ಇದನ್ನು ಅಚ್ಚಿಸಿ:

$ ./a.out

ಮುಂದಿನ ಪೋಸ್ಟಿನಲ್ಲಿ ಈ ಹಮ್ಮಿನ ಎಲ್ಲ ಸಾಲುಗಳನ್ನೂ ವಿವರಿಸುತ್ತೇನೆ.


Sunday, February 1, 2009

ಕನ್ನಡಟೆಕ್ ಮತ್ತೆ ಶುರು

ಬಹಳ ದಿನಗಳಿಂದ ನಿಂತು ಹೋಗಿರುವ ಈ ಬ್ಲಾಗನ್ನು ಮತ್ತೆ ಬರೆಯಲು ತೊಡಗೋಣ ಎಂಬ ಬಯಕೆ. ಈ ನಡುವೆ ಬಯ್ಗಿನಲ್ಲಿ ನನಗೆ ಸೊಲ್ಪ ಬಿಡುವಿನ ಹೊತ್ತು ಸಿಗುತ್ತಿರುವುದರಿಂದ ಮತ್ತೆ ತೊಡಗಿಸಬಹುದೆಂದು ಇತ್ತೀಚಿನ ದಿನಗಳಲ್ಲಿ ಉನ್ನಿಸುತ್ತಿದೆ. ಇಂದು ಮನೆಗೆ ಬಂದು ಏನೂ ಕೆಲಸವಿಲ್ಲದೆ ಬೇಸರವಾಗುತ್ತಿದ್ದಾಗ ಇದಕ್ಕಿದ್ದ ಹಾಗೆ ನನಗೆ ಈ ಹಳೆಯ ಬ್ಲಾಗು ನೆನಪಿಗೆ ಬಂತು. ತೊಗೋ, ಇಂದೇ ತೊಡಗಿಸಿಬಿಡೋಣ ಅಂತಂದ್ಕೊಣ್ಡು ಈ ಸಾಲುಗಳನ್ನು ಈಗ ಬರೆಯುತ್ತಿದ್ದೇನೆ. 

ಹಿಂದೆ ಕ.ಸಾ.ಒ (ftp) ಬಗ್ಗೆ ಬರೆದಿದ್ದಾಗ ಓದಿದ ಕೆಲ ಗೆಳೆಯರು ನನ್ನ ಮೊಗಸಿನ ಬಗ್ಗೆ ತಮ್ಮ ಮೆಚ್ಚುಗೆ ಹೇಳಿ, ಆದರೆ ಇಷ್ಟು ಮುಂದುವರಿದ ವಿಶಯದ ಬಗೆಗಿನ ಬರಹ ಅಶ್ಟಾಗಿ ಅರ್ತವಾಗಲಿಲ್ಲ ಎಂದು ಹೇಳಿದ್ದರು. ಕ.ಸಾ.ಒ ಬಗ್ಗೆ ತಿಳಿಸಲು ಅದರ ಹಿನ್ನಲೆಯ ಅಡಿಗಟ್ಟು(basics)ಗಳ ಬಗ್ಗೆಯೂ ಬರೆಯಬೇಕು ಎಂದು ತಮ್ಮ ಅನಿಸಿಕೆ/ ಬಗೆತವನ್ನು ತಿಳಿಸಿದ್ದರು. ಆದರೆ ಎಣಿಯರಿಮೆ(computer science)ಯ ಅಡಿಗಟ್ಟಿನ ವಿಶಯಗಳಾದ ಎಣ್ಮೆ (mathematics), ಬಿಡು ಎಣ್ಮೆ (discrete maths), ತಿಟ್ಟ ಕೇಣ (graph theory), ಮತ್ತು ಅಲ್ಲಿಂದ ಮುಂದುವರಿದು ಹಮ್ಮುಗೆ (programming), ತಿಳಿಹ ಇಟ್ಟಳಗಳು  (data structures) ಹೀಗೆ ಇವೆಲ್ಲದರ ಬಗ್ಗೆ ಬರೆಯಬೇಕಾಗುತ್ತದೆ. ಈ ಎಲ್ಲ ಅಡಿಗಟ್ಟುಗಳ ಬಗ್ಗೆ ಬರೆಯುವುದಕ್ಕೆ ಬಹಳ ಹೊತ್ತು ಬೇಕಾದೀತು. ಆದರೆ ಎಲ್ಲೋ ಒಂದು ಕಡೆ ತೊಡಗಬೇಕು: ಕ.ಸಾ.ಒ ತೆರನಾದ ಮುಂದುವರಿದ ವಿಶಯಗಳೂ ಅಲ್ಲದೆ, ತೀರಾ ಕೆಳಗಿನ ಅಡಿಕಟ್ಟು ವಿಶಯಗಳೂ ಅಲ್ಲದೇ, ಹಮ್ಮುಗೆಯಂತಹ ವಿಶಯದಿಂದ ತೊಡಗಬಹುದೆನ್ನಿಸುತ್ತದೆ. ಅಲ್ಲಿಂದ ಮುಂದುವರಿದು ಅಡಿಗಟ್ಟುಗಳು ಹಾಗೂ ಮುಂದುವರಿದ ವಿಶಯಗಳ ಬಗ್ಗೆ ಬರೆಯಬಹುದು. ಸದ್ಯಕ್ಕೆ ಸಿ ನುಡಿಯ ಹಮ್ಮುಗೆಯಿಂದ ತೊಡಗುತ್ತೇನೆ. ಅದಾದಮೇಲೆ ತಿಳಿಹ ಇಟ್ಟಳಗಳ ಬಗ್ಗೆ ಬರೆಯುತ್ತೇನೆ.

ಕನ್ನಡದ ಬಗೆಯರಿಮೆಯ (technological, technical) ಪದಗಳನ್ನು ನೀಡಲು ಈ ಮೂಲಗಳು ನನಗೆ ನೆರವಾಗಿವೆ:
> ನಡುಬಲೆ(internet)ಯಲ್ಲಿ ದೊರೆಯುವ ಕನ್ನಡದ ಬ್ಲಾಗುಗಳು
> ಶಂಕರ ಬಟ್ಟರ ಹೊತ್ತಗೆಗಳು, ಅದರಲ್ಲೂ "ಇಂಗ್ಲೀಶ್ ಪದಗಳಿಗೆ ಕನ್ನಡದ್ದೇ ಪದಗಳು"
> ಕನ್ನಡ ಸಾಹಿತ್ಯ ಪರಿಶತ್ತಿನ ನಿಗಣ್ಟು
> ಕೊಳಂಬೆ ಪುಟ್ಟಣ್ಣ ಗವ್ಡರ "ಅಚ್ಚಗನ್ನಡ ನುಡಿಕೋಶ"

ಅಂದ ಹಾಗೆ, ಈ ಕೆಲಸದಲ್ಲಿ ನನಗೆ ನೆರವಾಗಲು ಆಸಕ್ತಿಯಿದ್ದಲ್ಲಿ ನಿಮಗೆ ಸ್ವಾಗತ, ನನಗೆ ಮಿಂಚೆ ಹಾಕಿ ಇಲ್ಲವೇ ಇಲ್ಲಿ ಕಾಮೆಣ್ತ್ ಹಾಕಿ ತಿಳಿಸಿ. 

Tuesday, June 3, 2008

ಕಡತ ಸಾಗಣೆ ಒಡಂಬಡಿಕೆ - ೩

ಈಗ ಕಿಚ್ಚು-ಗೋಡೆ (firewall) ಗಳ ಬಗ್ಗೆ ಕೊಂಚ ಮಾತಾಡೋಣ.
ಒಂದು ಹೆಣಿಕೆ (network)ಯಲ್ಲಿನ ಎಣಿ(computer)ಗಳ ಕಾಪಿಗಾಗಿ ಕಿಚ್ಚುಗೋಡೆ ಏರ್ಪಡಿಸಲಾಗುತ್ತದೆ. ಇದು ಸಾಫ್ಟ್ವೇರ್ ಇರಬಹುದು ಇಲ್ಲವೇ ಹಾರ್ಡ್ವೇರ್ ಇರಬಹುದು. ಒಟ್ಟಿನಲ್ಲಿ ತನ್ನ ಹೆಣಿಕೆಯನ್ನು ಅದು ಕಾಯಬೇಕು.

ಕಾಯಬೇಕು ಅಂದರೆ ಏನು ಮಾಡಬೇಕು? ಬಹಳ ಸರಳ. ಕಿಚ್ಚುಗೋಡೆಯೊಳಗಿರದ ಯಾವುದೇ ಎಣಿ (computer) ಇಲ್ಲವೇ ಹೆಣಿಕೆ(network)ಯಿಂದ ಒಳಬರುವ ಸಿಲುಕನ್ನು (incoming connection) ಸ್ವೀಕರಿಸಬಾರದು. ಇದು ಒಂದು ರೀತಿ ಲಕ್ಷ್ಮಣನ ಗೆರೆ ಇದ್ದಹಾಗೆ. ಒಳಗೆ ನುಸುಳೋ ಹಾಗೆ ಇಲ್ಲ. ಹೊರಗೆ ಬೇಕಿದ್ದರೆ ಹೋಗಬಹುದು. ಹೀಗಾಗಿ, ಗೋಡೆಯಿಂದ ಹೊರಗಿರುವವರ ಜೊತೆಯಾಗಲಿ, ಇಲ್ಲವೇ ಅದರ ಒಳಗಿರುವವರ ಜೊತೆಯಾಗಲಿ ಎಣಿಗಳು ತಾವೇ ಮಾತಿಗೆ ಇಳಿಯಲು ಯಾವುದೇ ಅಡ್ಡಿಯಿಲ್ಲ. ಆದರೆ ಗೋಡೆಯ ಹೊರಗಿರುವವರು, ಒಳಗಿರುವವರೊಂದಿಗೆ ತಾವೇ ಸಿಲುಕನ್ನು (connection) ಏರ್ಪಡಿಸಿ ಮಾತಿಗೆ ತೊಡಗುವಂತಿಲ್ಲ.

ಹ್ಮ್ಮ್ಮ್ಮ್....... ಈಗ ನಿಮಗೆ ಕೊಂಚ ತಿಳಿ ಆಗಿರಬೇಕು. ಕಿಚ್ಚುಗೋಡೆಯ ಹಿಂದಿರುವ ಎಣಿಗಳು, ಗೋಡೆಯ ಆ ಬದಿಯಿರುವ (servers) ಊಳಿಗಿಗಳೊಂದಿಗೆ ಚುರುಕು ಕಸಾಒ (active FTP) ದಲ್ಲಿ ತೊಡಗಲು ಆಗುವುದಿಲ್ಲ. ಯಾಕೆ ಅಂದರೆ ಚುರುಕು ಕಸಾಒ ಏರ್ಪಡಿಸಲು ಗೋಡೆಯ ಹೊರಗಿರುವ ಊಳಿಗಿಯೇ ಮಾಹಿತಿ ಸಿಲುಕನ್ನು (data connection) ಏರ್ಪಡಿಸಬೇಕು. ಆದರೆ ಕಿಚ್ಚುಗೋಡೆ ಇದಕ್ಕೆ ಎಡೆಮಾಡಿ ಕೊಡುವುದಿಲ್ಲ. ಇಂತಹ ಪರಿಸ್ಥಿತಿಗಳಿಗಾಗಿಯೇ ತೂಗು ಕಸಾಒ (passive FTP) ಇರುವುದು. ಮುಂಚೆಯೇ ಹೇಳಿದಂತೆ ತೂಗು ಕಸಾಒ-ದಲ್ಲಿ ಸಿಲುಕನ್ನು ಕೊಳ್ವನೇ ( client) ಏರ್ಪಡಿಸುತ್ತದೆ. ಗೋಡೆಯ ಒಳಗೆ ಇರುವ ಕೊಳ್ವನಿಗೆ ಹೊರಗೆ ಇರುವ ಊಳಿಗಿಯೊಂದಿಗೆ ಸಿಲುಕು ಏರ್ಪಡಿಸಲು ಕಿಚ್ಚುಗೋಡೆಯು ಯಾವ ಅಡ್ಡಿಯೂ ಮಾಡುವುದಿಲ್ಲ.

"ಅಲ್ಲ, ಕಿಚ್ಚು ಗೋಡೆ ಇರಲಿ, ಇಲ್ಲದಿರಲಿ. ಎರಡಕ್ಕೂ ಒಗ್ಗೋ ಹಾಗೆ ತೂಗು ಕಸಾಒ ಒಂದೇ ಸಾಕಾಗಿತ್ತು ಅಲ್ಲವಾ? ಅದಕ್ಕೊಂದು ಇದಕ್ಕೊಂದ ಅಂತ ಎರಡು ಬಗೆಗಳು ಯಾಕೆ ಬೇಕಿತ್ತು?" ಅನ್ನುವ ಅನುಮಾನ ನಿಮಗೆ ಬಂದಿರಬಹುದು. ಅದಕ್ಕೆ ಉತ್ತರ ಇಷ್ಟೆ. ಕಸಾಒ ಮಾಡಿದಾಗ ಇದ್ದದ್ದು ಚುರುಕು ಬಗೆ ಮಾತ್ರ. ಅದನ್ನು ನೆಗಳ್ಚಿದ್ದು ಕಿಚ್ಚುಗೋಡೆಗಳು ಸಾಮಾನ್ಯ ಬಳಕೆಯಲ್ಲಿ ಇಲ್ಲದಿದ್ದಾಗ. ಕಿಚ್ಚುಗೋಡೆಗಳು ಸಾಮಾನ್ಯವಾಗ ತೊಡಗಿದಾಗ ಎರಡನೆಯ ಬಗೆಯೊಂದನ್ನು ಮಾಡಬೇಕಾಯಿತು.

Tuesday, May 20, 2008

ಕಡತ ಸಾಗಣೆ ಒಡಂಬಡಿಕೆ - ೨

ಅಂಕೆಯ ಕಾಲುವೆ (data channel) ಏನೋ ೨೧ನೇ ರೇವಿನಲ್ಲಿ (port) ಏರ್ಪಡುತ್ತದೆ. ಆದರೆ ಮಾಹಿತಿ ಸಾಗಣೆ (data transfer) ಆಗುವುದು ಯಾವ ರೇವಲ್ಲಿ? ೨೦ನೇಯದು?
ಹವ್ದು. ೨೦ನೇ ರೇವು ಸರಿಯೇ. ಆದರೆ ಯಾವಾಗಲೂ ಅಲ್ಲ.

ಹಾಗಾದರೆ ೨೦ನೇ ರೇವಲ್ಲಿ ಮಾಹಿತಿ ಸಾಗಣೆ ಆಗೋದು ಯಾವಾಗ? ಹೇಗೆ?
ಕಸಾಒ (ಕಡತ ಸಾಗಣೆ ಒಡಂಬಡಿಕೆ - FTP) ಚುರುಕಾದಾಗ (active). ತೂಕಡಿಸುವಾಗ ಬೇರೆ ರೇವಲ್ಲಿ ಆಗುತ್ತದೆ.

"ಆಆಆ? ಏನ್ ಸಿವ ಇದು ಚುರುಕು; ತೂಕಡಿಸೋದು" ಅಂದ್ಕೊಂಡ್ರಾ? ಹೇಳ್ತೀನಿ. 'ಕಸಾಒ'ದಲ್ಲಿ ಎರಡು ಬಗೆ. ಚುರುಕು ಕಸಾಒ (active FTP) ಮತ್ತು ತೂಗು ಕಸಾಒ (passive FTP). ತೂಗು ಅನ್ನೋ ಪದ ಯಾಕೆ ಅಂದ್ರೆ ಊಳಿಗಿಯು (server) ತೂಕಡಿಸುತ್ತ, ಕೊಳ್ವನೇ (client) ಸಿಲುಕನ್ನು (connection) ತೊಡಗಿಸಲೆಂದು ಕಾಯುತ್ತ ಕೂರುತ್ತದೆ. ಚುರುಕು-ತೂಗು, ಈ ಪದಗಳು ಇಷ್ಟ ಆಗ್ತಿಲ್ವಾ? ಏನ್ ಮಾಡ್ಲಿ ನನಗೆ ಹೊಳೆದಿದ್ದೇ ಇವು. ಬೇರೆ ಸೂಕ್ತವಾದ ಪದಗಳು ಸಿಕ್ಕರೆ ಕಾಮೆಂಟ್ ಹಾಕಿ ತಿಳಿಸಿದರೆ ಉಪಕಾರ ಆಗುತ್ತೆ. ಸರಿ, ಅಲ್ಲಿಯವರೆಗೂ ಇವೇ ಪದಗಳನ್ನು ಬಳಸುತ್ತೇನೆ.

ಚುರುಕು ಬಗೆ ( active mode)
--------------------------

ಮೊದಲೇ ಹೇಳಿದಂತೆ, ಈ ಬಗೆಯಲ್ಲಿ, ಊಳಿಗಿಯು ಚುರುಕಾಗಿ ಸಿಲುಕು ಏರ್ಪಾಟಲ್ಲಿ ( connection establishment) ತೊಡಗಬೇಕು. ಇದಕ್ಕೆ ಮೊದಲು ಕೊಳ್ವನು "PORT N" ಎಂಬ ಅಪ್ಪಣೆಯನ್ನು ಕೊಟ್ಟು 'ನಾನು Nನೇ ರೇವಿನಲ್ಲಿ ನಿನಗಾಗಿ ಕಾಯುತ್ತಿರುತ್ತೇನೆ" ಎಂದು ಊಳಿಗಿಗೆ ತಿಳಿಸುತ್ತದೆ. N ಒಂದು ಮೀಸಲಲ್ಲದ ರೇವಾಗಿರುತ್ತದೆ (non-reserved port). ಅಪ್ಪಣೆ ಕೊಟ್ಟ ಕೂಡಲೇ, ಕೊಳ್ವನು , ಆ N ರೇವಿನಲ್ಲಿ ಕಿವಿಗೊಟ್ಟು ಕೂರುತ್ತದೆ. ಊಳಿಗಿಯು ಆಗ ತನ್ನ ಕಡೆಯ 20ನೇ ರೇವಿನಿಂದ ಕೊಳ್ವನ ಕಡೆಯ Nನೇ ರೇವಿಗೆ ಸಿಲುಕಿಸಲು ಯತ್ನಿಸುತ್ತದೆ. ಕೊಳ್ವನು ಈ ಸಿಲುಕಿನ ಕೋರಿಕೆ (connection request)ಯನ್ನು ಸ್ವೀಕರಿಸಿದರೆ ಸಿಲುಕು ಅಣಿ! ಓದು-ಬರೆ ಕರೆಗಳ ( read-write calls) ಮೂಲಕ ಮಾಹಿತಿಯು ಒಂದೆಡೆಯಿಂದ ಇನ್ನೊಂದೆಡೆಗೆ ಸಾಗಬಹುದು.
ಮಾಹಿತಿ ಸಾಗಣೆ (data transfer) ಆದ ಕೂಡಲೇ ಸಿಲುಕನ್ನು ಮುಚ್ಚಲಾಗುತ್ತದೆ. ಇಲ್ಲೂ ಊಳಿಗಿಯು ಚುರುಕಾಗಿರ ಬೇಕು. ಹಾಗಾಗಿ ಸಿಲುಕು ಮುಚ್ಚೋ ಕೆಲ್ಸ ಕೂಡ ಅದೇ ಮಾಡಬೇಕು.

ತೂಗು ಬಗೆ (passive mode):
--------------------------

ಮಾಹಿತಿ ಸಾಗಿಸಬೇಕಾದಾಗ, ಈ ಬಗೆಯಲ್ಲಿ, ಕೊಳ್ವನು ಅಂಕೆ ಕಾಲುವೆಯ ಮೂಲಕ 'PASV' ಎಂಬ ಅಪ್ಪಣೆಯನ್ನು ಕಳುಹಿಸಿ ನೀನು ತೂಗು (passive) ಬಗೆಯಲ್ಲಿರು ಎನ್ನುತ್ತದೆ. ಊಳಿಗಿಯು ಆಗ M ಅನ್ನೋ ಊ (random) ರೇವನ್ನು ತೆರೆದು, "PORT M" ಎಂಬ ಅಪ್ಪಣೆಯನ್ನು ಕೊಳ್ವನಿಗೆ ಕಳುಹಿಸುತ್ತದೆ. ಈ M ರೇವು ಮೀಸಲಲ್ಲದ (non-reserved) ರೇವಾಗಿರುತ್ತದೆ. ಈ ಅಪ್ಪಣೆಯನ್ನು ಪಡೆದಾಗ, ಕೊಳ್ವನು ಸಿಲುಕನ್ನು ಊಳಿಗಿಯ M ರೇವಿನೊಂದಿಗೆ ಏರ್ಪಡಿಸುತ್ತದೆ. ಎಂದಿನಂತೆ ಈಗ ಮಾಹಿತಿ ಸಿಲುಕು ಅಣಿ. ಓದು-ಬರೆ ಕರೆಗಳು ನಡೆದು ಮಾಹಿತಿ ಸಾಗಣೆ ಮುಗಿದ ಮೇಲೆ ಕೊಳ್ವನು ಈ ಸಿಲುಕನ್ನು ಮುಚ್ಚತ್ತದೆ. ಅಷ್ಟೇ!

ಎಲ್ಲಾ ಓಕೆ. ಆದರೆ ಈ ಎರಡು ಬಗೆ ಯಾಕೆ? ಒಂದೇ ಇದ್ದಿದ್ದರೆ ಇನ್ನೂ ಸಲೀಸಾಗ್ತಿರಲಿಲ್ವಾ?

ದಿಟ. ಆದರೆ ಕಿಚ್ಚು ಗೋಡೆ ಗೊತ್ತುಣ್ಟಾ? ಅಂದರೆ ಇಂಗಲೀಷಿನಲ್ಲಿ firewall. ಇದರಿಂದ ಕೆಲವು ತೊಂದರೆಗಳುಣ್ಟಾಗ್ತವೆ. ಅದಕ್ಕೆ ಈ ಎರಡು ಬಗೆಗಳು.

ತೊಂದರೆ ಏನು, ಈ ಎರಡು ಬಗೆಗಳಿಂದ ಹೇಗೆ ಅದು ಬಗೆಹರಿಯುತ್ತೆ ಅಂತ ಮುಂದಿನ ಕಂತಲ್ಲಿ ತಿಳಿಸ್ತೀನಿ. ಕಾಯ್ತಿರಿ. ಆದರೆ ಅಲ್ಲಿಯವರೆಗೆ ತೂಗು ಬಗೆಯಲ್ಲಿ ಕೂರುವುದು ಬೇಡ. ಚುರುಕಾಗಿ ಓದಿ, ಹೇಗನ್ನಿಸ್ತು ಅಂತ ಹೇಳಿ, ತಪ್ಪಿದ್ದರೆ ತಿದ್ದಿ, ಅನುಮಾನಗಳಿದ್ದರೆ ಕೇಳಿ. ದಂಡಿಯಾಗಿ ಕಾಮೆಣ್ಟ್ ಮಾಡಿ.

Sunday, May 18, 2008

ಕನ್ನಡದಲ್ಲಿ ಟೆಕ್ ಬರಹಗಳು

ಕನ್ನಡ ಎನೆ ಕುಣಿದಾಡುವುದೆನ್ನೆದೆ
ಕನ್ನಡ ಎನೆ ಕಿವಿ ನಿಮಿರುವುದು
ಕಾಮನ ಬಿಲ್ಲನು ಕಾಣುವ ಕವಿಯೊಲು
ತಕ್ಕನೆ ಮನಮಯ್ ಮರೆಯುವುದು.

ಬಲೆಯಲ್ಲಿ ಕನ್ನಡದ ಬಳಕೆ ಏರುತ್ತಿರುವುದು ನೋಡಿದರೆ ಮನಸ್ಸಿಗೆ ಬಹಳ ಹಿಗ್ಗು. ಈಗ ಮೂಡುತ್ತಿರುವ ಕನ್ನಡ ತಾಣಗಳು, ದನಿ ತಾಣಗಳು, ಬ್ಲಾಗುದಾಣಗಳು ಹಲವು. ಇವುಗಳಲ್ಲಿ ಹಲವು, ಕನ್ನಡದ ಬಗ್ಗೆ ಆಲೋಚನೆ ನಡೆಸುವುದು, ಮುಂದಿನ ದಾರಿಯ ಬಗ್ಗೆ ಮಾತುಕತೆ ಮಾಡುವುದು ಬಹಳ ಖುಷಿ ತರುವ ವಿಷಯ. ಕನ್ನಡದ ಬಗೆಗಿನ ಕಳಕಳಿ ಈಗ ಸಾಮಾನ್ಯ (ಬಲೆಗಾರ)ನಲ್ಲೂ ಮೂಡಿದೆ. ಆದರೆ ಬಲೆಯ ಲೋಕದಲ್ಲಿ ನಾವು ನಮ್ಮ ನೆರೆಯ ನುಡಿಗಳಾದ ತಮಿಳು, ತೆಲುಗು, ಮಲಯಾಳಗಳಿಂದ ಬಹಳ ಹಿಂದು ಬಿದ್ದಿದ್ದೇವೆ. ಪುರಾವೆಗೆ www.google.com/trends ತಾಣಕ್ಕೆ ಹೋಗಿ ‘kannada, tamil, telugu, malayalam' ಗಳ ಟ್ರೆಂಡ್ಸ್ ಹುಡುಕಿ. ಕನ್ನಡ ಎಂಬ ಕೀಲಿಪದದ ಹುಡುಕಾಟದ ಸಂಖ್ಯೆ ಎಲ್ಲ ನುಡಿಗಳಿಗಿಂತ ಕಡಿಮೆ. ಹಲವು ಪಟ್ಟು ಕಡಿಮೆ. ಹಾಗೆಯೆ ವಿಕಿಪೀಡಿಯ ಇಲ್ಲವೇ ವಿಕ್ಷನರಿಗೆ ಹೋಗಿ ಕನ್ನಡದಲ್ಲಿರುವ ಎಣ್ಟ್ರಿಗಳನ್ನು ಎಣಿಸಿ ನೋಡಿ. ಹ್ಮ್ಮ್ಮ್ಮ್...... ಅವೂ ಬಹಳ ಕಡಿಮೆ :-(

ಹಿಂದೆ ಉಳಿದಿದ್ದೇವೆ ಎಂಬ ನೋವು ಇದೆ, ಆದರೆ ಮುನ್ನುಗ್ಗಿ ಎಲ್ಲರನ್ನೂ ಹಿಂದೂಡಿ ಬಿಡುವ ಹಂಬಲ ನಮ್ಮಲ್ಲಿದೆ. ಅದಾಗುತ್ತದೋ ಇಲ್ಲವೋ ನಮಗೆ ತಿಳಿಯದು. ಆದರೆ ಸದ್ಯಕ್ಕೆ ನಾವು ಮುನ್ನುಗ್ಗುತ್ತಿದ್ದೇವೆ. ಇದು ದಿಟವಾಗಿಯೂ ಹಿಗ್ಗಿನ ವಿಷಯ :-).

ಕನ್ನಡದಲ್ಲಿ ಸಾಹಿತ್ಯ, ಸುದ್ದಿ-ಸಮಾಚಾರ, ಸಂಗೀತ, ಸಿನಿಮಾ ಹೀಗೆ ಹಲವು ವಿಷಯಗಳ ಬಗ್ಗೆ ತಾಣಗಳು ಮೂಡಿಬಂದಿವೆ. ಆದರೆ, ಟೆಕ್ ಬರಹಗಳಾಗಲಿ, ವಿಜ್ನಾನದ ಬರಹಗಳಾಗಲಿ ನನಗೆ ತಿಳಿದ ಮಟ್ಟಿಗೆ ಮೂಡಿ ಬಂದಿಲ್ಲ. ಆದರೆ ಈ ವಿಷಯಗಳ ಬಗ್ಗೆ ಅಚ್ಚು (print) ಮಾಧ್ಯಮದಲ್ಲಿ ಸಾಕಷ್ಟು ಬರಹಗಳು ಬಂದಿವೆ. ಆದರೆ ಇವು ಸಾಮಾನ್ಯ ಜನರಿಗಾಗಿ ಬರೆದ ವಿಜ್ನಾನವೇ ಹೊರತು ಈ ಎಡೆಯಲ್ಲಿ ಗಂಭೀರ ಬರಹಗಳು ಬಂದಿಲ್ಲ. ಅಂದರೆ, ಪಠ್ಯ ಸಾಹಿತ್ಯ ಇಲ್ಲ. ಉದಋಣೆಗೆ, ಕನ್ನಡದಲ್ಲಿ ವಯ್ದ್ಯಕೀಯ ವಿಜ್ನಾನಕ್ಕೆ ಯಾವ ಪಠ್ಯ ಸಾಹಿತ್ಯವೂ ಇಲ್ಲ. ಅದಿರಲಿ ವಯ್ದ್ಯಕೀಯ ರಂಗದಲ್ಲಿ ಬಳಸುವ ಮೂಲ ಪದಗಳಿಗೇ ಕನ್ನಡದಲ್ಲಿ ಸಮಾನಾರ್ಥಕಗಳಿಲ್ಲ. ಈ ಸಾಹಿತ್ಯದಲ್ಲಿ ಇನ್ನೊಂದು ತೊಡಕೆಂದರೆ ಎರ್ರಾಬಿರ್ರಿ ಸಕ್ಕದದ ಬೆರೆಕೆ. ನಮ್ಮ ವಿಜ್ನಾನ ಸಾಹಿತಿಗಳು ಒಂದೊಂದು ಪಾರಿಭಾಷಿಕ ಪದಗಳಿಗೂ ಸಕ್ಕದದ ಮೊರೆ ಹೋಗಿ, ಸಾಕಪ್ಪಾ ಸಾಕು, ಕನ್ನಡದಲ್ಲಿ ವಿಜ್ನಾನವೇ ಬೇಡ ಎನುವಷ್ಟರ ಮಟ್ಟಿಗೆ ಕಷ್ಟಗೊಳಿಸಿದ್ದಾರೆ. ತುಸು ದಿನಗಳ ಹಿಂದೆ ಬಲೆಯಲ್ಲಿ ‘chlorphyl' ಉದಾಹರಣೆಯನ್ನು ಓದಿದ್ದೆ. ನೀವೂ ಇದರ ಬಗ್ಗೆ ಓದಿರುತ್ತೀರಿ. 'ಪತ್ರಹರಿತ್ತು' ಅಂತ ಹೇಳಿ ತಲೆಮೇಲೆ ಹೋಗೋ ಹಾಗೆ ಮಾಡಿದ್ದಾರೆ. ಅದರ್ ಬದಲಾಗಿ 'ಎಲೆಹಸಿರು' ಅಂತ ಕರೆದಿದ್ದರೆ ಎಷ್ಟು ಚೆನ್ನ!

ಕನ್ನಡದಲ್ಲಿ ಎಲ್ಲಾ ವಿಜ್ನಾನ ತಂತ್ರಜ್ನಾನಕ್ಕೆ ನಂಟಾದ ಸಾಹಿತ್ಯ ಬರಬೇಕು. ಇದು ಸರಳವಾಗಿರಬೇಕು, ಆದಷ್ಟು ಸಕ್ಕದದ ಬದಲಾಗಿ ಕನ್ನಡದ ಪದಗಳನ್ನು ಬಳಸಬೇಕು, ಮತ್ತು ಇದು ನಮ್ಮ ನಾಡ professionalಗಳು ಬಳಸುವಂತಾಗಬೇಕು. ರಸಾಯನ ಶಾಸ್ತ್ರ ಓದುವವರು ಕನ್ನಡದಲ್ಲಿ ರಸಾಯನಗಳ ಫಾರ್ಮುಲಾಗಳನ್ನು ಬರೆದು ಬಳಸಬೇಕು. ನಮ್ಮಂತಹ ಸಾಫ್ಟ್ವೇರ್ ಇಂಜಿನಿಯರ್ಗಳು ಕನ್ನಡದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ನುಡಿಗಳಲ್ಲಿ ಪ್ರೋಗ್ರಾಮ್ ಬರೆಯುವಂತಾಗಬೇಕು. ವಯ್ದ್ಯನ ಬಳಿ ಹೋದರೆ ಕನ್ನಡದಲ್ಲಿ prescription ಕೊಡಬೇಕು. ಪೇಟೆಂಟ್ ಫಯ್ಲ್ ಮಾಡುವವರು ತಮ್ಮ ಓಲೆ (paper)ಯನ್ನು ಕನ್ನಡದಲ್ಲಿ ಬರೆದು ಸಲ್ಲಿಸಬೇಕು........
ಕನ್ನಡವೆಂದರೆ ಬರಿಯ ಕತೆ ಕವನದ ಸಾಹಿತ್ಯವಾಗಿರದೆ, ವಿಜ್ನಾನ, ತಂತ್ರಜ್ನಾನ, ಎಣ್ಮೆಗಳ ಸಾಹಿತ್ಯವೂ ಆಗಬೇಕು. ನಮ್ಮ ಹಿರಿಯರು ನಮಗೆ ಕತೆ ಕವನದ ಸಾಹಿತ್ಯ ಸಾಕಷ್ಟು ಕೊಟ್ಟಿದ್ದಾರೆ. ಆದರೆ ಇದನ್ನು ಈಗ ಬೆಳೆಯುತ್ತಿರುವ ಬೇರೆ ಕ್ಷೇತ್ರಗಳಿಗೂ ಎಳೆದು ನಮ್ಮ ನುಡಿಯನ್ನು ಬೆಳೆಸಿ ಕಂಗೊಳಿಸುವಂತಹ ಸ್ಥಿತಿಗೆ ತರುವುದು ನಮ್ಮ ಪೀಳಿಗೆಯ ಹೊಣೆಗಾರಿಕೆ.
ಕನಸುಗಳೇನೋ ಸಾಕಷ್ಟಿವೆ, ಅದು ನನಸಾಗುವವೇ ಎಂಬುದು ನಮ್ಮ ಕಯ್ಯಲ್ಲಿಯೇ ಇದೆ.

ಸರಿ. ಇನ್ನು ನನ್ನ ಪೀಠಿಕೆ ಸಾಕು ಅನ್ನಿಸುತ್ತೆ. ಈಗಾಗಲೇ ನಿಮಗೆ ಅರ್ಥ ಆಗಿರಬೇಕು. ನಾನೇನು ಪೊಡವಿಯಲ್ಲಿರುವ ಎಲ್ಲ ವಿಜ್ನಾನಗಳನ್ನು ಕನ್ನಡ ಸಾಹಿತ್ಯದಲ್ಲಿ ತರುವ ಸಾಹಸಕ್ಕೆ ಸದ್ಯಕ್ಕೆ ಕಯ್ ಹಾಕಿಲ್ಲ. ಆದರೆ, ನನ್ನ ಒಂದು ಸಣ್ಣ ಅಳಿಲು ಸೇವೆಯಲ್ಲಿ ತೊಡಗೋಣ ಅಂತ. ನಾನೊಬ್ಬ ಸಾಫ್ಟ್ ವೇರ್ ಇಂಜಿನಿಯರ್. ನನಗೆ ತಿಳಿದಿರುವ ಕೆಲವು ಕಂಪ್ಯೂಟರ್-ಸಾಫ್ಟ್ವೇರ್ ವಿಷಯಗಳನ್ನು ಕನ್ನಡದಲ್ಲಿ ಬರೆದು ಈ ಬ್ಲಾಗಿನಲ್ಲಿ ಹಾಕುವೆ. ಪ್ರತಿ ಬ್ಲಾಗ್ ಬರಹದ ಕೆಳಗೆ ನಾನು ಬಳಸಿರುವ ಕನ್ನಡ ಪಾರಿಭಾಷಿಕ ಪದಗಳ 'ಪದತಿಳಿವು' (glossary) ಕೊಡುವೆ. ನಾನು ಬಳಸಿರುವ ಪದ (ಪದಗಟ್ಟು) ನಿಮಗೆ ಸೂಕ್ತವಲ್ಲ ಎನಿಸಿದರೆ ಕಾಮೆಂಟ್ ಹಾಕಿ ನನಗೆ ತಿಳಿಸಲು ಹಿಂಜರಿಯದಿರಿ. ದಯವಿಟ್ಟು!

ನನ್ನ ಕನ್ನಡ ಟೆಕ್ ಬರಹಗಳನ್ನು ನನಗೆ ಇಷ್ಟವಾದ 'ಕಡತ ಸಾಗಣೆ ಒಡಂಬಡಿಕೆ' (File Transfer Protocol) ಎಂಬ ಬರಹದಿಂದ ತೊಡಗುತ್ತೇನೆ. ಅದಕ್ಕಾಗಿ ಕಾಯಿರಿ.

ನನ್ನಿ!

ಕಡತ ಸಾಗಣೆ ಒಡಂಬಡಿಕೆ - ೧

ಇದು ಹೆಣಿಕೆಗಳಲ್ಲಿ ಎಣಿಯಿಂದ ಎಣಿಗೆ ಕಡತಗಳನ್ನು ಸಾಗಿಸುವುದಕ್ಕಾಗಿ ಬಳಕೆಯಲ್ಲಿರುವ ಬಹಳ ಜನಪ್ರಿಯವಾದ ಒಡಂಬಡಿಕೆ. ಹಲವು ಹೆಣಿಕೆಯ ಒಡಂಬಡಿಕೆಗಳಂತೆ ಇದು ಕೊಳ್ವ-ಊಳಿಗಿ ಆಧಾರಿತ. ಕಸಾಒ ಟೀ.ಸೀ.ಪಿ/ ಅಯ್.ಪಿ (Transport control protocol - ಸಾರಿಗೆ ಒಡಂಬಡಿಕೆ, internet protocol - ಅಂತರ ಹೆಣಿಕೆ ಒಡಂಬಡಿಕೆ ) ಮೇಲೆ ನಡೆಯುತ್ತದೆ.

ಊಳಿಗಿಯು ೨೧ ನೇ ರೇವಿನಲ್ಲಿ ಕಿವಿಗೊಟ್ಟು ಕಸಾಒ ಕೊಳ್ವರಿಂದ ಒಳಬರುವ ಸಿಲುಕು ಕೋರಿಕೆಗಾಗಿ ಕಾಯುತ್ತದೆ. ಒಂದು ಕೊಳ್ವನಿಂದ ಬಂದ ಸಿಲುಕು ಕೋರಿಕೆಯನ್ನು ಊಳಿಗಿಯು ಸ್ವೀಕರಿಸಬೇಕು. ಆಗ ಕೊಳ್ವ ಹಾಗೂ ಊಳಿಗಿಯ ನಡುವೆ ಒಂದು ಸಿಲುಕು ಏರ್ಪಡುತ್ತದೆ. ಈ ಸಿಲುಕನ್ನು ಅಂಕೆಯ ಕಾಲುವೆ ಎನ್ನಲಾಗುತ್ತದೆ. ಏಕೆಂದರೆ ಇದರಲ್ಲಿ ಬರಿ ಕಸಾಒ ಅಪ್ಪಣೆಗಳು ಹಾಗೂ ಅವುಗಳ ಮಾರ್ನುಡಿಗಳು ಮಾತ್ರ ಹರಿಯುತ್ತವೆ. ನಿಜವಾದ ಮಾಹಿತಿ ಅಲ್ಲ. ಸಿಲುಕು ಸ್ವೀಕರಿಸಿದ ಕೂಡಲೆ, ಊಳಿಗಿಯು 'ಸಿಲುಕು ತೇರ್ಗಡೆ'ಯೆಂಬ ಸಂದೇಶವನ್ನು ಅದೇ ಸಿಲುಕು (ಕಾಲುವೆ) ಮೂಲಕ ತಿಳಿಸುತ್ತದೆ. ಇದಕ್ಕೆ ಕಸಾಒ ಮಾರ್ನುಡಿ ಎನ್ನುತ್ತಾರೆ. ಈಗ ಒಂದು ಕಸಾಒ ನೆರೆವು ಏರ್ಪಡುವುದಕ್ಕೆ ಕೊಳ್ವನು ಬಳಕೆಗಾರನ ಹೆಸರು ಹಾಗೂ ಅವನ ತೇರ್ಪದವನ್ನು ಊಳಿಗಿಗೆ ತಿಳಿಸಬೇಕು. ಕೊಳ್ವನು ಇದೇ ಕಾಲುವೆಯಲ್ಲಿ 'user' ಹಾಗೂ ಅದಾದ ಮೇಲೆ 'passwd' ಎಂಬ ಎರಡು ಅಪ್ಪಣೆಗಳ ಮೂಲಕ ಈ ಮಾಹಿತಿಯನ್ನು ಕೊಡುತ್ತದೆ. ಇವೆರಡೂ ಸರಿಯಿದ್ದು ಊಳಿಗಿಯಿಂದ ಸ್ವೀಕ್ರುತಗೊಂಡ ಮೇಲೆ ಕಸಾಒ ನೆರೆವು (FTP session) ತೊಡಗುತ್ತದೆ (ಪ್ರಾರಂಭ).

ಮಾಹಿತಿ ಕಳುಹಿಸಬೇಕಾದ್ದಲ್ಲಿ, ಒಂದು ಹೊಸ ಕಾಲುವೆಯನ್ನು (ಬೇರೊಂದು ರೇವಿನಲ್ಲಿ) ತೆರೆಯಲಾಗುತ್ತದೆ. ಅಂಕೆಯ ಕಾಲುವೆಯು, ನೆರೆವು ಮುಗಿಯುವವರೆಗೂ ಇರುತ್ತದೆ. ಆದರೆ ಮಾಹಿತಿ ಕಾಲುವೆಯನ್ನು ಮಾಹಿತಿಯ ಸಾಗಣೆಯಾದ ಕೂಡಲೇ ಮುಚ್ಚಲಾಗುತ್ತದೆ. ಮತ್ತೆ, ಅಂಕೆಯ ಕಾಲುವೆಯಲ್ಲಿ ಮಾಹಿತಿ/ ಕಡತ ಸಾಗಣೆಯ ಕೋರಿಕೆ ಹರಿದು ಬಂದಾಗ ಹೊಸ ಮಾಹಿತಿ ಕಾಲುವೆ ಏರ್ಪಡುತ್ತದೆ. ಸಾಗಣೆ ಮುಗಿದ ಕೂಡಲೇ ಮುಚ್ಚಲಾಗುತ್ತದೆ.

ಕಡತ ಸಾಗಣೆ ಒಡಂಬಡಿಕೆಯನ್ನು ಕೆಳಗಿನ ಚಿತ್ರದಲ್ಲಿ ಕೊಡಲಾಗಿದೆ.




ಒಬ:
ಒಡಂಬಡಿಕೆ ಬಗೆಗಾರ. ಊಳಿಗಿ ಇಲ್ಲವೇ ಕೊಳ್ವರ ಕಡೆಗಳಲ್ಲಿ ಒಡಂಬಡಿಕೆಯನ್ನು ಬಗೆದು ಕಡತ ಸಾಗಣೆಯನ್ನು ನಿಯಮಿಸುತ್ತದೆ. ಕೊಳ್ವ ಹಾಗೂ ಊಳುಗಿಗಳ ಒಬಗಳು ಬೇರೆ ಬೇರೆಯಾಗಿದ್ದು ಆಯಾ ಕಡೆಗಳಲ್ಲಿ ಬೇರೆ ಬೇರೆ ಪಾತ್ರಗಳನ್ನು ವಹಿಸುತ್ತವೆ.

ಊಳಿಗಿ ಒಬ (ಒಡಂಬಡಿಕೆ ಬಗೆಗಾರ) :
ಊಳಿಗಿ ಒಡಂಬಡಿಕೆ ಬಗೆಗಾರವು 21ನೇ ರೇವಿನಲ್ಲಿ ಕಿವಿಗೊಟ್ಟು ಕೇಳುತ್ತದೆ. ಕೊಳ್ವ ಒಬದಿಂದ ಸಿಲುಕು ಕೋರಿಕೆ ಬಂದಾಗ ಅದರೊಂದಿಗೆ ಸಿಲುಕನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ. ಕೊಳ್ವ ಒಬದಿಂದ ಕಸಾಒ ಅಪ್ಪಣೆಗಳನ್ನು ಪಡೆದು, ಅದಕ್ಕೆ ಮಾರ್ನುಡಿಗಳನ್ನು ಕಳುಹಿಸಿ, ಉಳುಗಿ ಮಾಹಿತಿ ಸಾಗಣೆ ನಡೆಯನ್ನು ನಿಯಮಿಸುತ್ತದೆ.

ಊಳಿಗಿ ಮಾಸಾನ (ಮಾಹಿತಿ ಸಾಗಣೆ ನಡೆ):
ಊಳಿಗಿಯ ಎಡೆಯಲ್ಲಿ ಈ ನಡೆ ಅಥವಾ ನಡೆಗಳ ಗುಂಪು ಕೊಳ್ವ ಮಾಸಾನದ ಒಡನಾಡಿತನದೊಂದಿಗೆ ಕಡತಗಳ ಸಾಗಣೆ ಮಾಡುತ್ತದೆ.

ಕೊಳ್ವ ಒಬ (ಒಡಂಬಡಿಕೆ ಬಗೆಗಾರ):
ಕೊಳ್ವನ ಕಡೆಯಲ್ಲಿ ಒಡಂಬಡಿಕೆ ಬಗೆಗಾರ.

ಕೊಳ್ವ ಮಾಸಾನ (ಮಾಹಿತಿ ಸಾಗಣೆ ನಡೆ):
ಕೊಳ್ವನ ಕಡೆಯಲ್ಲಿ ಮಾಹಿತಿ ಸಾಗಣೆ ನಡೆ.

ಮುಂದಿನ ಬರಹದಲ್ಲಿ ಚುರುಕು ಕಸಾಒ (active FTP) ಹಾಗೂ ತೂಗು ಕಸಾಒ (passive FTP) ಬಗ್ಗೆ ಬರೆಯುವೆ.

----------------------------------------------------------------------------------------------------------

ಪದತಿಳಿವು (Glossary)


ಹೆಣಿಕೆ: network
ಎಣಿ: computer
ಕಡತ: file
ಕಡತ ಸಾಗಣೆ ಒಡಂಬಡಿಕೆ: file transfer protocol; ಒದಂಬಡಿಕೆ = protocol.
ಕೊಳ್ವ: client (ಬೆಲೆ ಕೊಟ್ಟು ಕೊಂಡುಕೊಳ್ಳುವ ಎಂಬ ಅರ್ಥದಿಂದ ಈ ಪದ ಬಳಸಿಲ್ಲ. ಕೊಳ್ ಎಂದರೆ ತೆಗೆದುಕೊಳ್ಳು, ಪಡೆ ಎಂಬ ಅರ್ಥ ಇದೆ. ಊಳಿಗ-ಸಿವೆಯನ್ನು ಪಡೆಯುವವ ಎಂಬ ಅರ್ಥದಲ್ಲಿ ಬಳಕೆ).
ಊಳಿಗಿ: server; ಊಳಿಗ = ಸೇವೆ =>ಕೊಳ್ವ-ಊಳಿಗಿ = client-server.
ಸಾರಿಗೆ ಒಡಂಬಡಿಕೆ: TCP (Transprot Control Protocol)
ಅಂತರಹೆಣಿಕೆ ಒಡಂಬಡಿಕೆ: IP (Internet Protocol)
ರೇವು: port
ಕಿವಿಗೊಡು: listen
ಸಿಲುಕು: conect (v), connection (n).
ಅಂಕೆ = control; ಅಂಕೆಯ ಕಾಲುವೆ= control channel.
ಅಪ್ಪಣೆ = command (n)
ಮಾರ್ನುಡಿ = reply; ಕಸಾಒ ಮಾರ್ನುಡಿ = FTP reply.
ಮಾಹಿತಿ = data, information (data ಪದಕ್ಕೆ ಸರಿಯಾದ ಪದ ನನಗೆ ಸಿಕ್ಕಿಲ್ಲ. ಸಿಕ್ಕರೆ ತಿಳಿಸಿ).
ನೆರೆವು = session.
ಬಳಕೆಗಾರ = user
ತೇರ್ಪದ = password
ಬಗೆ = interpret; ಬಗೆಗಾರ = interpreter.
ಒಡಂಬಡಿಕೆ ಬಗೆಗಾರ = protocol interpreter.
ನಡೆ = process; ಮಾಹಿತಿ ಸಾಗಣೆ ನಡೆ = data transfer process.
ಸಿಲುಕು ತೇರ್ಗಡೆ = connection successful
ಕೊಳ್ವನ ಕಡತ ಏರ್ಪಾಟು: client file system
ಊಳುಗಿಯ ಕಡತ ಏರ್ಪಾಟು: server file system