PDA

View Full Version : گفتگو: سیستم مدارس



Tarragon
یک شنبه 15 بهمن 1391, 14:49 عصر
سلام
من چند وقت پیش یه سیستم واسه مدارس نوشتم تا قدرت خودم رو محک بزنم حالا می خوام با شی گرا این کارو بکنم چون قبلی کامل بدون شی گرا نوشته شده بود.
ممنون می شه اگر بهم بگید چجوری باید کلاس بنویسم مثلا واسه کلاس sign ( که 3 تا زیر مجموعه به نام های login و logout و register داره ) کد بنویسم که توش از کلاس sql که واسه کار با sql هست استفاده کنم.
ممنون می شم یه توضیح جامع بدید.
پیشاپیش از جوابتون ممنونم.

MRmoon
یک شنبه 15 بهمن 1391, 16:15 عصر
سلام بیا یاهو کمکت کنم

Tarragon
یک شنبه 15 بهمن 1391, 17:37 عصر
لطفا همینجا راهنمایی کنید
تشکر

eshpilen
یک شنبه 15 بهمن 1391, 18:24 عصر
فکر میکنم برای یادگیری اصولی اینطور چیزها باید اول متوجه بشیم که علت وجودی اونها چیه، چه مزایایی دارن، چرا مفید یا لازم هستن، چرا در روشهای دیگر نمیشه، و غیره.

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

پس از مشکلات عملی ای که برخورد کردید بگید. مثال و نمونه بیارید. مزیت شیء گرایی که عملا نسبت به کدهای قبلی خودتون میبینید چیه.

Tarragon
یک شنبه 15 بهمن 1391, 18:41 عصر
می خوام مرتب باشه و چند سال دیگه که هیچی از اسکریپت یادم نبود بتونم دوباره باهاش کار کنم و چند سال دیگه که بعنوان یه برنامه نویس باید شی گرا بلد باشم می خوام همین الان ماکل یادش بگیرم و ازش استفاده کنم.

h.rezaee
یک شنبه 15 بهمن 1391, 19:08 عصر
می خوام مرتب باشه و چند سال دیگه که هیچی از اسکریپت یادم نبود بتونم دوباره باهاش کار کنم و چند سال دیگه که بعنوان یه برنامه نویس باید شی گرا بلد باشم می خوام همین الان ماکل یادش بگیرم و ازش استفاده کنم.
سلام دوست عزیز برای به یاد داشتن اسکریپت ها از کامنت استفاده می کنیم. اگر هم می خوای کلا یاد بگیری برو نحوه کلاس نویسی رو یاد بگیر که اساس همه شی گراییه!

Tarragon
یک شنبه 15 بهمن 1391, 19:43 عصر
کلاس نویسی رو بلدم می خوام تو عمل ازش استفاده کنم!
چند وقت منتظر این آموزش mvcl هستم اما فکر نکنم توی این چند سال تموم برای همین تصمیم گرفتم خودم روش کار کنم.

eshpilen
یک شنبه 15 بهمن 1391, 20:08 عصر
کلاس نویسی؟ :قهقهه:

Tarragon
یک شنبه 15 بهمن 1391, 20:14 عصر
حالا من آماتور بیخیال عزیز لطفا کمکم کن زود تر به جواب برسم:لبخند:

eshpilen
یک شنبه 15 بهمن 1391, 20:38 عصر
نه میگم یعنی اوج سواد و هدف شما از شیء گرایی اینه که چندتا متد و پراپرتی تعریف کنید و یک کلاس بسازید؟
اولا اینکه کاری نیست. کلاس نویسی یعنی چی دیگه؟!! سینتاکس کلاس نویسی که همش جزء کوچکی از برنامه نویسیه و تعریف و استفاده از یک چیزی به صرف اینکه اسمش کلاس و شیء باشه کاری به حساب نمیاد!
بعدشم یعنی این شیء گرایی کورکورانه و فقط برای مد روز و برچسب شیء گرایی داشتن، واقعا کار اصولی و بهینه ای است؟

من میگم دلیل عملی بیارید واسه همین دیگه.
یعنی واقعا مزیت رو در عمل دیده باشید و بتونید توضیح بدید و نمونهء واقعی بیارید. درک شده باشه. بهش رسیده باشید.
چون دیدم خیلی ها فکر میکنن شیء گرایی یعنی همین فقط بذاری توی کلاس میشه شیء گرایی، و بعدش هم هدفشون فقط همین برچسب هست بیشتر. اصلا نمیدونن اصل کار چیه و چرا. تازه همون کلاسها رو درست کردن خودش اینطور نیست که به هر شکلی باشه. یه اصول و اهداف و معیارها و روش درست و نادرستی داره. البته من خودم هنوز شیء گرایی کار نکردم آنچنان و به این مرحله بطور عملی نرسیدم که عملا نیاز ببینم و درک و استفاده کنم.
ولی تا این حد من توی پروژهء خودم یک مزیت فقط برای شیء گرایی دیدم و اونم اینکه توی پروژم با مشکل تداخل متغییرهای همنام که در فایلهای مختلف تعریف کرده بودم برخورد کردم. یعنی یادم نبوده مثلا توی فلان فایل دیگری که اینکلود میشه هم متغییری با همون نام هست که محتوای دیگری داره، و این باعث ایجاد باگ در برنامم شد. بعدم حلش یخورده دردسر داشت و بازم توش شک و تردید هست که آدم نمیتونه مطمئن باشه توی این همه کد و فایل باز همون مشکل و باگ نباشه. حالا من تاحدی با نامگذاری متغییرها بصورت شماره دار یا اسمهای متفاوت مشکل رو حل کردم. مثلا آخرین متغییر tmp که تعریف کردم میبینم چیه، مثلا tmp21، بعد متغییر موقتی بعدی رو که در فایل دیگری میخوام تعریف کنم میذارم tmp22. یا همینطور برای متغییرهای دیگر و معمولی سعی میکنم از اسمهای متفاوتی استفاده کنم.
خب پس یک مزیت برای شیء گرایی که من دیدم، اینه که متغییرهای داخل کلاس هرکدام در scope کلاس/نمونهء خودشون هستن و خیال آدم میتونه از بابت تداخل نام متغییرها در کدها و فایلهای مختلف راحت باشه.

البته تاحالا آموزش شیء گرایی هم هرچی دیدم بنظرم هیچکدام با مثالهای بقدر کافی واقعی و قابل درک نشون ندادن که مزیت و هدف اصلی شیء گرایی چیه.
خب البته یخورده از پخش و پلا شدن کدهای مرتبط هم جلوگیری میشه دیگه. ولی من با دسته بندی و جداسازی کدهای مرتبط/نامرتبط در فایلهای جداگانه این مشکل رو تاحد زیادی حل کردم. واقعا هنوزم مزیت عمده و هدف اصلی شیء گرایی رو خوب ندیدم و درک نکردم. ولی ظاهرا بیشتر افراد دیگه هم صرفا تقلید میکنن بدون اینکه عملا خودشون بهش رسیده باشن و درک کرده باشن.

