Experiments and Adventures in 2019 with F# – The focused generalist

வணக்கம் வாசகர்களே,

இந்த ஆண்டு எனக்கு மென்பொருள் பொறியியல் துறையில் ஒரு பெரிய ஆண்டு. F# எப்போதுமே நான் விரும்பும் ஒரு தொழில்நுட்பம் என்பதை எனது நெருங்கிய நண்பர்களுக்குத் தெரியும், மேலும் நான் முன்பு செய்ததை விட அதிக F# மேம்பாட்டைச் செய்யத் தொடங்குவேன் என்று நானே உறுதியளித்தேன்.

FSSF

நான் F# FSSF சமூகத்தில் சேர்ந்துள்ளேன் மற்றும் அவர்களின் ஸ்லாக். என்னைப் போலவே F# ஐ விரும்பும் பிற சகாக்களுடன் பேசுவது இதுவரை ஒரு சிறந்த அனுபவமாக உள்ளது. ஒருவருக்கு மென்பொருள் சிக்கல் ஏற்படும்போதெல்லாம் மக்கள் மிகவும் வரவேற்கிறார்கள் மற்றும் மிகவும் வரவழைக்கிறார்கள். FSSF இல் சேர விரும்புவோருக்கு, இங்கே ஒரு இணைப்பு. இது உங்கள் சிறந்த முடிவுகளில் ஒன்றாக இருக்கும்! சமூகம் சிறந்தது மற்றும் மிகவும் ஆதரவானது 🙂

முணுமுணுப்பு வேலை மற்றும் F# வழிகாட்டுதலை தானியங்குபடுத்துங்கள்

வேலையில், நான் எஃப்# பற்றி கொஞ்சம் பேசிக் கொண்டிருந்தேன், அது எனது குழுவை உற்சாகப்படுத்தியது, மேலும் அவர்கள் என்னை மொழியை முன்வைக்கச் சொன்னார்கள் மற்றும் செயல்பாட்டு நிரலாக்கத்தைப் பற்றி மேலும் தெரிந்துகொள்வது ஏன் ஆர்வமாக இருந்தது. எனவே, நான் ஒரு விளக்கக்காட்சியை உருவாக்கினேன்

  • செயல்பாட்டு நிரலாக்கம் என்றால் என்ன
  • F# என்றால் என்ன மற்றும் மொழியின் அடிப்படை அம்சங்கள்
  • C# மற்றும் F# இல் டிக்-டாக்-டோவை செயல்படுத்துவதில் உள்ள வேறுபாடுகள்

பின்னர், நான் ஒன்றாக இணைத்த குறியீட்டு மாதிரியை வழங்கினேன். நான் F# உடன் முழு செயலாக்கத்தைக் காட்ட விரும்பினேன். அந்த நோக்கத்திற்காக, ஒரு டொமைனை வைப்பது எவ்வளவு எளிதானது மற்றும் மேலிருந்து கீழாக அம்சங்களைச் செயல்படுத்துவது எவ்வளவு எளிது என்பதைக் காண்பிக்க, மாதிரி நிலையான மின்-வணிக பயன்பாட்டை (கன்சோல் மட்டும்) உருவாக்கினேன்.

சில குழு உறுப்பினர்கள் F# பற்றி அதிகம் தெரிந்துகொள்வதில் ஆர்வமாக உள்ளனர், மேலும் இது வேலையில் புதிய திட்டங்களை கொண்டு வந்தது. XML கோப்பில் காணக்கூடிய தேவைகளின் அடிப்படையில் வாடிக்கையாளர்களுக்கான தனிப்பயன் UIகளை உருவாக்குவது பற்றி சக பணியாளர் என்னிடம் கூறினார். அவருக்கு இருந்த பிரச்சனை என்னவென்றால், எங்களின் தற்போதைய கட்டிடக்கலை (MVVM உடன் நெருக்கமாக தொடர்புடையது), ஒரே ஒரு தனிப்பயன் UI ஐ மட்டும் செயல்படுத்த அவருக்கு 8 மணிநேரம் முதல் 16 மணிநேரம் வரை ஆகும். நிறைய தேவையற்ற வேலைகள் இருந்தன, F# மூலம் அதை தானியக்கமாக்குவதற்கு ஏதாவது வழி இருக்கலாம் என்று அவர் நினைத்தார். எனது விளக்கக்காட்சியில் அவர் பார்த்ததை அவர் விரும்பினார் மற்றும் வகை வழங்குநர்கள் எவ்வாறு செயல்படுகிறார்கள் என்பதைப் பார்க்க விரும்பினார்.

