ru
Feedback
Programming ∀

Programming ∀

Открыть в Telegram

Ushbu kanalda IT va Dasturlashga aloqador mavzularda subyektiv fikrlarimni bayon qilaman.

Больше
1 217
Подписчики
Нет данных24 часа
-87 дней
-3530 день
Архив постов
Benchmarklarga kamroq zadrod bo'lishingiz kerakligi haqida eslatma. Umuman olganda birqancha tillarni o'rganishni boshllagani
Benchmarklarga kamroq zadrod bo'lishingiz kerakligi haqida eslatma. Umuman olganda birqancha tillarni o'rganishni boshllaganimdan kegin benchmarklar qiziq bo'lmay qoldi. Sababi generalize qilolmaysiz hamma narsani. Runtimelar ham turlicha ishlaydi turli runtimeni turli uslubda optimize qilsa bo'ladi. Hullas hulosalarim quyidagicha bo'lgan. 1. Benchmarklarga katta etibor qilmasdan platform o'zida optimization qilishni yaxshilab o'rganish kerak. 2. Tradeofflarga tayyor turish kerak, masalan Rust juda sekin compile bo'ladi ammo safety code yoza olasiz. Hullas juda ko'p tradeoff. 3. Muhit ham rolega ega ayniqsa runtimelar masalasida aynan bazi runtimelar uchun berilgan tasklar qanchalik yaxshi bo'lishiga OS ham aloqador bo'ladi.

Eng yaxshi resurslardan biri
Eng yaxshi resurslardan biri

2 narsaga ishonmang ! 1. DHCP bergan IPga. 2. Frontendchi yozgan safety codega. 2 narsani odat qiling ! 1. Kitob o'qishni 2. Frontenderlar bilan baxslashmaslikni. Ps: Hamm frontenderlarga ham tegishli emas.

Ko'pchilik xavotir oladigan narsa biror mavzuda learning curve, tog'risini aytsam qancha ko'p practice qilsangiz shuncha tezroq va yaxshiroq shu narsani o'rganasiz. Haskell grpc library ustida ishlash o'qiyotgan adabiyotlarimdan ko'ra ko'proq practical tajriba beryabti. O'sha nazariy va "White paper" code samplelar real loyihada ishlatilingan. To'g'risi birgina taskni haligacha yopolmadim )) Lekin boshida qiyin bo'ladi, ammo sekin sekin ko'rnikib ketamiz, masalan kecha man qo'shgan feauture nixoyat build bo'ldi, ammo testlar fail bo'lyabti xozircha va shu o'rinda bugun aynan o'sha o'zim qo'shgan feautureni qanaqa ishlayotganini o'zim tekshiryabman, yani sample projectcha qilyabman. Umuman olganda OSS contribution manga juda yoqyabti, birqancha o'zimga qiziq projectlarni doyim qarab yuribman regular, ulardan nafaqat ko'p narsalar o'rganish mumkin balki yetishmovchiliklarni topish va bir muammoga turli yechimlarni ko'rib analiz qilish mumkin. Mani skill issuelarim bilan xozircha to'liq contribution unchalik oson emas, lekn harakatda barokat deydiku ))

Mana linkedindagi bad vs good practicelar )))
+1
Mana linkedindagi bad vs good practicelar )))

100%
100%

Lekin eng qizig'i bu yil ham ob-havo haqida hamma gapiradi. Ammo faqat gapirishadi. Qani endi anavi metroga ... qilgan biratdaka supermenlar chiqsa deydi bazilar )) Shu jumladan manam... Hullas yuraveramiz shunaqa LOH bo'lib 😊

Lol, nega nafas ololmayabman ekan deb oynalarni ochib qo’ygan edim…
Lol, nega nafas ololmayabman ekan deb oynalarni ochib qo’ygan edim…

Asabimga tegma TVar!!!
Asabimga tegma TVar!!!

Huddi yosh bolalardek kutyabman buni build bo'lishini 😇
Huddi yosh bolalardek kutyabman buni build bo'lishini 😇

Hullas commentlarda 1 daqiqa delay bor. Fikrizni batafsil va tushunarli izohlay olmasangiz ignore qilinadi.

O'zi youtubedagi primitivlar ko'payib ketganini deb mana shunaqa axvolga keldik. Yana bir to'lda infosiganlar ham bor. Odamlar ma'lumotlarni boshqa odamlardan olishyabti 3-4-5 qo'llardan, aslida hammasi batafsil ipidan ignasigacha yozilgan. Bu mavzularda kitoblar va katta tajribalash ulashilingan ochiqchasiga. Lekin qanaqadir primitiv masqarabozlarni IT haqidagi bergan bir tiynga qimmat ma'lumotlari odamlarni jalb qilyabti va hamma shularni yashi deb o'ylaydi )) Biroz tanqidiy fikrlashni yoqinglar, ahir sohangizni eng muhim instrumenti shu narsa. Zombilar kabi kim nima desa ishonib ketavermanglar. Falon joyda ishlaydi degan statusiga ham qaramgnlar ko'ryabmiz 10x engineerlarni race condition nima ekanini bilmasdan hammayoqni promisga o'rab yurganini. Undan ko'ra yaxshi authorlarni kitoblarini o'qinglar kanalda bunaqa tavsiyalar tiqilib yotibti, fundamental computer science o'rganilar. Chatgpt yozib bergan codeni review qilolmaydigan seniorlar gapiga ishonmasdan tayinli akademiklarni ishlari bilan tanishilar shunda foyda topasizlar.

Bu nimani anglatadi bilasizmi ? Siz ishlayotgan X platformada I/O imkoniyati bo'lsa. Siz distrubuted system qurishiz mumkin degani. Lekin sizni platforma bunga qanchalik yaxshi imkoniyatlar bera oladi ? Demak siz I/O bilan ishlar ekansiz hammayoqda side effectlar bor. Shu sabab miyyangizda Man ishlayotgan X narsada HA distrubuted pro max narsalar qursa bo'ladi degan narsani ko'tarib yurmasdan. Man ishlayotgan Platformada side effectlar bilan bunaqa uslublarda ishlasa bo'ladi degan tayinliroq argumentlarni olib yuringlar iltimos. Bo'lmasa juda primitiv dasturchi bopqolasiz, axhir biz ko'p hujayrali mavjudodlarmizku unaqa qilmaylik akalar.

Akalar distrubuted systems bu - Turli joylarda joylashgan componentlarning birlashib(tarmoqda albatta) yaxlit tizim hosil qilishi xisoblanadi. Boshqa narsa emas shuni o'zi, endi uyoqda o'ziga yarasha challengelar mavjud va tolerate failures, autonomously vaxakazolar uyoqdagi challengler. Distrubuted systems, mikroservislar deb yurmanglar yana kattaroq kuruglarda. Kimdir unda SOA nima desa yoki shared clusterlar ham microservismi desa biroz hijolat bo'lib qolasiz. DS general tushuncha asosiy g'oyasi qanaqadir uslubda ma'lum bo'laklarni ma'lum uslbda birlashtirib yaxlit tizim hosil qilishdan iborat. Umuman olganda Distrubuted computing modeli shunchaki xisoblashning bir uslubi holos. https://en.wikipedia.org/wiki/Distributed_computing

Hulosa: OOP lag'monga o'xshaydi va qulog'ingizga yaxshigina lag'mon osishadi, undan tashqari huddi lag'mon kabi chalkash va betartib. Undagi prinsplar va patternlar bilan uzoqga borolmaysiz eng uzog'i shu FizzBuzzEnterpriseEdition ga o'xshagan narsaga taqalasiz. FP esa sizga haqiqiay abstraction bilan ishlashni o'rtatadi, Zamonaviy FP tillar esa huddi compiler bilan hamkorlikda ishlayotgandak ko'rinishda ishlashga yordam beradi. Juda sodda misol, Siz array[n] qilmoqchimisiz ? Demak compilerga isbotlashingiz kerak anashu n indexdagi element array ichida mavjud ekanini. Siz shape data structurasini qildingizmi va u birqancha shapelardan iboratmi ? Demak hamma variantlar uchun qanaqadir logic ishlashi shart ! Siz elon qilgan variable egasi bitta bo'lishi kerak dedimi ? Demak unda aniq side effects bo'lmaydi. Sizda chekli rekursiyami ? Compiler bemalol loopga aylantira oladi. Hullas bunaqa misollar qalashib yotibti. Mana sizga zamonaviy dasturlash tillari haqida ma'lumot. Zamonaviy dasturlash tillari, kuchli type system va aqilli compilerlar bilan kuchli, qanaqadir design patternlar bilan emas ))

Endi shuni pure functional Haskellda ko'rsak bo'ladi )) Unda ham biz match bo'lmagan patternlar haqida error ham olishimiz mu
Endi shuni pure functional Haskellda ko'rsak bo'ladi )) Unda ham biz match bo'lmagan patternlar haqida error ham olishimiz mumkin. Etibor qilgan bo'lsangiz haskellda juda ham oson va tushunarli.