Tarragon
یک شنبه 15 بهمن 1391, 20:56 عصر
راستش رو بخواید خودم به این درک نرسیدم آخه هنوز هیچ دلیل برتری که خودم حس کرده باشم ندیم آقا رضا یه چیزایی گفتن که بنظرم بازم دلیل نمی شه ادم خودشو بپیچونه !
من الان بجای $db->query(... ترجیح می ده بزنم mysql_query آخه بنظرم خیلی راحت تره.

eshpilen
یک شنبه 15 بهمن 1391, 21:08 عصر
راستش رو بخواید خودم به این درک نرسیدم آخه هنوز هیچ دلیل برتری که خودم حس کرده باشم ندیم آقا رضا یه چیزایی گفتن که بنظرم بازم دلیل نمی شه ادم خودشو بپیچونه !
من الان بجای $db->query(... ترجیح می ده بزنم mysql_query آخه بنظرم خیلی راحت تره.
آره منم یجورایی همینطور حرفا بنظرم میاد :قهقهه:
توی پروژهء خودم مثلا هرچی فکر کردم دیدم شیء گرایی بخوام کار کنم جز اینکه وقت و انرژی مضاعف روش صرف بشه آنچنان چیز بیشتری عایدم نمیشه.
ولی خب شاید حداقل بخشی از این، بخاطر کمبود تجربهء عملی در شیء گرایی بوده باشه.
بهرحال من سعی میکنم بصورت عملی و با درک و بینش جامع و عمیق به شیء گرایی برسم، نه تقلید کورکورانه و بدون اینکه بفهمم واقعا چرا از روشهای دیگر که قبلا استفاده میکردم خیلی بهتره.
شایدم واقعا عمدهء مزیت شیء گرایی و اینها در برنامه های بزرگتر و پیچیده تری باشه یا شرایط دیگری مثلا برنامه هایی که گروهی کار میشه، نیاز به نگهداری طولانی مدت دارن، در آینده احتمالش زیاده افراد دیگری (یا حتی شاید خود آدم) بخوان روش کار کنن و تغییر و گسترشش بدن، و مسائل مشابه.
بهرحال آدم باید سعی کنه همه چیز رو واقعا درک کنه، نه اینکه همینطور فقط تقلید و ظاهر.

خب شیء گرایی یا الگوهای طراحی یه چیزهایی هستن که بدون اونا هم میشه برنامه رو نوشت، و درواقع با شیء گرایی در حداقل برنامه هایی که من نوشتم و به ذهنم میرسه، یکسری هزینه مثل طراحی کلاسها و اینترفیسشون و کدنویسی اضافه و ایجاد نمونه از اشیاء و تاحدی هم مصرف منابع بیشتر و کاهش پرفورمنس پیش میاد. پس آدم باید بدونه واقعا داره برای چی این کار رو میکنه و چطور مزیتش به این هزینه ها میارزه! اگر آدم خودش واقعا نیاز به یک چیزی رو تشخیص نمیده و همینطور کورکورانه داره این کار رو میکنه، بنظر من بهتر بود میرفت روی یادگیری الگوریتم و پروتکل ها و سیستمهای دیگر/جدید و این همه مسائل زیربنایی تری که هست کار میکرد، یا صرفا برنامه های بیشتری مینوشت؛ چون اینها دیگه 100% کاربردی هستن و بدون شیء گرایی میشه هر (یا حداقل تقریبا هر) برنامه ای رو نوشت، اما بدون اینها نمیشه.

Tarragon
دوشنبه 16 بهمن 1391, 05:29 صبح
الگوریتم و پروتکل ها و سیستمهای دیگر/جدید
سلام ببخشید نظورتون از این جمله چیه ؟
الان دقیقا دنبال چی باید برم؟
کتاابی چیزی ...

h.rezaee
دوشنبه 16 بهمن 1391, 08:14 صبح
ماشالله این آقا رضا دست به تایپش خیلی .......
آقا رضا نمی دونم اصلا در مورد کامپیوتر و برنامه نویسی تو دانشگاه چیزی کار کردین یا نه؟
همین دانشگاه هایی که 99% مسخره می کنن و می گن هیچ چیز یاد نمیده و .......
همین دانشگاه به دانشجو ها یاد میده وقتی می خوان یه برنامه بنویسن از نظر هزینه کاملا بهینه باشه!
حالا این هزینه چیه ؟
هزینه در کل به 3 دسته تقسیم میشه! 1 - بهترین حالت 2- متوسط 3- بدترین حالت
هزینه می تونه از نظر زمان اجرا باشه! هزینه می تونه به تعداد خط کدهای شما باشه! هزینه می تونه این باشه که شما از زبون برنامه نویسی که داری استفاده می کنی از تمام امکاناتش به نحو احسنت استفاده کنی ! هزینه می تونه ........
حالا اصلا تعریف همین دانشگاه از کلاس و کلاس نویسی چیه ؟
خیلی از برنامه نویس ها نمی خوان یک کد رو 200000 دفعه و هر بار هم تو فایلی که نیاز دارن بنویسن! پس این نوع کد نویسی که بخوای 200000 خط کد رو هر سری تکرار کنی از نظر هزینه در بدترین حالت قرار می گیره! ما باید همیشه بهترین روش رو برای کار خودمون استفاده کنیم تا هزینه به min برسه. پس به جای این که کدهای تکراری رو هر بار در هر فایلی که نیاز داریم بخوایم یک بار بنویسم می آیم تو یک کلاس تعریف می کنیم بعد اون کلاس رو فقط فقط تو یک خط توی اون فایلی که نیاز داریم صدا می زنیم و ......
پس با این حرکت از نظر هزینه تعداد خط های کد نویسی به بهترین حالت میرسیم.
از نظر هزینه اجرا به حالت متوسط یا شایدم بدترین می رسیم.( چون دستورات مستقیم وارد نمیشه! باید بره یه فایل دیگه بخونه بیاره ....)
از نظر هزینه امنیت به بهترین یا متوسط می رسیم.
از نظر هزینه ........
پس در کل نتیجه می گیریم که تنها در یک حالت شاید به بدترین حالت برسیم و در بقیه موارد به بهترین و حالت متوسط ختم میشه که بهتره از این روش استفاده کنیم.
درمورد این هم نخواستم به شخص خاصی موردی رو بگم ولی در کل برای روند تعریف یک پروژه ، نوشتن الگوریتم های مورد نیاز اون و ...... بهتره قبل از هر چیزی یک بار بشینیم تابع های هزینه رو حساب کنیم تا بهترین راه رو برای پروژه امون انتخاب کنیم.

eshpilen
دوشنبه 16 بهمن 1391, 09:08 صبح
سلام ببخشید نظورتون از این جمله چیه ؟
الان دقیقا دنبال چی باید برم؟
کتاابی چیزی ...
یعنی چی منظورم چیه؟ :لبخند:
الان من بهت بگم یک رگولار اکسپرشن بنویس که فلان باشه، مشکلی نداری؟
بگم برای جلوگیری از فلان حمله، الگوریتمش رو بنویس، مشکلی نداری؟
بگم فلان هدر HTTP چیه و کجا و چطوری باید استفاده کرد، مشکلی نداری؟
با مفاهیم و اصول و الگوریتم های علم رمزنگاری آشنایی کافی داری؟ میدونی کجا چرا چطور استفاده کنی؟
و خیلی چیزهای ریز و درشت دیگه.

بعدم کتاب چی؟
یک کتاب نداره.
باید بتونی هر منبعی رو بخونی؛ مقاله، ویکیپدیا، حتی RFC ها رو.
البته کمتر کسی توی این سطحه. ولی خب منظور منم همینه که این توانایی ها خیلی مهم و کاربردی هستن و بجای تقلید کورکورانه و کارهای ظاهری بهتره آدم وقت و انرژیش رو روی اینا بذاره.
شما هم الان نمیتونی. طبیعتا پیشرفت در این حد پایه و زمان میخواد و جدیت و پشتکار زیاد. باید روی حداقل چند سال حساب کنی، نه کمتر.

اگر میخوای شیء گرایی رو هم یاد بگیری، بنظر من اول کامل و عملی بفهم که چرا و مزیتش چیه و چرا صرف میکنه. نه اینکه بگی میخوام کلاس نویسی یاد بگیرم یا فقط بگی که از شیء گرایی استفاده کردی.

eshpilen
دوشنبه 16 بهمن 1391, 09:18 صبح
ماشالله این آقا رضا دست به تایپش خیلی .......
آقا رضا نمی دونم اصلا در مورد کامپیوتر و برنامه نویسی تو دانشگاه چیزی کار کردین یا نه؟
رضا کیه؟ :لبخند:
منو میگی؟


خیلی از برنامه نویس ها نمی خوان یک کد رو 200000 دفعه و هر بار هم تو فایلی که نیاز دارن بنویسن! پس این نوع کد نویسی که بخوای 200000 خط کد رو هر سری تکرار کنی از نظر هزینه در بدترین حالت قرار می گیره! ما باید همیشه بهترین روش رو برای کار خودمون استفاده کنیم تا هزینه به min برسه. پس به جای این که کدهای تکراری رو هر بار در هر فایلی که نیاز داریم بخوایم یک بار بنویسم می آیم تو یک کلاس تعریف می کنیم بعد اون کلاس رو فقط فقط تو یک خط توی اون فایلی که نیاز داریم صدا می زنیم و ......
پس با این حرکت از نظر هزینه تعداد خط های کد نویسی به بهترین حالت میرسیم.
کی گفته اگر از شیء گرایی استفاده نکنیم باید همهء این همه کد رو توی یک فایل بنویسیم و در هر برنامه هم تکرار کنیم؟
من توی پروژهء خودم کدها و عملیات مرتبط رو توی فایلهای جداگانه دسته بندی کردم. و اون فایل/کدها/عملیات هرجا که نیازه صرفا با همون بقول شما یک خط کد، اینکلود میشه.
اینطور نیست که همینطور 20 هزار خط کد قاطی پاتی توی یک فایل ریخته باشه.
بعدم توی برنامه های دیگه میتونم اون فایلها یا کدها رو کپی پیست کنم. چه نیازی به دستی نوشتن اون همه کد از ابتدا هست؟
البته تنها عیبی که برای این روش بنظرم میرسه باز همون امکان تداخل نام متغییرها با متغییرهای برنامهء جدیده، که باید روی این دقت کنیم و درصورت لزوم اسم متغییرها رو تغییر بدیم، و با این حال بازم ریسک داره و ممکنه موردی از زیر دستمون در بره. بله از این نظر کلاس و شیء خیلی بهتره. این هم یک موردی که بهش توجه نکرده بودم. ولی بهرحال توی پروژهء اول این قضیه فرقی نمیکنه چون کدها همه از ابتدا نوشته شدن.

ولی درکل اینکه بگیم اگر از شیء گرایی استفاده نکنیم مجبوریم هر بار حجم انبوهی از کد رو دوباره از صفر و دستی بنویسیم، کاملا اغراقه.
شیء گرایی تنها راه دسته بندی و ماجوله کردن و code reuse نیست، ولی شاید بشه گفت بهترین و کاراترین روشه در کل.
روشهای بدوی تری از قدیم وجود داشتن. مثل دسته بندی کدها در فایلهای جداگانه. و برای حل پاره ای مسائل مشابه و مرتبطی که پیش میاد، استفاده از استراکچرها، متغییرهای گلوبال، آرایه ها، قواعد و استاندارد مشخص برای نامگذاری متغییرها، توابع و غیره.
و در زبانهایی مثل سی که شیء گرایی نداشتن برنامه های بزرگ و موفقی نوشته شدن و هنوزم نوشته میشن.
واقعا فکر میکنید اینا مجبور هستن و همینطور میان چند هزار خط کد رو قاطی پاتی و پشت سرهم توی یک فایل ردیف کنن و بعدهم مجبورن توی هر برنامهء جدید دوباره همه چیز رو تمام و کمال و از صفر به همین شکل و دستی بنویسن؟

آهان راستی توابع رو یادتون رفت! پس تابع چیه و به چه دردی میخوره؟
خیلی جاها میشه با نوشتن توابع خیلی از مزایای بیشتر رو بدست آورد.
الان بخش بزرگی از خود PHP هم اینطوریه دیگه! مثلا توابع mysql که همشون بصورت توابعی هستن که ابتدای نامشون mysql_‎ داره.
خود PHP به این عظمت رو بدون شیء گرایی چطوری نوشتن؟ 500 هزار خط چپوندن توی یک فایل؟ هر مجموعه کد مربوط به یک عملیات یکسان یا مشابه رو هرجا که نیاز بوده تکرار کردن؟

دقیقا بنده به این مسئله اشاره کردم که اغلب توضیحات و مثالها درمورد کاربرد و مزایای شیء گرایی، بقدر کافی واقعی و ملموس نیستن. مثل همین ادعاها درمورد کدنویسی بدون شیء گرایی که کاملا اغراق آمیز و غیرواقعیه.

حتی از اون خیلی قدیم و در زبان اسمبلی هم اینطور که شما گفتی کد نمینوشتن! یعنی مجبور نیستن اینطوری بنویسن!
20 هزار خط کد پشت سرهم بچپونیم توی یک فایل؟ کدهای یک عملیات رو مدام هرجا که نیازه تکرار کنیم و دستی هم کد بزنیم؟
واقعا حرفهای مسخره ایه حتی بعنوان مثال!


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

h.rezaee
دوشنبه 16 بهمن 1391, 13:53 عصر
از اون جان گفتن و بیشتر توضیح دادن مشخصه که شما اصلا دانشگاه نرفتی؟ البته ربطی هم نداره! چون اگه بخوای یه برنامه نویس خوب باشی و برنامه ای بنویسی که واقعا بدرد بخوره باید این چیز هایی که معمول و بهینه هستش رو رعایت کنید.
بنده هم نمیگم باید 100% از شی گرایی استفاده کنیم ، بنده میگم وقتی میشه از امکانات اون چیزی که داریم استفاده می کنیم می تونیم استفاده کنیم چرا استفاده نکنیم.
مثل این که شما یک ماشین فول آپشن بخرین بعد از امکاناتش استفاده نکنین.
الان نمونه اش همین چیز هایی که گفتین بخش هایش مربوط به شی گرایی میشه که مثل اون خیلی مرتب ، متد های مرتب و .... رو بنویسیم و ......
اصلا از شی گرایی استفاده میکنیم تا دوباره نویسی نکنیم. خیلی راحت اون فایلی رو که قبلا نوشتیم رو برای برنامه دیگه استفاده کنیم. برای نام گذاریش هم همیشه سعی می کنیم به گونه ای استفاده کنیم که موقع استفاده خیلی راحت بدونیم این متد ، این شی ساخته شده ، این ..... برای چه کاری هستش. به عنوان مثلا برای پرینت کردن یک خط ، صفحه و .... یه متد تعریف می کنیم به اسم print ، هر موقع که می خوایم پرینت کنیم اون رو صدا می زنیم( البته این نمونه خیلی خیلی مبتدی هستش که ابتدای هر کتاب آموزش شی گرایی مینویسن ).
نمونه اش هم همین اسمبلی که گفتین، نمی دونم باهاش کار کردین یا نه؟!!! ولی بنده 3-4 تا برنامه برای دانشگاه با مسم براش نوشتم اگه از لحاظ بهینه سازی روش کار نکنید سرعت اجرای برنامه از این رو به اون رو میشه! سرعت سی پی یو تا..... بالا میداره!
همین الان دقت کرده باشین سی پی یو های خانواده اینتل 80*86 از همون ابتدا برنامه ها واسشون نوشته شده! وقتی می خوان ظرفیت سی پی یو رو بالا ببرن شرکت اینتل دیگه نمیاد از همون ابتدا شروع کنه به کد نویسی ......
حتی شرکت های بزرگ مثل ماکروسافت و..... از همون اول هم روی هزینه برنامه هاشون دقت می کردن تا از همه نظر بهینه باشه.

در مورد توابع دقت کرده باشین گفتم از امکانات اون برنامه ای که داریم باهاش برنامه می نویسیم نهایت استفاده رو می بریم تا برنامه نوشته شده به بهترین نحو بهینه باشه!

البته بنده نه اهل کل کلم نه اهل این که با کسی بخوام بحث کنم که میگه مرغ یه پا داره!

بازم میدونم می خوای پست بزاری و بگی همینی که من میگم درسته (مرغ یه پا داره) ولی دیگه جواب نمی دم.منطقی بودن هم خیلی خوبه ! الان می دونم باز هم می خوای بگی از رو احساسات میگی و ................... اصلا اهمیت نداره .

اصلا می دونی چیه شما سازنده پی اچ پی ، سی شارپ ، اس کیو ال ، استیو جابز ، CLRS و ........... هر چی دوست داری......... از بحث خارج شدیم ! این بنده خدا یه سوال پرسید رفتیم به کجا!
اگه می بینید بعضی از کلمات بنده هم غلط تایپی داره واسه اینه که با گوشی می نویسم.

Tarragon
دوشنبه 16 بهمن 1391, 14:20 عصر
چرا می زنی!!!!!!!

h.rezaee
دوشنبه 16 بهمن 1391, 14:34 عصر
چرا می زنی!!!!!!!
این دوره زمونه، موقع دعا و کتک کاری نیست! این بنده خدا آتیشش خیلی تنده ، برای اینکه آتیش تند رو هم بتونی خاموش کنی باید این جوری بگی ! جور دیگه هیچ راهی نداره

eshpilen
دوشنبه 16 بهمن 1391, 18:35 عصر
از اون جان گفتن و بیشتر توضیح دادن مشخصه که شما اصلا دانشگاه نرفتی؟ البته ربطی هم نداره! چون اگه بخوای یه برنامه نویس خوب باشی و برنامه ای بنویسی که واقعا بدرد بخوره باید این چیز هایی که معمول و بهینه هستش رو رعایت کنید.
...
اصلا می دونی چیه شما سازنده پی اچ پی ، سی شارپ ، اس کیو ال ، استیو جابز ، CLRS و ........... هر چی دوست داری......... از بحث خارج شدیم ! این بنده خدا یه سوال پرسید رفتیم به کجا!
اگه می بینید بعضی از کلمات بنده هم غلط تایپی داره واسه اینه که با گوشی می نویسم.
ببین عزیزم این شما هستی که اصلا معلوم نیست ادعا و موضعت چیه و دلیل و سندت براش چیه.
منکه با شیء گرایی مخالفتی نکردم. فقط گفتم اگر میخوای بری دنبال شیء گرایی، همینطور تقلیدی و کورکورانه نرو، اول بفهم چرا، ببین نیاز بهش رو واقعا دیدی یا نه از نظر فنی.
و گفتم که بدون شیء گرایی هم میشه برنامه نوشت؛ اگر نه همهء نوع و هر مقیاسی برنامه رو، ولی بیشتر برنامه های معمولی رو که میشه نوشت. اونقدر هم سخت نیست. اونقدر هم غیرمنطقی و هزینه بر نیست.
گفتم بجای اینکه فقط دوتا تابع و متغییرت رو بذاری توی یک کلاس و دلت خوش باشه که کلاس نویسی یاد گرفتم، میتونی دنبال چیزهای کاربردی تر زیادی که هست و پایهء هر نوع برنامه نویسی چه با شیء گرایی و چه بدون شیء گرایی هستن بری. یعنی میگم آدم منطقا باید اولویت بالاتر و چیزهای کاربردی تر رو دنبال کنه. وقتی هنوز نیاز جدی به شیء گرایی رو خودت نفهمیدی، پس اولویت اول نیست. اما مثلا بدون الگوریتم و پروتکل و ساختمان داده و غیره که نمیشه هر برنامه ای رو نوشت! اینا دیگه خود اصل برنامه و کد هستن.
بعدشم شما باز اومدی یه مثال فوق اغراق شده و غیرواقعی آوردی که اینطور وانمود میکنه که اگر از شیء گرایی استفاده نکنیم برناممون میشه فناوری عصر حجر و کار تمام دستی و شاق، بقول شما 200 هزار خط توی یک فایل و هرجا هم هر کاری رو میخوایم انجام بدیم دوباره و دوباره شروع میکنیم با دست کلی کد تکراری رو از ابتدا مینویسیم! آخه خودت انصاف بده، کجا همچین ادعایی صحت داره؟ نه عزیزم بدون شیء گرایی هم کلی برنامه نویسی مرتب و منظم و سازمان یافته و تمیز میشه کرد، حالا نه به راحتی و کاملی با شیء گرایی، ولی تاحدی که خیلی متفاوت هست از این افسانه ای که شما با گفته هات القا کردی. ضمنا به حجم و پیچیدگی و پارامترهای دیگری مثل گروهی بودن کار و غیره هم میتونه بستگی داشته باشه که شیء گرایی تا چه حد مفید واقع بشه. ممکنه در پروژه های کوچک، منفرد، موردی و غیره همون روش صاف و ساده صرفش بیشتر باشه تا اینکه بخوای کلی ساختار و کلاس و اینترفیس و بند و بساط تعریف کنی.

خود PHP هم یک نمونه از برنامهء بزرگ و موفق بدون شیء گرایی به اون معناست.

بعد دیگه نمیدونم این بحث دانشگاه و برچسب زدن ها و اینها دیگه واسه چیه.
حرف منطق و به این روشنی دارم میگم، باز تو یه چیز دیگه میگی و حرف توی دهن من میذاری.
اتفاقا من دانشگاه هم رفتم.
بعد مثال دانشگاه شما برای علت مزیت و کاربرد شیء گرایی همون مغلطهء مضحک بوده اونوقت؟
منم حرفم از قبل همین بود که مثالها و توجیه ها درمورد مزیت و کاربرد شیء گرایی اغلب غیرواقعی هستن. چرا اینطوره؟ خب لابد همین قضیهء کورکورانه پیروی کردن و صرفا اسم و شکلش رو فهمیدن و استفاده کردن بوده دیگه. یعنی طرفها خودشون هم اونطور عمیق و عملی و اصولی درک و استفاده نکردن و بیشتر جوگیر و مقلد و در جهت جریان رودخانه بودن.

eshpilen
دوشنبه 16 بهمن 1391, 19:12 عصر
من یه سوال میکنم از شما، ببین جواب منطقی براش چیه.

برنامه نویسی که هنوز نمیتونه رگولاراکسپرشن های لازم برای پروژش رو خودش بنویسه، نمیتونه داکیومنت ها و منابع انگلیسی ای رو که فت و فراوان در اینترنت ریخته بخونه و استفاده کنه، نمیتونه الگوریتم های تنها کمی پیچیده رو طراحی کنه، هنوز از ساده ترین قواعد و هدرهای پروتکل HTTP سردرنمیاره، هنوز دوتا دستور htaccess رو نمیتونه بفهمه و خودش بنویسه یا حداقل دستکاری کنه، از امنیت چیزی نمیدونه، نمیدونه اصلا رمزنگاری واقعی چیه و چرا و چطور و کجا باید استفاده کرد، هنوز اسم متغییرها و توابعش و کامنتهاش رو فینگلیش مینویسه یا عبارتهای انگلیسی ناشیانه از میان معدود کلماتی که بلده، و خیلی موارد مشابه، بنظر شما براش دنبال شیء گرایی رفتن اونم بدون اینکه خودش نیاز فنی دیده باشه ودرکی ازش داشته باشه اولویت داره یا اینکه اون ضعفهای دیگه رو بره دنبالشون؟

الان خیلی ها ادعای بلد بودن و استفاده از شیء گرایی و MVC و اینها رو میکنن، ولی توی این زمینه هایی که گفتم ضعفهای فراوان دارن.
شما پرفسور شیء گرایی و MVC باش، آیا بدون اون دانش و توانایی های پایه که گفتم، برنامت کامل و ارزشمند میشه؟
شیء گرایی و الگوهای طراحی و اینها در یک سطح بالاتری هستن برای سازماندهی سطح بالا و کد برنامه و قابلیت مدیریت و نگهداری و گسترش راحتتر اون در آینده؛ نقش خود الگوریتم و اصول امنیت و غیره رو که انجام نمیدن برای شما. و برنامه ای که بهترین شیء گرایی و الگوهای مهندسی رو کامل داشته باشه، اما از اون لحاظ دیگه ضعیف و ناقص باشه، واقعا ارزش زیادی نداره! داره؟ وقتی برنامت امنیت حرفه ای نداره، وقتی الگوریتم های اصولی و علمی نداره، اونوقت با رعایت شیء گرایی و الگوهای طراحی، حرفه ای و اصولی و علمی نمیشه که. میشه؟

ضمنا کاربرد و مزیت عمدهء شیء گرایی و اینها بیشتر در پروژه های بزرگ و پیچیده و مهم هست؛ و پروژه های بزرگ و پیچیده و مهم هم اول برنامه نویسش باید اون چیزهایی رو که گفتم بلد باشه و بکار برده باشه.
خلاصه یجور تناقض و عدم تعادلی بنده دیدم تاحالا در این زمینه. یک جور سطحی نگری و ظاهری و توخالی بودن برنامه نویسها و برنامه ها و اینکه بیشتر به پوستهء برنامه نویسی توجه دارن تا باطن و پایهء اون بصورت عمیق و کامل. یعنی ما یک اصول سطح بالا رو که عمدتا برای برنامه های حرفه ای هستن رو میخوایم یاد بگیریم و طراحی کنیم، اما هنوز اون چیزهای پایه ای ترمون رو بلد نیستیم و چندان هم اهمیت نمیدیم.
این شده که هرکس مثلا بقول خودش کلاس نویسی میکنه و MVC بکار میبره فکر میکنه الان به اون درجهء برتر حرفه ای ها وارد شده! بعد اون همه چیزهای دیگه که یا اصلا ندیده یا بیخیال شده و بهشون اهمیت زیادی نمیده چی پس؟

حالا باز تو بیا این بحث مسخرهء دانشگاه رفتن و نرفتن رو پیش بکش.
اصلا میفهمی چی میگی خدایی؟
واسه من پز میدی مثلا؟
فکر میکنی نصف اون چیزهایی که بلدم و توانایی های که دارم رو داری؟
بعد به من میگی که من میگم مرغ یه پا داره و برچسب های مختلف و دست پیش گرفتن.
مرد حسابی جواب منطق رو با اینا نمیدن. شما دانشگاه رفتی بهتر بود اول منطق و صداقت رو یاد میگرفتی و مخاطب خودت رو مسخره نمیکردی وقتی کم میاری توی جواب دادن.
این رفتارها واقعا زشته.
دانشگاه رفتی هم سعی کن اونقدر هوشمند و مستقل باشی که همینطور هر چیزی رو سطحی و کلیشه ای فقط حفظ و تکرار نکنی مثل طوطی!
آدمهایی بودن که بدون دانشگاه رفتن هم کارهای بزرگی کردن که بسیاری از دکترها و فوق دکترها هم نتونستن انجام بدن. حالا ما که دانشگاه هم رفتیم تازه :لبخند:

حالا من میگم جان و داداش و اینها، یعنی آدم بی سواد و بی فرهنگی هستم؟
تازه کجاش رو دیدی! باشگاه کنگفو هم رفتم!! :قهقهه:

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

مرد حسابی اگر چیزی بلدی خب با منطق و سند روشن جواب بده.
یا با دوتا مثال روشن حرفت رو ثابت کن.
برنامه نویسی تئوری نیست که. همهء اینا برای نیازها و نتایج عملیه و باید بشه با مثال و نمونه کد واقعی نشون داد.
ضمن اینکه گفتم و بازهم میگم که من اصلا با شیء گرایی مخالف نبوده و نیستم. توی پروژهء خودم هم حداقل دو سه تا کلاس نوشتم و استفاده کردم. بقول بعضیا کلاس نویسی :لبخند:

Tarragon
دوشنبه 16 بهمن 1391, 20:55 عصر
عجب دست به تایپی چند ساعت طول کشید؟

eshpilen
دوشنبه 16 بهمن 1391, 22:15 عصر
فعلا بیکاریم حالا تا پروژهء بعدی ببینم چی هست :لبخند:
یوقتا آدم سرگرم هم میشه. یعنی کار خاص دیگه ای ندارم و مثلا خسته شدم، میگم خب بریم یخورده استخوان نرم کنیم :قهقهه:
نه جون تو من از این بحثها خوشم میاد. نه اینکه بخاطر کل کل. از نظر نظام فکری و قدرت جنگندگی منو تقویت میکنن. در رویارویی و جدال فکری و منطقی با دیگران، رشد میکنم. و البته از طرف دیگه همونطور که گفتم بنظرم اینا واقعیت هایی هستن که بالاخره یکی باید بگه و به روی جامعه بیاره.
شما اگر از بحث در محیط مجازی میترسید، بنظر من خیلی درپیت هستید. حالا هرچقدر هم که خشن باشه.
من از هیچی در این زمینه نمیترسم.
بحث سواد باشه هرچی رو میخوای زیر سوال ببر. بگو بیمار روانی هستم. اتفاقا من خوشم میاد از خودتحلیلی. من از هرچیزی سعی میکنم به نفع خودم و برای قوی تر شدن استفاده کنم. از تقریبا هرچیزی میشه این استفاده کرد. منتها آدمش رو میخواد. من با اینا بازی میکنم. البته نه بازی برای سرگرمی. بازی به معنای احاطه و شکل دادن و هدایت کردن در جهت خواسته های خودم.

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

مطلب میذاری میگن کلی گفتی، مثال نداره، ساده بگو، با نمونه کد و تست میذاری میگن این همه زیاده وقت نمیشه بخونیم.
حالا خوبه اون کتابه رو هم که خودشون گذاشتن درموردش همین رو گفتن. معلوم میشه فقط مشکل مطالب من نیست.

بابا خیلی دیگه.
میدونی من چقدر حجم عظیمی مطالعه کردم تاحالا؟
اکثرش هم زبان انگلیسی اونم رفرنسهای خیلی خشک و حجیم و مطالب پیچیده.

این رشته خیلی گسترده هست و چیزهای پیچیده ای توش داره.
ولی اکثرا اینطور طی میکنن: الگوریتم/امنیت/زبانهای برنامه نویسی درگیر/ساختمان داده/پروتکل/زبان انگلیسی/... درحد 10%، بعد میرن روی کار شیء گرایی 30% (چون شیء گراییشون اصولی نیست)، بعد میرن روی MVC و اینا شاید 50%.

ولی من اون بخش اول رو در مقایسه میتونم بگم درحد 99% یاد گرفتم. شیء گرایی و MVC و اینا هم که هنوز آنچنان طرفش نرفتم اصلا (نه وقتش شده و نه نیازش پیش آمده هنوز)، ولی درمقابل اون موارد گسترده و پیچیده ای که در بخش اول یاد گرفتم، میتونم بگم شیء گرایی و MVC آنچنان چیزی نیست و بحساب نمیاد؛ هروقت لازم شد اصلا کاری نیست که ازش وحشتی داشته باشم. ولی از الگوریتم و یکسری چیزهای پیچیدهء دیگه واقعا میترسیدم که کم بیارم. باید حتما یاد میگرفتم. قبل از اینکه یاد بگیرم اعتماد بنفس نداشتم. یک مقدار هم چون هدفم تجاری و کار گروهی و امثالهم نبود دنبال این مسائل نبودم. چون میدونستم که بهرحال بدون شیء گرایی و الگوهای طراحی هم میشه تقریبا هر برنامه ای رو که میخوام بنویسم.
الان من میتونم برنامهء دسکتاپ بنویسم، وب بنویسم، حتی سیستمی، و میتونم همهء اینا رو با هم ترکیب کنم، میتونم در سطح پروتکل کار کنم، تقریبا هرچیزی. توانایی هام گسترده هست. هدفم هم همین بود. یعنی چیزی نباشه که نتونم بنویسم. البته به تمیزی و ظاهرش چه در سطح کد و چه در سطح کاربر اهمیت خاصی نمیدم. دنبال گرافیک و زرق و برق نبودم اصلا. دنبال انجام کارهایی واسه خودم بودم.

mojtaba.baghban
دوشنبه 16 بهمن 1391, 22:20 عصر
شی‌گرایی هر چند مد روزه ولی نمیشه از جلو نام بعضی از مخالفان شی‌گرایی از جمله دنیس ریچی خالق زبان سی، کن تامسون خالق یونیکس، راب پایک عضو تیم توسعه یونیکس و خالق کدینگ utf-8، ریچارد استالمن خالق پروژه گنو و از توسعه دهندگان اولیه کامپایلر gcc، لینوس تروالدز خالق لینوکس، الکساندر استپانف طراح اولیه کتابخانه stl در زبان c++ و ... به راحتی گذشت.
با این حال من خودم از طرفداران پر و پا قرص شی‌گرایی هستم. یادمه موقعی که بازی tetris رو با زبان سی نوشتم هیچی از شی‌گرایی نمیدونستم بعدها که شی‌گرایی رو با c# یاد گرفتم (هر چند شی‌گرایی یه مفهومه و ربطی به زبان مورد استفاده نداره) دیدم که اگه پروژم رو شی‌گرا نوشته بودم چقدر کارم راحت می‌شد

eshpilen
دوشنبه 16 بهمن 1391, 22:36 عصر
شی‌گرایی هر چند مد روزه ولی نمیشه از جلو نام بعضی از مخالفان شی‌گرایی از جمله دنیس ریچی خالق زبان سی، کن تامسون خالق یونیکس، راب پایک عضو تیم توسعه یونیکس و خالق کدینگ utf-8، ریچارد استالمن خالق پروژه گنو و از توسعه دهندگان اولیه کامپایلر gcc، لینوس تروالدز خالق لینوکس، الکساندر استپانف طراح اولیه کتابخانه stl در زبان C++‎‎‎‎‎‎ و ... به راحتی گذشت.
مطمئنی؟
من تاحالا نشنیده بودم.
فرضا همون سی هم که هست و مثلا در محیط دسکتاپ گنوم در لینوکس، یه کتابخانه/فریمورکی درست کردن که شیء گرایی رو تاحدی شبیه سازی میکنه در زبان سی (فکر کنم اسمش gobject باشه یا یه همچین چیزی). من مثالهاش رو دیدم. شیء گرایی کاملی نیست، با استراکچرها ساختن و یکسری مخلفات دیگه احتمالا مثل ماکروهای مخصوص و متغییرهای گلوبال خاصی احتمالا؛ ولی تابعش هاش (تابع هایی که نقش متدهای اشیاء رو بازی میکنن) هنوز جای دیگه تعریف میشه در کد! چون راهی نداره در زبان سی که طور دیگری باشه. سینتاکس اجازه نمیده دیگه.

ولی خب درمورد برنامه نویسی سطح پایین/سیستمی و هستهء سیستم عامل و اینا خب درسته که از شیء گرایی استفاده نمیشه یا خیلی کمتر استفاده میشه، که این هم دلایل فنی داره و هم دلایل تاریخی.

در مطلبی که در این باره فکر کنم از یکی از خود توسعه دهندگان هستهء لینوکس خوندم نوشته بود که ساختار برنامه نویسی سطح پایین و هسته سیستم عامل طوریه که شیء گرایی درش اونقدر مزیت و فایده نداره که در برنامه نویسی سطح بالا/اپلیکیشن داره، و از طرف دیگه ما از قدیم این همه کد رو به زبان سی و بدون شیء گرایی داریم و دلیل و انگیزهء کافی و صرفه نداریم که بخوایم به سی++ سویچ کنیم.
ضمنا حساب کن اون یک مقدار پرفورمنس که بابت شیء گرایی از دست میره در این سطح برنامه نویسی میتونه هنوز ارزش قابل توجهی داشته باشه.

البته اینکه درمورد شیء گرایی اغراق های زیادی شده خیلی ها گفتن تاحالا.
بعضی برنامه نویسان قدیمی اصلا شیء گرایی رو خیلی دارای ایده های کاملا جدید و مهمی نمیدون و میگن ما که از قدیم داشتیم بیشتر این کارها رو به شکل دیگری/با روشها/ابزارهای دیگری انجام میدادیم!
همونطور که بنده هم گفتم، با خیلی روشهای بدوی تر هم میشه خیلی مزایای لازم رو بدست آورد و حتی تاحد قابل توجهی شبیه شیء گرایی عمل کرد. ولی شیء گرایی دیگه مخصوص این کاره از همه نظر و امکاناتش کاملتر و تمیزتره خب.

MMSHFE
دوشنبه 16 بهمن 1391, 22:56 عصر
دوستان عزیز، eshpilen با وجود لحن تندش (که دیگه بهش عادت کردیم!) بنظرم داره درست میگه. ببینید، اینکه فقط برای تمرین و کار عملی بخواین شئ گرا بنویسید، بد نیست ولی سعی نکنید اینکار رو هدفتون قرار بدین و فکر کنید اساساً هر پروژه ای که شئ گرا نوشته بشه بهتره. بطور کلی، قدرت اصلی شئ گرایی در مباحثی مثل وراثت و رابطها و سایر مباحث مشابه هست نه اینکه صرفاً شئ گرا نوشتن، امتیاز خاصی به کد شما بده. Re-usability رو توی برنامه نویسی Procedural هم میتونید بدست بیارین. یادآوری مجدد کدها هم که کلاً مربوط میشه به بحث Documentation و ربطی به Coding Style نداره. البته من خودم هم توی آموزشهایی که گذاشتم، در قسمت شئ گرا، گفتم هر پروژه ای که قبلاً نوشتین رو سعی کنید بصورت Object Oriented بنویسید اما هدفم فقط تمرین کردن بوده و اینکه توی نگاه کردن به مسئله بصورت مجموعه ای از اشیاء به تسلط کافی برسین تا هرموقع نیاز بود، بدونید چطور باید شئ ساخته بشه، اصلاً کدوم بخشهای برنامه قابلیت تبدیل به شئ رو دارن و کدوم بخشها بصورت Procedural بهتر جواب میدن. لپ مطلب اینکه کلاً فکر نکنید شئ گرا نوشتن، برنامه رو بهتر میکنه. اینقدر هم دعوا نکنید، بچه ها خوابن :چشمک:

mojtaba.baghban
سه شنبه 17 بهمن 1391, 01:40 صبح
نقل قول: سیستم مدارس
نوشته شده توسط mojtaba.baghban
شی‌گرایی هر چند مد روزه ولی نمیشه از جلو نام بعضی از مخالفان شی‌گرایی از جمله دنیس ریچی خالق زبان سی، کن تامسون خالق یونیکس، راب پایک عضو تیم توسعه یونیکس و خالق کدینگ utf-8، ریچارد استالمن خالق پروژه گنو و از توسعه دهندگان اولیه کامپایلر gcc، لینوس تروالدز خالق لینوکس، الکساندر استپانف طراح اولیه کتابخانه stl در زبان C++‎‎‎‎‎‎‎ و ... به راحتی گذشت.
مطمئنی؟
من تاحالا نشنیده بودم.
می‌تونی یه سرچ کوچولو در مورد مخالفان شی گرایی بفرمایید.
تازه خیلی‌های دیگه هم هستند که دیگه حوصلم نشد اسمشون رو بنویسم. آخه سرعت تایپم افتضاحه

Tarragon
سه شنبه 17 بهمن 1391, 06:20 صبح
اقایون مسئله اصلی یه چیز دیگه است!
من فقط خواستم بدونم اگر بخوام روی یه سیستم واسه یه مدرسه کار کنم باید چه کلاس هایی طراحی باشه با متدهاش ( صرفا اسمشون ) که بفهمم چطوری باید کار کنم آخه این اولین سیستمی هست که می خوام با شی گرا کار کنم یخورده استرس دارم و جرعت شروع کردن ندارم.

MMSHFE
سه شنبه 17 بهمن 1391, 08:19 صبح
یک راه حل مناسب، همونی هست که توی دانشگاه تدریس میشه:
1- ابتدا باید توضیح مختصری از سیستم رو بنویسید. مثلاً:

در این سیستم، دانشجویان ابتدا وارد سیستم شده و سپس اقدام به مشاهده آخرین وضعیت تحصیلی خود میکنند. دانشجویان میتوانند با استفاده از لینکهای موجود، اقدام به اخذ دروس جدید، اطلاعات از نمره دروس قبلی، مشاهده وضعیت حضور و غیاب، ثبت اعتراض برای نمره دروس دلخواه و یا خروج از سیستم نمایند. اساتید نیز بعد از ورود به سیستم میتوانند فهرست دروس ارائه شده در نیمسال جاری را همراه با اطلاعات دانشجویانی که هر درس را اخذ نموده اند، مشاهده نمایند. از جمله اقداماتی که اساتید میتوانند انجام دهند، میتوان به ثبت نمره، ثبت حضور و غیاب، بررسی اعتراضها و پاسخ به آنها، ویرایش و اصلاح نمرات و وضعیت حضور و غیاب، اعلام اسامی دانشجویان دارای غیبت بیش از حد مجاز و خروج از سامانه اشاره نمود. آموزش نیز با ورود به سیستم میتواند اقدام به تعریف دروس جدید با اساتید موردنظر و تعیین برنامه زمانی بنماید. همچنین حذف درس درصورت نرسیدن به حدنصاب یا اعلام عدم امکان حضور استاد، تعیین برنامه زمانی آزمونها، حذف درس دانشجویانی که اسامی آنها بدلیل غیب غیرمجاز توسط استاد گزارش شده است و خروج از سیستم، از دیگر امکانات آموزش است. ضمناً مدیریت ورود و خروج کاربران با استفاده از Session انجام میشود.2- مشخص کردن موجودیتها و رفتارها:

در این سیستم، دانشجویان ابتدا وارد سیستم شده و سپس اقدام به مشاهده آخرین وضعیت تحصیلی خود میکنند. دانشجویان میتوانند با استفاده از لینکهای موجود، اقدام به اخذ دروس جدید، اطلاعات از نمره دروس قبلی، مشاهده وضعیت حضور و غیاب، ثبت اعتراض برای نمره دروس دلخواه و یا خروج از سیستم نمایند. اساتید نیز بعد از ورود به سیستم میتوانند فهرست دروس ارائه شده در نیمسال جاری را همراه با اطلاعات دانشجویانی که هر درس را اخذ نموده اند، مشاهده نمایند. از جمله اقداماتی که اساتید میتوانند انجام دهند، میتوان به ثبت نمره، ثبت حضور و غیاب، بررسی اعتراضها و پاسخ به آنها، ویرایش و اصلاح نمرات و وضعیت حضور و غیاب، اعلام اسامی دانشجویان دارای غیبت بیش از حد مجاز و خروج از سامانه اشاره نمود. آموزش نیز با ورود به سیستم میتواند اقدام به تعریف دروس جدید با اساتید موردنظر و تعیین برنامه زمانی بنماید. همچنین حذف درس درصورت نرسیدن به حدنصاب یا اعلام عدم امکان حضور استاد، تعیین برنامه زمانی آزمونها، حذف درس دانشجویانی که اسامی آنها بدلیل غیب غیرمجاز توسط استاد گزارش شده است و خروج از سیستم، از دیگر امکانات آموزش است. ضمناً مدیریت ورود و خروج کاربران با استفاده از Session انجام میشود.3- حالا باید اون موجودیتهایی که دارای رفتار هستن رو به دید اشیاء بالقوه نگاه کنید و هرکدوم صلاح دونستین رو بصورت کلاس تعریف کنید. در این مرحله توصیه میشه رفتارهایی که منسوب به موجودیت خاصی نیستن (مثل مدیریت ورود و خروج کاربران با Session توی مثال فوق) رو بصورت Procedural بنویسید. ازطرفی رفتارهای مشترک موجودیتها رو (مثل ورود به سیستم و خروج از سیستم)، بهتره توی یک کلاس والد مشترک بگذارین که سایر کلاسهای که نیاز به اون رفتارها دارن، از اون کلاس مشتق بشن. البته همیشه کار به این راحتی نیست و کم کم با تمرین کردن، جزئیات و مبانی و مهارتهای OOP رو باید توی خودتون تقویت کنید. نگران هم نباشین، یکم که بگذره، توی خیابون هم که راه میرین، همه چیز رو بصورت Object خواهید دید و توی ذهنتون کلاسش رو ترسیم میکنید و عناصر private و public اون کلاس رو مجسم میکنید و دنبال کلاس والد براش میگردین! کلاً زندگیتون جالب میشه :لبخند:

Tarragon
سه شنبه 17 بهمن 1391, 13:30 عصر
خیلی سپاس :)
Procedural یعنی چی؟

mojtaba.baghban
سه شنبه 17 بهمن 1391, 19:22 عصر
خیلی سپاس :)
Procedural یعنی چی؟
یعنی برنامه‌نویسی رویه‌ای که در اون برنامه به بخشهای کوچکتر توابع تقسیم می‌شود درحالیکه در برنامه‌نویسی شی‌گرا برنامه به بخشهای کوچکتر کلاسها تقسیم می‌شود

