Programming ∀
Відкрити в Telegram
Ushbu kanalda IT va Dasturlashga aloqador mavzularda subyektiv fikrlarimni bayon qilaman.
Показати більше1 217
Підписники
Немає даних24 години
-87 днів
-3530 день
Архів дописів
1 217
Knowing a foreign language broadens your worldview. Knowing programming languages broadens your worldview.
1 217
Linkedinga hamma hohlagan rasmini qo'yib hohlaganicha valdirayabti. Umuman professional social networkdan asar ham qolmagan.
Bundan ancha oldin linkedin pagedan vos kechib shu githubga ko'proq focus bermoqchi edim. Bugun qarorim qatiy bo'ldi. Linkedini tag tugi bilan chopishni o'ylayabman.
Fikrimcha linkedini yutkazdik, hechkim job offer taklif qilmaydi jobni o'zimiz qidirib topamiz oldin qanday bo'lsa shunaqa. O'zbek segmentidagi linkedin animal farm bo'lib qolgan, u yerda hechqanaqa professional content ham ilmiy asosga ega tayinli maqola ham yo'q, ulashilgan linklarda bo'lmasa agar.
Undan ko'ra githubni yaxshilaymiz, kim ekanimizni code bilan tasdiqlaymiz ! Undan tashqari anchadan buyon shu o'zimni saytimni qilishni reja qilyotudim endi shuni ham ishga tushiraman va xarakat qilaman ilmiy ommabobroq maqolalarni biroz formal uslubda yozishga.
1 217
Juda sodda ammo yoqimli narsa:
Masalan bizda bitta funksiya bor.
fn :: a -> b -> c
Lekin bazi holatlarda bizga huddi shu funksiyaning argumentlari swap bo'lgan versiyasi kerak bo'lishi mumkin yani birinchi b kegin a va c qaytaradi.
Manda huddi shunday narsa kerak bo'lganida huddi shu narsani teskari uslubda yoki bo'lmasa if bilan tekshirib yozgan edim. Ammo hech hayolimga kelmagan ekan flip funciton qilish. Sub oddiy ayrish funksiyasi va flipni ham define qilamiz.
Example
sub :: Int -> Int -> Int
sub x y = x - y
flip :: (a -> b -> c) -> b -> a -> c
flip f = g
where
g a b = f b a
λ> sub 3 1
2
λ> flip sub 3 1
-21 217
Yomon emas, baxs munozara tugamaydi va bazilar fikrini o’zgartirib bo’lmaydi. O’ylaymanki bunga extiyoj ham yo’q, sababi bu mavzular ilk marotaba ko’tarilmadi bu kanalda.
Natijalar man o’ylagandan ko’proq bo’ldi va bundan hursandman chunki gaplarim havoga ketmaganiga bir kichik isbotcha.
Masalaning asli esa trash makrazlar va tupoy mentorlar haqida emas. Balki ularga qarshi boycott haqida.
Masalan ularning sotsial sahifasini spamga report qilsak bo’ladi. Agar ommaviy spam bo’lsa ularning sahifalariga aniq zarar yetadi. Ayiblov sifatida esa qalloblikni dalil qilsak bo’ladi. Shu payitgacha tortishdik, gapirdik nazarimda amal qilish kerak.
Learing masalasiga kelsak. Marhamat communitylar hamma uchub ochiq albatta u yerdagi tartib qoidaga amal qilsangiz bo’lgani.
1 217
O’quv markazlarga qarshimisiz ? Izohlarsiz javob kerak yani aniq javob.
1 217
Bizni community tarbiya qildi va corplarga ishlayabmiz.
Vaybcodingdan tortib AI haypigacha bo’lgan mavzularda manashu gaplar yetarli deb o’ylayman. Yangi avlod communityni esa kapitalistlar tarbiya qilgan!
Fucking corps! Free software!
1 217
Endi siz DNS qanday ishlashini O’zbek tilida o’rgana olasiz. Hullas tarjimani productionga chiqarishibti.
https://howdns.works/uz/ep1/
1 217
Dasturlash tillari haqida o'zim bilgan manbalarni o'qib analiz qilar ekanman. Qiziq narsalarni kuzatdim va shularni bazilarini ochiqlamoqchi edim.
1. Osonlik - Dasturlash tili oson bo'lishga majbur emas. Hamma turlicha qabul qiladi va osonlik darajasi ham insoning bilim dajasiga bog'liq. Agar masalaga biz shu tomondan qaraydigan bo'lsak osonlik degan o'lchovning quvvati kamayib ketadi. Sababi subyektiv va intensiv o'lchov ekani aniq bo'lib qoladi.
2. Ishonchlilik - Tilda qurilgan dasturga nisbatan ishonchlilik masalasi o'ta muhim, lekin tildan hamma turlicha foydalanadi. Masalan haskell zo'r til bo'lsa ham unda ishonchsiz haskellistlar bo'lishi mumkin, ular yoki haskellni yaxshi bilmaydi yoki yana baiz sabablar.
3. Tilga baho berishda oldin tilni o'ziga baho berish kerak - Ko'pchilik solishtirish jarayonida biror dasturlash tilini ekotizimga katta urg'u beradi, ekotizim boyligini tildan ko'ra ustun qo'yadi. Shunday ekan har qanday dasturlash tili haqidagi fikr alohida uning ekotizimi haqidagi fikr alohida bo'lishi lozim. Masalan falon tilda qanday typesystem ishlatilinadi. Falon type system, unda fismadon narsani qanaqa qilsa bo'ladi ? Yani aynan shu dasturlash tiliga qaratilgan savollar jamlanmasi bir contextga olib keladi va imkoniyatlarni constructive solishtirishga sabab bo'ladi.
4. Son vs Sifat - Msdslsn jsda har qanday packageni ishaltishimdan oldin birinchi qiladigan ishim source codega qarash. Sababi sifatsiz paketlar, exploitlar hullas ko'p muammoli narsalar bor. Shu sababdan paket o'zini yaxshilab analiz qilib ko'raman stars vaxakazo ko'rsatkichi yaxshi bo'lsa ham shunday qilaman. Chunki shaxsiy tajribamda turli package corruplar va exploitlarga duch kelganman. Soni ko'p degani sifatli degani emas. Soni kam degani bu imkoniyatni siz qilsangiz juda sekin bo'ladi degani ham emas. Buning sababi esa yana subyektiv yani kim qilishiga bog'liq.
5. Murakkablik - Soddalikga qaramaqarshi argument bilan keltiriladi, ammo shoshmaylik murakkablik bizga qanday tradeoff beryabti ? Nega murakkab ? Biror narsani tez qilish imkoni yo'qligimi ? Unda Go nega murakkab emas ahir gopherlar paketlarsiz code yozishni sevishadi. Nega js sodda ? Tez o'rganiladi. Ammo hechnimaga garantiya berolmaydiku ! Murakkablik va soddalikni bir biriga to'gri qaramaqarshilikda qo'yish kerak degan fikrmning asosi ham manashu. Odatda murakkablik bizga nimalarni taqdim qilishini bilmaymiz, lekin soddalikdan kelgan natijani ham doyim ham taxmin qilib bo'lmaydi.
6. Paradigmalar - Aslida paradigmalarni deyarli hammasi subyektiv. Lekin qiziq fakt mavjud ushbu paradigma qayerda qanday o'zini tutadi ? Masalan OOP tez FP sekin deyishadi. Qizit omoni OOP java yoki C# misolida sekin. FP ham bular misolida shunaqa. Lekin Fp haskellda tez java/c# dan ham tez. Demak paradigma bilan biz perfomance haiqda o'ylashimiz doyim ham ishlamaydi yani umumiy shunaqa ekan deyishimiz adashtiradi bizni. Paradigmalar bizga codeni qanday organize qilish stilimizni belgilab berishidan boshlashimiz kerakdir balki degan fikrga kelganman xozircha.
7. Benchmarklar - Odatda perfomance o'lchovi uchun benchmarklar ishlatishadi. Qiziq tomoni turli tillar turlicha narsalarni ichida optimizatsiya qilgan. Masalan jsda objectlar fieldlari ketma ketligi buzulsa ham tezlikga tasir qiladi. FP tillarda tailed recursioni compiler loopga aylantirvoradi. Hullas bunaqa juda ko'plab optimizatsiyalar mavjud. Shunday ekan benchmarklarni generalize qilish uchun ko'plab faktorlar asosida ballar yeg'ish kerak va analiz qilish kerak anashunda natijalar boshqacha chiqadi, yani qarorlarga arziydigan argumentlar paydo bo'ladil.
1 217
Maktabdagi time killerlar.
Bilasizmi qachongacha ?
Informatika honada lani tog’irlab cs 1.6 o’rnatmagunimizcha.
1 217
Infosiganlarni qoralasam tushunmaydiganlar. O’quv markazlarini yonini oladiganlar uchun ham manashu maqolani tavsiya etaman !
1 217
Gaplarida jon bor. Yaxshi dasturchi qanaqa bo’ladi degan savolga javob qidirayotganlar uchun juda muhim maqola. Translate bilan bo’lsa ham tarjima qilib o’qing!
The Best Programmers I Know.
https://endler.dev/2025/best-programmers/
1 217
Nega hamma inkubatordan chiqgan birxil jojalardaka birxil profile qilib rasm qo’yib oldi ?
1 217
Qiziq narsa hayolga keldi.
Bazi tanishlarim dasturchi bo'lmasa ham o'z ish joyidagi turli ne adekvat, g'alati talab, qoidalarni aytishadi. Shunga o'ylab qoldim nega unday ekan-a?
Hayolimga quyidagicha taxliliy fikrlar keldi.
- Hamma ishlarda ham yuqori darajali kompitensiya kerak emas, shu o'rinda kandidatlar ham aynan manashunaqa parametrlarda bo'lishadi. Masalan oddiy ofis manageri, kotiblikga kandidat bo'lgan odamdan qanaqadir katta kompitensiya kutilmaydi. Albatta bu ham ishga qarab lekin odatiy shunaqa lavozimlarga ko'p narsalarsiz kirish mumkin.
- Kompaniya barcha turdagi ishchilar uchun maxsus qoidalar ishlab chiqishi qiyin, shu sababdan umumiylashtiriladi. Masalan hamma kostyum shim kiysin, ammo dasturchilar, falonchilar bundan mustasino deyilsa boshqaruv qiyinlashib ketadi.
- Bazilar ish beruvchilar qoidalarni aniq argumentlab berolmaydi ham, yani nega bunday ekanini ularni o'zi tushunmaydi. Masalan jschilar nega string Object ekanini tushunmaganidek )) Unaqa tashilotlar o'zlarining ishlash uslublarini boshqa analoglardan copy qilgan, yoki rivojlanish bo'lmagan ammo boshqaruvchilar o'zgarib ketgan va shunda context yoqolgan.
- Yana bir qiziq joyi shundaki bunaqa joylarning juda ko'pi o'zi umuman nima bo'layotganini bilmaydi. Effektivlikni stabil bo'lishini istaydi, bu esa o'zgarishlarni kam qilishga sabab bo'ladi. Shu sababdan streotiplarga aylanib ketgan narsalar bo'lsa ham farqiyo'q muhimi effektivlik stabil yani doyim birxil natija. Masalan 1 oyda 10ta eshik ishlab chiqaryabmiz ! Har oyda 10ta ishlab chiqaramiz ! Bu contextdagi effektivlik birqancha parametrlar jamlanmasi bo'lishi ham mumkin.
- Buyrokratiya - Bu alohida katta mavzu, odatda aqliy mexnatda ham bunaqa jarayonlar ko'p. Lekin shu stabillik beradi, tipo risklarni kamaytiradi. Aslida risklar kamaymaydi balki taqsimlab yuboriladi. Qamaladigan odam bitta emas 10 kishi bo'ladi, shu sabab doyim bir birini ketini kavlashga urunadi va nomutonosib tabaqalanish paydo bo'ladi.
Yuqoridagi narsalardan kegin esa soft skill mavzusidagi juda ko'plab tar'ibotlar hayolimga keldi. Soft skills = Hard skills masalan ))
Boshqacha aytganda kompaniya tizimlari ma'lum templatelar asosiga qurib tashlanadi. Oqibatda esa ko'pchilik biror narsani bilmaydi ham o'zi bu tog'rimi yoqmi, kerakmi yo'qmi. Managerlar keladi o'zicha bilgan zooparkini uyishtiradi, o'rniga boshqasi keladi va uyam shu yangi teater qo'yadi tamam. Ish boshqaruchi, manager hullas bularning kompitensiyasi umuman yo'qligi shundoq sezilib turadi tanqidga makillab qolishidan tortib o'z gapini isbotlashni bilmasligigacha.
1 217
Jamiyatga dasturchilar kerak !
Nafik kerak ? Barbir vaybkoderlikdan uyog'iga aqli yetmayabtiku.
Katta gapirish kerak bo'lsa taxminan bunaqa bo'lsin.
Jamiyatimizga N=NP muammosini hal etadigan olimlar kerak !
Shunda odamlar qiziqadi bu nimaligiga, orasidan potensial chiqadi. Shunday ekan oynayi jahonda gapiradigan gap so'zlarni o'ylash kerak...