அவரது தேவைகளுக்கு ஏற்ப ஒரு வடிவமைப்பை ஒன்றாக சேர்த்து, அவர் தனது பிரச்சனைக்கு ஒரு தீர்வை செயல்படுத்தும் போது நான் முன்னிலை வகித்தேன். நாங்கள் செயல்படுத்தி முடித்தபோது, ​​முழுமையாகச் செயல்படுத்த சுமார் 80 மணிநேரம் எடுத்ததைக் கண்டோம். அவருக்கு கைமுறையாக 280 முதல் 560 மணிநேரம் எடுத்திருக்கும் என்பதை நீங்கள் அறிந்தபோது, ​​ஆதாயம் நம்பமுடியாததாக இருந்தது.

ஒரு முழுத் திட்டத்தின் மூலம் ஒருவருக்கு வழிகாட்டுவது இதுவே எனது முதல் அனுபவம், மேலும் சிலவற்றைச் செய்வதை நான் நிச்சயமாகப் பார்க்க முடியும். இங்கும் அங்கும் பயிற்சியாளர்களுக்கு வழிகாட்டும் வாய்ப்பு எனக்கு கிடைத்தது, ஆனால் இங்கே நாங்கள் ஒரு நிறுவப்பட்ட டெவலப்பரைப் பற்றி பேசுகிறோம், அவர் செயல்பாட்டு நிரலாக்கத்தைக் கற்றுக் கொள்ளவும், ஒரு சிக்கலை விரைவாக தீர்க்கவும் விரும்புகிறார், எனவே சரியான காரணமின்றி அதில் அதிக நேரம் செலவிட முடியாது.

வழிகாட்டல் திட்டம்

எஃப்# புரோகிராமர்கள் மொழியைக் கற்றுக்கொள்வது அல்லது எஃப்# கம்பைலருக்குப் பங்களிக்கத் தொடங்குவது போன்ற எந்தவொரு திட்டத்திலும் அவர்களுக்கு உதவ இந்த நிரல் உள்ளது. என் முடிவில், F# உடன் முழு-ஸ்டாக் மேம்பாட்டிற்கு முழுக்கு போட விரும்பினேன். என் வழிகாட்டி நன்றாக இருந்தார்!

நாங்கள் வாரத்திற்கு 1 முதல் 2 மணிநேரம் வரை சுமார் 2 மாதங்கள் சந்தித்தோம், மேலும் எனது முந்தைய இ-காமர்ஸ் விண்ணப்பத்தின் மேம்பட்ட செயலாக்கத்தை நாங்கள் ஒன்றாக இணைத்தோம்.

செயல்படுத்தல் டொமைன்-உந்துதல் வடிவமைப்பு, வகை-உந்துதல் வடிவமைப்பு மற்றும் பின்-இறுதி + முன்-இறுதியை மட்டுமே F# உள்ளடக்கியது. ரியாக்ட் லைப்ரரியை அறிந்தவர்களுக்கு, எஃப்# பற்றிய பெரிய விஷயம் என்னவென்றால், உங்களது அனைத்து அறிவையும் F# மூலம் மட்டுமே நீங்கள் பயன்படுத்த முடியும். F# மூலம் சிறந்த வலை பயன்பாடுகளை உருவாக்க டெவலப்பர்களை அனுமதிக்கும் கருவிகளை வழங்குவதில் சமூகம் மிகவும் சிறப்பாக உள்ளது.