Hammasidan oldin OO styleda nimalar yoqmaganini aytib chiqaman. 1. Man sezgan eng birinchi muammo, struktura va logika qorish
+1
Hammasidan oldin OO styleda nimalar yoqmaganini aytib chiqaman. 1. Man sezgan eng birinchi muammo, struktura va logika qorishib ketishi, yani har bir class ichida area() funksiyasi bor. Qani edni sandiqchni ochamizda DRYni olamiz. Ha, o'sha mashxur DRY Bob amaki ham rossa gapirgan boshqalar ham )) 2. Jungli - Biz areani xisoblash uchun Shapega mos keladigan object yasashimiz kerak va u object ichida area degan funksional bo'lishi shart va biz yozgan funksiyaga berishimiz kerak area(new new Square(5)) 3. Safety shubxali - Umuman olganda code unchalik xavfsiz emas. Bizni area funksiyagaga tog'ri shape berganimizga amin bo'lishimiz kerak, uyam yetmaganidak har bir shape to'g'ri construct bo'lganiga amin bo'lishimiz kerak. 4. Code kattalashishi uni tushunish va qo'llab quvvatlashni murakkablashtiradi, Yana 3-4 ta shakl qo'shilsa murakkablik ham ko'payadi bu esa codebase kattalashgani sayin contributingni qiyinlashtiradi. Yuqoridagi misolda esa aynan functional style qilingan. Lekin unda ham biroz yetishmovchiliklar bor, shunda ham yuqoridagi 4ta muammo bartaraf etilgan va qo'shimchasiga biz agar yangi shape qo'shsak anashu tip uchun ham logic yozishimiz shart bo'lmasa code compile bo'lmaydi. Shu o’rinda biroz bo’lsa ham safety code :)

Sizda turli shakillarni ifodalovchi objectlar bor va siz ushbu shakillar yuzasini xisoblashingiz kerak. Albatta biz OO code b
Sizda turli shakillarni ifodalovchi objectlar bor va siz ushbu shakillar yuzasini xisoblashingiz kerak. Albatta biz OO code bilan quyidagi natijaga erishamiz. Endi bizda yuzani xisoblash funksiyasini aniq berishimiz kerak, yani bizda mavjud bo'lgan shakillarga qarab shunda quyidagicha logika bo'ladi.

const area = (s: Shape) => s.area();
Umuman olganda hammasi ajoyib vazifa bajarildi. Lekin muammolar bor ! Ho'sh, manashu muammolarni topishga xarakat qilib ko'ring ushbu codeda nima muammolar ko'ryabsiz ?

Hullas, bilasizmi Enterprise software qanaqa bo'lishini ? Ho'sh sizni tassavuringizda bu qanaqa bo'lishi kerak, Albatta Javada, OOP va patternalr asosidami ? Hullas hechqanaqa trollinglar va yana boshqa narsalarsiz shunchaki o'zingiz baho bering. Fikrimcha tasavur qilgan Enterprise software manashu. O'zingiz ko'ring va baho bering, sizni direction qaysi tomonga ketayotgani haqida tassavur beradi. https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

Jamoat transportida kitob o'qib ketayotganimda bir aka yonimga kelib so'radi. - Dasturchimisiz ? - Ha qayerdan bildingiz ? - O'qiyotgan kitobingizdan tahmin qildim, nima kitob ekan bu ? - "Software Abstractions" qiziq kitob abstraction bilan ishlash haqida. - Haa, OOP o'rganyabsizmi ? - Shunaqa desa ham bo'ladi, negadir bazi mavzular juda qiziq bo'lib qoldi, bu kitobda manga qiziq mavzular bor ekan. - Haa tushunarli, OOP o'rganaman desangiz Java o'qing aka! Aytgancha qayerdadir ishlaysizmi aka ? Qanday dasturlash tilida code yozasiz ? - Haa bir kompaniyada ishlayman nodejsda yozaman. - Tushunarli, frontednchimisiz ? - Yo'q aka backendchiman. O'zingizchi ? - Man Gochiman aka. Falon kompaniyada ishlayman. - Ajoyib! Go haqida ko'pchilik maqtayabti nimasi yaxshi aka ? - Goda juda ko'p distrubuted systems qursa bo'ladi katta masshtabda. Microservicelar uchun juda zo'r instrument. - Haa qiziq, sinab ko'rsam bo'lar ekan. - Qanchadan buyon bu sohadasiz aka ? Faqat nodejsda ishlaganmisiz ? - Boshqa tillarda ham nimadirlar qilganman, ko'p emas birnecha yildan buyon dasturlashdaman aka. O'zingizchi ? - Man 2 yildan buyon ishlayman dasturlashni C da o'rganganman. - Ohho, C ham bilasizmi, respect ! - Haa foundation o'rgangan edim C da. - Ajoyib aka ! Manam C o'rganishga rossa harakat qilgan edim ammo vaqt bo'lmayabti ! - Nima qilasiz o'rganib o'lik tilku aka ! Go o'rganing xozir hamma yangi loyihalar shu tilda qilinyabti. Falon markazni tavsiya qilaman foundationda karkaz C o'rgatadi. - Haa qiziq aka, maslahatlar uchun Rahmat! Mani bekatim keldi salomat bo'ling! PS: Negadir hamma tanishuvlarda ko'p shu trendagi tillarni birxil izohlashadi, distrubuted systems qurish imkoniyati mavjud ! Manashu gapni GO, Java, C#, Nodejs, Ruby, Python hullas deyarli hamma stackdagi backendchilar gapiradi. G'alati emasmi )) Hamma mashxur tillar bir biridan nimadirlarni copy paste qilgani yetmagandek dasturchilar ham shunaqa qilyabtimi 😂