ಏನು ಲಿಸ್ಪ್ ವಿಶೇಷ ಮಾಡಿದೆ

«ಇದುವರೆಗೆ ರಚಿಸಲಾದ ಶ್ರೇಷ್ಠ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ«
- ಅಲನ್ ಕೇ, "ಆನ್ ಲಿಸ್ಪ್"

ಏನು ಲಿಸ್ಪ್ ವಿಶೇಷ ಮಾಡಿದೆ

1950 ರ ದಶಕದ ಉತ್ತರಾರ್ಧದಲ್ಲಿ ಮೆಕಾರ್ಥಿ ಲಿಸ್ಪ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದಾಗ, ಅದು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಭಾಷೆಗಳಿಗಿಂತ ಆಮೂಲಾಗ್ರವಾಗಿ ಭಿನ್ನವಾಗಿತ್ತು, ಅದರಲ್ಲಿ ಪ್ರಮುಖವಾದದ್ದು ಫೋರ್ಟ್ರಾನ್.

ಲಿಸ್ಪ್ ಒಂಬತ್ತು ಹೊಸ ವಿಚಾರಗಳನ್ನು ಪರಿಚಯಿಸಿದರು:

1. ಷರತ್ತುಗಳು. ಷರತ್ತುಬದ್ಧ ಹೇಳಿಕೆಗಳು ವೇಳೆ-ನಂತರ-ಬೇರೆ ನಿರ್ಮಾಣಗಳು. ಈಗ ನಾವು ಅವುಗಳನ್ನು ಲಘುವಾಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಅವರು ಇದ್ದರು ಕಂಡುಹಿಡಿದರು ಲಿಸ್ಪ್ ಅಭಿವೃದ್ಧಿಯ ಸಮಯದಲ್ಲಿ ಮೆಕಾರ್ಥಿ. (ಆ ಸಮಯದಲ್ಲಿ ಫೋರ್ಟ್ರಾನ್ ಕೇವಲ ಗೊಟೊ ಹೇಳಿಕೆಗಳನ್ನು ಹೊಂದಿತ್ತು, ಆಧಾರವಾಗಿರುವ ಹಾರ್ಡ್‌ವೇರ್‌ನಲ್ಲಿನ ಶಾಖೆಯ ಸೂಚನೆಯೊಂದಿಗೆ ನಿಕಟವಾಗಿ ಜೋಡಿಸಲಾಗಿದೆ.) ಮೆಕ್‌ಕಾರ್ಥಿ, ಅಲ್ಗೋಲ್ ಸಮಿತಿಯಲ್ಲಿದ್ದಾಗ, ಅಲ್ಗೋಲ್‌ಗೆ ಷರತ್ತುಗಳನ್ನು ನೀಡಿದರು, ಅಲ್ಲಿಂದ ಅವು ಇತರ ಭಾಷೆಗಳಿಗೆ ಹರಡಿತು.

2. ಒಂದು ಕಾರ್ಯ ಪ್ರಕಾರ. ಲಿಸ್ಪ್‌ನಲ್ಲಿ, ಫಂಕ್ಷನ್‌ಗಳು ಫಸ್ಟ್-ಕ್ಲಾಸ್ ಆಬ್ಜೆಕ್ಟ್‌ಗಳಾಗಿವೆ - ಅವು ಸಂಖ್ಯೆಗಳು, ಸ್ಟ್ರಿಂಗ್‌ಗಳು ಇತ್ಯಾದಿಗಳಂತೆ ಡೇಟಾ ಪ್ರಕಾರವಾಗಿದೆ ಮತ್ತು ಅಕ್ಷರಶಃ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಹೊಂದಿರುತ್ತವೆ, ಅಸ್ಥಿರಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಬಹುದು, ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳಾಗಿ ರವಾನಿಸಬಹುದು, ಇತ್ಯಾದಿ.

3. ಪುನರಾವರ್ತನೆ. ರಿಕರ್ಶನ್, ಸಹಜವಾಗಿ, ಲಿಸ್ಪ್ ಮೊದಲು ಗಣಿತದ ಪರಿಕಲ್ಪನೆಯಾಗಿ ಅಸ್ತಿತ್ವದಲ್ಲಿತ್ತು, ಆದರೆ ಲಿಸ್ಪ್ ಅದನ್ನು ಬೆಂಬಲಿಸುವ ಮೊದಲ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಾಗಿದೆ. (ಇದು ಬಹುಶಃ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಫಸ್ಟ್-ಕ್ಲಾಸ್ ಆಬ್ಜೆಕ್ಟ್‌ಗಳಾಗಿ ರಚಿಸುವಲ್ಲಿ ಸೂಚಿಸುತ್ತದೆ.)

4. ಅಸ್ಥಿರಗಳ ಹೊಸ ಪರಿಕಲ್ಪನೆ. ಲಿಸ್ಪ್ನಲ್ಲಿ, ಎಲ್ಲಾ ಅಸ್ಥಿರಗಳು ಪರಿಣಾಮಕಾರಿ ಪಾಯಿಂಟರ್ಗಳಾಗಿವೆ. ಮೌಲ್ಯಗಳು ಯಾವ ಪ್ರಕಾರಗಳನ್ನು ಹೊಂದಿವೆ, ವೇರಿಯಬಲ್‌ಗಳಲ್ಲ, ಮತ್ತು ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ನಿಯೋಜಿಸುವುದು ಅಥವಾ ಬಂಧಿಸುವುದು ಎಂದರೆ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ನಕಲಿಸುವುದು, ಆದರೆ ಅವು ಸೂಚಿಸುವುದನ್ನು ಅಲ್ಲ.

5. ಕಸ ಸಂಗ್ರಹಣೆ.

6. ಅಭಿವ್ಯಕ್ತಿಗಳಿಂದ ಕೂಡಿದ ಕಾರ್ಯಕ್ರಮಗಳು. ಲಿಸ್ಪ್ ಪ್ರೋಗ್ರಾಂಗಳು ಅಭಿವ್ಯಕ್ತಿಗಳ ಮರಗಳಾಗಿವೆ, ಪ್ರತಿಯೊಂದೂ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. (ಕೆಲವು ಲಿಸ್ಪ್ ಅಭಿವ್ಯಕ್ತಿಗಳು ಬಹು ಮೌಲ್ಯಗಳನ್ನು ಹಿಂತಿರುಗಿಸಬಹುದು.) ಇದು ಫೋರ್ಟ್ರಾನ್ ಮತ್ತು "ಅಭಿವ್ಯಕ್ತಿಗಳು" ಮತ್ತು "ಹೇಳಿಕೆಗಳ" ನಡುವೆ ವ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸುವ ಅನೇಕ ಯಶಸ್ವಿ ಭಾಷೆಗಳೊಂದಿಗೆ ವ್ಯತಿರಿಕ್ತವಾಗಿದೆ.

ಫೋರ್ಟ್ರಾನ್‌ನಲ್ಲಿ ಈ ವ್ಯತ್ಯಾಸವನ್ನು ಹೊಂದಿರುವುದು ಸ್ವಾಭಾವಿಕವಾಗಿತ್ತು ಏಕೆಂದರೆ ಭಾಷೆಯು ಲೈನ್-ಆಧಾರಿತವಾಗಿದೆ (ಇನ್‌ಪುಟ್ ಸ್ವರೂಪವು ಪಂಚ್ ಕಾರ್ಡ್ ಆಗಿರುವ ಭಾಷೆಗೆ ಆಶ್ಚರ್ಯವೇನಿಲ್ಲ). ನೀವು ನೆಸ್ಟೆಡ್ ಹೇಳಿಕೆಗಳನ್ನು ಹೊಂದಲು ಸಾಧ್ಯವಿಲ್ಲ. ಮತ್ತು ಎಲ್ಲಿಯವರೆಗೆ ನೀವು ಕೆಲಸ ಮಾಡಲು ಗಣಿತದ ಅಭಿವ್ಯಕ್ತಿಗಳು ಅಗತ್ಯವಿದೆಯೋ ಅಲ್ಲಿಯವರೆಗೆ, ಬೇರೆ ಯಾವುದನ್ನಾದರೂ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುವುದರಲ್ಲಿ ಯಾವುದೇ ಅರ್ಥವಿಲ್ಲ ಏಕೆಂದರೆ ಹಿಂತಿರುಗಿಸಲು ಕಾಯುತ್ತಿರುವ ಯಾವುದೂ ಇಲ್ಲದಿರಬಹುದು.

ಬ್ಲಾಕ್-ರಚನಾತ್ಮಕ ಭಾಷೆಗಳ ಆಗಮನದೊಂದಿಗೆ ನಿರ್ಬಂಧಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಯಿತು, ಆದರೆ ಆ ಹೊತ್ತಿಗೆ ಅದು ತುಂಬಾ ತಡವಾಗಿತ್ತು. ಅಭಿವ್ಯಕ್ತಿಗಳು ಮತ್ತು ಹೇಳಿಕೆಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಈಗಾಗಲೇ ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ಇದು ಫೋರ್ಟ್ರಾನ್‌ನಿಂದ ಅಲ್ಗೋಲ್‌ಗೆ ಮತ್ತು ಮುಂದೆ ಅವರ ವಂಶಸ್ಥರಿಗೆ ಹಾದುಹೋಯಿತು.

ಒಂದು ಭಾಷೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಅಭಿವ್ಯಕ್ತಿಗಳಿಂದ ರಚಿಸಿದಾಗ, ನೀವು ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ರಚಿಸಬಹುದು. ನೀವು ಒಂದನ್ನು ಬರೆಯಬಹುದು (ಸಿಂಟ್ಯಾಕ್ಸ್ ಬಳಸಿ ಬಿಲ್ಲು)

(if foo (= x 1) (= x 2))

ಅಥವಾ

(= x (if foo 1 2))

7. ಒಂದು ಚಿಹ್ನೆ ಪ್ರಕಾರ. ಅಕ್ಷರಗಳು ತಂತಿಗಳಿಂದ ಭಿನ್ನವಾಗಿರುತ್ತವೆ, ಈ ಸಂದರ್ಭದಲ್ಲಿ ನೀವು ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ಹೋಲಿಸುವ ಮೂಲಕ ಸಮಾನತೆಯನ್ನು ಪರಿಶೀಲಿಸಬಹುದು.

8. ಕೋಡ್‌ಗಾಗಿ ಸಂಕೇತ ಸಂಕೇತ ಮರಗಳನ್ನು ಬಳಸುವುದು.

9. ಇಡೀ ಭಾಷೆ ಯಾವಾಗಲೂ ಲಭ್ಯವಿದೆ. ಓದುವ ಸಮಯ, ಕಂಪೈಲ್ ಸಮಯ ಮತ್ತು ರನ್ ಸಮಯದ ನಡುವೆ ಯಾವುದೇ ಸ್ಪಷ್ಟ ವ್ಯತ್ಯಾಸವಿಲ್ಲ. ನೀವು ಓದುವಾಗ ಕೋಡ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಬಹುದು ಅಥವಾ ರನ್ ಮಾಡಬಹುದು, ಅಥವಾ ನೀವು ಕಂಪೈಲ್ ಮಾಡುವಾಗ ಕೋಡ್ ಅನ್ನು ಓದಬಹುದು ಅಥವಾ ರನ್ ಮಾಡಬಹುದು ಅಥವಾ ಅದು ರನ್ ಆಗುತ್ತಿರುವಾಗ ಕೋಡ್ ಅನ್ನು ಓದಬಹುದು ಅಥವಾ ಕಂಪೈಲ್ ಮಾಡಬಹುದು.

ಓದುವಾಗ ಕೋಡ್ ರನ್ ಮಾಡುವುದರಿಂದ ಬಳಕೆದಾರರಿಗೆ Lisp ನ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಮರುಪ್ರಕ್ರಿಯೆ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ; ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಕೋಡ್ ಮ್ಯಾಕ್ರೋಗಳಿಗೆ ಆಧಾರವಾಗಿದೆ; ಇಮ್ಯಾಕ್ಸ್‌ನಂತಹ ಪ್ರೋಗ್ರಾಮ್‌ಗಳಲ್ಲಿ ಲಿಸ್ಪ್ ಅನ್ನು ವಿಸ್ತರಣೆ ಭಾಷೆಯಾಗಿ ಬಳಸಲು ರನ್‌ಟೈಮ್ ಸಂಕಲನವು ಆಧಾರವಾಗಿದೆ; ಮತ್ತು ಅಂತಿಮವಾಗಿ, ರನ್‌ಟೈಮ್ ರೀಡಿಂಗ್ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಎಸ್-ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಂವಹನ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ, ಇದು ಇತ್ತೀಚೆಗೆ XML ನಲ್ಲಿ ಮರುಶೋಧಿಸಲಾಗಿದೆ.

ತೀರ್ಮಾನಕ್ಕೆ

ಲಿಸ್ಪ್ ಅನ್ನು ಮೊದಲು ಆವಿಷ್ಕರಿಸಿದಾಗ, ಈ ಆಲೋಚನೆಗಳು 1950 ರ ದಶಕದ ಉತ್ತರಾರ್ಧದಲ್ಲಿ ಲಭ್ಯವಿರುವ ಹಾರ್ಡ್‌ವೇರ್‌ನಿಂದ ನಿರ್ದೇಶಿಸಲ್ಪಟ್ಟ ಸಾಂಪ್ರದಾಯಿಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅಭ್ಯಾಸಗಳಿಂದ ದೂರವಿದ್ದವು.

ಕಾಲಾನಂತರದಲ್ಲಿ, ಜನಪ್ರಿಯ ಭಾಷೆಗಳ ಯಶಸ್ಸಿನಿಂದ ಸಾಕಾರಗೊಂಡ ಡೀಫಾಲ್ಟ್ ಭಾಷೆ ಕ್ರಮೇಣ ಲಿಸ್ಪ್ ಕಡೆಗೆ ವಿಕಸನಗೊಂಡಿತು. 1-5 ಅಂಕಗಳನ್ನು ಈಗ ವ್ಯಾಪಕವಾಗಿ ಸ್ವೀಕರಿಸಲಾಗಿದೆ. ಪಾಯಿಂಟ್ 6 ಮುಖ್ಯವಾಹಿನಿಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಲು ಪ್ರಾರಂಭಿಸುತ್ತಿದೆ. ಸೂಕ್ತವಾದ ಸಿಂಟ್ಯಾಕ್ಸ್ ಇಲ್ಲದಿದ್ದರೂ ಪೈಥಾನ್ ಕೆಲವು ರೂಪದಲ್ಲಿ ಷರತ್ತು 7 ಅನ್ನು ಹೊಂದಿದೆ. ಐಟಂ 8, ಇದು (ಐಟಂ 9 ರೊಂದಿಗೆ) ಲಿಸ್ಪ್‌ನಲ್ಲಿ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ, ಇದು ಇನ್ನೂ ಲಿಸ್ಪ್‌ನಲ್ಲಿ ಮಾತ್ರ ಇದೆ, ಬಹುಶಃ (ಎ) ಅದಕ್ಕೆ ಆ ಆವರಣಗಳು ಅಥವಾ ಅಷ್ಟೇ ಕೆಟ್ಟದ್ದೇನಾದರೂ ಅಗತ್ಯವಿರುತ್ತದೆ ಮತ್ತು (ಬಿ) ನೀವು ಈ ಇತ್ತೀಚಿನ ಶಕ್ತಿಯ ಹೆಚ್ಚಳವನ್ನು ಸೇರಿಸಿದರೆ, ನೀವು ಮಾಡಬಹುದು ಇನ್ನು ಮುಂದೆ ತಾನು ಹೊಸ ಭಾಷೆಯನ್ನು ಕಂಡುಹಿಡಿದಿದ್ದೇನೆ ಎಂದು ಹೇಳಿಕೊಳ್ಳುವುದಿಲ್ಲ, ಆದರೆ ಲಿಸ್ಪ್‌ನ ಹೊಸ ಉಪಭಾಷೆಯನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದೇನೆ; -)

ಆಧುನಿಕ ಪ್ರೋಗ್ರಾಮರ್‌ಗಳಿಗೆ ಇದು ಉಪಯುಕ್ತವಾಗಿದ್ದರೂ, ಇತರ ಭಾಷೆಗಳಲ್ಲಿ ಅಳವಡಿಸಿಕೊಂಡಿರುವ ಯಾದೃಚ್ಛಿಕ ತಂತ್ರಗಳಿಂದ ಅದರ ವ್ಯತ್ಯಾಸದ ದೃಷ್ಟಿಯಿಂದ ಲಿಸ್ಪ್ ಅನ್ನು ವಿವರಿಸುವುದು ವಿಚಿತ್ರವಾಗಿದೆ. ಇದು ಮೆಕಾರ್ಥಿ ಯೋಚಿಸಿದ್ದಲ್ಲದಿರಬಹುದು. ಫೋರ್ಟ್ರಾನ್‌ನ ದೋಷಗಳನ್ನು ಸರಿಪಡಿಸಲು ಲಿಸ್ಪ್ ಅನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿಲ್ಲ; ಇದು ಪ್ರಯತ್ನದ ಉಪ-ಉತ್ಪನ್ನವಾಗಿ ಕಾಣಿಸಿಕೊಂಡಿತು ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ಆಕ್ಸಿಯೋಮ್ಯಾಟೈಸ್ ಮಾಡಿ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