۱۳۸۹ تیر ۹, چهارشنبه

چهارشنبه چندم ِ تیر!! اندر حکایت کامپایل شدن و لی لی که در حوضک اُفتید!

خوب دیگه بسه کولی گری بازی!....
بجای اونهمه توزیه ِ اضافی که این آیرا از خودش داده که واقعن توهین به مشتریه!! ، مثن انگار بچه های مردم و خر! فرض کرده بلا نسبت!...منو که میبینی جام شریف بود! مادرمم همیشه به همسایمون میگه و همین که مادرم میگه من از همه خوبم خودش از هر تست آی کیو و آزمون ِ هماهنگی سند تره! شمارم که اون بچه هه تو تبلیغ بَن بِن بُن گفت : کودک ایرانی ....با اس تِداد!....

خوب من در حالیکه سَی میکنم صمیمیت را با بی ادبی و بی ناموسی گری قاطی نکنم درس امروز را با بیانی فرندلی و کودن فهم اراهه می کنم :

با نام و یاد خدایی که ایران را آفرید و اوضاع خیط و دانشگا های بی مادر شود الهی و آیت اله جعفر نژاد قمی (ره) با آن کتاب های آبکی اش را.
درس امروز رو از لحظه ی شروع کد نویسی تا لحظه ی فرحبخش ِ اجرا گرفتن توزیه (غلط ِ ض و ح ِ حوله! سر هم یه نمره! :) ) میدیم .
هر برنامه ای سه مرحله رو طی میکنه : 1) نوشتن کد
2) کامپایل کردنش
3) تست کردن برنامه

زمانهای قدیم احتمالا توی ویندوزهای عتیقه ای مثل یونیکس نوشتن کد و کامپایلش جدا انجام میشده یعنی شما اول کدتون و توی یک ادیتور متنی مینوشتین بعد که با پسوند cpp. ذخیرش میکردین میومدین با یه دستوری چیزی کامپایلر رو فراخونی میکردین.
واسه برنامه های ساده فقط یه خط فرمان کفایت میکرده ، مثن واسه اجرای برنامه ی jingool توی یونیکس مینوشتیم :


cc.............. jingool.cpp
.
الانا خوب بحمدالله اینهمه سد و جاده ساخته شده و خوب مسلمن ادیتور متن و کامپایلر هم همش یه جا توی محیط عزیز Visual Studio در خدمت هموطنان عزیز هست!
به متن کدمون که تایپش میکنیم میگیم Source Code و به فایلی که در واقع میشه کیف ِ این کدا میگیم Source File . همیشه سورس فایل هست که ماها انسان های جایز الخطا میتونیم با چشم زمینیمون ببینیمش وگرنه فایل های دیگه ای هم در مراحل بعد تولید میشه که فقط با چشم دل میشه دید و ماشین میتونه ببیندش!
وختی که سورس کدمون رو نوشتیم نوبت میرسه به "کامپایل کردن".[ همیشه کاری که باید بعد از "تایپ کردن" انجام بشه "کامپایل کردنه" ] .
اتفاقی که ما داریم به اسم کامپایل شدن میبینیم فرآیند پیچیده ایه که در واقع صدا زدن ِ سه نفر ِ مجزاس.
اول ) پیش پردازنده یا Preprocessor
دوم ) کامپایلر Compiler
سوم ) Linker یا متصل کننده
هر کدوم اینا یه تغییری رو کدا ایجاد میکنن تا نهایتن به فایل اجرایی برسیم. دقیقا مثل همون لی لی حوضک که هر کی یه بلایی سر مادر مرده آورد تا رسید به کله گندهه!
در اینجا نقش "لی لی حوضک" رو سورس فایل بازی میکنه.
1) Preprocessor یه کپی از سورس فایل رو میگیره یه سری تغییرات توش میده و یه سری فایلا رو (مثه فایلایی که توی اجرا بهشون نیاز داره) بهش اضافه میکنه.
2) "کامپایلر" این فرآورده رو میگیره و به آبجکت کد یا کد شی تبدیلش میکنه. حالا کیفش هم عوض میشه و میشه object file. داخل این آبجکت فایل رو فقط خدا میتونه ببینه و ماشین!
3)Linker میاد این object file رو میگیره و به فایل قابل اجرا یا exe. تبدیلش میکنه.
@ خوب پس هر برنامه ای از تایپ تا اجرا سه مرحله داره.
edit --------> comile ------> execute
اجرا و بررسی اصلاحی<------ کامپایل کردن برنامه <----- تایپ و نوشتن کد
اگه توی اجرا دیدیم برنامه اشکال داره دوباره باید برگردیم به محیط ویرایشگر و همون داستان ِ تایپ و اصلاح ِ کدا. و دوباره کامپایل کردن و اجرا گرفتن و.....این چرخه ( اصلاح کد- اجرا گرفتن) انقدر ادامه پیدا میکنه تا زمانیکه از برنامه راضی بشیم و خدا از هم برنامه!
ایشالا تو جلسه ی بعدی یه برنامه ی ساده رو میگیم .

۱۳۸۹ تیر ۷, دوشنبه

یکشنبه هفت تیرماه - مقدمه...................Preface



1. امروز به احتمال زیاد غلط خاصی نخواهم خورد واسه درس چون : مامان حسابی کرده توی پاچه م که خونه رو اصولن بشور و بساب. سگ رحمت به اون خوابگاه که یه شب در میون تمیزش میکردیم و کار تیمی و برنامه ریزی شده بود. اینجا که خونه ماشالللللاااااا......هزار تا سوراخ سمبه و خرت و پرت و زیر و رو و بیرون و داخل داره....
همیشه یه بهانه ای داریم ، یا نزدیک عیده ، یا نمی دونم کی میخواد بیاد یا........حالا هم که درگذشت ان قریب ِ مادربزرگ پدری شده بهانه ی کارگری من بدبخت.

2. بدون یک ذره اغراق یا درشت نمایی این AKON ِ پدر سگگگگگگگ سیستم مارو نمووووود! سرعت وحشتناک ، کانفلیکت و تداخل و ای بی مادر شی!!.....فک کن CPU usage همیشه رو صد درصده!.....قشنگ میفهمم که داره جر میخوره بدبخت! بعد فک کن در حالیکه کامپیوتر داره میترکه از ویروس اول هر استارت آپ بنر نورتون میاد که بیشترین امنیت و اعتماد با نورتون. قشنگ عین صدایی که از بلندگوا میزنه بیرون که : آآآآآی شهر در امن و امان است و به حمدالله ملت ِ مسلمان وحدتش رو علی رغم تمام دسیسه های دشمنان حفظ کرده است و چه بسا الان ملت و نظام مقدس دارند بیش از پیش به کوری چشم آرمیتا برای هم لاو میترکانند!!

اینهم جواب که الهی برود توی چشم ِ منافق! : &&%#@&!!!!!

3. اینجا با این اوضاع احوالات اگر نشود درس خواند ، باید رفتن نمود به نزد ساسی؟؟

فعلن جلسه امروز را داشته باشید تا ببینیم بعد از مرتب کردن و پتو شستن و حمام رفتن و شام پختن وقتی هم برای ادامه ی ترجمه میماند یا نه؟

---------------------

خوب دوستان عزیز همونطور که گفتیم رفرنسمون رو کتاب ِ c++ به تفصیل نوشته ی پرفسور آیرا پل قرار دادیم. این کتاب چه توی منابع لاتین ، چه توی مجامع برنامه نویسی خودمون کتاب ِ تقدیر شده و معتبری به شمار میاد و چنانچه برای یادگرفتن ِ c++ یک خودآموز عالی و اساسی رو سراغ بگیرید این کتاب به شما معرفی خواهد شد.

همچنانکه توی کتابهای مهم رسم هست همون اول کتاب یه آشنایی مختصری از کسی که کتاب رو نوشته به شما داده میشه که فکر میکنم بسیار کمک میکنه توی ارتباط برقرار کردن با کتاب.
دکتر آیرا پل به این شرح معرفی شدن که :


وی پروفسور علوم کامپیوتری در دانشگاه کالیفرنیا واحد سانتا کروز است. دکتر پل دارای بیش از سی سال تجربه در زمینه ی متد شناسی نرم افزار است.حوزه تدریس و تحقیقات او هوش مصنوعی ، زبانهای برنامه نویسی ، مسئله پیچیدگی های کاربردی. روش های جستجوی آگاهانه ، الگوریتم های مقایسه ای و موضوعات آموزشی و اجتماعیست.