engmmrj
سه شنبه 17 بهمن 1391, 23:51 عصر
از نظر نظام فکری و قدرت جنگندگی منو تقویت میکنن
آقای eshpilen اهل جنگ هستین؟:لبخند:
شوخی کردم کی جرعت داره با شما کل کل کنه یا دیگه بدتر جنگ کنه(خدا به داد طرف برسه):لبخند:

MinusOne
چهارشنبه 18 بهمن 1391, 01:44 صبح
منطق و تفکر شیء گرایی چیزی نیست که با خوندن مقالات و مطالب ایجاد بشه ، برای به دست آوردن این تفکر باید تمرین کرد پروژه ها رو رویه ای و شیءگرا نوشت. بعد از اینکه بارها اینکار انجام شد تازه شخص ذهنیتی در مورد شیءگرایی پیدا می کنه اونجاست که میتونه بفهمه کجا شیءگرایی لازمه وگرنه بعضا کاری که میشه به طور ساده تو 10 خط کرد رو شخص یه کلاس می نویسه که 10 خط فقط تعریف پراپرتی(فیلد) هاشه! این بنده خدا هم باید یه منطق شیءگرایی درونش شکل بگیره بعد بتونه متوجه بشه که کجا شیء گرایی خوبه کجا بد. با شیءگرایی یک بار می نویسی صد بار استفاده میکنی ، از حق هم نگذریم تو همچین پروژه ای(مدیریت مدرسه) اگه به صورت حرفه ای باشه ، بدون شیءگرایی کار خیلی سخته مثلا فرض کنید می خواید معدل دانش آموزا رو محاسبه کنید میشه تابعی نوشت که با گرفتن آیدی دانش آموز معدلش رو حساب کنه ، حالا فرض کنید میخوایم به اونایی که معدلشون پایینتر از میانگینه پیام (SMS یا اگه اکانت داشتن رو سرور پیام سروری) بدیم دوباره باید تابعی بنویسیم مثلا به اسم sendMessage که با گرفتن آیدی به دانش آموز پیام بده حالا فرض کنیم که قراره به والدین هم پیام بدیم دوباره باید یه sendMessageToParent بسازیم که ... حالا کی میخواد اسم اینهمه متغیر و تابع رو یادش نگه داره ! جدای از این که خیلی از عملیات ها محاسبات بارها تکرار میشن چقدر قشنگ و شیکه که یه کلاس به اسم Person داشته باشیم که متد sendMessage داشته باشه و کلاس های Student و Parent ازش مشتق شن و تو همون کلاس student متدی برای محاسبه میانگین و ... باشه ؟ خیلی جمع و جور و مرتب میشه و اگه قرار باشه بعد عمری امکان جدیدی استفاده کنیم خیلی راحت می فهمیم چیکار کردیم.

