من این مشکلو با گو هم دارم
هرچند اون هم خیلی تلاش کرده این همه سال obvious و verbose باشه
اما اونم به نظرم کم کم داره فاصله میگیره از فلسفه اصلیش
و مسئله اینه که این پروپوزالی هم که هست چیز جدیدی اضافه نمیکنه
یکی دو خط رو فقط کم میکنه
در مقابل کلی خوانایی (به نظرم) کم میشه
اتفاقا به شدت به خوانایی کد کمک میکنه. به جای اینکه ۴ تا کانشیدن ببینم که داره null check رو انجام میده یک ضرب کل expression میاد جلو.
منتهی اینکه از این قابلیت بخواین استفاده کنید یک چیز اسپاگتی عجیب غریب ۲۰ خطی بنویسید مشکل فیچر نیست.
مثل lambda function. شما کل برنامتون رو میتونید تو یک lambda بنویسید. اما کی مقصره اینجا؟ کسی که این آپشن رو به شما داد؟ یا شمایی که abuse کردین فیچر رو. در جهتی استفاده کردید که براش درنظر گرفته نشده بود.
lambda داشتن بسیار کار درستیه و پشتوانه علمی قوی داره
اصلا چیزی وجود داره به اسم محاسبات لامبدا که میشه نشون داد کل نظرییه مجموعه ها و خیلی چیزا رو از محاسبات لاندا استخراج کرد
منطق داره اون و اشتباه نیست
اون لامبدایی که میگی توی پایتون وجود نداره، پیادهسازیش هم دقیقا خود آبجکت function عه و مورد استفادهش هم
throw away function
هست
اگه لامبدا کنونی پایتون الان با اصول "عقلانیت" شما مشکل پیدا کرد تا بندازیمش دور؟
بیشتر حمله شخصی داری میکنی
ولی محتوای حرفتم غلطه
پایتون به خاطر مولتی پارادایم بودنش این رو آورده که پارادایم فانکشنال رو ساپورت کنه و این از اونجا اومده
خب این نظریه و پشتوانه علمی قوی رو برای منم بفرستید چون تو پایتون تفاوت چندانی بین فانکشن و لامبدا وجود نداره صرفا اسم نداره و یک سری رفتارهای جزئیش فرق داره برای optimization همین یوزکیسی که اسم بردم که شما یک throw away فانکشن داشته باشید.
شما میتونید یک اپلکیشن خیلی بزرگ بنویسید بدون استفاده از لامبدا فانکشن. و برعکس. هیچ ایراد و عیبی بهش نیست.
هیچ چیز واجبی هم نیست خیلی زبونا throw away function ندارن.
اون چیزی که میگه حساب لامبداست که سازندهش آقای چرچ، استاد دکتری آلن تورینگ بوده
بعدش یه نظریه باهم میدن که حساب لامبدا + ماشین تورینگ و داستانای محاسبهپذیری و اینا خروجیهاشه
که لامبدای پایتون اصلا این چیزا نیست 😂😂😂😂
بعد حرف گویدو ون راسم میاری که آقا
but that's just a local variable to which the function object (which is
exactly the same type of object that a lambda form yields) is
assigned.
و در جواب میگه نخوندم
بدیهیه که اهمیت نمیدم و نمیخونم چون واقعا هم اهمیت نداره
خط اولش نوشته استیتمنت نداره رو به عنوان جواب سوال
دقیقا چه نیازمندی لاندا رو نقض میکنه؟
فرستادی
تو اصلا شرطشو نمیدونی چیه! یعنی اگر تا الان بهش فکر نکرده بودی با یه نگاه سطحی میتونستی تشخیص بدی
بعد حالا بیام بحث تورینگ کامپلیت بودن زبانو پیش بکشم خوب مشخصا نمیدونی اینا یعنی چی
وقتی یه چیزی تورینگ کامپلیته هر پارادایمی رو میتونه بسازه. تاکید میکنم هر پارادایمی. چون تورینگ کامپلیته پس قرار نیست چیز جدید بیاره
شما ولی همون گیفتو بفرست فکر کن یه وریبل الکیه از سر سرخوشی درست شده
name = response.customer.name ?? "umm"
name = response.customer.name ?: "what"
name ??= response.customer.name ? "the" : "heck"
name ?str = response.customer?.name
امیدوارم تا دیر نشده همینجا Rejected شدنش رو ببینم تا اینکه ببینم قبول شده و دو روز بعدش انتظار چنین syntax هایی رو هم داشته باشم. فارغ از گونه بهبود در هر زمینهای، شخصا این رو کثیفکاری محض میبینم. وقتی یک syntax جا میوفته واقعا دلیلی نداره که تغییری کنه. تغییر، اونم نهایتا درحد اضافه کردن چند soft keyword مثل lazy import رو میشه قبول کرد. ولی تغییری مثل این، تاثیر زیادی روی syntax داره و جدا از بههمراه اوردن ناخوانایی کد، زبان رو بیش از حد خودش منعطف میکنه. شور هر چیزی رو نباید در اورد واقعا. بعضا یک زبان بیش از حد خودش منعطف هست و با انعطاف، سلایق مختلف کدزنی هم بوجود میان که مقداری کار های گروهی رو هم سختتر میکنند.
حداقل من از زبان هایی که هـــر مفهوم و شیوه کدزنی رو در خودشون چپوندند خیری ندیدم و بیشتر اذیت شدم تا اینکه منفعتی نصیبم شده باشه.
البته گیدو خیلی وقته دیگه BDFL نیست که نظر نهایی رو بده (سر walrus operator). الان steering council که ۵-۶ نفر هستن (که گیدو توش نیست) تصمیم گیری میکنن یه pep قبول بشه یا نه
من ولی امیدوارم accept شه. همچنین منتظر دیدن intersection و باقی ویژگی های تایپ ها تو پایتون هستم 😁️️️️️️
ببین منعطف بودن همیشه دو لبه هست دیگه. از گذشته بهش نگاه کنی وقتی میگن list comp هست، conditional expression هست یعنی بتونی یه چیزی رو خوانا تر بنویسی، ولی میتونی تصمیم بگیری one-liner های پیچیده و چند خطی و ناخوانا هم بنویسی. خیلی ساله اینا هستن و کسی که بخواد کثیف بنویسه مینویسه،کسی که بدونه کجا خوبه که استفاده بشه استفاده میکنه و الکی ۵ خط نمینویسه، یه نصفه خط مینویسه راحت. مثال های توی pep رو نگاه کن.
این یه دونه ویژگی بیاد ماهیت زبان رو طی این سالها عوض نمیکنه.
همچنان کسی میاد سراغ پایتون که(جدا از اکوسیستم به شدت قویش) میخواد بهترین تجربه ی انسانی موقع نوشتن و خوندن و نگهداری کد رو داشته باشه و پایتون داره ابزارش رو فراهم میکنه. شما میبینی یه جا جاش نیست استفاده نکن یا اگه کسی کرده تو ریویو بگو نکنه. مثلا همون if عه، اگه با None نبودن customer یه کارهای دیگه ای هم میخوای بکنی دیگه اینو نمینویسی درسته؟ ولی اگه صرفا ۵ خط نوشتی که اسم بگیری اگه none نبود چرا نه؟ بیننده با یک نگاه میفهمه این بلاک از کد رو که داره نگاه میکنه فقط هدفش گرفتن یه اتریبیوت در صورت وجود از یه composition chain هست
👍2
PPython Backend Fellow@PythonFellow · گروه · فناوری