همچنین دکتر پل آغاز گر تحلیل ِ خطا در جستجوی آگاهانه و الگوریتم های مقایسه ای است.
وی کتب بسیاری را در زمینه ی زبانهای برنامه نویسی C و ++C به طور گروهی و به تنهائی تألیف نموده است.
توصیحات راجع به روال کتاب :
در وحله ی اول این کتاب دو تا ویژگی برجسته داره که نسبت به بقیه کتابایی که ادعای آموزش ++c رو دارن متمایزش میکنه :
1- این کتاب از اولین برنامه ای که باهاش آموزشش رو شروع میکنه از کدهای واقعی و اجرائی استفاده کرده و نه از سود وکد (شبه کد) و چیزهای دیگه. یعنی که شما میتونید روال یادگیری پویایی داشته باشین. ازینطرف مطالب و توضیحات مفصل و خط به خط (توی بعضی مواقع حتی کلمه به کلمه ی) کدا رو میخونین و دقیقا در کنارش فریم ورک ِ ویژال استودیو رو باز دارین و برنامه ای رو که تازه یاد گرفتین مینویسین و از کدها اجرا میگیرین!....همین فعال بودن مسیر آموزشی و دیدن ِ بدون ِ صبر ِ نتیجه ی کار محاسن بسیار زیادی داره که کمترینش لذت بردن و خسته نشدن از خوندن ِ این درسه!

2- دومین ویژگی این کتاب همین تشریحی بودنی هستش که توی اسمش هم خودنمایی میکنه.

حلاجی و باز کردن کدا به عالی ترین شکل ممکن صورت گرفته و به دور از ادعاهای تبلیغاتی خیلی از کتابا و بسته های آموزشیه.
چیزی که مورد کالبد شکافی قرار میگیره کلیه برنامه ها و "تابع" های توی متن هستش.
تأکید فوق العاده ای روی توابع وجود داره اونم به این جهته که ما داریم با زبونای ساختار یافته کار میکنیم و آجرهای این بنا (برنامه) همون توابع هستن.
تابع ها توی بدنه ی یک برنامه درست مثل بندهای یه انشا هستن. همونطور که گه گاه یه بند به مطلبی توی یک بند دیگه مربوط میشه و در کل انسجام و در کنار هم بودن ِ اون پراگرافاس که انشا رو میسازه توابع هم برای برنامه همینطور هستن.
نکته ی مهمی که باید از همین ابتدا بدونید اینه که مهارت توی نوشتن تابع در واقع مهر و نشونه ی طلائی ِ یک کُدر و برنامه نویس متبحر بودن هستش.
این کتاب از همون قدمای اول نوشتن ِ تابع رو با شما کار میکنه.
برای اینکه کارتون رو هم قدم با جلسات آموزشی ما شروع کنین نیازی به هیچ "پیش زمینه ی" برنامه نویسی ندارین و این کتاب به قدری اصولی نگارش شده که با خیلی از قواعد عمومی برنامه نویسی هم آشنا میشین.