برنامه نویسی که هنوز نمیتونه رگولاراکسپرشن های لازم برای پروژش رو خودش بنویسه، نمیتونه داکیومنت ها و منابع انگلیسی ای رو که فت و فراوان در اینترنت ریخته بخونه و استفاده کنه، نمیتونه الگوریتم های تنها کمی پیچیده رو طراحی کنه، هنوز از ساده ترین قواعد و هدرهای پروتکل HTTP سردرنمیاره، هنوز دوتا دستور htaccess رو نمیتونه بفهمه و خودش بنویسه یا حداقل دستکاری کنه، از امنیت چیزی نمیدونه، نمیدونه اصلا رمزنگاری واقعی چیه و چرا و چطور و کجا باید استفاده کرد، هنوز اسم متغییرها و توابعش و کامنتهاش رو فینگلیش مینویسه یا عبارتهای انگلیسی ناشیانه از میان معدود کلماتی که بلده، و خیلی موارد مشابه، بنظر شما براش دنبال شیء گرایی رفتن اونم بدون اینکه خودش نیاز فنی دیده باشه ودرکی ازش داشته باشه اولویت داره یا اینکه اون ضعفهای دیگه رو بره دنبالشون؟این حرف شما درست نیست چون کسی که می خواد مثلا یه اسکریپت مدرسه بنویسه چه نیازی به شناخت الگوریتم های رمز نگاری داره ؟ اگر هم جایی نیاز داشت چند تا تابع آماده کپی پیست میکنه که کارش رو حل میکنن. به نظر من چیزی که برای برنامه نویسی مهمه الگوریتم و منطق پیاده سازیه برنامست که برنامه نویس باید داشته باشه وگرنه بقیه چیزا رو میشه مقطعی مطالعه کرد. اینم در نظر داشته باشیم که زیر سایه ی .Net (قربونش برم) خیلی از (مثلا)برنامه نویس ها خیلی از مفاهیم پایه ای برنامه نویسی (مثلا اکثر ساختمان های داده مثل پشته) رو نمیشناسن ولی برنامه ای می نویسن که ... منطقی هم بخوایم نگاه کنیم نیازی نیست که یارو این چیزارو بدونه نمی خواد که سیستم عامل طراحی کنه .(الآن که بخثمون رو php هست برنامه نویس برای نوشتن برنامه ی ساده اصلا نیازی نداره که بدونه فرق 0 با "0" چیه یا اصلا بدونه int و string چین !)

