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

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام بر استاد عزیز
میگم میخوام پروژه ی اتوران بسازم با سی شارپ (با ویژگی هایی که در "گفتگو" باهاتون مطرح کردم)
به نظرتون دات نت فریم وورک را نسخه ی 4.0 در نظر بگیرم ، برای همه نوع سیستم عامل (از xp تا 10) ، خوبه دیگه ، نه؟ یا اینکه مثلا 4.5 بگیرم ، یا بالاتر ، بهتره؟ کلا پیشنهاد تون ، دقیقا کدوم نسخه ی دات نت هست که در هیچ نوع ویندوزی مشکل پیدا نکنه؟
الان من دات نت 4.0 را در نظر بگیرم ، فرقش با 4.7.2 که توی کلاس ها و این چیزا نیست؟ هست؟ فرقش توی نسخه ی سی شارپ (مثلا سی شارپ 7 یا 6) هست؟ کلا فرق دقیق توی نسخه های متفاوت دات نت ، بصورت کلی چی خواهد بود؟
دوم اینکه به یک شی درخت حرفه ای نیاز دارم (درختی که هم انعطاف بالایی داشته باشه و اینکه مثلا اعضاش را بشه حالت تیک دار کرد و هم از حالت تیک دار برداشت و در صورت وجود قابلیت جستجو ، قابلیت های جستجوی خوبی داشته باشه و کلا یه چیز حرفه ای) . پیشنهادتون شی treeview خود دات نت هست یا پیشنهاد میکنید از کمپوننت های شرکت های دیگه استفاده کنم؟ اگه از کمپوننت ، کدوم کمپوننت؟
سوم اینکه به نظرتون با win form پروژه را بنویسم (یعنی با wpf ننویسم) ، در آینده و آپدیت های بعدی مشکلی خواهد بود؟ یا به نظرتون بهتره با wpf نوشته بشه؟ من میگم بخاطر تسلط بیشترم روی win form ، با win form بنویسم .
بعد اینکه چون اتوران ها بصورت پرتابل اجرا میشن ، میخوام این اتوران هم که با سی شارپ مینویسم ، همینطور باشه . اول اینکه اگه پرتابل اش کنم ، مشکلی خواهد بود و یا از کیفیت کار زده میشه؟ و دوما چجوری پرتابل کنم؟ با نرم افزارهایی که نسخه ی پرتابل از برنامه میسازن ، باید این کار را کنم؟ یا مثلا نرم افزارهای ستاپ ساز این قابلیت را دارن؟
و کلا راهنمایی های دیگه ای هم درباره ی پروژه میدونین که مخصوصا برای پایه ی کار مهمه را ممنون میشم بگید.
ممنون
 

the_king

مدیرکل انجمن
سلام بر استاد عزیز
میگم میخوام پروژه ی اتوران بسازم با سی شارپ (با ویژگی هایی که در "گفتگو" باهاتون مطرح کردم)
همانطور که قبلا هم خدمتتون عرض کرده بودم از سرویس پیام خصوصی فروم صرفا جهت پاسخگویی به مسائل و مشکلات انجمن استفاده می کنم که قانون عمومی E5 هم در این مورد توضیح داده.
به نظرتون دات نت فریم وورک را نسخه ی 4.0 در نظر بگیرم ، برای همه نوع سیستم عامل (از xp تا 10) ، خوبه دیگه ، نه؟ یا اینکه مثلا 4.5 بگیرم ، یا بالاتر ، بهتره؟ کلا پیشنهاد تون ، دقیقا کدوم نسخه ی دات نت هست که در هیچ نوع ویندوزی مشکل پیدا نکنه؟
الان من دات نت 4.0 را در نظر بگیرم ، فرقش با 4.7.2 که توی کلاس ها و این چیزا نیست؟ هست؟ فرقش توی نسخه ی سی شارپ (مثلا سی شارپ 7 یا 6) هست؟ کلا فرق دقیق توی نسخه های متفاوت دات نت ، بصورت کلی چی خواهد بود؟
دوم اینکه به یک شی درخت حرفه ای نیاز دارم (درختی که هم انعطاف بالایی داشته باشه و اینکه مثلا اعضاش را بشه حالت تیک دار کرد و هم از حالت تیک دار برداشت و در صورت وجود قابلیت جستجو ، قابلیت های جستجوی خوبی داشته باشه و کلا یه چیز حرفه ای) . پیشنهادتون شی treeview خود دات نت هست یا پیشنهاد میکنید از کمپوننت های شرکت های دیگه استفاده کنم؟ اگه از کمپوننت ، کدوم کمپوننت؟
سوم اینکه به نظرتون با win form پروژه را بنویسم (یعنی با wpf ننویسم) ، در آینده و آپدیت های بعدی مشکلی خواهد بود؟ یا به نظرتون بهتره با wpf نوشته بشه؟ من میگم بخاطر تسلط بیشترم روی win form ، با win form بنویسم .
بعد اینکه چون اتوران ها بصورت پرتابل اجرا میشن ، میخوام این اتوران هم که با سی شارپ مینویسم ، همینطور باشه . اول اینکه اگه پرتابل اش کنم ، مشکلی خواهد بود و یا از کیفیت کار زده میشه؟ و دوما چجوری پرتابل کنم؟ با نرم افزارهایی که نسخه ی پرتابل از برنامه میسازن ، باید این کار را کنم؟ یا مثلا نرم افزارهای ستاپ ساز این قابلیت را دارن؟
و کلا راهنمایی های دیگه ای هم درباره ی پروژه میدونین که مخصوصا برای پایه ی کار مهمه را ممنون میشم بگید.
ممنون
هر چقدر نسخه Framework پایین تری رو بکار ببرید هم سازگاری با سیستم عامل های بیشتری خواهد داشت و هم احتمال نیاز به نصب Framework کمتر میشه. خیلی ساده می توانید در سایت مایکروسافت ببینید که فرضا Framework های نسخه 4.5 به بعد ویندوز XP را پشتیبانی نمی کنند :
NET Framework system requirements.
لذا اگر به دلیلی مجبور نیستید، بهتره از NET Framework. نسخه 2.0 استفاده کنید، نشد یک نسخه بالاتر. نشد باز یک نسخه بالاتر. برای انتخاب یک نسخه بالاتر باید دلیل موجهی داشته باشید، نسخه بالا هیچوقت مزیت نیست.
و اینکه شما با چه نسخه ای از چه زبانی برنامه نویسی اش می کنید هیچ ارتباطی با کسی که از فایل اجرایی اش استفاده می کنه نداره، حتی اصلا مهم نیست با #C باشه یا زبان دیگری. در فایل اجرایی که کد زبان #C وجود نداره که نسخه اش در خروجی مهم باشه.
اینکه Autorun ای بسازید که فوری بالا بیاد و خودش برای اجرا شدن نیاز به نصب Framework داشته باشه که نصب شدنش دقایقی طول بکشه قدری ناخوشایند ئه. و اینکه نصب Framework رو بصورت مخفیانه و Quiet انجام بگیره هم با توجه به تنظیمات دسترسی کاربر یا ممکنه عملی نباشه یا مورد رضایت کاربر نباشه. به همین جهت انتخاب زبان های NET. برای اینگونه موارد کلا مطلوب نیست.
برای اینکه برنامه تون به دلیل عدم نصب Framework با خطا متوقف نشه می توانید با یک نرم افزار Setup ساز دلخواه تون برایش یک اجرا کننده اولیه بسازید که اگر بدون مشکل اجرا شد فایل اجرایی شما رو اجرا کنه و در تنظیمات Setup تیک بزنید که برای نصب شدن به Framework نسخه فلان نیاز داره که اگر نباشه خود Setup ساز پیام مناسب رو نشون میده. و هیچوقت مثل برخی نرم افزار های ایرانی زورکی روی سیستم کاربر چیزی رو نصب نکنید.
برای انتخاب کمپوننت هر کسی سلیقه و معیار های خودش رو داره. در اینترنت بگردید و هر کمپوننت ای که به نظرتون مناسبه امتحان کنید، کسی که باید در این مورد تصمیم بگیره که چه کمپوننت ای مناسبه خودتون هستید.
Win Form هم چیزی نیست که به این راحتی منسوخ بشه، خیالتون از این بابت راحت باشه.
برنامه های عادی Windows در NET. ذاتا Portable هستند، بجز NET framework. چیزی قرار نیست براشون نصب بشه که Portable نباشند. اگر موردی هم هست که جلوی Portable شدن برنامه تون رو میگیره مربوط به یک عامل خارجیه که ازش در برنامه استفاده کردید و نیاز به نصب شدن داشته، نه خود برنامه تون. شما فایل اجرایی پروژه تون رو از هر جایی میتوانید اجرا کنید، چه از روی یک فولدر درایو :E و چه از داخل یک زیرشاخه Program Files و چه از روی CD و DVD. برای ترکیب کردن فایل های مختلف هم WinRAR و WinZip و ... قابل استفاده هستند، اما چون پیش نیاز هایی مثل NET Framework رو در نظر نمی گیرند، بهتره از یک Setup ساز مثل
Advanced Installer و Setup Factory استفاده کنید که امکانات خیلی بیشتری دارند.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون استاد علی

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

یعنی من براتون ایجاد مزاحمت کردم؟ :green:
استاد علی عزیز من.
راستی من نمیدونم استاد علی ، اسم تون چیه (اگه مایل بودین ، بگین) . من طبق امضاتون شما را به این اسم میشناسم :green:


هر چقدر نسخه Framework پایین تری رو بکار ببرید هم سازگاری با سیستم عامل های بیشتری خواهد داشت و هم احتمال نیاز به نصب Framework کمتر میشه. خیلی ساده می توانید در سایت مایکروسافت ببینید که فرضا Framework های نسخه 4.5 به بعد ویندوز XP را پشتیبانی نمی کنند :
NET Framework system requirements.
لذا اگر به دلیلی مجبور نیستید، بهتره از NET Framework. نسخه 2.0 استفاده کنید، نشد یک نسخه بالاتر. نشد باز یک نسخه بالاتر. برای انتخاب یک نسخه بالاتر باید دلیل موجهی داشته باشید، نسخه بالا هیچوقت مزیت نیست.

نسخه ی 2؟!
زیر نسخه ی دات نت فریموورک 3.5 که حداقل ویندوز 10 ازش پشتیبانی نمیکنه . دات نت 3.5 هم به زور به خورد ویندوز 10 بصورت جداگانه میدن که بازم مشکلاتی را ایجاد میکنه با ویندوز 10 های جدید .
الان لینک دادین متوجه شدم تفاوت دات نت ها ، مثلا توی clr و regex و sql و asp.net و ایناها میتونه باشه .
من توی این پروژه از regex هم (حالا بصورت ساده یا شاید یه سطح بالاتر از ساده) میخوام استفاده کنم . توی دات نت 4.5 گفتش regex بهبودهایی داشت . توضیحش :

Ability to limit how long the regular expression engine will attempt to resolve a regular expression before it times out. See the Regex.MatchTimeout property.

حالا این یعنی زمان و سرعت پیدا کردن regex بهبود یافت؟
الان 4.5.0 را ویندوز xp ساپورت میکنه؟ چون توی لینکی که دادید نوشته تا 4 را ساپورت میکنه !


و اینکه شما با چه نسخه ای از چه زبانی برنامه نویسی اش می کنید هیچ ارتباطی با کسی که از فایل اجرایی اش استفاده می کنه نداره، حتی اصلا مهم نیست با #C باشه یا زبان دیگری. در فایل اجرایی که کد زبان #C وجود نداره که نسخه اش در خروجی مهم باشه.

نه فایل اجرایی منظورم نبود .
منظورم این بود نسخه ی سی شارپ ، به نسخه ی انتخابی دات نت فریم وورک وابسته هست؟
یعنی مثلا دات نت 4.0 رو اگه انتخاب کنم ، نسخه ی سی شارپم همون خواهد بود که دات نت 4.7.2 را انتخاب کنم همون نسخه خواهد بود؟
اگه آره ، آیا آخرین نسخه که سی شارپ 7 هست ، میشن؟
اگه نه ، مثلا با انتخاب دات نت 4.0 ، چه نسخه از سی شارپ خواهد بود و دات نت 4.5 چه نسخه از سی شارپ؟


اینکه Autorun ای بسازید که فوری بالا بیاد و خودش برای اجرا شدن نیاز به نصب Framework داشته باشه که نصب شدنش دقایقی طول بکشه قدری ناخوشایند ئه. و اینکه نصب Framework رو بصورت مخفیانه و Quiet انجام بگیره هم با توجه به تنظیمات دسترسی کاربر یا ممکنه عملی نباشه یا مورد رضایت کاربر نباشه. به همین جهت انتخاب زبان های NET. برای اینگونه موارد کلا مطلوب نیست.
برای اینکه برنامه تون به دلیل عدم نصب Framework با خطا متوقف نشه می توانید با یک نرم افزار Setup ساز دلخواه تون برایش یک اجرا کننده اولیه بسازید که اگر بدون مشکل اجرا شد فایل اجرایی شما رو اجرا کنه و در تنظیمات Setup تیک بزنید که برای نصب شدن به Framework نسخه فلان نیاز داره که اگر نباشه خود Setup ساز پیام مناسب رو نشون میده. و هیچوقت مثل برخی نرم افزار های ایرانی زورکی روی سیستم کاربر چیزی رو نصب نکنید.
برای انتخاب کمپوننت هر کسی سلیقه و معیار های خودش رو داره. در اینترنت بگردید و هر کمپوننت ای که به نظرتون مناسبه امتحان کنید، کسی که باید در این مورد تصمیم بگیره که چه کمپوننت ای مناسبه خودتون هستید.
Win Form هم چیزی نیست که به این راحتی منسوخ بشه، خیالتون از این بابت راحت باشه.

پس درباره ی دات نت فریم وورک و چجوری نصب شدنش برای برنامه ی پرتابل ، باشه آخر که پروژه تمام شد ، اگه سئوالی پیش اومد ، میپرسم


برنامه های عادی Windows در NET. ذاتا Portable هستند، بجز NET framework. چیزی قرار نیست براشون نصب بشه که Portable نباشند. اگر موردی هم هست که جلوی Portable شدن برنامه تون رو میگیره مربوط به یک عامل خارجیه که ازش در برنامه استفاده کردید و نیاز به نصب شدن داشته، نه خود برنامه تون. شما فایل اجرایی پروژه تون رو از هر جایی میتوانید اجرا کنید، چه از روی یک فولدر درایو :E و چه از داخل یک زیرشاخه Program Files و چه از روی CD و DVD. برای ترکیب کردن فایل های مختلف هم WinRAR و WinZip و ... قابل استفاده هستند، اما چون پیش نیاز هایی مثل NET Framework رو در نظر نمی گیرند، بهتره از یک Setup ساز مثل
Advanced Installer و Setup Factory استفاده کنید که امکانات خیلی بیشتری دارند.

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

the_king

مدیرکل انجمن
نسخه ی 2؟!
زیر نسخه ی دات نت فریموورک 3.5 که حداقل ویندوز 10 ازش پشتیبانی نمیکنه . دات نت 3.5 هم به زور به خورد ویندوز 10 بصورت جداگانه میدن که بازم مشکلاتی را ایجاد میکنه با ویندوز 10 های جدید .

عجب. معلومات شما در مورد ویندوز از خود مایکروسافت هم بیشتره. این اطلاعات رو از کدوم منابع پیدا کردید؟
Install the .NET Framework 3.5 on Windows 10, Windows 8.1, and Windows 8


الان لینک دادین متوجه شدم تفاوت دات نت ها ، مثلا توی clr و regex و sql و asp.net و ایناها میتونه باشه .
من توی این پروژه از regex هم (حالا بصورت ساده یا شاید یه سطح بالاتر از ساده) میخوام استفاده کنم . توی دات نت 4.5 گفتش regex بهبودهایی داشت . توضیحش :

Ability to limit how long the regular expression engine will attempt to resolve a regular expression before it times out. See the Regex.MatchTimeout property.

حالا این یعنی زمان و سرعت پیدا کردن regex بهبود یافت؟

بله.

الان 4.5.0 را ویندوز xp ساپورت میکنه؟ چون توی لینکی که دادید نوشته تا 4 را ساپورت میکنه !
پستی که نوشتم رو با دقت نمیخونید، وقتی صریحا نوشتم پشتیبانی نمی کنه چرا مجددا سوال می کنید.

نه فایل اجرایی منظورم نبود .
منظورم این بود نسخه ی سی شارپ ، به نسخه ی انتخابی دات نت فریم وورک وابسته هست؟

هیچ ربطی بهم ندارند، کد #C شما به کد ماشین مجازی ترجمه میشه، اون کد مجازیه که باید موقع اجرا از Framework استفاده کنه، نه کد #C. شما برنامه رو قبل از اجرا کامپایل می کنید، یعنی قبل از اجرا کد #C تبدیل میشه به کد ماشین. دیگه #C موقع اجرا نقشی نداره که نسخه اش مطرح باشه یا ارتباطی با Framework داشته باشه. شما می توانید کد C# 7.3 رو با NET Framework 2.0. استفاده کنید و کد C# 3 رو با NET Framework 4.6.
در ضمن در تنظیمات بخش Build پروژه تان با دکمه Advanced می توانید در ویژوال استدیو های جدید نسخه #C رو انتخاب کنید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
عجب. معلومات شما در مورد ویندوز از خود مایکروسافت هم بیشتره. این اطلاعات رو از کدوم منابع پیدا کردید؟
Install the .NET Framework 3.5 on Windows 10, Windows 8.1, and Windows 8


بله.

پستی که نوشتم رو با دقت نمیخونید، وقتی صریحا نوشتم پشتیبانی نمی کنه چرا مجددا سوال می کنید.


هیچ ربطی بهم ندارند، کد #C شما به کد ماشین مجازی ترجمه میشه، اون کد مجازیه که باید موقع اجرا از Framework استفاده کنه، نه کد #C. شما برنامه رو قبل از اجرا کامپایل می کنید، یعنی قبل از اجرا کد #C تبدیل میشه به کد ماشین. دیگه #C موقع اجرا نقشی نداره که نسخه اش مطرح باشه یا ارتباطی با Framework داشته باشه. شما می توانید کد C# 7.3 رو با NET Framework 2.0. استفاده کنید و کد C# 3 رو با NET Framework 4.6.
در ضمن در تنظیمات بخش Build پروژه تان با دکمه Advanced می توانید در ویژوال استدیو های جدید نسخه #C رو انتخاب کنید.

