دو هفته ای می شود که دارم هر شب توی سر خودم و کامپیوتر می زنم تا پایتون را یاد بگیرم. (لازم به ذکر است که این برنامه توسط یک خزنده طراحی شده است. برای همین هم اسمش پایتون شده! نماد شکوه و ابهت خزندگان. این مار غول پیکر! بگذریم) چشم می دوزم به اسلاید های کتاب آموزشی، یک "ها؟" می گویم و دو دقیقه بعدش "آها!!" می گویم و سرم را مشتاقانه بر می گردانم ببینم کسی هست آن دور و بر ها که من هیجان اکتشاف متد ها و توابع جدید برنامه نویسی را با او به اشتراک بگذارم یا نه، همه سرشان توی گوشی شان است یا چشمشان به کتاب و تلویزیون یا دارند راجع به گاو مش حسن صحبت می کنند، بر می گردم و شروع می کنم به نوشتن کد های آموخته شده در محیط برنامه.
ولی یک مشکل اساسی وجود دارد به نام "الگوریتم". وقتی همه ی امکانات برنامه را در اختیار دارم و دانه به دانه شان را می شناسم و می خواهم شروع کنم به نوشتن یک برنامه، عین یک آفتاب پرست مست به صفحه ی مانیتور خیره می شوم، چرخدنده های سنگین چدنی زنگ زده ی ذهنم شروع می کنند جیر جیر کردن و روی هم چرخیدن و انگشتانم آرام کلیدهای کیبورد را لمس می کند بدون آنکه چیزی بنویسد. آقایی که روی شانه ی چپم با چنگکش نشسته، توی گوشم می خواند که برو صفحه ی بعد و جواب را ببین! و خانوم چنگ بدستی که نشسته روی شانه ی راستم و من به چشم خواهری فقط نگاهش می کنم تشویقم می کند که بیشتر فکر کنم و الگوریتم حل را پیاده کنم تا بتوانم کد را بنویسم. ولی انصافا حق با آقای چنگکی است. الگوریتم نوشتن رسما کار حضرت فیل است. من واقعا به کسانی که عین آب خوردن الگوریتم پیاده می کنند حسودی ام می شود. کوفتتان بشود
پ.ن. روایت هست روزی که خزنده توانست فلوچارت یا pseudo-code درست حسابی بنویسد، آن روز همانا عید است
پ.ن. عکس پست مربوط به کد نویسی پایتون نیست. پایتون خیلی قشنگ تر است. از این آکولاد های مزخرف ندارد. سمیکالن هم نمی خواهد. کارش درست است!
امضاء: خزنده ی سردرگم
خب این روشی که گفتی رو منم استفاده میکنم، البته موقعی که با متمتیکا کار میکردم اینطوری بود، در واقع من میخواستم یه الگوریتم پیچیده رو با ++C پیاده سازی کنم، شروع کردم روی کاغذ شبه کد نوشتن و یواش یواش تبدیل اون به کد، ولی وسطاش هنگ کردم، و خب بیخیالش شدم و رفتم سراغ متمتیکا، اونجا به خاطر فضای جالب notebook توتستم کارم رو پیش ببرم، چون درسته فلوچارت نمیکشیدم، ولی کل الگوریتم رو توی ذهنم به چهار پنج مرحله تقسیم کرده بودم. بعد مثلا اولین فاز این بود که یه گراف تصادفی درست کنم. خود این درست کردن گراف تصادفی یه جور پروژه کوچیکتر بود واسم. و خب ورژن های مختلفی هم داشت، چون گراف های خاص متفاوتی باید درست میکردم که ورودی اون الگوریتم باشن، اینطوری من هفت هشت تا نوت بوک جداگانه داشتم که هر کدوم یه جور گراف خاص رو به عنوان ورودی ایجاد میکردن. بعدش مثلا فاز تبدیل اون گرافا به ماتریس مجاورت و اینا بود و بعدش اجرای الگوریتم روی ماتریس مجاورت و بعد نمایش نمودار گراف بدست اومده و ...
رو یک مرتبه کد نویسی کنی خیلی جالبه ! من تو هر مرحله شونصدبار باید دیباگ کنم و مطمئن بشم از درست کار کردنش، بعد بتونم برم سراغ بعدی.
به نظرم مگر در موارد خیلی پیچیده نیازی به فلوچارت نیست. همین که بدونی چه مراحلی هست و بخش های مختلف کد چطوری به هم مربوطن کافیه. مث یه کارخونه بزرگ هست که هر بخش خودش یه کارخونه اختصاصی هست و مثلا محصولات اولی میره به کارخونه دوم و محصولات کارخونه دوم میره به سومی و ...
ولی اینکه تونستی کل پروژه
توی سی پلاس پلاس هم به خاطر این ناموفق بودم که مث شما میخواستم یه دفعه همه چی رو بنویسم و از تابع درست کردن و تقسیم برنامه به اجزای کوچیکتر خوشم نمی اومد.
حالا اگه برنامه نویسی شیء گرا رو یاد بگیریم، خیلی جالب میشه. ولی من هیچ تجربه و دانشی تو شیء گرایی ندارم.
امیدوارم توی مغزم جا بره اصولی کار کنم.
کد رو که یهویی ننوشتم. تقریبا 5 ماه وقتمو گرفت. به همین سبک سعی و خطا. حالا اصلا گیر برنامه نویسی نداشت. صرفا معادله های ترمودینامیکیش به درد بخور بود وگرنه خود برنامه روتین بود
و اینکه لابد خزنده یه الگوریتم خیلی پیچیده رو میخواد پیاده سازی کنه، وگرنه فهمیدن الگوریتم و نوشتن شبه کد برای جستجوی حبابی یا حتی جستجوی سریع نباید سخت باشه.
در واقع مثلا توی درس آنالیز عددی مشکل اصلی من پیاده سازی الگوریتم با یه زبان برنامه نویسی بود ( متأسفانه اون موقع فقط ++c رو میشناختیم که زبان سختی بود و هیشکی خوب بلد نبود ) نه شبهکد نوشتن چون همه الگوریتمای کتاب به صورت شبه کد ارائه شده بودن.
البته ما در واقع خیلی الگوریتم توی زندگی عادی و محاسبات عادی خودمون هم به کار می بریم. مثلا تقسیم اعداد یا تقسیم چند جمله ای یا مشتق گیری و ... همشون یه جورایی الگوریتم هستن.
شبه کد نوشتن مث این هست که واسه یه بچه که فقط چهار عمل اصلی رو میشناسه بخوای محاسبه مثلا انتگرال نامعین رو یاد بدی.
البته بعضیاشون (زبان های سطح بالا مث متمتیکا ) سینوس و کسینوس و انتگرال و ... رو هم بلدن، ولی خب گاهی میخوای یه الگوریتم جدید پیاده سازی کنی، بازم باید کلی تلاش و تقلا کنی.
به نظر من خزنده داره شکسته بندی میکنه
خب ++c از شیء گرایی هم پشتیبانی میکنه و یه کمی جدیدتر و بهتر از c هست و در عین حال سرعتش در همون حد سرعت c بالاست. ولی مثلا #c میشه گفت دیگه از حالت زبان سطح میانی خارج میشه و نزدیک به زبانای سطح بالا هست.
ماجرا شکسته بندی نیست
منظورم از ناتوانی اینه که وقتی میخوام فلان برنامه رو بنویسم، نمیتونم اول روی کاغذ پیاده ش کنم بعد برم سراغ کد. مستقیم با سر میرم توی کد زدن. هی وسطش میگم خب اینکه نشد، عوضش میکنم. می بینم ارور میده دوباره عوض میکنم. این روش انتحاری فعلا برای برنامه های بیست سی خطی جواب میده. اگه بخوام پونصد خط برنامه پیاده کنم که بدون فلوچارت پیر میشم که! من اونجا رو میبینم! فعلا که مشکلی نیست افتان و خیزان میرویم
یعنی در این حد فلجم که باید از روی کد فلوچارت بکشم
حالا یه چی بگم ایمان بیاری بهم هر آینه. من برای پروژه کارشناسیم اول کد زدم کامل. تموم که شد موقع نوشتن متن پروژه استاد گفت فلوچارتت کو؟ رفتم از روی کد فلوچارت کشیدم
الگوریتم پیدا کردن ریشه های معادله درجه دوم را بلدم....به کارت میاد؟
دلتا؟؟
آخه باعث زحمت میشه اصن. راضی نیستم توی دردسر بی افتی
این روزا همه جا حرف فقط حرفه پایتونه.اون از وبلاگ یوسف اینم از اینجا

