سلام.. ..
من هم نظرم همين است كه در كل فرقي بين دو زبان vb.net و #C وجود نداره و كاملا" سليقه اي است ...ولي اگر بخواهيد به برنامه هاي و زبانهاي ديگه سويچ كنيد بايد Syntax رو انتخاب كنيد كه به برنامه شما نزديك تر باشه...
سلام.. ..
من هم نظرم همين است كه در كل فرقي بين دو زبان vb.net و #C وجود نداره و كاملا" سليقه اي است ...ولي اگر بخواهيد به برنامه هاي و زبانهاي ديگه سويچ كنيد بايد Syntax رو انتخاب كنيد كه به برنامه شما نزديك تر باشه...
قدرت زبان های #j و #C خیلی زیادتر از VB.net هستش. به نظر من این دو زبان خیلی بهتر هستن.
ای باباه! شما دیگه چرا بین زبونای .نت فرق میزارین؟! ویژگیهای #C فقط تا اونجایی که من می دونم pointerهاش هستن که باهاشون می تونیم بیتهای اشغال شده تو رم رو مدیریت کنیم. و این امکان هم تو پروژه های پیچیده که به شکل اساسی باید بهینه بشن (و نخوان از حالت پیشفرض زبانها تو مدیریت حافظه استفاده کنن یا ایده ی بهتری از مدیریت حافظه ی پیشفرض داشته باشن) استفاده می شه. مه هرچند این ویژگی تو نسل زبونهای C بوده و هست.
تازه استرالیا هم به اونایی که C#.net بلدن امتیاز مهاجرت میده!!!
و همینطور احساس می کنم شروع برنامه نویسی با VB.net بهتر باشه. چون syntax پیچیده ای نداره و بیشتر تبدیل نوع (داده ها) رو خودش بدون الزام نوشتن انجام میده.
در ضمن نمیدونم overload کردن operatorها مختص C# هست یا نه. اگه باشه یکی از دلایل قوت این زبون به حساب میره. چون با اون می شه مثلاً واسه کلاسی که درست می کنی عمل جمع رو تعریف کنی.
مثلاً وقتی کلاس رنگها رو درست می کنی, معرفی کنی که وقتی یه رنگ با یه رنگ دیگه جمع شد حاصلش یه رنگ میانه باشه, مثلاً قرمز + آبی= بنفش
آخرین ویرایش به وسیله pesare_ariyayi : دوشنبه 28 مرداد 1387 در 02:45 صبح دلیل: یه چیز یادم رفت
سلام
عمل زیاد اصولی و جالبی نیست و میتوان با گزینه Option Strict On غیر فعال کنید تا رفتاری مثل #C داشته باشد.... بیشتر تبدیل نوع (داده ها) رو خودش بدون الزام نوشتن انجام میده...
vb.net هم هیچ مشکلی با بازتعریف هیچ یک از عملگرها ندارد....در ضمن نمیدونم overload کردن operatorها مختص C# هست یا نه..
من در این نظر سنجی شرکت نمی کنم چون یک سوال اشتباه هیچ جواب درستی نمی تونه داشته باشه !
به نظر من نباید تعصبی به این موضوع نگاه کرد. از دوستانی که می گن VB.net بهتره یا اونهایی که میگن C# بهتره میپرسم (من خودم C# کارم و هیچ تعصبی هم روش ندارم) : ملاکتون برای بهتر بودن یک زبان چیه ؟
Vb و C# هر دو از یک کتابخونه کلاس استفاده می کنن(dot net class library). هر دو از یک IDE استفاده می کنن(هر چند امکاناتی که Visual Studio در اختیار این دو زبان قرار داده یه کم با هم فرق داره, ولی اگه دقیق تر بخایم بررسی کنیم اصلا IDE رو نباید در نظر بگیریم چون IDE یه چیزی جدا از زبان برنامه نویسیه). خوب الان فقط می مونه سینتکس زبان ها. اگه با سینتکس C آشنا هستید C# میتونه انتخاب شما باشه(چون به هم شبیهند) اگر هم از دنیای QBasic یا VB6 میآیید VB.net برا شما ساخته شده ! من خودم از سینتکس خانواده C خوشم می یاد و به خاطر همین الان C# کار می کنم. به نظر من هیچ کدوم از این زبان ها بهتر از دیگری نیست چون اگه اینطور بود زبان ضعیف تر به راحتی بعد از مدتی کنار می رفت ولی می بینیم که اینطور نیست.
البته چیزایی که گفتم در مورد VC++.net صدق نمی کنه چون طراحان این زبان موقع طراحی چیزهای دیگه رو هم مد نظر داشتن.
آخرین ویرایش به وسیله مهرداد تاجدینی : پنج شنبه 31 مرداد 1387 در 16:13 عصر
به نظر من فرق زيادي بين C# و vb وجود نداره
چون هر دو مال microsoft هستند و اگر الان يکمي در قابليت ها با هم فرق دارند در آينده مطمئنا برطرف ميشن
اما با توجه به اينکه مايکروسافت زبان C# رو خودش اختراع کرده اونو بيشتر توسعه خواهد داد
يک موضوع ديگر هم اينکه در سايتهايي که سمپل کد وجود داره بيشتر نمونه هاي C# هست.
با توجه به اینکه Vb.Net از انواع UnSigned و همینطور از Unmanaged Programming و دسترسی مستقیم به حافظه پشتیبانی نمیکنه، این مقاله این دو زبان رو از لحاظ Performance و تعداد خطوط تولید شده ی IL آزمایش کرده.
هرچند که این مقاله برای ویرایشهای بتای Visual Studio 2005 بوده، اما خودم هم یک تست ساده کردم و این کد رو در هر دو زبان Vb.Net و C# کامپایل کردم :
برای سی شارپ :
using System;
using System.Collections.Generic;
using System.Text;
namespace VbVsCSahrp_CSharp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello from CSharp");
Console.ReadLine();
}
}
}
برای Vb.Net :
Module Module1
Sub Main()
Console.WriteLine("Hello from Vb.net")
Console.ReadLine()
End Sub
End Module
در نگاه اول، حجم فایل اجرایی تولید شده توسط کامپایلر زبان سی شارپ 16 کیلوبایت بود، در حالی که حجم همتای خود در زبان ویبی دات نت 24 کیلوبایت بود!
سپس فایلهای اجرایی تولید شده توسط هر دو زبان رو در ildasm.exe که در مسیر
Microsoft Visual Studio 8 Installation Path\SDK\v2.0\Bin\ildasm.exe موجود هست بارگذاری کردم، و دیدم که در ویبی دات نت علاوه بر کلاس Program، کلاسی دیگر با عنوان My تولید شده (که دلیل تولید این کلاس رو نمیدونم و احتمال میدم حجم فایل اجرایی ویبی هم به خاطر همین اضافه شده باشه)، و همچنین در دستورات IL مربوط به تابع Main واقع در کلاس Program متوجه شدم که کد IL ویبی، یک خط بیشتر از همتای خود در سی شارپه (هرچند که ممکنه در دستورات پیچیده تر این مقدار تفاوت به مراتب تغییر کنه)، بهر حال این یک تست عملی بود، از دوستان خواهش میکنم در صورت داشتن وقت لازم، همچین تستی رو برای کدهای پیچیده تر انجام بدن و نتیجه رو در همین تاپیک مطرح کنن.
متشکرم.
سلام
عزیز جان چیزی را که شما تا حالا ندیده اید دلیل بر عدم وجودش نیست.با توجه به اینکه Vb.Net از انواع UnSigned و...
(البته جای تعجب هم ندارد که کسی که بیشتر #C کار میکند از امکانات VB.Net خبر نداشته باشد و برعکس)
بارها گفته ام، متاسفانه دوستان هر چه را بلد نیستند، میگویید ایراد از ما که نیست، حتماً از زبان برنامه نویسی است.
Byte
UShort
UInt
Ulong
اصلاً از اینها هم که بگذریم مگر ساختارهای ذاتی فریم ورک وجود ندارند؟ Unit32 را نمیتوان در VB.Net استفاده کرد یا UInt64 را ؟؟؟؟
!!!! مگر #c پشتیبانی میکند؟؟؟ UNMANAGED فقط و فقط در VC++.Net پشتیبانی میشود و #C و VB هر دو از ان محروم هستند.همینطور از Unmanaged Programming و
آنکه منظور شما است Unsafe است، ولی انهم بجز اینکه خودتان بهتر میدانید استفاده از ان در دات نت چیز پسندیده ای نیست و بعد هم خداییش، انصافاً و حقیقتاً خودتان بگویید، چند بار از unsafe در #C استفاده کرده اید؟
(
به نظر من که شما را هم به عنوان فرد قوی در تالار میشناسم، (وگرنه چیز دیگری میگفتم) خود شما به عنوان یک برنامه نویس که شاید تا حال کارهای مختلفی ارائه کرده باشید ولی آنقدر از این امکان استفاده نکرده اید و به دردتان نخورده که چه اشتباهاً و چه از روی حواس پرتی و یا اشتباه تایپی به جای unsafe لغت Unmanaged را تایپ کرده اید
)
همان مطلب بالا اینجا هم صادق است، من خودم همیشه در تنظیمات برنامه این ساختار را غیر فعال میکنم.. عنوان My ...
خیلی ساده، مختصر و مفید، در اصل غیر فعال هم نمیکنم، چون یک Template جدید درست کرده ام که اگر از روی آن NewProject کنم، به راحتی این گزینه ها و چند گزینه مطلوب دیگر تنظیم شده اند.
=====
یادآوری هم میکنم که کلیه امکانات و سینتکس های جالبی که به 2008 اضافه شده و واقعاً کدهای دات نت را زیبا تر و در ظاهر قوی تر کرده به صورت اشتراکی به VB.Net و C#.Net اضافه شده. پا به پای هم.
البته این بحث ها هم چندان ضرر ندارد، بالاخره مکانی میشود برای رفع ابهام و شفاف سازی و گفتگوی تمدن ها!!!!!
موفق و شاد باشید.
آخرین ویرایش به وسیله __H2__ : شنبه 02 شهریور 1387 در 22:17 عصر دلیل: یک یاداوری
دوست عزیز، با توجه به اینکه حدود 13 صفحه از این بحث پر شده، اگر قرار بود روی هوا و پرت و پلا حرف بزنم، زودتر از اینها پست میزدم (هرچند که پیش از این هم از این موضوعات اطلاع داشتم، ولی خب مشغله ی کاری اجازه نمیداد بیام به این تاپیک سر بزنم)، بهتره قبل از پست زدن از روی تعصب، کمی جستجو میکردید، این مقاله رو من از سایت مایکروسافت حدود 1.5 سال پیش گرفتم، که به بررسی تفاوتهای سی شارپ و ویبی میپردازه، مقاله به صورت word هست، لطفا پس از باز کردن، در صفحه ی فهرست ها (Contents) بخشهای DataTypes و Handling Unmanaged Code رو دنبال کنید.سلام
نقل قول:
با توجه به اینکه Vb.Net از انواع UnSigned و...
عزیز جان چیزی را که شما تا حالا ندیده اید دلیل بر عدم وجودش نیست.
(البته جای تعجب هم ندارد که کسی که بیشتر #C کار میکند از امکانات VB.Net خبر نداشته باشد و برعکس)
بارها گفته ام، متاسفانه دوستان هر چه را بلد نیستند، میگویید ایراد از ما که نیست، حتماً از زبان برنامه نویسی است.
Byte
UShort
UInt
Ulong
اصلاً از اینها هم که بگذریم مگر ساختارهای ذاتی فریم ورک وجود ندارند؟ Unit32 را نمیتوان در VB.Net استفاده کرد یا UInt64 را ؟؟؟؟
نقل قول:
همینطور از Unmanaged Programming و
!!!! مگر #c پشتیبانی میکند؟؟؟ UNMANAGED فقط و فقط در VC++.Net پشتیبانی میشود و #C و VB هر دو از ان محروم هستند.
آنکه منظور شما است Unsafe است، ولی انهم بجز اینکه خودتان بهتر میدانید استفاده از ان در دات نت چیز پسندیده ای نیست و بعد هم خداییش، انصافاً و حقیقتاً خودتان بگویید، چند بار از unsafe در #C استفاده کرده اید؟
(
به نظر من که شما را هم به عنوان فرد قوی در تالار میشناسم، (وگرنه چیز دیگری میگفتم) خود شما به عنوان یک برنامه نویس که شاید تا حال کارهای مختلفی ارائه کرده باشید ولی آنقدر از این امکان استفاده نکرده اید و به دردتان نخورده که چه اشتباهاً و چه از روی حواس پرتی و یا اشتباه تایپی به جای unsafe لغت Unmanaged را تایپ کرده اید)
لطفا با تنظیمات خودتون، برنامه ی کامپایل شده رو با ildasm.exe آنالیز کنید و نتیجه رو هم اینجا بذارید، در صورت تمایل سورس کدتون رو هم اینجا بذارید تا دوستانی که میخوان اونو به سی شارپ تبدیل و نتیجه ی آنالیز اسمبلی تولید شده توسط کامپایلر سی شارپ رو هم همینجا بذارن.نقل قول:
.. عنوان My ...
همان مطلب بالا اینجا هم صادق است، من خودم همیشه در تنظیمات برنامه این ساختار را غیر فعال میکنم
خیلی ساده، مختصر و مفید، در اصل غیر فعال هم نمیکنم، چون یک Template جدید درست کرده ام که اگر از روی آن NewProject کنم، به راحتی این گزینه ها و چند گزینه مطلوب دیگر تنظیم شده اند.
سلام
چون شما میگید شک ندارم که درسته ولی بدون شک مقاله تان مربوط به سال 2003 بوده. (5 سال پیش)سافت حدود 1.5 سال ..
در این مورد واقعاً متاسفم هستم و انتظارش از شما نداشتم.زدن از روی تعصب،...
من خودم #C هم کار میکنم، اصلاً برای من تعصب معنی ندارد، (وقتی خودم #C هم کار میکنم) بارها در تالارهای دیگر از #C هم دفاع کردم، از محاسن windows دفاع کردم در مقابل از محاست linux هم دفاع کردم.
مشکل من ان است و توان تحملم در جمله های ناحق کم است. فرقی ندارد #C باشد یا VB.Net یا Linux یا ... و نتیجتاً مجبور به جواب توضیحی در جهت شفاف سازی میشوم.
افتخارم این است که هیچ گاه جو گیر زمانه و تعصب نشده ام و با تمام توان سعی کردم بدون قضاوت قبلی، در لحظه و طبق شواهد و مستندات و حق مطلب بنویسم.
حالا باید برچسب بخورم، انهم .... خنده داره.!
آقایان و اساتید #C مطمئن هستند که هیچ تعصبی ندارند و با توجه به واقعیتهای موجود قضاوت میکنند؟؟
چون به نظر من بیشتر دوستان #C هنوز می خواهند مثل زمان ++C فخر بفروشند و بگویند که .... بگذریم.
سند من و واقعیت کد زیر است به همراه سورس، همان برنامه با VB کامپایل شده و فقط 5 کیلو بایت شده!
البته اگر کم بودن حجم افتخار دارد، چون برعکس شما به نظر من افتخاری نیست.سی شارپ 16 کیلوبایت
5 کیلو بایت، البته این چند وقت متوجه شدم که دوستان و همکاران هر چیزی را به راحتی انکار میکنند، این 5 کیو بایت هم روی بقیه.
=====
در کل باز هم تشکر میکنم، چون حداقل یک ابهام دیگر از بابت سایز فایلها کم شد.
همچنان اگر ابهامی بود در جهت رفع ابهام، در خدمت دوستان هستم.
میبخشید مزاحم شدم و جمیعاً موفق و پیروز و شاد باشید.
دوست عزیز منظورم این بود که من خودم این مقاله رو یکسال و نیم پیش از سایت مایکروسافت گرفتم.چون شما میگید شک ندارم که درسته ولی بدون شک مقاله تان مربوط به سال 2003 بوده. (5 سال پیش)
در این مورد، جای تشکر و قدردانی از شما داره، ولی با توجه به گفته های شما در پست قبل که مربوط به پشتیبانی از انوع Unsigned و همینطور Unmanaged Programming بود، مقداری تعصب برای ویژوال بیسک کاملا مشهود بود چون مدرکی دال بر موضوعات مطرح شده نبود، به هر حال این موضوع باعث شد که مسئاله تا حدودی برای دوستان و کسانی که در این قضیه کنجکاو بودن روشن بشه.در این مورد واقعاً متاسفم هستم و انتظارش از شما نداشتم.
من خودم #C هم کار میکنم، اصلاً برای من تعصب معنی ندارد، (وقتی خودم #C هم کار میکنم) بارها در تالارهای دیگر از #C هم دفاع کردم، از محاسن windows دفاع کردم در مقابل از محاست linux هم دفاع کردم.
مشکل من ان است و توان تحملم در جمله های ناحق کم است. فرقی ندارد #C باشد یا VB.Net یا Linux یا ... و نتیجتاً مجبور به جواب توضیحی در جهت شفاف سازی میشوم.
افتخارم این است که هیچ گاه جو گیر زمانه و تعصب نشده ام و با تمام توان سعی کردم بدون قضاوت قبلی، در لحظه و طبق شواهد و مستندات و حق مطلب بنویسم.
حالا باید برچسب بخورم، انهم .... خنده داره.!
اما برای تست برنامه، با تشکر از شما، اما کامپایلر شما Vs 2008 بود و همینطور در مد Release اسمبلی رو تولید کردید (هرچند که در اسمبلی های کوچک، تفاوت چندانی بین Debug و Relase نیست)، بهرحال من هم دو دستور مشخص شده رو در Vs2008 نوشتم (با زبان سی شارپ) و کامپایل کردم و حجم اون، مثل مال شما 4.50کیلوبایت شد( البته بدون دست زدن به تنظیمات استاندارد Visual Studio 2008) اما باز وقتی کدهای IL دو اسمبلی رو در ildasm.exe مرور میکردم، اسمبلی کامپایل شده به وسیله ی vb.net یک خط بیشتر از سی شارپ بود :
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
بهرحال ممنون، دوستان اگه سورسهای پیچیده تری دارن، لطفا به شیوه ی پستهای 127 و 129 اسمبلیهای تولید شده رو آنالیز و نتیجه رو (به همراه سورس) اینجا بذارن.
متشکرم
سلام
همان اول که مقاله را هنوز ندیده بودم، متوجه شدم.یکسال و نیم پیش از سایت مایکروسافت گرفتم
=====
من مقاله را مربوط به سال 2003 پیش بینی کردم ولی مقاله برای ماه دوم 2002 بوده، یعنی بیش از 6 سال پیش، یعنی قبل از عرضه رسمی و کامل اولین نسخه در سال 2003 .
(البته همه میدانیم که عرضه قبل از 2003 شروع شده بود، ولی نسخه کامل با سطح عرضه وسیع، نسخه اصلاحی یک دهم ورژن بالاتر 2003 بود.)
(
VB6 و VC++6 که قبل از دات نت بوده اند، 10 سال قبل عرضه شده اند و تازه چندین سال هم با قبل از عرضه دات نت، آنها رسماً اصلی ترین محصولات برنامه نویسی مایکروسافت بوده اند،
در این بازه زمانی ما شاهد ظهور چهار نسخه متفاوت از VS بوده ایم. (یعنی ظرف ده سال غمر سه نسخه به پایان رسیده و فوت کرده اند!)
چیزی که میخواهم بگویم آن است که در دنیای نرم افزار 10 سال و 6 سال زمان زیادی محصوب میشود، زمانی به اندازه عمر مفید دو، سه نسل برنامه.
)
نمیدانم مسئله حل شد یا نه؟... پشتیبانی از انوع Unsigned و...چون مدرکی دال بر موضوعات مطرح شده نبود،
چون من نام ساختارها و کلمات کلیدی مورد پذیرش را در ادامه مطالب نوشته بودم.
مثلاً
Dim x As UShort
X += 25
...
یا
Dim x As UInt16
x = 125
(مطلب مقاله صحیح بوده ولی مربوط به 2003 است، حقیقتش، من هم از روی همین مسئله فوراً گفتم مقاله قدیمی است)
=====
در ضمینه Unmanaged هم نگاهی به مقاله تان انداختم، در این مقاله هم از آن به unsafe هم نام برده شده.
من نمیدانم سیاستهای گفتاری و نامگذاری مایکروسافت در 6 سال پیش چطور بوده ولی الآن Unmanaged با unsafe مرزی دارد.
کدهای Unmanaged کلاً ربطی به دات نت ندارند و به صورت بومی و مثل همان زمان VB6 و VC++6 در RAM رفتار میکنند و از امکانات CLR استفاده نمیکنند و حتی بدون دات نت کار میکنند.
ولی کدهای unsafe در اصل تحت دات نت هستند و بدون ان کار نمیکنند، ولی امکان دستکاری با اشاره گرها و نوعی پا از گلیم فراتر گذاشتن را دارند.
و هم unsafe در #C و هم Unmanaged در پروزه های دات نت ++VC هر دو به حالت پیش فرض غیر فعال هستند، ولی میتوان فعالشان کرد و طبقشان کد نویسی است که باز هم بحث نیاز و عدم نیاز باقی میماند.
در 2005 و احتمالاّ بالای 95 درصد در 2003 هم فرقی ندارد، ولی من الآن فقط نسخه 2008 را نصب داشتم.اما کامپایلر شما Vs 2008 بود
و در کل برای من معیار آخرین نسخه است، چون کافیست چند سال برگردیم عقب تا برسیم به زمان قبل دات نت!
برای من همیشه Release معیار بوده و فکر کنم درستش هم همین است و من واقعاً فکر کرده بودن شما هم در Release کامپایل کرده اید، وگرنه قصدی نداشتم.مد Release اسمبلی رو تولید کردید..
فرقی نخواهد کرد عزیز جان ولی خوب دوستان میتوانند تست کنند.به شیوه ی پستهای 127 و 129 اسمبلیهای تولید شده رو آنالیز و نتیجه
فقط یک نکته دیگر را روشن کنم،
که چرا به نظرم چندان کمی حجم مهم نیست.
(ضمن تاکید بر اینکه میتوان در VB.Net و C#.Net فایلهایی باحجم یکسان هم تولید کرد)
به دو دلیل:
1- این افزایش حجم صعودی نیست و ثابت است، یعنی اگر فایلی 10M کامپایل شود، تفاوت 5 یا 10 مگ نخواهد بود بلکه همان زیر 100K و یا 50K میماند.
2-اگر کمی حجم افتخار باشد، و نشانه قوی تر بودن و پیشرفته تر و سریعتر بودن باشد.
پس VB.Net و C#.Net بسیار قوی تر و پیشرفته تر و سریعتر از VC++.Net هستند.
(
من چندین سال پیش این قضایا را در سه زبان اصلی دات نت با تغییر در setting های مختلف چک کردم،
و همان زمان هم VC++.Net برایم عجیب بود، امروز هم مجدداً چک کردم تا جملاتی که مینویسم به روز باشد.
البته همان چندین سال پیش هم به علت کثرت تنظیمات VC++.Net نتوانستم همه حالات این زبان را چک کنم.
)
همین چند خط شما در VC++.Net و تحت Relaese حجم 33 کیلو بایت میشود !!!!! (بدون فایل منبعو آیکون و اضافه جات!!)
یعنی چندین برابر دو زبان دیگر.
اگر هم کد کامپایلی را آنالیز کنید.
متوجه میشود که سه فضای نام اضافی با ده ها کلاس و ساختار enum اضافی در VC++.Net کامپایل میشود.
یعنی مشابه VB.Net که فقط یک فضای نام My اضافه میکند.
ضمناً من همان چند سال پیش نتوانستم گزینه ای پیدا کنم که مشابه VB.Net این فضاهای نام و کدهای اضافی را VC++.Net نسازد ولی نمیگویم چون من بلد نیستم، پس همچین تنظیمی وجود ندارد.
حالا آیا واقعاً خروجی چند کیلو بایت (و به ظاهر چندین برابر) حجیم تر VC++.Net دلیل بر ضعف یا کندی زبانش است؟؟؟؟
بدون شک هیچ ربطی به کند تر بودن و یا ضعف ندارد، فقط چون زبان میخواهد امکانات بیشتری در اختیار برنامه نویس اش قرار دهد، یک سری کلاسس اضافه را کامپایل میکند، که اگر استفاده شوند که استفاده شده اند و کار را راحت کرده اند وگرنه فقط چند کیلو بایت ناقابل فایل را بزرگ میکنند که در حجم های بالاتر اصلاً دیده نمیشود.
پس در کل چند کیلو بایت کم و زیاد به نظر من فرقی ندارد، حال در هر زبانی باشد....
==============
باز هم حداقل اگر دیگران هم رفتار مشابه شما را داشته باشند، خوب است.
بیایند و واضح دلیل منطقی و برنامه نویسی موضعشان را بیان کنند نه اینکه حرفهایی در لفافه و بدون دلیل توجیح برنامه نویسی بیاورند.
من بارها گفته ام، دو ریاضی دان اگر یکی از جنگلهای دور افتاده آفریقا باشد و دیگری پروفسوری از MIT،
از دو فرهنگ و نژاد و زبان مختلف،
اگر سر مسئله ای اختلاف داشته باشند و بیاییند سر یک میز بنشینند و گفتگو کنند، بدون شک اخر با نظرات مشترک و با دوستی از پای میز بلند خواهند شد، چون حرفشان بر طبق منطق و اثبات ریاضی است.
(مثل روان شناسان، ریاضیدانان روی هوا حرف نمیزنند!)
برنامه نویسی هم همین است، خیلی شبیه ریاضی است و برای همین زیبا است.
اگر افراد بیایند و مثل شما و بعضاً دیگر دوستان بر طبق اصول و شواهد و اثبات برنامه نویسی سخن بگویند، مشکلی که وجود ندارد، بالاخره یک مذاکره منطقی میکنیم و اطلاعات جمعیمان هم زیاد تر میشود.
ممنون و موفق باشید.
آخرین ویرایش به وسیله __H2__ : یک شنبه 03 شهریور 1387 در 08:17 صبح
بله، با تشکر از شما دوست گرامی، ظاهرا این قابلیت (پشتیبانی از انواع UnSigned) در نسخه ی 2005 اضافه شده، و من هم هرچقدر جستجو میکنم باز به همون رفرنسی میرسم که مال سال 2002 هست!نمیدانم مسئله حل شد یا نه؟
چون من نام ساختارها و کلمات کلیدی مورد پذیرش را در ادامه مطالب نوشته بودم.
اما در مورد Unsafe و Unmanaged باید بگم که ایندو در حقیقت یکی هستند، فقط unsafe یک کلمه ی کلیدی در سی شارپ هست که به کامپایلر میگه این بلاک کد به صورت Unmanaged اجرا میشه و clr در اون دخالتی نداره.
و اما در مورد حجم برنامه، باید بگم که حجم برنامه به صورت مستقیم در سرعت اجرای برنامه و همینطور مقدار فضایی که از سیستم عامل برای بارگذاری میگیره در ازتباطه، شما به فایل اجراییت (قبل از کامپایل) یک Resource بزرگ اضافه کن و بعد کامپایلش کن، میبینی که سرعت اجرای اون به مراتب پایین تر از دفعه ی قبلی هست که Resource مورد نظر بهش تزریق نشده بود.
اما نکته ی اصلی تعداد خطوطی بود که کامپایلرها برای هر دو زبان به IL تبدیل میکردن، این خیلی مهمه، چون در زمان اجرای برنامه، این کدهای IL هستند که به NativeCode تبدیل میشن و هرچقدر کمتر باشن، خب بالطبع سرعت اجراشون هم بالاتره، اما فعلا با این نمونه برنامه های کوچیک نمیشه نتیجه گرفت، باید ببینیم در برنامه های بزرگتر و پیچیده تر چه اتفاقاتی میفته.
به نظر من بستگی به زبانی داره که قبلا استفاده میکردی
MSDN میگه:
To maintain type safety and security, C# does not support pointer arithmetic, by default. However, by using the unsafe keyword, you can define an unsafe context in which pointers can be used. For more information about pointers, see the topic Pointer types.
Note: In the common language runtime (CLR), unsafe code is referred to as unverifiable code. Unsafe code in C# is not necessarily dangerous; it is just code whose safety cannot be verified by the CLR. The CLR will therefore only execute unsafe code if it is in a fully trusted assembly. If you use unsafe code, it is your responsibility to ensure that your code does not introduce security risks or pointer errors. For more information, see Security (C# Programming Guide).
بيشتز به خود آدم بستگي داره ولي نظر من براي چه مبتدي و چه پيشرفته روي #C هستش
به نظر من بستگی به زبانی داره که قبلا استفاده میکردی
و همچنین برنامه هایی که باید بنویسی
من میگم #C
من #C زو انتخاب می کنم که فقط هم از روی سلیقه و اینکه با syntax اون راحت ترم وگرنه فکر نمیکنم چندان تقاوتی در کارایی وجود داشته باشه
ولی از نظر من c syntax بودن زبان خودش یه مزیته باعث میشه کدها شلخته نباشه ، مرتب تر باشه و مزیت های دیگه
یکی هم ممکنه با vb راحت تر باشه
C# بهتر از همه هست چون از طرفی تا حد خوبی شی گرا است و از طرف دیگه کدهاش هم خیلی خوانا هستن. همه کار هم میشه باهاش کرد و بازار خوبی هم داره. ولی کسانی که هیچ وقت نمی خوان برنامه های سنگین و پیچیده بنویسن به نظر من بهتره که VB یاد بگیرن چون خیلی راحته. سری که درد نمی کنه که دستمال نمی بندن!
سلام
نه عزیزان من
بنده مدت ها با دات نت کار کردم فقط اینو فهمیدم که دات نت دنیایی است که هرچه بیشتر در موردش بدونید تازه می فهمید که هیچی بلد نیستید
در مورد سی شارپ و وی بی باید بگم که طراحان دات نت به خاطر مسئله قابل حمل بودن و به خصوص مستقل از ماشین بودن برنامه های دات نت اون رو طوری طراحی کردن که شما با هر زبونی که برنامه بنویسید در نهایت کد شما به MSIL تبدیل میشه درست مثل کوهی که دو نفر از دو طرفش به قلش برسند
ولی ممکنه از یه طرف کوه پله باشه و اون طرفش سنگلاخ
خب مسلمه که هر دوشون به بالا می رسن ولی سخت و آسون داره
ضمنا هر دو زبان سی شارپ و دات نت از کتابخانه عظیم دات نت FCL استفاده میکنن که به این شکل می شه گفت 80 درصد امکاناتشون یکی هست
مثلا برای جستجوی باینری در یه آرایه دیگه لازم نیست 20 خط کد بنویسید
از کلاس Array توی FCLاستفاده میکنین اونم یه تابع داره که این کارو براتون انجام میده به این می گن خاصیت RADکه هر دو زبون دارن
ولی این که کدوم یک بهترن باید بگم که استیو بالمر از مدیرعاملان مایکروسافت گفته که اگه زبونی تا 20 سال آینده رو دست C# درست شد تمامی سهام خودش رو به شخص سازنده ی اون زبون میده و این عمق اطمینان بالمر نسبت به این زبون نشون می ده
ولی VB.Net هم زبونی هست که میشه گفت قدرتش 99 درصد سی شارپ است
هر کدوم جای خود رو داره بسته به نوع پروژه یکیشون انتخاب میشه
ولی همیشه با قوی ترین زبان باش نه اسان ترین
من نظرم رو اصول برنامه سازی هست نه برنامه نویسی
شما برنامه سازی رو یاد بگیری برنامه نویسی برات کاری نداره
فقط اصول رو بلد باش دیگه دات نت و پی اچ پی فرقی برات نداره فقط بحث امکانات مطرح میشه.
اصول رو بلد باش با وی بی یا سی شارپ بنویس.
من خودم وي بي كارم ولي از نظر من وي بي زبون ساده اي هست ولي مواقعي اذيت مي كنه و يه چيزايي نداره مثل استفاده از زبان اسمبلي در بين كدها كه براي امنيت برنامه و دسترسي به سخت افزار عاليه
-
يكي هم موقع تبديل دستي انواع داده
-
يكي هم در طولاني بودن كدها ولي سي شارپ كدهاي كم ولي نامفهوم تري داره مثلا int a
-
زبون سي بيست سي سال قدمت داره حتي با اومدن وي بي پس نشون مي ده syntax خوبي داره
-
وي بي در ارتباط با سخت افزار به خوبي سي شارپ نيست
شرمن
من سی شارپ را ترجیح می دهم چون یادگیری آن ساده تر است و امکانات بیشتری هم دارد
-----------------------------------------------------------
ما مقداری برنامه های تحت ویبی 6 داشتیم ( مقداری یعنی میلیونها خط کد ) که تصمیم داشتیم قبل از انتقال کامل به جاوا در کوتاه مدت اونها رو به دات نت تبدیل کنیم . برای انتخاب بین ویبی دات نت و سی شارپ هم مشاورانی از ما رفتند ماکروسافت و نهایتا "سی شارپ" توصیه و انتخاب شد. دلایلش رو هم توی جلسات به آنها گفتند ! من خبر ندارم ! لول !
و البته همین تصمیم گیری یک سال طول کشید.
بحثتون جالبه...
به کاربران محترم و استاد باید بگم اشتباه نکنید بنده افراد زیادی را دیدم که فکر می کنن به علت اینکه کد های زبان دات نت نهایتا به CLR ترجمه میشه این را میرسونه که قدرت اونها برابره یا اینکه از امکانات مشابهی استفاده می کنند اما این کاملا نظریه غلطی هست در ظاهر شاید اما کلا خیر سی شارپ بسیار قوی تر و پیشرفته تر از وی بی می باشد در امکاناتی مثل WPF,linq شاید هر دو از یک امکانات بهره بگیرند زیرا این 2 امکان مستقل از زبان ها هست که هر 2 زبان به یک صورت دسترسی دارند اما تفاوت اصلی این 2 زبان در ساختار ان می باشد ساختار ویژوال بیسیک بر اساس زبان ابتدای بیسیک که صرفا جنبه اموزشی دارد می باشد و در سال 2002 مایکروسافت مجبور به تغییر معماری ان داد زیرا به بن بست بر اساس این ساختار رسیده بود در سال 2005 نیز به همین صورت و از ان سال تا به کنون دوباره در بن بست است و چیزی به این زبان از 2005 اضافه نشده (خاص) تنها از امکانات جدید تر بهره برده مانند Wpf,linq اما ساختاری در بن بست است و این زبان جنبه مقدماتی واموزشی برای شروع دارم اما زبان سی شارپ بر اساس زبان مقتدر سی پلاس پلاس ساخته شده و ساختار و ساختمان بسیار قوی دارد که یک سری ضعف این زبان را برطرف و از طرفی ضعیف تر کرده از طرفی با ارائه راه کارهای ADO,... پیچیدگی زبان سی پلاس را در ساخت برنامه های تجاری کم کرده و از طرفی با خارج شدن از حالت کد نویسی Native و وابسته شدن به دات نت ان را از زبان محبوب سیستمی دور کرده در واقع سی شارپ خلا زبانی بین وی بی و سی پلاس پلاس را پر می کند و سخت ترین رقیب ان دلفی بوده( که دلفی هم با نسخه Prism البته مایکروسافتی میشه و بعد هم نابود) از لحظ مدیریتی مانند Garbage ها مفهوم های شی گرائی و ... سی شارپ می تونه به راحتی ویژوال بیسیک را بشوره و کنار بزاره متاسفانه در ایران تمامی نرم افزار ها تنها به مدیریت پایگاه داده مانند کتابخانه و خیلی تاپ کار کنن نرم افزار حسابداری می نویسن در ایران زیاد تفاوت سی شارپ و وی بی معلوم نیست چون با ساختار زبان کاری نداریم اما در نوشتن برنامه های که با منابع سیستمی سرو کار دارن سی شاپ بسیار قوی تر است البته نه به اندازه پدر(سی پلاس پلاس). وی بی و سی شارپ در استفاده از WPF,Plinq,Linq,Ado و امثال انها شبیه هم هستند(بسیار توجه کنید به این نکته)علت تشابه این است که این تکنولوژی ها مربوط به یکی از این 2 زبان خاص نمیشه و ویرایش مخصوص نداره این ها تکنولوژی های مستقل وابسته به دات نت هستند که هر 2 زبان به صورت اشتراکی استفاده می کنند اما از این تکنیک ها بگزریم به بحث ساختار زبان می رسیم اگه سی شارپ سختره چون مفهوم ها متفاوته و پیشرفته تر شده بعضیا فکر می کنن چون همه شون به سی ال ار ترجمه میشن یک قدرت دارن درصورتی که خیر توجه کنید که سی پلاس پلاس (نسخه Managed(MFC)نه Native)نیز همانند ان 2 زبان با CLR ترجمه میشه اما نمی خواهین بگین پس قدرتش با وی بی یکی هست که !!! ؟؟؟؟ علت اینکه همه به یه چیز ترجمه میشن 1-هماهنگی بین زبان ها و انتقال پروژه 2-چند پلت فرمی که البته هنوز در حد تئوری است و مایکروسافت با ارائه نکردن دات نت برا ی دیگر سیستم عامل ها عملا به وعده خود عمل نکره اما توجه کنید با اینکه همه CLR میشن تا زبان ها بتونن به همدیگه انتقال کد داشته باشن اما در اخر برنامه از لحظ ساختاری توسط کامپایلر زبانی که کامپایل میشه مدیریت میشه !!!! مانند مدیرت حافظه و ... اگه صرفا تفاوت در سادگی وی بی بودعملا تولید سی شارپ متوقف می شد در صورتی که برعکس روز به روز از منابع زبان وی بی کم شده درحدی که زیر سایت های مایکروسافت فیلم های اموزشی خود را بر اساس زبانی سی شارپ می نویسند
البته من هنوز این نکته را به دیگران یاد اوری می کنم که هر زبان برنامه نویسی مخصوص کاربردهای تعریف شده برای ان می باشد و نمی توان انها را به طور صریح،کلی با هم مقایسه کرد تنها برای استفاده های تخصصی و نیاز به انها می توان زبان مورد نظر را برگزید.
این یک حرف ناشیانست من هرچند طرفدار سی شارپ هستم و با جاوا نیز کار کرده ام (در حد کم) اما جاوا نیز کاربرد های به خصوص خود از حمله قابلیت حمل بسیار بالا را داره و ... در اکثر کارای ها بله سی شارپ پیشتازه و در کل بیشتر نیاز ها را جواب گو هست اما جاوا در زمینه های خاص خودش هم کار می کنه
من با Vb.Net و C# کار کردم اما نه خیلی فقط زمانی که جزو واحدهای درسیم بود و هر دو هم زبان های قوی .net هستند (البته C# که خیلی ) ولی Delphi Prism را انتخاب کردم!!!(چون دلفی Native Code حال خوبی بهم داده و داره میده !)
درسته همه ی برنامه نویسی های .netامکانات خوبی دارند ولی اگه شما یه برنامه بخواهید برای یه شرکت بنوسید ایا باز هم همین طوری می نوسید یا مشتری شما این برنامه سنگین را قبول دارد یا یک برنامه ی که زود اجرا بشه را ترجیع میده به همین خاطر من هیچ کدام از محیط های برنامه نویسی .net را قبول ندارم
یادمه چند وقت پیش یه مصاحبه از یه کارمند مایکروسافت خوندم از اقای John Stephense گفت مهم نیست که چه لباسی می پوشین مهم اینه که از بهترین راه به مقصد برسین یعنی مهم نیست که با چه زبانی یا پلتفرمی کار می کنین مهم اینه که بتونین کارو به بهترین شکل انجام بدین
Yield رو مطالعه کنینیک مثال بزن که با #C بشه انجامش داد اما با VB.Net نه؟!
من Delphi Prism رو ترجیح می دم، چون می تواند از تمامی قابلیتهای .net و مونو استفاده کند، همچنین می توان به راحتی از کدهای نوشته شده با زبان C# در آن استفاده کرد. من سالهاست که با دلفی کار می کنم و سینتکس Delphi Prism نیز بسیار به دلفی شبیه است و بنابرین من به راحتی توانسته ام که با آن کنار بیایم. دلیل دیگر من این است که من از دیرباز عاشق شرکت RemObjects Software بوده ام.
خوب دوستان بنده خیلی از نظرات دوستان رو مطالعه کردم
مثلا
نتونستم چیزی ننویسم وقتی بعضی از دوستان گفتند که فرقی نداره مهم استفاده از دات نتهیادمه چند وقت پیش یه مصاحبه از یه کارمند مایکروسافت خوندم از اقای John Stephense گفت مهم نیست که چه لباسی می پوشین مهم اینه که از بهترین راه به مقصد برسین یعنی مهم نیست که با چه زبانی یا پلتفرمی کار می کنین مهم اینه که بتونین کارو به بهترین شکل انجام بدین
در جواب باید گفت که :
دوست عزیز دات نت یه ابزاره به نظر شما طریقه ی استفاده از ابزار مهم نیست . بله این رو هم قبول دارم که فکر برنامه نویس طریقه ی استفاده از ابزاره ولی زبان برنامه نویسی هم کیفیت این استفاده کردن رو تعین می کنه من وی بی کار کردم(2،3 سال) کلی هم با خودم درگیر بودم که چرا زحمات چند سالمو ول کنم و کوچ کنم به #C اونم بعد اینکه اکثر فنونش رو یاد گرفته بودم ولی وقتی مزایای سی شارپ رو دیدم قبولش واسم راحت تر شد پیشنهادم به همه ی برنامه نویسان دات نت اینه که حتما راجع به سی شارپ مطالعه کنند
VB.Net
من با vb6 و vb.net تا به امروز کار کردم،تا الان هم نشده که بخوام کاری انجام بدم و نتونم.
به نظر من هیچ زبانی زیبایی،راحتی و سلیسی vb رو نداره هم در win هم در web.(البته یه نظر شخصیه + دوستان گفتند تقریباً نظر جناب بیل هم هستش)
میشه چند نمونه از این مزایایی که گفتی بیان کنی؟!ممنون میشم.
یک سوال:
موارد دیگر به جز J# و IL شامل چیز دیگه ای هم میشه؟
دقیق بخونید مخصوصا Vb کارها
سلام
توی دات نت و زبان های برنامه نویسی از نظر خوانایی کد , سرعت کار , امکانات زبان به نظر من Vb حرف اول رو میزنه ....
C# کارها ناراحت نشند ... ولی من تو تیمی کار میکنم مه 2 C# کار واقعا خوب توش هست ولی از روزی که طریقه کار اونها رو دیدم ایمان پیدا کردم که VB عالیه !!!!!!!!!!!!
میگید چرا ؟
دلیل زیاد داره ! مثلا :
1- توی VB اگه ما بخوایم یک فایل Xml درست کنیم میتونیم به این شکل عمل کنیم :
Dim a = < > بین این دو علامت میتونیم کد Xml تایپ کنیم و فایل Xml بسازیم ولی توی C# همین کار که 5 دقیقه زمان میخواد رو توی 2 ساعت انجام میدند چون باید برای هر نود یه کلاس New بشه و این کلاسها ............. بگذریم ,
2- توی Vb میشه به Property ها پارامتر داد که توی C# ممکن نیست !
3- کلاسهایی که VB کارها از زبان Vb6 باهاشون هست و خیلی کاربرد داره رو C# کارها ندارند ! مثلا توابع Left , Right , و .... خلاصه کلاس String Vb6
4- اگه خداوکیلی با جفت زبانها آشنایی دارید برید توی جفتشون یه Event تعریف کنید توی VB 10s توی C# 10 دقیقه طول میکشه !!! بابا یه Event Delegate میخواد چیکار ....
این موارد زیاد هستند !
در نهایت تا حالا vb کاری ندارم که دنبال NameSpace , سی شارپ بگرده ولی همیشه C# کارها یه سری به NameSpace , ویژوال بیسیک میزنند !!!
این طرفداری از زبون خاصی نیست چون من هر دوی این زیان ها رو دوست دارم و کار میکنم ! ولی حقیقته !!!!!!!
الان Dijkstra داره تو قبر میلرزه.
من هنوز توی vb نتونستم event درست کنم.4- اگه خداوکیلی با جفت زبانها آشنایی دارید برید توی جفتشون یه Event تعریف کنید توی VB 10s توی C# 10 دقیقه طول میکشه !!! بابا یه Event Delegate میخواد چیکار ....
این موارد زیاد هستند !
من هم VB6 کار کردم هم VB.Net
۴ سال.
TextBox1.TextChanged+=TextBox1_TextChanged;
منظورتون optional parameter هست؟امکانپذیر هست.2- توی Vb میشه به Property ها پارامتر داد که توی C# ممکن نیست !
int IncreamentByOne(int OptionalParameterExample = 3) { return OptionalParameterExample + 1; }
ٰVB زبان HardCoder ها.!!!توی VB اگه ما بخوایم یک فایل Xml درست کنیم میتونیم به این شکل عمل کنیم :
Dim a = < > بین این دو علامت میتونیم کد Xml تایپ کنیم و فایل Xml بسازیم ولی توی C# همین کار که 5 دقیقه زمان میخواد رو توی 2 ساعت انجام میدند چون باید برای هر نود یه کلاس New بشه و این کلاسها ............. بگذریم ,
آخه کدوم ...ي توی کدش XML میزاره که نتونه Edit بکنه؟
همشون توی String/Strings هستن.3- کلاسهایی که VB کارها از زبان Vb6 باهاشون هست و خیلی کاربرد داره رو C# کارها ندارند ! مثلا توابع Left , Right , و .... خلاصه کلاس String Vb6
در ضمن هر موقع از این توابع استفاده کردید مطمئن باشید که یه ایراد ساختاری توی برنامتون هست.مطمئن باشید.مطمئن باشید.مطمئن باشید.
بهتون قول میدم یک نمونه کد سه خطی هم نمیتونید بزارید که راه حل درست یک مساله باشه و از این procedure ها استفاده کرده باشه.
آخرین ویرایش به وسیله FastCode : سه شنبه 20 اردیبهشت 1390 در 00:58 صبح دلیل: ترتیب نوشته ها اصلاح شد+1خط کد
توی Vb میشه به Property ها پارامتر داد که توی C# ممکن نیست !خیر منظورشون این نیست.اینه:منظورتون optional parameter هست؟
Private Property a(ByVal parm As Integer)
Get
End Get
Set(ByVal value)
End Set
End Property
که معادل سی شارپ،حداقل توی سی شارپ 3.5 و کمتر نداره
باسلام:
من خودم با C# کار میکنم.
اما نحوه نگارش VB به زبان ما ساده تر هست و نحوه کدنویسی مقداری ساده و روانتر هست نسبت به C#.
در کل پیاده سازی همه موارد برنامه نویسی در هردو امکان پذیر هست.
در ASP.net 3.5 شما میتونید در یک وب سایت از هر دو این زبان ها استفاده کنید.(برای وب کارها)
موفق باشید.