saeedx4
۱۳۹۶/۱۰/۲۳
اندروید بحثش فرق می کنه چون اندروید به ماشین مجازی جاوا وابسته هست برنامه نویس مجبوره از جاوا یا زبانهای که با JVM سازگار هستن استفاده کنه پس نه تنها پایتون بلکه تقریبا هیچ زبانی (منهای C و C++ اونهم نه برای اپ بیشتر برای ایجاد کتابخانه اندروید) برای اندروید مناسب نیست. اگه یک برنامه hello با کیوی بسازید و بعد از کلی رنج تبدیل به apk کنیم میشه ۵۰ مگ به خاطر اینکه کیوی کل مفسر پایتون رو میچپونه داخل اپ شما پس طبیعی که اپ شما سنگین بشه. کلا اگه ما به روش های غیر نیتیو اپ بسازیم هزینه اش نداشتن شکل و زیبایی اپ های نیتیو اشغال رم زیاد و بالا رفتن حجم برنامه نهایی خواهد بود
اما پایتون و دسکتاپ. پایتون یکی از بهترین زبانهای تولید اپ های کرس پلتفرم دسکتاپ هست. به این خاطر که لایبری های که برای پایتون وجود داره اکثرا نیتیو هستن که نمونه اش همین tkinter هست و بسته به سیستم عامل شکل و شمایل native به خودش میگیره. من یک اپ حدود ۱۰۰۰ خط با tkinter نوشتم و به راحتی ازش exe گرفتم و الان بعد از اجرا وقتی به رم سیستمم نگاه می کنم فقط ۸.۸ مگ فضا اشغال کرده. فراموش نکنیم که اپ دسکتاپ بیت تورنت با پایتون نوشته شده.
بحث مولتی تردینگ هم ربطی به لایبرری که ما با استفاده از اون اپ دسکتاپ می سازیم نداره مولتی تردینگ ویژگی هست که باید زبان برنامه نویسی ازش پشتیبانی کنه نه لایبری. به خاطر اینکه پایتون در نهایت به سی تبدیل میشه و از اون جایی که سی یک زبان مدرن نیست و در سال ۱۹۷۰ سی پی یو های چند هسته ای وجود نداشتن به طبع مولتی تردینگی هم وجود نداشت در پایتون میشه مولتی تردینگ کار کرد اما نه به خوبی زبانهای مدرنی مثل Rust و یا Go که دقیقا یکی از دلایل ایجادشون به همین مورد بر میگرده.
الان ادیتور اتم رو در نظر بگیرید که وقتی اجرا می کنیم فقط اجرا شدش ۵۰۰ مگ فضا اشغال میکنه چرا؟ چون شما عملا یک کرومیوم رو اجرا کردی که فقط آدرس بار برای جستجو نداره با این حال خیلی از دولوپرها دارن از اتم یا وی اس کد یا براکت که همگی برنامه های دسکتاپی هستن که با تکنولوژی های وب ساخته شدن استفاده می کنن چرا ؟ چون رم مهم نیست در بدترین حالت الان هر سیستم یا حتی هر گوشیی ۲ گیگ رم داره.
اگه دوستان می اومدن می گفتن پایتون برای GUI مناسب نیست چون ابزارهای ویژوالی خوب مثل مایکروسافت ویژوال استودیو نداره باز یه چیزی ولی ایرادهای عجیب غریب گرفتن اصلا حرفه ای و خوب نیست.
اگه پایتون برای توسعه برنامه های دسکتاپ مناسب نبود این همه لایبری GUI هر روز براش ساخته نمیشد ملت تشنه ای این هستن که هر کاری رو با پایتون انجام بدن و هزینه اش هم اصلا مهم نیست و پایتون هر کاری انجام میده و هر روز این هزینه ها رو داره میاره پایین
به نظر من پایتون برای ساخت اپ های دسکتاپ کرس پلتفرم نه تنها خوبه بلکه فوق العاده است.
و اینو هم فراموش نکنیم که با پکیج pythonnet ما دسترسی کامل به . NET داریم و عملا هر چیزی که با سی شارپ میشه ساخت به لطف این پکیج می تونیم با پایتون بسازیم.
بهنام صباغی
۱۳۹۶/۱۰/۲۳
نوشتن برنامه gui با پایتون یکم غیر منطقیه
من مدت ها وقت گذاشتم روی این جریان پایکیوت و کیوی و ... ولی در اخر به این نتیجه رسیدم باید قبول کنیم که شاید یک زبان توی همه زمینه های بتونه خروجی بده ولی این به این معنی نیست که باید توی اون زمینه استفاده هم بشه و این فقط در مورد پایتون نیست همه زبانها منطقه قدرت دارند و توی اون شاید بینظیر باشند ولی توی یک سری زمینه ها با این که میشه ازشون استفاده کرد بهتره استفاده نشه
مثلا پایتون برای نوشتن وب و اسکریپت زیاد استفاده شده و نتایج خوبی هم داده ولی برای اپلیکیشن زیاد استفاده ازش جالب نیست مخصوصا اگر برنامه یکم رنگ و روی تجاری داشته باشه در مورد اپ های معمولی هم باز من توصیه میکنم استفاده نکنید چون به دلیل بهینه نبودن موجب میشه کارتون با این که خیلی براش زحمت کشیدید یه کار ضعیف از آب در بیاد من زمانی که میخواستم خروجی apk برای اندروید با kivy بگیرم اول که خیلی اذیت شدم بعد متوجه شدم حجم خروجی به قدری بالاست که اصلا قابل تحمل نیست و از اون بدتر همه جا از بهینه نبودن و مصرف زیاد رم و داغ کردن گوشی موقع اجرا صحبت شده بود . در مورد دسکتاپ هم همینه کاربر نگاه میکنه میبینه مثلا یه اپ ساده داره به شدت رم و سی پی وی مصرف میکنه خب چون اپ ساده هست بیخیالش میشه و اصلا ازش استفاده نمیکنه پس برای اپ ساده هم زدن gui با پایتون جالب نیست .
نکته : من خودم آموزش gui با tkinter دادم یه زمان توی سایتم ولی وقتی رسیم به مرحله ای که خودم میخواستم استفاده کنم ازش دیدم مشکلات شدیدی داره مثلا از مولتی ترد پشتیبانی نمیکرد و ... بعد فهمیدم ارزش اون همه وقتی که برای یاد گرفتن و آموزشش گذاشتم رو نداشته . من تا ته این راه رفتم به نظرم دوستان دیگه روی این موضوع وقت نذارند .
موفق باشید