ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ಸ್ (Data Structures): ಬಟ್ಟೆಗಳನ್ನ ಕಬೋರ್ಡ್ನಲ್ಲಿ ಜೋಡಿಸಿಟ್ಟ ಹಾಗೆ
ನಮಸ್ಕಾರ ತಮ್ಮಾ, ಹೇಗಿದ್ದೀಯಾ? ಇವತ್ತು ನಾವು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಲೋಕದ ಅತ್ಯಂತ ಮುಖ್ಯವಾದ, ಅದೇ ಸಮಯದಲ್ಲಿ ಅನೇಕ ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ತಲೆನೋವು ತರೋ ಒಂದು ವಿಷಯದ ಬಗ್ಗೆ ಮಾತಾಡೋಣ. ಅದೇ 'ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ಸ್'. ಈ ಹೆಸರು ಕೇಳಿದ ತಕ್ಷಣ ನಿನಗೆ ಯಾವುದೋ ದೊಡ್ಡ ಬಿಲ್ಡಿಂಗ್ ಡಿಸೈನ್ ಅಥವಾ ಕಾಂಪ್ಲೆಕ್ಸ್ ಮ್ಯಾಥ್ಸ್ ನೆನಪಾಗಬಹುದು. ಆದ್ರೆ ಹಿರಿಯಣ್ಣನಾಗಿ ನಾನು ನಿನಗೆ ಹೇಳೋದಾದ್ರೆ, ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಅನ್ನೋದು ನಿನ್ನ ರೂಮಿನಲ್ಲಿರೋ ಕಬೋರ್ಡ್ನಲ್ಲಿ ಬಟ್ಟೆ ಜೋಡಿಸೋ ಅಪ್ಪಟ ದೇಶಿ ಕಲೆ ಅಷ್ಟೇ!
ಯೋಚನೆ ಮಾಡು ಗುರು, ನೀನು ಕಾಲೇಜಿಗೆ ಲೇಟ್ ಆಗಿ ಎದ್ದಿದ್ದೀಯಾ ಅಂದುಕೋ. ಇವತ್ತು ಯಾವುದೋ ಸ್ಪೆಷಲ್ ಫಂಕ್ಷನ್ ಇದೆ, ನಿನ್ನ ಫೇವರೆಟ್ ಕಪ್ಪು ಬಣ್ಣದ ಶರ್ಟ್ ಹಾಕಿಕೊಳ್ಳಬೇಕು ಅಂತ ಆಸೆ. ಆದ್ರೆ ನಿನ್ನ ರೂಮಿನಲ್ಲಿ ಬಟ್ಟೆಗಳೆಲ್ಲಾ ಬೆಟ್ಟದ ತರ ಚೆಲ್ಲಾಪಿಲ್ಲಿಯಾಗಿ ಬಿದ್ದಿವೆ. ಆ ರಾಶಿಯಲ್ಲಿ ನಿನಗೆ ಬೇಕಾದ ಶರ್ಟ್ ಹುಡುಕೋಕೆ ಎಷ್ಟು ಟೈಮ್ ಬೇಕು? ಅಷ್ಟರಲ್ಲೇ ಕಾಲೇಜು ಬಸ್ ಹೊರಟು ಹೋಗಿರುತ್ತೆ ಅಲ್ವಾ? ಇದನ್ನೇ ಕಂಪ್ಯೂಟರ್ ಭಾಷೆಯಲ್ಲಿ 'ಅನ್-ಸ್ಟ್ರಕ್ಚರ್ಡ್ ಡೇಟಾ' ಅಂತಾರೆ. ಅಂದ್ರೆ ಮಾಹಿತಿ ಎಲ್ಲೋ ಇದೆ, ಆದ್ರೆ ಅದನ್ನ ಹುಡುಕೋಕೆ ಹೋದಾಗ ನಮಗೆ ಸಿಗೋದಿಲ್ಲ.
ಇದೇ ಕೆಲಸವನ್ನ ನೀನು ಸ್ಮಾರ್ಟ್ ಆಗಿ ಮಾಡಿದ್ರೆ ಹೇಗಿರುತ್ತೆ ನೋಡು. ನಿನ್ನ ಕಬೋರ್ಡ್ನಲ್ಲಿ ಜೀನ್ಸ್ ಪ್ಯಾಂಟ್ ಒಂದು ಕಡೆ, ಶರ್ಟ್ ಒಂದು ಕಡೆ, ಸಾಕ್ಸ್ ಎಲ್ಲ ಒಂದು ಸಣ್ಣ ಬಾಕ್ಸ್ನಲ್ಲಿ ಜೋಡಿಸಿಟ್ಟರೆ, ನೀನು ಕಣ್ಣು ಮುಚ್ಚಿಕೊಂಡು ನಿನಗೆ ಬೇಕಾದ ಬಟ್ಟೆಯನ್ನ ಒಂದೇ ಸೆಕೆಂಡ್ನಲ್ಲಿ ಎತ್ತಬಹುದು. ಹೀಗೆ ಮಾಹಿತಿಯನ್ನ ಅಂದ್ರೆ ಡೇಟಾವನ್ನ ಒಂದು ಕ್ರಮಬದ್ಧವಾಗಿ ಜೋಡಿಸಿ ಇಡೋ ವಿಧಾನವನ್ನೇ ನಾವು 'ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್' ಅಂತ ಕರೆಯೋದು. ನೀನು ಎಷ್ಟು ಚೆನ್ನಾಗಿ ಡೇಟಾ ಜೋಡಿಸ್ತೀಯೋ, ನಿನ್ನ ಸಾಫ್ಟ್ವೇರ್ ಅಷ್ಟು ವೇಗವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತೆ.
ಈಗ ನಾವು ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ನ ಕೆಲವು ಮುಖ್ಯ ವಿಧಗಳನ್ನ ದಿನನಿತ್ಯದ ಉದಾಹರಣೆ ಮೂಲಕ ನೋಡೋಣ. ಮೊದಲನೆಯದು 'ಸ್ಟ್ಯಾಕ್' (Stack). ನೀನು ಯಾವುದಾದರೂ ಮದುವೆ ಮನೆಯಲ್ಲಿ ಊಟಕ್ಕೆ ಹೋದಾಗ ಅಲ್ಲಿ ಪ್ಲೇಟ್ಗಳನ್ನ ಒಂದರ ಮೇಲೆ ಒಂದರಂತೆ ಜೋಡಿಸಿಟ್ಟಿರೋದನ್ನ ನೋಡಿರ್ತೀಯಾ. ಅಲ್ಲಿ ಏನಾಗುತ್ತೆ? ಸರ್ವರ್ ತಂದು ಇಟ್ಟ ಕೊನೆಯ ಪ್ಲೇಟ್ ಅನ್ನೇ ನೀನು ಮೊದಲು ಎತ್ತಿಕೊಳ್ಳಬೇಕು ಅಲ್ವಾ? ಇದನ್ನೇ ಟೆಕ್ನಿಕಲ್ ಭಾಷೆಯಲ್ಲಿ LIFO ಅಂದ್ರೆ 'Last In First Out' ಅಂತಾರೆ. ಅಂದ್ರೆ ಕೊನೆಯಲ್ಲಿ ಬಂದವನೇ ಮೊದಲು ಹೋಗೋದು ಅಂತ ಅರ್ಥ.
ಈ ಸ್ಟ್ಯಾಕ್ ಕಾನ್ಸೆಪ್ಟ್ ನಿನ್ನ ಫೋನ್ನಲ್ಲಿ ಅಥವಾ ಲ್ಯಾಪ್ಟಾಪ್ನಲ್ಲಿ ಎಲ್ಲಿ ಬಳಕೆಯಾಗುತ್ತೆ ಗೊತ್ತಾ? ನೀನು ಏನೋ ಒಂದು ಟೈಪ್ ಮಾಡುವಾಗ ತಪ್ಪು ಮಾಡಿದ್ರೆ 'Undo' (Ctrl + Z) ಮಾಡ್ತೀಯಾ ಅಲ್ವಾ? ಅಲ್ಲಿ ನೀನು ಮಾಡಿದ ಕೊನೆಯ ಕೆಲಸ ಮೊದಲು ಕ್ಯಾನ್ಸಲ್ ಆಗುತ್ತೆ. ಅದುವೇ ಸ್ಟ್ಯಾಕ್ನ ಮ್ಯಾಜಿಕ್. ಹಾಗೆಯೇ ಬ್ರೌಸರ್ನಲ್ಲಿ 'ಬ್ಯಾಕ್' ಬಟನ್ ಒತ್ತಿದಾಗ ನೀನು ಲಾಸ್ಟ್ ನೋಡಿದ ಪೇಜ್ ಮೊದಲು ಬರುತ್ತೆ. ಇವೆಲ್ಲಾ ಸ್ಟ್ಯಾಕ್ ಎಂಬ ಬಟ್ಟೆ ಜೋಡಿಸೋ ವಿಧಾನದ ಅನ್ವಯಗಳು ಅಷ್ಟೇ ತಮ್ಮಾ.
ಇನ್ನು ಎರಡನೆಯ ಮುಖ್ಯ ವಿಧ ಅಂದ್ರೆ 'ಕ್ಯೂ' (Queue). ನೀನು ಬಸ್ ಸ್ಟ್ಯಾಂಡ್ನಲ್ಲಿ ಟಿಕೆಟ್ ತಗೊಳ್ಳೋಕೆ ಅಥವಾ ಸಿನಿಮಾ ಥಿಯೇಟರ್ನಲ್ಲಿ ಲೈನ್ ನಿಂತಿರೋದನ್ನ ಯೋಚನೆ ಮಾಡು. ಅಲ್ಲಿ ಯಾರು ಮೊದಲು ಬರ್ತಾರೋ ಅವರಿಗೆ ಮೊದಲು ಟಿಕೆಟ್ ಸಿಗುತ್ತೆ. ಇದನ್ನ FIFO ಅಂದ್ರೆ 'First In First Out' ಅಂತ ಕರೀತಾರೆ. ಅಂದ್ರೆ ಮೊದಲು ಬಂದವನಿಗೆ ಮೊದಲ ಆದ್ಯತೆ. ಇದು ಸಮಾಜದ ನ್ಯಾಯ ಅಲ್ವಾ? ಹಾಗೆಯೇ ಕಂಪ್ಯೂಟರ್ ಕೂಡ ತನ್ನ ಕೆಲಸಗಳನ್ನ ಇದೇ ಲೈನ್ನಲ್ಲಿ ಜೋಡಿಸಿಕೊಳ್ಳುತ್ತೆ.
ಉದಾಹರಣೆಗೆ, ನೀನು ಒಂದು ಪ್ರಿಂಟರ್ಗೆ ಹತ್ತು ಫೋಟೋ ಪ್ರಿಂಟ್ ಹಾಕಿದ್ದೀಯಾ ಅಂದುಕೋ. ಪ್ರಿಂಟರ್ ಮೊದಲು ನೀನು ಯಾವ ಫೋಟೋ ಕಳಿಸಿದೆಯೋ ಅದನ್ನೇ ಪ್ರಿಂಟ್ ಮಾಡುತ್ತೆ ಹೊರತು ಲಾಸ್ಟ್ ಫೋಟೋನಲ್ಲ. ಅಥವಾ ನೀನು ವಾಟ್ಸಾಪ್ನಲ್ಲಿ ಯಾರಿಗಾದರೂ ಮೆಸೇಜ್ ಕಳಿಸಿದರೆ, ಅದು ಸರ್ವರ್ನಲ್ಲಿ ಕ್ಯೂನಲ್ಲಿ ನಿಂತಿರುತ್ತೆ. ನಿನ್ನ ಇಂಟರ್ನೆಟ್ ಬಂದ ತಕ್ಷಣ ಕ್ಯೂನಲ್ಲಿ ಯಾರು ಮೊದಲಿದ್ದಾರೋ ಅವರ ಮೆಸೇಜ್ ಮೊದಲು ಡೆಲಿವರಿ ಆಗುತ್ತೆ. ಇದನ್ನೇ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಬಳಸಿಕೊಂಡು ಮ್ಯಾನೇಜ್ ಮಾಡ್ತಾರೆ.
ಹೀಗೆ ಅರೇ (Array), ಲಿಂಕ್ಡ್ ಲಿಸ್ಟ್ (Linked List), ಟ್ರೀ (Tree) ಅಂತ ಇನ್ನು ಹಲವಾರು ವಿಧಗಳಿವೆ. ಪ್ರತಿಯೊಂದಕ್ಕೂ ಅದರದ್ದೇ ಆದ ವಿಶೇಷತೆ ಇದೆ. ಅರೇ ಅಂದ್ರೆ ಸಾಲಾಗಿ ಜೋಡಿಸಿಟ್ಟ ಸೀಟುಗಳ ಹಾಗೆ, ಲಿಂಕ್ಡ್ ಲಿಸ್ಟ್ ಅಂದ್ರೆ ಒಬ್ಬರ ಕೈ ಒಬ್ಬರು ಹಿಡಿದು ನಿಂತಿರೋ ರೈಲಿನ ಭೋಗಿಗಳ ಹಾಗೆ. ನಿನಗೆ ಯಾವ ಕೆಲಸಕ್ಕೆ ಯಾವ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಬೆಸ್ಟ್ ಅಂತ ಗೊತ್ತಾದ್ರೆ ನೀನು ಒಬ್ಬ ಅದ್ಭುತ ಡೆವಲಪರ್ ಆದ ಹಾಗೆಯೇ ಲೆಕ್ಕ.
ಈಗ ನಿನ್ನ ಮನಸ್ಸಲ್ಲಿ ಒಂದು ಡೌಟ್ ಇರಬಹುದು. "ತಮ್ಮಾ, ಇಷ್ಟೆಲ್ಲಾ ಟೆನ್ಷನ್ ತಗೊಂಡು ಯಾಕೆ ಜೋಡಿಸಬೇಕು? ಕಂಪ್ಯೂಟರ್ ಮೆಮೊರಿ ದೊಡ್ಡದಿದೆ ಅಲ್ವಾ?" ಅಂತ. ಇಲ್ಲೇ ಇರೋದು ಅಸಲಿ ಗೇಮ್. ಡೇಟಾ ಹೆಚ್ಚಾದಂತೆ ಅದನ್ನ ಹ್ಯಾಂಡಲ್ ಮಾಡೋದು ಕಷ್ಟ ಆಗುತ್ತೆ. ಒಂದು ಲಕ್ಷ ಹೆಸರುಗಳಿರೋ ಲಿಸ್ಟ್ನಲ್ಲಿ ಒಬ್ಬನ ಹೆಸರನ್ನು ಹುಡುಕೋಕೆ ನಿನ್ನ ಸಾಫ್ಟ್ವೇರ್ ಒಂದು ಗಂಟೆ ಟೈಮ್ ತಗೊಂಡ್ರೆ ಯಾರೂ ಅದನ್ನ ಯೂಸ್ ಮಾಡಲ್ಲ. ಸರಿಯಾದ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಬಳಸಿದರೆ ಅದೇ ಕೆಲಸವನ್ನ ಮಿಲಿ ಸೆಕೆಂಡ್ಗಳಲ್ಲಿ ಮಾಡಬಹುದು.
ಅದಕ್ಕೇ ನೋಡು, ದೊಡ್ಡ ದೊಡ್ಡ ಐಟಿ ಕಂಪನಿಗಳಾದ ಗೂಗಲ್, ಅಮೆಜಾನ್ ಅಥವಾ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಇಂಟರ್ವ್ಯೂನಲ್ಲಿ ಮೊದಲು ಕೇಳೋದೇ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಬಗ್ಗೆ. ಅವರಿಗೆ ನಿನ್ನ ಕೋಡಿಂಗ್ ಭಾಷೆಗಿಂತ ಹೆಚ್ಚಾಗಿ ನಿನ್ನ ಲಾಜಿಕ್ ಬಗ್ಗೆ ಆಸಕ್ತಿ ಇರುತ್ತೆ. ಒಂದು ಸಮಸ್ಯೆಗೆ ನೀನು ಯಾವ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಚೂಸ್ ಮಾಡ್ತೀಯಾ ಅನ್ನೋದರ ಮೇಲೆ ನಿನ್ನ ಬುದ್ಧಿವಂತಿಕೆ ಅಳೆಯುತ್ತಾರೆ. ನೀನು ಎಷ್ಟು ಎಫಿಷಿಯೆಂಟ್ ಆಗಿ ಡೇಟಾ ಆರ್ಗನೈಸ್ ಮಾಡ್ತೀಯೋ ಅಷ್ಟು ಕಡಿಮೆ ಬ್ಯಾಟರಿ ಮತ್ತು ಕಡಿಮೆ ಇಂಟರ್ನೆಟ್ ನಿನ್ನ ಆಪ್ ಬಳಸುತ್ತೆ.
ಇಂಟರ್ವ್ಯೂನಲ್ಲಿ ನಿನಗೆ ಒಂದು ಸನ್ನಿವೇಶ ಕೊಡ್ತಾರೆ. "ನಿನಗೆ ಹತ್ತು ಕೋಟಿ ಡೇಟಾ ಕೊಟ್ಟಿದ್ದೀನಿ, ಇದರಲ್ಲಿ ಡೂಪ್ಲಿಕೇಟ್ ಇರೋದನ್ನ ಕಂಡುಹಿಡಿ" ಅಂತಾರೆ. ಆಗ ನೀನು ಸ್ಟ್ಯಾಕ್ ಯೂಸ್ ಮಾಡ್ತೀಯಾ ಅಥವಾ ಹ್ಯಾಶ್ ಮ್ಯಾಪ್ ಯೂಸ್ ಮಾಡ್ತೀಯಾ ಅನ್ನೋದು ನಿನ್ನ ಕೆರಿಯರ್ ಡಿಸೈಡ್ ಮಾಡುತ್ತೆ. ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ಅಂದ್ರೆ ಕೇವಲ ಸಬ್ಜೆಕ್ಟ್ ಅಲ್ಲ, ಅದು ನಿನ್ನ ತರ್ಕ ಶಕ್ತಿಯನ್ನ ಹೆಚ್ಚಿಸೋ ಒಂದು ವ್ಯಾಯಾಮ. ಇದು ಅರ್ಥ ಆಗದಿದ್ರೆ ಕೋಡಿಂಗ್ ಮಾಡೋದು ಅಂಧಕಾರದಲ್ಲಿ ಕಪ್ಪು ಬೆಕ್ಕನ್ನ ಹುಡುಕಿದ ಹಾಗೆ ಆಗುತ್ತೆ.
ಹಾಗಾಗಿ ತಮ್ಮಾ, ಇವತ್ತಿನಿಂದಲೇ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಕಲಿಯುವಾಗ ಕೇವಲ ಸಿಂಟ್ಯಾಕ್ಸ್ ಕಲಿಯಬೇಡ. ಅದರ ಹಿಂದೆ ಡೇಟಾ ಹೇಗೆ ಕೆಲಸ ಮಾಡ್ತಿದೆ ಅಂತ ಗಮನಿಸು. ನಿನ್ನ ಕಬೋರ್ಡ್ನ ಬಟ್ಟೆಗಳನ್ನ ನೀನು ಇವತ್ತು ಹೇಗೆ ಜೋಡಿಸ್ತೀಯೋ, ಅದೇ ರೀತಿ ನಿನ್ನ ಪ್ರೋಗ್ರಾಮ್ನ ಡೇಟಾವನ್ನ ಜೋಡಿಸೋಕೆ ಶುರು ಮಾಡು. ಆಗ ನೋಡು ಇಂಟರ್ವ್ಯೂ ಅನ್ನೋದು ನಿನಗೆ ಒಂದು ಮಗು ಆಟದ ತರ ಅನ್ಸುತ್ತೆ. ಪ್ರತಿಯೊಂದು ಬಟ್ಟೆಗೂ (ಡೇಟಾ) ಒಂದು ಜಾಗ ಇರಲಿ, ಪ್ರತಿಯೊಂದು ಜಾಗಕ್ಕೂ ಒಂದು ಕಾರಣ ಇರಲಿ.
ತಮ್ಮಾ, ನೀನು ಇದುವರೆಗೆ ನಿನ್ನ ಪ್ರಾಜೆಕ್ಟ್ಗಳಲ್ಲಿ ಸ್ಟ್ಯಾಕ್ ಅಥವಾ ಕ್ಯೂ ಕಾನ್ಸೆಪ್ಟ್ ಅನ್ನ ಎಲ್ಲಾದರೂ ಬಳಸಿದ್ದೀಯಾ? ಅಥವಾ ಇನ್ಯಾವುದಾದರೂ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ ನಿನಗೆ ಕಾಟ ಕೊಡ್ತಿದೆಯಾ? ಕೆಳಗೆ ಕಾಮೆಂಟ್ ಮಾಡಿ ತಿಳಿಸು ಗುರು! ಈ ಮಾಹಿತಿ ನಿನ್ನ ಫ್ರೆಂಡ್ಸ್ಗೂ ಹೆಲ್ಪ್ ಆಗಲಿ ಅಂತ ಶೇರ್ ಮಾಡೋದನ್ನ ಮರಿಬೇಡ.
0 ಕಾಮೆಂಟ್ಗಳು
ಇನ್ನೂ ಯಾವುದೇ ಕಾಮೆಂಟ್ಗಳಿಲ್ಲ.
ಕಾಮೆಂಟ್ ಮಾಡಿ
ಚಂದಾದಾರರಾಗಿ
ಬ್ರೇಕಿಂಗ್ ನ್ಯೂಸ್, ಟ್ರೆಂಡಿಂಗ್ ಸ್ಟೋರಿ ಆಳವಾದ ವಿಶ್ಲೇಷಣೆಗಳನ್ನು ನಿರಂತರವಾಗಿ ಪಡೆಯಲು ಉಚಿತವಾಗಿ ಚಂದಾದಾರರಾಗಿ.