به قولی وقتی که انشالا دوره با موفقیت تموم شه شما فقط ++c یاد نگرفتین بلکه به چیزی بالاتر یعنی "هنر برنامه نویسی" هم دست پیدا کردین.
از نکات مثبت این کتاب یکی دیگه نسخه های دکتر پی هستش که باز هم بیشتر راجع بهشون خواهیم گفت . این نسخه ها بیشتر شبیه نصیحتایه برادر کاربلدی هستن که نکات کلیدی کار رو که حاصل یه عمر تجربه هستن در اختیار برادر کوچیک تر قرار میده.
نکته ی دیگه توی مقایسه ی بین جاوا و ++c هستش که توی خیلی المانا مشترکن و خواستگاه مشترکی هم دارن. این قسمت واسه کسایی که پیش ازین با جاوا کارمیکردن مفیده و برای مهاجرت راحت تر به++ c کمکشون میکنه و همینطور واسه کسائی که الان دارن++ c یاد می گیرن و تو برنامشون هست که بعدن برن سمت ِ جاوا میتونه خیلی کمک کنه.
نکته ی بعدی همچنان که گفته شد توجه به برنامه نویسی آبجکت اوریتند یا شی گرا هستش که الان متد غالب توی دوره ما هست و تموم برنامه هایی که روی دور هستن همگی از نوع شی گرا هستن.
چنانچه توی دانشگاه کارگاه نرم افزار رو گذرونده باشین احتمالن با برنا مه های رشنال رز یا ویزیو (rationale rose Or Visio) کارکردین و با نمودارهای جذاب ِ UML آشنایی دارین.
توی این کتاب هم از نمودارای UML استفاده کرده که به درکتون از سیستم بر اساس "شی" ها و رابطه ی بینشون کمک خیلی زیادی میکنه.
همچنین گذشته از تموم امکانات آموزشی کتاب شما مهندسی نرم افزار و متدلوژی تولید نرم افزار رو هم یادمیگیرین . یعنی اصولی ترین حالت ِ آموزش یک زبون ِ برنامه نویسی.
در خلال ِ آموزش کدا و برنامه ها کتاب واسه شما خیلی از "خطا" ها و باگ های متدوال رو هم میگه و میگه که چه تکنیک هایی رو به کار ببر توی کد نویسیت که این خطا ها بروز نکنن.
چیزی که هست معمولن توی شروع کد نویسی ، یعنی خیلی پیش از رسیدن به اون مهارتی که شما پیر این عرصه بشین و بتونین توی خشت خام ببینین اون چیزی رو که جووناش توی آینه نمیبینن ، خطاهای برنامه بزرگترین ضد حال و دلسردی واسه شما هستن.
این کتاب بجز آموزش کد نویسی صحیح بهتون میگه توی هر قسمت چه خطاهایی ممکنه از دستتون در بره و واسه درست کردنش چی کار کنین.
آخر هر فصل هم اومده خلاصه رو گفته از تموم چیزای مهم یا جدیدی که توی فصلی که گذشت گفته و همچنین تمرینا.
تمرینا از نظر محتوی و همینطور میزان سختی تنوع خیلی بالایی دارن که برای اساتید یه مزیت به حساب میاد که توی دادن تکلیف متناسب با کلاسشون راحت باشن.
تمرینا در کل دو رویکرد دارن : یه سری شون اومدن به مطلب با جزئیات بیشتری نگاه کردن و رفتن توی ظرایف و ریزه کاری ها و یه سریشونم مسائل و چالشایی رو پیش پای بچه ها میذارن که باعث میشن سواد برنامه نویسی اونا به سمت مرزهای پیشرفته تر و مسائل حرفه ای تر گسترش پیدا کنن.
مهمترین و باز مهمترین چیز برای شروع دوره برنامه نویسی گذشته از داشتن ِ یه رفرنس عالی و قابل اعتماد مثل این کتاب ، داشتن یه محیط کاری واقعی واسه کد نویسی و اجرا گرفتن هستش. کامپایلر / ادیتورای زیادی هستن توی بازار که کمپانی هایی مثل IBM ، Borland ، سیمنتک و مایکروسافت ارائه دادن که مسلمن محبوب ترین و رایج ترینش ، حداقل توی ایران ِ خودمون همون محصول ِ مایکروسافت به اسم Microsoft Visual Studio هستش که خود من از نسخه ی 2008 ش استفاده میکنم.
بعد از معرفی مختصر امکانات کتاب انشالا توی جلسه ی بعدی میریم به پیشواز برنامه سازی و کد نویسی.
تا اینجا فکر میکنم بهتره که اگر نرم افزار ویژال استدیو رو دارین نصب کنین و اگر هم ندارین راهی بازار بشین و برنامه رو تهیه کنین که با ++c ماجراها در پیش دارین!
___________________________
به قرآن اگه می دونستین این وبلاگ با چه خون دلی درست شده و این پستا با چه عذابی هوا شدن یه قطره شم حروم نمیکردین!!

۱۳۸۹ تیر ۶, یکشنبه

شنبه شیش تیرماه - توضیحاتی راجع به افتتاح کد سفید

.

1. خوب اگه اینترنت زغالی و بلاگر و تقدیر نحس و......بذازه ما پست امشبو هوا کنیم.( what?!..ha? send it on the air baby ) .
اولن که بنده دستی به سر و ریخت اینجا کشیدم و ازون شکل ِ وبلاگ ِ پاپتی ِ غربتی درش آوردم.
- واسش در عرض کوتاه زمانی اون بنر با معنی! بالا رو سازیدم.
- بازگشت کردم به استایل کلاسیک و فونت و مونت رو ردیف کردم.
- و سوم که در واقع اولی بود حجم زیادی از مقدمه ی کتاب مستطاب ِ ++C به تفصیل اثر استاد آیرا پل رو ترجمه فرمودم.
2. وعده این بود که اینجا روز نوشت ِ آموختن ِ ++c ِ من باشه. واسه روز اول باید بگم که به گمونم خوب بود. فعلن که باید صبر کنیم و ببینیم این شیوه ی تفصیلی و به قولی همون " خر فهمونی" استاد ما رو coder میکنه یا نه.
3. چیزی که تا اینجا ازش لذت بردم اینه که حالا نظام آموزشی و آکادمیک اونا ایجاب میکنه ، اصن فرهنگ تولیدی و تألیفیشونه ، حاج آیرا کارش درسته یا هرچیز دیگه ای که هست ولی صرفن از روی مقدمه ی کتاب به این نتیجه رسیدم که واقعن کار نیکو کردن از پر کردن است.
اینکه این آدم انقدر جامع و مانع و عالی بودن کتاب براش مهم بوده و خدائیش یه اثر پدر بیامرزی از خودش جا گذاشته.
توی توضیحات میفهمید از چه چیزایی دارم حرف میزنم

