صفحه 3 از 6 اولاول 12345 ... آخرآخر
نمایش نتایج 81 تا 120 از 202

نام تاپیک: تاپیک جامع برای مقایسه ی VB.net و سی شارپ

  1. #81
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727
    خب باید در جواب این سوال شما عرض کنم که سی ++ با وجود قدرت و سرعت زیاد پیچیدگی های خاص خودشو داره مخصوصا در مقوله های پیشرفته مثل MultiInheritance یا ارث بری چند گانه که برنامه ها رو خیلی پیچیده و گاه دچار اختلال و ایجاد OverHeading یا سربارگذاری حافظه میشد، از این رو مایکروسافت به فکر ایجاد زبانی افتاد تا علاوه بر قدرت سی ++، راحتی VB رو هم داشته باشه،از طرفی هم توسعه ی خود سی ++ با وجود پیچیدگی زیاد امکان پذیر نبود، این بود که سی شارپ در سال 2000 همزمان با معرفی دات نت متولد شد،زبانی که از لحاظ قدرت با سی ++ رقابت میکنه و از لحاظ سرعت تولید نرم افزار و مدیریت کد همتا نداره، زبانی که از سی ++ و جاوا تشکیل شده.

  2. #82
    سی شارپ از 100% قابلیت های دات نت با بالاترین کارایی استفاده میکند در حالی که در vb.net اینطوری نیست
    مثلا در vb.net، تکنولوژی GarbrageCollection باعث ایجاد سربارحاقظه میشود، نکته ی دیگه اینکه datatype هایی که uint هستد در vb.net به خوبی پیاده سازی نشدن، در نتیجه اگر کامپوننتی به زیان سی شارپ نوشته شده باشد و در ان از نوع های uint استفاده شده باشد و در vb.net آن کامپوننت مورد استفاده قرار گیرد، ممکن است برنامه دچار اختلال شد
    برای این ها مستنداتی هم دارید؟

    لحاظ قدرت با سی ++ رقابت میکنه و از لحاظ سرعت تولید نرم افزار و مدیریت کد همتا نداره،
    آیا برای این هم بنچمارک معتبر دارید؟

    زبانی که از سی ++ و جاوا تشکیل شده.
    منظورتون از این عبارت چیه؟
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  3. #83
    اصولا چنین مقایسه هایی کار درستی نیست. برای هر مقایسه ای باید معیار در نظر گرفت. هر ابزاری برای رسیدن به هدفی خاص طراحی شده و برای رسیدن به اون هدف هم توسعه داده میشه. زیاد لازم نیست در مورد بحث کنیم چون در این مورد زیاد تاحالا بحث شده و البته بحث بی فایده ای هم هست. این وظیفه طراح هر سیستمی که با توجه به عوامل موثر در پروژه خودش و case study های مختلف، در مورد استفاده از ابزارها تصمیم گیری کنه. برای درک واقعیت باید تعصب رو کنار گذاشت.
    http://www.barnamenevis.org/sh...ad.php?t=59570
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  4. #84
    فکر کنم بهتره پستهای titbasoft رو با دقت بخونید، مطالب قبلی که در مورد مقایسه این دو زبان گفته شده بود کاملا بی اساس هستن و در صورت لزوم می شه همه اونها رو به صورت مستدل رد کرد.

  5. #85
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727
    omid_Ahmadi عزیز بهتره یه نگاهی به آموزش سی شارپ در 21 روز بندازی.

  6. #86
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    زبانی که از سی ++ و جاوا تشکیل شده.
    من این مورد رو به کرات در جاهای دیگه دیدم... تقریبا میشه گفت که واقعا سی شارپ شی گرائی خودش رو از جاوا گرفته (بعضی موارد هم شنیدم از دلفی) و همونطور که جاوا از سی++ گرفته شده و سی# سعی کرده بیشتر به سی++ نزدیک باشه، پس به احتمال زیاد، منظور دوستمون همین بوده.

    لحاظ قدرت با سی++ رقابت میکنه و از لحاظ سرعت تولید نرم افزار و مدیریت کد همتا نداره
    دقیقا من یک پست در قسمت "بحث و گفتگوی فنی پیرامون دات نت" نوشته بودم، که متاسفانه هنوز تائید نشده و روی سایت قرار نگرفت ! ( نمیدونم چرا اون پست من تائید نشد !!! ) در اون پست به یک مقاله انگلیسی برخورده بودم که گفته بود (("همواره سرعت کدهای مدیریت نشده از کدهای مدیریت شده بیشتر نیست")) یعنی در بعضی مواقع کدهای مدیریت شده، سرعت بیشتری به نسبت کدهای مدیریت نشده داشت. جالبه که بدونید سی# کمی ( زیاد نه ) سریعتر از سی++ مدیریت شده بود ! ( البته در اون یک مقایسه نه بصورت کلی ! ) لینکش رو همین زیر میگذارم:

    http://www.grimes.demon.co.uk/dotnet/man_unman.htm

    البته شاید من اشتباه متوجه شدم، بهر حال خودتون برید ببینید.

  7. #87
    یک نکته جالب و خنده داری که خیلی جاها من میخونم اینه که مثلا #C یه چیزهایی رو ازجاوا گرفته یا جاوا یه چیزهایی رو از ++C گرفته ، این طوری به نظر میرسه انگار اینا یه قسمت هایی از کدهاشون رو از هم کش میرن !

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

    مثل وراثت چندگانه یا امثالهم!

    هر زبانی برای کاربردی طراحی میشه ، بنابراین مقایسه زبان های مختلف به این راحتی ها نیست!

    مثلا اگر قرار بود VB همه کارهای ++C رو انجام بده که دیگه به این راحتی نبود !

  8. #88
    تنها ارتباط #C با هر زبان دیگه ای فقط Anders Hejlsberg (آرشیتکت #C) می تونه باشه
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  9. #89
    omid_Ahmadi عزیز بهتره یه نگاهی به آموزش سی شارپ در 21 روز بندازی
    توی این کتاب چه چیزی گفته شده؟ (تا اونجایی که من می دونم امید اطلاعاتش نسبت به دات نت و البته زبان تخصصیش یعنی #C ، خوبه، پس بیخودی یه حرفی رو نمیزنه)
    در اون پست به یک مقاله انگلیسی برخورده بودم که گفته بود (("همواره سرعت کدهای مدیریت نشده از کدهای مدیریت شده بیشتر نیست")) یعنی در بعضی مواقع کدهای مدیریت شده، سرعت بیشتری به نسبت کدهای مدیریت نشده داشت. جالبه که بدونید سی# کمی ( زیاد نه ) سریعتر از سی++ مدیریت شده بود !
    این درسته اما چه ارتباطی به قدرت و سرعت تولید نرم افزار داره؟
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  10. #90
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    یک نکته جالب و خنده داری که خیلی جاها من میخونم اینه که مثلا #C یه چیزهایی رو ازجاوا گرفته یا جاوا یه چیزهایی رو از ++C گرفته ، این طوری به نظر میرسه انگار اینا یه قسمت هایی از کدهاشون رو از هم کش میرن !
    سنتکس رو ... !

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

  11. #91
    سرعت اجرای نرم افزار رو به عنوان یک قدرت
    این درسته اما چه ارتباطی به قدرت و سرعت تولید نرم افزار داره؟
    ----------
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  12. #92
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727
    همونطور که جاوا از سی++ گرفته شده و سی# سعی کرده بیشتر به سی++ نزدیک باشه، پس به احتمال زیاد، منظور دوستمون همین بوده.
    PC2st.ir عزیز ممنونم ازت، منم منظورم همین بود.

    توی این کتاب چه چیزی گفته شده؟ (تا اونجایی که من می دونم امید اطلاعاتش نسبت به دات نت و البته زبان تخصصیش یعنی #C ، خوبه، پس بیخودی یه حرفی رو نمیزنه)
    چیزایی که من گفتم در مورد دلیل به وجود آمدن سی شارپ و همچنین سربار حافظه ای که در vb.net براثر Garbrage Collection رخ میده و بسیاری چیزای دیگه مطرح شده.

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

  13. #93
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    بهرحال، بد ندیدم که به یک مقاله به زبانی غیر از پارسی (!) بگردم، لینکش رو این زیر ملاحظه میکنید:

    http://en.wikipedia.org/wiki/Compari...ual_Basic_.NET

    اما یک خلاصه از پاراگرافهای اول از مطالب فوق:


    C#‎ has taken concepts from other languages, notably Java and Delphi, combined with a syntax similar to C and Java.


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

    1. بیسیک دات نت برای برنامه های کوچک هست. (small appliaction)
    2. سی شارپ برای برنامه های Enterprise application development هست.
    پس: خودتون نتیجه بگیرید.


    1. There are large VB projects that are unusable in VB.Net due to the size of the project.
    2. If your solution is likely to include a large number of classes, C#‎ is highly recommended.


    همچنین:

    Visual Basic .NET culture :

    VB historically was a RAD tool, as well as a tool that was usable by untrained developers, or management. As a result of this wider user base, VB allowed for many shortcuts and ease of use features. These features allowed for the uninitiated to create code, but also contributed to maintenance and debugging issues. Examples of the shortcuts allowed in VB
    --- Optional declaration of variables
    --- Optional Weak Typing using late binding
    --- Optional Parameters

    که البته Optional Parameters رو به کمک دات نت، میشه واسه سی شارپ شبیه سازی کرد.

    و همچنین:

    C#‎ culture :

    C#‎ developers tend to be prior C/C++‎ developers, or Java developers. C#‎ is syntactically very similar to C and Java, the IDEs and command line tools work very similarly, and the culture is the same. Also, C#‎ inherited quite a bit of its style and culture from the Delphi/Object Pascal programming language.

    اینا رو از منبع نوشتم و توضیحات خیلی بیشتری که بهتره خودتون برید ببینید.

  14. #94
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    نقل قول نوشته شده توسط titbasoft مشاهده تاپیک
    قدرت و سرعت تولید نرم افزار
    بله، حالا فهمیدم منظورتون چی بوده...
    اگر قدرت یک زبان رو در سطح پائین تر بودن و ارتباط بیشتر با سخت افزار بدونیم، اون وقت سی++ قوی تر از سی# خواهد بود (برای تولید نرم افزار)، اگر سرعت تولید نرم افزار رو مبنای بر زمان اتمام و طراحی یک نرم افزار برای ویندوز در نظر بگیریم، اون وقت سی# سرعت بیشتری در تهیه و تولید نرم افزار خواهد داشت.

  15. #95
    اگر قدرت یک زبان رو در سطح پائین تر بودن و ارتباط بیشتر با سخت افزار بدونیم، اون وقت سی++ قوی تر از سی# خواهد بود (برای تولید نرم افزار)، اگر سرعت تولید نرم افزار رو مبنای بر زمان اتمام و طراحی یک نرم افزار برای ویندوز در نظر بگیریم، اون وقت سی# سرعت بیشتری در تهیه و تولید نرم افزار خواهد داشت.
    ببین این جمله رو با دقت بخون:
    لحاظ قدرت با سی++ رقابت میکنه و از لحاظ سرعت تولید نرم افزار و مدیریت کد همتا نداره
    جمله اول داره در مورد قدرت صحبت می کنه. بعد جمله دوم شروع میشه که میگه #C بی همتاست.
    تقریبا میشه گفت که واقعا سی شارپ شی گرائی خودش رو از جاوا گرفته (بعضی موارد هم شنیدم از دلفی) و همونطور که جاوا از سی++ گرفته شده و سی# سعی کرده بیشتر به سی++ نزدیک باشه، پس به احتمال زیاد، منظور دوستمون همین بوده.
    C#‎ has taken concepts from other languages, notably Java and Delphi, combined with a syntax similar to C and Java.
    شباهت مفهومی و سینتکسی به معنای این نیست که #C شی گراییش رو از جاوا یا ... گرفته. ببین ممکنه من لباسم رنگ لباس شما باشه، یک معلم داشته باشیم به نام Anders Hejlsberg، با هم خیلی هم دوست باشیم و خیلی چیزای مشابه داشته باشیم اما این معناش این نیست که اگر لباس من آبیه و لباس شما هم آبیه پس من لباس شما رو پوشیدم .روشن میگم؟

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

    1. بیسیک دات نت برای برنامه های کوچک هست. (small appliaction)
    2. سی شارپ برای برنامه های Enterprise application development هست.
    پس: خودتون نتیجه بگیرید.


    1. There are large VB projects that are unusable in VB.Net due to the size of the project.
    2. If your solution is likely to include a large number of classes, C#‎ is highly recommended.
    تحت عنوان
    No second class languages
    آورده شده اند
    و این مطالب:

    Visual Basic .NET culture :

    VB historically was a RAD tool, as well as a tool that was usable by untrained developers, or management. As a result of this wider user base, VB allowed for many shortcuts and ease of use features. These features allowed for the uninitiated to create code, but also contributed to maintenance and debugging issues. Examples of the shortcuts allowed in VB
    --- Optional declaration of variables
    --- Optional Weak Typing using late binding
    --- Optional Parameters

    که البته Optional Parameters رو به کمک دات نت، میشه واسه سی شارپ شبیه سازی کرد.

    و همچنین:

    C#‎ culture :

    C#‎ developers tend to be prior C/C++‎ developers, or Java developers. C#‎ is syntactically very similar to C and Java, the IDEs and command line tools work very similarly, and the culture is the same. Also, C#‎ inherited quite a bit of its style and culture from the Delphi/Object Pascal programming language.
    در مورد فرهنگ دارن صحبت می کنن و فرهنگ استفاده ربطی به قدرت و قص علی هذا نداره
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  16. #96
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727
    titbasoft عزیز شما به چه نتیجه ای میخوای برسی ؟؟؟

  17. #97
    خیلی ساده:
    اصولا چنین مقایسه هایی کار درستی نیست. برای هر مقایسه ای باید معیار در نظر گرفت. هر ابزاری برای رسیدن به هدفی خاص طراحی شده و برای رسیدن به اون هدف هم توسعه داده میشه. زیاد لازم نیست در مورد بحث کنیم چون در این مورد زیاد تاحالا بحث شده و البته بحث بی فایده ای هم هست. این وظیفه طراح هر سیستمی که با توجه به عوامل موثر در پروژه خودش و case study های مختلف، در مورد استفاده از ابزارها تصمیم گیری کنه.
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  18. #98
    سلام
    من که نفهمیدم ماجرا چه جوریاست؟
    تویه جا بعد از کلی بحث آخرش به این نتیجه می رسند که vb.net و C#‎ فقط تو سینتک با هم فرق می کنند (البته با کمی تفاوت های قابل گذشت)
    بعد تو یه جا دیگه بحث به اینجا می رسه که vb.net برا برنامه های کوچیکه!!!!!!!!!!
    1. بیسیک دات نت برای برنامه های کوچک هست. (small appliaction)
    2. سی شارپ برای برنامه های Enterprise application development هست.
    پس: خودتون نتیجه بگیرید.

    آقا تکلیف من و که می خوام یکی از این دو تا رو شروع کنم رو روشن کنید؟؟؟؟؟؟

  19. #99
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    نقل قول نوشته شده توسط titbasoft
    جمله اول داره در مورد قدرت صحبت می کنه. بعد جمله دوم شروع میشه که میگه #C بی همتاست.
    از نظر من، این دو جمله معانی جدای از هم داشته و منظور از بی همتائی، همون سرعت تولید و مدیریت کدها بوده که البته میتونه بی همتا نباشه ولی جزء بهترین هاست.

    در رابطه با جمله اول :
    لحاظ قدرت با سی++ رقابت میکنه
    در پست شماره 10 از همین تاپیک، در مورد تفاوت سرعت اجرای سی++ و سی# توضیح دادم که همواره سرعت سی# (Managed) پائین تر نیست، پس میتونه تا حدودی (نه کاملا) با سی++ (Unmanaged) برابری کنه.
    البته بازهم سوء تفاهم نشه، در این حالت، من سرعت رو جزئی از قدرت (توانائی) یک زبان به حساب میآرم و منظورم قدرت در نوشتن برنامه های سیستمی نیست ! اگر منظور اون باشه، سی# حرفی برای گفتن نداره (فکر کنم اینجا حرف شما رو تائید کرده باشم) و در ضمن نمیدونم که بیسیک دات نت چه سرعتی داره و تا حالا هم درباره سرعت بیسیک، حرف نزدم.
    بد نیست بگم که به غیر از نرم افزارهای سیستمی، ابزارهائی مثل Multimedia SDK برای سی++ در نظر گرفته شدن (گفتم خودم بگم که بعدا ازم ایراد نگیرید!)

    در رابطه با جمله دوم :
    از لحاظ سرعت تولید نرم افزار و مدیریت کد همتا نداره
    و اگر اون پست قبلیم که توش یک لینک داده بودم رو نگاه کنید، برای مدیریت کدها نوشته، اگر برنامه ای مینویسیم که دارای تعداد زیادی کلاس هست، بهتره که از سی# استفاده بشه (تا بیسیک) چون:
    If your solution is likely to include a large number of classes, C#‎ is highly recommended
    در ضمن سی++ پیچیدگیها و ظرافتهای خاص خودش رو داره و طبعا برای ایجاد یک application با سی++، چزئیات بیشتری رو پیاده سازی نمود. (مثلا در سی++ باید یکبار تابع رو اعلان کنید و بعد باید تابع رو پیاده سازی کنید)

    تحت عنوان No second class languages آورده شده اند
    من که مخالفتی ندارم :) قدرت بیسیک رو کار ندارم :) سنتکس اش هست که شاید باعث شده که بیشتر به درد small applications بخوره، در حالیکه میشه باهاش برنامه های بزرگتر هم نوشت!

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

    شباهت مفهومی و سینتکسی به معنای این نیست که #C شی گراییش رو از جاوا یا ... گرفته.
    به نظرم اینجا سوء تفاهمی شده (به احتمال زیاد بدجوری منظور خودم رو عنوان کردم)
    دقیقا منظور من از شباهت، شباهت Syntax و نحوه برخورد ظاهر با اشیاء از لحاظ ساختار دستوری و ... بود، که در نوشته زیر هم تائید شده و منظورم نحوه برخورد ساختار زبان برنامه نویسی سی# با اشیاء (نه از لحاظ فنی)، داده ها و ... که بعضی هاش رو از جاوا گرفته و بعضی هاش هم از سی و دلفی (منظورم این نیست که تکنولوژی اش رو گرفته، شکل ساختاری زبان برنامه نویسی یا محیط IDE (که البته محیط IDE ربطی به زبان نداره، گفتم خودم این رو بگم تا بعدا ازم ایراد گرفته نشه!) و ...)
    C#‎ has taken concepts from other languages, notably Java and Delphi, combined with a syntax similar to C and Java.
    معنی: سی#، طرز فکر خودش رو از دیگر زبانها گرفته است، بطور برجسته از جاوا و دلفی، ترکیب شده با یک سنتکس شبیه به سی و جاوا.
    و برای همچنین میگه:
    C#‎ is syntactically very similar to C and Java, the IDEs and command line tools work very similarly, and the culture is the same.
    Also, C#‎ inherited quite a bit of its style and culture from the Delphi/Object Pascal programming language

  20. #100
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    آقا تکلیف من و که می خوام یکی از این دو تا رو شروع کنم رو روشن کنید؟؟؟؟؟؟
    این دوتا فرقی ندارن، یکیش رو یاد بگیری، اون یکی هم راحت میشه یاد گرفت (چون در واقع در این زبانها، شما با دات نت کار میکنید)
    از اینکه نوشته شده بیسیک دات نت برای small application هست، نمیدونم شاید من اشتباه فهمیدم! ولی فکر کنم بخاطر این گفته که به احتمال زیاد، برنامه نویس در برنامه های بزرگتر، سخت تر میتونه پروژه اش رو کنترل کنه و فکر نمیکنم بخاطر قدرتش باشه.

  21. #101
    The major difference being that VB doesn't force the users to code in a Object Oriented way
    این جمله عبارت درستی نیست، بر اساس یک فرض غلط بیان شده و اون هم اینه که میشه با VB.Net غیر OO کد نوشت. تنها چیزی که میشه گفت اینه که #C کاربر خودش رو مجبور میکنه که تمام جزئیات رو به صورت خیلی Implicit ذکر کنه، که باز این هم با این جمله ای که ذکر شده خیلی تفاوت داره.
    پس نتیجه ای هم که از این جمله گرفته شده یعنی:
    Bottomline is that the VB.Net is for small application and C#‎ is for Enterprise application development.
    هم بر نتیجه گیری از یک استدلال اشتباهه

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

    پیشنهاد دوم: اگر پس زمینه کار با C ، جاوا یا دلفی دارید با #C و اگر پس زمینه VB دارید با VB.Net شروع کنید. اگر هم اصلا هیچ پس زمینه ای ندارید و کاملا بلنک بلنک هستید با #C شروع کنید چون یک تصور غلط حاکم بر اون وجود داره که از VB.Net بهتره
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  22. #102
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    نقل قول نوشته شده توسط titbasoft مشاهده تاپیک
    اصولا چنین مقایسه هایی کار درستی نیست. برای هر مقایسه ای باید معیار در نظر گرفت. هر ابزاری برای رسیدن به هدفی خاص طراحی شده و برای رسیدن به اون هدف هم توسعه داده میشه. زیاد لازم نیست در مورد بحث کنیم چون در این مورد زیاد تاحالا بحث شده و البته بحث بی فایده ای هم هست. این وظیفه طراح هر سیستمی که با توجه به عوامل موثر در پروژه خودش و case study های مختلف، در مورد استفاده از ابزارها تصمیم گیری کنه.
    من هم موافقم که این بحث ها ممکنه نتیجه جالبی نداشته باشه اما بهرحال بد نیست گفته بشه، مثلا شاید کسی هم بیسیک بلد باشه هم سی#، اونوقت با توجه به شرایط (بر اساس گفته شما) یکیش رو انتخاب میکنه و در آخر نتایج بحث این خواهد شد که هر زبان برای چه شرایطی خوبه.

  23. #103
    @PC2st.ir: مرسی از پاسخ هاتون. به نظر من بحث روشنه و زیادی پیچیدش نکنیم بهتره

    مجددا از همه دوستان خواهش می کنم به این قسمت توجه کنند:
    سعی کنید خودتون رو توی چهارچوب یک تکنولژی خاص قرار ندید. سعی کنید کمی به جای تکنولژی، Science یاد بگیرید. روشن تر اگر بخوام بگم اینه که سعی کنید برای یاد گرفتن ساختن برنامه بفهمید وقتی یک کد رو می نویسید داره چه اتفاقی میافته، تا اینکه یک کد رو بنوسید که یک اتفاق بیافته. در اون حالت اگر من هم الان بشینم یک زبان جدید برای دات نت به نام #H بوجود بیارم، شما در عرض چند ساعت می تونید باهاش کد بنویسید.
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  24. #104
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    چشم :)
    کاملا با شما موافقم.
    چون بحث زیاد منحرف شد ( خودم زیادی منحرفش کردم، ببخشید... )

  25. #105
    خیلی ممنون تقریبا جوابم رو گرفتم
    اما در مورد بیسیک که دوستی گفتند

    سخت تر میتونه پروژه اش رو کنترل کنه
    منظورش رو نفهمیدم؟



  26. #106
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    سخت تر میتونه پروژه اش رو کنترل کنه
    این حدسی بود که زدم به خاطر همون کلمه small appliacation.....
    و مهم نیست، چون به قول جناب titbasoft، مسئله انتخاب زبان (بین سی# و بیسیک.نت) در دات نت تا این حد بزرگ نیست که جلوه کنه.
    اصل همون تفکرات برنامه نویسیه، نه زبان برنامه نوسی.

  27. #107
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    من اطینان میدهم که مطلقاَ تفاوتی ندارند و مباحثی که دوستان مطرح میکنند صرفاَ ناشی از عدم اطلاع ایشان از تواناعی های زبان دیگر است، اساتید #C خیلی میبخشند! ولی چون به زبان VB.Net مسلط نیستند و نمیتوانند مثلاَ فلان کار را در VB.Net به راحتی #C انجام دهند، سریع مشکل را به ذات VB.Net وصل میکنند و لحظه ای تعمل نمیکنند که ما #C کار هستیم نه VB کار، پس طبیعی است که با کار در محیط VB.Net دچار مشکل میشویم.

    به دوستانی هم که میخواهند از بین VB.Net و #C یکی را انتخاب کنند، اول میگویم که انتخاب بسیار خوبی کرده اند و با هر یک از این دو زبان به راحتی میتواندد پروژه های مختلف را بنویسند و در انتخاب باید صرفاَ به سینتکس ها توجه کنند و از هر کدام بیشتر خوششان آمد همان را انتخاب کنند.

  28. #108
    نقل قول نوشته شده توسط __H2__ مشاهده تاپیک
    سلام
    من اطینان میدهم که مطلقاَ تفاوتی ندارند و مباحثی که دوستان مطرح میکنند صرفاَ ناشی از عدم اطلاع ایشان از تواناعی های زبان دیگر است، اساتید #C خیلی میبخشند! ولی چون به زبان VB.Net مسلط نیستند و نمیتوانند مثلاَ فلان کار را در VB.Net به راحتی #C انجام دهند، سریع مشکل را به ذات VB.Net وصل میکنند و لحظه ای تعمل نمیکنند که ما #C کار هستیم نه VB کار، پس طبیعی است که با کار در محیط VB.Net دچار مشکل میشویم.

    به دوستانی هم که میخواهند از بین VB.Net و #C یکی را انتخاب کنند، اول میگویم که انتخاب بسیار خوبی کرده اند و با هر یک از این دو زبان به راحتی میتواندد پروژه های مختلف را بنویسند و در انتخاب باید صرفاَ به سینتکس ها توجه کنند و از هر کدام بیشتر خوششان آمد همان را انتخاب کنند.
    من هم اطمینان میدهم مطلقا این حرف شما اشتباه است و فقط در مورد برنامه نویسان مبتدی صحت داره، شما اگر به هر دو زبان مسط باشید باید بدانید هر کدام این زبان ها ابزار هایی دارند که در دیگری یافت نمی شود ،( منظورم اصلا دات نت فریمورک نیست) ، در نسخه 2003 تفاوت این دو زیاد بود ولی در 2005 این تفاوت بسیار کم شده ، ولی به صفر نرسیده است!
    Iterators , Operator overloading ,متد های بی نام و .....
    به عنوان یک مثال خیلی پیش پا افتاده از keyword های این دو زبان: کلمه using قبلا(2003) در VB وجود نداشت! یا مثلا with که در VB خیلی کد نویسی رو راحت میکنه در #C کجاست؟
    یا مثلا ممکنه برای کاری در #C یک خط کد کافی باشه ولی در VB چند خط و برعکس!
    مطالب خیلی پیشرفته تری وجود داره که برید مطالعه کنید تا متوجه بشید.

    مصمئنا و بدون شک ماهیت هر کدام از این دو زبان باعث می شود برخی از کارها در یکی از این دو راحت تر انجام شود.


    پست شماره 27 titbasoft دوباره بخونید.

  29. #109
    سلام
    PC2st.ir تو یکی از پستاشون یه متنی رو گذاشته بودند من اون رو گرفتم و خوندم اما منظور از

    No second class languages
    رو نفهمیدم

    میشه توضیح بدین منظور از
    No second class languages چیه؟

  30. #110
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    نقل قول نوشته شده توسط arsp_2004
    مصمئنا و بدون شک ماهیت هر کدام از این دو زبان باعث می شود برخی از کارها در یکی از این دو راحت تر انجام شود.
    منم موافقم :)

    نقل قول نوشته شده توسط sgb110
    میشه توضیح بدین منظور از No second class languages چیه؟
    یعنی بدون زبان درجه 2...
    That is, all of the various Microsoft languages should have the same level of access to all OS features, and all expose the same level of power and usability.
    بطور خلاصه یعنی: تمام زبانهای مایکروسافت مشابه (یکسان) هستند از لحاظ سطح دسترسی به سیستم عامل و قدرت و قابلیت استفاده. (فکر کنم منظورش در حیطه Managed بوده)

    همینطور که به مشخصات جدید سی# 3 و بیسیک.نت 9 دفت کنید، خواهید دید امکانات مشابهی (یکسانی) رو به نسخه جدیدشون اضافه کردند.

  31. #111
    ببینید گذشته از تفاوت هایی که دوستان مطرح کردند؛

    در VB.NET هنوز امکان برنامه نویسی مانند گذشته (VB6) وجود داره.
    یعنی هنوز می تونی خیلی کثیف کد نویسی کنی و به نتیجه هم برسی! از جمله مهمترین اینها Late binding است.

    نمونه دیگری که در این باره می تونم مطرح کنم نحوه به کار گیری فرم ها است.
    برای مثال می تونید از سایر فرم ها های پروژه تان بدون تعریف نمونه استفاده کنید.


    Private Sub ّForm1_Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Form2.Show()
    Form2.Text = "Hello from form1"
    End Sub


    در ظاهر شاید این یک ویژگی به نظر برسه ولی سمی مهلک است که قالب شربت به برنامه نویسان تازه کار خورانده میشود. ( البته این مورد از dotNET 2 فراهم شده)


    ساختار زبان C#‎ به گونه ای است که برنامه نویس کمتر می تواند کثیف کد نویسی کند و این امکان برای او کمتر فراهم شده است.


    در مجموع بهترین زبان برای برنامه نویسی دات نت #C است.
    ولی اگر امکانات #C برای کار با .NETشما را راضی نمی کند بروید به دنبال C++‎.NET

  32. #112
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727
    دوستان اگه قرار بود سی شارپ و vb با هم یکی باشند، پس چه نیازی بود که مایکروسافت به فکر ایجاد زبانی تازه بیفته ؟ خوب همون C++‎ رو توسعه میداد، واسه چی سی شارپ رو تولید کرد ؟

    الان باز یکی گیر میده که کی گفته سی شارپ و vb با هم یکی هستند، منظورم از لحاظ طرز کار و performence برنامه ها و کلا از لحاظ امکانات برنامه نویسی و تکنولوژی است.

  33. #113
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    نقل قول نوشته شده توسط arsp_2004 مشاهده تاپیک
    من هم اطمینان میدهم مطلقا این حرف شما اشتباه است و فقط در مورد برنامه نویسان مبتدی صحت داره، شما اگر به هر دو زبان مسط باشید باید بدانید هر کدام این زبان ها ابزار هایی دارند که در دیگری یافت نمی شود ،( منظورم اصلا دات نت فریمورک نیست) ، در نسخه 2003 تفاوت این دو زیاد بود ولی در 2005 این تفاوت بسیار کم شده ، ولی به صفر نرسیده است!
    Iterators , Operator overloading ,متد های بی نام و .....
    به عنوان یک مثال خیلی پیش پا افتاده از keyword های این دو زبان: کلمه using قبلا(2003) در VB وجود نداشت! یا مثلا with که در VB خیلی کد نویسی رو راحت میکنه در #C کجاست؟
    یا مثلا ممکنه برای کاری در #C یک خط کد کافی باشه ولی در VB چند خط و برعکس!
    مطالب خیلی پیشرفته تری وجود داره که برید مطالعه کنید تا متوجه بشید.

    مصمئنا و بدون شک ماهیت هر کدام از این دو زبان باعث می شود برخی از کارها در یکی از این دو راحت تر انجام شود.


    پست شماره 27 titbasoft دوباره بخونید.
    سلام
    دوست عزیز معیار من همیشه آخرین ورژن است.
    1- Operator overloading کاملا و بدون شک در VB.Net پشتیبانی میشه
    2- در مورد متدهای بی نام هم لطفاَ کمی توضیح دهید.
    3- Iterators هم که با یک Collection در VB قابل حل است.
    3- در مورد دستور زیبا With هم حق با شماست ولی نباید تصور کرد که این دستور کار شاقی انجچام میدهد! کافی است یک متغییر در #C تعریف کنید و مقدار را در آن بریزید و هرکجا نیاز داشتید از آن استفاده کنید، (دقیقاَ With هم در باطن همین کار را میکند) منظورم انکار تفاوتها نیست ولی چیزهایی که به این راحتی حل میشود تفاوت به حساب نمی آید.


    باز هم میگم مشکل سر عدم اطلاع از کارآی ها است.
    بدون شک من که بیشتر وقتم را با Basic صرف نکردم نباید انتضار داشته باشم تمام قابلیت های #C را بشناسم و به همان سرعت و قدرت که در VB کد نویسی میکنم در #C کد نویسی کنم و منطقی نیست تا کاری را نتوانستم در #C انجام دهم بگویم #C نمیتواند فلان کار را انجام دهد! باید بگویم من تجربه کافی کار با #C را ندارم و نتوانستم فلان کار را به راحتی انجام دهم.

  34. #114
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    2- در مورد متدهای بی نام هم لطفاَ کمی توضیح دهید.
    متدهائی که بدون اینکه نامی داشته باشند، در یک شئ delegate قرار میگیرند.

    Iterators هم که با یک Collection در VB قابل حل است.
    ببخشید، منظورتون رو نفهمیدم که چطور میشه با Collection مشکل رو حل کرد.

    کافی است یک متغییر در #C تعریف کنید و مقدار را در آن بریزید و هرکجا نیاز داشتید از آن استفاده کنید، (دقیقاَ With هم در باطن همین کار را میکند)
    فکر نمیکنم که with چنین کاری انجام بده، بلکه در هنگام کامپایل، فضای نام مربوطه (یا کلاس مربوطه) رو اضافه میکنه (تا آدرس دهی بشه)، شاید هم شما درست بگی.

    بدون شک من که بیشتر وقتم را با Basic صرف نکردم نباید انتضار داشته باشم تمام قابلیت های #C را بشناسم و به همان سرعت و قدرت که در VB کد نویسی میکنم در #C کد نویسی کنم و منطقی نیست تا کاری را نتوانستم در #C انجام دهم
    بگویم #C نمیتواند فلان کار را انجام دهد! باید بگویم من تجربه کافی کار با #C را ندارم و نتوانستم فلان کار را به راحتی انجام دهم.
    دوست عزیز، منظور این نیست که بیسیک.نت توانائی مقابله با سی# رو نداره. منظور سنتکس بیسیک.نت هست، علاوه بر موارد قبلی که گفته شد، با فرض اینکه یک برنامه نویس تازه کار، بخواد در محیط بیسیک.نت شروع به کد نویسی کنه، ممکنه که خیلی از مفاهیم برنامه نویسی رو نفهمیده باشه، مثلا به قول دوستمون:
    نقل قول نوشته شده توسط SalarSoft
    برای مثال می تونید از سایر فرم ها های پروژه تان بدون تعریف نمونه استفاده کنید.
    پس در واقع برنامه نویسی میکنه و از جزئیاتش چیزی نمیفهمه و میاد در سی# مینویسه:

    form1.Show();

    کامپایل ارور میده و میگه که کلاس نمونه سازی نشده! (اصلا چنین شئ ائی وجود نداره !)
    همونطور که من در سی# عملیات باکسینگ و اینباکسینگ رو بدون نوشتن کد اضافی ( و تنها بصورت casting ) انجام میدم، بیام در سی++ چنین کاری بکنم با error روبرو میشم.

    به قول قدیمیها: نه به اون شوری شور (سی++) نه به این بی نمکی (بیسیک.نت) ... البته شوخی کردم، اجهاف نشه... بیسیک.نت خیلی بی نمک نیست، کمی از سی# بی نمک تر است چون در نهایت کد نهائی هر جفتشون IL میباشد. ایراد نگیرید، میدونم، شوری و بی نمکی رو شرایط موجود تعیین میکنند. مثلا اگر هدف نوشتن برنامه های خفن (!) باشه، شوری شور میشه اسمبلی و بی نمک میشه سی++ ( همه این شوری ها و بی نمکی ها از لحاظ سنتکس بود که گفتم )

    همچنین در تکمیل گفته هام بگم که بعدا معترض نباشید:
    1. با بیسیک.نت میشه برنامه های خوب و کاملی نوشت و نمیشه مخالف این بود.
    2. نوشتن برنامه ها با بیسیک.نت هیچ ایرادی نداره، چون در نهایت به کد IL ترجمه میشه.
    3. و غیره ( بقیه اش رو خودتون بهتر میدونید ) ...

    از لحاظ محیط دات نت و کد تولید شده IL، زیاد فرقی نمیکنه که برنامت رو با بیسیک.نت بنویسی یا سی#، ولی باید مد نظر داشت که برنامه نویس به چه روشی تفکراتش رو پیاده میکنه ( هر زبان یک روش برای پیاده سازی افکار برنامه نویسش داره ) و این روش چه تاثیری بر عملکرد برنامه نویس در طراحی برنامه، میگذاره. این هم قبول دارم که روش پیاده سازی افکار برنامه نویس، در سی# و بیسیک.نت به اندازه تفاوت سی و پاسکال نیست.

  35. #115
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام مجدد!
    باز هم ان متدهای بی نام را نگرفتم! با ارز شرمندگی
    اگر منظورتان تعریف یک Delegate و استفاده از آن است، در VB هم میتوان اینکار را کرد.

    Public Delegate Sub AAA(ByVal BBB As Integer)


    و اما در مورد Iterators

    Public Class AAA
    Implements System.Collections.IEnumerable

    Private Class BBB
    Implements System.Collections.IEnumerator

    'For Access to members of AAA
    Private ReadOnly _Owner As AAA
    Private _Counter As Integer = 0

    Public Sub New(ByVal Owner As AAA)
    MyBase.New()
    Me._Owner = Owner
    EndSub

    Public ReadOnly Property Current() As Object Implements System.Collections.IEnumerator.Current
    Get
    ReturnMe._Counter
    End Get
    End Property

    Public Function MoveNext() As Boolean Implements System.Collections.IEnumerator.MoveNext
    Me._Counter += 1
    Return (Me._Counter > 10)
    End Function

    Public Sub Reset() Implements System.Collections.IEnumerator.Reset
    Me._Counter = 0
    End Sub

    End Class

    Public Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
    Return New BBB(Me)
    End Function

    End Class

    به این کد دقت کنید، در دستور ForeEach قابل استفاده است و به ترتیب عددی تا رسیدن به 10 بر میگرداند (مسخره است! ولی مثال خوبی است) اگر هم باز مشکل دارید کد #C بدهید تبدیلش به VB.Net با من (نه اینکه یک کتاب کد #C بدهید! حداکثر چند خط.)

    بحث نمایش فرم ها هم و آن کد بی ریخت را هم قبول دارم، (به قول یکی از دوستان کد کثیف!) ولی این کد هم صرفاَ برای Upgrade راحت از VB6 است تا برنامه نویسان قدیمی کمتر دچار مشکل شوند و رقبت بیشتری به VB.Net نشان دهند و مایکروسافت از شر VB6 کارها خلاص شود. (مثل همان کدهای غیر امن در #C)

    با اجازه دوستان برخی از امکانات کمتر دانسته VB را به اختصار می آورم!!!!
    تعریف مجدد همه اپراتورها

    Public Shared Operator +(ByVal a As TypeName, ByVal b As TypeName) As TypeName

    (حتی اپراتورهای تبدیل به/از کلاسس مورد نظر)

    پشتیباین کامل از تمام جنبه های وراثت از جمله تعریف مجدد متدها-اجازه دادن و یا جلوگیری از تعریف مجدد متدها (بستن وراثت) و نیز خود کلاسها، تعریف اجباری و غیر وراثتی متدها با نام مشابه در کلاسس پایه و...

    Custom کردن رویدادها
    تعریف متغییر در بدنه شروع حلقه For i As Integer = 0 To 10

    تبدیلات واقعی کلاسسها و تبدیلات قالب ریزی (که هزینه زمانی کمتری دارند)

    C#‎
    (int)A
    VB.Net
    DirectCast(A, Integer)


    پشتیبانی کامل از نوع های generic یا همان template در ++C
    مدیریت هندلینگ runtime رویدادها با AddHandler و RemoveHandler (=+ , =- در #C)


    فعلاَ بداهه چیز خاصی که گمان کنم بعضی از دوستان مطلع نیستند یادم نمی آید.
    با تشکر از دوستان
    فعلاَ بای ...

  36. #116
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    اگر منظورتان تعریف یک Delegate و استفاده از آن است، در VB هم میتوان اینکار را کرد.
    خیر، منظور delegate نیست. منظور متد بی نامی است که در delegate قرار گرفته.

    و اما در مورد Iterators
    ببخشید که اینطور میگم، ولی این کلاسهائی که شما نوشتی، شباهتی به Iterators ها در سی# نداره ! شما فقط توسط متد MoveNext به مقدار _Counter اضافه میکنید و در متد GetEnumerator فقط یک شئ نمونه سازی شده از کلاس BBB برگشت داده میشه ! فکر کنم کدهاتون رو اشتباه نوشته باشید ( باور کنید من هنوز نمیدونم که این قابلیت در بیسیک.نت وجود داره یا نه! ).

    راستی در مورد گفته قبلی خودم یعنی:
    از لحاظ محیط دات نت و کد تولید شده IL، زیاد فرقی نمیکنه که برنامت رو با بیسیک.نت بنویسی یا سی#
    این رو اضافه کنم که کد نهائی (IL) تولید شده برای سی# کمتر است !مثلا برنامه کامپایل شده با سی# 20 کیلو بایت و همون برنامه با بیسیک.نت 28 کیلو بایت شده ! یا برای سی# شده 28 و برای بیسیک.نت شده 40 ! ولی بازهم همه میدونیم که هردو از دات نت استفاده میکنن و کد کامپایل شده هر دوشون هم به IL تبدیل میشه ! پس دلیل این افزایش حجم، میتونه از خلاصه کاریهای بیسیک.نت باشه (نمیدونم این رو از خودم گفتم، شاید شما دلیل دیگه ای داشته باشید).

  37. #117
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام علیکم برادران و آبجیان ارجمند!!!
    (ببخشید کمی زیاد کمی زیاد است، ولی لطفاَ با دقت بخوانید، برای با خسته نشدن حضار جسارت کرده و متن را از طنزهای لطیفی وراثت گرفته ام!)

    خوبید یا بهترید؟! دشمنی تان با VB تمام نشده؟! باشه ایرادی نداره! ما سعی میکنیم یک کمیسون دات نتی، وراثتی، صفر و یکی، جهت آشتی ملی و گفتمان دات نتی (یک چیزی تو مایه های گفتگوی تمدن ها!) تشکیل بدیم!!!!!!!!!! یا حداقل به آن ادامه بدیم!

    ادامه گفتمان دات نتی!
    قابلیت Iterators چیزی بجز پشتیبانی راحت از رابطهای IEnumerator و IEnumerable نیست (و البته دوقولوهای Generic شان).
    قابلیت Iterators در اصل یک نوع پارتی بازی #C برای پیاده سازی دو رابط فوق است.
    باز هم دوستان دچار سوء تفاهم نشوند، نمیخواهم چیزی از ارزش این قابلیت کم کنم ولی آیا برای پیاده سازی هر واسطی باید دستور خاصی وجود داشته باشد؟ یا شاید #C کارها برای پیاده سازی هر واسطی دستور هلو وار و جدید و مخصوصی میخواهند؟(معرفت بگذارید به من پیرمرد کمتر ناسزا بگید!) آیا #C کارها که دستور Mid و CInt، CLng، CDbl، With، و... را ندارد لنگ مانده اند؟ یا شاید VB کارها که دستور yield را ندارند لنگ مانده اند؟!
    پشتیبانی از دو رابط فوق را میتوان بدون پارتی بازی برای آنها و صرفاَ با قوانین اصلی وراثت و پلیمورفیزم مثل دیگر رابط ها انجام داد.

    برای درک کامل مطلب به کدهای زیر که شامل پیاده سازی رابطهای فوق در #C و VB و استفاده از آنها هستند دقت کنید.
    بدیهی است که به علت پارتی بازی #C از دو رابط فوق کد تعریف به شدت کاهش یافته (3+1 متد تعریف اجباری وجود دارد که باید تعریف شوند) ولی کد استفاده کاملاً یکسان است و دارای یک مقدار کدنویسی ثابت هستند، این افزایش کد هم در هیچ یک از رابطهای دیگر وجود دیده نمیشود.
    البته راه حل دیگری هم در VB وجود دارد، که بسیار کم کد است و به درستی و سرعت کار میکند ولی از نظر زیرساختی نمیتوان آن را معادل Iterators به حساب آورد ولی همان کار را انجام میدهد

    //C#‎ declare
    --------------------------------------------------
    public class SampleClass
    {
    public static System.Collections.IEnumerable SampleIterator(int maxvalue)
    {
    for (int iCounter = 0; iCounter <= maxvalue; iCounter++)
    {
    yield return iCounter;
    }
    }
    }

    //C#‎ using
    --------------------------------------------------
    foreach (int i in SampleClass.SampleIterator(7))
    {
    //Any code.
    }



    'VB.Net declare
    --------------------------------------------------
    Public Class SampleClass

    Private Class IEnumerableClass
    Implements System.Collections.IEnumerator
    Implements System.Collections.IEnumerable

    Private iCounter As Integer = -1
    Private ReadOnly maxvalue As Integer

    Public Sub New(ByVal maxvalue As Integer)
    MyBase.New()
    Me.maxvalue = maxvalue
    End Sub

    Private ReadOnly Property Current() As Object Implements System.Collections.IEnumerator.Current
    Get
    Return Me.iCounter
    End Get
    End Property

    Private Function MoveNext() As Boolean Implements System.Collections.IEnumerator.MoveNext
    Me.iCounter += 1
    Return (Me.iCounter <= Me.maxvalue)
    End Function

    Private Sub Reset() Implements System.Collections.IEnumerator.Reset
    Me.iCounter = -1
    End Sub

    Private Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
    Return Me
    End Function

    End Class

    Public Shared Function SampleIterator(ByVal maxvalue As Integer) As System.Collections.IEnumerable
    Return New IEnumerableClass(maxvalue)
    End Function

    End Class


    //VB.Net using
    --------------------------------------------------
    For Each i As Integer In SampleClass.SampleIterator(7)
    'Any Code.
    Next


    راه حل با کد کمتر که همان کار را میکند ولی معادل فنی و زیر ساختی Iterators نیست.


    'VB.Net declare
    --------------------------------------------------
    Public Class SampleClass

    Public Shared Function SampleIterator(ByVal maxvalue As Integer) As System.Collections.IEnumerable
    Dim ret As New System.Collections.ArrayList
    For iCounter As Integer = 0 To maxvalue
    ret.Add(iCounter)
    Next
    Return ret
    End Function

    End Class

    //VB.Net using
    --------------------------------------------------
    For Each i As Integer In SampleClass.SampleIterator(7)
    'Any Code.
    Next


    راستی بحث به جای جالبی کشید! خیلی جالب! از دوستانت عزیز بابت پافشاری و یادآوری آن فراوان فراوان تشکر میکنم!؟!؟!؟!؟ (خاصه دوست عزیز PC2st.ir و استاد arsp_2004 ! با اجازه دوستان و خارج از شوخی، من واقعاً ایشان را به عنوان مرجع ناطق #C قبول دارم.)

    همان طور که Form1.Show کد نویسی را کم میکند، yield هم کد نویسی را کم میکند و همان طور که دستور کثیف Form1.Show یک VB کار تازه کار را از فهم عمیق و درک کامل اعمالی که در پسضمینه انجام میشود دور میکند، دستور غیر کثیف yield هم همین بلا را بر سر #C کارهای غیر تمام حرفه ای در می آورد! میدانید چرا؟ مطمئناً و بدن شک بیش از 85 درصدر #C کارهای همینجا نمیدانند و yield را معجزه #C و چیز عجیب و خارق العاده ای تصور میکنند ولی در زیر ساخت همان کاری انجام میشود که من در نمونه کد اول با VB.Net انجام دادم (البته با الگوریتمی متفاوت)، و یک کلاسس کمکی توسط #C ساخته میشود که دو رابط فوق را تعریف میکند.
    دوستانی هم که میدانند، حتماً مثل من هنوز کجکاو بوده اند و از خودشان پرسیده اند که چگونه #C مقید به OOP در یک تابع یک رابط را برمیگرداند که باید در یک نوع ساختار تعریف شده باشد در حالی که خروجی return تابع اصلاً ربطی به خروجی نهایی ندارد و مثلاَ میتواند یک Integer باشد.

    پس این Form1.Show ما به yield شما در! البته مجبورم مجدداَ به گفته همان کاربر قبلی صحه بگذارم و اعتراف کنم که Form1.Show کثیف تر از yield است. ولی بحرحال این به آن در!

    راستی دوستان شفیق #C کار به اون قابلیت های کوچک ولی مفید که گفتم بعضی، بعضی، بعضی #C کارها فکر میکنند فقط در زبان آنها وجود دارد، دستور Continue را هم برای استفاده در حلقه ها اضافه کنند.

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

  38. #118
    @P16 - HDV212:

    چیزایی که من گفتم در مورد دلیل به وجود آمدن سی شارپ و همچنین سربار حافظه ای که در vb.net براثر Garbrage Collection رخ میده و بسیاری چیزای دیگه مطرح شده.
    خیلی جالبه، شما می فرمایید وقتی کدی با VB.NET نوشته می شه، اجرای اون باعث سرباری به نام GC میشه در صورتی که در C#‎ این سربار وجود نداره (یا هر مورد مشابه دیگه ای)؟

    بهتره به یه نکته توجه کنید. مواردی مثل GC زمان اجرای یه برنامه که تحت ران تایم CLR اجرا می شن شروع به کار می کنن. در اون شرایط هم کدی که به وسیله JIT برای اجرا آماده میشه، کد IL هست، نه کد VB و یا C#‎ و یا ...
    پس اگر GC بخواد که برای کدهای VB اجرا بشه و سرباری رو ایجاد کنه ولی برای کدهای C#‎ اجرا نشه، میشه در مورد نحوه کار اون به این صورت نتیجه گیری کرد که CLR هنگام اجرای یه کد IL ابتدا بررسی می کنه که زبان اولیه اون کد چی بوده (اولین کار غیر ممکن). اگر VB بوده GC رو برای مدیریت حافظه اجرا می کنه و سربار به وجود میاد. در صورتی که C#‎ بوده باشه ... (نمی دونم وقتی GC برای مدیریت حافظه برنامه های C#‎ اجرا نشه که سربار به وجود نیاد، پس شاید میشه گفت که برنامه هایی که با C#‎ نوشته می شن به مدیر حافظه نیازی ندارن!!! یا شاید شما سولوشن دیگه ای رو می خواهید ارائه بدید)

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

    من حدود یه سال پیش یه مقاله ای پیدا کردم در مورد performence برنامه های نوشته شده توسط vb و سی شارپ که برنامه های نوشته شده با سی شارپ performence بهتری در اجرا داشتند،البته اصل موضوع مربوط به مقایسه ی دو زبان بود، دارم میگردم پیداش کنم به محض اینکه پیداش کردم لینکشو برای اونایی که از حرفای من تعجب کردن میذارم، در ضمن به جای ایراد گرفتن از حرفای من که استدلال نداره، شما اسنادی رو که بر اساس اون میگید حرف من مستدل نیست بیارید، من هم دارم دنبال اسنادم میگردم
    ببینید، وقتی شما از بطن کار آگاه باشید، یعنی بودنید یه برنامه که در پلت فرم .NET اجرا میشه، صرفنظر از زبانی که با استفاده از اون طراحی شده، چه طور کار می کنه و چه تکنولوژی هایی به چه صورت برای عملکرد اون فعالیت می کنن، متوجه میشید که مطالبی مشابه اینکه پرفورمنس (در زمان اجرا) یه زبان نسبت به یه زبان دیگه بیشتره و یا ... (که در این تاپیک به مراتب عنوان شد) هیچ منطقی ندارن و کاملا بی معنی هستن.

    این برنامه ها همه به زبان IL تبدیل شده و بعد اجرا میشن. در زمان اجرا هم معلوم نیست که زبان اولیه VB بوده، C#‎ بوده و یا ... پس همه در زمان اجرا روند ثابت و معینی رو طی می کنن. پس اگر برای اجرای کدی که به زبان IL نوشته میشه، برای مثال مجبوره GC اجرا بشه و اجرای GC هم باعث به وجود آمدن اورهد میشه، این اورهد در همه برنامه های .NET وجود داره، چه وی بی، چه C#‎ چه کوبول و ...


    پس بحث برتری C#‎ به وی بی در زمان اجرا که منتفیه. در مورد سرعت طراحی و پیاده سازی هم در انتهای این پست توضیح داده شده.
    در پست 40 گفتن که

    کد نهائی (IL) تولید شده برای سی# کمتر است !مثلا برنامه کامپایل شده با سی# 20 کیلو بایت و همون برنامه با بیسیک.نت 28 کیلو بایت شده ! یا برای سی# شده 28 و برای بیسیک.نت شده 40 !
    خوب این مورد هم کلیت نداره،ممکنه توی زبان VB یه سری سینتکسها باعث یشن که کد IL بیشتری برای پیاده سازی اونها نیاز باشه، اما با فرض اینکه دو برنامه مشابه در دو زبان C#‎ و VB نوشته شدن (یعنی از فیچرهای خاص زبان که توی زبان دیگه معادل نداره، استفاده نشده باشه) و با دو کامپایلری که به یه اندازه کد رو اپتیمایز می کنن هم به IL تبدیل بشن، نباید کد تولید شده در حدی که ایشون می گن تفاوت داشته باشن. البته دقت کنید که من نمی گم کدهای IL تولید شده در این حالت دقیقا مشابه و یکسان هستن، چون اصلا این طور نیست (در این مورد قبلا توی سایت صحبت شده) اما کد IL تولیدی برای این دو زبان اونقدر متفاوت نیست که دو برنامه مشابه، یکی به 20 KB و دیگری به 40 KB کد تبدیل بشن.
    اگر چنین اتفاقی بیفته، مشخص میشه که مشکل از کامپایلر هست. خوب باز هم این مورد به زبان مربوط نمیشه، سما می تونی یه کامپایلری برای VB بنویسی که کد IL اپتیمایز تولید کنه و حجم مناسبی هم داشته باشه.
    قبلا مقالاتی به فارسی توی این سایت قرار داده بودم که مطالعه دقیق اونها می تونست به رفع خیلی از این ابهامات کمک کنه. به دوستان توصیه می کنم که برای اینکه مطلب برای خودشون روشن بشه، حتما نگاهی هم به اون مطالب داشته باشن.

    @P17 - PC2st.ir:


    1. بیسیک دات نت برای برنامه های کوچک هست. (small appliaction)
    2. سی شارپ برای برنامه های Enterprise application development هست.
    پس: خودتون نتیجه بگیرید.
    من نمی دونم منظور از این حرف چیه و در نگاه اول اونقدر غیر منطقی به نظر میرسه که لازم نیست برای رد اون دلیلی اورد. احتمالاً نوسنده مظور دیگه ای داشته که باید با بحث دقیقتر مشخص بشه.

    @P36 - HDV212:

    دوستان اگه قرار بود سی شارپ و vb با هم یکی باشند، پس چه نیازی بود که مایکروسافت به فکر ایجاد زبانی تازه بیفته ؟ خوب همون C++‎ رو توسعه میداد، واسه چی سی شارپ رو تولید کرد ؟
    خوب، از اول همین رو بپرس تا درست به یه جواب مستدل و منطقی برسیم.
    احتمالاً دوستانی که مقداری در رابطه با پلت فرم .NET مطالعه دارن، Jeffrey Richter نویسنده Applied .NET Framework (I & II) رو میشناسن. در صفحه اول از فصل اول کتاب ایشون (نگارش اول) نوشته شده:

    In fact, at runtime, the CLR has no idea which programming language the developer used for
    the source code. This means that you should choose whatever programming language
    allows you to express your intentions most easily. You can develop your code in any
    programming language you desire as long as the compiler you use to compile your code
    targets the CLR.
    So, if what I say is true, what is the advantage of using one programming language over
    another? Well, I think of compilers as syntax checkers and "correct code" analyzers. They
    examine your source code, ensure that whatever you've written makes some sense, and
    then output code that describes your intention. Different programming languages allow you
    to develop using different syntax. Don't underestimate the value of this choice. For
    mathematical or financial applications, expressing your intentions using APL syntax can
    save many days of development time when compared to expressing the same intention
    using Perl syntax, for example.
    فکر کنم جواب قانع کننده و مستدلی باشه.

  39. #119
    __H2__ عزیز ، اینجا کسی سر جنگ با VB نداره (من خودم با هر دو زبان کار میکنم مشکلی هم ندارم) ، اصولا یکی از دلایل وجودی فریمورک از میان بردن تفاوت های باطنی زبان هاست ، حالا تفاوت های ظاهری بسته به سلیقه برنامه نویس انتخاب می شوند.

    شاید یک برنامه نویسی با ساختار کد نویسی #C راحت باشه و یکی دیگه با VB ، شاید در یک زبان (به دلیل ساختارش ) کاری راحت تر انجام بشه و برعکس و این دلیل نقص یکی و برتری دیگری نیست ،

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

    در ضمن چرا فقط این دو تا رو مقایسه میکنید این همه زبان تحت دات نت:



    جسارتا اساتید عزیز جهت اطلاع از قابلیت های جدید این دو زبان در نسخه 2005 اینجا رو ببینید:
    حرف آخر این که : (البته زیاد جدی نگیرید)
    اگر می خواهید واقعا لذت برنامه نویسی رو درک کنید با ++Visual C (البته Unmanaged) برنامه بنویسید ، end کد نویسی ، end سینتکس ، end قدرت ، end سرعت و ..... !

  40. #120
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    اما کد IL تولیدی برای این دو زبان اونقدر متفاوت نیست که دو برنامه مشابه، یکی به 20 KB و دیگری به 40 KB کد تبدیل بشن.
    یک Windows Application در سی# و یکی دیگه در بیسیک.نت ایجاد کنید و در Form1 از هر کدومشون، هر کنترلی رو که دوست دارید، اضافه کنید (مثلا 5 الی 10 کنترل) بعدش (بدون حتی ایجاد تغییری در برنامه) هردوی اونها رو کامپایل کنید. سایز هر یک رو مشاهده کنید.

صفحه 3 از 6 اولاول 12345 ... آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •