گفتگو هایی در باب سی شارپ

the_king

مدیرکل انجمن
سلامی مجدد
خیلی ممنون استاد.
خوب من دقیق نمیدونستم منظورتون از اینکه Mutex را سیستم عامل تامین میکنه چیه . هنوز هم دقیق متوجه نمیشم .
اگه منظورتون اینه که از api های سیستم عامل از درون کلاس mutex استفاده میشه ، خوب خیلی از کلاس ها این جوری اند .
نه، من حرفی از API سیستم عامل نزدم، تامین کننده اش رو گفتم. اگه میخواستم در مورد API صحبت کنم که می کردم.
اگه توضیحات System Mutexes رو بخونید متوجه میشید که منظورم از تامین شدنش توسط سیستم عامل چیه.
Mutexes
خیلی واضح گفتم می توانید باهاش بین برنامه های مختلف هماهنگی ایجاد کنید. بین برنامه های مختلف رو شما چطور تفسیر کردید نمیدونم.

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

در این زمان ، اول کمپایلر ، زبان سی شارپی که نوشتیم را به زبان clr ترجمه میکنه و زمان اجرا ، clr ، زبان خودش را به زبان پردازنده که همون زبان ماشین هست ، تبدیل میکنه . درسته؟
بله.
اگه چیزی که گفتم درست باشه ، پس چرا گفتین :

"نوع داده var در زمان کامپایل مشخص میشه، پس اگر سوال نوع داده باشه جواب مشخصه، در زمان compile ئه."

بنابراین ، نوع داده ای var ، در زمانی که ما داریم کد مینویسیم (در ویرایشگر ویژال استودیو) ، مشخص میشه . چون همون زمان ، وقتی موس را روی متغییری که var بکار بردیم براش ، میبریم ، نوع داده ای اش را مشخص میکنه .
اما اگه چیزی که گفتم درست نباشه ، من باز دقیق منظورتون از تعریف کمپایلر را متوجه نشدم .
اون کاری که ویژوال استدیو برای IntelliSense اش انجام میده، همه مراحل کامپایل نیست، اما بخشی از مراحل کامپایل ئه. حتی موقع Rebuild که تمامی مراحل از نو انجام میشن هم منافاتی با کارکرد Debugger و IntelliSense نداره. ممکنه کد توسط فرمان command line بیرون از محیط ویژوال استدیو کامپایل بشه یا در یک IDE متفرقه دیگری که امکانات IntelliSense رو نداره کامپایل بشه. لزومی نداره که حتما موقع کامپایل اصلا ویژوال استدیو در حال اجرا باشه. شما چه تناقضی در کامپایل کردن و شناسایی نوع داده var می بینید؟

بله . کار شماره ی "ج" را انجام میده .
ولی شماره ی "الف" را هم انجام میده دیگه . آزاد کردن و اختصاص دادن حافظه ، همه دست GC هست . چه توی استک یا هیپ و ... . خودتون هم قبلا گفته بودین .
اون stack که میگه چیه؟ شما اگر خودتون یک کلاس یا ساختار به نام stack نسازید موردی با این نام در #C و NET. هست؟ وقتی همچین چیزی نیست که بخواهبد ازش شیء بسازید چطور وظیفه GC باشه که حالا حافظه داخلش رو هم آزاد کنه؟منظورش پشته ای است که در هنگام اجرای هر برنامه ای ایجاد میشه، نه System.Collections.Stack. کاری با اشیاء ای که شما در کدتون میسازید و حافظه شون نداره، در مورد پشته به معنی کلی اش حرف میزنه.
من هم هیچ حرفی در مورد ارتباط GC با استک و هیپ نزدم.
 

SU-57

Active Member
سلام استاد . خیلی ممنون .
استاد ، امتحان آزمون استخدامی سراسری که برگذار شد ، یک ساعت پیش امتحانم تموم شد .
سلام سجاد جان
این آزمون استخدامی زیر نظر کدوم نهاد بود و شما سوالات و PDF هاش رو از کدوم سایت دانلود کردی؟ فکر کنم سایت مرجع خوبی باشه اگه لطف کنی لینکش رو بزاری
 
آخرین ویرایش:

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام سجاد جان
این آزمون استخدامی زیر نظر کدوم نهاد بود و شما سوالات و PDF هاش رو از کدوم سایت دانلود کردی؟ فکر کنم سایت مرجع خوبی باشه اگه لطف کنی لینکش رو بزاری

سلام . خوبی؟
برای آزمون استخدام سراسری که در سایت inre.ir گرفتن .
لینک سئوالات را که گذاشتم .
اتفاقا به نظرم طرح سئوالات شون در حد حرفه ای نبود . طرح سئوال ، اشکالاتی داشت که حالا اگه ان شاء ا... فرصت شد ، میگم .
 

SU-57

Active Member
سلام . خوبی؟
برای آزمون استخدام سراسری که در سایت inre.ir گرفتن .
لینک سئوالات را که گذاشتم .
اتفاقا به نظرم طرح سئوالات شون در حد حرفه ای نبود . طرح سئوال ، اشکالاتی داشت که حالا اگه ان شاء ا... فرصت شد ، میگم .
سلام
البته من نتونستم لینک همه سوالاتو پیدا کنم ولی سوالاتی که گذاشتی و من دانلود کردم به نظر من اسون بود ولی برای هر سوال 45 ثانیه تا یک دقیقه خیلی کمه. برای اون سوالات pdf اولی زیادم بود اگه کسی کامل بلد باشه ولی برای آنالیز کدها یک دقیقه نمی شه. انقر باید مهارت داشته باشی تا در یک دقیقه بفهمی خروجی اون کد چی می شه.

واقعیتس من دنیال یک مرجع سوالات سی شارپ می گردم به زبان فارسی. نه اینکه بگن یک نرم افزار درست کن بلکه از ساده ترین سوالات تشریحی و مربوط به کد نویسی شروع بشه تا به سخت ترین که خودمو محک بزنم. هرچی سوالات کوتاه تر و ساده تر باشه بهتره. می خواد 100 باشه یا 10 هزار تا. من دوست دارم ببینم تا چقدر می تونم حلشون کنم. به این خاطر ازت پرسیدم که بتونم سوال پیدا کنم. قبل از اینکه این سوالات رو قرار بدی اصلا به ذهنم چنین چیزی خطور نکرده بود. اگه سوالات توی ورد باشه خیلی بهتره چون می تونم به سلیقه خودم تغییر بدم و پرینت کنم و روشون فکر کنم ولی اگه pdf هم باشه مشکلی نیست.

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

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
البته من نتونستم لینک همه سوالاتو پیدا کنم ولی سوالاتی که گذاشتی و من دانلود کردم به نظر من اسون بود ولی برای هر سوال 45 ثانیه تا یک دقیقه خیلی کمه. برای اون سوالات pdf اولی زیادم بود اگه کسی کامل بلد باشه ولی برای آنالیز کدها یک دقیقه نمی شه. انقر باید مهارت داشته باشی تا در یک دقیقه بفهمی خروجی اون کد چی می شه.

واقعیتس من دنیال یک مرجع سوالات سی شارپ می گردم به زبان فارسی. نه اینکه بگن یک نرم افزار درست کن بلکه از ساده ترین سوالات تشریحی و مربوط به کد نویسی شروع بشه تا به سخت ترین که خودمو محک بزنم. هرچی سوالات کوتاه تر و ساده تر باشه بهتره. می خواد 100 باشه یا 10 هزار تا. من دوست دارم ببینم تا چقدر می تونم حلشون کنم. به این خاطر ازت پرسیدم که بتونم سوال پیدا کنم. قبل از اینکه این سوالات رو قرار بدی اصلا به ذهنم چنین چیزی خطور نکرده بود. اگه سوالات توی ورد باشه خیلی بهتره چون می تونم به سلیقه خودم تغییر بدم و پرینت کنم و روشون فکر کنم ولی اگه pdf هم باشه مشکلی نیست.

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

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

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

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
نه، من حرفی از API سیستم عامل نزدم، تامین کننده اش رو گفتم. اگه میخواستم در مورد API صحبت کنم که می کردم.
اگه توضیحات System Mutexes رو بخونید متوجه میشید که منظورم از تامین شدنش توسط سیستم عامل چیه.
Mutexes
خیلی واضح گفتم می توانید باهاش بین برنامه های مختلف هماهنگی ایجاد کنید. بین برنامه های مختلف رو شما چطور تفسیر کردید نمیدونم.

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

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