eshpilen
چهارشنبه 18 بهمن 1391, 09:39 صبح
منطق و تفکر شیء گرایی چیزی نیست که با خوندن مقالات و مطالب ایجاد بشه ، برای به دست آوردن این تفکر باید تمرین کرد پروژه ها رو رویه ای و شیءگرا نوشت. بعد از اینکه بارها اینکار انجام شد تازه شخص ذهنیتی در مورد شیءگرایی پیدا می کنه اونجاست که میتونه بفهمه کجا شیءگرایی لازمه وگرنه بعضا کاری که میشه به طور ساده تو 10 خط کرد رو شخص یه کلاس می نویسه که 10 خط فقط تعریف پراپرتی(فیلد) هاشه! این بنده خدا هم باید یه منطق شیءگرایی درونش شکل بگیره بعد بتونه متوجه بشه که کجا شیء گرایی خوبه کجا بد. با شیءگرایی یک بار می نویسی صد بار استفاده میکنی ، از حق هم نگذریم تو همچین پروژه ای(مدیریت مدرسه) اگه به صورت حرفه ای باشه ، بدون شیءگرایی کار خیلی سخته مثلا فرض کنید می خواید معدل دانش آموزا رو محاسبه کنید میشه تابعی نوشت که با گرفتن آیدی دانش آموز معدلش رو حساب کنه ، حالا فرض کنید میخوایم به اونایی که معدلشون پایینتر از میانگینه پیام (SMS یا اگه اکانت داشتن رو سرور پیام سروری) بدیم دوباره باید تابعی بنویسیم مثلا به اسم sendMessage که با گرفتن آیدی به دانش آموز پیام بده حالا فرض کنیم که قراره به والدین هم پیام بدیم دوباره باید یه sendMessageToParent بسازیم که ... حالا کی میخواد اسم اینهمه متغیر و تابع رو یادش نگه داره ! جدای از این که خیلی از عملیات ها محاسبات بارها تکرار میشن چقدر قشنگ و شیکه که یه کلاس به اسم Person داشته باشیم که متد sendMessage داشته باشه و کلاس های Student و Parent ازش مشتق شن و تو همون کلاس student متدی برای محاسبه میانگین و ... باشه ؟ خیلی جمع و جور و مرتب میشه و اگه قرار باشه بعد عمری امکان جدیدی استفاده کنیم خیلی راحت می فهمیم چیکار کردیم.
والا منم که در اساس مخالفتی با شیء گرایی نداشتم.
اتفاقا منم گفتم باید دقت کنید و بفهمید که واقعا چرا چکار دارید میکنید.
وگرنه اینکه بعضیا میگن «کلاس نویسی» رو بجای شیء گرایی بگیریم، اونوقت نمیتونیم از شیء گرایی استفادهء بهینه بکنیم و شاید حتی هزینش بیشتر از فوایدش بشه.

