View Full Version : آیا برای اجرای نرم افزار های پایتون نیاز به فریمورک است؟
Hamid19
جمعه 21 مرداد 1390, 22:35 عصر
سلام
میخواستم بدونم نرم افزارهایی که با پایتون نوشته میشه بدون نیار به فریمورک، ویرچوال ماشین یا ... اجرا میشه یا نه؟
یعنی مثل .net و جاواست
یا مثل C++ نیاز به چیزی نداره؟
sgb110
شنبه 22 مرداد 1390, 00:05 صبح
پایتون یک زبان مفسری هست و طبیعتا احتیاج به مفسرش داره
البته راه کارهایی هم وجود داره مثل py2exe که می تونید از اون برای تولید فایل اجرایی ارش استفاده کنید
eshpilen
شنبه 22 مرداد 1390, 09:08 صبح
البته مفسر و کتابخانه های پایتون نسبت به دات نت خیلی خیلی کم حجم تر و سبک تر هست و ایکی ثانیه نصب میشه. اینطوری هم نیست بگه من XP SP3 میخوام و از این حرفا.
نه اینکه بگم پایتون درحد دات نت هست، نه دات نت خیلی مجهزه. ولی برای خیلی برنامه های کوچک یا ساده و معمولی پایتون میتونه انتخاب خوبی باشه و نصبش بر روی سیستمهای مختلف خیلی ساده تره و انتظارات کمتری داره و ضمنا روی لینوکس هم خیلی بهتر از دات نت ساپورت میشه.
sgb110
شنبه 22 مرداد 1390, 18:50 عصر
نه اینکه بگم پایتون درحد دات نت هست، نه دات نت خیلی مجهزه
البته من خیلی با این صحبت موافق نیستم
انصافا از نظر کتابخونه چیزی کمتر از کتابخونه های دات نت نداره
شاید چون شرکت بزرگی مثل مایکروسافت پشتش نیست این امکانات مجتمع و یکپارچه نشدن
eshpilen
یک شنبه 23 مرداد 1390, 08:50 صبح
بنظر من چیزایی که در توزیع رسمی هست خیلی مهمه و باید بیشتر روی اونها اتکا و مقایسه کرد. اینو به تجربه میگم که پیدا کردن و کار کردن با کتابخانه های خارجی بهرحال دردسر و مشکلات بیشتری داره و کسی هم پاسخگو نیست و مسئولیت خاصی در این ارتباط نداره و آیندهء اونا از نظر رفع باگ، آپدیت و گسترش و تغییرات لازم تضمین خیلی کمتری داره نسبت به اجزای توزیع رسمی.
وگرنه کتابخانهء خارجی و Third party احتمالا زیاد هست.
حالا شما کتابخانهء استاندارد پایتون رو مقایسه کنید با دات نت. اصلا قابل مقایسه نیست.
ضمنا دات نت ساختار و فناوری پیشرفته تر و کامل تر و هوشمندتری داره، کامپایل میشه و سرعتش بیشتره، و طیف وسیعی از فناوریهای جدید یا ابداعی رو در خودش داره مثل WCF و WPF.
اما باوجود اینا بازم میگم زنده باد پایتون و زنده باد نرم افزار آزاد/بازمتن!
چون بقدر کافی کامل و با کیفیت هستن. توی اون رنج وسیع دات نت بخصوص روی ویندوز شاید رقیبی نباشه، اما برای خیلی کارها و جاهای دیگه ابزار عالی ای هست. و بهرحال آلترناتیوی هست که بشریت رو از وابستگی به محصولات انحصاری نجات میده. برنامه نویس قوی با پایتون هم پشتک بالانس میزنه و شاید حتی بهتر هم این کار رو بکنه، ولی خب اون برنامه نویس قوی که بنده میگم تعدادشون خیلی کمه، و بحث کارهای تجاری عادی و Productivity هم هست که در اونجا اساسا پایتون در چنین رقابتی مشکل خیلی بیشتری داره. کی میره دات نت رو بذاره کنار و از پایتون برای کار تجاری استفاده کنه؟ کدوم شرکتی؟ کدوم تیمی؟ اگر این کار رو نمیکنن بی علت نیست دیگه. غیر از اینه؟
اما پایتون حتی برای کسی که از زبانها و فریمورک های دیگری استفاده میکنه ابزار دسته. بطور مثال بنده خیلی وقتا برای تست و برنامه های آزمایشی ازش استفاده میکنم، چون خوراکه برای این کار. سبک، سریع، مشاهدهء نتیجهء تغییرات در کد برنامه بصورت آنی، سینتاکس موجز و کوتاه نویس، بدون نیاز به یک محیط IDE سنگین و کند مثل ویژوال استودیو که دو سه تا ازش رو باز کنی سیستم میخوابه، برای تست روی سیستمهای دیگه نصب پایتون خیلی راحتتر و شدنی تره نسبت به دات نت، ... .
بیاید تعصبی فکر نکنیم. هرچیزی رو بهر کاری ساختند. بنظر بنده محدودهء کارایی مورد نظر برای پایتون محدودتر از دات نت هست. بنابراین نباید دو ابزار رو که هدف و ساختار و محدودهء متفاوتی دارن بصورت کلی با هم مقایسه کنیم. مگر اینکه اونا رو برای کاربرد و محدودهء خاصی مقایسه کنیم.
ضمنا دات نت یک فریمورک بزرگ و منسجم هست. اما پایتون به اون صورت فریمورک نیست، زبان برنامه نویسی شیء گرا همراه با کتابخانه هاش هست.
sgb110
یک شنبه 23 مرداد 1390, 13:52 عصر
بنظر من چیزایی که در توزیع رسمی هست خیلی مهمه و باید بیشتر روی اونها اتکا و مقایسه کرد
اگه بخوایم این جوری نگاه کنیم حق با شماست
اما همین که شما خیلی راحت می تونید از کتابخونه ها و api های زبون های دیگه به راحتی تو پایتون استفاده کنید یه مزیت خیلی بزرگ که نباید فراموش کرد.
بیاید تعصبی فکر نکنیم. هرچیزی رو بهر کاری ساختند. بنظر بنده محدودهء کارایی مورد نظر برای پایتون محدودتر از دات نت هست
من تعصبی نسبت به پایتون ندارم.همین الان بیشتر پروژه هایی رو که ازشون دارم پول در می آرم رو با دات نت انجام می دم.امادارم می بینم اگه یه روز مجبور بشم روی سکویی غیر از ویندوز کار تحویل مشتری بدم یا اگه مجبور بشم هزینه خرید پک ویژوال استادیو رو بدم و نخوام این هزینه رو بکنم، می تونم بدون هیچ محدودیتی از پایتون استفاده کنم.
در واقع می خوام بگم تقریبا کاری نیست که با دات نت بشه انجام داد و با پایتون انجامش غیر ممکن باشه
هر چند قبول دارم شاید به راحتی و سادگی کار در دات نت نباشه(و در بعضی جاها حتی راحت تر و ساده تر از دات نت هم میشه)
r00tkit
یک شنبه 23 مرداد 1390, 17:22 عصر
حرفات در کل درست بود " مثلا اینکه مجبور بشی پروژه رو روی یه سیستم عامل دیگه بنویسی" من خودم تو چنین وضعیتی بودم و از پایتون استفاده کردن ولی
این رو
اما همین که شما خیلی راحت می تونید از کتابخونه ها و api های زبون های دیگه به راحتی تو پایتون استفاده کنید یه مزیت خیلی بزرگ که نباید فراموش کرد
یه مثال بزن
eshpilen
یک شنبه 23 مرداد 1390, 23:09 عصر
نه بابا زیادم راحت نیست این کار. منظورم استفاده از کتابخانه های زبانهای دیگه هست. حالا شاید خیلی هم سخت نباشه، اما بهرحال با اینکه کد خالص پایتون بنویسی فرق میکنه؛ نه؟
چون مثلا وقتی با کتابخانه های سی اینترفیس میکنی توابع و تبدیلات خاص خودش رو نیاز داره و این کارا شباهت زیادی به موجز و سطح بالا بودن کدهای خالص پایتون و ساختار API اون ندارن. بهرحال شما دارید با یه کتابخانهء خارجی کار میکنید که ساختار API خودش رو داره و نوعهای داده ای پیچیدهء پایتون رو نمیشناسه و پایتون هم بعکس نوعهای داده ای پیچیدهء اون رو نمیشناسه و بین انواع داده ای اینها نیاز به تبدیل هست.
بعدم مطمئنید کتابخانهء همهء زبانها؟ بنده بنظرم فقط امکان استفاده از کتابخانه های سی رو دیدم در رفرنس پایتون (توسط کتابخانه ctypes). شاید سی++ رو هم بشه؛ نمیدونم.
ضمنا الان دیگه خیلی زبانها اینطور هستن که میتونن از کتابخانه های سی و سی++ استفاده کنن. مثلا دات نت هم همینطوره.
ولی بنظر من این کار مثل اجزای خود زبان نمیشه.
تازه باید دید اون کتابخانه های خارجی دو مزیت مهم رو دارن یا نه: «بازمتن» بودن و «کراس پلتفرم» بودن.
من اگر پایتون رو دوست دارم بخش بزرگی از اون بخاطر بازمتن بودن و کراس پلتفرم بودنشه. وگرنه میخوام چیکارش کنم؟ خب میرم از ویژوال سی++ یا دات نت استفاده میکنم. اگر یه بخشی از برنامه بازمتن و کراس پلتفرم نباشه ارزش پایتونی بودنش اگر از من میپرسی، یک پنجم میشه! ضمنا بازمتن بودن مهمتر از کراس پلتفرم بودن هست، ولی کراس پلتفرم بودن هم خیلی مهمه.
راستی یه نگاه به یه نمونه از استفاده از ctypes بکنید:
>>> i = c_int()
>>> f = c_float()
>>> s = create_string_buffer(b'\000' * 32)
>>> print(i.value, f.value, repr(s.value))
0 0.0 b''
>>> libc.sscanf(b"1 3.14 Hello", b"%d %f %s",
... byref(i), byref(f), s)
3
>>> print(i.value, f.value, repr(s.value))
1 3.1400001049 b'Hello'
>>>
بنده خیلی وقته از خوندن رفرنس پایتون میگذره و جزییاتش یادم نیست، اما فکر میکنم از همین دستورات معلومه که استفاده از توابع و آبجکت و ساختمان داده های واسط نیاز هست و کدها شباهت چندانی با کدهای سرراست پایتون خالص ندارن.
البته حالا باز بیایم این کدها رو تاحد ممکن بچپونیم توی تابع و کلاسی بعنوان Wrapper شاید بد نشه. ولی بهرحال برای هرکار و هر تابع باید خودمون یک Wrapper تهیه کنیم. خلاصه یخورده ماجرا داره و اونقدرها هم سرراست نیست بنظرم.
البته فقط پایتون نیست که این داستان رو داره.
sgb110
دوشنبه 24 مرداد 1390, 09:38 صبح
نه بابا زیادم راحت نیست این کار. منظورم استفاده از کتابخانه های زبانهای دیگه هست. حالا شاید خیلی هم سخت نباشه، اما بهرحال با اینکه کد خالص پایتون بنویسی فرق میکنه؛
ضمنا الان دیگه خیلی زبانها اینطور هستن که میتونن از کتابخانه های سی و سی++ استفاده کنن. مثلا دات نت هم همینطوره.
بله حق با شماست
اما برای من هم این جای سوال داره که چرا از این ویژگی همیشه به عنوان یکی از نقاط قوت پایتون نام برده می شه؟
راستش تا الان لازم نشده که بخوام برای کاری از کتابخونه زبون دیگه ای مثل سی استفاده کنم(در واقع با یه سرچ تو اینترنت کتابخونه های مورد احتیاجم رو پیدا کردم) و اینایی رو که گفتم در حد چیزایی هست که اینور و انور خوندم.
اما وجود کتابخونه های زیادی که هسته اصلیشون سی/سی++ بوده (مثلا کیوتی) و مطالبی که در مورد استفاده از کتابخونه زبان های دیگه تو پایتون خوندم این ذهنیت رو بوجود آورد که شاید واقعا برتری خاصی نسبت به زبون های دیگه داشته باشه(البته الان که فکر می کنم مثلا همین کیوتی برای خیلی از زبون ها توسعه پیدا کرده)
eshpilen
دوشنبه 24 مرداد 1390, 20:01 عصر
مزیت که هست بالاخره. هر زبانی این قابلیت رو نداره. مثلا در PHP یادم نمیاد چنین چیزی دیده باشم.
ضمنا بنظرم کتابخانه ها و برنامه های پایه هیچ زبانی به اندازهء مجموعهء سی و سی++ زیاد و مهم نیست.
مثلا شما میخوای رمزنگاری کنی، یا فشرده سازی، میتونی از کتابخانه های خوب سی و سی++ و سرعت بالای اونها در این زمینه ها که اغلب نیاز به سرعت بالا دارن استفاده کنی.
همچنین جهت دسترسی به بعضی امکانات و سرویسها یا کنترل و پیکربندی سیستم عامل احتمالا.
ولی بهرحال امکانات استاندارد و Builtin یه چیز دیگه هست و نمیشه این دو رو یکی دونست.
اما برای من هم این جای سوال داره که چرا از این ویژگی همیشه به عنوان یکی از نقاط قوت پایتون نام برده می شه؟بستگی داره کی گفته باشه.
کلا حداقل پایتونیست های وطنی که بنده دیدم خیلی تبلیغات و اغراق کردن درمورد پایتون. تاجاییکه بنده گفتم حتما باید برم خودم بخونم و یاد بگیرم ببینم چیه این پایتون که اینقدر سر و صدا و ادعا هست راجع بهش!
البته جدا زبان جالب و بدردبخوری بود و از یاد گرفتنش خوشحالم و هرگز فکر نمیکنم اتلاف وقت بوده. بعضی چیزا رو بالاخره باید یاد گرفت، لزوما نه فقط بخاطر حرفهای دیگران. ولی الان حداقل دیگه میدونم چه کسی در چه موردی چرا اغراق میکنه.
اینم بالاخره جزیی از کار ماست، و شاید دردسرهای اون.
یه چیزی که بنده بهش رسیدم اینه که اینطور چیزها رو تا وقتی خودت نری کامل مطالعه نکنی و یاد نگیری نمیفهمی چی هستن و واقعا بدرد چی میخورن و چقدر قابلیت دارن. و این دانستن بنظر بنده اونقدری مهم و مفید هست که آدم این کار رو بکنه. البته نه درمورد هرچیزی. باید هوشمندانه انتخاب کرد. من میدونستم که بهرحال پایتون در اون حد مهم و کاربردی هست که به یاد گرفتنش بیارزه، ولی فشار تبلیغات و سوال و سردرگمی هم انگیزهء مضاعف دادن و باعث تسریع در این عملیات شد!!
البته الان که دیگه تاحدی حرفه ای شدم و انواع مختلفی از زبانها و فریمورک ها رو دیدم بینش خیلی عمیق تر و سریع تری پیدا کردم و از یه زبان چنتا کد و نمونه ببینم میتونم تقریبی حدس بزنم (با ضریب اطمینان قابل توجه) که کلا چطوریه و در چه حدودایی هست از نظر کارایی و تبلیغاتی که روش میشه.
البته الان که فکر می کنم مثلا همین کیوتی برای خیلی از زبون ها توسعه پیدا کردهکتابخانه های کیوت تحت سی++ نوشته شدن.
برای بقیهء زبانها بقول معروف Binding داره.
شاید Binding اون برای پایتون هم به همین صورت، یعنی با استفاده از قابلیت پایتون برای ارتباط با کتابخانه های سی/سی++، نوشته شده باشه.
اگر اینطور باشه اینم نشون میده که چرا این ویژگی مهم و مزیت قابل توجهی هست.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.