Sieve C++ Parallel Programming System
ಸೀವ್ ಸಿ + + ಪ್ಯಾರಲಲ್ ಪ್ರೊಗ್ರಾಮಿಂಗ್ ಸಿಸ್ಟಮ್ ಒಂದು ಸಿ + + ಕಂಪೈಲರ್ ಮತ್ತು ಕೋಡೆಪ್ಲೇ ವಿನ್ಯಾಸಗೊಳಿಸಿದ ಮತ್ತು ಬಿಡುಗಡೆ ಮಾಡಿದ ಸಮಾನಾಂತರ ರನ್ಟೈಮ್ ಆಗಿದ್ದು, ಇದು ಬಹು-ಪ್ರೊಸೆಸರ್ ಅಥವಾ ಬಹು-ಕೋರ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಕೋಡ್ನ ಸಮಾನಾಂತರತೆಯನ್ನು ಸರಳಗೊಳಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ. ಇದು ಓಪನ್ಎಂಪಿ, ರ್ಯಾಪಿಡ್ ಮೈಂಡ್ ಡೆವಲಪ್ಮೆಂಟ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಮತ್ತು ಥ್ರೆಡಿಂಗ್ ಬಿಲ್ಡಿಂಗ್ ಬ್ಲಾಕ್ಸ್ (ಟಿಬಿಬಿ) ನಂತಹ ಇತರ ಪ್ರಸಿದ್ಧ ಸಮಾನಾಂತರ ವಿಧಾನಗಳಿಗೆ ಪರ್ಯಾಯವಾಗಿದೆ. ಸೀವ್ ಒಂದು ಸಿ + + ಕಂಪೈಲರ್ ಆಗಿದ್ದು, ಇದು ಸೀವ್ ಮಾರ್ಕರ್ಗಳೊಂದಿಗೆ ಟಿಪ್ಪಣಿ ಮಾಡಲಾದ ಸರಣಿ ಕೋಡ್ನ ವಿಭಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಮಾನಾಂತರಗೊಳಿಸುತ್ತದೆ. ಪ್ರೋಗ್ರಾಮರ್ ಅವರು ಲೆಕ್ಸಿಕಲ್ ವ್ಯಾಪ್ತಿಯೊಳಗೆ ಸಮಾನಾಂತರಗೊಳಿಸಲು ಬಯಸುವ ಕೋಡ್ ಅನ್ನು ಸುತ್ತುತ್ತಾರೆ, ಇದನ್ನು 'ಜರಡಿ' ಎಂದು ಟ್ಯಾಗ್ ಮಾಡಲಾಗಿದೆ. ಸಾಮಾನ್ಯವಾಗಿ 'ಜರಡಿ ಬ್ಲಾಕ್' ಎಂದು ಕರೆಯಲಾಗುವ ಈ ವ್ಯಾಪ್ತಿಯೊಳಗೆ, ಕೆಲವು ನಿಯಮಗಳು ಅನ್ವಯಿಸುತ್ತವೆಃ ಜರಡಿ ಬ್ಲಾಕ್ನೊಳಗಿನ ಎಲ್ಲಾ ಅಡ್ಡಪರಿಣಾಮಗಳು ವ್ಯಾಪ್ತಿಯ ಅಂತ್ಯದವರೆಗೆ ವಿಳಂಬವಾಗುತ್ತವೆ. ಸೀವ್ ಬ್ಲಾಕ್ ವ್ಯಾಪ್ತಿಯ ಹೊರಗೆ ಘೋಷಿಸಲಾದ ದತ್ತಾಂಶಕ್ಕೆ ಯಾವುದೇ ಮಾರ್ಪಾಡುಗಳನ್ನು ಅಡ್ಡಪರಿಣಾಮಗಳು ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಜರಡಿ ಅಥವಾ ತಕ್ಷಣದೊಂದಿಗೆ ಟಿಪ್ಪಣಿ ಮಾಡಲಾದ ಕಾರ್ಯಗಳನ್ನು ಮಾತ್ರ ಕರೆಯಬಹುದು. ಅಡ್ಡಪರಿಣಾಮಗಳ ವಿಳಂಬವು ಅನೇಕ ಸಣ್ಣ ಅವಲಂಬನೆಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ, ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಸ್ವಯಂಚಾಲಿತ ಸಮಾನಾಂತರತೆಯನ್ನು ತಡೆಯುತ್ತದೆ. ಡೈರೆಕ್ಟ್ ಮೆಮೊರಿ ಆಕ್ಸೆಸ್ (ಡಿ. ಎಂ. ಎ.) ನಂತಹ ವಿವಿಧ ದತ್ತಾಂಶ ಚಲನೆ ಕಾರ್ಯವಿಧಾನಗಳ ಉತ್ತಮ ಬಳಕೆಗೆ ಅನುವು ಮಾಡಿಕೊಡಲು ಕಂಪೈಲರ್ನಿಂದ ರೀಡ್ಸ್ ಮತ್ತು ರೈಟ್ಸ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಮರುಕ್ರಮಗೊಳಿಸಬಹುದು. ಇದರ ಜೊತೆಗೆ, ಅಲಿಯಾಸ್ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ದತ್ತಾಂಶ ಹರಿವಿನ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಸರಳಗೊಳಿಸಬಹುದು. ಕಂಪೈಲರ್ ನಂತರ ಕೋಡ್ ಅನ್ನು ಜರಡಿ ಬ್ಲಾಕ್ನೊಳಗೆ ಸುಲಭವಾಗಿ ವಿಭಜಿಸಬಹುದು, ಸಮಾನಾಂತರತೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು. ಮೆಮೊರಿ ಕಾನ್ಫಿಗರೇಶನ್ ಸ್ಕೋಪ್ಗಳ ಈ ಬೇರ್ಪಡಿಸುವಿಕೆಯು ಏಕರೂಪವಲ್ಲದ ಮೆಮೊರಿ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳಲ್ಲಿ ಜರಡಿ ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸಬಹುದು ಎಂದರ್ಥ. ಪ್ಲೇಸ್ಟೇಷನ್ 3ರಲ್ಲಿ ಬಳಸಲಾಗುವ ಸೆಲ್ ಮೈಕ್ರೊಪ್ರೊಸೆಸರ್ನಂತಹ ಮಲ್ಟಿ-ಕೋರ್ ಸಿಪಿಯುಗಳು ಈ ರೀತಿಯವು, ಇದರಲ್ಲಿ ವೇಗದ ಕೋರ್ಗಳು ಸ್ಥಳೀಯ ನೆನಪುಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ, ಅದನ್ನು ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಅಂತರ್ಗತವಾಗಿರುವ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳಲು ಬಳಸಬೇಕು. ಇದು x86 ನಂತಹ ಶೇರ್ಡ್ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಅಂದರೆ ಇದು ವಿವಿಧ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ವಿವಿಧ ನೆನಪುಗಳು ಮತ್ತು ಸಂಸ್ಕರಣಾ ಅಂಶಗಳ ಶ್ರೇಣಿವ್ಯವಸ್ಥೆಯನ್ನು ಹೊಂದಿರುವ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಜರಡಿ ಬ್ಲಾಕ್ಗಳನ್ನು ಸಹ ನೆಸ್ಟ್ ಮಾಡಬಹುದು. ಸಮಾನಾಂತರತೆ ಮತ್ತು ಸ್ಕೇಲೆಬಿಲಿಟಿ ಜರಡಿ ಕಂಪೈಲರ್ ಒಂದು ಜರಡಿ ಬ್ಲಾಕ್ನೊಳಗೆ ಕೋಡ್ ಅನ್ನು ಸೂಚ್ಯವಾಗಿ ಅಥವಾ ಸ್ಪಷ್ಟವಾಗಿ 'ಸ್ಪ್ಲಿಥೇರ್' ಹೇಳಿಕೆಯ ಮೂಲಕ ತುಂಡುಗಳಾಗಿ ವಿಂಗಡಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಈ ಕೆಳಗಿನ ಉದಾಹರಣೆಯು ಲೂಪ್ ಅನ್ನು ಸಮಾನಾಂತರಗೊಳಿಸುವುದನ್ನು ತೋರಿಸುತ್ತದೆಃ ಜರಡಿ {ಫಾರ್ (ಇಟರೇಟರ್ i (0); i <ಉದ್ದ; + + i) {R [i] = A [i] * B [i] ಸ್ಪ್ಲಿಥೆರೆ;}} ಕಂಪೈಲರ್ ಸೂಚ್ಯವಾಗಿ ಫಾರ್ ಲೂಪ್ ಕನ್ಸ್ಟ್ರಕ್ಟ್ ಬಾಡಿಯ ಮೇಲೆ ಸ್ಪ್ಲಿಟ್ಪಾಯಿಂಟ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ, ಪ್ರವೇಶ ಬಿಂದುವಾಗಿ. ಅಂತೆಯೇ ಒಂದನ್ನು ನಿರ್ಗಮನ ಬಿಂದುವಾಗಿ ಸೇರಿಸಲಾಗುತ್ತದೆ. ಜರಡಿ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ, ಜರಡಿ ಬ್ಲಾಕ್ ವ್ಯಾಪ್ತಿಯ ಸ್ಥಳೀಯ ಅಸ್ಥಿರಗಳು ಮಾತ್ರ ಅವಲಂಬನೆಯನ್ನು ಹೊಂದಿರಬಹುದು. ಆದಾಗ್ಯೂ, ಈ ಅವಲಂಬನೆಗಳು ವಿಭಜಿತ ಬಿಂದುಗಳನ್ನು ದಾಟಬಾರದು; ಅವು ಕಂಪೈಲರ್ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತವೆ. ಈ ಲೂಪ್ ಅನ್ನು ಸಮಾನಾಂತರಗೊಳಿಸಲು, ಪ್ರಮಾಣಿತ ಪೂರ್ಣಾಂಕ ಲೂಪಿಂಗ್ ಕೌಂಟರ್ನ ಸ್ಥಳದಲ್ಲಿ ವಿಶೇಷ 'ಇಟರೇಟರ್' ವರ್ಗವನ್ನು ಬಳಸಬಹುದು. ಇದು ಸಮಾನಾಂತರಗೊಳಿಸಲು ಸುರಕ್ಷಿತವಾಗಿದೆ, ಮತ್ತು ಪ್ರೋಗ್ರಾಮರ್ ಇಚ್ಛೆಯಂತೆ ಹೊಸ ಇಟರೇಟರ್ ತರಗತಿಗಳನ್ನು ರಚಿಸಲು ಮುಕ್ತರಾಗಿದ್ದಾರೆ. ಈ ಇಟರೇಟರ್ ತರಗತಿಗಳ ಜೊತೆಗೆ, ಪ್ರೋಗ್ರಾಮರ್ 'ಅಕ್ಯುಮ್ಯುಲೇಟರ್ಗಳು' ಎಂಬ ತರಗತಿಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸ್ವತಂತ್ರರಾಗಿರುತ್ತಾರೆ, ಇವುಗಳನ್ನು ಕಡಿತ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಇಟರೇಟರ್ ತರಗತಿಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ವಿಧಾನವು ಸ್ಕೇಲೆಬಿಲಿಟಿಗೆ ವಿವಿಧ ಮಾರ್ಗಗಳನ್ನು ತೆರೆಯುತ್ತದೆ. ಜರಡಿ ಸಮಾನಾಂತರ ರನ್ಟೈಮ್ ಗುರಿ ವೇದಿಕೆಯಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ ಕ್ರಿಯಾತ್ಮಕ ಊಹಾತ್ಮಕ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ. ಇದು ಉತ್ತಮ ವೇಗವರ್ಧನೆಗಳನ್ನು ನೀಡಬಹುದು, ಆದಾಗ್ಯೂ ಒಂದೇ ಕೋರ್ ಯಂತ್ರದಲ್ಲಿ ಓಡುವುದರಿಂದ ಓವರ್ಹೆಡ್ಗಳು ಉಂಟಾಗಬಹುದು. ನಿರ್ಧಾರವಾದವು ಜರಡಿ ವ್ಯವಸ್ಥೆಯ ಒಂದು ಅಸಾಮಾನ್ಯ ಲಕ್ಷಣವಾಗಿದೆ. ಬಹು ಕೋರ್ ಯಂತ್ರದಲ್ಲಿ ಸಮಾನಾಂತರ ಸೀವ್ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದರೆ ದೋಷವು ಉಂಟಾಗುತ್ತದೆ, ಡೀಬಗ್ಗಿಂಗ್ಗೆ ಸಹಾಯ ಮಾಡಲು ಒಂದೇ ಕೋರ್ ಮೇಲೆ ಚಲಿಸಿದಾಗ ದೋಷವು ಕಣ್ಮರೆಯಾಗುವುದಿಲ್ಲ. ಇದು ಓಟದ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ತೆಗೆದುಹಾಕುವ ಪ್ರಯೋಜನವನ್ನು ಹೊಂದಿದೆ, ಇದು ಏಕಕಾಲೀನ ಕಾರ್ಯಕ್ರಮಗಳಲ್ಲಿ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ದೋಷಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ಜರಡಿ ಬ್ಲಾಕ್ ಒಳಗೆ ಏಕಕಾಲೀನ ನಿಯಂತ್ರಣ ರಚನೆಗಳನ್ನು ಪರಿಗಣಿಸುವ ಅಗತ್ಯವನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಅಭಿವೃದ್ಧಿ ಸಮಯವನ್ನು ವೇಗಗೊಳಿಸಬಹುದು ಮತ್ತು ಸುರಕ್ಷಿತ ಕೋಡ್ಗೆ ಕಾರಣವಾಗಬಹುದು. ಬೆಂಬಲಿತ ವ್ಯವಸ್ಥೆಗಳು ಈ ವ್ಯವಸ್ಥೆಯನ್ನು ಡಿ. ಎಂ. ಎ. ಇಂಜಿನ್ಗಳು ಅಥವಾ ಅಂತಹುದೇ ಮೆಮೊರಿ ವರ್ಗಾವಣೆ ಮಾದರಿಗಳ ಮೂಲಕ ಸಂಪರ್ಕಿಸಲಾದ ಸ್ಥಳೀಯ ಮೆಮೊರಿಗಳನ್ನು ಹೊಂದಿರುವ ಏಕರೂಪದ ಅಥವಾ ವೈವಿಧ್ಯಮಯ ಸಿ. ಪಿ. ಯು. ಕೋರ್ಗಳನ್ನು ಹೊಂದಿರುವ ಶ್ರೇಣೀಕೃತ ಆಧಾರಿತ ವ್ಯವಸ್ಥೆಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಜರಡಿ ಬಹು-ಕೋರ್ x86 ವ್ಯವಸ್ಥೆಗಳು, ಏಜಿಯಾ ಫಿಸಿಕ್ಸ್ ಫಿಸಿಕ್ಸ್ ಪ್ರೊಸೆಸಿಂಗ್ ಯುನಿಟ್ ಮತ್ತು ಐಬಿಎಂ ಸೆಲ್ ಮೈಕ್ರೊಪ್ರೊಸೆಸರ್ನಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದು ತೋರಿಸಲಾಗಿದೆ. ನಿರ್ದಿಷ್ಟ ಗುರಿ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗೆ ಕಂಪೈಲರ್ ಕೋಡ್ ಜನರೇಟರ್ ಲಭ್ಯವಿಲ್ಲದಿದ್ದರೆ ಎಎನ್ಎಸ್ಐ ಸಿ ಅನ್ನು ಉತ್ಪಾದಿಸಲಾಗುತ್ತದೆ. ಇದು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಿ ಕಂಪೈಲೇಷನ್ ಟೂಲ್ಕಿಟ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ವಯಂ ಸಮಾನಾಂತರಗೊಳಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಸಾಫ್ಟ್ವೇರ್ ಟ್ರಾನ್ಸಾಕ್ಷನಲ್ ಮೆಮೊರಿ ಅಲಿಯಾಸ್ ವಿಶ್ಲೇಷಣೆ ಓಪನ್ಎಂಪಿ ಥ್ರೆಡಿಂಗ್ ಬಿಲ್ಡಿಂಗ್ ಬ್ಲಾಕ್ಸ್ (ಟಿಬಿಬಿ) ಸಿಲ್ಕ್/ಸಿಲ್ಕ್ ಪ್ಲಸ್ ಸ್ಪೆಕ್ಯುಲೇಟಿವ್ ಎಕ್ಸಿಕ್ಯುಶನ್ ಉಲ್ಲೇಖಗಳು ಸೀವ್ ಸಿ + + ಪ್ರೋಗ್ರಾಂಗಳ ಸ್ವಯಂಚಾಲಿತ-ಸಮಾನಾಂತರತೆ ಅಲಸ್ಟೇರ್ ಡೊನಾಲ್ಡ್ಸನ್, ಆಂಟನ್ ಲೋಕ್ಮೊಟೊವ್, ಕಾಲಿನ್ ರಿಲೆ, ಆಂಡ್ರ್ಯೂ ಕುಕ್. ಪ್ರೊಸೀಡಿಂಗ್ಸ್ ಆಫ್ ದಿ ಯೂರೋ-ಪಾರ್ ವರ್ಕ್ಶಾಪ್ ಹೈಲಿ ಪ್ಯಾರಲಲ್ ಪ್ರೊಸೆಸಿಂಗ್ ಆನ್ ಎ ಚಿಪ್ (HPPC '07), ರೆನ್ನೆಸ್, ಫ್ರಾನ್ಸ್, ಆಗಸ್ಟ್ 2007. ಲೆಕ್ಚರ್ ನೋಟ್ಸ್ ಇನ್ ಕಂಪ್ಯೂಟರ್ ಸೈನ್ಸ್ 4854,2007. ವಿಳಂಬವಾದ ಅಡ್ಡಪರಿಣಾಮಗಳು ಬಹು-ಕೋರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತವೆ ಆಂಟನ್ ಲೊಕ್ಮೊಟೊವ್, ಅಲನ್ ಮೈಕ್ರಾಫ್ಟ್, ಆಂಡ್ರ್ಯೂ ರಿಚರ್ಡ್ಸ್. ಪ್ರೊಸೀಡಿಂಗ್ಸ್ ಆಫ್ ದಿ 13ನೇ ಇಂಟರ್ನ್ಯಾಷನಲ್ ಯುರೋ-ಪಾರ್ ಕಾನ್ಫರೆನ್ಸ್, ರೆನ್ನೆಸ್, ಫ್ರಾನ್ಸ್, ಆಗಸ್ಟ್ 2007. ಲೆಕ್ಚರ್ ನೋಟ್ಸ್ ಇನ್ ಕಂಪ್ಯೂಟರ್ ಸೈನ್ಸ್ 4641,641-650,2007. ಜರಡಿ ಎಸ್. ಲಿಂಡ್ಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ಣಾಯಕ ಘೋಷಣಾತ್ಮಕ ಏಕಕಾಲೀನ ಕರೆನ್ಸಿಯನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಲಾಗುತ್ತಿದೆ. ಇನ್ ಪ್ರೊಸೀಡಿಂಗ್ಸ್ ಆಫ್ ಡಿಎಎಂಪಿ 2007: ಡಿಕ್ಲರೇಟಿವ್ ಆಸ್ಪೆಕ್ಟ್ಸ್ ಆಫ್ ಮಲ್ಟಿಕೋರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ನೈಸ್ ಕುರಿತ ಕಾರ್ಯಾಗಾರ, ಫ್ರಾನ್ಸ್, ಜನವರಿ 2007. ಕೋಡ್ಪ್ಲೇ ಸೀವ್ ಸಿ + + ಪ್ಯಾರಲಲ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಸಿಸ್ಟಮ್ ಎ. ರಿಚರ್ಡ್ಸ್. ಶ್ವೇತಪತ್ರ, 2006. ಮೈಕ್ರೋಗ್ರಿಡ್ 2006ರಲ್ಲಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾದ ಕೋಡ್ಪ್ಲೇ ಸೀವ್ ಸಿ + + ಸಿಸ್ಟಮ್ ಪ್ರಸ್ತುತಿ ಸ್ಕಾಟ್ ಮೆಕೆಂಜಿ. ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಕೋಡ್ಪ್ಲೇ ಸೀವ್ ವೆಬ್ಸೈಟ್ ಸಮವರ್ತಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ಅಪ್ಲಿಕೇಶನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಇಂಟರ್ಫೇಸ್ಗಳು ಸಿ + + ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷಾ ಕುಟುಂಬ