از طرف دیگه درمورد برنامه نویسی بدون شیء گرایی هم حرفهای کاملا اغراق آمیز و غیرواقعی زده شد.
اینطور نیست که بدون استفاده از شیء گرایی، مجبور باشیم 200 هزار خط کد توی یک فایل بنویسیم و هی دستی کدها رو همه جا تکرار کنیم.
بعضی زبانها مثل سی از شیء گرایی پشتیبانی نمیکنن، و برنامه های بزرگ و پیچیده و مهم و موفقی بدون شیء گرایی نوشته شدن و میشن، که نمونش خود انجین و مخلفات زبان PHP هست (فکر میکنم نمونهء دیگر، کرنل و بخشهای زیادی از سیستم عامل لینوکس و بقیهء سیستم عاملهاست).
مطمئن باشید شما سورس PHP رو برید بررسی کنید کلی نظم و سازمان یافتگی و طبقه بندی و استاندارد توش مشاهده میکنید و واقعا اونطور فناوری عصر حجر هم نیست!! اینقدر این سازماندهی کارا هست که بشه باهاش برنامه های بزرگ و پیچیده ای رو هم با موفقیت و راحتی و سرعت کافی ساخت.
من در اینکه شیء گرایی میتونه در این زمینه کاملتر و راحتتر و در نتیجه کاراتر باشه حرفی ندارم!