بله.

اون کاری که ویژوال استدیو برای IntelliSense اش انجام میده، همه مراحل کامپایل نیست، اما بخشی از مراحل کامپایل ئه. حتی موقع Rebuild که تمامی مراحل از نو انجام میشن هم منافاتی با کارکرد Debugger و IntelliSense نداره. ممکنه کد توسط فرمان command line بیرون از محیط ویژوال استدیو کامپایل بشه یا در یک IDE متفرقه دیگری که امکانات IntelliSense رو نداره کامپایل بشه. لزومی نداره که حتما موقع کامپایل اصلا ویژوال استدیو در حال اجرا باشه. شما چه تناقضی در کامپایل کردن و شناسایی نوع داده var می بینید؟

الان یعنی موقعی که کدمون را در ویژال استودیو مینویسیم ، بخشی اش کمپایل میشه؟
مثل بخش هایی از کد که باعث میشه تا Form1 مون را نشون داده بشه .
فقط این بخش از کد هست یا مثلا کدهایی که با کلمه ی کلیدی var هم نوشته میشن هستن؟
بجز اینها ، باز چیزهای دیگه ای هم هست که موقع نوشتن کد در ویژال استودیو ، کامپایل بشن .
از کجا متوجه میشید که چه کدهایی موقع نوشتنِ کد در ویژال استودیو ، کامپایل میشن و چه کدهایی نمیشن؟

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

البته ، اینکه میگیم clr ، در واقع clr ساختارِ تعریف شده هست (منظورم از ساختار ، structure نیست) . درسته؟ یعنی پیاده سازی نشده .
پیاده سازیِ clr در دات نت ، اسمش cli هست . درسته؟
مثل اینترفیس در سی شارپ میمونه دیگه . درسته؟
در واقع clr ، شبیه یک اینترفیس میمونه که انگار مایکروسافت اومد این اینترفیس را در قالبی بنام cli ، پیاده سازی کرد . درسته؟

اون stack که میگه چیه؟ شما اگر خودتون یک کلاس یا ساختار به نام stack نسازید موردی با این نام در #C و NET. هست؟ وقتی همچین چیزی نیست که بخواهبد ازش شیء بسازید چطور وظیفه GC باشه که حالا حافظه داخلش رو هم آزاد کنه؟منظورش پشته ای است که در هنگام اجرای هر برنامه ای ایجاد میشه، نه System.Collections.Stack. کاری با اشیاء ای که شما در کدتون میسازید و حافظه شون نداره، در مورد پشته به معنی کلی اش حرف میزنه.
من هم هیچ حرفی در مورد ارتباط GC با استک و هیپ نزدم.

بله میدونم .
منظور منم همین بود .
همین پشته ی برنامه .
یعنی همین پشته ای که هر نخ و هر متد و ... ای تعریف میشه ، یه حافظه ای بصورت پشته براش در نظر گرفته میشه که با اتمام اون ، حافظه میتونه از بین بره .
و این مدیریت حافظه (پشته ی برنامه) هم باز دست GC هست . درسته دیگه؟
چون مدیریت کننده ی حافظه در دات نت ، GC هست .

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

the_king

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