ممنون استاد علی.
آها پس از توی windows feature میشه نسخه های 2 و 3 و 3.5 را نصب کرد.
چرا همش طعنه میزنی به معلومات من استاد علی؟ :green: آقا من بیشتر اطلاعات خبری ای که میدم ، در واقع شما سئوالی هست . :green:
یه سئوال اینکه چرا طراحی شی درخت را در دات نت جوری ساختن که برای اضافه کردن گره ، اگه گره ی اصلی بود ، جداگانه و با کد treeview.nodes.add و اگه گره ی فرعی بود ، با کد TreeNode.nodes.add اضافه بشه؟ منظورم اینه که چرا مثلا همه ی گره های اصلی و فرعی را با کد TreeNode.nodes.add و بصورت یکپارچه طراحی نکردن؟ آخه اتوپلی با یک کد میشه به شی درختش اضافه کرد.
بعد اینکه به نظرتون regex در دات نت 4.5 چقدر سرعتش فرق کرده؟ اگه زیاد نیست ، دات نت 4.0 بذارم؟ خودتون بودین ، 4 میذاشتین یا 4.5 ؟
 

the_king

مدیرکل انجمن
ممنون استاد علی.
آها پس از توی windows feature میشه نسخه های 2 و 3 و 3.5 را نصب کرد.
چرا همش طعنه میزنی به معلومات من استاد علی؟ :green: آقا من بیشتر اطلاعات خبری ای که میدم ، در واقع شما سئوالی هست . :green:

طعنه نمیزنم، همچین قاطعانه در مورد پشتیبانی ویندوز از NET. گفتید که تیم سازنده اش هم اونطور قاطعانه نمیگه :green:
یه سئوال اینکه چرا طراحی شی درخت را در دات نت جوری ساختن که برای اضافه کردن گره ، اگه گره ی اصلی بود ، جداگانه و با کد treeview.nodes.add و اگه گره ی فرعی بود ، با کد TreeNode.nodes.add اضافه بشه؟ منظورم اینه که چرا مثلا همه ی گره های اصلی و فرعی را با کد TreeNode.nodes.add و بصورت یکپارچه طراحی نکردن؟ آخه اتوپلی با یک کد میشه به شی درختش اضافه کرد.
ظاهرا شما گره TreeNode رو جزئی از یک TreeView تصور می کنید که بدون اون معنی نداره و حالا ممکنه گره شاخه اصلی باشه یا زیر شاخه. همون تفسیری که از اتوپلی براتون مونده. اما در NET. گره TreeNode یک ساختار مستقل از TreeView هست که خارج از بدنه کنترل تشکیل میشه. الزامی نیست که گره حتما متعلق به TreeView ای باشه. در NET. شما می توانید TreeNode هایی بسازید و براشون توسط TreeNodeCollection زیر شاخه هم تعریف کنید، بدون اینکه TreeView ای در کار باشه. TreeView.Nodes صرفا یک پروپرتی است که از نوع همین TreeNodeCollection ئه، TreeView صرفا یک کنترل ئه که از TreeNode استفاده می کنه، فقط همین. NET. قصد نداره از برنامه نویس بخواد برای ساختن گره اول یک TreeView بسازه و گره رو وابسته به اون کنترل کنه.

بعد اینکه به نظرتون regex در دات نت 4.5 چقدر سرعتش فرق کرده؟ اگه زیاد نیست ، دات نت 4.0 بذارم؟ خودتون بودین ، 4 میذاشتین یا 4.5 ؟
نظر دادن نمیخواد، تست کنید و با توجه به کد خودتون نتیجه بگیرید ارزش داره یا نه. یکسری کد Matches برای Regex بنویسید یا از جایی کپی کنید و اگه لازم شد با حلقه اجراشو در حد دقیقه طولانی کنید و زمان اجرای کد رو در NET. های نسخه های متفاوت مقایسه کنید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
طعنه نمیزنم، همچین قاطعانه در مورد پشتیبانی ویندوز از NET. گفتید که تیم سازنده اش هم اونطور قاطعانه نمیگه :green:

ظاهرا شما گره TreeNode رو جزئی از یک TreeView تصور می کنید که بدون اون معنی نداره و حالا ممکنه گره شاخه اصلی باشه یا زیر شاخه. همون تفسیری که از اتوپلی براتون مونده. اما در NET. گره TreeNode یک ساختار مستقل از TreeView هست که خارج از بدنه کنترل تشکیل میشه. الزامی نیست که گره حتما متعلق به TreeView ای باشه. در NET. شما می توانید TreeNode هایی بسازید و براشون توسط TreeNodeCollection زیر شاخه هم تعریف کنید، بدون اینکه TreeView ای در کار باشه. TreeView.Nodes صرفا یک پروپرتی است که از نوع همین TreeNodeCollection ئه، TreeView صرفا یک کنترل ئه که از TreeNode استفاده می کنه، فقط همین. NET. قصد نداره از برنامه نویس بخواد برای ساختن گره اول یک TreeView بسازه و گره رو وابسته به اون کنترل کنه.

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

آها ممنون . ولی نمیدونم treenode بدون treeview کاربرد خاص اش کجاست



نظر دادن نمیخواد، تست کنید و با توجه به کد خودتون نتیجه بگیرید ارزش داره یا نه. یکسری کد Matches برای Regex بنویسید یا از جایی کپی کنید و اگه لازم شد با حلقه اجراشو در حد دقیقه طولانی کنید و زمان اجرای کد رو در NET. های نسخه های متفاوت مقایسه کنید.

تست کردم یه نمونه رو :
Best Practices for Regular Expressions in .NET


کد:
      Stopwatch sw;
      string[] addresses = { "[email protected]",
                             "[email protected]" };
      // The following regular expression should not actually be used to
      // validate an email address.
      string pattern = @"^[0-9A-Z]([-.\w]*[0-9A-Z])*$";
      string input;
  
      foreach (var address in addresses) {
         string mailBox = address.Substring(0, address.IndexOf("@"));   
         int index = 0;
         for (int ctr = mailBox.Length - 1; ctr >= 0; ctr--) {
            index++;

            input = mailBox.Substring(ctr, index);
            sw = Stopwatch.StartNew();
            Match m = Regex.Match(input, pattern, RegexOptions.IgnoreCase);
            sw.Stop();
            if (m.Success)
               Console.WriteLine("{0,2}. Matched '{1,25}' in {2}",
                                 index, m.Value, sw.Elapsed);
            else                 
               Console.WriteLine("{0,2}. Failed  '{1,25}' in {2}",
                                 index, input, sw.Elapsed);
         }
         Console.WriteLine();
      }

کل این کد رو توی حلقه ی 100 تایی گذاشتم ، با دات نت 4.0 و حتی 4.5 و 4.7.2 ، دقیقا هم میزان و 34 ثانیه طول کشیدن

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

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

the_king

مدیرکل انجمن
کل این کد رو توی حلقه ی 100 تایی گذاشتم ، با دات نت 4.0 و حتی 4.5 و 4.7.2 ، دقیقا هم میزان و 34 ثانیه طول کشیدن
پس انتظار بهبود خاصی از نسخه بالاتر ندارید. در نظر بگیرید که با آزمون یک کد فقط می توانید نتیجه بگیرید که برای این مورد خاص مزیتی در انتخاب نسخه بالاتر نیست، ممکنه بهینه سازی برای الگو های خیلی پیچیده یا خاص جواب بده که شما تست نکردید و ... در ضمن بهینه سازی به این معنا نیست که سرعت اجرای کدتون چند برابر بشه، ممکنه فقط کسری از ثانیه تفاوت کنه که برای کاربر و شما اصلا محسوس نباشه. اینکه ویندوز چند میلی ثانیه زودتر بالا بیاد شاید از دید طراح ویندوز بهینه سازی موثری محسوب میشه ولی برای کاربر ویندوز تفاوتی نکرده.
و نهایتا شما برای کدی که خودتون می نویسید و لازمش دارید باید نتیجه بگیرید که ارزش داره یا نه، نه الگوی Regex ای که خودتون نمی خواهید ازش استفاده کنید.