همین توابع و اینا که شما میگی زیاد میشن و یادمون میره و اینور و اونور پخش و پلا میشن، با دقت و تفکر و سازماندهی با روشها و امکانات در دسترس (بدون کلاس و شیء گرایی) و وضع و پیروی از استانداردهای نامگذاری و استفاده از فایلها برای سازماندهی و غیره میشه تاحد زیادی حلش کرد.
اینطور نیست که اصلا نشه.
حالا با شیء گرایی طبیعتا میتونه راحتتر و سریعتر و کاملتر باشه این راه حل.


این حرف شما درست نیست چون کسی که می خواد مثلا یه اسکریپت مدرسه بنویسه چه نیازی به شناخت الگوریتم های رمز نگاری داره؟
رمزنگاری که فقط به رمزگذاری برگشت پذیر روی یک فایل یا دیتایی نمیگن.
رمزنگاری شامل خیلی چیزها میشه. مثلا هش ها، MAC ها، هش کردن پسورد، حتی کلیدها و رشته های رندومی که در برنامه تولید و استفاده میشن. حتی توکن امنیتی که فرضا برای جلوگیری از حمله های XSRF تولید میکنید اگر بخواد اصولی و حرفه ای باشه باید یک دانش و بینش حداقلی در زمینهء رمزنگاری داشته باشید و استفاده کنید.
فکر میکنم کمتر برنامهء وبی باشه که واقعا بشه ادعا کرد هیچ ارتباطی با رمزنگاری نداره.
بعدش هم حالا چه کار داریم به یک برنامهء خاص؟ مگه میخوایم همش اسکریپت مدرسه بنویسیم؟
من به صورت کلی صحبت کردم و دلیلی نمیبینم روی یک برنامهء خاص متمرکز بشیم.


اگر هم جایی نیاز داشت چند تا تابع آماده کپی پیست میکنه که کارش رو حل میکنن. به نظر من چیزی که برای برنامه نویسی مهمه الگوریتم و منطق پیاده سازیه برنامست که برنامه نویس باید داشته باشه وگرنه بقیه چیزا رو میشه مقطعی مطالعه کرد.
خب الگوریتم و منطق هم باز من گفتم و جزوش بود.
ولی اینکه میگی مقطعی میشه و هر زمان نیاز شد، فکر نمیکنم شخصا باهاش موافق باشم. چون من از قبل رفتم دنبال اینطور موارد و عینا دیدم که چقدر گسترده و پیچیده هستن و چقدر وقت و انرژی و فراغت ذهن طلب میکنه یادگیری کامل و اصولی و بهینهء اونا.
حالا یکی همون موقع که داره مثلا یک پروژهء تجاری که باید حداکثر در یک زمانی آماده بشه رو درست میکنه همش میبینه یه چیزی رو بلد نیست و نمیتونه و بعد با عجله و تحت فشار میخواد بره چیزهای ناشناخته ای رو که از قبل نمیدونه چه ماهیتی دارن و چقدر حجیم و پیچیده هستن رو یاد بگیره و استفاده کنه؟ بنظرت یخورده مشکل ایجاد نمیشه؟ فشار بیش از حد، اتکا به شانس، استرس، عدم اطمینان و قابلیت اعتماد به کارایی و قول چنین کسی، کم آوردن و سمبل کردن و غیره!
و اون یادگیری هم طبیعتا نمیتونه بدون مشکل باشه! اون همه فشار به خودش میاره طرف و بازهم سطحی و موردی با عجله یک چیزی رو سرهم میکنه و میره. این یادگیری کامل و عمیق و بهینه نمیشه بنظر بنده.

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


اینم در نظر داشته باشیم که زیر سایه ی .Net (قربونش برم) خیلی از (مثلا)برنامه نویس ها خیلی از مفاهیم پایه ای برنامه نویسی (مثلا اکثر ساختمان های داده مثل پشته) رو نمیشناسن ولی برنامه ای می نویسن که ... منطقی هم بخوایم نگاه کنیم نیازی نیست که یارو این چیزارو بدونه نمی خواد که سیستم عامل طراحی کنه .(الآن که بخثمون رو php هست برنامه نویس برای نوشتن برنامه ی ساده اصلا نیازی نداره که بدونه فرق 0 با "0" چیه یا اصلا بدونه int و string چین !)
خب بازم شما دارید به زبان یا برنامه ها و محدودهء خاصی برنامه نویسی رو محدود میکنید.
بنظرم این زیاد واقعگرایانه و بهینه نیست.
الان گیر خیلی ها که میان و میبینی توی چیزهای ساده هم گیر کردن یکیش بخاطر همینه که دانش و بینش گسترده و عمیق ندارن و همینطور صرفا توی یک مسیر باریکی جلو رفتن و خواستن در جریان برخورد و بصورت عملی همه چیز رو یاد بگیرن.
اینطور یادگیری بنظر بنده مسلما با محدودیت های قابل توجهی مواجه هست.
و دنیای برنامه نویسی سطح بالا و بیزینس و برنامه های حتی معمولی و نه چندان بزرگ و پیچیده هم همیشه بی ارتباط با خارج از اون جادهء باریک باقی نمیمونن. کسی نمیتونه این مسئله رو کنترل کنه.
بارها دیدم که خیلی افراد نیازها و موارد خاص رو مطرح کردن و با اینطور مسائل هم درگیر شده بودن و سرش گیر کردن.
حتی عدم درک بعضی از مسائل امنیتی بخاطر همین کمبود پایه و عمق و گستردگی دانش و بینش افراد هست.
و حتی در بحث الگوریتم ها و غیره.

اونی که اینا رو میدونه این مسائل رو میبینه، ولی اونی که نمیدونه و بلد نیست خیر.

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

بطور کلی هم خب هرچی آدم گسترده تر و عمیق تر بلد باشه، هم خلاقیتش بیشتر میشه و هم از برنامه نویسی لذت بیشتری میبره. البته نه لزوما در کارهای عادی و ساده.

eshpilen
چهارشنبه 18 بهمن 1391, 10:28 صبح
این روش یادگیری که شما میگی اصولا در عمل هم بنظر بنده مشخصه که جواب نمیده.
بطور مثال شما موضوعات و پرسشها و گیرهای مطرح شده در همین تالار رو نگاه کنید.
80% شون چیزهای ابتدایی. و مدام مسائل اولیهء تکراری مطرح میشن.
اونوقت ظاهرا تعدادی از اینا مثلا دارن سایت و برنامه حتی تجاری درست میکنن.
من نمیدونم واقعا چه لذتی میده اینطور برنامه نویسی و درواقع سمبل کردن.
و اینطور یادگیری هم بنده ندیدم که واقعا یادگیری اصولی و بهینه ای بشه.
اینکه بیای از دو نفر دیگه که بعضا در سطح خودت یا حالا مقداری بالاتر هستن بپرسی و همینطور بدون درک و کلیشه ای و بدون اینکه بشه به جوابشون اعتماد زیادی کرد کورکورانه پیروی کنی.
در مسائل امنیتی هم بخصوص الان چند ساله که من همش میبینم، و با اینکه بارها مطالبی ارائه کردم، توضیح دادم، منبع دادم، بازم میبینی خیلی افراد هنوز اون مطلب رو بقدر کافی کامل و عمیق نگرفتن و بازهم حرفهای پرت و پلا و روشهای خنده دار مطرح میکنن.
مطلب میدم میگن درست بلد نیستی یاد بدی، توضیح میدم میگن زیادی مینویسی، مثال و تست و کد میذارم بازم میگن زیاده و وقت نداریم.
حالا تعریف از خود نمیخوام بکنم، اما من خودم اگر مطلب پدر و مادر داشته باشه و کوچکترین محتوا و سرنخ روشن و محکمی توش باشه، یا مطلب رو از همونجا متوجه میشم یا میرم خودم تحقیق و مطالعهء بیشتر میکنم و سر و تهش رو درمیارم.
اینطوری آدم از خودش هم حال میکنه خب! لذت میبره واقعا.
خیلی ها همینطور اصلا میبینی انگار صرفا حفظ میکنن. دریغ از یک حداقلی از درک و بینش! فقط حفظ و کپی برداری.
خب این نتیجهء همون روش یادگیری که شما میگی نیست؟
بهتره اسمش رو بذاریم یادگیری تستی/چهار گزینه ای!
چون مثل کنکور و تست زنی، سطحی و کلیشه ای و تاحد زیادی حفظیه.
درک گسترده و عمقی توش نیست. و برای کاربردهای پیشرفته و عملی کارایی کافی نداره. ایجاد دانش و بینش و خلاقیت واقعی نمیکنه.