بعد اینکه کامپایلر ، بجز اینکه کدها را به زبان clr ترجمه کنه ، توی چه چیزهایی تاثیر داره؟
مثلا کمپایلرهای مختلف ، توی سرعت اجرای کد ، تاثیر دارن؟
یا اینکه clr هست که فقط توی سرعت اجرای کد تاثیر داره؟
همه زیربنای زبان روی کامپایلر ئه، این قابلیت های کامپایلر ئه که بتونه خروجی بهینه ای تولید بکنه یا نکنه، چه محدودیت هایی داشته باشه، با چه تکنولوژی های هماهنگ بشه یا نشه.
قبلا هم صحبت کردیم که کامپایلر در سرعت اجرا تاثیر داره، انواع کامپایلر های Native برای زبان مشخصی مثل ++C / C هستند که نه CLR ای در کار ئه و نه ماشین مجازی خاصی اما کارکرد و خروجی متفاوتی دارند.
قطعا CLR تاثیر اساسی داره ولی کامپایلر هم خیلی موثره.
از سال 2015 به بعد ، انگار مایکروسافت کامپایلر جدیدی برای سی شارپ بنام Roslyn تدارک دید. درسته؟
فرق این کامپایلر با کمپایلرهای دیگه چیه؟
Roslyn کامپایلر نیست، پلتفرمی است برای استفاده از کامپایلر ها که کامپایلر #C رو هم شامل میشه و اینکار رو بصورت سرویس ارائه میکنه. یعنی بجای اینکه مشتری مجبور بشه یک کامپایلر اختصاصی از بنیان بسازه، از API اینجور سرویس ها استفاده میکنه تا فرضا زبان #C رو تحت کنترل روتین های خودش مرحله به مرحله کامپایل کنه. این رو نمیشه با یک کامپایلر متعارفی که همراه Visual Studio می بینید مقایسه کرد.
چند تا کمپایلر برای سی شارپ وجود داره؟
نمیدونم، باید جستجو کنید

البته ، اینکه میگیم clr ، در واقع clr ساختارِ تعریف شده هست (منظورم از ساختار ، structure نیست) . درسته؟ یعنی پیاده سازی نشده .
نه. CLR کاملا ماهیت نرم افزاری پیاده سازی شده داره. چرا بگیم پیاده سازی نشده؟

پیاده سازیِ clr در دات نت ، اسمش cli هست . درسته؟
نه. CLI استانداردی که برای این منظور به ثبت رسیده، مثلا شما مودم WIFI میسازید تحت استاندارد IEEE ئه 802.11a. اون 802.11a اسم استاندارد ئه، پیاده سازی نیست.
مثل اینترفیس در سی شارپ میمونه دیگه . درسته؟
نه. شما دارید مثال داخل زبان می زنید، شبیه همچین چیزهایی نیست. استاندارد فنی ئه، ممکنه چند برگ باشه یا چند جلد کتاب. یه pdf مربوط به یک استاندارد فنی رو بخونید، شباهتی به اینترفیس #C نداره.

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

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

الان نمیخواین بگین که مدیریت کننده ی حافظه ی استک ، در دات نت دست چیزی جز GC هست؟
بنابراین ، طرح سئوالی که پرسیده بودن ، اشتباست . در واقع ، هیچ کدوم از 4 گزینه ، جواب مورد نظرشون نیست .
من نمیخوام بگم مدیریت کننده حافظه پشته در دست چیز دیگری است، چون پشته اصلا مدیریت نمیخواد که دست چیز خاصی باشه.
حافظه ای مدیریت میخواد که به مقداری در جایی از کد مستقیم و غیر مستقیم دریافت شده و مشخص نیست کجا و با چه شرایطی آزاد میشه، شاید برنامه نویس اصلا همچین کاری رو خودش نکنه، مثل حالتی که در زبان c منجر به Memory Leak میشه. اما در NET. مدیریت حافظه خودکار و GC داره. GC حواسش هست که وقتی دیگه حافظه مورد نظر لازم نیست باید حتما پس داده بشه و آزاد بشه.
برای همین GC روی این حافظه مدیریت شده ای که در کدتون گرفته میشه نظارت میکنه.
پشته رو که با کد #C نمیگیرید که حالا یادتون بمونه یا بره که آزادش کنید و وظیفه مدیریت اش رو به چیزی واگذار میکنید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
خیلی ممنون استاد (درباره ی پست بالا ، بعدا سئوالاتم را میپرسم)
استاد ، میخوام برنامه نویسی وب را هم یاد بگیرم (از الان میخوام شروع کنم) ، چون هیچ چیزی از مباحث و بحث های وب بلد نیستم ، به نظرتون این آموزش برام خوبه ؟ :

بسته جامع آموزش طراحی سایت - بسته جامع آموزش برنامه نویسی با تکنولوژی ASP.net

خیلی گرونه اما اگه خوب باشه ، لازم دارم .

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

بعد اینکه دیتابیس ای که توی یه سیستم سرور باشه و:

هم کلاینت های زیاد و مختلفی داشته باشیم که بخوان بهش وصل بشن (مثل سرور سایت ها)
و هم اپلیکیشن موبایل (که با جاوا نوشته شده) بخواد بهش وصل بشن

در این حالت ، چه دیتابیس ای برای این کار مناسب هست؟ و بی زحمت دلیل اش را هم میگین؟
sql server از همه بهتر هه؟
مثلا اوراکل و بقیه چی؟
خیلی ممنون
 

the_king

مدیرکل انجمن
خیلی ممنون استاد (درباره ی پست بالا ، بعدا سئوالاتم را میپرسم)
استاد ، میخوام برنامه نویسی وب را هم یاد بگیرم (از الان میخوام شروع کنم) ، چون هیچ چیزی از مباحث و بحث های وب بلد نیستم ، به نظرتون این آموزش برام خوبه ؟ :
شناختی از هیچ بسته آموزشی ای در هیچ زمینه ای ندارم، نظری نمی تونم بدم. نظر مشتریانش رو باید پیدا کنید.

بعد اینکه دیتابیس ای که توی یه سیستم سرور باشه و:

هم کلاینت های زیاد و مختلفی داشته باشیم که بخوان بهش وصل بشن (مثل سرور سایت ها)
و هم اپلیکیشن موبایل (که با جاوا نوشته شده) بخواد بهش وصل بشن

در این حالت ، چه دیتابیس ای برای این کار مناسب هست؟ و بی زحمت دلیل اش را هم میگین؟
sql server از همه بهتر هه؟
مثلا اوراکل و بقیه چی؟
خیلی ممنون
من متخصص پایگاه داده ها نیستم. بهتر از همه هم که کلا معنی نداره، هر انتخابی در یکسری موارد مزایا و معایبی داره.
از نظر Scalability که مد نظر شما است، Microsoft SQL Server و Oracle و PostgreSQL مناسبتر از سایرین هستند.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
خیلی ممنون
استاد ، php و asp.net ، رقیب هم هستن یا مکمل هم؟
یعنی لازمه برای اینکه asp.net را یاد بگیرم ، قبل اش php را یاد بگیرم یا لازم نیست؟
اگه رقیب هم هستن ، نمیخوام یاد بگیرم .

یادگیری وب ، چقدر مبحث داره . هیچ کدوم شون هم نمیدونم چیه و کدوم رو اول باید یاد بگیرم :
html و css و php و جاوا اسکریپت و بوت استرپ و asp.net web form و mvc و core و ... .
عنوان این مباحث خودش یه کتاب میشه . نمیدونم پس چقدر یادگیری شون طول میکشه .
معمولا یادگیری این مباحث ، چقدر طول میکشه؟
 

the_king

مدیرکل انجمن
خیلی ممنون
استاد ، php و asp.net ، رقیب هم هستن یا مکمل هم؟
رقیب هم هستند. اصولا بخاطر تفاوت پلتفرم شون استفاده ترکیبی ندارن.

یعنی لازمه برای اینکه asp.net را یاد بگیرم ، قبل اش php را یاد بگیرم یا لازم نیست؟
اگه رقیب هم هستن ، نمیخوام یاد بگیرم .
نه. اصلا نیازی نیست. دو تا دنیای متفاوت دارن. برای یادگیری هر کدوم شون مبانی شبکه و طراحی صفحات وب و ... رو لازمه بدونید اما خودشون، نه، ربطی بهم ندارند.

یادگیری وب ، چقدر مبحث داره . هیچ کدوم شون هم نمیدونم چیه و کدوم رو اول باید یاد بگیرم :
html و css و php و جاوا اسکریپت و بوت استرپ و asp.net web form و mvc و core و ... .
عنوان این مباحث خودش یه کتاب میشه . نمیدونم پس چقدر یادگیری شون طول میکشه .
معمولا یادگیری این مباحث ، چقدر طول میکشه؟
HTML و CSS و Javascript رو که باید بلد باشید، جزو مواردی است که بدون یادگیری شون نمی توانید تحت وب برنامه نویس مسلطی باشید. یکسری کتابخانه ها مثل jQuery هم از بس مورد استفاده هستند دیگه جزو مبانی شدن.
اینها رو تا نشناسید بخشی از امکانات محیط رو در اختیار ندارید، مثل این میمونه که بخواهید برای ویندوز برنامه بنویسید اما هنوز با خود ویندوز زیاد آشنا نباشید.
مبانی امنیت در شبکه و پروتکل ها و تنظیمات فایروال و دسترسی پورت ها، طراحی گرافیکی و کار با چند جور سیستم پایگاه داده ها و ... رو هم کم و بیش باید بدانید.
برای شروع خیلی فرقی نمی کنه که میخواهید چه تکنولوژی و پلتفرمی رو بکار ببرید، اوایل کار که همه چیز براتون ناآشنا است، قطعا کار سختی خواهید داشت، اما وقتی به یکی شون مسلط شدید یادگیری سایر پلتفرم ها و تکنولوژی های رقیب آسانتر میشه. اما هر چیزی که مد روز شد و به اصطلاح رو بورس بود هم الزاما ماندگار نیست. مثلا مایکروسافت Silverlight رو ارائه کرد، اما بعد 5 سال دیگه تمایلی به دنبال کردنش نداشت.
اگر نگران آینده باشید جایگاه php مطمئن تره.
 

SU-57

Active Member
سلام استاد علی

من یک فرم ایجاد کردم که روش یک دکمه Button گذاشتم و یک TextBox. در دکمه Button یک کدی با دستور for نوشتم که نتیجش توی TextBox نمایش داده بشه ولی مثل اینکه TextBox محدودیت جا داره و نمی تونه از یک حدی بیشتر نشون بده. به نظر شما چطوری می شه این مشکل حل کرد. مثلا 3 تا TextBox ایجاد کنم چطوری بگم اگر textbox1 پرشد بقیش رو در textbox2 بریز و همین طور الی آخر
 

the_king

مدیرکل انجمن
سلام استاد علی

من یک فرم ایجاد کردم که روش یک دکمه Button گذاشتم و یک TextBox. در دکمه Button یک کدی با دستور for نوشتم که نتیجش توی TextBox نمایش داده بشه ولی مثل اینکه TextBox محدودیت جا داره و نمی تونه از یک حدی بیشتر نشون بده. به نظر شما چطوری می شه این مشکل حل کرد. مثلا 3 تا TextBox ایجاد کنم چطوری بگم اگر textbox1 پرشد بقیش رو در textbox2 بریز و همین طور الی آخر
نیازی نیست اینکار رو بکنید، بجای TextBox می توانید از RichTextBox استفاده کنید که محدودیت های کمتری داره. البته BorderStyle دورش یکم تو ذوق میزنه و کلاسیک ئه.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
نه، شما دارید set_A رو اجرا می کنید یک متد void ئه، اصلا کاری هم با get_A نداره. دو تا متد مستقل هستند، دلیلی نداره وقتی set می کنید get اش هم فراخوانی بشه.

سلامی مجدد استاد
حرف تون درسته . نمیدونم چرا بعدا روی مسائلی که قبلا صحبت کردیم ، فکر میکنم ، بهتر متوجه میشم . :green:
اما نمیدونم چرا اینجا گفتید نه .
احتمالا منظورم را متوجه نشدین .
در صورتی که در توضیح پایین (که در زیر از تون نقل قول میکنم) و همینطور در توضیح پست قبل از این پست (یعنی در پست 1497) ، مفصل توضیح دادین . برداشتم در پست 1498 که گفتم شاید اشتباه منظورتون را درک کردم ، اتفاقا اشتباه نبود و درست منظورتون را متوجه شده بودم اما نمیدونم چرا در جوابش (یعنی همین نقل قولی که ازتون دارم میکنم) گفتید نه .
کلا گفته هاتون را تازه بهتر درک میکنم .
بنابراین برداشت من ، یعنی پست 1496 ، همونطور که گفتین ، احتمالا شاید درست نباشه (قضیه ی اجرا نشدن اکسسور set در پروپرتی هایی که از نوع value type هستن زمانی که مقدار خاصی از اعضای داخلی این پروپرتی را تغییر میدیم) . چون به قول شما اگه این طور بود ، وقتی پروپرتی ای که از نوع value type بود ، باید همین قضیه واسش پیش میومد و کلا با تغییر مقدار داخلی عضو پروپرتی ، مقدارش تغییری نمیکرد .


