Magik (programming language)
ಮ್ಯಾಜಿಕ್ ಒಂದು ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಾಗಿದ್ದು ಅದು ಬಹು ಆನುವಂಶಿಕತೆ ಮತ್ತು ಬಹುರೂಪತೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಮತ್ತು ಇದನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಟೈಪ್ ಮಾಡಲಾಗುತ್ತದೆ. ಇದನ್ನು ಸ್ಮಾಲ್ ವರ್ಲ್ಡ್ ಜಿಯಾಗ್ರಫಿಕಲ್ ಇನ್ಫರ್ಮೇಷನ್ ಸಿಸ್ಟಮ್ (ಜಿಐಎಸ್) ನ ಭಾಗವಾಗಿ ಸ್ಮಾಲ್ ವರ್ಲ್ಡ್ ಸಿಸ್ಟಮ್ಸ್ ಲಿಮಿಟೆಡ್ನ ಆರ್ಥರ್ ಚಾನ್ಸ್ ಅವರು 1989 ರಲ್ಲಿ ವಿನ್ಯಾಸಗೊಳಿಸಿದರು ಮತ್ತು ಜಾರಿಗೆ ತಂದರು. 2000 ರಲ್ಲಿ ಸ್ಮಾಲ್ವರ್ಲ್ಡ್ನ ಸ್ವಾಧೀನದ ನಂತರ, ಮ್ಯಾಜಿಕ್ ಅನ್ನು ಈಗ ಜಿಇ ಎನರ್ಜಿ ಒದಗಿಸುತ್ತದೆ, ಇದು ಇನ್ನೂ ಅದರ ಸ್ಮಾಲ್ವರ್ಲ್ಡ್ ತಂತ್ರಜ್ಞಾನ ವೇದಿಕೆಯ ಭಾಗವಾಗಿದೆ. ಮ್ಯಾಜಿಕ್ (ಇನ್ಸ್ಪಿರೇಷನಲ್ ಮ್ಯಾಜಿಕ್) ಅನ್ನು ಮೂಲತಃ 1990 ರಲ್ಲಿ ಪರಿಚಯಿಸಲಾಯಿತು ಮತ್ತು ಇದನ್ನು ವರ್ಷಗಳಲ್ಲಿ ಸುಧಾರಿಸಲಾಗಿದೆ ಮತ್ತು ನವೀಕರಿಸಲಾಗಿದೆ. ಇದರ ಪ್ರಸ್ತುತ ಆವೃತ್ತಿಯು 5.2 ಆಗಿದೆ. 2012ರ ಜುಲೈನಲ್ಲಿ, ಮ್ಯಾಜಿಕ್ ಅಭಿವರ್ಧಕರು ತಾವು ಜಾವಾ ವರ್ಚುವಲ್ ಯಂತ್ರದಲ್ಲಿ ಮ್ಯಾಜಿಕ್ ಭಾಷೆಯನ್ನು ಪೋರ್ಟ್ ಮಾಡುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿದ್ದೇವೆ ಎಂದು ಘೋಷಿಸಿದರು. ಅದೇ ವರ್ಷದ ನವೆಂಬರ್ನಲ್ಲಿ ಒರಾಕಲ್ ಕಾರ್ಪೊರೇಷನ್ ಈ ಯಶಸ್ವಿ ಪೋರ್ಟ್ ಅನ್ನು ದೃಢಪಡಿಸಿತು. ಸ್ಮಾಲ್ಟಾಕ್ ಮ್ಯಾಜಿಕ್ನೊಂದಿಗಿನ ಹೋಲಿಕೆಗಳು ಅದರ ಭಾಷಾ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಅದರ ವಾಸ್ತುಶಿಲ್ಪದ ವಿಷಯದಲ್ಲಿ ಸ್ಮಾಲ್ಟಾಕ್ನೊಂದಿಗೆ ಕೆಲವು ಹೋಲಿಕೆಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆಃ ಮ್ಯಾಜಿಕ್ ಭಾಷೆಯನ್ನು ಮ್ಯಾಜಿಕ್ ವರ್ಚುವಲ್ ಯಂತ್ರದಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಬೈಟ್ ಕೋಡ್ಗಳಾಗಿ ಸಂಕಲಿಸಲಾಗಿದೆ. ಮ್ಯಾಜಿಕ್ ವರ್ಚುವಲ್ ಯಂತ್ರವು ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಂಡೋಸ್, ಯುನಿಕ್ಸ್ ಮತ್ತು ಲಿನಕ್ಸ್ನ ವಿವಿಧ ರುಚಿಗಳು ಸೇರಿದಂತೆ ಹಲವಾರು ವೇದಿಕೆಗಳಲ್ಲಿ ಲಭ್ಯವಿದೆ. ಮ್ಯಾಜಿಕ್ ಕನ್ಸೋಲ್ ಆಧಾರಿತವಾಗಿದೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಚಾಲನೆಯಲ್ಲಿರುವಾಗಲೂ ಕೋಡ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಬಹುದು. ಮ್ಯಾಜಿಕ್ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ನೋಡಲು ಕನ್ಸೋಲ್ ಅನ್ನು ಬಳಸಬಹುದು. ಕಂಪೈಲ್ ಮಾಡಲಾದ ಕೋಡ್ ಅನ್ನು ಇಮೇಜ್ ಫೈಲ್ ಎಂದು ಕರೆಯಲಾಗುವ ಒಂದೇ ಫೈಲ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಪ್ರತಿ ಚಿತ್ರ ಕಡತವು ಸಂಕಲಿಸಿದ ಬೈಟ್-ಕೋಡ್ಗಳನ್ನು ಮತ್ತು ಚಿತ್ರವನ್ನು ಕೊನೆಯದಾಗಿ ಉಳಿಸಿದಾಗ ಅಧಿವೇಶನದ ಸ್ಥಿತಿಯನ್ನು (ಉದಾಹರಣೆಗೆ ವೇರಿಯೇಬಲ್ ಮೌಲ್ಯಗಳು) ಹೊಂದಿರುತ್ತದೆ. ಭಾಷೆಯ ವೈಶಿಷ್ಟ್ಯಗಳು ಕಾಮೆಂಟ್ ಮ್ಯಾಜಿಕ್ ಕೋಡ್ನ ವಿಭಾಗಗಳನ್ನು ಕಾಮೆಂಟ್ಗಳಾಗಿ ಗುರುತಿಸಲು #ಟೋಕನ್ ಅನ್ನು ಬಳಸುತ್ತದೆಃ #ಇದು ಕಾಮೆಂಟ್ ಆಗಿದೆ. ಅಸೈನ್ಮೆಂಟ್ಸ್ ಮ್ಯಾಜಿಕ್ ಕಾರ್ಯಯೋಜನೆಗಳನ್ನು ಮಾಡಲು <<ಆಪರೇಟರ್ ಅನ್ನು ಬಳಸುತ್ತದೆಃ a <1.234 b <<b + a c <<"ಫೂ" + "ಬಾರ್" #ಕಾನ್ಕ್ಯಾಟ್ ಸ್ಟ್ರಿಂಗ್ಗಳು ಸ್ಪಷ್ಟತೆಗಾಗಿ, ಈ ಸಂಕೇತವನ್ನು "a 1.234 ಆಗುತ್ತದೆ" ಅಥವಾ "b b ಪ್ಲಸ್ a ಆಗುತ್ತದೆ" ಎಂದು ಓದಲಾಗುತ್ತದೆ. ಈ ಪರಿಭಾಷೆಯು ನಿಯೋಜನೆಯನ್ನು ಹೋಲಿಕೆಯಿಂದ ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ. ಮ್ಯಾಜಿಕ್ ಈ ಆಪರೇಟರ್ನ ಸಂಕುಚಿತ ರೂಪಾಂತರವನ್ನು ಸಹ ಬೆಂಬಲಿಸುತ್ತದೆ, ಇದು C: b + <<a #ಗೆ ಸಮಾನವಾದ b <<b + a ನಲ್ಲಿ ಕಂಡುಬರುವ ರೀತಿಯಲ್ಲಿಯೇ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಒಂದು ವೇರಿಯೇಬಲ್ ಅನ್ನು ಮುದ್ರಿಸಲು ನೀವು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು a <<"ಹಲೋ" ಬರೆಯಿರಿ (a) ಚಿಹ್ನೆಗಳು ಮತ್ತು ಪೂರ್ಣಾಂಕಗಳು, ಫ್ಲೋಟ್ಗಳು ಮತ್ತು ಸ್ಟ್ರಿಂಗ್ಗಳಂತಹ ಸಾಂಪ್ರದಾಯಿಕ ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಬಳಸಬಹುದು. ಚಿಹ್ನೆಗಳು ವಿಶೇಷ ಟೋಕನ್ ದತ್ತಾಂಶ ಪ್ರಕಾರವಾಗಿದ್ದು, ವಸ್ತುಗಳನ್ನು ಅನನ್ಯವಾಗಿ ಗುರುತಿಸಲು ಮ್ಯಾಜಿಕ್ನ ಉದ್ದಕ್ಕೂ ವ್ಯಾಪಕವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಅವುಗಳನ್ನು ಕೊಲೊನ್ ಮತ್ತು ನಂತರ ಅಕ್ಷರಗಳ ಸರಣಿಯಿಂದ ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ. ಲಂಬವಾದ ಪಟ್ಟಿ ಅಕ್ಷರವನ್ನು ಬಳಸಿಕೊಂಡು ಚಿಹ್ನೆಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು. ಉದಾಹರಣೆಗೆಃ a <<: ಹಲೋ #ಯಾವಾಗಃ ಹಲೋ ಎದುರಾದಾಗ, ಅದು ಅದೇ ಉದಾಹರಣೆಯಾಗಿದೆ b <<: |hello ವರ್ಲ್ಡ್ | ಡೈನಾಮಿಕ್ ಟೈಪಿಂಗ್ ಮ್ಯಾಜಿಕ್ ವೇರಿಯೇಬಲ್ಗಳನ್ನು ಅವು C #ನಲ್ಲಿರುವಂತೆ ಟೈಪ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ರನ್ಟೈಮ್ನಲ್ಲಿ ವಿಭಿನ್ನ ವಸ್ತುಗಳನ್ನು ಉಲ್ಲೇಖಿಸಬಹುದು. ಮ್ಯಾಜಿಕ್ನಲ್ಲಿರುವ ಎಲ್ಲವೂ ಒಂದು ವಸ್ತುವಾಗಿದೆ (ವಸ್ತುಗಳು ಮತ್ತು ಪೂರ್ಣಾಂಕಗಳಂತಹ ಪ್ರಾಚೀನ ಪ್ರಕಾರಗಳ ನಡುವೆ ಯಾವುದೇ ವ್ಯತ್ಯಾಸವಿಲ್ಲ): ಒಂದು <<1.2 #ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಸಂಖ್ಯೆಯನ್ನು 'a' a <<1.2 "#ವೇರಿಯೇಬಲ್ಗೆ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ, ನಂತರ 'a' ವೇರಿಯೇಬಲ್ಗೆ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ನಿಗದಿಪಡಿಸಲಾಗಿದೆ. ಮಾದರಿಗಳು ಜಾವಾದಂತಹ ಇತರ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿನ ವರ್ಗಗಳಿಗೆ ಹೋಲಿಕೆಗಳನ್ನು ಹೊಂದಿವೆ, ಆದರೆ ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸಗಳೊಂದಿಗೆ. ಮ್ಯಾಜಿಕ್ ಬಹು ಆನುವಂಶಿಕತೆ ಮತ್ತು ಮಿಕ್ಸಿನ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ (ಇದು ಯಾವುದೇ ದತ್ತಾಂಶವಿಲ್ಲದೆ ಕಾರ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ). ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನಿದರ್ಶನವನ್ನು ಅಬೀಜ ಸಂತಾನೋತ್ಪತ್ತಿ ಮಾಡುವ ಮೂಲಕ ಹೊಸ ನಿದರ್ಶನಗಳನ್ನು ತಯಾರಿಸಲಾಗುತ್ತದೆ (ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಉದಾಹರಣೆಯಾಗಿರುತ್ತದೆ ಆದರೆ ಇರಬೇಕಾಗಿಲ್ಲ). ಡಿಫ್ಲಾಟ್ _ ಆಬ್ಜೆಕ್ಟ್, {{: ಸ್ಲಾಟ್ _ ಎ, 34}, {: ಸ್ಲಾಟ್ _ ಬಿ, "ಹಲೋ"}, {: ಪೇರೆಂಟ್ _ ಆಬ್ಜೆಕ್ಟ್ _ ಎ,: ಪೇರೆಂಟ್ _ ಆಬ್ಜೆಕ್ಟ್ _ ಬಿ) ಎಂಬ ಹೇಳಿಕೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಹೊಸ ಉದಾಹರಣೆಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ. ಈ ಕೋಡ್ ತುಣುಕು ಮೈ _ ಆಬ್ಜೆಕ್ಟ್ ಎಂಬ ಹೊಸ ಉದಾಹರಣೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಇದು ಸ್ಲಾಟ್ _ ಎ (34 ಕ್ಕೆ ಪೂರ್ವ-ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ) ಮತ್ತು ಸ್ಲಾಟ್ _ ಬಿ ("ಹಲೋ" ಗೆ ಪೂರ್ವ-ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ) ಎಂಬ ಎರಡು ಸ್ಲಾಟ್ಗಳನ್ನು (ಅಥವಾ ಕ್ಷೇತ್ರಗಳನ್ನು) ಹೊಂದಿದೆ, ಇದು ಪೋಷಕ _ ಆಬ್ಜೆಕ್ಟ್ _ ಎ ಮತ್ತು ಪೋಷಕ _ ಆಬ್ಜೆಕ್ಟ್ _ ಬಿ ಎಂಬ ಎರಡು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಉದಾಹರಣೆಗಳಿಂದ ಆನುವಂಶಿಕವಾಗಿ ಬರುತ್ತದೆ. ಹೋಲಿಕೆ ಮ್ಯಾಜಿಕ್ ಎಲ್ಲಾ ಸಾಮಾನ್ಯ ತಾರ್ಕಿಕ ನಿರ್ವಾಹಕರನ್ನು (=, <, <=,>,> =, ~ =/<>) ಹೋಲಿಕೆಗಾಗಿ ಮತ್ತು ಕೆಲವು ಅಸಾಮಾನ್ಯವಾದವುಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. _ is ಮತ್ತು _ ist ಆಪರೇಟರ್ಗಳನ್ನು ವಸ್ತುಗಳ ನಿರ್ದಿಷ್ಟ ನಿದರ್ಶನಗಳನ್ನು ಹೋಲಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ, ಅಥವಾ ಮೌಲ್ಯದ ಬದಲು ವಸ್ತುವಿನ ಉಲ್ಲೇಖಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆಃ a <<"ಹಲೋ" b <<<"ಹಲೋ" a = b #, a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ, a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ, a ನ ಮೌಲ್ಯಕ್ಕಿಂತ a ನಂತಹ ಒಂದೇ ವಸ್ತುವಿನ ನಿರ್ದಿಷ್ಟ ನಿದರ್ಶನವನ್ನು b ಗೆ ನಿಗದಿಪಡಿಸಲಾಗಿರುವುದರಿಂದ, a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ, a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ, a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ, a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ, a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ, a ಮತ್ತು b ನ ಮೌಲ್ಯಗಳು ಸಮಾನವಾಗಿರುವ ಕಾರಣ, a ನ ಮೌಲ್ಯಕ್ಕಿಂತ, a ನಂತಹ ವಸ್ತುವಿನ ನಿರ್ದಿಷ್ಟ ನಿದರ್ಶನವನ್ನು b ಗೆ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ. ವಿಧಾನಗಳ ವಿಧಾನಗಳನ್ನು _ ವಿಧಾನ ಮತ್ತು _ ಎಂಡ್ ಮೆಥೋಡ್ಃ _ ವಿಧಾನ my_object.my_method (a, b) _ ರಿಟರ್ನ್ a + b _ ಎಂಡ್ ಮೆಥೋಡ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಉದಾಹರಣೆಗಳ ಮೇಲೆ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. #ಹೊಸ ವಿಧಾನ _ ವಿಧಾನ person.new (ಹೆಸರು, ವಯಸ್ಸು) _ ರಿಟರ್ನ್ _clone.init (ಹೆಸರು, ವಯಸ್ಸು) _ ಎಂಡ್ ಮೆಥೋಡ್ #ಇನಿಶಿಯಲೈಸ್ ವಿಧಾನ. ಖಾಸಗಿ _ ವಿಧಾನ person.init (ಹೆಸರು, ವಯಸ್ಸು) #ಮೂಲ ಅನುಷ್ಠಾನಕ್ಕೆ ಕರೆ ಮಾಡಿ. _super.init (ಹೆಸರು, ವಯಸ್ಸು) #ಸ್ಲಾಟ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿ. . ಹೆಸರು <<ಹೆಸರು. ವಯಸ್ಸು <<ವಯಸ್ಸು _ ರಿಟರ್ನ್ _ ಸೆಲ್ಫ್ _ ಎಂಡ್ಮೇಥೋಡ್ _ ಕ್ಲೋನ್ ವ್ಯಕ್ತಿಯ ವಸ್ತುವಿನ ಭೌತಿಕ ನಕಲನ್ನು ರಚಿಸುತ್ತದೆ. ಸೂಪರ್ ಹೇಳಿಕೆಯು ಮೂಲ ಉದಾಹರಣೆಯಲ್ಲಿ ಒಂದು ವಿಧಾನದ ಅನುಷ್ಠಾನವನ್ನು ಆಹ್ವಾನಿಸಲು ವಸ್ತುಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ವಸ್ತುಗಳು ಸ್ವಯಂ ಹೇಳಿಕೆಯನ್ನು ಬಳಸಿಕೊಂಡು ತಮ್ಮನ್ನು ತಾವು ಉಲ್ಲೇಖಿಸಿಕೊಳ್ಳಬಹುದು. ಒಂದು ವಸ್ತುವಿನ ಸ್ಲಾಟ್ಗಳನ್ನು ಡಾಟ್ ಸಂಕೇತವನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರವೇಶಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ನಿಯೋಜಿಸಲಾಗುತ್ತದೆ. ವಸ್ತುವಿನ ಸಾರ್ವಜನಿಕ ಅಂತರಸಂಪರ್ಕದ ಭಾಗವಾಗಿರದ ವಿಧಾನಗಳನ್ನು ಖಾಸಗಿ ಹೇಳಿಕೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಖಾಸಗಿಯಾಗಿ ಗುರುತಿಸಬಹುದು. ಖಾಸಗಿ ವಿಧಾನಗಳನ್ನು _ ಸ್ವಯಂ, _ ಸೂಪರ್ ಮತ್ತು _ ಕ್ಲೋನ್ ಎಂದು ಮಾತ್ರ ಕರೆಯಬಹುದು. ಐಚ್ಛಿಕ ವಾದಗಳನ್ನು ಐಚ್ಛಿಕ ಹೇಳಿಕೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಘೋಷಿಸಬಹುದು. ಅಂಗೀಕರಿಸದ ಐಚ್ಛಿಕ ವಾದಗಳನ್ನು ಮ್ಯಾಜಿಕ್ ವಿಶೇಷ ಆಬ್ಜೆಕ್ಟ್ _ ಅನ್ಸೆಟ್ಗೆ (ಶೂನ್ಯಕ್ಕೆ ಸಮಾನ) ನಿಯೋಜಿಸುತ್ತಾರೆ. ಐಚ್ಛಿಕ ವಾದಗಳ ಪಟ್ಟಿಯನ್ನು ಘೋಷಿಸಲು _ ಗೇರ್ ಸ್ಟೇಟ್ಮೆಂಟ್ ಅನ್ನು ಬಳಸಬಹುದು. _ ವಿಧಾನ my_object.my_method (_ ಸಂಗ್ರಹ ಮೌಲ್ಯಗಳು) _ ಎಂಡ್ಮೇಥೋಡ್ ಪುನರಾವರ್ತನೆ ಮ್ಯಾಜಿಕ್ನಲ್ಲಿ, _ ಫಾರ್, _ ಓವರ್, _ ಲೂಪ್ ಮತ್ತು _ ಎಂಡ್ ಲೂಪ್ ಹೇಳಿಕೆಗಳು ಪುನರಾವರ್ತನೆಯನ್ನು ಅನುಮತಿಸುತ್ತವೆ. _ ಬ್ಲಾಕ್ _ ಲೋಕಲ್ s <<0 _ ಲೋಕಲ್ i <<0 _ ಆದರೆ i <= 100 _ ಲೂಪ್ s + <<i i + <<1 _ ಎಂಡ್ಲೂಪ್>> s _ ಎಂಡ್ಬ್ಲಾಕ್ ಇಲ್ಲಿ, _ ವೈಲ್ ಅನ್ನು _ ಲೂಪ್ ಮತ್ತು _ ಎಂಡ್ಲೂಪ್ನೊಂದಿಗೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ. _ ಮೆಥೆಡ್ my_object.my_method (_ ಗೇದರ್ ವ್ಯಾಲ್ಯೂಸ್) ಒಟ್ಟು <<0.0 _ ಫಾರ್ a _ ಓವರ್ values.elements () _ ಲೂಪ್ ಟೋಟಲ್ + <<a _ ಎಂಡ್ಲೂಪ್ _ ರಿಟರ್ನ್ ಟೋಟಲ್ _ ಎಂಡ್ಮೆಥೋಡ್ m <<my_object.new () x <<m.my_method (1.0,2,3,4) #x = 10. ಇಲ್ಲಿ values.elements () ಮೌಲ್ಯಗಳನ್ನು ಪುನರಾವರ್ತಿಸಲು ಸಹಾಯ ಮಾಡುವ ಇಟರೇಟರ್ ಆಗಿದೆ. ಮ್ಯಾಜಿಕ್ ಜನರೇಟರ್ ವಿಧಾನಗಳನ್ನು ಇಟರೇಟರ್ ವಿಧಾನಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಹೊಸ ಇಟರೇಟರ್ ವಿಧಾನಗಳನ್ನು _ ಇಟರ್ ಮತ್ತು _ ಲೂಪ್ಬಾಡಿ ಹೇಳಿಕೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದುಃ a _ ಓವರ್ _self.elements () _ ಲೂಪ್ a.even ಆಗಿದ್ದರೆ? _ ಈಸ್ _ ಟ್ರೂ _ ನಂತರ _ ಲೂಪ್ಬಾಡಿ (a) _ ಎಂಡಿಫ್ _ ಎಂಡ್ಲೂಪ್ _ ಎಂಡ್ಮೆಥೋಡ್ ಕಾರ್ಯವಿಧಾನಗಳು ಮ್ಯಾಜಿಕ್ ಕಾರ್ಯವಿಧಾನಗಳು ಎಂಬ ಕಾರ್ಯಗಳನ್ನು ಸಹ ಬೆಂಬಲಿಸುತ್ತದೆ. ಕಾರ್ಯವಿಧಾನಗಳು ಸಹ ವಸ್ತುಗಳಾಗಿವೆ ಮತ್ತು ಅವುಗಳನ್ನು _ ಪ್ರೋಕ್ ಮತ್ತು _ ಎಂಡ್ಪ್ರೋಕ್ ಹೇಳಿಕೆಗಳನ್ನು ಬಳಸಿ ಘೋಷಿಸಲಾಗುತ್ತದೆ. ನಂತರ ಆಹ್ವಾನಿಸಬಹುದಾದ ಅಸ್ಥಿರಗಳಿಗೆ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ನಿಗದಿಪಡಿಸಲಾಗಿದೆಃ ಮೈ _ ಪ್ರೊಸೀಜರ್ <<_ ಪ್ರೊಸೀಜರ್ @my_procedure (a, b, c) _ ರಿಟರ್ನ್ a + b + c _ ಎಂಡ್ ಪ್ರೊಸೀಜರ್ x <<ಮೈ _ ಪ್ರೊಸೀಜರ್ (1,2,3) #x = 6 ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ ಮ್ಯಾಜಿಕ್ ಬೆಂಬಲಿಸುತ್ತದೆ// ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ ಸಿಂಟ್ಯಾಕ್ಸ್ಃ _ ಇಫ್/ಹಲೋ, \s (\w) +!/. ಮ್ಯಾಚ್ಗಳು? ("ಹಲೋ, ಮ್ಯಾಜಿಕ್!") ನಂತರ ಬರೆಯಿರಿ ("ಒಂದು ಹೊಂದಾಣಿಕೆ ಸಿಕ್ಕಿತು!") _ ಎಂಡಿಫ್ ಮತ್ತು ರೆಜೆಕ್ಸ್ನಲ್ಲಿ ಗುಂಪುಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲುಃ/ಸ್ವಿ ([0-9] +)-([0-9] +). */. ಎಲ್ಲಾ ("ಸ್ವ 65456-324 ಎಸ್ಎಸ್ಎಸ್", "$1") #"65456"/ಸ್ವ ([0-9] +)-([0-9] +). */. replaces _ all ("ಸ್ವ 65456-324 sss", "$2") #"324" HTTP ಲೈಬ್ರರಿ ಮ್ಯಾಜಿಕ್ HTTP ಲೈಬ್ರರಿಯ ಮೂಲಕ HTTP ಅಥವಾ HTTPS ವಿನಂತಿಗಳನ್ನು ಮಾಡಲು ಬೆಂಬಲಿಸುತ್ತದೆ, ಕೆಳಗಿನ ಉದಾಹರಣೆಗಳನ್ನು ನೋಡಿಃ ಮ್ಯಾಜಿಖ್ಟಿಪಿ <http.new ("https://www.google.com"). ಗೆಟ್ () magikhttp.url ("https://www.google.com"). ಪೋಸ್ಟ್ ("ಬಳಕೆದಾರ-ಏಜೆಂಟ್", "ಬಾಟ್" ", ಕೆಲವು ಡೇಟಾ") ಭಾಷಾ ಕ್ವಿರ್ಕ್ಸ್ ಮ್ಯಾಜಿಕ್ ಅನ್ನು ಮೂಲತಃ ಇಂಗ್ಲೆಂಡ್ನಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದರಿಂದ, ಕೋರ್ ಸ್ಮಾಲ್ ವರ್ಲ್ಡ್ ಲೈಬ್ರರಿಗಳಲ್ಲಿನ ವಿಧಾನಗಳನ್ನು ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲಿಷ್ ಬಳಸಿ ಉಚ್ಚರಿಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆಃ "ಇನಿಶಿಯಲೈಸ್" ಅನ್ನು ಬಳಸಿ, "ಇನಿಶಿಯಲೈಸ್" ಅಲ್ಲ. ಇತರ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಂತೆ ಮ್ಯಾಜಿಕ್ ಕೂಡ ಸಂಗ್ರಹಗಳನ್ನು ಹೊಂದಿದೆ. ಅವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒಳಗೊಂಡಿವೆಃ ಸಿಂಪಲ್ ವೆಕ್ಟರ್ ರೋಪ್ ಹ್ಯಾಶ್ ಟೇಬಲ್ ಪ್ರಾಪರ್ಟಿ ಲಿಸ್ಟ್ ಇಕ್ವಾಲಿಟಿ ಸೆಟ್ ಬ್ಯಾಗ್ಸ್ ಹಲೋ ವರ್ಲ್ಡ್ ಉದಾಹರಣೆ ಮ್ಯಾಜಿಕ್ನಲ್ಲಿ ಬರೆಯಲಾದ ಹಲೋ ವರ್ಲ್ಡ್ ಪ್ರೋಗ್ರಾಂಗೆ ಈ ಕೆಳಗಿನವು ಒಂದು ಉದಾಹರಣೆಯಾಗಿದೆಃ ಬರೆಯಿರಿ ("ಹಲೋ ವರ್ಲ್ಡ್!") ಉಲ್ಲೇಖಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಸ್ಮಾಲ್ ವರ್ಲ್ಡ್ ಪ್ರಾಡಕ್ಟ್ ಸೂಟ್ ಟೆಕ್ನಾಲಜಿ ಎಂಡಿಟಿ-ಜಿಇ ಸ್ಮಾಲ್ ವರ್ಲ್ಡ್ ಜಿಐಎಸ್ ಡೆವಲಪರ್ಗಳಿಗಾಗಿ ಮ್ಯಾಜಿಕ್ ಡೆವಲಪ್ಮೆಂಟ್ ಟೂಲ್ಸ್ ಐಡಿಇ ಓಪನ್ ಸೋರ್ಸ್ (ಸೋರ್ಸ್ಫೋರ್ಜ್) ಮ್ಯಾಜಿಕ್ ಟೆಕ್ನಿಕಲ್ ಪೇಪರ್ ನಂ. 5-ಸ್ಮಾಲ್ ವರ್ಲ್ಡ್ ಮ್ಯಾಜಿಕ್ ಜಿಇ ಸ್ಮಾಲ್ ವರ್ಲ್ಡ್ನ ಅವಲೋಕನ, ಮ್ಯಾಜಿಕ್ ಡೆವಲಪರ್ಗಳಿಗಾಗಿ ಇಮ್ಯಾಕ್ಸ್ ಎಕ್ಸ್ಟೆನ್ಷನ್ಸ್ ಸ್ಮಾಲ್ ವರ್ಲ್ಡ್ ಮ್ಯಾಜಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗೆ ವಿಷುಯಲ್ ಸ್ಟುಡಿಯೋ ಕೋಡ್ ಎಕ್ಸ್ಟೆನ್ಶನ್. ವರ್ಗ-ಆಧಾರಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಟೈಪ್ ಮಾಡಲಾದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು