C--
ಸಿ-(ಸಿ ಮೈನಸ್ ಮೈನಸ್ ಎಂದು ಉಚ್ಚರಿಸಲಾಗುತ್ತದೆ) ಸಿ-ರೀತಿಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಾಗಿದ್ದು, ಇದನ್ನು ಮಾನವ ಪ್ರೋಗ್ರಾಮರ್ಗಳು ಬರೆಯುವ ಬದಲು ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಗಳಿಗೆ ಕಂಪೈಲರ್ಗಳಿಂದ ಉತ್ಪಾದಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಇದನ್ನು ಕ್ರಿಯಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಸಂಶೋಧಕರಾದ ಸೈಮನ್ ಪೇಟನ್ ಜೋನ್ಸ್ ಮತ್ತು ನಾರ್ಮನ್ ರಾಮ್ಸೇ ರಚಿಸಿದ್ದಾರೆ. ಇತರ ಅನೇಕ ಮಧ್ಯಂತರ ಭಾಷೆಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಇದನ್ನು ಸರಳವಾದ ಎಎಸ್ಸಿಐಐ ಪಠ್ಯದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ, ಬೈಟೆಕೋಡ್ ಅಥವಾ ಇತರ ಬೈನರಿ ಸ್ವರೂಪದಲ್ಲಲ್ಲ. ಎರಡು ಮುಖ್ಯ ಶಾಖೆಗಳಿವೆಃ ಸಿ-, ಮೂಲ ಶಾಖೆ, ಅಂತಿಮ ಆವೃತ್ತಿ 2 ಅನ್ನು ಮೇ 2005 ರಲ್ಲಿ ಬಿಡುಗಡೆ ಮಾಡಲಾಯಿತು, ಸಿಎಮ್ಎಂ, ಗ್ಲ್ಯಾಸ್ಗೋ ಹಾಸ್ಕೆಲ್ ಕಂಪೈಲರ್ (ಜಿಎಚ್ಸಿ) ಡಿಸೈನ್ ಸಿ ಯಲ್ಲಿ ಮಧ್ಯಂತರ ಪ್ರಾತಿನಿಧ್ಯವಾಗಿ (ಐಆರ್) ಸಕ್ರಿಯವಾಗಿ ಬಳಸಲಾಗುವ ಫೋರ್ಕ್-ಇದು "ಪೋರ್ಟಬಲ್ ಅಸೆಂಬ್ಲಿ ಲಾಂಗ್ವೇಜ್" ಆಗಿದ್ದು, ಉತ್ತಮ-ಗುಣಮಟ್ಟದ ಯಂತ್ರ ಸಂಕೇತವನ್ನು ಉತ್ಪಾದಿಸುವ ಕಂಪೈಲರ್ಗಳ ಅನುಷ್ಠಾನವನ್ನು ಸುಲಭಗೊಳಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಸಿ-ಕಂಪೈಲರ್ಗೆ ಕಡಿಮೆ-ಮಟ್ಟದ ಕೋಡ್-ಉತ್ಪಾದನೆ ಮತ್ತು ಪ್ರೋಗ್ರಾಂ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ನಿಯೋಜಿಸುವ ಮೂಲಕ ಇದನ್ನು ಮಾಡಲಾಗುತ್ತದೆ. ಭಾಷೆಯ ವಾಕ್ಯರಚನೆಯು ವೈವಿಧ್ಯಮಯ ಕಾರ್ಯಗಳು, ಪಾಯಿಂಟರ್ ವಾಕ್ಯರಚನೆಯಂತಹ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಿ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತದೆ ಅಥವಾ ಬದಲಾಯಿಸುತ್ತದೆ, ಮತ್ತು ಸಿ ಪ್ರಕಾರದ ವ್ಯವಸ್ಥೆಯ ಅಂಶಗಳನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತದೆ, ಏಕೆಂದರೆ ಅವು ಸಿ-ಯ ಅಗತ್ಯ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ ಮತ್ತು ಕೋಡ್-ಉತ್ಪಾದನೆಯ ಸುಲಭತೆಗೆ ಅಡ್ಡಿಯಾಗುತ್ತವೆ. ಭಾಷೆಯ ಹೆಸರು ತಮಾಷೆಯಾಗಿದ್ದು, ಸಿ-- ಎಂಬುದು ಸಿ ಯ ಕಡಿಮೆ ರೂಪವಾಗಿದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ, ಅದೇ ರೀತಿಯಲ್ಲಿ "ಸಿ + +" ಅನ್ನು ಸಿ ಯ ಸುಧಾರಿತ ಆವೃತ್ತಿಯನ್ನು ಸೂಚಿಸಲು ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ. (ಸಿ ಯಲ್ಲಿ,-- ಮತ್ತು + + ಎಂದರೆ ಅನುಕ್ರಮವಾಗಿ "ಇಳಿಕೆ" ಮತ್ತು "ಹೆಚ್ಚಳ".) ಸಿ-ಮೇಲಿನ ಕೆಲಸವು 1990ರ ದಶಕದ ಕೊನೆಯಲ್ಲಿ ಪ್ರಾರಂಭವಾಯಿತು. ಕಸ್ಟಮ್ ಕೋಡ್ ಜನರೇಟರ್ ಅನ್ನು ಬರೆಯುವುದು ಸ್ವತಃ ಒಂದು ಸವಾಲಾಗಿರುವುದರಿಂದ, ಮತ್ತು ಆ ಸಮಯದಲ್ಲಿ ಸಂಶೋಧಕರಿಗೆ ಲಭ್ಯವಿದ್ದ ಕಂಪೈಲರ್ ಬ್ಯಾಕೆಂಡ್ಗಳು ಸಂಕೀರ್ಣವಾಗಿದ್ದವು ಮತ್ತು ಕಳಪೆಯಾಗಿ ದಾಖಲಾಗಿದ್ದವು, ಹಲವಾರು ಯೋಜನೆಗಳು ಸಿ ಕೋಡ್ ಅನ್ನು ರಚಿಸುವ ಕಂಪೈಲರ್ಗಳನ್ನು ಬರೆದಿದ್ದವು (ಉದಾಹರಣೆಗೆ, ಮೂಲ ಮಾಡ್ಯುಲಾ-3 ಕಂಪೈಲರ್). ಆದಾಗ್ಯೂ, ಕ್ರಿಯಾತ್ಮಕ ಭಾಷೆಗಳಿಗೆ ಸಿ ಒಂದು ಕಳಪೆ ಆಯ್ಕೆಯಾಗಿದೆಃ ಇದು ಟೈಲ್-ಕಾಲ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಖಾತರಿಪಡಿಸುವುದಿಲ್ಲ, ಅಥವಾ ನಿಖರವಾದ ಕಸ ಸಂಗ್ರಹಣೆ ಅಥವಾ ಪರಿಣಾಮಕಾರಿ ಎಕ್ಸೆಪ್ಶನ್ ನಿರ್ವಹಣೆಯನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಸಿ-ಈ ಎಲ್ಲವನ್ನು ಬೆಂಬಲಿಸುವ ಸಿ ಗೆ ಬಿಗಿಯಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಸರಳ ಪರ್ಯಾಯವಾಗಿದೆ. ಇದರ ಅತ್ಯಂತ ನವೀನ ವೈಶಿಷ್ಟ್ಯವೆಂದರೆ ರನ್-ಟೈಮ್ ಇಂಟರ್ಫೇಸ್ ಆಗಿದ್ದು, ಇದು ಪೋರ್ಟಬಲ್ ಕಸ ಸಂಗ್ರಾಹಕರು, ಎಕ್ಸೆಪ್ಶನ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳು ಮತ್ತು ಯಾವುದೇ ಸಿ-ಕಂಪೈಲರ್ನೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಇತರ ರನ್-ಟೈಮ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬರೆಯಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಸಿ-ಯ ಮೊದಲ ಆವೃತ್ತಿಯನ್ನು 1998ರ ಏಪ್ರಿಲ್ನಲ್ಲಿ ಎಂ. ಎಸ್. ಆರ್. ಎ. ಪತ್ರಿಕೆಯಾಗಿ ಬಿಡುಗಡೆ ಮಾಡಲಾಯಿತು, ಅದರೊಂದಿಗೆ 1999ರ ಜನವರಿಯಲ್ಲಿ ಕಸ ಸಂಗ್ರಹದ ಬಗೆಗಿನ ಪತ್ರಿಕೆಯೂ ಬಿಡುಗಡೆಯಾಯಿತು. ಪರಿಷ್ಕೃತ ಕೈಪಿಡಿಯನ್ನು 1999ರ ಮೇ ತಿಂಗಳಲ್ಲಿ ಎಚ್. ಟಿ. ಎಂ. ಎಲ್ ರೂಪದಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಯಿತು. ನಾರ್ಮನ್ ರಾಮ್ಸೇ ("ಪ್ರಸ್ತಾವಿತ ಬದಲಾವಣೆಗಳು") ಮತ್ತು ಕ್ರಿಶ್ಚಿಯನ್ ಲಿಂಡಿಗ್ ("ಎ ನ್ಯೂ ಗ್ರಾಮರ್") 2000 ರಲ್ಲಿ ಪ್ರಸ್ತಾಪಿಸಿದ ಎರಡು ಪ್ರಮುಖ ಬದಲಾವಣೆಗಳು ಸಿ-ಆವೃತ್ತಿ 2 ಕ್ಕೆ ಕಾರಣವಾದವು, ಇದನ್ನು 2004 ರ ಸುಮಾರಿಗೆ ಅಂತಿಮಗೊಳಿಸಲಾಯಿತು ಮತ್ತು 2005 ರಲ್ಲಿ ಅಧಿಕೃತವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡಲಾಯಿತು. ಟೈಪ್ ಸಿಸ್ಟಮ್ ಸಿ-ಟೈಪ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಗಳು ಹೇರಿದ ಸಂಪ್ರದಾಯಗಳಿಗಿಂತ ಹಾರ್ಡ್ವೇರ್ ವಿಧಿಸಿದ ನಿರ್ಬಂಧಗಳನ್ನು ಪ್ರತಿಬಿಂಬಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ರಿಜಿಸ್ಟರ್ ಅಥವಾ ಮೆಮೊರಿಯಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಮೌಲ್ಯವು ಕೇವಲ ಒಂದು ಪ್ರಕಾರವನ್ನು ಹೊಂದಿರಬಹುದುಃ ಬಿಟ್-ವೆಕ್ಟರ್. ಆದಾಗ್ಯೂ, ಬಿಟ್-ವೆಕ್ಟರ್ ಒಂದು ಬಹುರೂಪದ ವಿಧವಾಗಿದ್ದು, ಇದು ಹಲವಾರು ಅಗಲಗಳಲ್ಲಿ ಬರುತ್ತದೆ, ಉದಾಹರಣೆಗೆ. ,, ಅಥವಾ. ಫ್ಲೋಟಿಂಗ್-ಪಾಯಿಂಟ್ ಪ್ರಕಾರಗಳ ಪ್ರತ್ಯೇಕ 32-ಅಥವಾ-64 ಬಿಟ್ ಕುಟುಂಬವನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ. ಬಿಟ್-ವೆಕ್ಟರ್ ಪ್ರಕಾರದ ಜೊತೆಗೆ, ಸಿ-- ಬೂಲಿಯನ್ ಪ್ರಕಾರವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದನ್ನು ಅಭಿವ್ಯಕ್ತಿಗಳಿಂದ ಲೆಕ್ಕ ಹಾಕಬಹುದು ಮತ್ತು ನಿಯಂತ್ರಣ ಹರಿವಿಗೆ ಬಳಸಬಹುದು ಆದರೆ ರೆಜಿಸ್ಟರ್ ಅಥವಾ ಮೆಮೊರಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುವುದಿಲ್ಲ. ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿರುವಂತೆ, ಸಹಿ ಮಾಡಿದ, ಸಹಿ ಮಾಡದ, ಫ್ಲೋಟ್ ಮತ್ತು ಪಾಯಿಂಟರ್ಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸಗಳಂತಹ ಯಾವುದೇ ಉನ್ನತ ಪ್ರಕಾರದ ಶಿಸ್ತನ್ನು ಸಿ-ಆಪರೇಟರ್ಗಳು ಅಥವಾ ಇತರ ವಾಕ್ಯರಚನೆಯ ರಚನೆಗಳು ವಿಧಿಸುತ್ತವೆ. ಸಿ-ಅನ್ನು ಟೈಪ್-ಚೆಕ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ, ಅಥವಾ ಇದು ಕರೆ ಮಾಡುವ ಸಂಪ್ರದಾಯವನ್ನು ಜಾರಿಗೊಳಿಸುವುದಿಲ್ಲ ಅಥವಾ ಪರಿಶೀಲಿಸುವುದಿಲ್ಲ. ಸಿ-ಆವೃತ್ತಿ 2 ಬಿಟ್-ವೆಕ್ಟರ್ ಮತ್ತು ಫ್ಲೋಟಿಂಗ್-ಪಾಯಿಂಟ್ ಪ್ರಕಾರಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ, ವೇರಿಯೇಬಲ್ನ ಪೂರ್ಣಾಂಕ ವರ್ಸಸ್ ಫ್ಲೋಟ್ ಟೈಪಿಂಗ್ ಮತ್ತು ಅದರ ಶೇಖರಣಾ ನಡವಳಿಕೆಯನ್ನು (ಜಾಗತಿಕ ಅಥವಾ ಸ್ಥಳೀಯ) ಪ್ರತ್ಯೇಕಿಸಲು ಈ ಪ್ರಕಾರಗಳನ್ನು ಸ್ಟ್ರಿಂಗ್ "ರೀತಿಯ" ಟ್ಯಾಗ್ನೊಂದಿಗೆ ಟಿಪ್ಪಣಿ ಮಾಡಬಹುದು. ಮೊದಲನೆಯದು ಪೂರ್ಣಾಂಕ ಮತ್ತು ಫ್ಲೋಟಿಂಗ್-ಪಾಯಿಂಟ್ ಮೌಲ್ಯಗಳಿಗೆ ಪ್ರತ್ಯೇಕ ರೆಜಿಸ್ಟರ್ಗಳನ್ನು ಹೊಂದಿರುವ ಗುರಿಗಳಿಗೆ ಉಪಯುಕ್ತವಾಗಿದೆ. ಪಾಯಿಂಟರ್ಗಳು ಮತ್ತು ಸ್ಥಳೀಯ ಪದಗಳಿಗೆ ವಿಶೇಷ ಪ್ರಕಾರಗಳನ್ನು ಪರಿಚಯಿಸಲಾಯಿತು, ಆದಾಗ್ಯೂ ಅವುಗಳನ್ನು ಗುರಿ-ಅವಲಂಬಿತ ಉದ್ದದೊಂದಿಗೆ ಬಿಟ್-ವೆಕ್ಟರ್ಗೆ ಮ್ಯಾಪ್ ಮಾಡಲಾಗಿದೆ. ಉದಾಹರಣೆ ಕೋಡ್ ಈ ಕೆಳಗಿನ ಸಿ-ಕೋಡ್ 1 ರಿಂದ n ರವರೆಗಿನ ಪೂರ್ಣಾಂಕಗಳ ಮೊತ್ತ ಮತ್ತು ಉತ್ಪನ್ನವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ (n ಅನ್ನು ವಾದವಾಗಿ ಸ್ವೀಕರಿಸಲಾಗುತ್ತದೆ). ಇದು ಎರಡು ಭಾಷಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆಃ ಕಾರ್ಯವಿಧಾನಗಳು ಅನೇಕ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡಬಹುದು. ಬಾಲದ ಪುನರಾವರ್ತನೆಯನ್ನು "ಜಂಪ್" ಎಂಬ ಕೀವರ್ಡ್ನೊಂದಿಗೆ ಸ್ಪಷ್ಟವಾಗಿ ವಿನಂತಿಸಲಾಗಿದೆ. / * ಬಾಲ ಪುನರಾವರ್ತನೆ */ರಫ್ತು sp2; sp2 (ಬಿಟ್ಸ್32 n) {ಜಂಪ್ sp2 _ ಹೆಲ್ಪ್ (n, 1,1);} sp2 _ ಹೆಲ್ಪ್ (ಬಿಟ್ಸ್32 n, ಬಿಟ್ಸ್32 s, ಬಿಟ್ಸ್32 p) {n = = 1 ಆಗಿದ್ದರೆ (ರಿಟರ್ನ್ (s, p);} ಇಲ್ಲದಿದ್ದರೆ {ಜಂಪ್ sp2 _ ಹೆಲ್ಪ್ (n-1, s + n, p * n);}} ಅನುಷ್ಠಾನಗಳು C-ನ ನಿರ್ದಿಷ್ಟ ಪುಟವು C-ನ ಕೆಲವು ಅನುಷ್ಠಾನಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ. "ಅತ್ಯಂತ ಸಕ್ರಿಯವಾಗಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ" ಕಂಪೈಲರ್, ಕ್ವಿಕ್ ಸಿ-- ಅನ್ನು 2013ರಲ್ಲಿ ಕೈಬಿಡಲಾಯಿತು. ಸೈಮನ್ ಪೇಟನ್ ಜೋನ್ಸ್, ಜೊವೊ ಡಯಾಸ್ ಮತ್ತು ನಾರ್ಮನ್ ರಾಮ್ಸೇ ಸೇರಿದಂತೆ ಸಿ-ಯ ಕೆಲವು ಅಭಿವರ್ಧಕರು ಜಿ. ಎಚ್. ಸಿ. ಯಲ್ಲಿ ಕೆಲಸ ಮಾಡಿದ್ದಾರೆ ಅಥವಾ ಕೆಲಸ ಮಾಡಿದ್ದಾರೆ, ಅವರ ಅಭಿವೃದ್ಧಿಯು ಸಿ-ಭಾಷೆಯಲ್ಲಿ ವಿಸ್ತರಣೆಗೆ ಕಾರಣವಾಗಿದೆ, ಇದು ಸಿಎಂಎಂ ಉಪಭಾಷೆಯನ್ನು ರೂಪಿಸುತ್ತದೆ, ಇದು ಸಿ ಪ್ರಿಪ್ರೊಸೆಸರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಜಿಎಚ್ಸಿ ಬ್ಯಾಕೆಂಡ್ಗಳು ಎಲ್ಎಲ್ವಿಎಂ ಐಆರ್, ಸ್ಲೋ ಸಿ ಮೂಲಕ ಅಥವಾ ನೇರವಾಗಿ ಅಂತರ್ನಿರ್ಮಿತ ಸ್ಥಳೀಯ ಬ್ಯಾಕೆಂಡ್ ಮೂಲಕ ಸಿ-ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಕೋಡ್ ಆಗಿ ಪರಿವರ್ತಿಸುವ ಜವಾಬ್ದಾರಿಯನ್ನು ಹೊಂದಿವೆ. ಮೂಲ ಉದ್ದೇಶದ ಹೊರತಾಗಿಯೂ, ಜಿಎಚ್ಸಿ ತನ್ನ ಅನೇಕ ಸಾಮಾನ್ಯ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳನ್ನು ಸಿ-- ನಲ್ಲಿ ನಿರ್ವಹಿಸುತ್ತದೆ. ಇತರ ಕಂಪೈಲರ್ ಐಆರ್ಗಳಂತೆಯೇ, ಸಿ-ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ದೋಷನಿವಾರಣೆಗಾಗಿ ಎಸೆಯಬಹುದು. ಗುರಿ-ನಿರ್ದಿಷ್ಟ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳನ್ನು ನಂತರ ಬ್ಯಾಕೆಂಡ್ ಮೂಲಕ ನಡೆಸಲಾಗುತ್ತದೆ. ಬಿಸಿಪಿಎಲ್ ಎಲ್ಎಲ್ವಿಎಂ ಉಲ್ಲೇಖಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಹಳೆಯ ಅಧಿಕೃತ ಜಾಲತಾಣದ ಆರ್ಕೈವ್ (cminusminus.org) ತ್ವರಿತ ಸಿ-ಕೋಡ್ ಆರ್ಕೈವ್ (ಉಲ್ಲೇಖ ಅನುಷ್ಠಾನ) ಸಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷಾ ಕುಟುಂಬ ಕಂಪೈಲರ್ಗಳನ್ನು ಸಹ ನೋಡಿ.