بعد اینکه میخوام دکمه درست کنم . دکمه ها هم بصورت فایل عکس در فتوشاپ میخوام طراحی کنم . حالا به نظرتون در فتوشاپ طراحی کنم ولی رویدادهای دیگه ی دکمه که باعث تغییر شکل دکمه میشه (مثلا وقتی روی دکمه کلیک میکنیم یا روش میریم را با کلاس image و کلا گرافیک در ویژال استودیو طراحی کنم ، بهتره؟ نه؟

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

SajjadKhati

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


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

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

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

the_king

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

بعد اینکه چون با دیتابیس رابطه داره ، به نظرتون اول باید دیتابیس را طراحی و کارهای دیتابیس را رسید و بعد رفت سراغ الگوریتم های پروژه یا اول کارهای الگوریتم های پروژه را رسید و بعد رفت سراغ دیتابیس و یا ترکیبی؟ شما در پروژه هاتون ، دیتابیس در کجای کارتون قرار میگیره؟
پروژه ای که شما می خواهید شخصا طراحی کنید اونقدر داده نخواهد داشت که تغییر دادن ساختار پایگاه داده براتون دردسر ایجاد کنه، تدریجا تکمیلش کنید. هیچ لزومی نداره که بخواهید از همون ابتدا ساختار جداول پایگاه داده رو یک به یک تعریف کنید یا تا اتمام پروژه هیچ پایگاه داده ای نسازید. تدریجا که پروژه تکمیل شد اینکار رو انجام می دهید. هر جا هم که لازم شد تغییرش می دهید. مگر پروژه شما اتوران سازی نیست؟ به اون معنا پایگاه داده نداره، یک ساختار ساده فایل محور ئه، حالا Binary یا XML. از SQL Server با اون تشکیلات مفصل که نمی خواهید برای یک پروژه اتوران ساز استفاده کنید؟
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
پروژه ای که شما می خواهید شخصا طراحی کنید اونقدر داده نخواهد داشت که تغییر دادن ساختار پایگاه داده براتون دردسر ایجاد کنه، تدریجا تکمیلش کنید. هیچ لزومی نداره که بخواهید از همون ابتدا ساختار جداول پایگاه داده رو یک به یک تعریف کنید یا تا اتمام پروژه هیچ پایگاه داده ای نسازید. تدریجا که پروژه تکمیل شد اینکار رو انجام می دهید. هر جا هم که لازم شد تغییرش می دهید. مگر پروژه شما اتوران سازی نیست؟ به اون معنا پایگاه داده نداره، یک ساختار ساده فایل محور ئه، حالا Binary یا XML. از SQL Server با اون تشکیلات مفصل که نمی خواهید برای یک پروژه اتوران ساز استفاده کنید؟

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


87810oqzk1a9.jpg


این جوری کار میکنه که کاربر ، یه پوشه ی حاوی فایل rar که نرم افزارهای دانلود شده اش هست را با یه پوشه یا درایوی که نرم افزارهاش را میخواد اونجا دسته بندی کنه را به اتوران میده ، اتوران اون فایل های rar را اکسترکت میکنه و با اطلاعات نرم افزارهایی که از اول به دیتابیس میدم یا کاربر بهش اضافه میکنه ، هر نرم افزار را به دسته ی خاص خودش cut paste میکنه و خود نرم افزار و همینطور اطلاعات اون نرم افزار(همونطور که بخشی شو در بالا میبینید مثل نام ، مسیر فایل ، مسیر کرک و ... ، توضیحات ، اطلاعات و راهنماهای مختلف نرم افزار) را به اتوران اضافه میکنه .
کلا بخش مهم این نوع اتوران ، دیتابیس و جستجو در دیتابیس اش خواهد بود . بدون دیتابیس خوب یا بدون جستجوی خوب ، اصلا این اتوران کارایی خودش را نخواهد داشت.
sql express نیاز به نصب موتور در سیستم کاربر نخواهد داشت؟ اگه آره ، بجای sql server از sql express استفاده کنم؟ sql express همونی هه که پیش فرض توی ویژال استودیو هست دیگه؟ درسته؟
بعد اینکه میخوام در همین ریزولیشن طراحی کنم . یعنی 700*1244 که نیاز به مانیتورهای 19 اینچ داره . الان تقریبا میشه گفت نسل مانیتورهای crt که 17 اینچ بودن زده شده دیگه. درسته؟ یعنی کسی 17 اینچ نداره که این اتوران باهاش سازگار نباشه
 
آخرین ویرایش:

the_king

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


87810oqzk1a9.jpg


این جوری کار میکنه که کاربر ، یه پوشه ی حاوی فایل rar که نرم افزارهای دانلود شده اش هست را با یه پوشه یا درایوی که نرم افزارهاش را میخواد اونجا دسته بندی کنه را به اتوران میده ، اتوران اون فایل های rar را اکسترکت میکنه و با اطلاعات نرم افزارهایی که از اول به دیتابیس میدم یا کاربر بهش اضافه میکنه ، هر نرم افزار را به دسته ی خاص خودش cut paste میکنه و خود نرم افزار و همینطور اطلاعات اون نرم افزار(همونطور که بخشی شو در بالا میبینید مثل نام ، مسیر فایل ، مسیر کرک و ... ، توضیحات ، اطلاعات و راهنماهای مختلف نرم افزار) را به اتوران اضافه میکنه .
کلا بخش مهم این نوع اتوران ، دیتابیس و جستجو در دیتابیس اش خواهد بود . بدون دیتابیس خوب یا بدون جستجوی خوب ، اصلا این اتوران کارایی خودش را نخواهد داشت.
sql express نیاز به نصب موتور در سیستم کاربر نخواهد داشت؟ اگه آره ، بجای sql server از sql express استفاده کنم؟ sql express همونی هه که پیش فرض توی ویژال استودیو هست دیگه؟ درسته؟

دیتابیس خوب به این معنی نیست که یک سیستم مدیریت پایگاه داده چند گیگابایتی لازم داشته باشه. پایگاه داده فایل محور در خیلی موارد هم سریعتره و هم سبکتر. مزیت سیستم های مدیریت پایگاه داده اغلب در امکانات توزیع شده اونها است نه سرعت جستجو. SQL Server Express هم یک نسخه سبکتر SQL Server ئه که بدون نصب شدن کار نمی کنه. سرویس داره، بدون سرویس اش که نمیتونه جستجو کنه. همونطور که پایگاه داده Access رو به تنهایی نمی توانید استفاده کنید، پایگاه داده SQL Server Express هم به تنهایی قابل دسترسی نیست. پیشفرض ویژوال استدیو نیست، میتونه همراهش نصب بشه. همه نسخه هاش هم روی همه ویندوز ها قابل اجرا نیست، به قدر کافی مشکلات نصب و از کار افتادن سرویس و عدم اتصال داره. SQL Server و SQL Server Express هر دو سرور دارند، هم نصب کردنشون و هم کار کردنشون میتونه دردسر ایجاد کنه. شما که برنامه تون پایگاه داده با چند کاربر همزمان نداره که نیاز به سرور داشته باشه. SQL Compact و SQLite و انواع سیستم های فایل محور مشابه هست که خیلی مناسب تره.

بعد اینکه میخوام در همین ریزولیشن طراحی کنم . یعنی 700*1244 که نیاز به مانیتورهای 19 اینچ داره . الان تقریبا میشه گفت نسل مانیتورهای crt که 17 اینچ بودن زده شده دیگه. درسته؟ یعنی کسی 17 اینچ نداره که این اتوران باهاش سازگار نباشه
حداقل ابعادی که می توانید رویش حساب کنید 1024x768 ئه که ویندوزی مثل ویندوز 8 به عنوان حداقل ابعاد مورد نیاز استفاده می کنه. یعنی نمی توانید توقع داشته باشید که 1244 پیکسل افقی در دسترس باشه. و چه بهتر که با ابعاد 800x600 سازگار باشه که در حالت Safe Mode قابل استفاده باشه. در ضمن ابعاد ثابت هم غیر عادیه و هم غیر منطقی. اولا ربطی به سایز مانیتور نداره، ممکنه کسی مانیتور بزرگی داشته باشه که از رزولیشن پایینتری روی اون استفاده کنه، یا نسبت طول به عرضش با 16:9 تطابق نداشته باشه.شما که نمی توانید نسبت طول به عرض مانیتور کسی را عوض کنید یا به کسی که مانیتور 29 اینچی با نسبت 21:9 و رزولیشن 1080×2560 داره بگید این برنامه در پنجره کوچکی باز خواهد شد چون مانیتور خوبی داری. ثانیا CRT و IPS بودن یک بحث ئه، سایز یک بحث دیگه. اینکه مانیتور CRT ها از رده خارج شدند دلیل نمیشه که همه شون دور انداخته شده باشند یا چون CRT ها نیستند پس مانیتور های IPS با سایز 17 اینچ هم نباشه. تازه بر اساس چه آماری میگید کسی مانیتور 17 اینچی نداره؟
Desktop Screen Resolution Stats Worldwide | StatCounter Global Stats
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
دیتابیس خوب به این معنی نیست که یک سیستم مدیریت پایگاه داده چند گیگابایتی لازم داشته باشه. پایگاه داده فایل محور در خیلی موارد هم سریعتره و هم سبکتر. مزیت سیستم های مدیریت پایگاه داده اغلب در امکانات توزیع شده اونها است نه سرعت جستجو. SQL Server Express هم یک نسخه سبکتر SQL Server ئه که بدون نصب شدن کار نمی کنه. سرویس داره، بدون سرویس اش که نمیتونه جستجو کنه. همونطور که پایگاه داده Access رو به تنهایی نمی توانید استفاده کنید، پایگاه داده SQL Server Express هم به تنهایی قابل دسترسی نیست. پیشفرض ویژوال استدیو نیست، میتونه همراهش نصب بشه. همه نسخه هاش هم روی همه ویندوز ها قابل اجرا نیست، به قدر کافی مشکلات نصب و از کار افتادن سرویس و عدم اتصال داره. SQL Server و SQL Server Express هر دو سرور دارند، هم نصب کردنشون و هم کار کردنشون میتونه دردسر ایجاد کنه. شما که برنامه تون پایگاه داده با چند کاربر همزمان نداره که نیاز به سرور داشته باشه. SQL Compact و SQLite و انواع سیستم های فایل محور مشابه هست که خیلی مناسب تره.


حداقل ابعادی که می توانید رویش حساب کنید 1024x768 ئه که ویندوزی مثل ویندوز 8 به عنوان حداقل ابعاد مورد نیاز استفاده می کنه. یعنی نمی توانید توقع داشته باشید که 1244 پیکسل افقی در دسترس باشه. و چه بهتر که با ابعاد 800x600 سازگار باشه که در حالت Safe Mode قابل استفاده باشه. در ضمن ابعاد ثابت هم غیر عادیه و هم غیر منطقی. اولا ربطی به سایز مانیتور نداره، ممکنه کسی مانیتور بزرگی داشته باشه که از رزولیشن پایینتری روی اون استفاده کنه، یا نسبت طول به عرضش با 16:9 تطابق نداشته باشه.شما که نمی توانید نسبت طول به عرض مانیتور کسی را عوض کنید یا به کسی که مانیتور 29 اینچی با نسبت 21:9 و رزولیشن 1080×2560 داره بگید این برنامه در پنجره کوچکی باز خواهد شد چون مانیتور خوبی داری. ثانیا CRT و IPS بودن یک بحث ئه، سایز یک بحث دیگه. اینکه مانیتور CRT ها از رده خارج شدند دلیل نمیشه که همه شون دور انداخته شده باشند یا چون CRT ها نیستند پس مانیتور های IPS با سایز 17 اینچ هم نباشه. تازه بر اساس چه آماری میگید کسی مانیتور 17 اینچی نداره؟
Desktop Screen Resolution Stats Worldwide | StatCounter Global Stats

سلام استاد علی
ممنون.
الان یعنی برنامه ها میخوان به sql server و یا اکسپرس متصل بشن ، امکان داره این دیتابیس ها ارور هم بدن؟! پس چرا من تا حالا مشکلی توی هیچ برنامه ای ندیدم. احتمالا باید اغلب برنامه های معتبر و رسمی از دیتابیس sql server استفاده کنن دیگه؟ درسته؟
بعد اینکه دیتابیس فایل محور چیه؟
بعد اینکه دیتابیس sqllite ، امکان خطای اتصال اش از sql server کمتره؟! چرا؟
Sqllite نیاز به نصب سرویس توی سیستم کاربر نداره؟ البته باید نداشته باشه چون اتوپلی هم ازش استفاده میکنه اما چرا نیاز نداره؟

توی ایران اغلب مانیتورها ، ریزولیشن های معروف و سازگار میان . توی همون ریزولیشن فکر نکنم مشکل خاصی داشته باشن
 

the_king

مدیرکل انجمن
سلام استاد علی
ممنون.
الان یعنی برنامه ها میخوان به sql server و یا اکسپرس متصل بشن ، امکان داره این دیتابیس ها ارور هم بدن؟! پس چرا من تا حالا مشکلی توی هیچ برنامه ای ندیدم.
بله. وقتی موجب تعجب میشه که سالها با نرم افزار های کلاینت SQL Server در ادارات سر و کله زده باشید، وگرنه مگر تا حالا چند بار نرم افزار کلاینتی که نوشتید روی سیستم های کاربران نصب شده که آمار مشکلاتش رو داشته باشید.
احتمالا باید اغلب برنامه های معتبر و رسمی از دیتابیس sql server استفاده کنن دیگه؟ درسته؟
نه، معتبر و رسمی اینجا معنی نداره. برای نرم افزار با توجه به نیازش نوع پایگاه داده رو انتخاب می کنند، نه اعتبارش. مساله کاملا فنی ئه، صحبت شیک بودن و پرستیژ که نیست.

بعد اینکه دیتابیس فایل محور چیه؟
پایگاه داده ای که سیستم مدیریتش مستقیما از فایل برای ذخیره سازی داده ها استفاده می کنه، حالا یک یا چند فایل بودنش خیلی مطرح نیست. مثل اون فایل های مخفی Thumbs.db که داخل پوشه ها ایجاد میشه و آیکون های داخل پوشه را ذخیره می کنه یک پایگاه داده فایل محور ئه.
بعد اینکه دیتابیس sqllite ، امکان خطای اتصال اش از sql server کمتره؟! چرا؟
وقتی تمامی اجزاء سیستم مدیریت پایگاه داده جزئی از خود نرم افزار شما باشه و از سایر نرم افزار ها هم مستقل کار کنه و پیش نیاز خارجی هم نداشته باشه و نیاز به سرویس و نصب شدنش و اجرا شدنش و ... نداشته باشه طبعا امکان خطا کمتره.
Sqllite نیاز به نصب سرویس توی سیستم کاربر نداره؟ البته باید نداشته باشه چون اتوپلی هم ازش استفاده میکنه اما چرا نیاز نداره؟
سرویس در ویندوز نصب میشه، به تعداد مورد نیاز ازش پشت پرده اجرا میشه، ممکنه دائم در حال اجرا بمونه و هر وقت لازم شد معلق بشه و میتونه به چندین نرم افزار سرویس بده.
اما وقتی یک فعالیتی خاص یک نرم افزار باشه که با دکمه شروع میشه و با یک دکمه تموم میشه دیگه سرویس پشت پرده ای لازم نداره، نه فعالیت اشتراکیه و نه نیازی به تعلیق داره.
پایگاه داده های SQLite هم از این جهت نیازی به سرویس ندارند. هر نرم افزاری که ازشون استفاده می کنه خودش مستقلا در پروسه اش بهشون دسترسی داره، سروری در کار نیست که به چند کلاینت سرویس بده.
وقتی کسی برای چیزی سرویسی طراحی نکرده باشه به سرویسی نیازی نداره دیگه. شما برای اینکه ماشین حساب ویندوز رو اجرا کنید به سرویسی احتیاجی ندارید، چون ماشین حساب ویندوز نیازی به سرویس خاصی نداره. SQLite هم سرویسی نداره که بهش نیاز داشته باشه پس سرویسی هم برای اجرا شدن نداره.
توی ایران اغلب مانیتورها ، ریزولیشن های معروف و سازگار میان . توی همون ریزولیشن فکر نکنم مشکل خاصی داشته باشن
آمار خونه های مردم رو شما دارید، من ندارم، اما میتوانید سری به ادارات و شرکت های نیمه دولتی بزنید ببینید چند تا مانیتور CRT قدیمی با رزولیشن پایین در حال کار میبینید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
یه سئوال در حاشیه دارم اینکه فایل های هدر سی پلاس پلاس (#include<conio.h> و #include<iostream.h> و ...) ، معادل چه کدی در سی شارپ میشه؟
آیا معادل اضافه کردن فایل حاوی کلاس خاص در refrence پروژه و بعد using کردن فضای نام اش در سی شارپ هست؟
 

the_king

مدیرکل انجمن
سلام
یه سئوال در حاشیه دارم اینکه فایل های هدر سی پلاس پلاس (#include<conio.h> و #include<iostream.h> و ...) ، معادل چه کدی در سی شارپ میشه؟
آیا معادل اضافه کردن فایل حاوی کلاس خاص در refrence پروژه و بعد using کردن فضای نام اش در سی شارپ هست؟
نه، هیچ معادلی برایش پیدا نمی کنید، البته نیازی هم بهش ندارید چون دو زبان سبک کامپایل متفاوتی دارند.
اون include یکسری ویژگی های خاص داره که در using و کلا #C مشابهش نیست. include در واقع insert کردن محتویات header در یک موقعیت ئه، محتویات فایل header رو با کدی که دارید می نویسید ادغام می کنه.
یعنی انگار کل سطر های داخل conio.h رو کپی کنه و در اون موقعیت paste کنه تا کامپایل بشه. یعنی مثل using نیست که یک کدی جای دیگری یکبار کامپایل شده باشه و شما فقط بهش رجوع کنید، هر بار که از include استفاده بشه مجددا کامپایل اون header ها در داخل کدتون انجام میشه.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
نه، هیچ معادلی برایش پیدا نمی کنید، البته نیازی هم بهش ندارید چون دو زبان سبک کامپایل متفاوتی دارند.
اون include یکسری ویژگی های خاص داره که در using و کلا #C مشابهش نیست. include در واقع insert کردن محتویات header در یک موقعیت ئه، محتویات فایل header رو با کدی که دارید می نویسید ادغام می کنه.
یعنی انگار کل سطر های داخل conio.h رو کپی کنه و در اون موقعیت paste کنه تا کامپایل بشه. یعنی مثل using نیست که یک کدی جای دیگری یکبار کامپایل شده باشه و شما فقط بهش رجوع کنید، هر بار که از include استفاده بشه مجددا کامپایل اون header ها در داخل کدتون انجام میشه.

ممنون
پس کلا هدف شون یکی هست یعنی از کد خارجی (کدی که در فایلی یا جایی نوشته شده) استفاده میکنن دیگه؟ درسته؟
 

the_king

مدیرکل انجمن
ممنون
پس کلا هدف شون یکی هست یعنی از کد خارجی (کدی که در فایلی یا جایی نوشته شده) استفاده میکنن دیگه؟ درسته؟
نه. وقتی معادلش نیست یعنی هدف مشترکی ندارند دیگه. اگر هدف مشترک داشتند بی تعارف میگفتم. شما با using نمی توانید به هیچ فایلی رفرنس بدید، using وظیفه اش با بخش References جدا است، شما صد تا سطر using هم بنویسید از چیزی استفاده نمی کنه، فقط یک راهنما است برای ساده تر کردن کد نویسی که نیازی به نوشتن namespace نباشه. خودتونم می دونید که لازم نیست حتما از using استفاده کنید. می توانید کدتون رو بدون using بنویسید. اما include اینطوری نیست، header رو کامپایل می کنه، کاری هم با namespace نداره. خود ++C دستور using namespace داره که نزدیکه به using در #C،
دلیلی نداره برای چیزی که معادلش در زبان دیگری نیست هدف مشترک تصور کنیم.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
نه. وقتی معادلش نیست یعنی هدف مشترکی ندارند دیگه. اگر هدف مشترک داشتند بی تعارف میگفتم. شما با using نمی توانید به هیچ فایلی رفرنس بدید، using وظیفه اش با بخش References جدا است، شما صد تا سطر using هم بنویسید از چیزی استفاده نمی کنه، فقط یک راهنما است برای ساده تر کردن کد نویسی که نیازی به نوشتن namespace نباشه. خودتونم می دونید که لازم نیست حتما از using استفاده کنید. می توانید کدتون رو بدون using بنویسید. اما include اینطوری نیست، header رو کامپایل می کنه، کاری هم با namespace نداره. خود ++C دستور using namespace داره که نزدیکه به using در #C،
دلیلی نداره برای چیزی که معادلش در زبان دیگری نیست هدف مشترک تصور کنیم.

ممنون استاد علی
دقت کنید من منظورم این نیست که کد #include در زبان سی پلاس پلاس معادل using در زبان سی شارپ باشه ها .
همونطور که گفتم ، منظورم اینه که کد #include در زبان سی پلاس پلاس معادل ابتدا اضافه کردن فایل حاوی کد از طریق reference در پنجره ی solution explorer و بعد استفاده از using باشه یا عملکردی شبیه این دو بخش (اول reference دادن در اون پنجره و بعد using کردن) داشته باشه . الان این طور هم نیست؟

بعد اینکه در سی شارپ ، دستوری نداریم که بشه بدون reference کردن بصورت دستی (فقط با استفاده از کدنویسی) ، به یک فایل سی شارپ (پسوند .cs) مرجع داد و از کدش استفاده کرد؟
آخه حتی توی لوا هم میشه با استفاده ی مستقیم از فقط کدنویسی ، به فایل های کدهای لوا (پسوند .lua) مرجع داد و از کدهاش استفاده کرد .
 
آخرین ویرایش:

the_king

مدیرکل انجمن
ممنون استاد علی
دقت کنید من منظورم این نیست که کد #include در زبان سی پلاس پلاس معادل using در زبان سی شارپ باشه ها .
همونطور که گفتم ، منظورم اینه که کد #include در زبان سی پلاس پلاس معادل ابتدا اضافه کردن فایل حاوی کد از طریق reference در پنجره ی solution explorer و بعد استفاده از using باشه یا عملکردی شبیه این دو بخش (اول reference دادن در اون پنجره و بعد using کردن) داشته باشه . الان این طور هم نیست؟

نه دیگه، نیست.

بعد اینکه در سی شارپ ، دستوری نداریم که بشه بدون reference کردن بصورت دستی (فقط با استفاده از کدنویسی) ، به یک فایل سی شارپ (پسوند .cs) مرجع داد و از کدش استفاده کرد؟
آخه حتی توی لوا هم میشه با استفاده ی مستقیم از فقط کدنویسی ، به فایل های کدهای لوا (پسوند .lua) مرجع داد و از کدهاش استفاده کرد .
نه. شما دارید از یک زبان مفسری مثال می آورید. شما که نمی توانید به یک کامپایلر بگید اگر موقع اجرا مقدار متغیر a از 4 بیشتر بود فلان کد رو برای کامپایل اضافه کن، یا موقع اجرا اگر به فلان سطر رسیدی فلان کلاس رو از فلان فایل کامپایل کن تا استفاده بشه. همه مواردی که باید کامپایل شوند مربوط به قبل از روال اجرا آماده هستند، یعنی جایی که هنوز هیچ کدی کامپایل نشده، هیچ کدی. وقتی هنوز کدی کامپایل نشده دستور نوشتن در کد معنی نداره.
حتی اگر دستوری به تصور شما وجود داشت دیگه وقتی کامپایل شد کار از کار گذشته و زمانی برای اضافه شدن موردی برای کامپایل نیست. این چیزی که میگید برای زبان مفسری قابل اجرا است نه کامپایلری.
 

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

بالا