علامت پایتون خیلی جالبه.اینقدر راجبش حرف زدین شما دو نفر مشتاق شدم برم یاد بگیرمش.
جالبه که با اینکه مدت کوتاهیه اومده ولی اینقدر طرفدار داره و فراگیر شده.
من که تو دنیای ریاضیات کلا گم میشم هیچی از الگوریتم نمیدونم ولی هستن دور و برم کسایی که دیدم مثل آب خوردن مینویسن و همیشه اون کودک درونم بهشون حسودی میکنه بابت این قضیه
خب پس بی زحمت زودتر عید و اعلام کن روزه مارو گرفته ( حالا نه اینکه خیلی من روزه دارم )
این روزا همه پایتون کار می کنند. شما چطور؟
اگه به کارت میاد و علاقه داری که یاد بگیر! خیلی هم عالی. هر کی هم دیدی الگوریتم راحت می نویسه از طرف من بهش حسودی کن
روزه هم بر همه ی هم میهنان روزه بگیر و نگیر قبول باشه. عید هم به وقتش
ای پایتون نویس اکنون، ای فلوچارت نویس آینده
فلوچارت نوشتن خیلییییی سخته، سردرد آوره اصلا برای سلامتی مضره.
ولی تو میتونی خزنده، من مطمئنم.
خدا از دهنت بشنوه این فلوچارت آینده رو! اصن نمی دونم چیکار کنم پیشرفت کنم.
حالا امسال نشد، 10 سال دیگه که می شه
ولی من می توانم
احسنت خزنده ! یعنی خیلی خوشم اومد از این حرکت پنهانی و خزش ناگهانی شما به سمت پایتون. من این تجربه های خوشآیند رو کمتر داشتم چون به ما زبان های پاسکال و ++C رو یاد میدادن و من هم نتونستم حتی در حد متوسط هم یاد بگیرم. فقط وقتی خودم شروع به یادگیری متمتیکا کردم یه مواقعی این حس پیروزمندانه سراغم اومد.
پایتون زبان خزندگان هست ! منم میخوام که خزش کنم به سمتش.
اما در مورد الگوریتم من تقریبا برعکس شمام، الگوریتم و شبهکد رو خوب میفهمم و مینویسم ولی پیاده سازی ش توی زبان مورد نظر واسم سخته. البته شاید به خاطر این باشه که درست و حسابی تابع و کلاس و اینا رو یاد نگرفتم. اصن کدنویسی با زبان های سطح پایین و حتی سطح میانی واسم سخته. البته اگه عادت کنم میتونم ولی همون شروعش مأیوسم میکنه زبانی مث ++c
فکر کنم واسه من که از سی پ پ میام سمت پایتون، خیلی واسم هیجان انگیز باشه.
خب کد رو می شه یه کاریش کرد. نهایتش یه سرچ اینترنتی می زنی متدت رو پیدا می کنی، help خود برنامه هست، فروم های سوال جواب هست... ولی وقتی توی الگوریتم نوشتن دست و پات به هم گره می خوره دیگه هیچکی نمی تونه کمکت کنه!
به نظرم اومدن از C به پایتون از جهت راحتی کد نوشتن خیلی برات شیرینه! خیلی از قر و فر های C رو نداره. البته من C++ کار نکردم و راستش هم نمی دونم چه فرقی با C داره