இந்தச் செயலாக்கத்தைப் பார்க்க விரும்புவோருக்கு, என்னுடைய இணைப்பு இதோ repo. இந்தக் களஞ்சியத்தின் மேல், இணையப் பயன்பாட்டில் நான் உருவாக்கிய விளக்கக்காட்சியையும் நீங்கள் பார்வையிடலாம் (ReliableElmishApps.pptx).

செயல்திறன் கண்காணிப்பு

வேலையில், செயல்திறன் பின்னடைவால் நாங்கள் பாதிக்கப்பட்டோம், இது எப்படி நடந்தது என்று தெரியவில்லை. DevOps குழுவில் இருப்பதால், இப்போது அதை சரிசெய்தாலும், சரியான கருவிகள் இல்லாமல், அது மீண்டும் நடக்காது என்று எனக்குள் நினைத்துக்கொண்டேன்.

நான் .NET க்கான சில செயல்திறன் கருவிகளை ஆராய்ச்சி செய்ய ஆரம்பித்தேன், அப்போதுதான் BenchmarkDotNet ஐ கண்டுபிடித்து யோசித்தேன்.

“ஓ! அதுதான் நமக்குத் தேவை!”

அதை எவ்வாறு பயன்படுத்துவது மற்றும் எங்கள் தீர்வில் சேர்ப்பது எப்படி என்பதைப் படிக்கத் தொடங்கியது. அது நமக்குத் தேவையானதாக இருக்காது என்று எனக்குத் தெரியாது. எங்கள் கட்டிடக்கலை மூலம் விரைவில் கண்டுபிடித்தோம், தானியங்கு UI சோதனைக்கு இதைப் பயன்படுத்த முடியவில்லை, ஆனால் குறைந்த-நிலை கூறு மற்றும் பின்தள சேவைகள் விவரக்குறிப்பிற்கு மட்டுமே.

இது எல்லாவற்றையும் ஒரே நேரத்தில் மறைக்கவில்லை என்றாலும், அது இன்னும் நம்பமுடியாததாக இருந்தது! செயல்திறன் சோதனைகளுக்கான நிலையான தீர்வை எனது குழு தேடிக்கொண்டிருந்தது மற்றும் .NET இல் உள்ள டைமர் ⏱ வெவ்வேறு சூழல்களில் நிலையான முடிவுகளை வழங்கவில்லை.

நாங்கள் எதையோ தவறவிட்டோம், தானியங்கு UI சோதனையில் எங்களின் செயல்பாட்டின் விவரக்குறிப்பைச் செய்வதற்கான வழியைக் கண்டறிய இன்னும் சிலவற்றை ஆராய்ந்தேன். எனவே நான் BenchmarkDotNet இன் மூல செயலாக்கத்திற்கு உள்ளே சென்று அவர்கள் அதை எப்படி செய்கிறார்கள் என்று பார்க்க முடிவு செய்தேன்! இதற்கு வாழ்த்துகள், உண்மையில் ஒரு சிறந்த கருவி 👍🏾

ஒரு முறை முடிக்க எடுக்கும் நேரத்தை அவர்கள் எவ்வாறு கண்காணிக்க முடியும் என்பதை நான் கண்டுபிடித்தேன் மற்றும் ஒளியைப் பார்த்தேன்! அவர்களின் உரிமம் எம்ஐடியாக இருப்பதைக் கண்டு நான் மகிழ்ச்சியடைந்தேன், அதனால் எனது பணிச் சிக்கலைத் தீர்ப்பதற்கான எனது வழியைப் பற்றி நான் சிந்திக்கத் தொடங்கினேன்!

.NET இல் ஒத்திசைவான மற்றும் ஒத்திசைவற்ற செயல்களுக்கு செயல்திறன் கண்காணிப்பாளரை செயல்படுத்தினேன். WPF ஐத் தவிர வேறு எதற்கும் இடம்பெயர்ந்தாலும், செயல்திறன் கண்காணிப்பு இன்னும் தேவைப்பட்டாலும், இந்தத் தீர்வைத் தொடர்ந்து பயன்படுத்த இது அனுமதிக்கும்.

இப்போது எங்களிடம் தரவு இருப்பதால், எங்கள் CI பைப்லைனில் பல செயல்திறன் உருவாக்கங்களைத் தொடங்கும்போது, ​​கூறப்பட்ட தரவைப் புரிந்துகொள்ள எங்களுக்கு ஒரு வழி தேவை. எனவே நான் சென்று இதற்கு மற்றொரு F# கருவியை உருவாக்கினேன்.

தானியங்கி UI சோதனையிலிருந்து நான் உருவாக்கும் செயல்திறன் பதிவுகளை இந்தக் கருவி அலசுகிறது மற்றும் தரவை மேம்படுத்துவதன் மூலம் செயல்திறன் அறிக்கையை உருவாக்குகிறது. எடுத்துக்காட்டாக, முன் மற்றும் தற்போதைய நிலையில் இருந்து செயல்திறனில் முன்னேற்றம் என்பதை விரைவாகப் புரிந்துகொள்வதற்கு, டெவலப்பர் CSV இல் உள்ள செயல்திறன் அறிக்கையை எக்செல் க்கு வழங்க வேண்டும், மேலும் தரவு அட்டவணையில் காட்டப்படும் 🙂

முதல் புத்தகம் (செயல்படுகிறது)

எனவே, கடந்த சில ஆண்டுகளாக, தொழில்நுட்ப சமூகத்தில் இருந்து நிறைய தொழில்நுட்ப புத்தகங்களையும், இன்னும் அதிக எண்ணிக்கையிலான வலைப்பதிவு இடுகைகளையும் படித்திருக்கிறேன். என்னுள் ஏதோ மாற்றம் ஏற்பட்டது, பல வருடங்களாக என்னுடன் விவாதித்த பிறகு இறுதியாக முடிவெடுத்தேன்.

“நான் ஒரு F# புத்தகம் எழுதப் போகிறேன்” என்று நினைத்தேன்.

ஒரு நிரலாக்க மொழியாக F# மற்றும் அதைச் சுற்றியுள்ள சமூகம் எனக்கு மிகவும் பிடிக்கும்! நான் புத்தகத்தை சுயமாக வெளியிடுவேன், எனவே அதைப் படிக்க விரும்பும் எவரும் படிக்க முடியும் என்பதை உறுதிசெய்ய சரியான சேனல்களில் அதைப் பகிர்வதை உறுதி செய்கிறேன்!

தரவு கட்டமைப்புகள் & அல்காரிதம்கள்

2020 ஆம் ஆண்டில் எனது கவனம் செலுத்தும் பகுதிகளில் ஒன்று, மென்பொருள் உருவாக்குநரின் ஒரு அடிப்படை அடிப்படைக் கருவியை மறுபரிசீலனை செய்வதாகும்; தரவு கட்டமைப்புகள் மற்றும் வழிமுறைகள். வேலையில் உள்ள பிரச்சனைகளை அணுகுவதற்கும் பக்கவாட்டு திட்டங்களுக்கு எனது வழியை மேம்படுத்துவதற்கும், எனது அறிவு உறுதியானதாக இருப்பதை உறுதிசெய்ய விரும்புகிறேன்.

அடுத்த சில மாதங்களில், நான் Coursera வில் வகுப்பு எடுப்பேன். இப்போதைக்கு, அதுவரை HackerRank அல்லது Codewars போன்ற இணையதளங்களில் அல்காரிதம் சிக்கல்களைத் தீர்த்து வருகிறேன்.

இதற்காக நான் ஒரு களஞ்சியத்தை உருவாக்கியுள்ளேன், இது உங்களுக்கு பயனுள்ளதாக இருக்கும் என நீங்கள் கருதினால் வாசகர்கள் வருகை தந்து பங்களிக்குமாறு வரவேற்கிறேன். தரவு கட்டமைப்புகள் மற்றும் அல்காரிதம்கள் தொடர்பான பல்வேறு தகவல்களுடன் இது சற்று தேவையற்றதாக இருக்கலாம். அதை, நாம் ஒப்புக் கொள்ளலாம். இந்த முயற்சியின் பின்னணியில் உள்ள யோசனை என்னவென்றால், F#க்கான நுழைவுத் தடையைக் குறைப்பதும், விளையாட்டில் இறங்குவது மிகவும் விரைவாக இருப்பதைப் பிறர் பார்க்க வைப்பதும் ஆகும், மேலும் F# இன் வெளிப்பாடானது பிரச்சனைகளை விரைவாகவும் சுத்தமாகவும் தீர்ப்பதற்கான ஒரு வரப்பிரசாதமாகும். மேலும் தகவல்களை நீங்கள் சரியாகப் பெறலாம் இங்கே.

இயந்திர கற்றல் & MLOps

F#க்கு நுழைவுத் தடையைக் குறைக்கும் முயற்சியும் இதுவாகும். F# இன் கடினமான வகை அமைப்பு, அதன் தரவு அணுகல் திறன்கள் மற்றும் செயல்பாட்டுத் தன்மை போன்ற சில அம்சங்கள் அதை இயந்திர கற்றல் நோக்கங்களுக்காகப் பயன்படுத்துவதற்கான வலுவான வேட்பாளராக ஆக்குகிறது.

தற்சமயம், Python & R. NET போன்றவற்றால் உலகம் புயலால் தாக்கப்பட்டுள்ளது, நம்மிடம் உள்ள இடைவெளியை மூட முயற்சிக்கிறது, மேலும் பிற வளர்ச்சிச் சூழல்களில் மற்றவர்கள் என்ன பரிசோதனை செய்யலாம் என்பதை நாங்கள் நெருங்கி வருகிறோம்.

ஜூபிடர் நோட்புக்குகள் அல்லது சிஐ/சிடி பைப்லைன்கள் போன்ற தொழில்நுட்பங்களைப் பயன்படுத்த முடியும் மற்றும் வேறு மொழியைக் கற்க வேண்டிய கட்டாயம் இல்லாமல் இயந்திர கற்றல் சோதனைகளை உருவாக்க முடியும் என்பதே இங்குள்ள யோசனை. இது F# ஐ சுவிஸ் இராணுவக் கத்தியாக மாற்றுவது பற்றியது அல்ல, ஆனால் இதுபோன்ற விஷயங்களுக்கு கருவி ஏற்கனவே சிறப்பாக இருந்தால், எல்லாவற்றுக்கும் மேலாக ஒரு புதிய மொழியைக் கற்காமல் அதை அறியாதவற்றிற்குச் செல்வது மிகவும் சிறந்தது.

எனவே இயந்திர கற்றல் மற்றும் இயந்திர கற்றல் அல்லது MLOps (இயந்திர கற்றல் செயல்பாடுகள்) க்கான DevOps பைப்லைனை எவ்வாறு இணைப்பது என்பது பற்றி மேலும் தெரிந்துகொள்ள வேண்டும் என்பதே எனது யோசனை. இதற்காக, இயந்திர கற்றல் குறித்த சில புத்தகங்களை வாங்கியுள்ளேன்

  • மூலம் கணிப்பு இயந்திரங்கள் அகர்வால், அஜய்
  • நூறு பக்க இயந்திர கற்றல் புத்தகம் புர்கோவ், ஆண்ட்ரி
  • Scikit-Learn, Keras & Tensorflow மூலம் மெஷின் லேர்னிங் Géron, Aurélien

நான் அவற்றைப் படிக்கும்போது, ​​களஞ்சியத்தில் உள்ள புத்தகங்கள் மற்றும் நான் படிக்கும் மெஷின் லேர்னிங் படிப்புகள் பற்றிய எனது முக்கிய குறிப்புகளை வழங்குவேன். எனது திறன்களின்படி, எனது குறிப்புகளை F# குறியீட்டிற்கு மொழிபெயர்ப்பேன், ஏனெனில் படிப்புகள் பைத்தானை அவற்றின் முக்கிய நிரலாக்க மொழிகளாகப் பயன்படுத்தும். எனது முன்னேற்றம் குறித்த கூடுதல் தகவல்களை இங்கே நீங்கள் காணலாம் repo.

Leave a Comment