Programming ∀
رفتن به کانال در Telegram
Ushbu kanalda IT va Dasturlashga aloqador mavzularda subyektiv fikrlarimni bayon qilaman.
نمایش بیشتر1 217
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-87 روز
-3530 روز
آرشیو پست ها
1 217
Alternative juda usefull narsa.
class Applicative f => Alternative f where empty :: f a
(<|>) :: f a -> f a -> f a
some ::fa->f[a]
many ::fa->f[a]
{-# MINIMAL , (<|>) #-}
λ [1,2,3] <|> [] [1,2,3]
λ [1,2,3] <|> [4,5,6] [1,2,3,4,5,6]
λ [] <|> [4,5,6] [4,5,6]
λ [] <|> []
[]
Maybe bilan ham ishlaydi.
λ Just "Hello" <|> Just "World" Just "Hello"
λ Just "Hello" <|> Nothing
Just "Hello"
λ Nothing <|> Just "World" Just "World"
λ Nothing <|> Nothing Nothing
IO bilan esa manabunday bo'ladi )
λ putStrLn "Hello" <|> putStrLn "World" Hello
λ ioError (userError "exception") <|> putStrLn "World" World
λ putStrLn "Hello" <|> ioError (userError "exception") Hello
λ ioError (userError "exception one") <|> ioError (userError "exception two") *** Exception: user error (exception two)
Alternativlar bilan ancha oldin tanishgan edimku ammo biroz tushunmagandim boshida, kitobda juda ham zo'r examplelar bilan keltirilgan.1 217
Effective Haskell man o'qigan adabiyotlar ichida eng sevimlilarimdan biriga aylanib boryabti.
Kitobdagi mavzular buni o'qishni istagan odamga nisbatan aniq yozilgan 10/10.
Man boshida Get programming with Haskell kitobidan biroz zerikan edim. Kecha heterogenous valuelar bilan ishlashni biroz tushunmagan edim. Effective Haskellda bunga alohida chapter bor ekan.
Kitobda juda ko'p muhim mavzular ko'tarilgan ekan, masalan monadic IO, mutable data bilan ishlash (IORef, etc..) Parsing, Monadic parsing hullas mani juda ko'p savollarim javobi shu kitobda ekan.
1 217
Navbatda turganimda commentlarga javob beray. Bu postga quyidagicha comment yozilgan.
Savol paydo boladi shu joyida xôp keyinchi yangi toollar yangi tillar organgandan keyinchi? Dunyoda qanaqadr muammolarni xal qilish kk emasmi va usha muammoni yechishda manashu tool sizga yordam beradi deganda manmcha organish kk. IT worldda kopro dasturchi un toollar va programming languagelarni chuqur tushunish emas kopro software architecture ga katta etibor qaratish kk deb oyliman.Firkimni qisqaroq izohlayman. Arxitektura va bunga doir hamma narsa evelyutsa bilan bog'liq. Agar siz yaxshi arxitektor bo'lmoqchi bo'lsangiz demak yaxshi evalyutsiya qilishingiz kerak. Yani rivojlanishingiz kerak. Siz rivojlanishingiz davomida esa albatta dunyoqarashingiz, fikrlashingiz o'zgaradi o'sib boradi. Industry rivojlanyabti, bu bilan birga esa bilim va tajriba ham. Agar bir dasturchi 10 yil faqat bir narsa bilan shug'ullangan bo'lsa demak u arxitektor bo'lolmaydi. Arixetkrua bu R&D asosida shakillangan bilim ko'nikmalarning amalayotdagi isboti. Siz doyim qandaydir scopeda nimadir o'rganasiz, tadqiqot qilasiz va shu narsani hayotga tadbiq qilasiz sizni yechim qo'yilgan talablarga mos bo'lsa demak sizni arxitekturangiz to'gri. Biz tog'ri yechim berishingiz esa osmondan kelmaydi bunga background kerak! Arxitektura haqidagi adabiyotlarni juda ko'pi esa sizga ma'lum bir muammoga yechim berolmaydi ular mavjud yechimlarni sizga formalize qilib summary beradi holos. Bu mavzuda birqancha adabiyotlar o'qiganman ayniqsa Neal Fort kitoblarini. Arxitekturaning asosiy g'oyasi abstraksiya bilan ishlashdan iborat. Shu sabab hamma muammoga inntensiv yondoshiladi ohirida abstraksiyaga o'raladi bunaqa narsani odam faqat R&D bilan o'rganadi fikrimcha. Proof uchun esa sizga aniq bir formalizationlar kerak tahminlar emas.
1 217
Sizlarga ulashadigan fikrlarim o'z o'zidan osmondan emas hammasiga sabablar bor.
Shu o'rinda man FPda hali tayinli bilim egasi emasman. Buni @keilambda va @shakhzodme ham isbotlab berishadi ). Haskell.uz da ham Keijoni boshini og'ritib o'tiraman doyim.
Mani asosiy g'oyalarimdan biri bu code sifati haqida bo'lgan edi birpaytlar. Keginchalik bu masala kattalashib juda ko'p parametrlar qo'shilib ketgan.
Shunday darvlarni birida OO pardaigmasidan ham bazi researchlar qilib ko'rgan edim aynan formal OO haqida ham boshqasi haqida ham calculus φ haqida ham.
Bu mavzularda Yegor amakini va David West resurslarini ham o'rganib chiqganman. Shulardan bazi hulosalarim quyida.
Ammo kegin tushundimki bularni o'zi yetarli emas ekan. Manda juda ko'p narsaga savollar ko'p edi. Bazilarini aytib o'taman.
Ho'sh testlar yozish kerak ekan. Testlar tog'ri ekanini qayerdan isbotlayman. Qanday tesga ishonay ?
Testlarni isbotlay olmadimi yozgan kodimni qanday isbot qilay tog'ri ekanini ?
Nima uchun Toshmad va Man turli OOP conceptlar va paradigmlarni turlicha tushunamiz va implement qilamiz ?
Qaysi patterni qaysi bilan qayerda ishlatay ?
Hop databaselar bilan ishlagani alohida repository degan layer ochdim. Ammo manda brokerlar bor uni qayerga tiqaman ?
Nega inheritance asosan ko'p tillarda 1 ta bo'ladi ? Man bir classni birqanchasidan inherit qilsam single reponsibilitydan nima mano ?
Abstraction deganda OO paradigma nimani nazarda tutgan ?
PS: Hammasi rivojlanish jarayonidagi masalalar.
https://t.me/programming_everyone/1287
1 217
Qiziq firklar yozishyabti commentlarga. Masalan bundan 2ta oldingi postda
Biror texnalogiyaga uzbda talab bo’lmadi degani o’rganmaslik kerak degani emas.
Degandim, shunga javoban
Yes absolutely +. But Bu holat ko’pincha tajribasi borlarga tegishli bub qolmasmikin. Yani, dasturlashda, biror tilda 2 yil ham tajribasi yo’q odam uzbda talab yo’q tilni urganishdan boshlab vaqt yuqotib quyishi mumkin may be.Degan fikr kelyabti. Bir tomondan qarasak tog'ri, no lekin boshqa tomondan qarasak bir savol keladi. Masalan oldin ham xozir ham dasturchilar doyim birqancha tillarni bilishgan yoki ishlatishgan. JSchilar TS ishlatadi, bu joyda aynan tiplarni o'rganishadi tsda. TS va JS farqi tiplarda ha ts tiplari qanaqa ekani boshqa masala lekin salgina tip degan narsani his etasilar va TSda ham tiplar bilan magic ko'p. Huddi shunaqa masala juda ko'p boshqa stackdagilarga ham tegishli. Undan tashqari frameworklar, toolar, texnalogiyalarda ham shundayku. Faqat reactni biladigan reactchi kam bo'lsa kerak u aniq nimadirlarni sinagan va kavlagan. Endi yana bir qiziq narsa shunaqa davlarda quyidagi kabi fikrlar miyyaga kelganmi ? Kelmagan sabab nima asosiy sabab ishda yani sizga pul berilgani uchun talabni bajarasiz. Bu narsalar aka takidlagan fikrlar asosi mani nazarimda va fikrlarini hurmat qilaman. Endi mani shaxsiy savollarim bor sizga hurmatli hamkasb. 1. Dasturlashni o'rganishizdan maqsad ishmi ? 2. Agar sizda puldan umuman muammo bo'lmasa nima qilasiz ? 3. Sizga biror narsa qiziq bo'lsayu vaqtiz bo'lib pulingiz bo'lmasa sevgan ishiz bilan shug'ullanolmaysizmi ? Savollar javobini commentda yozishingiz shart emas o'zingiz o'ylab ko'ring. Mani javoblarim. 1. Dasturlash hobby edi, kasbga aylandi. Real hayotda yashaymiz tirikchilik deganlaridak. 2. Xozirgi qilayotgan ishlarimni qilar edim, farqi xozirda vaqtim yetmay qoladi bazida. Agar manashunaqa utopiya ishlab ketsa fulltime xozirgi qilayotgan ishlarim va darslarim bilan shug'ullanar edim. Shunda boshqa narsalarga ham ko'proq vaqt qoladi. 3. Vaqtim bo'lishi bilan shug'ullanaman, qayerdadir turib qolsam ham biror qiziqroq narsa o'qiyman dasturlashdan. Faqat bazi holatlar va joylarda devayslardan foydalanmayman. Ammo uyoqda fiklayman. Aytganimdak hamma narsa har bir insoning o'zi uchun. Man FP jobga kirishni xozircha o'ylamayabman. Lekin xozirgi bilimlarim ancha foyda beryabti deya olaman. Qo'pol aytganda bu bilimlarim mexnatim qadrini oshiryabti, ishim sifatiiga ham yaxshi tasir qilyabti eng kamida o'zim uchun. Nima uchun bunaqa fikrlaysizlar ? Agar falon narsa qilsam ish topamanmi ? O'ylab ko'ring real hayotda yashayabmiz, hech kim sizga majbur emas va siz ham )) Boshqa tomondan bizdaka resurslar tiqilib yotibti bemalol o'zgartirsa bo'ladigan. Tanosning qo'lqopi ham kerakmas bizni ishsiz qoldirgani. Yoki eng mashxur texnalogiyalarni zo'r bilsangiz ish topishingizga ishonasizmi ? Man rizqim aynan qayerda bo'lishini bilmaganim uchun ishonmayman. Nodejs hyped paytida ham ishsiz yurganman ! Ishsizlik yoqotish emas ! Bilimsizlik esa aniq yoqotish vaqt yoqoladi. Shunday ekan FP o'rganasizmi JS o'rganasizmi manga farqiyoq bu sizni tanlov vaqtingizni shunday sarflangki doyim o'sib boring hudid mevali daraxt kabi. Bo'lmasa yuraverasiz terak bo'lib ohiri sifatsiz qurilish materialiga aylanasiz va 15-20 yilda o'tinga yaraysiz faqatgina. Lekin o'ylab yuring sizdakalar qancha ?
1 217
Kitoblarga pul yig'ishni odat qilmasam narxlarga qarash ruxiyatimga yomon tasir qilyabti.
Amazonda kitoblarga ham sale bo'larmikan black fridayda ?
1 217
Biror texnalogiyaga uzbda talab bo’lmadi degani o’rganmaslik kerak degani emas.
Bundan 4-5 yil avval aynan Mongodbni o’nlab loyihalarga tiqishtirganman u payitlar Postgresql ham xozirgiday mashxur emas edi faqat mysql.
Yana ko’p loyihalarni nodejsda qilganman kerak bo’lsa nodejsga boshqa tilni ham ulaganman.
Kubernetesni o'rganman deb @devopsuzb paydo bo'lgan. Man community leader emasman chunki fulltime devops emasman. Lekin man containerlar deb yurgan payitimda anchagina odamlar keraksiz deb xisoblashar edi. DevOps sohada mandan ko'ra katta bilim tajribalilar bor. Lekin qachondir hamma 0 bo'lgan.
Bularni barchasiga ham sabablar bor edi. Sodda aytsak nimadirni yengilroq, osonroq, yaxshiroq qilish. Lekin o'sha payitlarda ham ko'pchilik bularga vaqt sarflashni istamagani esimda. Albatta bu ularning tanlovi va boshqalar fikrini hurmat qilaman(notog'ri ekani alohida masala)
Engineer sifatida bir narsani o'rganib olib anashuni qaytaraverishni o'zimga ep ko'rmayman. Haskell yoki FP mavzusi ham manashunday rivojlanishnig bir bosqichi, eslayman qachondir uzbda DevOps degan sohani 3-5 odam bilar edi uyam bo'lsa devops communitydagilar. Qolganlar esa pm2 va systemd qilib yuraverishardi.
Balki FP hammaga ham yoqmas yoki mos kelmas bu ularning tanlovi qarshi emasman. Ammo eng kamida yana bir dunyo qarash berishiga ishonaman. Chunki aynan xozir ko'p joylarga FP tiqishtirish bilan ovoraman. Mayli type levelda yozishmasin, lekin oddiy error handling yoki effectlar bilan ishlashni o'rganishsa ham ancha yoqimli bo'ladi.
Biz xozir sevib ishlatayotgan narsalar qachondir bir chekkada yotgan, qachondir hechkim bilmagan va hechkimga keraksizdak huddi o'likdak tuyulgan edi. Insonlarda talab paydo bo'lganidan kegin esa anashu narsalar xozir siz-u bizgacha yetib keldi. Buni Rust lang misolida ham ko'rsak bo'ladi. 2017-2018 yillarda man eshitgan rust bilan xozirda man ishlatadigan rust o'rtasida yer bilan osomonchalik farq borligiga guvohman. Buni yangi rusoceanlar bilishmasa kerak, ammo man eslayman bazi narsalarni.
Texnalogiyalar rivojlanyabti demak biz ham rivojlanishimiz kerak. Ish o'rinlari yoqmi ? Davay biz projectlarimizga qo'shishga xarakat qilamiz why not ? Hotya kichik servischani qilamiz. Otgan yili scala haqida man tanigan 2-3 kishi bilishar edi. Mana xozir anchagina odam biladi va bazilar uche kunadlik hayotda ishlatishyabti. Demak ular ham ishini topadilar.
1 217
Juda qiziq evalyutsiyani aytaymi ?
Boshida if else edi hammasi.
Salgina miyya ishlaganidan kegin pattern matching va ADT o'rgandim.
Bugun esa Dependent Types.
If else haqida bilamiz deyarli hamma tillarda if else rasvo narsa JSda booleani gapirmasam ham bo'ladi
Boolean('false') ham true ))
Pattern matching haqida ham bilamiz buning yaxshi tomoni sizni majbur qiladi hamma caselarni handle qilishga.
Ammo dependent types uje alohida mavzu. Hali to'laqonli tushuntirib berolmasam kerak xozircha izohlash uchun tajribam kam.
Lekin rostdan ham qiziq, dasturlash tili huddi sizni yordamchingiz kabi kelishib ishlaysizlar. Masalan siz compilerga isbotlaysiz array size 0 dan kichik bo'lmasligini compiler esa sizga ruxsat beradi ishlashga mazzami ?
Imperativ tillarda siz hammasiga tupurgansiz va hammasini miyyangizda ushlab yuraverasiz, compiler, interpreter va umuman runtime ham sizni cook qilaveradi, nullable exeptionlar bilan.1 217
Darvoqe kecha mandan error handling haqida so'rashgan edi. Orada esimdan chiqib qolibti javob berish.
Eng boshlanishiga manashundan ko'rsangiz bo'ladi error handlingni. Mani fikrimcha bu mavzuda tassavuri yo'q odamni ham aynan shu narsa biror contextga olib kira oladi va man bilgan eng sodda resurslardan biri.
https://effect.website/docs/error-management/two-error-types/
1 217
Hullas haskell.uz uchun haskell ekotizimdagi shunaqa soddaroq issuelarni share qilishni reja qilyabman.
Birga contribution qilamiz va birga o’rganamiz🆗
Agar muammo chiqsa o’sha joyni o’zida birgalikda hal etsak bo’ladi 🙂
1 217
Bir chekkadan theorem proovingni boshlar ekanman Lean4 plugindan boshlab cook bo'ldim 😁
Birnimalar qilib tog'irladim vanihoyat ammo xozir esimdan chiqib qoldi aynan nima qilmoqchi edim-a ))
Manashunaqa xatolardan hulosa qilib tushunib yetgan narsam quyidagicha:
Eng birinchi workspaceni yaxshilab olish kerak shunda boshqa narsalarga chalg'imaysiz. Masalan gRPC-haskell#147 ustida ishlayotgan edim nix bilan muammo bo'ldi va ishim chala qolib ketti. Buni fix qila oladimkuya ammo xozircha build qilolmayabman shu sabab PR ketmadi hali yani task yakunlanmagan.
Endi hamma narsa qilishdan oldin workspaceni yaxshilab olaman shunda asosiy focus man ishlayotgan muammo ustida bo'ladi.
Hullas juda ajoyib expirementlar bo'lyabti. Endi maqsad bularni hammasini bilimga aylantirib foydali narsalarga ishlatishni o'rganish kerak.
O'zingiz uchun eng qulay ish muhiti bu eng zo'r ish muhiti, IDE, terminal, OS hullas hammasi. Kerak bo'lsa keyboardgacha. Siz uchun eng zo'ri bu sizga yoqgani ! Lekin aynan qanqadir qulayliklar tomondan qarasangiz bir narsadan boshqasiga o'tish ham normal holat, faqat bir sharti bor yo'l yo'lakay o'tmang !
1 217
Aytgancha agar qiziq bo’lsa 18-noyabrda pgconf.uz ga borselar bo’ladi.
PS: Mani o’rnimga ham borilar :)
1 217
Yaxshi yozilgan ekan saryogdek ketyabti.
Garbage Collection for Systems Programmers
https://bitbashing.io/gc-for-systems-programmers.html
1 217
Manabuni eshitadurg’on havo bo’lyabtiku🆗
Leetcoderlar linkedlistni reverse qiling tez.
https://castbox.fm/va/2532558
1 217
Mani fikrimcha yaxshi engineer manashu narsalar ustida ishlay oladi. Shunda uning uchun uncha muncha muammo oson bo’ladi:)
Ps: bugunga yetadi tarqal tarqal ! Borib practice qilamiz endi😊
1 217
DB logicni repository layerga yozamiz. Shunda database o'zgarsa ham faqat bitta layerda code o'zgaradi.
Shunaqa deganlar uchun savol:
Database o'zgardimi ? Nimaga o'zgartirmoqchisizlar axir 🙂 O'zi nega DBda logic yozyabsizlar axir ?
Cracking Cocking coding interviewers to'plamidan 😊
1 217
Manimcha endi nima uchun anavi tresh o’quv markazlarni yomon ko’rishim va hammasini infosigan deyishimni sal bo’lsa ham tushunyabsizlar.
O’quv markazingizdagi uztozni bilimidan tayinli community bilimi aniq ustun !
1 217
Agar siz FPdagi basic conceptlarni ham o'rganolmayotgan bo'lsangiz demak sizda self study bilan yetarlidan ko'p muammo bor.
Aytmoqchi bo'lganim bunaqa narsalarda resurslar ham ko'p communitylar ham yordam beradi.
Maqsad FPni qiyin deyishda emas buni o'rniga boshqa har qanaqa narsani qo'yishingiz mumkin qachonki community doyim yordam bersa va ko'p resurslar bo'lsa.
Shunday ekan ishoninglar siz o'rganishni istayotgan judayam ko'p mavzularda sizga ustoz kerak emas. Yaxshilab xarakat qilib ustingizda ishlashingiz yetarli.
