es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

Programming ∀

Programming ∀

Ir al canal en Telegram

Ushbu kanalda dasturlashga aloqador turli expriementlarim, g'oyalarim, hulosalarimni ulashaman.

Mostrar más
1 354
Suscriptores
Sin datos24 horas
Sin datos7 días
Sin datos30 días
Archivo de publicaciones
Kamchiliklarga rozi bo'lasilar ancha bo'lgan edi bunaqa sessiya qilmaganimga )) Odam qadami kam yetgan joylarda yuraverib omma oldida gapirish biroz esdan chiqibti 😊

record.ogg10.51 MB

Bugun Otabekni kanalida Q&A qilamiz. Anchadan buyon javob berishga ulgurmagan bazi mavzuchalarimni aytib beraman kegin sizlardan kelgan savollarga javoblar beramiz. Huddi oldingi sessiyalar kabi, sizlar text ko'rinishida savol berasiz biz ovozli ko'rinishda javoblar beramiz va 60-90min davom etadi. Savollaringizni izohlarda qoldiring. Manzil: @Otabek_Ismoilov kanali Vaqt: 20:00 UTC +5

Worklife balance yo'q faqat life bor ! Juda ham ajoyib point of view aytibti Nikita. Man bu mavzuda ancha xarakatlar qilganman qanaqadir balance, time management yana birbalolar qilishga. Tushunganim birgina hayot bor tamam. Kapitalistik tizim esa bizni aynan shunaqa narsalar deb chalg'itadi va aynan ko'proq ish haqida o'ylashga manipulatsiya qiladi. Man odatda soft skillardan juda ko'p dakki yeydigan odamman. Nega aytaymi ? Formalashgan informatsiyaga o'rganib qolganman. Agar informatsiya ma'lum semantikada bo'lmasa ignore qilaman. Shunga mos o'zim ham semantic information taqdim qilishga xarakat qilaman. Manashuni soft skill deb xisoblayman, ammo bazilar bunaqa narsalarni boshqacha qabul qiladi. Tassavur qiling sizga bittasi kelyabtida api ishlamayabti deysa. Nima deysiz ? Man esa semantik bo'lmagan hamma narsani qattiq ignore qilaman ayniqsa so'ngi payitda. Suhbatni ko'rishni tavsiya qilaman hammaga juda ham muhim mavzular ko'tarilgan. Mani fikrimcha, engineering culture juda ham muhim. Bizni uslublar gumanitarlarniki emas, hamma bilan gaplashib o'tirish emas bizni ishimiz. IT esa undustrydagi eng muhim mehanizmlardan biri. Anavi trash markazlardan tortib info siganlargacha hammasi IT deydi. Ammo ularni gapi pufakka o'xshaydi tepaga chiqib yoriladi tamam, taraozida ham tosh bosmaydi. Bizda o'zimizga yarasha muloqot uslubi va jarayoni mavjud, bunda shaxsiyatlar va hissiyotlar bo'lmaydi. Faqat fikrlar, argumentlar, yechimlar. Qanaqadir masqarabozlar ko'payib ketgani tufayli ham drammalar ko'p hamma joyda. Mani fikrimcha har bir engineer kasb madaniyati va qadryatlariga rioya qilishi shart ! Engineerni engineer tarabiya qila tekinxor managerlar emas. Bizga kompitensiyasi yo'q odamlar bilan suxbatlashib 2 soat nimadini tushuntirishdan manfat yo'q. O'zlari o'rgansinlar, o'zlari qiziqsinlar ularga kerak ! So'ngi payitlarda manashunaqa narsalarda ko'pchilikga tushuntirib yuribman imkon qadar yumshoqroq qilib ))

photo content

Mana real misol. Kelayotgan jValue' shulardan birortasiga aniq tushadi
Mana real misol. Kelayotgan jValue' shulardan birortasiga aniq tushadi

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.

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.

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.

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

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 ?

Kitoblarga pul yig'ishni odat qilmasam narxlarga qarash ruxiyatimga yomon tasir qilyabti. Amazonda kitoblarga ham sale bo'larmikan black fridayda ?

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.

Cheri cheri Haskell🕺🥳🤩

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.

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/

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 🙂

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 !

Programming ∀ - Estadísticas y analítica del canal de Telegram @programming_everyone