this.A = something شباهتی به this.A.X = something نداره، اولی set_A رو فراخوانی می کنه و دومی get_A رو اجرا می کنه و بعد set_X را روی دریافتی get_A.

بله همینطوره .
 

the_king

مدیرکل انجمن
خیلی ممنون استاد.
خوب ، منم در پست 1496 ، همین حرف شما را زدم استاد دیگه . شاید حالا کامل توضیح نداده باشم . اما اینکه علاوه بر اینها ، تاکیدم بر این هم بود که وقتی عضوی از اون نوعِ استراکچری که به عنوان پروپرتی در نظر گرفتیم (مثل X در پروپرتی A.X که پروپرتی A از نوع Point هست) ، مقدارش را تغییر بدیم ، اصلا قسمت set در اون پروپرتی اجرا نمیشه که با اجرای اکسسور set در پروپرتی ، حالا مقدار کپی شده ی X را در متغییر مربوط به اون پروپرتی ، بریزه و کپی کنه پس مقدار اون متغییر هم تغییر نمیکنه تا در دفعه ی بعد که پروپرتی مون (موقع خوندن از متغییرِ مربوطه اش) ، مقدار اون متغییر را دوباره توی حافظه ی مربوط به خودش بخواد کپی کنه و اونو بخونه .
برای چیزی که در زبان قابل انجام هست و معنی داره، می توانیم مراحل رو تجزیه و تحلیل کنیم ولی وقتی چیزی مثل A.X = 3 در زبان قابل انجام نیست، تجزیه و تحلیل و تفسیر نتیجه اش معنی نداره. نمی توانیم بگیم برای A.X = 3 چه مراحلی انجام میشه، چون اصلا قابل انجام نیست که مراحلی داشته باشه.

استاد ، الان ، علاوه بر مفاهیم سی شارپ ، شما میگین روی الگوریتم ها مثل جستجوی خطی و دودویی و درختی و اینها هم تمرین و تمرکز کنم؟
متوجه شدم تجربه ندارین . ولی حدس تون ، قطعا بهتر از من خواهد بود . مثلا الان روی این الگوریتم هایی که گفتم هم تمرکز کنم؟ الگوریتم یا مبحث دیگه ای مد نظرتون هست؟
من همچین نظری ندارم. شما وقتی می خواهید یک آرایه رو در #C مرتب کنید به الگوریتم های مرتب سازی که فکر نمی کنید، صرفا با Array.Sort مرتبش می کنید.
وقتی می خواهید جستجو دو دویی بکنید، الگوریتم جستجوی دو دویی که نمی نویسید، از Array.BinarySearch استفاده می کنید.
فکر کردن روی الگوریتم های عمومی برای زبان هایی که کتابخانه ای در حد NET. Framework دارند کاربرد خاصی نداره. چرخ رو که از نو اختراع نمی کنید. اینها رو قبلا هم گفتم.
 

SU-57

Active Member
سلام استاد علی
سال نوی شما مبارک و برای شما آرزوی تندرستی می کنم

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

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

the_king

مدیرکل انجمن
سلام استاد علی
سال نوی شما مبارک و برای شما آرزوی تندرستی می کنم

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

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

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
استاد ، میگم این ماجرای sdk ها را من آخر متوجه نشدم .
کلا sdk ها چی هستن؟ کجاها به دردمون میخورن؟ از کجا متوجه بشیم که کجا به دردمون میخورن و باید ازشون استفاده کنیم؟

من فکر میکردم تا حالا فقط برای ویندوزها ، sdk وجود داشت . الان فهمیدم طبق لینک های زیر ، برای ویژال استودیو هم sdk وجود داره :

Microsoft.VisualStudio.SDK 15.9.3

و

What's New in the Visual Studio 2017 SDK - Visual Studio

همیشه توی پس زمینه ی ذهنم فکر میکنم sdk ، برابر با مثلا api های ویندوز یا api های اون برنامه هستن (یعنی شامل توابع و کلاس هایی که سازنده ی اون نرم افزار یا ویندوز درست کرده تا کارمون سریع تر پیش بره) . حالا نمیدونم این برداشتم درسته یا نه .
اگه درست نیست ، پس دقیقا sdk ها چی هستن و کجا به درد میخورن و موارد استفاده شون کجاست؟
اگه درسته ، پس چرا مثلا همراه نصب ویندوز یا اون نرم افزار (مثل ویژال استودیو) ، نصب نمیشن و دوما فرق شون با api های ارائه شئه توسط اون برنامه یا ویندوز ، چیه؟