وقتی با عجله بخوای فقط یه چیزی رو سرهم کنی، اینم میشه یجور یادگیری، منتها یادگیری برنامه سرهم کنی و پول درآوردن!
دیدگاه بنده دیدگاه علمی و علاقه و کار اساسیه!
اون کسی که اینطور یادگیری که شما میگی داره، بنظر من ممکنه تا آخر عمرش هم به خیلی چیزهای جالب و توانایی های سطح بالا نرسه. ولی خب احتمالا میتونه خوب هم پول درآره! اگر هدف شما صرفا پول درآوردنه شاید مشکلی نباشه.
حالا جالب اینه که مثلا قبلا در یک فروم دیگری فکر کنم داشتم همین حرفا رو میزدم و مطالب علمی رو مطرح میکردم، کاربران اومدن و ایراد گرفتن که آخه اینا چیه و به درد کسی نمیخوره و بجاش چیزهایی بگو که به درد بازار و درآمد و اینا بخوره!!
یعنی میدونی یجوری انگار که بیان توی قوانین فروم بنویسن که از مطرح کردن دانش واقعی علوم رایانه اجتناب کرده و صرفا موارد دارای کاربرد تجاری و پول درآوردن را مطرح کنید!
یعنی این افراد چون همش دنبال همین چیزا هستن، بعد از یکی که دنبال چیزهای دیگه بود ایراد میگیرن.
جون تو من تاحالا ندیده بودم که مثلا یکی که دنبال علم و دانش میره بهش بگن تو عجب خری هستی فقط برو دنبال بازار و پول درآوردن!
توی کتابها و تاریخ ما راجع به دانشمندان و دستاوردهای اونا میخونیم و ازشون تعریف و تمجید هم میکنیم.
خب کارهای خیلی از اونا همون موقع هیچ کاربرد تجاری و درآمدی نداشته و در زمان خودشون شاید افراد خیلی کمی اصلا اطلاع و علاقه ای از اون چیزها داشتن. ولی حالا ما از اون افراد تعریف هم میکنیم و اونا رو برتر از بقیه میدونیم، حتی اگر طرف فقیر بوده باشه و هیچ پولی هم درنیاورده باشه. حتی مثلا یک کسی که در زمینهء فلسفه کار کرده باشه که کاربرد تجاری نداره.
ولی الان خودمون برعکس برخورد میکنیم.
بس که همه صرفا دنبال این هستن که هرچه زودتر یه کاری گیرشون بیاد و یه پولی دربیارن.
اصل علم و عمق و اصالتش دیگه برای کسی مهم نیست.
البته بنظر بنده هم کاربردی بودن خیلی مهمه؛ ولی اوج قدرت و توانایی عملی رو بنده در علم اصیل میبینم.
گرچه همونطور که گفتم راه سخت و طولانی ای است و احتمال داره به این زودیها جواب نده. البته بازم میگم که اگر منظورمون از قدرت و توانایی، صرفا پول و منافع فردی و کوتاه مدت نباشه!

Tarragon
چهارشنبه 18 بهمن 1391, 13:58 عصر
یا علی !!! بابا خلاصه بنویسید لطفا.

MinusOne
چهارشنبه 18 بهمن 1391, 17:54 عصر
اینکه بنده .net رو مثال زدم واسه این بود که همه گیره و اینکه سیستم مدیریت مدرسه رو مثال زدم به این خاطر بود که عنوان تاپیک همین هست وگرنه پروژه های دیگه ای هم هستن که رمزنگاری نخوان . حالا من رمزنگاری رو مثال زدم ، آیا کار با هدر های http واقعا برای هر برنامه نویسی لازمه ؟ آیا فینگلیش نوشتن نام متغیر ها یک عیب حساب می شه ؟ (البته بگذریم از این که کلاس کار رو پایین میاره) هنوزم معتقدم یه برنامه نویس خوب نیازی نداره همه مباحث رو بلد باشه . اگه قرار بود همچین چیزی باشه گرایش های مختلف به وجود نمیومدن در نتیجه پروژه گروهی معنی نداشت مگر زمانی که حجم پروژه زیاد بود . تو یه شرکت هرکی تو تخصص خودش فعالیت میکنه یکی گرافیک یکی رمزنگاری یکی طراحی الگوریتم و ... . برنامه نویسی رویه ای اونقدر هم بد نیست. برنامه نویسی شیء گرا یه امکانه که زبان مورد نظر داره و باید برنامه نویس از هرچی دمه دستشه استفاده کنه تا مسیر رسیدن به نتیجه رو هموار تر کنه.

rezaonline.net
چهارشنبه 18 بهمن 1391, 18:07 عصر
یا علی !!! بابا خلاصه بنویسید لطفا.
دوخط اول و دو خط آخر رو بخون فقط .
خط های وسطی توضیحاتی برای دو خط اوله .
دو خط آخر هم نتیجه گیری .

eshpilen
چهارشنبه 18 بهمن 1391, 18:40 عصر
آیا کار با هدر های http واقعا برای هر برنامه نویسی لازمه؟
هدر که چیزی نیست. من کل پروتکل HTTP رو خوندم :قهقهه:
لازمه هم که خب ... اوومم .... :لبخند:
من لازم دیدم حداقل واسه خودم که دوست داشتم یک نفری همه کاری بتونم انجام بدم و از همه چیز سردربیارم.
توی برنامه نویسی دیگران هم من کم ندیدم که با مسائلی مثل هدرها و پروتکل سطح پایین HTTP برخورد بشه. البته اونا رو اکثرا میشده پرسید، کپی کرد، و موردی حل کرد. مثلا یکی ممکنه هدر برای کش کردن یا کش نکردن بخواد، یکی میاد هدری میخواد که باعث دانلود فایل بشه، و غیره. بعضی موارد پیچیده تر هم بوده؛ مثلا میخواستن امکان دانلود فایل با PHP که قابلیت Resume هم داشته باشه بدن. خب این مورد پیچیده تره و صرفا با یکی دو خط کپی پیست کردن نمیشه انجامش داد. البته تابع و کد آمادش هست احتمالا، ولی بهرحال باز طرف خودش درک و اطلاعاتی داشته باشه خیلی بهتره از نظر استفاده و اشکال یابی و یا تغییرات و دستکاری که یوقت ممکنه نیاز داشته باشه.
کلا منکه اصلا حال نمیکنم همیشه توی یکسری مسائلی که بارها بهشون برخورد میکنم ضعف داشته باشم و کارم به دعا و کپی پیست و کمک دیگران بستگی داشته باشه. میگم باید یاد بگیرم. حالا خورگی شدید و عقدهء خاص من که یک طرف. یعنی اصلا زجر میکشم یه چیزی یکی بلد باشه و بتونه و من نه!
بخصوص که اون چیز خیلی کاربردی یا اساسی باشه یا باهاش بشه کارهای جالبی انجام داد.
مثلا به شیء گرایی و MVC زیاد اهمیت ندادم چون اساسی نیستن حداقل تا اینجا و توی کارهای تک نفره و عادی، و بدون اونا هم میتونستم هرکاری بخوام بکنم. ولی مثلا رمزنگاری اگر بلد نبودم اونوقت از این قدرت خفن ناکی که توش هست (میدونید این رمزنگاری های قوی غیرقابل شکست که الان در دسترس همگان است یه زمانی جزو جنگ افزار محسوب میشده در همین آمریکا و صادراتش ممنوع بوده) و کارهای جالبی که میشه باهاش انجام داد محروم میشدم و دربرابر هر هکری آسیب پذیرتر میبودم.

بعدم حرف من این بود که واقعا اینطور چیزها قدرت و کاربرد خیلی واضحتری دارن تا اینکه آدم فقط بخاطر مد بره بخواد دوتا کلاس بنویسه و به اسم شیء گرایی داشته باشه. دوتا کلاس درست کنیم که مثلا چی بشه؟ کلاس هم اگر توش الگوریتم و کد و عملیات برجسته ای نباشه، فقط یک پوسته هست و دیگر هیچ.


آیا فینگلیش نوشتن نام متغیر ها یک عیب حساب می شه؟
خب این اغلب نشانهء کم سوادیه. وگرنه به خودی خودش حالا شاید یکی به هر علتی اصلا دوست داشت فینگلیش بنویسه. البته در سطح و کلاس کار جهانی طبیعتا باید انگلیسی باشه؛ همونطور که انگلیسی زبان بین المللیه.
اینکه طرف فینگلیش مینویسه نشون میده که به احتمال زیاد سواد انگلیسیش پایینه و بقدر کافی منابع اصلی/انگلیسی زبان رو نخونده و نفهمیده (اغلب چون نمیتونسته). انتخاب نامهای حرفه ای به زبان انگلیسی نشون میده که طرف سوادش اینقدر بوده حداقل و اینقدر نمونه کد معتبر خونده (مسلما منابع فارسی مطلب معتبر و حرفه ای خیلی کمتر دارن تا انگلیسی) که تعداد کافی لغت و اصطلاح مناسب و تخصصی یاد گرفته برای اسم متغییرها و توابع و غیره درحد معمول حداقل.


هنوزم معتقدم یه برنامه نویس خوب نیازی نداره همه مباحث رو بلد باشه . اگه قرار بود همچین چیزی باشه گرایش های مختلف به وجود نمیومدن در نتیجه پروژه گروهی معنی نداشت مگر زمانی که حجم پروژه زیاد بود . تو یه شرکت هرکی تو تخصص خودش فعالیت میکنه یکی گرافیک یکی رمزنگاری یکی طراحی الگوریتم و ...
والا فعلا که فکر میکنم حداقل در کشور ما، بیشتر برنامه نویسان خودشون همه کار یا تعداد زیادی از این کارها رو کم و بیش انجام میدن، و چارهء دیگری هم ندارن.
البته گرافیک رو خیلی راحتتر میتونیم از بخشهای مربوط به برنامه نویسی جدا کنیم. چون دیگه واضحا گرافیک و برنامه نویسی در دو سطح و دنیای متفاوت هستند.

ضمنا بازم اگر بره روی بحث علاقه و خوره ای و اینا من یکی که اصلا ترجیح میدم بمیرم تا اینکه نتونم یک برنامهء درست و حسابی رو خودم به تنهایی بنویسم.
اصلا یکی از مزایا و جذابیت های این رشته واسه من، توانایی و استقلال و قدرت فردی ای بوده که در دسترس همگان میذاره.
یعنی فاجعس بنظر من که آدم اینقدر زحمت بکشه و سواد داشته باشه، اما نتونه به تنهایی چیزی رو که میخواد واسه خودش هم که شده درست کنه! مثل اینکه تا لب دریا بری و تشنه برگردی!!
از وابستگی به دیگران اصلا خوشم نمیاد.
ضمنا توی ایران که کار گروهی یا نیست یا راندمان و پایداریش بنظرم خیلی کمتره نسبت به کشورهای پیشرفته و جاهایی که اقتصاد قوی دارن. اینجا اصلا آدم و فرهنگش بقدر کافی پیدا میشه؟!
بهرحال هم شما خوره و هکر رو با برنامه نویس عادی یکی نکن.