Programming ∀
Kanalga Telegram’da o‘tish
Ushbu kanalda IT va Dasturlashga aloqador mavzularda subyektiv fikrlarimni bayon qilaman.
Ko'proq ko'rsatish1 217
Obunachilar
Ma'lumot yo'q24 soatlar
-87 kunlar
-3530 kunlar
Postlar arxiv
1 217
Manashunga o'xshagan sabablarni deb, dasturchining hard skilli kuchli ekani doyim ham qiziq emas.
Shu sababdan ko'p narsalar templatelar, boilderplatelar ustiga qurilgan.
Masalan FAANG uchun hamma letcoder bo'ladi, ammo real hayotga hammayam apply qilolmidi biror algorithmni.
Hamma backenderlar OSI ni yodlab beradi ammo aniq caselarda aytib berolmaydi biror narsani so'rasa.
Bizni holatda esa yana ham mujmal narsalar bor. Hamma dasturchi bo'lmoqchi bo'lganlar learning qiladi ammo asosiy maqsadni ish topish deb qo'yishadi. Shunga mos ravishta asosiy yutuq yoki dasturchilik belgisi ishlash deb belgilanadi. Dasturlashni bilishni isboti ishlash degan fikr ham asossiz.
Hamma turli narsani major deydi. Kimdir Algo & DS bosish kerak deydi. Kimdir dasturchi uchun math shart deydi.
Kimdir computer science degree kerak deydi.
Talabalar, o'rganuvchilar esa odatda juda ham shoshilishadi. Hammani aytganini qilmoqchi bo'lishadiku ammo hechnimaga erishmasdan vaqt yoqotishlari mumkinligi haqida hech o'ylab ko'rishmagan.
Business requirement deymizku ammo bazida business o'zi tog'ri talab qo'yabtimi ? Ular aytgan narsani o'zi tog'rimi ? Bunaqa savollar haqida kam o'ylaymiz yoki isbotlashni talab qilmaymiz.
1 217
Dasturlashni o’rganishda juda ko’p narsalar o’rganamiz ammo hammasiniyam hayotga tadbiq qilmaymiz.
Aksariyat kompaniyalarda ham hard skillardan ko'ra ko'proq soft skillar muhimroq bo'ladi va shunga qarab kvalifikatsiya belgilashadi.
Hullas manashunaqa dilema mavjud va bu masalaning sabablari anchadan buyon o'ylantiradi.
1. Kundalik discussionlarda ham "Business talab" shu context bilan ko'p suxbatlarda argumentlar qilinadi va bu argumentlar kuchliroq tosh bosadi bazida.
2. Aksariyat dasturchilar yoki jamoalar ham istashadi code maksimal sodda va bitta tepda bo'lishini. Bunga misol sifatida hexogonal architecture kabi ideyalarni olsak bo'ladi. Hamma tushunadi yoki ko'pchilikga tushunarli bo'la oladi.
3. Texnalogiyalar, uslublar kabi domainlar ham juda ko'p ekani. Hechkim falon narsa uchun falon uslub yoki texnalogiya yechim mos keladi deb aytolmaydi, ko'pchilik esa bu haqida umuman qayg'urmaydi.
4. Aksariyat holatlarda bazi dasturchilar ancha tor doirada masaln framework yoki aynan bitta til doirasida fikrlashadi. Bunga sabab ham o'zlari yaxshi bilgan narsa idealogiyasi bilan fikrlash.
5. Hamma ham self study qilgisi kelmaydi, bazilar esa umuman yangi narsalar o'rganishda juda passive bo'ladilar, bunga ham o'zlarining sabablari bor albatta.
6. Bazi bir yechimlar jamoaviy fikrlashni talab etadi, inson yolg'iz hamma narsani ham eplolmasligi mumkin. Bir qarorga kelish masalasida esa eng katta jarayon bu debatlar, afsuski debatlar jarayonida ko'pchilikda turli muammolar sodir bo'ladi. Bazida consensusga kelolmaslikning asosiy sababi context turlicha bo'lgani bo'ladi.
7. Odatda biror muammoning complexity darajasini bilmasdan qilingan yechimlar tufayli anashu muammo doirasia ko'p aylanib yurishadi. Bu standartlashtirish va boilerplatelarning tuzog'i desa ham bo'ladi.
1 217
Haskellda hamma narsa yoqadi lekin eng ko’p yoqgan narsalardan biri.
<|> Alternative va umuman applicativelar.
Concurrency - osonligidan shokga tushib qoludim.
Cabal - Paket manager, builder. Cabal o’zida coveragelar ham qilaverasiz.
undifined - bu man uchun orginal narsa yurakdan yoqtiraman.
1 217
Telegram appda calendar bo’yicha biror contentni ko’rish. Kanaldan kanalga forward qilinganda forwarded kanalni ochish ishlamayabti.
Telegramni ichi ketyabti :(
1 217
Ko'plab zodagon programmerlar haqida ularni qilgan ishlari haqida o'qib tanishib juda havas qilaman. Directioni qayerdan olish kerakligi esga tushaveradi.
Masalan social activity bo'yicha albatta Stallman amakidan o'rnak olish kerak.
Abstraction haqida esa Philip Wadlerdan.
Hullas bunaqa makkam amakilarning qilgan ishlarini fanatiman.
Xozir Simon Marlov haqida o'qib qilgan ishlari bilan tanishib o'tirgan edim.
1 217
Soft skillarimniyam hard skillarimniyam Haskell tarbiya qiyabti deya olaman.
1. Communitydagi activity soft skillarni.
2. Code yozish va o'rganish hard skillarni.
Bonusga networking !
Haskell superiority 😘
1 217
piton syntaxni bilmimanku, lekin enumlarni shunaqa holatga keltirishsa ham ajoyib bo'lardi.
class Option[T](Enum):
Some(t:T)
None1 217
Repost from Находки в опенсорсе
Enum и сложность
Enum – один из самых сложных модулей в питоне, я не шучу. Количество нюансов – просто огромное. Так как я последние несколько дней занимаюсь улучшением поддержки
Enum в mypy, то я решил рассказать про интересные штуки из модуля enum, которые вы скорее всего могли пропустить.
Доки: https://docs.python.org/3/library/enum.html Их все равно никто не читает.
global_enum
Чудовищная фича. Просто ужас. Засовывает все значения Enum в sys.modules[module].__dict__:
>>> from enum import Enum, global_enum
>>> @global_enum
... class Pets(Enum):
... CAT = 1
... DOG = 2
>>> print(CAT)
CAT
Да, создает новые глобальные константы. Нет, mypy такое пока не поддерживает.
Для чего нужно? Синтаксический сахар для обратной совместимости. Когда были раньше CAT и DOG как константы в модуле, а потом появляется Enum. Но все равно не советую.
_simple_enum
>>> from enum import IntEnum, _simple_enum
>>>
>>> @_simple_enum(IntEnum)
... class Pets:
... CAT = 1
... DOG = 2
...
>>> print(Pets.CAT)
1
Специальный внутренний хелпер для более быстрого создания Enum классов. Используется в основном внутри CPython для ускорения импорта библиотек. Не поддерживается mypy.
@unique
Декоратор, который позволит найди дубликаты по значениям в ваших Enum типах и вызвать ошибку. Обязателен для использования. Иначе, где-то можно сделать опечатку:
@unique # <- will find the problem
class Pets(Enum):
CAT = 1
DOG = 1 # should be 2
и искать её всю жизнь.
Flag и FlagBoundary
Зачем нужны Flag?
from enum import IntFlag, FlagBoundary
class Permission(IntFlag, boundary=FlagBoundary.STRICT):
READ = 0
WRITE = 1
Для сочетания друг с другом: Permission.WRITE | Permission.READ. Есть 4 разных поведения для таких случаев: https://docs.python.org/3/library/enum.html#enum.FlagBoundary
Советую всегда использовать FlagBoundary.STRICT, если сомневаетесь.
Черная дыра для багов и изменений от версии к версии.
member и nonmember
В Enum есть довольно сложная логика, какие объекты считать за member (часть enum), какие за nonmember (просто какие-то объекты).
Кратко:
- Имя не приватное, имя не __dunder__ и имя не _sunder_
- Имя не в _ignore_
- Не вложенный класс и не метод
- Не инстанс nonmember
Пример:
from enum import Enum, member, nonmember
class Example(Enum):
_ignore_ = ['a'] # nonmember
a = 1 # nonmember
b = 2 # member
__c__ = 3 # nonmember
_d_ = 4 # nonmember
e = nonmember(5) # nonmember
__f = 6 # nonmember
def g(self): ... # nonmember
@member
def h(self): ... # member
Думаю, что всем спалось спокойнее без такого знания. Старайтесь делать такие енамы, чтобы не приходилось использовать темную магию. И старайтесь не пользоваться member и nonmember.
Enum в .pyi файлах
Недавно Typing Spec для енамов был изменен. https://typing.readthedocs.io/en/latest/spec/enums.html
Раньше в .pyi файлах мы аннотировали енамы так:
# mymodule.pyi
class Pets(Enum):
CAT: int
DOG: int
Однако, теперь такой способ будет создавать два nonmember'а. Правильный способ:
# mymodule.pyi
class Pets(Enum):
CAT = 1
DOG = 2
Почему? Потому что значения полей – крайне важно для типа Enum.
Для старого кода mypy выкидывает ошибку.
Обсуждение: а вам нравились Enum в Python? А сейчас?
| Поддержать | YouTube | GitHub | Чат |1 217
Cabalchalik paket manager yo'qda, nima bo'layotganini qisqa va lo'nda aytib turadi.
1 217
Breaking down the income streams and totals from my third year as a full-time independent open source maintainer.
https://www.joshuakgoldberg.com/blog/2024-finances-in-review/
