ಸದಸ್ಯ:Karishma kavya/WEP2018-19
ಕಂಪೈಲರ್(Compiler)
[ಬದಲಾಯಿಸಿ]ಕಂಪೈಲರ್ ಎನ್ನುವುದು ಒಂದು ಗಣಕ ಪ್ರೋಗ್ರಾಂ ಆಗಿದ್ದು, ಒಂದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಲ್ಲಿ ಗಣಕ ಪ್ರೊಗ್ರಾಂ ಅನ್ನು ಮತ್ತೊಂದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗೆ ಪರಿವರ್ತಿಸುತ್ತದೆ.ಕಂಪೈಲರ್ಗಳು ಡಿಜಿಟಲ್ ಸಾಧನಗಳನ್ನು ಮತ್ತು ಪ್ರಾಥಮಿಕ ಗಣಕಯಂತ್ರಗಳನ್ನು ಬೆಂಬಲಿಸುವಂತ ಟ್ರಾನ್ಸ್ಲೇಟರಾಗಿದೆ. ಕಂಪೈಲರ್ ಅನ್ನು ಮುಖ್ಯವಾಗಿ ಸೊರ್ಸ್ ಕೋಡ್ ಅನ್ನು ಉನ್ನತ ಮಟ್ಟದ ಪ್ರೋಗ್ರಾಂನಿಂದ ಕಡಿಮೆ ಮಟ್ಟದ ಭಾಷೆಗೆ ಅನುವಾದಿಸಲು ಬಳಸುತ್ತಾರೆ.
ಕಂಪೈಲ್ಸ್ಗಳ ಅನೇಕ ವಿಧಗಳಿವೆ.ಕಂಪೈಲ್ ಮಾಡಿದ ಪ್ರೊಗ್ರಾಂ ಭಿನ್ನವಾದ ಸಿಪಿಯು ಅಥವಾ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ವುಳ್ಳ ಗಣಕಯಂತ್ರದಲ್ಲಿ ಚಲಿಸಿದರೆ ಇಂತಹ ಕಂಪೈಲರ್ ಅನ್ನು ಕ್ರಾಸ್ ಕಂಪೈಲರ್ ಎನ್ನುತ್ತೆವೆ. ಬೂಟ್ಸ್ಟ್ರಪ್ ಕಂಪೈಲರ್ ಕಂಪೈಲ್ ಮಾಡಲು ಉದ್ದೇಶಿಸುವ ಭಾಷೆಗೆ ಬರೆಯಲಾಗುತ್ತದೆ. ಕೆಳಮಟ್ಟದ ಭಾಷೆಯಿಂದ ಉನ್ನತ ಮಟ್ಟಕ್ಕೆ ಅನುವಾದಿಸುವ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಡಿಕಂಪೈಲರ್ ಎನ್ನುತ್ತಾರೆ. ಉನ್ನತ-ಮಟ್ಟದ ಭಾಷೆಗಳ ನಡುವೆ ಭಾಷಾಂತರಿಸುವ ಒಂದು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಸೊರ್ಸ್-ಟು-ಸೊರ್ಸ್ ಕಂಪೈಲರ್ ಅಥವಾ ಟ್ರಾನ್ಸ್ಪಿಲರ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.
ಕಂಪೈಲರ್ ಅನೇಕ ಅಥವಾ ಎಲ್ಲಾ ಕೆಳಗಿನ ಒಪೆರಷನ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಸಾಧ್ಯತೆಯಿದೆ:ಪ್ರಿಪೊಸೆಸ್ಸಿಂಗ್, ಲೆಕ್ಸಿಕಲ್ ಅನಾಲಿಸಿಸ್, ಪಾರ್ಸಿಂಗ್, ಸೆಮಾಂಟಿಕ್ ಅನಾಲಿಸಿಸ್, ಮಧ್ಯಂತರ ಪ್ರಾತಿನಿಧ್ಯಕ್ಕೆ ಇನ್ಪುಟ್ ಪ್ರೋಗ್ರಾಂಗಳ ಪರಿವರ್ತನೆ, ಕೋಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಮತ್ತು ಕೋಡ್ ಉತ್ಪಾದನೆ. ಕಂಪೈಲರ್ಗಳು ಸಮರ್ಥ ವಿನ್ಯಾಸವನ್ನು ಪ್ರೋತ್ಸಾಹಿಸಲು ಮತ್ತು ಸೊರ್ಸ್ ಇನ್ಪುಟ್ನಿಂದ ಉದ್ದೇಶಿತ ಔಟ್ಪುಟ್ಗೆ ಸರಿಯಾದ ರೂಪಾಂತರ ಮಾಡುವ ಹಂತಗಳಲ್ಲಿ ಈ ಆಪರೇಷನ್ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ತಪ್ಪಾದ ಕಂಪೈಲರಿಂದ ಉಂಟಾಗುವ ಪ್ರೋಗ್ರಾಮ್ನ ತಪ್ಪುಗಳು ಪತ್ತೆಹಚ್ಚಲು ಬಹಳ ಕಷ್ಟ; ಆದ್ದರಿಂದ ಕಂಪೈಲರ್ ಅಳವಡಿಕೆದಾರರು ಕಂಪೈಲರ್ ಸರಿಯಾಗಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಪ್ರಯತ್ನಸುತ್ತಾರೆ.
ಇತಿಹಾಸ
[ಬದಲಾಯಿಸಿ]ವಿಜ್ಞಾನಿಗಳು, ಗಣಿತಜ್ಞರು ಮತ್ತು ಎಂಜಿನಿಯರ್ ಗಳು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ ಸೈದ್ಧಾಂತಿಕ ಕಂಪ್ಯೂಟಿಂಗ್ ಪರಿಕಲ್ಪನೆಗಳು ವಿಶ್ವ ಸಮರ II ರ ಸಂದರ್ಭದಲ್ಲಿ ಡಿಜಿಟಲ್ ಆಧುನಿಕ ಕಂಪ್ಯೂಟಿಂಗ್ ಅಭಿವೃದ್ಧಿಗೆ ಆಧಾರವಾಯಿತು.ಡಿಜಿಟಲ್ ಸಾಧನಗಳು ಒಂದುಗಳನ್ನೂ ಮತ್ತು ಸೊನ್ನೆಗಳನ್ನೂ ಮತ್ತು ಆಧಾರವಾಗಿರುವ ಯಂತ್ರ ವಿನ್ಯಾಸದಲ್ಲಿ ಸರ್ಕ್ಯೂಟ್ ಮಾದರಿಗಳನ್ನು ಮಾತ್ರ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತವೆ ಆದರಿಂದ ಪುರಾತನ ಬೈನರಿ ಭಾಷೆ ವಿಕಸನಗೊಂಡಿತು. ೧೯೪೦ರ ದಶಕದ ಅಂತ್ಯದಲ್ಲಿ, ಗಣಕಯಂತ್ರದ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳ ಹೆಚ್ಚು ಅಮೂರ್ತತೆಯ ಕಾರ್ಯ ನೀಡಲು ಅಸೆಂಬ್ಲಿ ಭಾಷೆಗಳನ್ನು ರಚಿಸಲಾಯಿತು. ಮೊದಲಿನ ಗಣಕಯಂತ್ರಗಳ ಸೀಮಿತ ಮೆಮೊರಿ ಸಾಮರ್ಥ್ಯವು ಮೊದಲ ಗಣಕಯಂತ್ರಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಿದಾಗ ಗಣನೀಯ ತಾಂತ್ರಿಕ ಸವಾಲುಗಳಿಗೆ ಕಾರಣವಾಯಿತು. ಆದ್ದರಿಂದ, ಸಂಕಲನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹಲವಾರು ಸಣ್ಣ ಪ್ರೋಗ್ರಾಂಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗುತ್ತದೆ. ಮುಂಭಾಗದ ಕೊನೆಯಲ್ಲಿ ಪ್ರೋಗ್ರಾಮ್ಗಳು ಟಾರ್ಗೆಟ್ ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸಲು ಹಿಂಭಾಗದ ಪ್ರೋಗ್ರಾಮ್ಗಳು ಬಳಸುವ ವಿಶ್ಲೇಷಣೆ ಉತ್ಪನ್ನಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತವೆ. ಗಣಕತಯಂತ್ರ ತಂತ್ರಜ್ಞಾನವು ಹೆಚ್ಚಿನ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಒದಗಿಸಿದಂತೆ, ಕಂಪೈಲರ್ ವಿನ್ಯಾಸಗಳು ಸಂಕಲನ ಪ್ರಕ್ರಿಯೆಯೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಸರಿಹೊಂದುತ್ತವೆ. ಕಂಪೈಲರ್ಗಳ ವರ್ಗೀಕರಣವು ಅವುಗಳ ಉತ್ಪಾದಿತ ಕೋಡ್ ಕಾರ್ಯಗತಗೊಳ್ಳುವ ವೇದಿಕೆಯಾಗಿದೆ. ಇದನ್ನು ಟಾರ್ಗೆಟ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.
ವಿಧಗಳು
[ಬದಲಾಯಿಸಿ]ಸಾಮಾನ್ಯ ಕಂಪೈಲರ್ ವಿಧ ಔಟ್ಪುಟ್ ಯಂತ್ರ ಕೋಡ್,ಇದರ ಹಲವು ವಿಧಗಳಿವೆ:
- ಸೊರ್ಸ್-ಟು-ಸೊರ್ಸ್ ಕಂಪೈಲರ್ ಎನ್ನುವುದು ಕಂಪೈಲರ್ನ ಒಂದು ವಿಧವಾಗಿದ್ದು ಅದು ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಯನ್ನು ಅದರ ಇನ್ಪುಟ್ ಆಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಯ ಔಟ್ಪುಟ್ ಆಗಿ ನೀಡುತ್ತದೆ.
- ಕೆಲವು ಪ್ರೊಲಾಗ್ ಅನುಷ್ಠಾನಗಳಂತೆ, ಸೈದ್ಧಾಂತಿಕ ಯಂತ್ರದ ಅಸೆಂಬ್ಲಿ ಭಾಷೆಗೆ ಸಂಯೋಜಿಸುವ ಬೈಟೆಕೋಡ್ ಕಂಪೈಲರ್ಗಳು.ಈ ಪ್ರೊಲಾಗ್ ಯಂತ್ರವನ್ನು ವಾರೆನ್ ಅಬ್ಸ್ಟ್ರಾಕ್ಟ್ ಮಷಿನ್ (ಅಥವಾ ಡಬ್ಲ್ಯೂ.ಎ.ಎಮ್.) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.ಜಾವಾ, ಪೈಥಾನ್ಗೆ ಬೈಟಿಕೋಡ್ ಕಂಪೈಲರ್ಗಳು ಈ ವರ್ಗಕ್ಕೆ ಉದಾಹರಣೆಗಳಾಗಿವೆ.
- ಜಸ್ಟ್-ಇನ್-ಟೈಮ್ ಕಂಪೈಲರ್ (ಜೆಐಟಿ ಕಂಪೈಲರ್) ರನ್ಟೈಮ್ ರವರೆಗೆ ಸಂಕಲನವನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ. ಪೈಥಾನ್, ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್, ಸ್ಮಾಲ್ಟಾಕ್, ಜಾವಾ, ಮೈಕ್ರೋಸಾಫ್ಟ್ .ನೆಟ್ ನ ಸಾಮಾನ್ಯ ಮಧ್ಯಂತರ ಭಾಷೆ (ಸಿಐಎಲ್) ಮತ್ತು ಇತರವುಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಅನೇಕ ಆಧುನಿಕ ಭಾಷೆಗಳಿಗೆ ಜೆಐಟಿ ಕಂಪೈಲರ್ಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿವೆ. ಜೆಐಟಿ ಕಂಪೈಲರ್ ಸಾಮಾನ್ಯವಾಗಿ ಇಂಟರ್ಪ್ರಿಟರ್ನಲ್ಲಿ ಚಲಿಸುತ್ತದೆ.
- ಅಸೆಂಬ್ಲರ್ ಎನ್ನುವುದು ಯಂತ್ರದ ಓದಬಲ್ಲ ಅಸೆಂಬ್ಲಿ ಭಾಷೆ ಯಂತ್ರ ಸಂಕೇತಕ್ಕೆ ಸಂಯೋಜಿಸುವ ಒಂದು ಪ್ರೋಗ್ರಾಂ ಆಗಿದ್ದು, ಹಾರ್ಡ್ವೇರ್ನಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಲಾದ ವಾಸ್ತವಿಕ ಸೂಚನೆಗಳು. ಯಂತ್ರ ಸಂಕೇತವನ್ನು ಅಸೆಂಬ್ಲಿಯ ಭಾಷೆಗೆ ಭಾಷಾಂತರಿಸುವ ವಿಲೋಮ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಡಿಸ್ಅಸೆಂಬ್ಲರ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.
- ಕೆಳಮಟ್ಟದ ಭಾಷೆಯಿಂದ ಉನ್ನತ ಮಟ್ಟಕ್ಕೆ ಅನುವಾದಿಸುವ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಡಿಕಂಪ್ಪಿಲರ್ ಎಂದು ಕರೆಯುತ್ತಾರೆ.
ಉಲ್ಲೇಖಗಳು
[ಬದಲಾಯಿಸಿ]- ↑ http://llvm.org/docs/CodeGenerator.html#built-in-register-allocators
- ↑ https://en.wikipedia.org/wiki/Compiler
- ↑ https://curlie.org/Computers/Programming/Compilers/
- ↑ https://web.archive.org/web/20150103161301/http://www.informatik.uni-trier.de/~ley/db/books/compiler/index.html
- ↑ https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools