கணிமையின் தன்மை, சுருக்கங்கள், நிரலாக்க முன்னுதாரணங்கள் மற்றும் நிரலாக்க மொழிகள் பற்றிய ஒரு வார நீளமான ஆய்வு.
கண்ணோட்டம்
“பரலோக இயந்திரம் ஒரு தெய்வீக, உயிருள்ள ஜீவி அல்ல, மாறாக ஒரு கடிகார இயந்திரம் என்பதைக் காட்டுவதே என் நோக்கம்…”
— ஜோஹன்னஸ் கெப்ளர் (ஹெர்வார்ட் ஃபான் ஹோஹென்பர்க்குக்கு எழுதிய கடிதம், 1605)
கணிமையின் அடிப்படை கட்டுமான தொகுதிகள் என்ன? முதல் கோட்பாடுகளிலிருந்தே கணிமை செயல்முறைகளை நாம் எப்படி புரிந்துகொள்ளலாம்? சிக்கலான மென்பொருளை உருவாக்கவும் அவற்றின் நடத்தையை பகுத்தறியவும் என்ன கருவிகள் மற்றும் நுட்பங்கள் உள்ளன?
Abelson மற்றும் Sussman எழுதிய Structure and Interpretation of Computer Programs (SICP), ‘விசார்ட் புக்’ என்று புகழ்பெற்ற இது, கணிமையின் தன்மை பற்றிய பல நுண்ணறிவுகளைக் கொண்ட மிகவும் செல்வாக்குமிக்க பாடநூலாகும். செயல்பாடுகள் மற்றும் தரவுகளுடன் சுருக்கங்களை உருவாக்குவதில் தொடங்கி, வெவ்வேறு செயலாக்க மாதிரிகளுடன் நிரலாக்க மொழிகளை உருவாக்கி, அவற்றை பதிவேட்டு இயந்திரங்களுக்கு தொகுப்பது வரை இது செல்கிறது.
தி லாம்டா ரிட்ரீட் நகரத்திலிருந்து விலகி ஒரு வார நீள ரிட்ரீட் ஆகும், சிறிய குழுவினருடன் ஆழமான விவாதங்களுடன் இந்த சிறந்த படைப்பை படிக்க. இந்த ஆழ்நிலை பட்டறை புத்தகத்தின் பெரும்பாலான தலைப்புகளை உள்ளடக்குவதோடு, சுவாரஸ்யமான திசைதிருப்பல்களையும் கொண்டுள்ளது.
ரிட்ரீட்டில் நேரத்தை சிறப்பாக பயன்படுத்த, ரிட்ரீட்டுக்கு முன் இரண்டு வார தயாரிப்பு திட்டமிடப்பட்டுள்ளது, வாரத்திற்கு சில ஆன்லைன் அமர்வுகளுடன், தொடங்கவும் நல்ல வேகத்தை பெறவும், புத்தகத்தின் ஆரம்ப தலைப்புகளை உள்ளடக்கும்.
ஆழ்நிலை பட்டறையின் போது, நீங்கள் பல முக்கியமான சிக்கல்களை தீர்ப்பீர்கள், பல நிரலாக்க முன்னுதாரணங்களில் நிரல்களை எழுதுவீர்கள், வெவ்வேறு சொற்பொருளுடன் சில நிரலாக்க மொழிகளை உருவாக்குவீர்கள், மேலும் அவற்றை உலாவியில் இயக்க வெப் அசெம்பிளிக்கு தொகுக்கவும் செய்வீர்கள்!
சுவாரஸ்யமாக தெரிகிறதா? இந்த சவாலுக்கு தயாரா?
SICP பற்றி மக்கள் என்ன சொல்கிறார்கள்
இது கணினி அறிவியலின் சிறந்த கிளாசிக்குகளில் ஒன்று. நான் என் முதல் பிரதியை 15 ஆண்டுகளுக்கு முன்பு வாங்கினேன், இன்னும் இந்த புத்தகம் கற்பிக்க வேண்டிய அனைத்தையும் நான் கற்றுக்கொண்டதாக உணரவில்லை.
— Paul Graham (amazon.com-இல் இரண்டு தசாப்தங்களுக்கு முன் எழுதிய அவரது விமர்சனத்திலிருந்து)
…நீங்கள் என்னைப் போன்றவராக இருந்தால், நீங்கள் இன்னொரு தந்திரத்தைத் தேடவில்லை, மாறாக ஏற்கனவே உங்களுக்குத் தெரிந்ததை தொகுக்கும் வழியையும், தொழில் வாழ்க்கை முழுவதும் புதிய கற்றலைச் சேர்க்கக்கூடிய ஒரு வளமான கட்டமைப்பையும் தேடுகிறீர்கள். அதுவே SICP எனக்குச் செய்தது. 1982-ஆம் ஆண்டு சுமாராக, நான் பட்டப்படிப்பில் இருந்தபோது இந்த புத்தகத்தின் ஒரு வரைவு பதிப்பை படித்தேன், அது என் தொழிலைப் பற்றி நான் சிந்திக்கும் விதத்தை மாற்றியது. நீங்கள் ஒரு சிந்தனைமிக்க கணினி விஞ்ஞானியாக இருந்தால் (அல்லது ஆக விரும்பினால்), இது உங்கள் வாழ்க்கையையும் மாற்றும்.
— Peter Norvig (amazon.com-இல் அவரது விமர்சனத்திலிருந்து)
SICP-ஐ படிப்பது உங்களை ஒரு நிரலராளராக ஒளிரச் செய்யும், மேலும் உங்களை சிறந்தவராக மாற்றும். SICP-ஐ படித்து முக்கியமான ஒன்றைப் பெறாத எந்த நிரலராளரையும் என்னால் கற்பனை செய்ய முடியாது.
இலக்கு பார்வையாளர்கள்
இந்த பாடநெறி உங்களுக்கானது, நீங்கள்:
- நிரலாக்க கலையின் ஆழமான நுண்ணறிவுகளைத் தேடும் ஆர்வமுள்ள நிரலராளராக இருந்தால்
- கணினி அறிவியலின் பல ஆழமான, சுவாரஸ்யமான கருத்துக்களை கற்க விரும்பும் சுயமாக கற்றுக்கொண்ட நிரலராளராக இருந்தால்
- விரிவாக்கக்கூடிய அமைப்புகளை உருவாக்குவதை கற்க விரும்பும் மூத்த பொறியாளராக இருந்தால்
- ஒரு வாரத்தில் சாத்தியமற்றதை உருவாக்கும் சவாலைத் தேடும் அனுபவமிக்க டெவலப்பராக இருந்தால்
முன்நிபந்தனைகள்
இந்த பாடநெறிக்கு வலுவான நிரலாக்க அனுபவம் தேவை. மறுசுழற்சி செயல்பாடுகளை எழுதுவதிலும் மறுசுழற்சி தரவு கட்டமைப்புகளுடன் பணிபுரிவதிலும் நீங்கள் வசதியாக இருக்க வேண்டும்.
எந்தவொரு செயல்பாட்டு நிரலாக்க மொழியிலும் முன் அனுபவம் பயனுள்ளதாக இருக்கும், ஆனால் அவசியமில்லை.
அட்டவணை
வார்ம் அப்
நவம்பர் 28 - டிசம்பர் 09, 2022
ரிட்ரீட்டுக்கு முன் இரண்டு வாரங்களை தொடங்கவும் நல்ல வேகத்தை பெறவும் பயன்படுத்துவோம், SICP-இன் முதல் இரண்டு அத்தியாயங்களை கிட்டத்தட்ட உள்ளடக்கி.
செவ்வாய் மற்றும் வெள்ளிக்கிழமைகளில் ஆன்லைன் விவாதங்கள் இருக்கும்.
ஒவ்வொரு அமர்விற்கும் முன் சில வாசிப்புகள் மற்றும் நிரலாக்க பயிற்சிகள் பகிரப்படும், பங்கேற்பாளர்கள் ஒவ்வொரு அமர்விற்கும் முன் அவற்றை முடிக்க வேண்டும் என எதிர்பார்க்கப்படுகிறது.
[செவ் நவ 29] மீண்டும் நிகழும் & மறுசுழற்சி செயல்முறைகள்
SICP-இன் 1.1 மற்றும் 1.2 பிரிவுகளை விவாதித்தல், நேரியல் மறுசுழற்சி மற்றும் மீள்நிகழ்வு, மரம் மறுசுழற்சி மற்றும் வளர்ச்சி வரிசைகளை உள்ளடக்கியது.
[வெள் டிச 02] உயர்-வரிசை செயல்பாடுகள்
SICP-இன் 1.3 பிரிவை விவாதித்தல், லாம்டா, செயல்பாடுகள் argument-களாகவும் return மதிப்புகளாகவும் இருப்பதை உள்ளடக்கியது.
[செவ் டிச 06] தரவுடன் சுருக்கங்களை உருவாக்குதல்
SICP-இன் 2.1 மற்றும் 2.2-இன் ஒரு பகுதியை விவாதித்தல், பட்டியல் செயல்பாடுகள் மற்றும் தொடர்களை உள்ளடக்கியது.
[வெள் டிச 09] படிநிலை கட்டமைப்புகள்
SICP-இன் 2.2 பிரிவை விவாதித்தல், படிநிலை கட்டமைப்புகள் மற்றும் தொடர் ஆபரேட்டர்களை உள்ளடக்கியது.
தி ரிட்ரீட்
டிசம்பர் 11 - டிசம்பர் 16, 2022
ரிட்ரீட்டில், ஒவ்வொரு நாளும் நான்கு அமர்வுகள் விளக்கக்காட்சி, நேரடி குறியீட்டு எழுதுதல் மற்றும் ஆழமான விவாதங்கள் இருக்கும்.
ரிட்ரீட்டை இன்னும் சுவாரஸ்யமாக்க ஒவ்வொரு நாளும் சில காலை மற்றும் மாலை செயல்பாடுகள் திட்டமிடப்பட்டுள்ளன.
- நாள் 0 - ஞாயி டிச 11: தயாராதல்
ஞாயிற்றுக்கிழமை மாலைக்குள் இடத்தை அடையுங்கள். ஆழமான டைவுக்கு உங்களை தயார்படுத்த ஒரு சிறிய அறிமுக அமர்வு இருக்கும்.
- நாள் 1 - திங் டிச 12: தரவுடன் சுருக்கங்களை உருவாக்குதல்
படிநிலை தரவு, தரவின் பல பிரதிநிதித்துவங்கள், தரவு உள்ளடக்கல், வகைகள் பற்றிய கருத்துகளை ஆராய்கிறது.
இந்த அத்தியாயத்தின் சுவாரஸ்யமான பகுதிகளில் ஒன்று A Picture Language, உயர்-வரிசை செயல்பாடுகளைப் பயன்படுத்தி படங்களை இணைத்தல். நாங்கள் ஒரு சிறிய திசைதிருப்பலை எடுத்து M. C. Escher-இன் படைப்புகளை ஆராய்வோம்.
- நாள் 2 - செவ் டிச 13: மட்யூலாரிட்டி, ஆப்ஜெக்ட்கள் மற்றும் நிலை
பெரிய நிரல்களை மட்யூலராக அமைக்கும் உத்திகள். இரண்டு அணுகுமுறைகள், மாறக்கூடிய நிலையுடன் கூடிய ஆப்ஜெக்ட்-அடிப்படையிலான அணுகுமுறை மற்றும் ஒரு ஸ்ட்ரீம்-செயலாக்க அணுகுமுறை, அவை கொண்டு வரும் பிரச்சினைகளுடன் விவாதிக்கப்படும். ஒருங்கிணைவு மற்றும் மாறக்கூடிய நிலையுடன் அதன் முரண்பாடு மற்றும் தொடர் வரிசைப்படுத்தலின் தேவை பற்றியும் விவாதிப்போம்.
- நாள் 3: மெட்டா மொழியியல் சுருக்கம்
நாம் மேலும் மேலும் சிக்கலான சிக்கல்களை எதிர்கொள்ளும் போது, எந்தவொரு நிலையான நிரலாக்க மொழியும் நமது தேவைகளுக்கு போதுமானதாக இல்லை. நமது கருத்துக்களை மேலும் வெளிப்படையாக வெளிப்படுத்த நாம் தொடர்ந்து புதிய மொழிகளுக்கு திரும்ப வேண்டும்.
வெவ்வேறு சொற்பொருள் கொண்ட பல நிரலாக்க மொழிகளுக்கு evaluator-களை எப்படி உருவாக்குவது என்பதை கற்போம். இதில் ஒரு scheme-இல் எழுதப்பட்ட scheme interpreter, lazy evaluation கொண்ட ஒரு interpreter, மற்றும் non-determinism ஆதரிக்கும் ஒரு interpreter அடங்கும்.
- நாள் 4: தி அசெம்பிளி
SICP-இன் கடைசி அத்தியாயம் Computing with Register Machines, ஒரு பதிவேட்டு இயந்திரத்தை உருவகப்படுத்துவதும் scheme நிரல்களை பதிவேட்டு இயந்திரங்களில் இயக்க ஒரு தொகுப்பியை எழுதுவதும் அடங்கும்.
நாங்கள் ஒரு திசைதிருப்பலை எடுத்து வெப் அசெம்பிளிக்கு ஒரு உருவகப்படுத்தியை உருவாக்குவோம், வெப் அசெம்பிளிக்கான ஒரு scheme தொகுப்பியை உருவாக்குவோம், மேலும் அதை உலாவியில் இயக்குவோம்!
- நாள் 5: SICP-க்கு அப்பால்
SICP புத்தகம் பல சுவாரஸ்யமான கருத்துக்களை உள்ளடக்குகிறது, ஆனால் அவற்றை நாம் எப்படி நடைமுறைப்படுத்துவது?
இறுதி பயனர்கள் அமைப்பின் ஒவ்வொரு அம்சத்தையும் விரிவாக்கவும் மாற்றியமைக்கவும் கூடிய, மிகவும் விரிவாக்கக்கூடிய அமைப்புகளை நம்மால் உருவாக்க முடியுமா?
சில வழக்கு ஆய்வுகளை விவாதித்து சவால்களையும் சாத்தியக்கூறுகளையும் ஆராய்வோம்.
பயிற்றுவிப்பாளர்
இந்த பாடநெறியை Anand Chitipothu வழிநடத்துகிறார்.
ஆனந்த் தனது தொழில் வாழ்க்கையை scheme-இன் ஒரு செயலாக்கத்திற்கான garbage collector எழுதுவதன் மூலம் தொடங்கினார், மேலும் SICP-இன் ஆவி அன்றிலிருந்து அவருடன் இருந்து வருகிறது.
எளிமையை நேசிக்கும், முதல் கோட்பாடுகளிலிருந்து விஷயங்களை அணுக விரும்பும் ஒருவராக, அவர் இயல்பாகவே செயல்பாட்டு நிரலாக்கத்தின் கருத்துக்களால் ஈர்க்கப்பட்டார். அவரது சில படைப்புகளில் ஒரு Python க்கு Javascript translator, Racket-இல் ஒரு Python 3 interpreter, குறியீட்டுடன் Escher-இன் tessellation-களை ஆராய்தல் ஆகியவை அடங்கும்.
இரண்டு தசாப்தங்களுக்கும் மேலான தனது நீண்ட தொழில் வாழ்க்கையில், அவர் Python-இல் ஒரு micro web framework ஆன web.py-ஐ இணைந்து எழுதினார், Internet Archive-இல் Open Library-ஐ உருவாக்கினார், Python-இல் ஒரு creative coding library ஆன Joy-ஐ உருவாக்கினார், மேலும் தனது ஆழ்நிலை பாடநெறிகள் மூலம் நூற்றுக்கணக்கான பொறியாளர்களுக்கு பயிற்சி அளித்தார்.