خیلی ممنون .
 

the_king

مدیرکل انجمن
استاد ، میگم این ماجرای sdk ها را من آخر متوجه نشدم .
کلا sdk ها چی هستن؟ کجاها به دردمون میخورن؟ از کجا متوجه بشیم که کجا به دردمون میخورن و باید ازشون استفاده کنیم؟

من فکر میکردم تا حالا فقط برای ویندوزها ، sdk وجود داشت . الان فهمیدم طبق لینک های زیر ، برای ویژال استودیو هم sdk وجود داره :

Microsoft.VisualStudio.SDK 15.9.3

و

What's New in the Visual Studio 2017 SDK - Visual Studio

همیشه توی پس زمینه ی ذهنم فکر میکنم sdk ، برابر با مثلا api های ویندوز یا api های اون برنامه هستن (یعنی شامل توابع و کلاس هایی که سازنده ی اون نرم افزار یا ویندوز درست کرده تا کارمون سریع تر پیش بره) . حالا نمیدونم این برداشتم درسته یا نه .
اگه درست نیست ، پس دقیقا sdk ها چی هستن و کجا به درد میخورن و موارد استفاده شون کجاست؟
اگه درسته ، پس چرا مثلا همراه نصب ویندوز یا اون نرم افزار (مثل ویژال استودیو) ، نصب نمیشن و دوما فرق شون با api های ارائه شئه توسط اون برنامه یا ویندوز ، چیه؟

خیلی ممنون .
API ویندوز جزئی از ویندوز ئه، در خود ویندوز ئه، ربطی به SDK ویندوز نداره. SDK ویندوز شامل اجزاء خود ویندوز نیست، مجموعه نرم افزار هایی که برای طراحی و توسعه نرم افزار برای ویندوز لازم میشه.
SDK یا Software Development Kit یک مجموعه نرم افزاری است که برای طراحی و توسعه یک نوع خاص از نرم افزار تهیه شده. میتونه برای هر موضوعی SDK تولید بشه.
مثلا برای ساختن نرم افزار برای یک سیستم عامل خاص، برای ساختن پلاگین برای یک نرم افزار خاص، برای ساختن واسط کاربری برای یک سخت افزار خاص، برای ساختن کتابخانه برای یک زبان خاص و ...
البته اگر هدف ساختن درایور باشه، نه نرم افزار، به اون مجموعه DDK میگن. مثلا مجموعه DDK برای درایور نویسی ویندوز Windows Driver Kit (WDK) ئه که باهاش برای ویندوز درایور می نویسند.

اگر بخواهید برای اون موضوعی که SDK مورد نظر برایش طراحی شده نرم افزار تهیه کنید، SDK اش مستقیم یا غیر مستقیم لازمتون میشه، وگرنه بدردتون نخواهد خورد.
مثلا ویژوال استدیو همراهش SDK ویندوز رو نصب می کنه، چون برای تولید نرم افزار تحت ویندوز از SDK ویندوز استفاده میکنه.
یا مثلا اگر بخواهید برای ویژوال استدیو Extension طراحی کنید از SDK ویژوال استدیو استفاده می کنید، و اگر نمی خواهید برای ویژوال استدیو نرم افزار طراحی کنید دلیلی نداره که سراغ SDK ویژوال استدیو بروید.
اگر بخواهید به زبان Java نرم افزار طراحی کنید از Java Development Kit استفاده می کنید.
اگر بخواهید برای سیستم عامل اندروید برنامه بنویسید از Android SDK استفاده می کنید.
اگر بخواهید برای Acrobat و Adobe Reader پلاگین بسازید از Acrobat SDK استفاده می کنید
و ...
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
آها خیلی ممنون .
پس sdk اولا نرم افزار هه (کلا هر چیزی که kit هست ، نرم افزاره؟) و دوما برای زمانی کاربرد داره که معمولا بخوایم برای اون نرم افزار ، پلاگینی بنویسیم و یا کارهای دیگه .

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

جدیدترین ارسال ها

بالا