۱۳۸۹ تیر ۴, جمعه

دیباچه

بسم الله الرحمن الرحیم ....و بهی نستعین....و با قی ماجرا.

اهل فن میدانند که اینجانبه از سال 82 مفتخر بوده ام به امر الهی ِ وبلاگ داری و وبلاگ خوانی. و اصولن پیوند ناگسستنی ام با اینترنت و گه گاه با "اون" ترنت عمدتا در زمینه ی مسائل فرهنگی بوده.
هنر به طور کلی و "نوشتن" و نقش زدن و نغمه آفرینی و هیچ وقت به آخر نمیرسند ولی توی مملکتی اینطور آشفته ، اینطور گرسنه و دیوانه......جا و مجالی برای آن حس و فضای آفرینش هنری نمیماند.
دوست من ، هنر خیلی فراتر از این حرف هاست که نمود ِ سانتی مانتالیسم و احساساتی بازی و....باشد. فراتر از آن "چیزی ست" که بخواهیم به تیز نقدش بکشیم که توی زندگی شلوغ و صنعتی امروز زیادی است یا نه؟.....که اگر باشد چه می شود و اگر نباشد چه ؟

هنر : زیبائیست....."هر نوع" زیبائی ! ولو مورد تأیید یک نفر انسان بین این چند میلیارد باشد. ولو اینکه به قول اساتید در جرگه ی زیبائی های زشت باشد!
هنر : تقدیس و پرستش زیبائیست. و من بارها گفته ام که این هم بین آدم ها متفاوتست. میزان ِ "زیبائی گرایی" توی آدمها فرق میکند.همانطور که میزان خداجوئی و کشش به مسائل ِ مقدس و الهی توی آدمها فرق میکند. همانطور که تمایل آدمها به مسائل متافیزیک و هیجانی و ......چه و چه با هم فرق میکند. و به طور کلی درین شلوغ ِ تو در تو که اسمش را گذاشتند "هستی" بعضی چیزها بعضی آدمها را بیشتر به خود میکشند و صدا میزنند.
من هیچ وقت آدم ِ فنی ِ حساب و رقم نبوده ام. یعنی انقدر که بخش هنری ام پر رنگ و غالب بوده که وجه محاسبه گر و عددی ام حتی اگر کاملن نرمال و متوسط هم بوده ، من کمرنگ و ضعیف احساسش کردم.
ما میتوانیم به هر کاری قادر شویم. هر کاری. ولو اینکه با تلاش و وقت گذاشتن به مهارت برسیم.
زندگی و "شرایط" اینطور ایجاب میکند که من یک Coder ِ ماهر شوم. کدری که از کارش ، از نوشتن و چینش کدها پشت سر هم "لذت " میبرد و عاقیبت روزی از روزهای لعنتی ِ مشق نویس بودن و دیکته نویسی عبور میکند و به آستانه های رؤیایی خلق نزدیک میشود.
یک روز صبح از خواب بلند می شود و همانطور که ایده ی ناب و طلائی ِ شعر یا داستانی توی ذهنش متولد میشود و در به در دنبال قلمی میگردد برای ثبت و به دام انداختن آن ایده ی طلائی........لحظاتی که آن فکر تقدیری ندارد جز آنکه "آفریده شود......"
چنان صبح هائی هم خواهد آمد که برای خلق نابی ایده ای چنین طلائی در ذهنش نقش بندد و دستپاچه و ذوق زده دنبال کیبوردی بگردد و صفحه ی سفید فریم ورکی برای نواختن کد ها و جان بخشیدن به آنها تا........خلق ِ موجودیتی شیرین که میتواند مفتون کند و تحسین بیافریند.
شروع این راه برای من قطعن با آغازیدن و آموختن زبان ِ ++C شروع میشود.
بنا دارم اینجا قصه ی این آموختن را قدم به قدم با تمام فراز و نشیب ها و لحظه های تلخ و شیرین و بن بست ها و به مقصد رسیدنهایش ثبت کنم.
همراه شوید در جاده ی Coder شدن یک آرتیست!