# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET > سوال: دلایل مهاجرت از  visual basic به سی شارپ

## jerjis1912

سلام

من به عنوان کسی که با visual basic کار کرده بارها پیش اومده که احساس کردم vb خیلی ساده تر از سی شارپه یا اینکه تو بیسیک برای آسون شدن کار خیل چیزا از دید برنامه نویس مخفی هست 

آیا بیسیک برای شروع طراحی شده و قدم بعدی سی شارپه؟؟؟

ممنون

----------


## kablayi

به نظر من #C و VB در دات نت فرقی با هم ندارن ...
هر دو توانایی های یکسانی دارن ... 
به اعتقاد بنده فراگیری VB.NET ساده تره و کار با اون راحتتره ... 
من در ابتدا با پیش زمینه ای که از ++C  داشتم میخواستم #C کار کنم ولی با مقایسه VBو #C  :متفکر:  نمیدونم چی شد که تو VB.NET سر درآوردم ...  :گیج: 
در کل این مسائل مهم نیست ... مهم اینه که در یک زبان خاص شما به سطحی برسید که بتونید به خودتون بگید* "من به سطح ایده آل در این زبان رسیدام"*

----------


## Mani_rf

برنامه نویسی و زبان برنامه نویسی به شخصی که می خواهد با آن کار کند بستگی دارد، ‌زبان های VB.NET و C#‎.Net هر دو از لحاظ سطح کاربری در یک سطح قرار داردند و فقط از لحاظ نحوه به کاربردن فرمان ها باهم تفاوت دارند . VB.Net چندین سالی از C#‎.Net قدیمی تر است. C#‎ از سال 2003 برای برنامه نویسانی که به زبان C++‎ کار می کردند ارائه شد تا بتوانند برنامه های تحت ویندوز را با راحتی بیشتری ایجاد کنند.
انتخاب میان این دو کاملا به خود شما بر می گردد. من VB.NET ، C#‎.NET ، Delphi را از زبان های ویژوال یاد گرفتم و میان آنها VB.Net را انتخاب کردم، تمامی امکانات .Net در هر دو زبان وجود دارد حتی من در* VB.NET فرمانی سراغ دارم که معادل آن در C#‎.NET نیست*.
به عنوان مثال در VB.NET برای ذخیره تنظیمات در VB ما میتوانیم از فرمان SaveSettings استفاده کنیم که معادل آن در C#‎ وجود ندارد.(در C#‎ تا آنجا که می دانم باید با استفاده از فرمان های ریجیستری این کار را انجام داد و به راحتی SaveSettings در VB.Net نیست)

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

حالا انتخاب با شماست ،‌می خوای بمون می خوای برو. :لبخند گشاده!: 
اما اگر خواستی بری اول برنامه ای که من نوشتم را دانلود کن ،‌ ببین بعد برو...

----------


## ali_md110

کد نویسی با سی شارپ چذابتره  
دات نت یک سکوی پرتابی هست فرقی نمکینه برنامتو با چی مینویسی تقریبا 3000 کلاس توی دات نت ارائه شده که بوسیله زبانهای برنامه نویسی موجوددر دات نت استفاده میشه و همشون توسط یه زبان میانجی کامپایل میشه با هر کدوم از زبانها راحت تر هستید  برنامه بنویسید ولی بازار سی شارپ قوی تره
فکر کنم مواردی مثل رفکتورها  Refactor که در سی شارپ ارائه شده در ویبی نیست  2010 هم پشتیبانی بشه 
وفتی این 3000 هزار تا کلاس رو تونستی یاد بگیری یه برنامه نویس حرفه ای شدی

----------


## Mani_rf

شوخی می کنی؟؟؟؟  :متعجب: 
برنامه نویسی با #C  جذاب تره  :متعجب: .
به نظر من بزرگترین مشکل #C طریقه باز و بسته شدن دستورات است.

در VB.NET برای مثال فرمان های زیر به شکل زیر باز و بسته می شوند.
 IF .. Then 
فرمان ها 
Else
فرمان ها 
End IF

===========

For X as Byte = 0 to N
فرمان ها 
Next X

===========

While ...
فرمان ها 
End While

  حالا همون ها را تو #C یه نگاهی بی اندازید : 
IF (...)  
} 
فرمان ها 
{

Else
} 
فرمان ها 
{
End IF

===========

For ( byte X,x =0,N++(
فرمان ها  
Next X

===========

While ...
} 
فرمان ها 
{
 

حالا این رو در نظر بگیرید که همه این فرمان ها را تو در تو استفاده می کنیم و می خواهم.
While Not X=0 
For I as integer = 0 to 5
     For J as integer = 2 to 6
If X>5 then
 X-=2
Else 
X+=2
end if
Next J
Next I
End Whileنمونه #C: 

While !(x==0)
For (Int I,i=0,I<=5)
     For (int J,J=2,I<=6)
If (X>5)
}
 X-=2
{
Else 
}
X+=2
{
{
{
{
حالا اگر بخواهیم بین دو حلقه For کدی قرار دهم در زبان #C چند تا { را باید بشماریم؟؟؟ (در VB بین Next I و Next J)
اگر تعداد حلقه ها بیشتر شود چطور؟؟؟
به نظر من که VB.Net از لحظ دستوری خیلی شسته رفته تر از #C است.

----------


## adinochestva

دوست عزیز خوب نوشتن 

if (IsHere)
Trace.WriteLine("hello");

راحتتر و جذابتره یا این ! :

IF IsHere Then
Trace.WriteLine("hello")
End If

مشخص اولی !

----------


## kablayi

یه جایی یکی از دوستان میگفت #C شعور نداره ....  :قهقهه: 
البته ببخشید این لفظ رو به کار بردم چون وقتی با #C کار میکنم به یاد حرف دوستم میفتم ... چون خطاها رو نمیتونه سریع تشخیص بده و بعد از اجرا تازه میفهمه کجای کار اشتباهه ولی تو VB.NET به محض تایپ اشتباه با خط آبی خطا رو متذکر میشه ... 
البته نمیدونم شاید این مشکل در ورژن2010 رفع شده باشه ...
به خاطر همین بود که گفتم کار با VB.NET راحتتره ...  :چشمک:

----------


## emadfa

واضح است که #C جذاب تره!
البته در کل زبان های .Net با هم فرق خاصی ندارند اما فراموش نکنید یادگیری C#‎ یعنی یادگیری زبان هایی مثل Java و بخش عمده ای از C++‎!  
اگه شما با آکولاد مشکل داری پس یعنی با ساختار اکثر زبان ها و پدر زبان ها یعنی ++C مشکل داری!!!! من به شخصه زمانی VB هم بلد بودم اما به خاطر سادگی بیش از حد ( ضایع بودن بیش از حد! ) به C#‎ مهاجرت کردم. برای آینده هم قصد دارم در زمینه C++‎ سرمایه گذاری کنم ولی یک چیز خیلی واضح هست. دیگه هیچ وقت به VB بر نمی گردم!

----------


## Navid Asadi

> خاطر سادگی بیش از حد ( ضایع بودن بیش از حد! ) به C#‎ مهاجرت کردم.


من که سر در نمی یارم!
هدف انسان ها از خلق کامپیوتر و برنامه هاش  ههمواره آسان کردن زندگیش بوده. بعد شما از آسونیش می نالید!
البته قبول دارم که زبان C#‎ اهمیت زیادی داره ! اما به هر حال نمیشه گفت آسونی بده!

----------


## jerjis1912

اما دوستان من خودم فکر میکنم علتش تمایل به دستیابی سرچشمه و ریشست!

ولی یه دیپلمه عالی بهتر از ذه تا لیسانسه متوسطه!

----------


## adinochestva

> یه جایی یکی از دوستان میگفت #C شعور نداره .... 
> البته ببخشید این لفظ رو به کار بردم چون وقتی با #C کار میکنم به یاد حرف دوستم میفتم ... چون خطاها رو نمیتونه سریع تشخیص بده و بعد از اجرا تازه میفهمه کجای کار اشتباهه ولی تو VB.NET به محض تایپ اشتباه با خط آبی خطا رو متذکر میشه ... 
> البته نمیدونم شاید این مشکل در ورژن2010 رفع شده باشه ...
> به خاطر همین بود که گفتم کار با VB.NET راحتتره ...


  هر ویژال استدیویی به یک ViEmu  و Resharper احتیاج داره ;)

----------


## Mani_rf

> دوست عزیز خوب نوشتن 
> 
> if (IsHere)
> Trace.WriteLine("hello");
> 
> راحتتر و جذابتره یا این ! :
> 
> IF IsHere Then
> Trace.WriteLine("hello")
> ...


 
خوب دوست عزیز شما اگر VB کار بودید می دونستید که می شه کدی که نوشتی را اینجوری بنویسی تا راحت تر بشه :


IF IsHere Then Trace.WriteLine("hello")

حالا کدوم جذاب تره؟؟؟  :قهقهه:

----------


## Navid Asadi

> ولی یه دیپلمه عالی بهتر از ذه تا لیسانسه متوسطه!


منظورتون رو متوجه نمیشم!

----------


## sari-1369

مثل  اینکه اینجا شده جایی واسه کل انداختن روی VB و C#‎ ...   :ناراحت:

----------


## adinochestva

اگر اين رو هم بگيريم :

IF IsHere Then Trace.WriteLine("hello")

كه استاندارد نيست و در هيچكجا توصيه نمي شود مي شه C#‎ رو هم نوشت :

if (IsHere) Trace.WriteLine("hello");

همچنان C#‎ تعداد كاراكتر كمتري دارد و جذابتر است ! ;)

----------


## Navid Asadi

منظور از جذاب تر بودن چیه؟




> همچنان C#‎ تعداد كاراكتر كمتري دارد و جذابتر است


من فکر نمیکنم تعداد کارکتر های C#‎ از VB کمتر باشه به خصوص قسمت " } { " گذاشتنش!

----------


## adinochestva

همان مثال بالا رو ببينيد تعداد كاراكتر C#‎ كمتر هست
حتي مثالي كه به فرض چند خط هم باشد مثل زير :

if (ISHere)
{
var foo = @"some this is here
which need to be multiple lines
its really big query , isnt it ?
wow 
lol
heh !";

var cmd = new SqlCommand(foo,Connection);
var val = cmd.ExecuteScalar();

var result = (val ?? string.Empty).ToString();
}
و vb

if IsHere Then
Dim foo as String ="some this is here"_
"which need to be multiple lines"_
"its really big query , isnt it ?"_
"wow "_
"lol"_
"heh !"

dim cmd as SqlCommand = new SqlCommand(foo,Connection)
dim val = cmd.ExecuteScalar()


dim result as String

if IsDbNull(val) then
result = string.Empty
else
result = val.ToString()
end if


End if
دوستان خردن نگيرند كه چرا تو vb همه جا از dim استفاده نكردم براي مثلا string
تا اونجا كه من ديدم وقتي تو vb مي نويسي :

dim foo = "my String"
نوع foo مي شود object
و بايد كست شود ولي C#‎ اينطور نيست ;)
البته دوستان vb و C#‎ كار كد رو tune كنن شايد نتايج متفاوتي بگيريم !

----------


## Mani_rf

شما کاری یا C#‎ کار؟؟؟؟
اون کدی که شما گفتی توصیه نمی شه تو #C توصیه نمیشه اما تو Vb خواطر وجود Then کاملا استاندارده و حتی خود ماکروسافت هم تو Sample هاش برای یک خط اینجوری استفاده می کنه. ( MSDN را نگاه کن)بی انصافی نکن دیگه،‌ قرار نشد کد C#‎ را کوتاه بنویسی و VB را بلند ترش کنی. ببین من کد , #ِC را یک جور می نویسم. مطمعنی که شرط را تو VB هموجوری که تو C#‎ نوشتی نمیشد نوشت؟؟؟؟ امتحانش کن.

تو VB6 اگر می نوشتید 
Dim X = "Test"X‌ را از نوع Variant تعریف می کرد حق با شماست ،‌اما تو VB.Net اگر چنین چیزی بنویسید متغییر را به نسبت مقداری که به آن داده شده تغییر نوع می ده.(می توانی امتحان کنی) 
(بی انصاف تو متغیر result که تو #C تعریف کردی از نوع Var بود اونوقت تو VB از String کردی؟؟؟  :لبخند گشاده!: ) 
و اما در مورد } و نحوه بسته شدن در VB.Net باید بگم که من تو این چند سالی که VB‌کار می کنم تا حالا NEXT , End Wile , End If , End With و چیزای مثل این را ننوشتم.
اگر دقت کنی شما For را که می نویسید خودش براتون حلقه را می بنده، همینطور برای همه دستورات. 
حکمت ; را هم ما آخر نفهمیدیم. (خودم می دونم برای مشخص کردن انتهای دستوره اما خوب به نظر من نیازی نیست چون آدم به صورت معمول یک دستور را تو یک خط می نویسه و کم پیش می یاد که بخواد دو دستور را تو یک خط بنویسه. معمولا برای شرایط خواص عوامل استثنا در نظر می گیرند نه برای چیزای عمومی) 
راستی این را هم می دانی که تو VB می شه متغیری را بدون تعریف کردن به کار برد و زمان مقدار دهی تعریف می شه ؟؟؟ مثلا اینجوری.B = 12فقط کافیه تک Option Explecit را از تو تنظیمات VB.Net برداری. جالبه اما قبول دارم که اگر تعریف بشه بهتره اما خو بلاخره امکان دیگه 
دوستان عزیز من #C و #C کار ها را دوست دارم ، هدفم از شرکت در این بحث این است که اطلاعاتم در باره دو زبان بیشتر شود و بس.(شایعه نسازید ، هیچ تعصبی هم در کا نیست)

----------


## adinochestva

بنده هم C#‎ كار مي كنم هم vb
آخر پست قبلي جواب شمارو داده بودم كه اگر تو vb بنويسي :

dim foo = "string"

نوعش رو object تشخيص مي ده نه string !
اگر غير از اينه راهنمايي بفرماييد
بنده نيز با زباني مشكل ندارم و سعي نكردم vb رو بلند و C#‎ رو كوتاه بنويسم
كد بالا رو شما بردار براي vb كوچيكش كن ببينم چي ميشه

----------


## Mani_rf

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

 
If IsHere Then
Dim foo AsString = "some this is here which need to be multiple lines its really big query , isnt it ? wow lol heh !"

Dim cmd As SqlCommand = New SqlCommand(foo, Connection)
Dim val = cmd.ExecuteScalar()
Dim result = (If(val, String.Empty)).ToString()
 
EndIf

----------


## Mani_rf

این هم از سند برای اینکه حرفم را که اگر نوع را تعریف نکنید VB خودش از نوع مناسب مقدار داده شده تعریف می کنه.
عکس های زیر را ملاحظه کن:

----------


## adinochestva

صورت مسئله رو چرا پاك مي كني ما فرض مي كنيم اين رشته رو بايد چند خطه نوشت ( فرض )‌!
و اينم فقط يك مثال هست
در مورد dim foo = "string" با كمال تعجب حرف شما درست بود ( با اين كه قبلا اين كار رو مي كردم Object مي شد )
بعد از تغيرات كه كد C#‎  :

if (ISHere)
{
var foo = @"some this is here
which need to be multiple lines
its really big query , isnt it ?
wow 
lol
heh !";
var cmd = new SqlCommand(foo,Connection);
var val = cmd.ExecuteScalar();
var result = (val ?? string.Empty).ToString();
}
و vb

if IsHere Then
Dim foo ="some this is here" & _
"which need to be multiple lines" & _
"its really big query , isnt it ?" & _
"wow " & _
"lol" & _
"heh !"
dim cmd = new SqlCommand(foo,Connection)
dim val = cmd.ExecuteScalar()
Dim result = (If(val, String.Empty)).ToString()
End if
C#‎ شامل 258 كاراكتر و 
vb شامل 289 كاراكتر هست ;)

----------


## Mani_rf

احتمالا منظورت این نیست که شما برای انتخاب زبان برنامه نویسی لنگ 16 کاراکتری!!!

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

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

----------


## adinochestva

يكمي كوچك تر ولي ناخوانا تر
C#‎ :

var foo = @"some this is here
which need to be multiple lines
its really big query , isnt it ?
wow 
lol
heh !";
if (IsHere)
{
var cmd = (new SqlCommand(foo, Connection).ExecuteScalar() ?? string.Empty).ToString();
}

vb :

Dim foo = "some this is here" & _
"which need to be multiple lines" & _
"its really big query , isnt it ?" & _
"wow " & _
"lol" & _
"heh !"
If IsHere Then
Dim result = (If(New SqlCommand(foo, Connection).ExecuteScalar(), String.Empty)).ToString()
End If

C#‎ شامل 224 كاراكتر
vb شامل 261 كاراكتر

----------


## adinochestva

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


اولا در آن مثال تفاوت 31 كاراكتر هست 289  - 258 
و در آخرين tune تفاوت رسيد به 37 كاراكتر
-----
اينا مهم نيست در اين مقياس ولي اين 37 كاراكتر تفاوت فقط براي 10 خط كد هست حساب كن يك برنامه كوچيك كه 10000 خط مد داره ميشه 37000 كاراكتر

ولي باز قبول دارم اينا زياد مهم نيست مهم تو مباحث ديگه هست كه باز vb ميلنگه خواستيد اونارم بررسي مي كنيم ;)

----------


## Mani_rf

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

من اول موضیه خودم را اعلام کنم . به نظر من دو زبان هیچ برتری به هم ندارند و کاملا از قدرتی یکسان برخوردارن. همونجوری که ماکروسافت اعلام کرده زبان #C برای این ارائه شده که ++C کار ها بتوانند Application های خود را راحت تر بنویسندو اینکه بتواند  Java کار ها را به سمت خود جلب کند (که ابتدا زبان #J را ارائه و بعد از چند سال کوتاه آن را حذف و امکانات آن را به #C پاس داد.) و در نتیجه هر دوزبان پوششی برای .Net  FrameWork هستند و در واقع کد ها را بر پاییه آن می نویسند.
اما فقط به دلیل قدیمی تر بودن VB فرمان های قدیمی تر خود را با خود همراه دارد که برخی از آنها همانند SaveSetting کارها را کمی ساده تر می کنند.

----------


## adinochestva

اين مقاله رو بخوانيد
http://en.wikipedia.org/wiki/Compari...ual_Basic_.NET
تو feature ها نگاه كنيد به نظر ميرسه C#‎ feature  هاي بيشتري داره در مقابل vb
 و 100 البته كاربرديتر مثل unsafe  و. ...

----------


## Mani_rf

حتما می خوانم و معادلشون را تو VB برات میارم.

----------


## emadfa

بعد از سال ها به این نتیجه رسیدم که نوع زبان برنامه نویسی کاملا نقشی موازی رو در برنامه نویسی ایفا می کنه و این یعنی که میشه گفت هم مهمه و هم نه! و این دقیقا به نگاه و اهداف ما بر می گرده! این امر حتی در مورد .Net هم صدق می کنه! با این که MSIL مقصد نهایی است اما syntax و popularity و tools رو نباید فراموش کرد. انتخاب من #C

Please forget which .Net language to learn. Just give the way on #C

----------


## Mani_rf

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

----------


## mamush

دوستان ، من از نسخه بتای دات نت فریمورک با vb.net پروژه نوشتم -بیشتر از 9 سال- و اکثر اونا هم کارای Enterprise بودن
لیست این پروژه ها رو می تونین در آخر این صفحه ببینین : http://www.iranopenbravo.com/Index_Resume.aspx
اما واسه این اینکه شما یه معمار خوب و یه مدیر پروژه موفق باشن باید (باید و باید) #C رو یاد بگیرین.
از همه مهمتر اینکه خیلی از Sample های معتبر و مرجع و اکثر پروژه های Opensource دات نت با #C 
کد نویسی می شوند.
اگر از دید شخصی به این قضیه نگاه کنین واقعیت اینه که تفاوت ها بسیار جزیی است و هیچکدام به دیگری 
ارجحیت ندارن ، اما اگر جنبه شغلی و آینده کاری خودتون رو لحاظ کنید ممکنه به این نتیجه برسین بدون
تسلط به #C راه بجایی نمی برین.بهر حال تفاوت این دو زبان بیشتر جنبه شغلی و اجتماعی در جامعه برنامه نوس ها رو داره تا مسائل فنی و تکنیکی.
در ضمن دوستان سویچ کردن از VB.NET به #C برای افراد با تجربه یکی دو هفته بیشتر زمان نمی بره  :متفکر:

----------


## Mani_rf

باز هم سلام.




> اما واسه این اینکه شما یه معمار خوب و یه مدیر پروژه موفق باشن باید (باید و باید) #C رو یاد بگیرین.
> از همه مهمتر اینکه خیلی از Sample های معتبر و مرجع و اکثر پروژه های Opensource دات نت با #C 
> کد نویسی می شوند.


mamush جان بهتر نیست برای حرفات دلیل هم بیاری؟؟ رو چه حسابی معمار خوب باید و مدیر پروژه باید #C را یاد بگیره؟؟؟؟ مثلا اگر کسی کارش Java باشه باید #C یاد بگیره که چی بشه ؟؟ 
و دوم اینکه اشتباه بهتون گفتن؛ تمامی Sample های ارائه شده از سوی ماکروسافت دیگر شرکت هایی که کامپوننت می نویسن برای هر دو زبان است. حتی بد نیست که کامپوننت KDTELE را که تو سایت چندین بار ازش تعریف شده و اکثراً معتقدن که بهترین در نوع خودشه را دانلود کنی ببینی که برای #C هیچ Sample ی نگذاشته و فقط برای زبان های VB.NET و Delphi نمونه گذاشته.




> اما اگر جنبه شغلی و آینده کاری خودتون رو لحاظ کنید ممکنه به این نتیجه برسین بدون
> تسلط به #C راه بجایی نمی برین.بهر حال تفاوت این دو زبان بیشتر جنبه شغلی و اجتماعی در جامعه برنامه نوس ها رو داره تا مسائل فنی و تکنیکی.


در این مورد حق با شماست بازار کار ایران بیشتر به سمت #C است تا VB اما این هم فقط یک دلیل می تواند داشته باشد. 

متاسفانه برای اینکه ما ایرانی ها عادت به تحقیق نداریم و فقط به تایید حرف های دیگران تصمیم می گیریم و حرفی را که می شنویم معیار قرار می دهیم بدون آنکه درباره آن اطلاعاتی کافی داشته باشیم در باره آن بحث می کنیم و بیشترقریب به اتفاقمان به محض مقایسه دو موضوع بدون داشتن دلایل کافی آن چه شنیده ایم را تایید می کنیم.

قدیمی ترهای کامپیوتر حتما به یاد دارن که زمان پدید آمدن ویندوز Miliniume یا ME همه کاربران آن را ویندوزی بدون کاربرد می دانستند اما بعدها ثابت شد که از هم دوره ها خود بهتر است ،‌ در مورد XP مادر مرده هم اوایل آمدنش همه این بدو بیراه هارا بارش کردند اما در حال حاضر سیستم عامل 95٪ ایرانی ها XP است و جالب این است که به نظر همه آنها Vista با آن همه جلال و _جبلوت_ ویندوزی بی استفاده است و مطمعن باشید که روزی Vista بهترین شناخته خواهد شد.

من دارم رو سایتی که دوست عزیزمون معرفی کرد تا برتری های #C را توش بخونم کار می کنم و به نتایج خیلی جالبی رسیدم که به زودی برای خوندم همه بچه ها می گذارمشون.(احتمالا دوستمون همه سایت را نخونده بود.) به زودی با دستی پر بر می گردم. 

فقط از دوستان دو خواهش دارم : اول اینکه برای شرکت در بحث و نظر دادن اول همه مطالب نوشته شده را بخونن و دوم اینکه حرفشون را با دلیل و مدرک معتبر اعلام کنند نه نظر شخصی.

----------


## Sharif Lotfi

> دوستان ، من از نسخه بتای دات نت فریمورک با vb.net پروژه نوشتم -بیشتر از 9 سال- و اکثر اونا هم کارای Enterprise بودن
> لیست این پروژه ها رو می تونین در آخر این صفحه ببینین : http://www.iranopenbravo.com/Index_Resume.aspx


دوست عزيز در مورد زمانها يكم دقت كن 9 سال پيش VB.Net به بازار اومده بود ؟

----------


## Armin060

يكی از مهم ترين مزيت های #C نسبت به VB.Net اينه كه بين حروف كوچك و بزرگ فرق قائل ميشه.

----------


## emadfa

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


دوست عزیز. 
اول سلام...

من در پستم این رو هم گفتم:



> نوع زبان برنامه نویسی کاملا نقشی موازی رو در برنامه نویسی ایفا می کنه.


اولا که من باز تکرار می کنم که اگر از پایین نگاه کنیم فرق چندانی بین #C و VB و حتی Managed ++C نیست. ( ؟What Microsoft says ) در این مقاله به صراحت گفته شده که:

No matter which language you select based on your personal 		  preference and past experience, both languages are powerful developer tools and 		  first-class programming languages that share the common language runtime in the 		  .NET Framework

اما این همه ماجرا نیست!! چون ما می خواهیم که از بالا نگاه کنیم!
چند تا نکته مهم در این جا وجود داره:
 بر خلاف گفته یکی از دوستان که .Net سال 2003 عرضه شد,سال 2002 به همراه C#‎ عرضه شد. اما چرا باید برای برنامه نویسی از vb استفاده نکنیم:
1) ساختار: ساختار کدام زبان به .Net نزدیک تر است؟ C#‎ قلب .Net است. ( البته این یک توصیف کلیه. در واقع C#‎ برآمده از .Net هست. ) چون تقریبا مایکروسافت همه ویژگی هایی رو که می خواست در این زبان گنجوند. البته با تقلید از Java و تا حد زیادیC++‎ 
2) پشتیبانی: بیشترین پشتیبانی از جانب MS و همه شرکت ها برای کدام زبان .Net است؟ 
C#‎ 
3) این یک قانون در همه دنیاست. استخدام ابتدا برای برنامه نویسان native سپس Java و سپس .Net .در بین برنامه نویسان .Net هم کهنه کاراری C#‎ ارجحیت دارند. چرا؟ چون برنامه نویس C#‎ خیلی خیلی راحت تر می تونه به هر زبانی switch کنه و اصولا شرکت ها به افرادی نیاز دارند که بتونند مدام حودشون رو upgrade کنند. چیزی که برنامه نویسای ایرانی از اون غافلند. 
و ...
هدف من از گفتن اینها این نیست که از فردا همه برن C#‎ یاد بگیرند بلکه اینها دلایل من بود برای سرمایه گذاری در این زبان. البته هنوز اعتقاد دارم که یک برنامه نویس حرفه ای حتما باید 
C++‎ و assembly رو بلد باشه! ( در کنار زبانی که بلده! ) 
البته بد نیست که یه نگاهی هم به لینکای پایین بندازین... :قلب: 

*Why C#‎ is used more or preferred over VB.NET*


*Visual Basic faces uncertain future in .NET world*

----------


## emadfa

> من دارم رو سایتی که دوست عزیزمون معرفی کرد تا برتری های #C را توش بخونم کار می کنم و به نتایج خیلی جالبی رسیدم که به زودی برای خوندم همه بچه ها می گذارمشون.(احتمالا دوستمون همه سایت را نخونده بود.) به زودی با دستی پر بر می گردم.


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

----------


## mamush

> دوست عزيز در مورد زمانها يكم دقت كن 9 سال پيش VB.Net به بازار اومده بود ؟


بابا جان ما سال 79با این VB.NET برنامه نوشتیم (فکر کنم 9 سال شده نه ؟ ) :گریه:  :گریه:  :گریه: 

اون موقع که اساتید همگی متفق القول می گفتند :لا دلفی لا مقبول لا مدرک

ویژوال بیسیک هم که فداش می گفتن اسباب بازیه  :متفکر:  یادتون نمی یاد. فکر کردین دات نت

مربوط به سال 2005 است ؟ بنده نسخه آلفای VS.net 2001-2002رو هم دارم. می شه بفرمایین

سرکار ، سال 2001-2002با چی کد می زدین ؟ با Foxpro 2.5 for DOS :عصبانی:

----------


## Mani_rf

Mamush جام نمی دونم مخاطبت کی بود اما من سال 2000 برنامه نویسی را با VB6 شروع کردم و بعد از اون برای اینکه بتونم دنیای اطراف خودم را بهتر بشناسم زبان های زیر را هم تا حد کاربردی یاد گرفتم.

*Qbasic
Pascal
C و ++C
Assembly

Delphi
Vb.Net
C#‎.Net
خیلی کم هم Java
و ASP برای اینکه تو زمینه Web هم کاری بلد باشم.
و متاسفاته Delphi.Net کار نکردم
*اگر احتمالا شما فکر می کنید که بنده از شکم مادر که زاده شدم VB.Net کار بودم اشتباه می کنید. در ضمن این مطلب هم برای آقایونی می گم که فکر می کنن اگر #C یاد بگیرن پایه برنامه نویسی یاد گرفتن و می تونن همه زبان ها را راحت یاد بگیرن، برنامه نویسی کردن مثل حرف زدنه اگر شما حرف زدن بلد باشین و بهتون بگن حالا برای اینکه به زبان اینگلیسی صحبت کنی باید بعضی از کلمه ها رو یاد بگیرید برای مثال به جای کتاب باید بگید Book و 40٪ از مابقی کلمه ها همونه فکر نکنم زیاد سخت باشه

مسله بعدی اینکه زبان های برنامه نویسی رایج از لحاظ کد نویسی بیشتر به VB شبیهند تا #C
مثلا تعریف متغیر در #C 
INT X                                         
  VB و VB.Net
Dim X as Integer
Delphi
Var X : Integer

 چند نمونه دیگه : 
#C 
 For(i=0,i<5,i++)
VB و VB.NetFor I = 0 to 5
DelphiFor I := 0 to 5 do
#CiF (X==5)
VB و VB.NetIf x=5 then
DelphiIf X = 5 then



#C switch (x) 
 {
case 1 :
case 2 :
case 3 :
Defualt :
{
VB و VB.NetSelect Case X
 Case 1
 Case 2
 Case 3
 Case Else
End Select
DelphiSelect X
 Case 1 :
 Case 2 : 
 Case 3
 Case Else :
End Select
حالا خودت قضاوت کن از کدوم به کدوم راحت تر می شه سوئچ کرد؟؟؟

مسله بعدی اینکه به نظر من حساسیت به حروف بزرگ و کوچیک یکی از ایراد های این زبان به حساب می یاد چون عملا جز اینکه دستو پایه برنامه نویس را ببنده و برنامه نویس را گیچ کنه کاره دیگه ای انجاک نمی ده. برای تعریف متغیر شما می توانید یک کلمه 256 کاراکتری متشکل از اعداد و بعضی از کاراکتر ها بنویسید (تازه این تو شرایطیه که آرایه را در نظر نگیریم) که اگر همه آنها را هم 30 تا در نظر بگیریم (که خیلی بیشتره ) خودتون حساب کنید 256^30  چند میشه.
بدون کاربرد و دستو پا گیر.

----------


## emadfa

دوست عزیز:



> در ضمن این مطلب هم برای آقایونی می گم که فکر می کنن اگر #C یاد بگیرن پایه برنامه نویسی یاد گرفتن و می تونن همه زبان ها را راحت یاد بگیرن، برنامه نویسی کردن مثل حرف زدنه اگر شما حرف زدن بلد باشین و بهتون بگن حالا برای اینکه به زبان اینگلیسی صحبت کنی باید بعضی از کلمه ها رو یاد بگیرید برای مثال به جای کتاب باید بگید Book و 40٪ از مابقی کلمه ها همونه فکر نکنم زیاد سخت باشه


این که با یادگیری C#‎ یادگیری بقیه زبان ها کار راحتیه , حرف من نیست. حرف MSDN و همه برنامه نویساست. البته اونقدر واضح است که نیاز به مثال نداره. به عنوان نمونه همون ساختار for که شما مثال زدی در زبان هایی مهمی مثل C++‎ و Java هیچ فرقی نداره چون تقریبا در برنامه نویسی به یک استاندارد تبدیل شده. فراموش نکنید که Delphi زبان مورد احترامی هست اما همه برنامه نویسی نیست. در واقع اهداف ایجاد Pascal و Basic خیلی به هم شبیهند. Basic به وجود اومد که دانش آموزها بتونند برنامه نویسی یاد بگیرند. ( البته الان با وجود .Net بسیار بسیار قدرتمنده. ) و Pascal به وجود اومد که تقریبا همه مفاهیم برنامه نویسی موجوددر زبان C رو دانشجوها راحت تر یاد بگیرند بنابراین این همه شباهت بین این دو دور از انتظار نیست. البته Delphi با C#‎ هم شباهت های زیادی داره.
البته من هیچ وقت نگفم یه برنامه نویس VB نمی تونه به زبان های دیگه switch کنه بلکه یک برنامه نویس 
C#‎ خیلی راحت تر می تونه این کار رو انجام بده. 
یه نکته دیگه: کوچک یا بزرگ بودن به نظر من یک مزیته. ببینید دوستان برنامه نویسی یعنی تفکر! و این یعنی  این که نباید از یک زبان انتظار داشته باشیم همه کارها رو برای ما آسان کنه. مثلا چرا این قدر برنامه نویسان vb به case-sensitive بودن C#‎ گیر میدن. چون کار رو سخت می کنه؟ اما واقعیت اینه که این  مساله حواس برنامه نویس رو خیلی جمع می کنه! همون طور که یک برنامه نویس C++‎ در برنامه نویسی دقت بیشتری به خرج میده!

----------


## Mani_rf

دوست عزیز این حرف MSDN را لینک بده ما هم بخونیم من مثال VB و دلفی را زدم شما هم چندتا مثال از این دوزبان می زدید.  کاملا درست است زبان Java زبان بزرگی است پر کاربرد اما حتما این را هم می دانید که Java جایی در Application ندارد. و حتما این را هم می دانید که متغییر در جاوا به شکل : Var X : integer تعریف می شود این یعنی خود دلفی.
من در تمام تاپیک هایی که گذاشتم از زبان های مختلف مثال زدم، عکس گذاشتم شما #C کار های محترم فقط از این شاخه به آن شاخه می پرید و نتوانستید یک حرف را با مدرک ثابت کنید.
بهتر نیست شما هم علاوه بر #C و تکیه کردن به ساختار C چند زبان برنامه نویسی دیگری را امتحان کنید و از دور به آنها نگاه نکنید؟!؟!؟




> ببینید دوستان برنامه نویسی یعنی تفکر! و این یعنی این که نباید از یک زبان انتظار داشته باشیم همه کارها رو برای ما آسان کنه. مثلا چرا این قدر برنامه نویسان vb به case-sensitive بودن C#‎ گیر میدن. چون کار رو سخت می کنه؟ اما واقعیت اینه که این مساله حواس برنامه نویس رو خیلی جمع می کنه! همون طور که یک برنامه نویس C++‎ در برنامه نویسی دقت بیشتری به خرج میده!


دقیقا در مورد این حرف با شما موافقم *برنامه نویسی یعنی تفکر یعنی یک هفته برای یک Bug‌ کوچیک فکر کردن و کلنجار رفتن* (نمی دونم براتون پیش اومده یا نه) یعنی شب خواب برنامه را دیدن . پس تو این شرایط به نظر من احمقانه است که برنامه نویس بخواهد خودش را درگیر کاراکتر های دستو پا گیری مثل " ; " بکونه ،‌ مسخره نیست که تو زمانی که شما ویندوز را نصب می کنید و اکثر درایور هاتون شناخته می شه شما بخواهید درگیر شمردن { ها برای پیدا کردن حلقه مورد نظرتان شوید . برنامه نویسی نیاز به دقت داره ، دقتی که سطح کاربردی برنامه شما را در نظر کاربر بالا ببره به کاربردن زبان برنامه نویسی شما هیچ فرقی برای کاربر نداره ، فقط خود برنامه نویس را درگیر حاشیه می کنه. 

مگر غیر از اینه که کامپیوتر برای راحتی انسان ساخته شده ؟؟؟؟
مگر غیر از اینه که برنامه نویسی ویژوال پدید آمد تا برنامه نویس را از نوشتم و ساختن OBJECT های اولیه دور کند و برنامه نویس ذهن و انژی خودش را برای بهبود سطح کیفی برنامه و براورده کردن نیاز کاربر صرف کند؟؟؟
مگر غیر از این است همه زبان های تحت DOS‌ از دور خارج شدن؟؟؟
مگر غیر از این است که از زبان Visual C++‎ فقط برای بازی نویسی استفاده می شود Application نویسی به #C واگذار شده ؟؟؟

ما برنامه می نویسیم تا مردمی راحت تر کارهایشان را انجام بدهند ، و خودمان باید از این راحتی که پیش رویمان گذاشتند فرار کنیم!!!

تا اینجای کار همه بچه ها از کمی امکانات و ضعف های نداشته VB‌ در برابر #C می گفتند و حال کی هیچکدام ثابت نشد به خاطر راحتی کار با آن از آن ایراد می گیرید!!!  :قهقهه:  

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

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

منتظر ضعف های VB هستم (هرچند که بیشتر اونها را می دانم و به این نتیجه رسیدم که کوچکترین خللی در برنامه نویسی ایجاد نمی کند.)

موفق باشید....

با سپاس فراوان...

----------


## emadfa

دوست عزیز! چرا این قدر عصبانی؟



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


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



> دوست عزیز این حرف MSDN را لینک بده ما هم بخونیم من مثال VB و دلفی را زدم شما هم چندتا مثال از این دوزبان می زدید.


پاسخ داده شد! ( لینک MSDN به زودی )



> بهتر نیست شما هم علاوه بر #C و تکیه کردن به ساختار C چند زبان برنامه نویسی دیگری را امتحان کنید و از دور به آنها نگاه نکنید؟!؟!؟


من تا حد زیادی به C#‎ تسلط دارم. به زبان Java نیر برای پروژهای cross-platform برنامه نویسی می کنم. عاشق زبان C++‎ نیز هستم. برنامه نویسی به زبان های python و erlang نیز جز برنامه های آینده ام است. ASP.Net هم که! البته هیچ ادعایی ندارم و بر خلاف برخی از دوستان هیچ زبانی را نصف و نیمه یاد نمی گیرم. چون *اساسا پیاده سازی الگوریتم بسیار مهمتر از زبان است.* 



> دقیقا در مورد این حرف با شما موافقم *برنامه نویسی یعنی تفکر یعنی یک هفته برای یک Bug‌ کوچیک فکر کردن و کلنجار رفتن* (نمی دونم براتون پیش اومده یا نه) یعنی شب خواب برنامه را دیدن . پس تو این شرایط به نظر من احمقانه است که برنامه نویس بخواهد خودش را درگیر کاراکتر های دستو پا گیری مثل " ; " بکونه ،‌ مسخره نیست که تو زمانی که شما ویندوز را نصب می کنید و اکثر درایور هاتون شناخته می شه شما بخواهید درگیر شمردن { ها برای پیدا کردن حلقه مورد نظرتان شوید . برنامه نویسی نیاز به دقت داره ، دقتی که سطح کاربردی برنامه شما را در نظر کاربر بالا ببره به کاربردن زبان برنامه نویسی شما هیچ فرقی برای کاربر نداره ، فقط خود برنامه نویس را درگیر حاشیه می کنه.


من هیچ وقت با semicolon کلنجار نمی زم. این یک ساختار بسیار مفید در برنامه نویسی است. شاید به زودی 10 دلیل برای برتری دستورات منتهی به ; را در اینجا بگذارم. به هر حال دوست عزیز! کاربر فقط به GUI نیگا می کنه اما برنامه نویس به گستره ساختمان نرم افزار! فکر نمی کنم هیچ برنامه نویسی استفاده از brace یا ; واسش سخت باشه!



> مگر غیر از این است همه زبان های تحت DOS‌ از دور خارج شدن؟؟؟


مطمنی؟ همین OS که باهاش کار میکنی رو با یکی از همین زبون های کنسولی به نام C نوشتن!!!!



> مگر غیر از این است که از زبان Visual C++‎ فقط برای بازی نویسی استفاده می شود Application نویسی به #C واگذار شده ؟؟؟


چه جالب!!! البته حرف شما در مورد ایران که همه از دنیای متمدن فاصله دارند درسته! اما در مقیاس جهانی نه! چرا؟ چون:
1) 99% بازی های دنیا با C++‎ نوشته شده , میشه و خواهد شد.
2) 80% نرم افزارهایی که رو سیستم شما نصبه رو با VC نوشتن. ( حتما همشون اشتباه کردن؟!! )
3) 60% برنامه نویسان آمریکای شمالی با دو زبان VC و Java برنامه نویسی می کنند و 13% به زبان C#‎. ( لینک هایی رو که دادم خوب بخونید. )
4) بالاترین performance و قدرت مربوط به unmanaged c ++ هست.
5) اگر از نظر شما webbrowser یا multimedia soft یا Security soft هم جز application هست!! برای نوشتن اینا به دلیل یک سری مسایل همچون حافظه یا امکانات به جز VC چاره ای نیست!
و ...

دوست عزیز! این جا جای صحبت در مورد C نیست! به نظر من این زبان تا وقتی که یک زبان جدید جاش نیامده دارای تقدسه چون خدمتی که به علم کامپیوتر کرد و داره می کنه هیچ زبانی نکرده! 




> من منتظر دلایلی هستم که از منابعی همچون خود زبان برنامه نویسی باشد. مثال بزنید، مقایسه کنید. کد ها و امکانات را به رخ بکشید تا اگر vb ضعفی دارد ما هم بفهمیم...


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


من عاشق برنامه نویسی هستم! ولی برخلاف برخی دوستان ایرانی ( متاسفانه در ایران برنامه نویسی یعنی نوشتن نرم افزار سفارشی!! ) شاید بهتر باشه به هر زبانی به ارزش خودش نگاه کنیم!!

خداحافظ.... :متفکر: 
به زودی... :متفکر:

----------


## منصور بزرگمهر

من هم جدیداً دارم از VB.Net به #C مهاجرت می کنم، و دلیل آن این است که برای ADO.Net تمامی مثالها #C است. ولی اگر وارد دعوا دوستان نشویم، (چرا که کتک بد بیراه آول آخر نصیبمان است) ولی سین تکس وبی بهتر است و واضحتر از سی شارپ است، بقول دوستان این آکولادها معلوم نیست کجاست، ولی یک سئوال دیگر:
(البته در تاپیک دیگر نیز مطرح شده است)
آیا امکان دارد در یک پروژه مثلاً یک کلاس ما C#‎ باشد و کلاس دیگر ما VB.Net و ما بتوانیم از همدیگر نیز استفاده بکنیم.
می دانم اگر کلاس خود را تبدیل به dll بکنیم امکان راحت دارد، ولی درون یک پروژه چگونه است.

متشکرم - بزرگمهر

----------


## منصور بزرگمهر

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

----------


## emadfa

> زبان Java زبان بزرگی است پر کاربرد اما حتما این را هم می دانید که Java جایی در Application ندارد.


دوست عزیز! باور کن قصد پست زدن نداشتم اما اما نشد...نتونستم این جمله رو هضم کنم...
شما یا احتمالا از دنیا بی خبری یا Java رو با چیزی اشتباه گرفتی یا ...
C#‎ زبان قدرتمندی است و برنامه نویسان زیادی دارد اما جامعه برنامه نویسان java بسیار بزرگ تر است. جالب این که جاوا الان *یه مقدار* در وب ضعیف شده. ( به خاظر ASP.Net ) اما هنوز در برنامه نویسی رومیزی حرف اول رو می زنه! اگه شما می دونی Enterprise App یعنی چی این رو هم بدون که با جاوا تا این سطح می شه نرم افزار نوشت! 
دوست عزیز احتمالا به خاطر چنین تفکراتی درباره زبان هایی مثل Java و C++‎ شما vb کارها حالتون از C#‎ به هم می خوره! لطفا سعی کنید یک مقدار بیشتر up to date باشی!

با تشکر....

----------


## Mani_rf

اتفاقا من هم قصد پست زدن نداشتم، دارم یک مقاله درباره ضعف های #C در برابر VB.Net می نویسم اما خوب برخی جمله ها را باید جواب داد دیگه.
حرفم را با اطمینان گفتم  ، Java جایی در Application نویسی ندارد،‌ حتی تا این حد می دانم که Java کامپایلر اختصاصی ندارد. شما Application  نوشته شده با Java را به ما معرفی کن تا ماهم از وجودش فیض ببریم.
اگر سایتی هم سراغ داری برای برنامه نویسی Application در جاوا معرفی کن ، به هر حال سرعت پیشرفت علم از سرعت آدمی بیشتر است ،‌اگر اتفاق جدیدی در دنیایا جاوا افتاده بد نیست ما هم بدانیم.

جالب تر اینکه تو این تاپیک قرار بود #C و VB.Net باهم رقابت کنند.

در ضمن اگر چند تاپیک قبلی را بخوانی متوجهد می شی که من هم #C بلدم هم ++C و هم کمی جاوا. اگر حالم بهم می خورد هرگز آنهارا نمی آموختم.

----------


## Navid Asadi

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

----------


## Mani_rf

چون تا اینجای کار که کسی از #C کار ها نبوده که بتونه ضعف های VB.Net را در برابر C#‎.Net اعلام کنه و کد های دو زبان را باهم مقایسه کنه.(جز یک نفر که لینک جالبی داد و واقعا اطلاعاتم راجع به دو زبان بیشتر شد. که تو اون سایت هم از دوزبان به یک اندازه ایراد گرفته بود)

----------


## behzadkhaledian

#C و VB.Net  به غیر از سینتکس تقریباً تفاوت آنچنانی باهم ندارن چون هردو از کلاسهای پایه ای دات نت استفاده می کنند ولی #C دوت ویژگی داره :
جا برای پیشرفت خیلی داره 
مقدمه خیلی از زبانهای دیگه ست یعنی میشه از اون زبانها هم به راحتی به #C اومد.

----------


## emadfa

سلام....



> اگر سایتی هم سراغ داری برای برنامه نویسی Application در جاوا معرفی کن


والا بعد این همه سال نشنیدیم باید برای اثبات قدرت یک زبان و استفاده از اون بریم لینک نرم افزارهای نوشته شدش رو بیاریم. چیکار میشه کرد! اینجا ایرانه! اما اینم یک لینک معتبر... یک نرم افزار از ناسا... نرم افزار رقیب office ... نرم افزار ویرایش موسیقی.... لطفا با دقت بررسی کنید!
Ten Amazing Java Applications

با توجه به این که در همین سایت قبلا ده ها صفحه در مورد تفاوت های سینتکسی این دو زبان بررسی شد لازم دیدم به دنبال یک سری تفاوت های جدیدتر و بنیادی تر باشم. به زودی...

----------


## XilizaX

> کد نویسی با سی شارپ چذابتره  
> دات نت یک سکوی پرتابی هست فرقی نمکینه برنامتو با چی مینویسی تقریبا 3000 کلاس توی دات نت ارائه شده که بوسیله زبانهای برنامه نویسی موجوددر دات نت استفاده میشه و همشون توسط یه زبان میانجی کامپایل میشه با هر کدوم از زبانها راحت تر هستید  برنامه بنویسید ولی بازار سی شارپ قوی تره
> فکر کنم مواردی مثل رفکتورها  Refactor که در سی شارپ ارائه شده در ویبی نیست  2010 هم پشتیبانی بشه 
> وفتی این 3000 هزار تا کلاس رو تونستی یاد بگیری یه برنامه نویس حرفه ای شدی


درود.
دوست عزيزم Refactoring در VB.NET بسيار لذت بخش و پر قدرت است.
در زير كتابي مفيد در اين زمينه قرار مي دهم كه دانلود آن به همه حرفه اي ها توصيه مي شود :

http://rapidshare.com/files/122514025/0470179791.rar

----------


## منصور بزرگمهر

به یک نتیجه رسیده ام.
اگر سین تکس C با هر ورژن آن درست بود و ساده قابل خواندن و نوشتن، هیچ وقت نیاز به وی بی نبود.

متشکرم - بزرگمهر

----------


## Navid Asadi

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

----------


## mortezamhd

به نظر من که میشه گفت تازگیها از وی بی 6 به وی بی دات نت مهاجرت کردم وی بی دات نت عالیههههه . این هم که میگن بازار #c از vb بهتره رو شخصا قبول ندارم (هرچند که سی بازارش بهتره)

----------


## CodeMasterX

بعضی پست ها رو خوندم، اینم پست من.

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

تو Syntax هر دو زبان تفاوت هایی وجود داره، ولی تفاوت ها سلیقه ای نیستند. تفاوت های این چنینی مربوط به استاندارد Syntax اون زبان، استاندارد کامپایلر زبان، و چیزایی از این قبیل هست.

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

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

آخر همه این حرفا میرسیم به حرف یکی از دوستان عزیز که تو همین فروم افتخار آشنایی باهاشون رو داشتم که الان اسمشون رو به خاطر ندارم. چند سال پیش یه بحثی من با ایشون داشتم سر این که VB6 بهتره یا Delphi7. یه جمله بهم جواب دادن که کارو واسه همیشه یه سره کرد:

یه کدومشو یاد بگیر و پول در بیار!

----------


## منصور بزرگمهر

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

متشکرم - بزرگمهر

----------


## hossein-khoshseyar

آقا من دارم تو یه شرکت معتبر کار می کنم و با vb.net  هم برنامه می نویسم . هیچ مشکلی هم ندارم خیلی از همکارام هم C#‎ کار می کنن ولی خیلی راحت اگه مشکلی باشه به هم کمک می کنیم چون این دو تا زبون خیلی شبیه همن . یعنی تو این چند سال تا حالا پیش نیومده اونا با C#‎ بتونن کاری بکنن که من با VB.net  نتونم , وبالعکس

----------


## rooshan2008

سلام 
منم چند تا  از  نوشتها رو خوندم ولی   به نظر منم فرقی نمیکنه  فقط ویبی ساده تر  همین البته C#‎  کد هایی که باهاش نوشته میشه ،  صورت بهتری و  حرفهای گونه تر داره (البته  اصل نتیجه به دست آمده است) 
 تازشم،   با یه نرم افزار می تونید هم VB  رو به C#‎   و هم برعکس این کارو انجام بدین دیگه فرقی نمی کنه  -- معمولاً  برنامه نویسا  به اکثر زبانها یه ناخونکی می زنن و مطابق   میلشون  زبانشون رو انتخاب میکنن

----------


## Sharif Lotfi

اي كاش بجاي بعضي كل كل ها ، دوستان ديگه هم مثل آقاي Mani_rf منطقي با قضيه برخورد مي كردن . بهتره رد و بدل اطلاعات بشه تا نقطه هاي سادگي ،سختي ، ضعف و قوت اين دو زبان محبوب معلوم تر بشه . با اين بحث ها كه بعضي از دوستان مطرح مي كنن فقط آتش معركه زياد ميشه .
من هم نظر خودمو ميگم هر چند بقول آقاي بزرگمهر ممكنه از بد و بيراه بي نصيب نباشيم .
واللا من هم از سال 75 دارم برنامه نويسي مي كنم (البته نه بعنوان يك حرفه اي) اون موقع تو محيط Dos خدابيامرز با زبان ++C مي نوشتم و اين زبان فوق العاده بود (و هنوز هم هست) . بعد از آمدن ويندوز خواستم برم سراغ Visual C ديدم خيلي برام سخت شده رفتم سراغ VB بعد از VB6 هم اومدم تو دات نت ها تا امروز كه هم VB.Net كار مي كنم هم #C هر دو شون رو هم تقريبا بلدم و با هر دو شون هم برنامه نوشتم.
هر دو تا خيلي شبيه همن و شخصا اينو قبول ندارم كه يكي قويتر از اون يكي باشه. ولي اكثر اوقات ترجيح ميدم با VB.Net بنويسم چون محيط كارشو بيشتر دوست دارم .
وقتي IF يا For يا حلقه هاي ديگه رو مي نويسي خودش واست ته حلقه رو مي بنده.
چيدمان كدها رو زير هم برات مرتب مي كنه.
ساختار كار هم كه مثل #C هستش
از نظر قدرت هم كه قربونش برم خداست.
آدم مگه از محيطي كه هم امكاناتش خوبه و هم كامپايلرش قويه و هم خروجيش قابل قبوله فرار مي كنه ؟
من فكر مي كنم بعضي از دوستان در مورد VB.Net تصور Quick Basic رو دارن (ما خودمون هم سال 75 بچه هاي QB كارو دست مينداختيم) ولي خوب VB.Net چيز ديگه است.

----------


## jerjis1912

:تشویق: سلام-من همونی ام که این تاپیک رو زدم

                   حالا شعارم اینه:

*         Microsoft visual basic 2005       * 

*                    The unselfish king of programming languages*


 :تشویق:

----------


## jerjis1912

البته با احترام به سی شارپ - زبان کم گوی و گزیده گوی   :تشویق:

----------


## jerjis1912

> آقا من دارم تو یه شرکت معتبر کار می کنم و با vb.net هم برنامه می نویسم . هیچ مشکلی هم ندارم خیلی از همکارام هم C#‎ کار می کنن ولی خیلی راحت اگه مشکلی باشه به هم کمک می کنیم چون این دو تا زبون خیلی شبیه همن . یعنی تو این چند سال تا حالا پیش نیومده اونا با C#‎ بتونن کاری بکنن که من با VB.net نتونم , وبالعکس


 
سلام - آقا درآمدتون چطوره؟  من خیلی دوست دارم تو این شرکتا مشغول شم.

ولی جرات نمیکنم برم جلو. میشه نمونه هایی از کاراتونو بذارین؟

----------


## Navid Asadi

> *Microsoft visual basic 2005*


تو این دنیا اگه حتی یک روز هم از جهان عقب بیفتی...
رسیدن به قبل یک دوره رنسانس می خواد...
الان که VS2010 اومده تازه رفتی رو 2005...
برو 2008 کار کن دنبال 2010 بیفت...
همیشه سعی کن از آخرین تحولات استفاده کنی...
البته این نظر من بود...

----------


## INeedHelp

از نظر قدرت و امکانات دیگه به همه ثابت شده که    C#‎.net=vb.net
خوب حال برمی گردیم به سالهای قبل از  2002-2003  که دات نت وجود نداشت.
برنامه نویس ها معمولا چند دسته بودند:

   ++c   معمولا 99% حرفه ای   1% غیر حرفه ای
 Java   معمولا 50%   حرفه ای 50% غیرحرفه ای
Delphi      معمولا 70% حرفه ای  30% غیر حرفه ای
Vb6   معمولا          10% حرفه ای   90% غیر حرفه ای
( آمار و درصدها کارشناسی نشده و تقریبی هستند جدی نگیرین)

خوب حالا فرض می گیریم این 4 تا دسته باید یکی از زبانهای   vb   و C#‎   انتخاب کنند.
بیشترین احتمال :

 C++‎,java, Delphi    -------->  C#‎
Vb6                         -------->VB.net
پس از   100%  برنامه نویس های حرفه ای ماقبل سال 2002  ،  95 %  C#‎  رو انتخاب می کنند. 
یعنی از هر 20 نفر برنامه نویس حرفه ای     ماقبل سال 2002  ،   19 نفر C#‎  کار می کنند و 1 نفر vb.net 

حالا در سال 2002 به بعد چه اتفاقی میوفته؟؟!!!!!!  یعنی یک نفر می خواد برنامه نویس حرفه ای بشه کدومو انتخاب می کنه؟
عوامل زیر دخیل هستند. (چیزهایی که به ذهن من میرسه)
1.    اولین بار با چه زبانی آشنا می شن و میتونن یک Heloo world بنویسن. ( احتمالا کفه ترازو به نفع vb  سنگین تره)
2.    در دانشگاهها و مدارس روی کدومشون بیشتر مانور میدن (در ایران شرایط تقریبا برابره)
3.    کدومشون می تونه دهان دوستان و همکلاسی ها رو بیشتر باز کنه ( 100% C#‎ )
4.    در سایتهای اینترنتی به کدوم زبان بهای بیشتری داده میشه (  میشه گفت برابر ولی کسی چه میدونه !)
5.    عمو بیل کی رو بیشتر دوست داره ( خوب معلومه  vb  )
6.    اجتماعی که در اون زندگی میکنید به VB.NET مثل قاقالی نگاه نکنند و باور کنند که بزرگ شده ، واسه خودش کسی شده (شی گرا شده )
7.    اگه سری به سایت برنامه نویس سری بزنه طرفدارن C#‎  و VB.NET باهاش چه برخوردی می کنن
8.    و ...

خوب میشه می گفت کسانی که بعد از سال 2002  وارد برنامه نویس .NET  می شن نسبت 1 به 19 ندارن در بدترین حالت    50% می خوان vb.net  رو یاد بگیرن  البته این برای افراد حرفه ای گفتم اگه افراد غیر حرفه ای رو به این جمع اضافه کنیم طبیعتا 90% می خوان vb.net  رو یاد بگیرند.

خوب بریم سراغ اصل مطلب ، من برنامه نویس VB.Net  هستم اونم بصورت حرفه ای !!!!!! (اینقدر بی وجدان نباشین بزارین فکر کنم حرفه ای هستم از تون کم میشه؟)  هیچ وقت قصد مهاجرت به C#‎  رو ندارم ولی اگه بخوام یک روزی برنامه نویس قابلی بشم باید  C#‎ رو هم بلد باشم. تا در هر شرایطی بتونم تو یک مجموعه که ممکنه پروژه رو با C#‎  بنویسن یا با VB.NET  مفید واقع بشم.

زنده باد VB.NET     زنده باد #C

----------


## arashonline

درود بر همگی
نخست بگم این تاپیک یکی از آموزنده ترین تاپیک های برنامه نویسی برای منه تازه کار بوده (بویژه اون 3 صفحه نخست)

بعد من شرایطم رو می گم شما راهنماییم کنید

برنامه نویسی رو با html شروع کردم بعد یکم javascript یاد گرفتم

وقتی آمدم دانشگاه و c رو شروع کردم فهمیدم اونا اصلا زبان برنامه نویسی نبودن، بعد من رشتم برقه برای برنامه نویسی روی micro  از زبان c استفاده می کردم، الان بعد از 2 سال هنوز وقتی یه برنامه می نویسم کلی ایراد برام پیش میاد، 
از عید شروع کردم با basic برنامه نوشتن، که 10 برابر اون کاری که با c انجام می دادم رو طی یک ما با basic انجام دادم (با کمترین اشتباه)

اما الان که فکرش رو می کنم، همون { های زبان c  کلی بهم حال می داد (نمی دونم چرا وقتی c  می نوشتم یه لذتی داشت)

حالا سواله من: حالا می خوام یه زبان شی گرا از این سه تا رو انتخاب کنم
java
vb.net
C#‎

و از اونجایی که سوادم در برنامه نویسی در حد صفره لطفا بگید با کدوم شروع کنم، (راستش رو بخواید هفته پیش شروع کردم java یاد گرفتن اولش خوب پیشرفت اما بعدش پاک گیج شدم)

الان تازه دارم visual studio 2008 رو دانلود می کنم و هنوز در vb.net و C#‎ حتی اون "hello world"  رو هم ننوشتم

----------


## emadfa

دوست عزیز
ای کاش که واسه سوالت یک تاپیک جدید می زدی ولی ...

Java یک زبان cross-platform هست. ( یک بار بنویس, همه جا اجرا کن.) به این معنی که کد شما به زبان ماشین تبدیل نمی شه بلکه به bytecode تبدیل می شه و JVM این bytecode رو به زبان ماشین تبدیل می کنه ( البته به شکل realtime ). جاوا زبان نسبتا سختی است. ( البته نه به سختی C++‎ ) با این حال زبان بسیار قدرتمندی است و برای برنامه نویسی سیستم های بزرگ مناسب است. هر چند کاربردهای خود را دارد و هنوز بسیاری از کارها با C++‎ انجام می شود!

در صورتی که به دنبال RAD یا توسعه سریع نرم افزار هستید می توانید به دنبال C#‎ باشید. دقت کنید که .Net بسیار آسان تر از Java است ولی در صورت یادگیری به راحتی می توانید به java نیز switch کنید. 
در ضمن:




> حالا می خوام یه زبان شی گرا از این سه تا رو انتخاب کنم


فراموش نکنید که هر چند زبانی مثل C++‎ نیز شی گراست اما از ویژگی های برنامه نویسی رویه ای نیز پشتیبانی می کند و با تابع سر و کار داریم. این گونه برنامه نویسی hybrid نامیده می شود در صورتی که زبان هایی مثل java یا C#‎ اصطلاحا pure oop نامیده می شوند. بنابراین هر دو گروه شی گرا هستند اما شیوه آنها متفاوت است. 


علاوه بر این با توجه رشته و علاقه توصیه می کنم که در کنار یکی از این سه زبان ( با توجه به توضیحات بالا ) حتما ++Cرا نیز یاد بگیرید. 

موفق باشید.

----------


## Navid Asadi

سلام من چندان در مورد java اطلاعاتی ندارم...
راستشو بخواید من الان 17 سالمه از 13 سالگی با برنامه نویسی آشنا شدم(QBasic) مذخرف بود...
از دو سال پیش جدی رو VB کار کردم بد نبود (به هر حال برنامه نویسی به آدم حس خلق کردن میده و جالبه)
از پارسالم شروع کردم با VB.Net کار کردن...
دنیای جدیدی بود از محیط کسل کننده ی VB خبری نبود خیلی سریع یاد گرفتم...
من پیشنهاد میکنم اول VB.Net یاد بگیر بعد در کمتر از 2 هفته میتونی به C#‎ سویچ کنی(اگه بخوای) من که هرچی خواستم VB.Net محیا کرد هنوز به فکر سویچ کردن نیفتادم...

----------


## faravani

با سلام
من هم با نظر بقیه موافقم من خودم VB.NET کار میکنم یعنی اول VB6  کار کردم بعدا دات نت
ولی امروزه بازار C#‎ داغتر از بازار VB و علتش هم من نمیدونم هر زمانی یکی از زبانهای برنامه سازی مد میشه حالا هم C#‎ مد شده

----------


## Navid Asadi

> ولی امروزه بازار C#‎ داغتر از بازار VB و علتش هم من نمیدونم هر زمانی یکی از زبانهای برنامه سازی مد میشه حالا هم C#‎ مد شده


من برای جنبه مالی هنوز برنامه نویسی نکردم!
اما این چیزی که میگید برای افرادی مهمه که برنامه نویسی بلد باشن...
چیزی که مهمه آخر قضیه هستش یعنی پروژه نهایی...
البته من هم قبول دارم C#‎ دهن پر کن تره...

----------


## Mani_rf

سلام دوستان عزیز.

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

*من در حال تهیه مقاله ای با عنوان برتری های VB.NET بر #C هستم که به زودی در سایت قرار خواهم داد تا ضعف های #C برای  VB کارها و #C کار ها نمایان شود.*

از همه VB.NEt کار ها هم خواهش می کنم در صورتی که کمبودی از #C سراغ دارند که در VB وجود ندارد به صورت پیامی خصوصی برایم بفرستند تا در این مقاله از آن هم استفاده شود (البته مشروط بر اینکه خودم قبلا کشف نکرده باشم.)

----------


## arashonline

درود
حالا وارد مرحله بعدی سوال ها شدیم، (برای پاسخ ها ممنون)

الان من شروع می کنم به یادگیری vb.net و java در کنار هم، چون واقعا تازه کارم و اگر روی اینا تسلط پیدا کردم بعد C++‎  رو یاد می گیرم

java رو که روی سایت sun دوره آموزشی خوبی گذاشته، حالا اگه زحمتی نیست، یه مرجع خوب برای یادگیری vb.net بدید

بعد مشکل اصلی من اینه که نمی دونم چطوری میشه روی یه زبان تسلط پیدا کرد، و کلا تسلط پیدا کردن چقدر زمان می بره 

(راستی ببخشید اگه چندان به موضوع تاپیک مرتبط نیست، آخه من تو تاپیک های دیگه که پرسیدم بعد از 1 هفته هنوز کسی جواب نداده، اما این تاپیک خیلی فعاله :لبخند: )

----------


## Navid Asadi

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

----------


## Mani_rf

> درود
> حالا وارد مرحله بعدی سوال ها شدیم، (برای پاسخ ها ممنون)
> 
> الان من شروع می کنم به یادگیری vb.net و java در کنار هم، چون واقعا تازه کارم و اگر روی اینا تسلط پیدا کردم بعد C++‎  رو یاد می گیرم
> 
> java رو که روی سایت sun دوره آموزشی خوبی گذاشته، حالا اگه زحمتی نیست، یه مرجع خوب برای یادگیری vb.net بدید
> 
> بعد مشکل اصلی من اینه که نمی دونم چطوری میشه روی یه زبان تسلط پیدا کرد، و کلا تسلط پیدا کردن چقدر زمان می بره 
> 
> (راستی ببخشید اگه چندان به موضوع تاپیک مرتبط نیست، آخه من تو تاپیک های دیگه که پرسیدم بعد از 1 هفته هنوز کسی جواب نداده، اما این تاپیک خیلی فعاله)



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

----------


## Reza Safa

سلام خدمت دوستان 

من خودم ويبي کارم و ويبي را هم بخاطر سادگيش انتخاب کردم 
کل مطالب سايت رو هم خوندم
بجاي اينکه معايب هر دو زابان را بيان کنيد تا تازه واردها بخواهند زبان مورد نظر را انتخاب کنند 
شما داريد با هم بحث مي کنيد
و به زور مي خواهيد بگيد که فلان زبان از فلان زبان بر تره

مطلب بعدي اينکه تمام برنامه هايي که مي توان با C#‎نوشت با ,vb.net هم مي توان نوشت
من شرکتهاي بزرگي را مي شناسم که هنوز با ويبي دارن برنامه نويسي مي کنن

لطفا سري به سايت http://www.jobsite.co.uk/
بزنيد و شغل برنامه نويس ويبي را هم جستجو کنيد
اين سايتي است که شما مي توانيد در کشور هاي مثل انگليس شروع به کار کنيد اون هم با زبان ويبي
و باور کنيد هنوز شرکتهايي هستند که database انها با microsoft access است



فرقي بين زبان هاي دات نت وجود ندارد

----------


## Microsoft.net

در این که خوانایی کد در #C بیشتره که شکی نیست ، یکی از بزرگترین مزیتهای #C به Vb اینه که تو سی میتونین یک دستور رو توی چند خط بنویسید و این خوانایی کد رو زیاد میکنه البته تو vb هم با _ این کارو شبیه سازی کردن که چیز جالبی به نظرم نیست و دست باز نیست مثل سی ، حالا شنیدم تو 2010 واسه vb این کارو کردن که شبیه سی بتونه یک دستور رو تو چند خط کد بزنه و این خیلی خوبه

----------


## Navid Asadi

اما همیشه تو چند خط نوشتن باعث خوانایی بیشتر نمیشه...

----------


## Mani_rf

> در این که خوانایی کد در #C بیشتره که شکی نیست ،


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




> یکی از بزرگترین مزیتهای #C به Vb اینه که تو سی میتونین یک دستور رو توی چند خط بنویسید و این خوانایی کد رو زیاد میکنه


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




> البته تو vb هم با _ این کارو شبیه سازی کردن که چیز جالبی به نظرم نیست و دست باز نیست مثل سی


بله دوست عزیز به دلیل اینکه به طور معمول هر کد در یک خط نوشته می شود مگر اینکه طول آن خط زیاد باشد در کد نویسی VB.Net برای مشخص کردن انتهای خط از Enter به جای ; استفاده می شود و در صورتی که برنامه نویس بخواهد کدی را در چند خط بنوسد از کاراکتر _ (UnderLine) استفاده می کند. همچنی اگر بخواهد چند کد را در یک خط بنویسد از : استفاده می کند. *(اگر بخواهد)*

----------


## Microsoft.net

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


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



> اما همیشه تو چند خط نوشتن باعث خوانایی بیشتر نمیشه...


100% درسته ، من هم نگفتم همیشه ! خوانایی برنامه در درجه اول به خود برنامه نویس ربط داره و در درجه دوم به امکاناتی که زبان برنامه نویسی در اختیارش میزاره

----------


## Navid Asadi

درسته بعضی وقت ها خوانا میشه نه در 80 کارکتر ( بیش از 100 تا 120 کارکتر...



> ببین دوست عزیز ، این حرف شما سلیقه ایه و ارزش علمی نداره


دقیقا به همین دلیل حرف شما هم ارزش علمی نداره چون خودت میگی سلیقه ای هستش...
من تو برنامه هام تا حد امکان دستورات کوتاه رو در یک خط مینویسم تا تمام چیز هایی رو که در یک تابع نوشتم در یک صفحا داشته باشم ( گاهی تا 7 یا 8 دستور میشه

----------


## mortezamhd

من موندم که خوانایی سی شارپ کجاستتتتتت؟؟؟؟؟؟؟
فقط وی بی :قلب:

----------


## Microsoft.net

> درسته بعضی وقت ها خوانا میشه نه در 80 کارکتر ( بیش از 100 تا 120 کارکتر...
> 
> دقیقا به همین دلیل حرف شما هم ارزش علمی نداره چون خودت میگی سلیقه ای هستش...
> من تو برنامه هام تا حد امکان دستورات کوتاه رو در یک خط مینویسم تا تمام چیز هایی رو که در یک تابع نوشتم در یک صفحا داشته باشم ( گاهی تا 7 یا 8 دستور میشه


http://www.vbrad.com/article.aspx?id=63

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

----------


## jerjis1912

> http://www.vbrad.com/article.aspx?id=63
> 
> اگه این آدرس رو نگاه کنی و با انصاف هم باشی هم از لحاظ علمی بهت ثابت میشه هم از لحاظ تجربی ! من خودم وی بی کارم ولی اعتقاد دارم که خوانایی(Readability) کد در سی شارپ نسبت به وی بی بهتره . در هر صورت بچه های با تجربه و مخصوصا مدیران فروم می تونن در این زمینه نظر بدند .


 
1-basic در ابتدا برای آموزش اومد.
2-روال منطقی و علمی و اصولی سلسله مراتب آموزش از آسون به سخته.
3-مطمعنا کسی که basic رو با هدف فوق بوجود آورد سعی کرد در سراسر این زبان اصل آسانی رو حفظ کنه.
بنابراین basic یک زبان آسان است.از هر نظر.

ادامه ماجرا با ذکر یک مثال:

یک نفر امریکایی میخواد فارسی یاد بگیره.
جمله زیر رو اولین بار میخواد یاد بگیره:
ممکن است یک لیوان به من بدهید.  
if ..... then
.
.
.
end if


بجاش میشه بهش یاد داد که بگه:
میشه یه لیوان بدید  
(...) if
}
.
.
.
{




کلمات میشه و بدید و یه کجای فرهنگ لغت اومدن؟؟؟؟
یک آسانی شکل گرفت ولی سه مشکل بوجود اومد.

با روش دوم نرخ پیشرفتش چطوریه؟؟؟؟

اگه چنتا از این جمله ها تو هم بپیچند و بخواد خلاصه کنه چی؟؟؟

اگه بعد از گفتن جمله بخواد اونچه رو که گفته تحلیل کنه؟؟؟؟؟؟

من یکی که بجای آمریکاییه بودم  میرفتم vb  یاد میگرفتم.
باهاش جهشی پیشرفت میکردم و وقتمو سر شمردن } ها حدر نمیدادم.(میشه -یه -بدید)

                                         البته خوب به ترکا هم باید حق داد. :چشمک: ( من خودم اصالتا ترکم)

----------


## Mani_rf

> http://www.vbrad.com/article.aspx?id=63
> 
> اگه این آدرس رو نگاه کنی و با انصاف هم باشی هم از لحاظ علمی بهت ثابت میشه هم از لحاظ تجربی ! من خودم وی بی کارم ولی اعتقاد دارم که خوانایی(Readability) کد در سی شارپ نسبت به وی بی بهتره . در هر صورت بچه های با تجربه و مخصوصا مدیران فروم می تونن در این زمینه نظر بدند .


من مقاله ای را که لینک داده بودی را خوندم ؛ جالب بود ، خیلی جالب بود اما اگر من جای نویسنده اون مقاله بودم عنوان را از : 

*Top 10 reasons C#‎ is better than VB.NET*
به : 
*Top 10 Comic reasons C#‎ is better than VB.NET*
تغییر می دادم . 
من تصمیم داشتم بعد از خوندش مثائلی را که اشتباه گفته را اعلام کنم اما خوب اشتباهم اینجا بود که اولین  Comment زیرش را هم خوندم.  :قهقهه:  یک نفر قبل از من همه 70% نکاتی را که می خواستم بگم را گفته بود که من هم از اون 30% صرفه نظر می کنم. پیشنهاد می کنم شما هم اولین Comment زیرش را بخوانید.
به زودی کمبود های #C را در برابر VB.Net به شما خواهم گفت، البته کمبود های اساسی نه چیزهای خنده داری مثل کامنت کردن متن که تو Vb.Net روشی بهتر از #C براش ساخته شده و نویسنده او مقاله ازش خبر نداشته و یا نحوه در چند خط نوشتن کد ها که ظاهرا از آن هم خبر نداشته. و ...

همچنین می توانید کامنت های شماره : 9 ، 17 و 24 را هم بخوانی تا از نا آگاهی نویسنده مقاله آگاه بشوی.

----------


## Navid Asadi

من هم خوندم و با شما موافقم

----------


## emadfa

سلام بر همه اساتید vb کار! 

کدوم عبارت حرفه ای تره؟ ( عنوان بهتر: کدوم عبارت به لحاظ درک برنامه نویسی و استیل آن منطقی تره؟ )int intTestValue;
Dim intTestValue As Integerمعلومه که عبارت C-Style منطقی تره! 
بذارید این عبارت رو بازتر بکنم. اول از حساسیت زبان #C ( مثل بیشتر زبانها ) به حروف کوچک و بزرگ می گم. در زبان #C به طور پیش فرض همه کلمات رزرو شده و کلیدی از حروف کوچکند بنابراین یک برنامه نویس معمولی با IQ بالای 10 درصد نیاز به فکر کردن در مورد کوچک و بزرگ بودن نداره! قبول دارم که این احتمال هست که در هر چند هزار خط کد برنامه نویس یک اشتباه بکنه اما با realtime بودن کامپایلری مثل VS این قضیه منتفیه! 
یکی از دوستان قبلا به ; ایراد گرفته بود! 
یکی از نکاتی که در زبان های حرفه ای دنیا وجود دارد همین وجود ; است. دقت کنید که ; هیچ ارزشی ندارد بلکه این یک نماد است برای این که به کامپایلر عزیز! بفهماند که این statement تمام شده و برو به statement جدید! فکر می کنم استفاده از این نماد با توجه به کاربرد اون از کارکترهای زمخت و بی منطقی مثل _ بهتر باشه!  



> ......البته کمبود های اساسی نه چیزهای خنده داری مثل کامنت کردن متن که تو Vb.Net روشی بهتر از #C براش ساخته شده.......


 
MsgBox("Hello, cruel world!") ' A sample old-style comment
MessageBox.Show("Hello, cruel world!"); // A professional comment

----------


## Mani_rf

> یکی از دوستان قبلا به ; ایراد گرفته بود! 
> یکی از نکاتی که در زبان های حرفه ای دنیا وجود دارد همین وجود ; است. دقت کنید که ; هیچ ارزشی ندارد بلکه این یک نماد است برای این که ب*ه کامپایلر عزیز! بفهماند که این statement تمام شده و برو به statement جدید*! فکر می کنم استفاده از این نماد با توجه به کاربرد اون از کارکترهای زمخت و بی منطقی مثل _ بهتر باشه! []


دوست عزیز اون کسی که از ; ایراد گرفته بود من بودم.
 به نکته جالبی اشاره کردی ، برای آنکه به کمپایلر بفهمانیم که یک statement تمام شده به یک کاراکتر نیاز داریم؛ اما مگر این کاراکتر_ حتما باید قابل رویت باشد_؟؟؟؟ در زبان های برنامه نویسی کاراکتر ها به کد اسکی تبدیل می شوند؛ اگر شما بتوانید این را تشخیص دهید که کد اسکی ; برابر با 59 است ، و این را هم بدانید که Enter یکی از کاراکتر های کنترلی است و کد اسکی آن برابر با 13، به نظر شما کامپایلر نمی تواند آنها را تشخص دهد؟؟؟
*آیا به نظر شما تشخیص کد اسکی 59 با 13 برای تشخیص انتهای statement برای کامپایلر تفاوتی دارد؟؟؟* 
یعنی کامپایلر های #C ؛ Java ؛ ++C باید کد ها را ببینند و تشخیص دهند که انتهای یک statement کجاست و کجا باید statement جدید را شروع کند!!!
- آیا به نظر شما این کاراکتر برای برنامه نویسان در نظر گرفته نشده ؟
- فکر نمی کنید که کاراکتر ; از کاراکتر کنترلی Enter زمخت تر و بی منطق تر و بدتر  باشد؟؟؟
- فکر نمی کنید که شما بعد از گذاشتن ; برای شروع خط جدید باید ، باید و باید کاراکتر کنترلی Enter را هم در انتهای خط قرار دهید (یا Enter را بزنید که برای شما کاراکتر را قرار می دهد و در عمل شما می بینید که خط جدیدی ایجاد شده)؟؟؟
- آیا درصورت وجود Enter برای مشخص کردن انتهای خط دیگر نیازی به گذاشتن  ; هم هست؟؟؟
*- و آیا برنامه نویسی را سراغ دارید که بیشتر از 5% دستورات خود را در یک خط مشترک بنویسد؟؟؟


*درباره کامنت هم تفاوت کوچکی در دو زبان وجود دارد اما نه برای یک خط بلکه برای مجموع چند خط که در VB.Net روش جدیدی ارائه شده که ظاهرا بیشتر از آن بی اطلاع ماندن.

و نکته آخر اینکه من به شما یک تشکر بدهکارم - برای دادن معادل کد های دو زبان واقعا متشکرم من به یک مشاور #C کار حرفه ای نیاز دارم که اگر ایرادی نباشد از شما کمک می گیرم. باز هم سپاس گذارم

----------


## emadfa

> *آیا به نظر شما تشخیص کد اسکی 59 با 13 برای تشخیص انتهای statement برای کامپایلر تفاوتی دارد؟؟؟ 
> *یعنی کامپایلر های #C ؛ Java ؛ ++C باید کد ها را ببینند و تشخیص دهند که انتهای یک statement کجاست و کجا باید statement جدید را شروع کند!!!
> - آیا به نظر شما این کاراکتر برای برنامه نویسان در نظر گرفته نشده ؟
> - فکر نمی کنید که کاراکتر ; از کاراکتر کنترلی Enter زمخت تر و بی منطق تر و بدتر باشد؟؟؟
> - فکر نمی کنید که شما بعد از گذاشتن ; برای شروع خط جدید باید ، باید و باید کاراکتر کنترلی Enter را هم در انتهای خط قرار دهید (یا Enter را بزنید که برای شما کاراکتر را قرار می دهد و در عمل شما می بینید که خط جدیدی ایجاد شده)؟؟؟
> - آیا درصورت وجود Enter برای مشخص کردن انتهای خط دیگر نیازی به گذاشتن ; هم هست؟؟؟
> *- و آیا برنامه نویسی را سراغ دارید که بیشتر از 5% دستورات خود را در یک خط مشترک بنویسد؟؟؟
> 
> *


واضح است که کامپایلر برای تشخیص پایان دستورات از یک نماد استفاده می کند که آن می تواند معادل یک ; یا Enter باشد. اما فراموش نکنیم زمانی که تعداد دستورات زیاد شود با یک نگاه خیلی سریع می توان دستورات را تشخیص داد. مثلا در زبان های C-basedمثل #C کافی است که به ; نگاه کنیم. یک دلیل ساده تر: مثلا در دستور for می توانیم چهار دستور مشابه هم را ( به لحاظ عملکرد ) در یک خط کد قرار دهیم بدون این که نظم برنامه به هم بخورد چون ما برای تشخیص پایان دستور منتظر پایان خط نیستیم. 
باور کنید در بسیاری از کدهایی که من شخصا بررسی کردم ( حتی در نرم افزارهای بسیار حرفه ای ) این قضیه را مشاهده کردم. البته در صورتی که خودتان دستی در زبانهایی که گفتید بلدید داشته باشید این نکته را می دانید که هر چند خوانایی برنامه بسیار مهم است اما گاهی اوقات عمل کردن عکس قوانین موجود ( مثل نوشتن چند دستور در یک خط ) باعث خوانایی می شود. ) که البته #C دست ما را برای این عمل بسیار بسیار باز می گذارد!

----------


## jerjis1912

دوستان سی شارپ کاری که با مقایسه - سی رو انتخاب کردید لطفا صادقانه به خودتون پاسخ بدید:

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

آیا قبول دارید که سی کارا جدا از معلومات - خودشون رو یه سروگردن بالاتر از وی بی کارا میدونن؟

به جرات میتونم بگم که 80 درصد از علت انتخاب سی پیچیده تر بودن اونه.

آقای emadfa یادتونه اوایل تاپیک خودتون گفتین:

*من به شخصه زمانی VB هم بلد بودم اما به خاطر سادگی بیش از حد ( ضایع بودن بیش از حد! ) به C#‎ مهاجرت کردم. برای آینده هم قصد دارم در زمینه C++‎ سرمایه گذاری کنم ولی یک چیز خیلی واضح هست. دیگه هیچ وقت به VB بر نمی گردم!* 

سی کارا اکثرا حتی زمانی که دو حالت از هر نظر معادل رو در وی بی و سی شارپ میبینن
باز سعی میکنن با آوردن دلیل و برهان ....

اگه دقت کنید میبینید دلایلی که تو اون سایت (ده علت) مطرح شده اکثرا مواردیه که در نوشتن یک برنامه به ندرت با اونا سرو کار داریم.در حالی که بحث ما روی 95 درصد بقیه ماجراست.

بشینید و یه آمار بگیرید ببینید تو برنامه هایی که تا بحال نوشتین چنتا از اون موارد در این برتری دخیل بودن.

آقای قاضی من حرف دیگه ای ندارم. :چشمک:

----------


## emadfa

> آیا قبول دارید که سی کارا جدا از معلومات - خودشون رو یه سروگردن بالاتر از وی بی کارا میدونن؟
> 
> به جرات میتونم بگم که 80 درصد از علت انتخاب سی پیچیده تر بودن اونه.
> 
> آقای emadfa یادتونه اوایل تاپیک خودتون گفتین:
> 
> *من به شخصه زمانی VB هم بلد بودم اما به خاطر سادگی بیش از حد ( ضایع بودن بیش از حد! ) به C#‎ مهاجرت کردم. برای آینده هم قصد دارم در زمینه C++‎ سرمایه گذاری کنم ولی یک چیز خیلی واضح هست. دیگه هیچ وقت به VB بر نمی گردم!* 
> 
> سی کارا اکثرا حتی زمانی که دو حالت از هر نظر معادل رو در وی بی و سی شارپ میبینن
> باز سعی میکنن با آوردن دلیل و برهان ....


من در ابتدا با ++C نیز آشنایی داشتم. اما مثل هر برنامه نویس دیگری گول زرق و برق برنامه نویسی visual را خوردم. من تا سطح نزدیک به پیشرفته vb.net را آموختم. تازه فهمیدم که هیچی از برنامه نویسی حالیم نیست چون محیط برنامه نویسی .net همه چیز رو از من پنهان کرده. از ساختمان حافظه چیزی درک نمی کنم. فقط می تونم روی برنامه نویسی سفارشی کار کنم و در واقع عملا درک چندانی از برنامه نویسی ندارم. ( با این که به منطق برنامه نویسی تسلط داشتم. )
پس از اون زمان بود که تصمیم گرفتم دو زبان رو برای دو هدف متفاوت استفاده کنم. ++C برای نرم افزارهای جهانی و ایده هایی که قراره سالها روشون کار کنم C#‎.Net برای پروژه های سفارشی یا پروژه هایی که مایکروسافت این زبان رو برای اونها ایجاد کرد. 
می بینید که من هیچ تعصبی به #C ندارم اما به ++C تعصب فراوانی دارم!!! 

در عین حال من هیچ گاه تلاشم برای پیچیده کردن کد نیست! شما این حرف رو باید برای برنامه نویسای تازه  کار بزنید که چون اطلاعاتشون با کدشون برابری نمی کنه به هر نحوی می خواهند که کد پیچیده بشه در صورتی که من بالا هم گفتم که *حتی اگر گاهی چند staement را در یک line بنویسیم این برای ساده کردن کار است.*  در واقع اگر این کار برای پیچیده کردن کد بشه هیچ ارزشی نداره! یقینا برای شما هم بارها پیش اومده که ببینید برخی مواقع عمل کردن خلاف قوانین منطقی تره تا برنامه نویسی به سبک مرسوم! 

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

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

موفق باشید.

----------


## Mani_rf

آقا مگه خودت نگفتی که :



> یکی از نکاتی که در زبان های حرفه ای دنیا وجود دارد همین وجود ; است. دقت کنید که ; هیچ ارزشی ندارد بلکه این یک نماد است برای این *که به کامپایلر عزیز! بفهماند که این statement تمام شده و برو به statement جدید!* فکر می کنم استفاده از این نماد با توجه به کاربرد اون از کارکترهای زمخت و بی منطقی مثل _ بهتر باشه!


خوب من هم جواب این فرضیه محال شما را دادم !!!

شما از اول این بهانه را می آوردی تا من هم به شما می گفتم که مگر شما نگفتید :



> زمانی که تعداد دستورات زیاد شود با یک نگاه خیلی سریع می توان دستورات را تشخیص داد. مثلا در زبان های C-basedمثل #C کافی است که به ; نگاه کنیم. یک دلیل ساده تر: مثلا در دستور for می توانیم چهار دستور مشابه هم را ( به لحاظ عملکرد ) در یک خط کد قرار دهیم بدون این که نظم برنامه به هم بخورد چون ما برای تشخیص پایان دستور منتظر پایان خط نیستیم.


(حالا به این کاری نداریم که *این دو حرف شما کاملا بر ضد همند* و این نشاندهنده این است شما می خواهید کاراکتر اضافی را توجیح کنید)

زمانی که تعداد دستورات زیاد شود و در چند خط باشند کسی به ; انتهای آنها توجهی نمی کند و فرمان های خطوط را می خواند ؛ و اگر چندین دستور در یک خط باشند برنامه نویس به جای در نظر گرفتن ; خوب : را در نظر می گیرد(دیگه آخه بابا یکم منطقی باشید ، سختی تشخیص این دوتا کجاست؟؟؟؟  :متعجب: ) 

و اما نکته آخر :




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


بله دوست عزیز من چندین زبان را آموختم تا بتوان آنها را با اطلاعات مقایسه کنم نه با احساسات. کاملا هم با حرف شما موافقم ؛ گاهی اوقات پیروی نکردن از قائده ها خوانایی را افزایش می دهد. اما خیلی دلم می خواهد آن امکاناتی را که برای خوانیی کد ها #C در اختیار شما قرار داده و VB در اختیار ما قرار نداده بشناسم . البته اگر می خواهید ; و امکان چندخط نویسی بدن کاراکتر اضافی را نام ببرید اگر نگویید بهتر است چون تاحالا 10 باری مطرح شده و من با دلایلی نقضشان کردم که کسی دلابلم را نقض نکرد.
VB.NET
به صورت معمولی هر کد در یک خط بدون نیاز به کاراکتر اضافی.
به صورت معمولی هر کد در یک خط در شرایط خاص استفاده از کاراکتر : برای قرار دادن چندین کد در یک خط.
#C.Net
به صورت معمولی هر کد در یک خط بسته شدن کد با ;
به صورت معمولی هر کد در یک خط در شرایط خاص قرار دادن چندین کد در یک خط بدون نیاز به کاراکتر اضافی.

*شما که این مطلب را می خوانید بگویید کدام منطقی تر است؟؟؟*
به زدن "*آیا این پاسخ را مفید ارزیابی می کنید؟                        *   " نظر دهید که حرف من درست است یا خیر.
با تشکر.

----------


## jerjis1912

آقای emadfa شما گفتین :

*'من در ابتدا با ++C نیز آشنایی داشتم. اما مثل هر برنامه نویس دیگری گول زرق و برق برنامه نویسی visual را خوردم. '*

یعنی امروزه برنامه نویسی که بیاد مثلا هر کنترل datagrideview رو بشینه با ++c با کدنویسی
بسازه گول زرق و برق برنامه نویسی visual را نخورده ؟!

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

اگه اینجوری باشه که شما میگی هیچی دیگه هر کس از dll و com به هر نوعی استفاده کنه 
وارد جرگه فریب خوردگان شده.


اگه صفحه اول رو ببینی منم گفتم که یکی از دلایل این مهاجرت تمایل به سمت دستیابی به ریشه و سرچشمه است.خوب منم همینکه میدیدم تو vb با انتخاب go to definition برای کلاسهای net.
یه راست میرم به object browser و در #c میشه ریشه رو تو کد ادیتور دید خود به خود از #c خوشم میومد.

اما این مزیت چه قدر در کارای من سودمند بود؟

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


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

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

حالا شما بگین کدوم لذتش بیشتره؟

و اصلا علت اونکه شما فرمودی که اکثر افراد تنها با بخش کوچکی از دات نت آشنایی دارن هم همینه که زمان و انرژی برای مطالعه ندارن.

مخلص کلام : میدونی یکی از چیزایی که به عقیده من این زمان و انرژی رو ازشون میگیره چیه؟ 
همین شمردن } ها - ترمیم سطوری که بعد از اجرا تازه مشکلشون تشخیص داده میشه - دقت در بکارگیری سمیکلن - صرف زمان نسبتا بیشتر برای بازخونی کد و تحلیل سلسله مراتبی و...

البته یه کمی هم مناظره و مباحثه و مناقشه با وی بی کارا :چشمک:

----------


## pirmard

> http://www.vbrad.com/article.aspx?id=63
> 
> اگه این آدرس رو نگاه کنی و با انصاف هم باشی هم از لحاظ علمی بهت ثابت میشه هم از لحاظ تجربی ! من خودم وی بی کارم ولی اعتقاد دارم که خوانایی(Readability) کد در سی شارپ نسبت به وی بی بهتره . در هر صورت بچه های با تجربه و مخصوصا مدیران فروم می تونن در این زمینه نظر بدند .



سلام دوست عزیز
درمورد چیزی که فرمودید برعکسع . یعنی اینکه readability در وی بی بیشتر از C#‎ هست و بر عکس C#‎ نسبت به وی بی Writability بیشتری داره .

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

----------


## emadfa

> آقای emadfa شما گفتین :
> 
> *'من در ابتدا با ++C نیز آشنایی داشتم. اما مثل هر برنامه نویس دیگری گول زرق و برق برنامه نویسی visual را خوردم. '*
> 
> یعنی امروزه برنامه نویسی که بیاد مثلا هر کنترل datagrideview رو بشینه با ++c با کدنویسی
> بسازه گول زرق و برق برنامه نویسی visual را نخورده ؟!
> 
> دوست عزیزتر از جان , من هم تو رشته خودم یه زمانی فکر میکردم استفاده از میکرو کنترولر حال نمیده و اگه توابع رو با جبر بول رو کاغذ بسازم و مدار میکرو رو با گیتای منطقی بسازم بهتره
> چون اینجوری میدونم از ب بسم ا... چیکار کردم و لذت حل مسله ریاضی رو بیشتر میچشم.
> ...


دوست عزیز شما کلا از منظور من بد برداشت کردی! 
من با  برنامه نویسی visual مشکلی ندارم و اتفاقا با برنامه نویسی visual از نوع .Net مشکل دارم. همان طور که شما دوستان می دانید در Visual Studio یک نوع برنامه نویسی کلاسیک از نسخه های اولیه به نام برنامه نویسی native وجود دارد ( با نام visual ++C ) که دو حالت Win32 و MFC دارد. این نوع برنامه نویسی قدرتمند ترین شکل برنامه نویسی است. ببینید سخن من این نیست که مثلا در برنامه نویسی datagirdeview را دوباره طراحی و ایجاد کنیم ( که البته همین هم کار احمقانه ای است. ) سخن من این است که وقتی صرفا و صرفا با .Net برنامه نویسی می کنیم از خیلی از مسایل بی اطلاعیم. ابتدا این را بگویم که من شرکت مایکروسافت را دوست دارم که یک زمان مرا متهم به دشمنی با غرب نکنید اما این یک واقعیت است که هدف این شرکت این است خود را بر برنامه نویس تحمیل کند. یک مثل خیلی ساده:
دوستان می دانید که در برنامه نویسی .Net عملا کنترل حافظه از دست برنامه نویس خارج است. این وظیفه به محیط CLR در بخش JIT واگذار شده است. در برنامه نویسی native عملا شما به هر شی یک حافظه اختصاص می دهید و بعد از انجام عملیات آن را آزاد می کنید. همه این کارها به شکل دستی انجام می شود. در صورتی که در Net این کار به شکل GC انجام می شود. این یک مزیت بزرگ است چون برنامه نویس از دست کنترل حافظه رها می شود اما فقط در برخی برنامه ها! مثلا در برنامه های گرافیکی شما نیاز دارید که خودتان شخصا این کار را انجام دهید!!! 

*من با .Net مشکلی ندارم. .Net آمده است که برنامه نویسی را  آسان کند اما .Net کسی را برنامه نویس نمی کند. .Net فقط و فقط یک مکمل برنامه نویس در کنار یک زبان قدرتمند دیگر ( مثل C++‎  یا Delphi یا python  یا ... )* 

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

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

این را هم بگویم که این تنها پاسخ من به انتقادات شما وگرنه شخصا .Net را دوست دارم اما نه در سطحی که به آن وابسته باشم!!! 

*لطفا گفته هایم را باور نکنید فقط اندکی در مورد آن تحقیق کنید!!*

موفق باشید.

----------


## Microsoft.net

> سلام دوست عزیز
> درمورد چیزی که فرمودید برعکسع . یعنی اینکه readability در وی بی بیشتر از C#‎ هست و بر عکس C#‎ نسبت به وی بی Writability بیشتری داره .
> 
> به همین خاطر که وی بی زبان سطح بالاتری حساب میشه و سی شارپ زبان حرفه ای تری شمرده میشه . 
> همیشه دو معیار خوانایی و نویسایی در تقابل هم هستند . در وی بی چون باید صطح بالاتر باشد (و به اصطلاح عامه پسند باشد ) باید خوانا باشد کد . اما در سی شارپ چون تخصصی تره تمرکز روی سادگی در نوشتن صورت گرفته .


منبع     ؟

----------


## omidghadiri

با عرض سلام خدمت تمامی دوستان عزیز و بخصوص طرفداران #C و VB.Net

من تمامی پست هارو خوندم و جاداره اینجا نظر خودم رو عرض کنم که بی لطف نیست که عرض کنم 

بنده برروی هر دو زبان تسلط دارم و باید عرض کنم که تمامی تفاوتهائی که در این دوزبان هست تنها تفاوتهای خیلی کوچکی هستند که به هیچ عنوان ابدا با در نظر گرفتن این مشکلها نمیشه گفت که کدام برتری داره من طرفدار بسیار شدید VB.Net هستم ( کورکورانه نیست ) ، ولی باید عرض کنم در زبان VB.net کاملا کد نویسی راحت تر و همچنین برطرف کردن Error ها بسیار آسانتر هست ، در کل زبان بسیار ساده و در عین حال بسیار کارآمد هست .

در کل به نظر بنده اینها تنها زبانی برای برنامه نوشتن هستند و برای راه اندازی کارهای ما نوشته شدند و یک برنامه نویس باید به هردو این زبانها مسلط باشه و به نظر من اصلا گفتن اینکه از این زبان کوچ کنیم به زبان دیگه ابدا درست نیست چون مزیتهائی که در این زبان هست در آن زبان دیگه نیست که در بالا اشاره کردم و هزاران دلایل دیگه ................


امیدوارمکه دوستان بتونن به هردوزبان مسلط باشن و ابدا به فکر کوچ کردن به زبان دیگری نباشن.



موفق و پیروز و سربلند باشید.

----------


## Mani_rf

> بنده برروی هر دو زبان تسلط دارم و باید عرض کنم که *تمامی تفاوتهائی که در این دوزبان هست تنها تفاوتهای خیلی کوچکی هستند* که به هیچ عنوان ابدا با در نظر گرفتن این مشکلها نمیشه گفت که کدام برتری داره من طرفدار بسیار شدید VB.Net هستم.
> موفق و پیروز و سربلند باشید.


دوست عزیز شما vb کار و من هم vb کار. شما  VB و #C بلدید و من هم  همینطور ؛ در این شکی نیست اما اگر شما به هر دو زبان تسلط داشتی این حرف را نمی زدی . در VB امکاناتی هست که در #C نیست. 
برای مثال خدمت شما و همه بچه های سایت عرض می کنم که *در #C شما امکان پیش و پا افتاده ای مثل تعریف پارامتر اختیاری وجود ندارد.* *(Optioal Parameters)*. 
اگر کسی هست که می گه میشه بگه.

*امکان تعریف چنین روالی در #C وجود ندارد.*
 
*Public Sub Test(Optional* *Byval Parameter as Integer) 

End Sub*

فقط برای نمونه این را لو دادم . چندین امکان دیگر در VB هست که در #C نیست.
در مقاله ای که به زودی در سایت قرار خواهم داد چندین مورد دیگر را برایتان می آورم تا به ضعف های #C پی ببرید.

اما از همه این گذشته *آقا عماد* قضیه سیمیکالون چی شد؟؟؟  :لبخند گشاده!:

----------


## pirmard

> منبع     ؟


فکر می کنم اگه تعریف و برداشت خودتون رو از خوانایی و نویسایی می نوشتین زودتر به نتیجه می رسیدیم . 
در عین حال برای مطالعه، کتابهای کامپایلر معمولا همگی در ابتدا به بررسی این دو پارامتر می پردازند. مثلا کتاب کامپایلر ایهو .
readability : هر چه کد خواناتر باشه (به زبان عامیانه انسان شبیه تر هم میشه) اصلاحا میگن ریدیبیلیتی بالاتری داره . و زبان سطح بالاتری به حساب می یاد .
writability : هر چه نوشتن کد آسونتر باشه اون سینتکس نویسا تره .
برای مثال به این قطعه کد در سی  توجه کنید :
If (i++) ++j ;

میشه معادل این کد رو در بیسیک بنویسین ؟

----------


## hossein-khoshseyar

> سلام - آقا درآمدتون چطوره؟  من خیلی دوست دارم تو این شرکتا مشغول شم.
> 
> ولی جرات نمیکنم برم جلو. میشه نمونه هایی از کاراتونو بذارین؟


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

----------


## hossein-khoshseyar

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

----------


## Navid Asadi

تا حالا کسی در مورد F#‎ چیزی شنیده....
F#‎ تعاملی بین زبان های برنامه نویسی native و visual هستش و سرعت پردازش محاسباتیش چندین برابر C#‎ هستش...(دست رو دست بسیار است)
من فکر نمیکنم درست برنامه های پردازشی خیلی سنگین رو با visual بنویسیم معمولا بهتره این کار ها رو با C++‎ و یا برنامه های تحت داس بنویسیم...
البته اگه اشتباه میکنم بگین!

----------


## jerjis1912

> *اما امروز به یه مسئله جدی برخورد کردم*
> *یه ضعف خیلی بزرگ وی بی در برابر سی شارپ*
> *وی بی در انجام کدهای پردازشی نظیر ضرب و جمع حدود 5 برابر از سی شارپ کند تره*


 
دوستان تمام چیزایی که میگین درست.
اما میانگین بگیرین.همه چیز رو لحاظ کنین. 

بعد از همه بررسی ها این سوال کلیدی رو پاسخ بدید:

اگر فرض کنیم که در طول یک سال *بدون در نظر گرفتن هدف برنامه ها و کاربردشون* ده هزار برنامه در سراسر دنیا نوشته بشه: 

الف-از این ده هزار برنامه برای نوشتن چندتاشون بهتره از VB استفاده بشه؟
ب-از این ده هزار برنامه برای نوشتن چندتاشون بهتره از #C استفاده بشه؟
ج-از این ده هزار برنامه برای نوشتن چندتاشون بهتره از زبانهایی بجز #C و VB استفاده بشه؟

**

البته فکر میکنم بهتر باشه قبل از اینکار منتظر مقاله آقای رضایی باشیم و از مطالب ایشون هم در این بررسی سود ببریم.

----------


## omidghadiri

> دوست عزیز شما vb کار و من هم vb کار. شما VB و #C بلدید و من هم همینطور ؛ در این شکی نیست اما اگر شما به هر دو زبان تسلط داشتی این حرف را نمی زدی . در VB امکاناتی هست که در #C نیست. 
> برای مثال خدمت شما و همه بچه های سایت عرض می کنم که *در #C شما امکان پیش و پا افتاده ای مثل تعریف پارامتر اختیاری وجود ندارد.* *(Optioal Parameters)*. 
> اگر کسی هست که می گه میشه بگه.
> 
> *امکان تعریف چنین روالی در #C وجود ندارد.* 
> 
> *Public Sub Test(Optional* *Byval Parameter as Integer)*  
> *End Sub* 
> 
> ...


با عرض سلام مجدد خدمت تمامی دوستان بخصوص دوست بسیار عزیزم Mani_rf

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


موفق و پیروز و سربلند باشید.

----------


## Mani_rf

> با عرض سلام مجدد خدمت تمامی دوستان بخصوص دوست بسیار عزیزم Mani_rf
> 
> دوست عزیز من هرگز نگفتم که #C بهتر از وی بی هست ، همونطور که میدونید #C  تنها چند سالی هست که آمده و VB قدیمی تر و به قول معروف حرفه ای تر هست و بنا به این دلیل این زبان به علت اینکه سالهاست که کار شده ، بنابراین برروی تمامی قسمتها دسترسی داره و همیشه هم براین اساس میدونم هیچ موقع#C به پای وی بی نمیرسه . 
> تنها خواستم عرض کنم که شما منظور من رو به خوبی متوجه نشدید.
> 
> 
> موفق و پیروز و سربلند باشید.


سلام. اتفاقا من منظور شما را کاملا متوجه شدم اما خوب دنبال بهانه ای می گشتم که یکی از کوچکترین برتری های VB را بیان کنم که بعد از تاپیک شما دیگه مجبور شدم بگم تا #C کارها فکر نکنن که #C همه دنیای برنامه نویسی و VB بی استفاده است .
 به جرئت می توانم بگم بیشتر از 80% از #C کارهای فقط بخواطر بزرگی نام C به سمت #c رفتن نه با تحقیق و دانش ؛ اما خوب این رو هم می دونید که هرکسی اسمش رستم بود که نمی تونه با اسفندیار بجنگه(بابا اصطلاح ادبی :لبخند گشاده!: ).

شما هم اگر چیزهایی از این قبیل را می دانید بگوید تا من در مقالم بگنجانم.البته Private بفرستید.(البته تا حالا 15 مورد را خودم کشف کردم.)
منتظرم

----------


## hossein-khoshseyar

> سلام. اتفاقا من منظور شما را کاملا متوجه شدم اما خوب دنبال بهانه ای می گشتم که یکی از کوچکترین برتری های VB را بیان کنم که بعد از تاپیک شما دیگه مجبور شدم بگم تا #C کارها فکر نکنن که #C همه دنیای برنامه نویسی و VB بی استفاده است .
>  به جرئت می توانم بگم بیشتر از 80% از #C کارهای فقط بخواطر بزرگی نام C به سمت #c رفتن نه با تحقیق و دانش ؛ اما خوب این رو هم می دونید که هرکسی اسمش رستم بود که نمی تونه با اسفندیار بجنگه(بابا اصطلاح ادبی).
> 
> شما هم اگر چیزهایی از این قبیل را می دانید بگوید تا من در مقالم بگنجانم.البته Private بفرستید.(البته تا حالا 15 مورد را خودم کشف کردم.)
> منتظرم


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

----------


## emadfa

> به جرئت می توانم بگم بیشتر از 80% از #C کارهای فقط بخواطر بزرگی نام C به سمت #c رفتن نه با تحقیق و دانش


بابا شما عاشقان سینه چاک vb که هر چی از دهنتون در اومد به توسعه دهندگان نرم افزار که از C#‎ استفاده می کنند گفتید!! یعنی برنامه نویسان C#‎ اینقدر پرت اند؟




> اما خوب این رو هم می دونید که هرکسی اسمش رستم بود که نمی تونه با اسفندیار بجنگه(بابا اصطلاح ادبی).


اتفاقا مثال جالبی بود چون vb و #c  هم مثل رستم و اسفندیار به هم نزدیک اند!! منتها از مدت ها پیش این آقا رستم ما اسفندیار شما رو شکست داده!!  :لبخند گشاده!:  :کف کرده!: 

موفق باشید.

----------


## emadfa

> شما هم اگر چیزهایی از این قبیل را می دانید بگوید تا من در مقالم بگنجانم.البته Private بفرستید.(البته تا حالا 15 مورد را خودم کشف کردم.)


راستی یک نکته مهم که فراموش کردم بگم. 

غیر ممکن هست که یک ویژگی در vb.netباشه ولی در #C نباشه!! چون مایکروسافت .net رو بر مبنای #C طراحی کرده و برخلاف vb.net ( که برخی دستورات از vb 6 به ارث! رسیده ) در .net همه چیز دقیقا براساس ساختار MSIL طراحی شده است. 
البته اگر منظور شما ابزارهایی است که به طور مستقیم در برنامه نقش ندارند و در هر کدوم از زبانهای .net وجود دارند اینجا هم #C پیشتازه!!!

موفق باشید.

----------


## mpmsoft

باسلام

من از سال 2000 با وی بی 6 کار می کردم
ولی درسال 2003 رفتم رو C#‎ و خیلی لذت می بردم و تا 2005 با سی شارپ کار می کردم
ولی دیدم چون از اول با وی بی کار کردم دستم تو نوشتن کدهای وی بی سریعتر هست و از طرفی منابع وی بی به دلیل سادگی اون بیشتر بوده بنابراین وی بی رو انتخاب کردم (کمتر گیر میده  :لبخند گشاده!: ) خدارو شکر تا امروز هیچ مشکلی باهاش نداشتم

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

----------


## Mani_rf

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




> غیر ممکن هست که یک ویژگی در vb.netباشه ولی در #C نباشه!! چون مایکروسافت .net رو بر مبنای #C طراحی کرده و برخلاف vb.net ( که برخی دستورات از vb 6 به ارث! رسیده ) در .net همه چیز دقیقا براساس ساختار MSIL طراحی شده است. 
> البته اگر منظور شما ابزارهایی است که به طور مستقیم در برنامه نقش ندارند و در هر کدوم از زبانهای .net وجود دارند اینجا هم #C پیشتازه!!!
> 
> من واقا متاسفم که این حرف را شما زده اید.


 اگر هر کسی غیر از شما گفته بود به خود نمی گرفتم و می گفتم از بی سوادی و اطلاعات کم است اما اطلاعات شما به من ثابت شده .
باز هم متاسفاته باید بگویم که من گفته ام را درباره فرمانی که در #C نیست و در VB هست کاملا با تحقیق گفته ام. امکان تعریف پارامتر اختیاری(Optional Parameter ) در #C وجود ندارد.

البته اگر شما فکر می کنید که هست خوب معادل آن را در #C بگویید . * و باز هم می گویم که فرمان های دیگری هم وجود دارد که در #C نیست که خواهم گفت .*

و اما :



> بابا شما عاشقان سینه چاک vb که هر چی از دهنتون در اومد به توسعه دهندگان نرم افزار که از C#‎ استفاده می کنند گفتید!! یعنی برنامه نویسان C#‎ اینقدر پرت اند؟


نه دوست عزیز برنامه نویسان #C پرت نیستند اما ایرانی ها همه به دنبال حرفند. شما خودتان می دانید که اگر ++C امکاناتی برای کنترل مستقیم حافظه داشته باشد آن امکانات در #C وجود ندارد.

 #C با دو هدف به وجود آمد.

1- جلب برنامه نویسان ++C برای Application و Web نویسی.
2- جلب برنامه نویسان Java برای Application و Web نویسی.
(یادم نیست تو کدوم قسمت سایت ماکروسافت این رو خوندم وگرنه لینک می دادم. اویل ارائه #c این مطلب را دیده بودم. البته در سایت ماکروسافت.)

پس عملا برتری های زبان C از بین می رود و می ماند چیزهایی ساده مانند :

سادگی و زمان یادگیری.
سینتکس ساده تر .
ایراد یابی ساده تر.
خواندن راحت تر کد ها .
و... 

که برنامه نویس باید آن را تشخیص دهد. اما همه ما ایرانی ها دنبال حرف هم می  دویم تحقیق نمی کنیم. برای همین بیشتر #C کار ها برای ابهت و بزرگی نام C که تقریبا هیچ ربطی به#C که آنها در ذهم دارند ندارد می شوند و معمولا غرور کاذبی برای برتری نداشته زبان شان دارند.برای همین 80% بدون آگاهی به آن روی می آورند.

تاحالا دقت کردی که حتی خود شما هم فکر نمی کردی VB برتری هایی داشته باشد؟؟؟
تاحالا دقت کردی که تو این 100 و خورده ای پوست که زده شده هیچ کس به این نکته اشاره نکرده بود؟؟؟
شما سومین #C کاری بودی که با من وارد بحث شدید. دقت کردی که همه رفتند و من ماندم با کسانی که تازه وارد بحث می شوند با دلایل گوناگون VB را نقظ می کنند.
و دقت کردی که کسی نتوانست ایرادی اساسی بهVB وارد کند؟؟؟
اما خوب همه این ها به یک دلیل بود :
*به دلیل اینکه کسی تفاوت های دو زبان را مورد بررسی قرار نداده بود. و این یعنی اینکه کمتر کسی برای انتخاب زبان تحقیق می کند و زبان های مختلف را مورد بررسی قرار می دهد.*
*البته متاسفانه...*

شما که VB هم می دانید آیا این را هم می دانید که در VB می توان تاریخ را به این صورت تعریف کرد؟
Dim Da as Date = #01/01/2010#آیا در #C شما می توانید به این صورت متغییر تاریخ را مقدار دهی کنید؟
و آیا این را می دانستید

و N چیز مختلف دیگر که دست ما را در برنامه نویسی VB باز می گذارد و در #C شما باید با کد نویسی بیشتر همان اعمال را انجام دهید و اسم آن را حرفه ای گری در کد نویسی می گذارید!!!

من واقا متاسفم.

----------


## Mani_rf

> دوست عزیز شما که اینقدر طرفداری وی بی رو می کنس چرا جواب سئوال من رو ندادید تو چند تا پست قبل یکی از بزرگترین عیب های وی بی رو نسبت به سی شارپ گفتم که اونم سرعت پایین وی بی . در باره این موضوع چه جوابی داری؟


سلام دوست عزیز .

من حرفی که رو هوا زده شده با شد را جواب نمی دهم.
شما و همه برنامه نویسان .Net می دانند که کامپایلر هر دوزبان یکی است و این حرف شما محال به نظر می رسد. اگر این حرف را درباره ++C می گفتید قابل حضم بود اما درباره #C ...

من خودم موردی داشتم که اجرای کدش حدودا 2 دقیقه کاربر را در انتظار قرار می داد اما با تغییر کوچکی در الگوریتمم این فاصله زمانی را به 5 ثانیه رساندم.

کدتان را برسی کنید ، متغییر ها را به حداقل برسانید و در صورت حل نشدن مشکل کدتان را در سایت قرار دهید.

موفق باشید...

----------


## pirmard

> باز هم متاسفاته باید بگویم که من گفته ام را درباره فرمانی که در #C نیست و در VB هست کاملا با تحقیق گفته ام. امکان تعریف پارامتر اختیاری(Optional Parameter ) در #C وجود ندارد.
> 
> البته اگر شما فکر می کنید که هست خوب معادل آن را در #C بگویید . * و باز هم می گویم که فرمان های دیگری هم وجود دارد که در #C نیست که خواهم گفت .*



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

        void func(int a)
        {
        }
        void func(int a, int opt)
        {
        }

----------


## pirmard

> و N چیز مختلف دیگر که دست ما را در برنامه نویسی VB باز می گذارد و در #C شما باید با کد نویسی بیشتر همان اعمال را انجام دهید و اسم آن را حرفه ای گری در کد نویسی می گذارید!!!
> 
> من واقا متاسفم.


1- یک خط کد در صفحه ی قبل نوشتم . لطف کنید معادل آنرا در وی بی بنویسید .
2- نظر خودتون رو در مورد مقایسه خوانایی و نویسایی بین این دو زبان بنویسید .

----------


## emadfa

سلام مانی جان! 

3 نکته نهایی: 
1) من سالها با vb.net برنامه نویسی کردم. اکنون نیز کدی از این زبان را نمی یابم که معادلی در #C نداشته باشد. این تجربیات شخصی من است! به هر حال منتظر مقاله شما هستم و خیلی دوست دارم که برترهای vb را به شکل کلی ببینم!
2) من با آگاهی کامل #C را انتخاب کردم! من از هیچ زبانی به #C مهاجرت نکردم! چون مهاجرت به معنای ول کردن کامل زبان اولیه است در حالی که من هنوز برنامه نویس ++C هستم! متشکرم که اشاره کردید قدرت #C و ++C چگونه است. فکر می کنم که سایر برنامه نویسان #C ( جز اکثریت در ایران! ) نیز از اول با .Net  آشنا هستند. 
3) همین جا از همه دوستانی که در این تاپیک شرکت کردند و باعث افزایش اعتبار آن شدند تشکر می کنم. من به دلیل یک سری مسایل ( توسعه نرم افزار آینده ) از ادامه بحث در این تاپیک ( و کل سایت تا مدتی )  اعلام انصراف می کنم. از دوست بسیار عزیزم Mani_rf کمال تشکر را دارم. 

موفق باشید.

----------


## Mani_rf

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

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

با سپاس فراوان.
مانی رضایی...

----------


## Mani_rf

> با اورلود کردن به راحتی قابل تعریفه و اورلود کردن بهترین روش برای پیاده سازی این حالته . مستندات برنامه نویسی شی گرا هم، همین روش را برای حالت چندریختی (پولی مرفیزم) پیشنهاد می کنند.
> 
> void func(int a)
> {
> }
> void func(int a, int opt)
> {
> }


 :قهقهه: 

شوخی می کنی دوست عزیز؟؟؟
این دوتا چه ربطی به هم دارند؟؟؟؟
در ضمن Overload کردن چند خط به کد های برنامه اضافه می کنه؟؟؟
شما فکر کنید که یک Sub یا Procedure مثلا 700 خط کد داشته باشد. برای سه متغیر اختیاری شما باید 3 بار تابع را کپی کنید یعنی 2800 خط که 1400 خط اون اضافی تازه برای اینکار باید 700 را به توان 3 رسوند تا همه حالت های اون را داشته باشه...  :متعجب: 

و Overload در vb هم وجود دارد.


برای تبدیل کد هم 3-4 روز دیگه که برگشتم معادلش را بهت میگم و میگم که چه فرمان هایی در Vb برای راحتی کار هست.

----------


## pirmard

> شوخی می کنی دوست عزیز؟؟؟
> این دوتا چه ربطی به هم دارند؟؟؟؟
> در ضمن Overload کردن چند خط به کد های برنامه اضافه می کنه؟؟؟
> شما فکر کنید که یک Sub یا Procedure مثلا 700 خط کد داشته باشد. برای سه متغیر اختیاری شما باید 3 بار تابع را کپی کنید یعنی 2800 خط که 1400 خط اون اضافی تازه برای اینکار باید 700 را به توان 3 رسوند تا همه حالت های اون را داشته باشه... 
> 
> و Overload در vb هم وجود دارد.
> 
> 
> برای تبدیل کد هم 3-4 روز دیگه که برگشتم معادلش را بهت میگم و میگم که چه فرمان هایی در Vb برای راحتی کار هست.



نخیر . من با شما شوخی نداشتم . شما گفتید چنین امکانی نیست . من هم راه اصولی این کار را به شما نشان دادم  که بدونین *بر خلاف تصور شما امکان تعریف پارامتر اختیاری در سی شارپ  وجود داره .*( که این امکات نه تنها در سی شارپ بلکه در ابتدایی ترین نسخه های C++‎ هم وجود داشته . اما بیسیک به تازگی این امکان بهش اضافه شده که صحبت از تاریخچه ی زبانها رو کنار می زارم)

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

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

برای نوشتن مشابه آن کد یک خطی که یک دستور شرطی ساده بود هم ما در خدمتیم . 

نظر خودتون رو در مورد مقایسه ی نویسایی و خوانایی هم سوال کرده بودم که جوابی ندادید .

----------


## Microsoft.net

> دوست عزیز شما vb کار و من هم vb کار. شما  VB و #C بلدید و من هم  همینطور ؛ در این شکی نیست اما اگر شما به هر دو زبان تسلط داشتی این حرف را نمی زدی . در VB امکاناتی هست که در #C نیست. 
> برای مثال خدمت شما و همه بچه های سایت عرض می کنم که *در #C شما امکان پیش و پا افتاده ای مثل تعریف پارامتر اختیاری وجود ندارد.* *(Optioal Parameters)*. 
> اگر کسی هست که می گه میشه بگه.
> 
> *امکان تعریف چنین روالی در #C وجود ندارد.*
>  
> *Public Sub Test(Optional* *Byval Parameter as Integer) 
> 
> End Sub*
> ...


متاسفانه بعضی وقتها سطحی نگری و نا آگاهی افراد باعث بوجود اومدن تعصبات بی جا میشه و جالبه که این موضوع رو با اکراه لو دادن میگن (مثل اینکه کشف بزرگی رو فاش کرده باشن!) ، این Optional بودن پارامتر ها متاسفانه از vb6 به vb.net با ارث رسیده و به علت هزینه های سنگین تصحیح کد مشتریان مایکروسافت حذف نشده ، ولی طبق اطلاعاتی که دارم تیم وی بی مایکروسافت امکان حذف این Option رو در ورژن های آتی داره برسی میکنه دلایلشم زیاده از ناخوانا و ابهام انگیز بودن کد موقعی که ترکیب پارامترهای Optional با غیر Optional بگیرید تا پیچیده شدن فرایند کامپایل و همچنین تولید کد IL تا اشکالاتی که در فاز Optimization برای کامپایلر بوجود میاره ... هرچند مطمینم الان یکی دیگه از دوستان پیدا میشه میگه نخیر این موضوع خوانایی برنامه رو بالا میبره (فکر میکنم توی تعریف خوانایی با هم اختلاف اساسی داریم ) در هرصورت یک وی بی کار وقتی به کد وی بی نگاه میکنه هر چقدر هم کد کثیف باشه به نظرش مفهوم تر میاد تا یه زبون دیگه واسه همینه که میگم تعریف خوانایی کد ما با هم متفاوته

----------


## Mani_rf

دوستان عزیز باز هم سلام.
اول از همه عضر خواهی من را برای چند وقت نبودنم بپذیرید تا بریم سراغ باقی ماجرا.

اول درباره کدی که pirmard جان گفتند ترجمه کن. این کد شما بود درسته؟

if (i++) ++j;
دوست عزیز کد شما از لحاظ دستوری ایراد دارد، میگی نه؟؟ امتحان کن . شما به عنوان شرط نوشتی ++I 
*مگر می توان برای شرط دستور انتصاب به کار برد؟*   :لبخند: 
بهتر نیست کمی بیشتر دقت کنی؟؟؟

و بعد از آن اگر منظور شما :

if (i) ++j;است باید بگویم بله معادل آن می شود : If i then j+=1
دوست عزیز Increment و Decrement بهترین شکل انجام این کارند و من این را قبول دارم اما فراموش نکن که  I++;
*برابر با 4 کاراکتر و** :* I +=1
 *هم برابر 4 کاراکتر است.* 
 اما اگر قرار باشد با 2 جمع شود چی ؟؟؟ 
 و اما امکان دارد شما این کد را برای من به #C تبدیل کنی؟ 
Dim TestLableObject As New Label With {.Text = "Test", .ForeColor = Color.FromArgb(QBColor(6)), .Top = 125}
و یا این کد را :
ِDim S as String ="01/01/2001"
Dim D as Date = S
البته با فرض اینکه S متغییری است که که کاربر به همین شکل برای شما آن را مقدار دهی می کند


و اما :



> به شما نشان دادم که بدونین *بر خلاف تصور شما امکان تعریف پارامتر اختیاری در سی شارپ وجود داره** .*




دوست عزیز به این نمی گویند وجود پارامتر اختیاری به این می گویند درپوش گذاشتن بر نبود پارامتر اختیاری. عملکرد این دو کد کاملا متفاوت است در قسمت بالا گفتم که اگر شما تابعی با 4 متغیر اختیاری داشته باشید که دارای مثلا 200 خط کد باشد و 10 متغیر متفاوت و *بخواهید آن را با** Overloading* *پیاده سازی کنید باید 4^4*200 خط کد بنویسید**. * و 10 * 4 متغییر تعریف کنید که *حجم کلاس شما را** X* *برابر افزایش خواهد داد**.* (هم از لحاظ تعداد خط کد و هم از لحاظ حافضه اشغالی.)

و اما:



> یک نکته ی نسبتا ساده رو باید گوشزد کنم : زیاد شدن تعداد خطوط برنامه نقطع ی ضعف نیست . هر چند بدیهیه اما چون دیدم شما دایما به فکر شمارش خطوط و شمارش سمی کالون! و آکولاد پرداختین گفتن شاید لازم باشه یادآوری کنم .




بله دوست عزیز من در این مورد کاملا با شما موافقم ، زیاد شدن تعداد خطوط برنامه نقطه ضعف نیست ؛ اما به شرط آن که شما بدانید که بهترین الگوریتم را برای انجام عمل انتخاب کرده اید. و زبان* مجبورتان نکند برای اختیار دادن به خودتان برای مقدار دهی یک پارمتر، تابع را دو یا سه بار بنویسید*.

و اما :




> *
> آورلود کردن بهترین روش برای ایجاد چنین فانکشنهایی هست و برنامه نویسی شی گرا چنین چیزی را پیشنهاد می کند
> *




من در 10 سال سابقه برنامه نویسی ام چنین چیزی نه شنیده  نه دیده ام. شما این مطلب را کجا خوانده اید ! *لینک بدید* تا اطلاعات ما هم بیشتر شود.




> به صورت واضح بگید که آیا این رو قبول دارید یا خیر ؟ اصلا بگید که آیا صحبت شما بر برنامه نویسی شی گرا تکیه داره ؟ یا صرفا تعداد خطوط کمتر و تعداد سمی کالون کمتر تنها ملاک کار شماست ؟




به صورت واضح می گویم که هنگامی که پارامتر اختیاری در اختیار برنامه نویسی سان قرار دارد* بهترین راه سریع ترین و کوتاه ترین راه است* (البته منظورم از سریع و کوتاه تفاوت 10 یا 20 کاراکتر نیست بلکه تفاوت 40 یا 50 خط است). 
نه دوست عزیز من این را قبول ندارم ؛ این حرف شما فقط تعسب است.

و اما :



> نظر خودتون رو در مورد مقایسه ی نویسایی و خوانایی هم سوال کرده بودم که جوابی ندادید .




دوست عزیز شما را نمی دانم اما اگر در مقابل من این دو کد را قرار دهند : : #C 
  {          

    {      

{
 
 : Vb

      End IF   
       Next 
 While

من می گویم تشخیص حلقه و شرط در VB راحت تر است تا در #C . مخصوصا که در #C باید آکولاد ها گذاشته شوند اما در VB انتهای حلقه و شرط توسط زبان گذاشته می شودند و نیازی به نوشتن نیست.

*و اما* *Microsoft.net**عزیز** .*





> متاسفانه بعضی وقتها سطحی نگری و نا آگاهی افراد باعث بوجود اومدن تعصبات بی جا میشه و جالبه که این موضوع رو با اکراه لو دادن میگن (مثل اینکه کشف بزرگی رو فاش کرده باشن!)




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




> این Optional بودن پارامتر ها متاسفانه از vb6 به vb.net با ارث رسیده




بله دوست عزیز این امکان از نسخه های قبلی VB به آن ارث رسیده البته خوشبختانه و از VB5 نه 6. 




> و به علت هزینه های سنگین تصحیح کد مشتریان مایکروسافت حذف نشده




دوست عزیز* چه هزینه سنگینی؟* مگر فرمان Let و SET  حذف شد ما چیزی گفتیم و یا نوع Any یا شئ Object  ،Line , OLE حذف شد و یا ... حذف شد ما دم زدیم؟؟؟

دوست عزیز شما را نمی دانم اما به ما در دانشگاه گفته اند که هزینه در برنامه نویسی یعنی کد نویسی بیشتر یعنی دستور انتساب یک واحد هزینه و یا حلقه For  به تعداد اجرا هزینه در بر دارد(به بیان ساده). تعریف شما از هزینه چیست؟ چند بار تکرار تابعی برای نگذاشتن چند پارامتر اختیاری!!!!




> ولی طبق اطلاعاتی که دارم تیم وی بی مایکروسافت امکان حذف این Option رو در ورژن های آتی داره برسی میکنه دلایلشم زیاده از ناخوانا و ابهام انگیز بودن کد موقعی که ترکیب پارامترهای Optional با غیر Optional بگیرید تا پیچیده شدن فرایند کامپایل و همچنین تولید کد IL تا اشکالاتی که در فاز Optimization برای کامپایلر بوجود میاره ...




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

و اما در آخر من نه ، ماکروسافت و دیگر سایت هایی که امکانات4 #C را اعلام می کنند مژده داده اند که این امکان *در نسخه 4** #C به آن اضافه خواهد شد**.* یعنی *کمبودی در** #C* *جبران خواهد شد* و اگر هم به قول شما این کار هزینه سنگینی دارد *سی شارپ هم این هزینه سنگین را متحمل خواهد شد**.* 
این هم لینک که نگویید از خودم این حرف را در آوردم :

http://weblogs.asp.net/podwysocki/ar...he-scenes.aspx
این هم دومین لینک : 

http://en.wikipedia.org/wiki/Comparison_of_C_sharp_and_Visual_Basic_.NET#Featur  es_of_Visual_Basic_.NET_not_found_in_C.23

 و اگر بیشتر می خواهید این عبارت را در Google جستجو کنید:
optional parameters C#‎ 4

و این هم پیش نمایشی از پیاده سازی این امکان در 4 #C  برای دوستان علاقمند :



public TextBoxInfo(    
  [Optional, DefaultParameterValue("")] string text,  
  [Optional, DefaultParameterValue(10f)] float size,  
  [Optional, DefaultParameterValue(50f)] float width,  
  [Optional] Color color)    
{    
    this.text = text;    
    this.size = size;    
    this.width = width;    
    this.color = color;    
}
و در آخر هم تکیه ای می زنیم بر جمله دوست عزیزمان : 




> متاسفانه بعضی وقتها سطحی نگری و نا آگاهی افراد باعث بوجود اومدن تعصبات بی جا میشه


واقعا امان از این ناآگاهی ها و سطحی نگری ها...

می دونم کسی این تاپیک را تا ته نمی خونه اما هرکس درباره این تاپیک با من موافقه لطفا یک تشکر پاش بزنه....

----------


## emadfa

> متاسفانه بعضی وقتها سطحی نگری و نا آگاهی افراد باعث بوجود اومدن تعصبات بی جا میشه و جالبه که این موضوع رو با اکراه لو دادن میگن (مثل اینکه کشف بزرگی رو فاش کرده باشن!)


کاملا موافقم. زبانی که از نسخه kindergarten vb 6   :لبخند:  به ازث رسیده! من از این دوست عزیز تعجب می کنم! همه دنیا دارن از زبانهای C-Style استفاده می کنند اون وقت دوستمون می گه که به زودی vb جایگزین #C می شه یا مثلا سبک vb از ++C بهتره :متعجب: !!!!
من که تا الان با brace یا semicolon مشکلی پیدا نکردم فکر نمی کنم در دنیا به جز برنامه نویسای vb کس دیگه ای هم با اینا مشکل داشته باشه!!!

راستی کتاب N برتری vb بر #C چی شده؟؟؟ :متعجب:

----------


## Mani_rf

سلام عماد ، خوشحالم برگشتی.
اما  :متعجب:  من کی گفتم که VB جای C را می گیره!!!!!!!!!!!!!!!!!!!

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

راستش را بخوای مقاله را حدودا 10 صفحه اش را تمام کردم اما یکم مونده. به اندازه کافی وقت و انرژی برای تموم کردنش ندارم اما خوب حتما تمومش می کنم

----------


## MohsenPS

سلام
قصدم دفاع از هیچکدوم از طرفین نیست، فقط فکر کردم خوبه تجربه خودم رو در مورد لزوم وجود پارامترهای انتخابی با شما مطرح کنم. نگاه کنید به کد زیر که برای باز کردن یک فایل اکسل در VB ازش استفاده میشه :
ExcelWBook = ExcelApp.Workbooks.Open("C:\MyFile.xlsx")
حالا ببینید برای باز کردن همون فایل در #C   من باید چند پارامتر غیر ضروری به تابع بفرستم :
ExcelWBook = ExcelApp.Workbooks.Open("C:/MyFile.xlsx", 0, false, 5, "", "",false, Excel.XlPlatform.xlWindows, "" ,true ,  false, 0, true, false,  false);

امیدوارم همونطور که Mani_rf  گفت این نقیصه در نسخه بعدی #C  برطرف بشه، چون #C  هم به اندازه VB  برام دوست‌ داشتنیه.  :چشمک:

----------


## pirmard

> دوستان عزیز باز هم سلام.
> 
> *مگر می توان برای شرط دستور انتصاب به کار برد؟*  
> دوست عزیز Increment و Decrement بهترین شکل انجام این کارند و من این را قبول دارم اما فراموش نکن که  I++;
> *برابر با 4 کاراکتر و** :* I +=1
>  *هم برابر 4 کاراکتر است.* اما اگر قرار باشد با 2 جمع شود چی ؟؟؟




 
اصلا منظور تعداد کرکتر و سمیکالن نبود دوست عزیز . منظور استفاده از تقدم و تاخر مقداردهی و استفاده از مقدار آن بود . 

واضحتر بگم :
int i;
            i = 0;
            if (i++ == 1) System.Windows.Forms.MessageBox.Show("ok");

و مقایسه با :

int i;
            i = 0;
            if (++i == 1) System.Windows.Forms.MessageBox.Show("ok");

حال منظور روشن شد ؟ معادل این دو چه می شود در وی بی ؟ 
(تاکید می کنم باز هم منظور من شمارش سمیکالن و آکولاد باز و ... نیست )




> و اما :





> 





> دوست عزیز به* این نمی گویند وجود پارامتر اختیاری* به این می گویند درپوش گذاشتن بر نبود پارامتر اختیاری. *عملکرد این دو کد کاملا متفاوت است*



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




> بله دوست عزیز من در این مورد کاملا با شما موافقم ، زیاد شدن تعداد خطوط برنامه نقطه ضعف نیست ؛ اما به شرط آن که شما بدانید که بهترین الگوریتم را برای انجام عمل انتخاب کرده اید. و زبان* مجبورتان نکند برای اختیار دادن به خودتان برای مقدار دهی یک پارمتر، تابع را دو یا سه بار بنویسید*.
> 
> //
> 
> دوست عزیز شما را نمی دانم اما اگر در مقابل من این دو کد را قرار دهند : : #C 
>   {          
> 
>     {      
> 
> ...


بحث در این مورد یه کم تخصصی تره . و خوب حدس می زنم که شما زیاد طالب دونستن در این موارد نباشین وگرنه در درسهای رشته ی کامپیوتر به بررسی این موارد زیاد پرداخته میشه . 
فقط می تونم بگم که حرف شما مثل اینه که بگین زبان فلان مثلا تابغ فاکتوریل را دارد پس خوب است اما زبان فلان چون فاکتوریل ندارد و باید مثلا هی ضرب کنیم و طولانیه بد است ! که خوب مسلما چنین نیست . چیزی که شما تمام هم و غمتان را بر روی آن گذاشته اید (ساده نویسی) همان نویسایی است )writability(   که من نظر شما رو در مورد خوانایی و نویسایی پرسیدم اما جواب شفاف نگرفتم که فکر می کنم لازمه براتون مجدد توضیح بدم :
نویسایی یا رایتیبیلیتی به سهولت در نوشتن کد ربط دارد و بر عکس خوانایی یا ریدیبیلیتی به سهولت در خواندن کد 
مثلا همین مثالی که شما زده اید و آکولادهای سی شارپ را با next , while  و ... مقایسه کرده اید مثال روشنی است . با توجه به اینها روشنه که نوشتن آکولاد ساده تر از نوشتن کلمات رزور وی بی ه . که این یهنی نویسایی بالاتر . از طرف دیگه به قول شما تضخیص حلقه و شرط (مخصوصا" تو در تو) در وی بی راحت تره و این یعنی خوانایی بالاتر . 
در مورد* این مثال* و مقایسه نویسایی و خوانایی اگر شبهه ای دارید بفرمایید .
همیشه بین خوانایی و نویسایی رابطه ی عکس وجود داره . هر چه نویسایی بره بالا خوانایی میاد پایین و برعکس . زبان هایی که کاربران خودشون رو حرفه ای می دونن ، سعی در بالابردن نویسایی می کنن (تا سزعت نوشتن کد بالا بره) و از طرفی چون کاربر خودشون رو حرفه ای می دونن زیاد نگران ناخوانا شدن کد نیستن .(امیدوارم صرفا کلمه ی حرفه ای بودن و ... باعث موضع گیری شما نشه) 
به صورت تجربی هم دیدین که کسانیکه سی شارپ کار هستن برای اولین بار که کدهای وی بی رو ببینن یه چیزایی متوجه میشن . اما یه وی بی کار معمولا زمانیکه کد سی شارپ رو ببینه کمی گیج میشه و معمولا اولین ایرادی که می گیره از همین آکولادهاست و میگه که گیج کنندس . که خوب حرف قابل قبولیه .





> و اما :
> من در 10 سال سابقه برنامه نویسی ام چنین چیزی نه شنیده  نه دیده ام. شما این مطلب را کجا خوانده اید ! *لینک بدید* تا اطلاعات ما هم بیشتر شود.


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





> نه دوست عزیز من این را قبول ندارم ؛ این حرف شما فقط تعسب است.


متوجه منظورتون نشدم ؟ اینکه اصرار بر استفاده همیشگی از متد و راهکارهای شی گرا دارم تعصب ه ؟ منظورتون همین بود ؟

----------


## golestani

من دات نت کار نکردم اما 5 سال با ++C  کار کردم 6 ماه با ویژوال سی و 8 سال با ویژوال بیسیک. هیچ زبانی به زبانهای c نمیرسه. هرکاری ممکنه و ناممکن وجود نداره. کلاسهای MFC خیره کننده هستند.دسترسی سطح پایین به سخت افزار و نرم افزار عالی است. اما برای کوچکترین مسئله ای باید 10 ها خط کد بنویسید. هیچ گریزی از برنامه نویسی شی گرا وجود ندارد. خوانایی کدها و توابع جدید و آرگومان تابع ها سخت است.کنترل خطا بسیار وحشتناک است و الی آخر اما در ویژوال بیسیک کویت برنامه نویس ها شما هرکاری نمیتوانید بکنید اما کارهایتان به آسانی امکانپذیر است. در کتاب های آموزشی انتشارات مایکروسافت و مک گروهیل در باره ویژوال بیسیک بار ها تاکید شده است که ویژوال بیسیک برای دیتابیس پروگرامینگ طراحی شده و حتی بهترینه. اما محدودیت آبجکت ها و کلاس ها دیوانه کننده است. با تمامی صحبت ها من بزودی به ویژوال سی دات نت یا سی شارپ دات نت پناه خواهم برد.

----------


## vb.net2008

به نظر من vb عاليه . من يه كم با C++‎ كار كردم اما اصلا از نحوه نوشتن كد ها توي اين زبان خوش نمي ياد

----------


## Mani_rf

> اصلا منظور تعداد کرکتر و سمیکالن نبود دوست عزیز . منظور استفاده از تقدم و تاخر مقداردهی و استفاده از مقدار آن بود . 
> 
> واضحتر بگم :
> int i;
>             i = 0;
>             if (i++ == 1) System.Windows.Forms.MessageBox.Show("ok");
> 
> و مقایسه با :
> 
> ...


بفرما دوست عزیز این هم معادل این دو : 

 

        Dim I As Integer
        I = 0
        I += 1
        If I = 1 Then MsgBox("ok")
 و

        Dim I As Integer
        I = 0
        If I = 1 Then MsgBox("ok")
        I += 1
 
اما شما معادل اون دوتا که من دادم را نگفتید ها. شما هم بگید تا بیحساب بشیم.

اینا بودن دیگه نه :

 
Dim TestLableObject As New Label With {.Text = "Test", .ForeColor = Color.FromArgb(QBColor(6)), .Top = 125}
و یا این کد را :
ِDim S as String ="01/01/2001"
Dim D as Date = S
البته با فرض اینکه S متغییری است که که کاربر به همین شکل برای شما آن را مقدار دهی می کند

فقط بی زحمت این کد را هم تبدیل کن تا بچه ها ببینن به توان رساندن چند عدد تو #C چقدر از VB دشوار تره .

 Dim I As Double
        I = (2 ^ 3) ^ 6 ^ 2 ^ (8 ^ 2)

میگم یعنی به نظر شما #C با همه بزرگیش نباید عملگر توان داشته باشه!!! البته دقت کن *عملگر* نه تابع. حتما می دانی که سرعت و راحتی کاربردشون چقدر فرق می کنه.

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






> من نمی دونم چرا نمی خاید قوبل کنید که سی شارپ پارامتر اختیاری رو هم ساورت می کنه ؟ ! در هر صورت من نشون دادم که پارامتر اختیاری رو میشه استفاده کرد با آورلودینگ و این یعنی اینکه پارامتر اختیاری وجود داره . 
> اینکه کد طولانی میشه برای نوشتن یه کارکرد خاص به معنی ساپورت نکردن اون نیست ! در صورتی که ظاهرا شما گفتید *پارامتر اختیاری نداریم چون کدش طولانیه !* 
> گفته بودید عملکرد این دو متفاوته . ممکنه *فقط در مورد تفاوت این دو در عملکرد* بنوییسید .


دوست عزیز اتفاقا من هم نمی دانم شما چرا نمی خواهید قبول کنید که کارکرد این دو کاملا متفاوت است و چنین چیزی در #C تعریف نشده. در زبان های برنامه نویسی امکاناتی در اختیار برنامه نویسان قرار داده شده و امکاناتی هم قرار داده نشده ، برای مثال تابعی در VB وجود دارد با نام StrReverse که کار آن معکوس کردن رشته است و در #C این تابع وجود ندارد. اما این *به* *این معنا نیست که با  #C نمی توان هیچ رشته ای را معکوس کرد!!!*  بلکه برای انجام این کار در #C برنامه نویس باید تابع را خودش بنویسد  و در VB تنها فراخوانی تابع لازم است. 

کدام ساده تر است :

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    StrReverse(X)    
End Sub


و یا 




public string Reverse(string text)
{
    char[] cArray = text.ToCharArray();
    string reverse = String.Empty;
    for (int i = cArray.Length - 1; i > -1; i--)
    {
        reverse += cArray[i];
    }
    return reverse;
}
//========================

        private void Form1_Load(object sender, EventArgs e)
        {
    Reverse(X)      

{ 


مظور من را متوجه می شی؟؟ مثل این می مونه که من بگم خوب Increment تو #C که چیزه خاصی نیست خوب تو VB بنویس 1=+  .
حالا اصلا فرض که شما درست می گید و ما اشتباه می کنید . پس چرا مایکروسافت تو نسخه 4 #C این امکان را اضافه کرده. می توانی نمونه اش را تو  آخر تاپیکی که ازش نقل قول گرفتی ببینی . یا لینک هایی که دادم را مطالعه کنی.
(شایدم من و مایکروسافت داریم اشتباه می کنیم.)




> فقط می تونم بگم که حرف شما مثل اینه که بگین زبان فلان مثلا تابغ فاکتوریل را دارد پس خوب است اما زبان فلان چون فاکتوریل ندارد و باید مثلا هی ضرب کنیم و طولانیه بد است ! که خوب مسلما چنین نیست .


در این باره شما درست می گویید اما در صورتی که VB دارای 168  تابع گوناگون باشد که #C از آنها محروم است قضیه کمی با آن یک تابع فاکتوریل تفاوت دارد نه (اگر خواستی لینک 168 تابع را بدم).




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


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

بگذار منظور را ساده بگویم شما این کد را در VB بنویس تا نتیجه را ببینی
 Dim Variable A Str
 If V =  "Test 
شما هنگامی که می نویسی Dim Variable A  و فاصله ای قرار می دهی As کامل می شود و قتی Str را می نویسی با Enter کردن String کامل می شود.
به هنگام نوشتن If V و قرار دادن فاصله نام متغییر Variable کامل میشود. تنها کافیست = و Test" را قرار دهید و Enter کنید تا VB مابقی کثری ها را برایتان کامل کند. و این نتیجه را به شما بدهد :

        Dim Variable As String
        If Variable = "Test" Then

        End If
یعنی حتی نیازی نیست انتهای رشته را مشخص کنید و یا برای شرط پرانتز بگذارید.
 جالب است نه ؟ دوستان حتما با این دید امتحان کنید. کلمات کلیدی تکمیلی مانند Next , End If , Then و ... در VB نیازی به نوشتن ندارند, کافیست کلمات اساسی را نوشته زبان آنها را برایتان آرایش کند.اما آکولاد ها حتما باید در #C نوشته شوند.. *با این تفسیر نوشتن آکولاد ساده تر است یا ننوشتن چیزی. خوانایی بالاتر همراه با نوشتی راحت تر. کدام بهتر است ؟؟؟*




> همیشه بین خوانایی و نویسایی رابطه ی عکس وجود داره . هر چه نویسایی بره بالا خوانایی میاد پایین و برعکس .


قبول دارید که VB خوانایی و نویسایی را گرد هم آورده؟؟؟




> زبان هایی که کاربران خودشون رو حرفه ای می دونن ، سعی در بالابردن نویسایی می کنن (تا سزعت نوشتن کد بالا بره)


و پس با این تفسیر شما کاربران VB حرفه ای ترند؟؟؟ (البته این اصلا این حرف من نیست ها! حرف دوستمونه.)




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



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

تعریف متغییر ، تعریف چندین متغییر و در نهایت تعریف آرایه.
شرط IF > دستور پرشی Goto > ساختن حلقه تکرار با آن > و در نهایت حلقه For

به این روند آموزشی گفته می شود که باعث می شود که نو آموز هدف استفاده از فرمان یا الگووریتم را بهتر بی آموزد.




> متوجه منظورتون نشدم ؟ اینکه اصرار بر استفاده همیشگی از متد و راهکارهای شی گرا دارم تعصب ه ؟ منظورتون همین بود ؟


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


موفق باشی...

----------


## pirmard

> بفرما دوست عزیز این هم معادل این دو : 
> 
>          Dim I As Integer
>         I = 0
>         If I = 1 Then MsgBox("ok")
>         I += 1



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





> اما شما معادل اون دوتا که من دادم را نگفتید ها. شما هم بگید تا بیحساب بشیم.


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





> میگم* یعنی به نظر شما #C با همه بزرگیش نباید عملگر توان داشته باشه!*!! البته دقت کن *عملگر* نه تابع. حتما می دانی که سرعت و راحتی کاربردشون چقدر فرق می کنه.


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




> فقط لطفا تبدیل کن که خدایی نکرد بچه های سایت فکر نکنن VB بلد نیستی.
> در ضمن برای تبدیل به سراغ سایت های انجام این کار نرو چون جواب درستی نمی گیری.دو تا از 3تا کد بالا را با مشکل تبدیل می کند. ضمنا من عادت دارم کد را در زبان مورد نظر تبدیل می کنم و از آن خروجی می گیرم تا از درستی آن مطمعن شوم، شما هم این کار را انجام بده ضرر ندارد.


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





> دوست عزیز اتفاقا من هم نمی دانم شما چرا نمی خواهید قبول کنید که کارکرد این دو کاملا متفاوت است و چنین چیزی در #C تعریف نشده. * *به* *این معنا نیست که با  #C نمی توان هیچ رشته ای را معکوس کرد!!!* 
> حالا اصلا فرض که شما درست می گید و ما اشتباه می کنید . پس چرا مایکروسافت تو نسخه 4 #C این امکان را اضافه کرده. (شایدم من و مایکروسافت داریم اشتباه می کنیم.)


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





> *در این باره شما درست می گویید* اما در صورتی که VB دارای 168  تابع گوناگون باشد که #C از آنها محروم است قضیه کمی با آن یک تابع فاکتوریل تفاوت دارد نه.


یه سوال دارم : هر چه تعداد توابع آماده بیشتر باشه بهتره ؟ (لطفا اولش با بله و خیر شفاف جواب بدین)
در اماده توضیح هم بدین و بگین ملاکتون چی بوده که میگین مثلا توان هم باید وجود داشته باشه . و توضیح بدین که آیا وی بی اگر مثلا تابع فاکتوریل داشت بهتر می شد ؟! 





> *پس خوانایی بالاتر VB را قبول داری*. و درباره تعریف نویسایی حرف شما کاملا درست است نوشتن آکولاد از کلمات رزرو شده ساده تر است اما این را درنظر بگیرید که نوشتن آکولاد ساده تر است یا هیچ ننوشتن چیزی؟؟
> 
>  شما هنگامی که می نویسی Dim Variable A  و فاصله ای قرار می دهی As کامل می شود و قتی Str را می نویسی با Enter کردن String کامل می شود.
>  کافیست کلمات اساسی را نوشته زبان آنها را برایتان آرایش کند.


متاسفانه اینها مروبط به کامپایلر و زبان  نیست . مربوط به IDE میشه 
می تونین ide رو عوض کنین. 
زبان چیزی رو ویرایش نمی کنه! 


 



> قبول دارید که VB خوانایی و نویسایی را گرد هم آورده؟؟؟


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

 




> دوست عزیز هیچ کجا اول نوشته شودن در کتاب آموزشی نشانه برتری نیست بلکه در کتاب های آموزشی با راه های آموزش داده شده به هدف می رشند و بعد از آن روش بهتر آن را بیان می کنند.


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




> *دوست عزیز Overload کردن به شئ گرایی ربطی ندارد.*


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






> شما در مفهوم شئ گرایی دچار ابهام شده اید. در این زمینه بیشتر تحقیق کنید. و این را به خواطر داشته باشید که بهترین روش همیشه اولین چیزی نیست که به ذهن انسان می رسد.


این روش حرف زدن و نگاه عاقل اندر سفیه کردن رو نمی پسندم . 

با احترام

----------


## sari-1369

واقعا  C#‎ عملگر توان نداره ؟؟؟؟   :گیج:  :متعجب:

----------


## Mani_rf

> متاسفم ! کد دوم شما معادل کد سی نمی باشد . عمل پلاس پلاس باید قبل از نمایش مسیج باکس انجام می گرفت ! امیدوارم نگین چه فرقی داره ؟ !




دوست عزیز جای کد اول و دوم را عوض کن به نتیجه می رسید. فکر نمی کردم رعایت کردن ترتیب تبدیل کد در نظر شما تفاوت داشته باشد. درست نیست؟؟ من هم مانند شما #C و C++‎ را آموخته ام و تفاوت اینهارا می دانم.





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


اگر این چنین است که شما می گویید پس چرا این کد را برای ترجمه به من داده اید؟؟؟
پس چرا اسرار کردید که ترجمه شود و 
چرا جایی فرموده اید :




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


و اگر با معیار ما پیش می روید چرا کد های ما را ترجمه نمی کنید؟؟؟
من با این چند مثال می خواستم بگویم که* اگر شما می توانید بر روی Increment  مانور دهید* من *چندین مورد دارم که کد ها را کوتاه تر - زیباتر - کاراتر می کند* و البته چندین کد دارم که اصلادر #C وجود ندارد. (نمونه آن را هم برایتان Private Message کردم.)




> دوست عزیز مساله به این سادگی نیست که چون به نظر من یا شما! یه زبان بزرگه! باید فاکتوریل یا توان رو داشته باشه وگرنه چیزی کم داره ! خیر . معمولا برای طراحی زبان های برنامه نویسی با توجه به هدف از طراحی اون زبان این تصمیم گیری ها رو انجام میدن . *نه اینکه بگن چون سی شارپ بزرگه پس توان یا فاکتوریل  هم بزاریم براش !*




بله دوست عزیز  بزرگی زبان به تعداد توابعش نیست اما *اگر دوزبان قدرت یکسانی دارند آن زبانی برتر است که تعداد توابع بیشتری دارد.* اگر غیر از این است بفرمایید. و اگر بر این باورید که #C از VB برتر است لطفا با مدرک دلیل بی آورید.




> عزیز من ، من نیومدم اینجا که به زور چیزیو ثابت کنم یا بگم وی بی بلدم. از همینجا میگم که همه فکر کنن من وی بی بلد نیستم .


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




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


دوست عزیز من جواب هر کسی را به نسبت جوابهایش می دهم ، مگر شما متلک ننداختید که برای تبدیل دو کد در خدمتیم !!! 





> 





> 





> 





> 





> شما گفتید *امکان تعریف پارامتر اختیاری نیست* . *من گفتم هست و راهشو نشون دادم* (حالا تعداد خط کد و سمیکالنش بیشتره و از طرفی روش اصولی تره) 
> *حالا توی وی بی امکان تعریف پارامتر اختیاری به یک شیوه ی دیگه هم وجود داره* (شیوه ی کم کد تر) که این روش داره به سی شارپ هم اضافه میشه . یعنی امکان تعریف به دو روش . 
>  حله دیگه ؟


نه دوست عزیز حل نیست. این جواب خود من نیست که به من دادید؟ این مسالی نبود که زدم حالا برای خودم می زنید ؟؟ دوست عزیز تفاوت 50 و 100 خط قابل توجه نیست ؟؟ مزیت نیست؟ برتری نیست ؟؟ و امکانی نیست که قابل تحسین برای VB باشد؟؟؟ 




> یه سوال دارم : هر چه تعداد توابع آماده بیشتر باشه بهتره ؟ (لطفا اولش با بله و خیر شفاف جواب بدین)
> در اماده توضیح هم بدین و بگین ملاکتون چی بوده که میگین مثلا توان هم باید وجود داشته باشه . و توضیح بدین که آیا وی بی اگر مثلا تابع فاکتوریل داشت بهتر می شد ؟!


پاسخ شما را در بالا دادم، *بله دوست عزیز * اگر دوزبان برابر باشند وجود توابع بیشتر مزیت است. البته توابع VB در برابر زبانی مانند C++‎ قابل گفتن نیستند ، اما در برابر #C مزیتند.





> متاسفانه اینها مروبط به کامپایلر و زبان  نیست . مربوط به IDE میشه 
> می تونین ide رو عوض کنین. 
> زبان چیزی رو ویرایش نمی کنه! 
> توضیحات بالا داده شد. شما مزیت ویرایشگر رو داری به پای زبان برنامه نویسی می ذاری . 
>  نویسایی به محیط ویرایش ربط نداره . 
> در بررسی نویسایی و خوانایی کد رو بررسی می کنن، نه امکانات ویرایشگر رو . یعنی اینکه اگر تنها ویرایشگر سی شارپ چیزی شبیه نوت پد بود باز هم به نویسایی و خوانایی کد ربطی نداشت .


دوست عزیز IDE بخشی از امکانات زبان برنامه نویسی می باشد.
ویرایش کد ها نیز بخشی از امکانات زبان می باشد.
دوست عزیز شما می توانید کد #C را خارج از Visual Studio کامپایل کنید؟؟؟ مثلا با Notpad یا حتی ++Notepade ؟؟؟؟ من و شما به زبان ، ویرایشگر ، کامپایلر و .... وابسته ایم نویسایی و خوانایی را نیز ویرایشگر برای ما ایجاد و برای ما نمایش می دهد.

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





> در مورد روش اصولی پیاده سازی توابع به صورت چندریختی طبق مستندات شی گرایی توضیح بدید لطفا .* شما فرمودید اورلودینگ ربطی به شی گرایی ندارد* .


من فکر می کنم مفهوم شی گرایی در نظر من و شما متفاوت است ! شما تعریف شئ گرایی را چه می دانید؟؟؟ کد نویسی چه اندازه در شئ گرایی تاثیر دارد؟؟؟ و میزان شئ گرایی زبان را چه چیز تعیین می کند؟؟؟





> این روش حرف زدن و نگاه عاقل اندر سفیه کردن رو نمی پسندم .


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



موفق باشید.

----------


## pirmard

> دوست عزیز جای کد اول و دوم را عوض کن به نتیجه می رسید. فکر نمی کردم رعایت کردن ترتیب تبدیل کد در نظر شما تفاوت داشته باشد. درست نیست؟؟ من هم مانند شما #C و C++‎ را آموخته ام و تفاوت اینهارا می دانم.


خیر . 
if (i++==1) do_anything 
در مثال بالا ابتدا شرط چک می شود . سپس قبل از اینکه به سراغ دستورات داخل بلاک then / else برویم مقدار i  اضافه می شود .




> اگر این چنین است که شما می گویید پس چرا این کد را برای ترجمه به من داده اید؟؟؟


علتشو خواهم گفت .




> بله دوست عزیز  بزرگی زبان به تعداد توابعش نیست اما *اگر دوزبان قدرت یکسانی دارند آن زبانی برتر است که تعداد توابع بیشتری دارد.* اگر غیر از این است بفرمایید.





> پاسخ شما را در بالا دادم، *بله دوست عزیز * اگر دوزبان برابر باشند وجود توابع بیشتر مزیت است. البته توابع VB در برابر زبانی مانند C++‎ قابل گفتن نیستند ، اما در برابر #C مزیتند.


هنوز  نفرمودید که به نظر شما اگر وی بی فاکتوریل داشت بهتر بود یا نه ؟ چرا نگذاشتند فاکتوریل رو ؟ چرا مثلا خیلی از توابع که روتین هستند هنوز به وی بی اضافه نشدند ؟ 
ایا باید همه توابع رو اضافه کرد ؟ ملاک تشخیص شما چیه که یه تابع رو فکر می کنید باید باشه و یه تابع رو فکر می کنید لزومی نداره که باشه .




> آقا نفرمایید ، ما اینجا اومدیم دوزبان را مقایسه کنیم ، اگر یکی از دو زبان را بلد نباشیم که نمی توانیم این کار را انجام دهیم. راستی مگر شما VB بلد نیستید؟





> دوست عزیز من جواب هر کسی را به نسبت جوابهایش می دهم ، مگر شما متلک ننداختید که برای تبدیل دو کد در خدمتیم !!!


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






> نه دوست عزیز حل نیست. این جواب خود من نیست که به من دادید؟ این مسالی نبود که زدم حالا برای خودم می زنید ؟؟ دوست عزیز تفاوت 50 و 100 خط قابل توجه نیست ؟؟ مزیت نیست؟ برتری نیست ؟؟ و امکانی نیست که قابل تحسین برای VB باشد؟؟؟


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






> دوست عزیز IDE بخشی از امکانات زبان برنامه نویسی می باشد.


خیر . 



> ویرایش کد ها نیز بخشی از امکانات زبان می باشد.



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




> دوست عزیز شما می توانید کد #C را خارج از Visual Studio کامپایل کنید؟؟؟


بله . 
من نمی دونم شما از چه IDE استفاده می کنید هر چند گمونم محیط خود ویژوال استدیو استفاده می کنید . می تونید از اکلیپس استفاده کنید یا هر Ide دیگه ای . حتی از نوت پد .
مثلا اکلیپس آکولاد رو می بنده ! این یعنی نویسایی در زبان سی شارپ رفته بالا ؟ ! زبان تغییر نکرده .
تاکید ویرایشگر محل ویرایش ه کده ! ربطی به خود زبان نداره . کما اینکه هر زبان ممکنه چندین ویرایشگر داشته باشه . در تعریف نویسایی کد هم عرض کرده بودم که بررسی کد مهم ه . نه سرعت ویرایش کردن کد در ویرایشگر.





> من و شما به زبان ، ویرایشگر ، کامپایلر و ....وابسته ایم نویسایی و خوانایی را نیز ویرایشگر برای ما ایجاد و برای ما نمایش می دهد.


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




> من فکر می کنم مفهوم شی گرایی در نظر من و شما متفاوت است ! شما تعریف شئ گرایی را چه می دانید؟؟؟ کد نویسی چه اندازه در شئ گرایی تاثیر دارد؟؟؟ و میزان شئ گرایی زبان را چه چیز تعیین می کند؟؟؟


http://en.wikipedia.org/wiki/Object-...ed_programming

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


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


یا حق

----------


## .:KeihanCPU:.

همیشه بحث کاربران VB و C برپا بوده و هست
به نظر من از لحاظ قدرت هر دو زبان در دات نت یک توانایی رو دارن
اما ساختار VB ساده تره
آیا شما اگه بخوای تازه شروع کنی میری سخت رو انتخاب میکنی؟

----------


## emadfa

سلام بر همگی :



> IDE قسمتی از زبان برنامه نویسی نیست


خیر! IDE بخشی از برنامه نویسی است! ممکن است بگویید که IDE در کد نهایی نقشی ندارد و کد حرف اول را می زند اما جالب است بدانید که صرف نظر از ساختار خاص .NET آن چه باعث قدرت آن شده IDE آن است. ( هر چند که مثلا برای #C شرکت های دیگر نیز کامپایلرهایی را تولید کردند. ) امروزه در دنیای برنامه نویسی وقتی می خواهند IDE را تعریف کنند VS را تعریف می کنند چون امکانات آن همان چیزی است که برنامه نویسان دهه ها آرزوی آن را داشتند! البته این امکانات برای برنامه نویسی native هم هست و ضمنا دومین IDE قدرتمند دنیا مربوط به IDE شرکت sun در مورد java است. 




> برای مثال تابعی در VB وجود دارد با نام StrReverse که کار آن معکوس کردن رشته است و در #C این تابع وجود ندارد.





> میگم یعنی به نظر شما #C با همه بزرگیش نباید عملگر توان داشته باشه!!! البته دقت کن عملگر نه تابع. حتما می دانی که سرعت و راحتی کاربردشون چقدر فرق می کنه.


دوست عزیز! من معادل معکوس کردن رشته را برای شما در #C فرستادم. البته کمی طولانی تر است اما مایکروسافت قول داده که در نسخه بعدی آن را اضافه کند! صرف نظر از این دهها مورد دیگر وجود دارد که ممکن است در #C باشد و در vb نباشد حالا چون ما برنامه نویسان #C مثل شما زرنگ نیستیم و دنبال تفاوتاشون نمی گردیم قرار نیست که ... ؟

آقا مانی عزیز!!! فرض کن در یک برنامه #C من 1000 تا آکولاد تو در تو به کار ببرم. ( هر کدوم برای یک ساختار ) شما احتمالا می دونی که هر آکولاد یک جفت داره. بنابراین هر آکولاد یک تناظر یک به یک داره! حالا سوال اینه برای شما vb کار عزیز ممکنه سخت باشه چون در دستورات vb همچون pascal شروع و پایان block نوع اون رو هم مشخص می کنند اما در #C یک روش راحت وجود داره! ( می تونید امتحان کنید! ) نشانه گر رو قبل از اولین آکولاد یا آخرین آکولاد قرار بدید می بینید که آکولاد متناظر و هم چنین آکولاد فعلی خاکستری شدند! 
همون طور که می بینی در هر زبانی برای هر مساله ای راه حلی هست! حالا شما قرار نیست چون خودت با یک جور syntax راحتی ( با کمال احترام ) همه چیز رو زیر سوال ببری! 

موفق باشید.

----------


## pirmard

> سلام بر همگی :
> 
> خیر! IDE بخشی از برنامه نویسی است! 
> ممکن است بگویید که IDE در کد نهایی نقشی ندارد و کد حرف اول را می زند اما جالب است بدانید که صرف نظر از ساختار خاص .NET آن چه باعث قدرت آن شده IDE آن است.


سلام بزرگوار
بخشی از برنامه نویسی ؟ 
یعنی استدلال شما اینه که چون ide در vs باعث قدرت اون شده پس قسمتی از زبان برنامه نویسی محسوب میشه ؟ و اگر باعث قدرت اون نمی شد قسمتی از زبان برنامه نویسی حسابش نمی کردید ؟




> امروزه در دنیای برنامه نویسی وقتی می خواهند IDE را تعریف کنند VS را تعریف می کنند


در کجا به عنوان تعریف IDE , ویژوال استدیو رو تعریف کردند ؟

----------


## emadfa

> سلام بزرگوار
> بخشی از برنامه نویسی ؟ 
> یعنی استدلال شما اینه که چون ide در vs باعث قدرت اون شده پس قسمتی از زبان برنامه نویسی محسوب میشه ؟ و اگر باعث قدرت اون نمی شد قسمتی از زبان برنامه نویسی حسابش نمی کردید ؟
> 
> در کجا به عنوان تعریف IDE , ویژوال استدیو رو تعریف کردند ؟


دوست عزیز منظور من رو درک نکردی!! IDE یعنی چه؟ یعنی محیطی که ابزارهای برنامه نویسی , کدنویسی , Debugging , ابزارهای برنامه نویسی شی گرا , ابزارهای نگهداری پروژه و ... رو در اختیار برنامه نویس می گذاره!! در دنیا هیچ IDE مثل VS نتونسته این ابزارها را داشته باشه؟؟ در واقع به همین خاطر هست که گفته می شه که VS قدرتمندترین IDE دنیاست!! 

البته شاید برای شما IDE مهم نباشه اما همین که برنامه شما گسترش پیدا کرد و پروژه شما پیچیده تر شد ارزش اون رو می فهمید! یقین داشته باشید که اگر VS نبود .NET این قدر گسترش پیدا نمی کرد؟

----------


## pirmard

> دوست عزیز منظور من رو درک نکردی!! IDE یعنی چه؟ یعنی محیطی که ابزارهای برنامه نویسی , کدنویسی , Debugging , ابزارهای برنامه نویسی شی گرا , ابزارهای نگهداری پروژه و ... رو در اختیار برنامه نویس می گذاره!! در دنیا هیچ IDE مثل VS نتونسته این ابزارها را داشته باشه؟؟ در واقع به همین خاطر هست که گفته می شه که VS قدرتمندترین IDE دنیاست!! 
> 
> البته شاید برای شما IDE مهم نباشه اما همین که برنامه شما گسترش پیدا کرد و پروژه شما پیچیده تر شد ارزش اون رو می فهمید! یقین داشته باشید که اگر VS نبود .NET این قدر گسترش پیدا نمی کرد؟


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

----------


## saeid12

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

----------


## sina_saravi1

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

یکی از آکولاد خوشش میاد
یکی هم نمیاد
خوب دلیل نمیشه به خاطر آکولاد از سی شارپ به وی بی بیاین

طرز کدنویسی سی شارپ هم برای اونایی که با وی بی کار میکنن مسخرست
پس بیاین این تاپیک رو بیخیال بشین بره
 :افسرده:

----------


## pirmard

> هزاران برنامه نویس به این نتیجه رسیدن که بحث راجع به زبان های برنامه نویسی بی فایده هست اما هنوز ما سر دو برنامه که از یک کلاس استفاده می کنن بحث میکنیم...





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



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

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

برای تصمیم گیری باید همه پارامترها رو کنار هم گذاشت و بنا به هر کاربرد مورد مناسب رو انتخاب کرد .

----------


## scream666_ss

سلام به همگی‌.
عجب بحث جالبی‌ دعوایی که همیشه بین برنامه نویسا بوده و خواهد بود. اما برای من یه چیز عجیب بود بجز تاپیک آخر ندیدم کسی‌ درمورد مکانهای قدرت چیزی بگه ( البته من نرسیدم ۱۴ صفحه را بخونم ) اما دوستان من اینجا بخاطر کاری که دارم توانستم وارد مایکروسافت و جلسه هاش و دوره هاش بشم. ببینید هر زبانی با یک هدف اولی‌ طراحی شده و در آن‌ هدف به اوج رسیده. JAVA برای جدا کردن نیاز به سخت‌افزار طراحی شد و واقعا هم موفقترین هست تو این مورد. حتی سیستم عامل جدید SUN هم با JAVA نوشتن. اما همین زبان زمانی‌ که به کارهای تخصصی و سطح پائین نیاز باشه در بعضی‌ مورد حتی امکانشو هم نمیده ( مثلا من خودم نیاز داشتم واسه یه مقاله یه کد سطح پائین برای موبیل و استفاده از Bluetooth بنویسم که آخرش ثابت شد که با JAVA امکان پذیر نیست و باید با C++‎ نوشتش )
اینجا هم تو جلساتی که ما با Microsoft داریم و در دوره‌ها خودشون اینجوری عمل می‌کنن که برای برنامه نویسی سیستمی‌ از VS.C++‎ استفاده می‌کنن برای Windows Mobile از C#‎ و برای برنامه‌های تجاری از VB.Net این به این معنی‌ نیست که یک زبان نمیتونه در تمام موارد قدرتمند باشه، زبانهای .Net در تمام موارد قدرتمند هستند اما هر زبان در کار تخصصیش تواناییه بیشتری داره. به طور مثال اصلا پیشنهاد نمی‌شه که برای Image Processing از C#‎ استفاده بشه اما در همین مورد در یک جلسه ما را قانع کردن که در پردازش صدا C#‎ بهتره
مشکله جامعه‌ برنامه نویسی ما اینه که ما میخواهیم تو تمام زمینها استاد بشیم و بگیم برنامه نویسیم این یه کار غلط است. اول آدم باید زمینه تخصص مشخص کنه بد ببینه در آن‌ زمینه کدامین زبان بهتر عمل می‌کنه نه همینطوری بگه این زبان بهتر از اون یکی‌ است. زبان برنامه نویسی فقط و فقط یک ابزار برای رسیدن به هدف است.
درضمن در کشور‌های پیشرفته کار مهندس نرم‌افزار اصلا برنامه نویسی نیست که زبان برایش مهم باشه.

----------


## .:KeihanCPU:.

همیشه این بحث بوده و هست
همین چند روز پیش دنبال آموزش WCF میگشتم البته در VB،باور کنید همه جا رو دنبالش گشتم اما یه دونه هم پیدا نکردم
اما تا دلت بخواد آموزشهای مختلف برای C#‎
با یکی از مسئولین سایت که صحبت کردم گفت اگه میخوای یه توسعه دهنده خوب باشی بهتره خودتو محدود به ویژوال بیسیک نکنی
منم الان مشغول یادگیری Syntax C#‎ هستم
شما هم بهتره اینقدر سر این قضیه وقت خودتون تلف نکنید
با سپاس

----------


## bache_mahal

توان در سی شارپ (به توان رساندن عدد در #C)

کی میگه نمیشه دوتا عدد رو تو سی شارپ به توان رسوند؟؟!!
از تابع math.pow استفاده کنید حله.
مثال:

Math.Pow((double.Parse(textBox1.Text)),3)x

اون x رو تهش گذاشتم تا پرانتز بهم نریزه قاطی نکنن برو بچ.
دوتا Double میگیره و جواب رو پس میده
مثال ساده تر:
a=math.pow(2,4)
عدد 2 رو بتوان 4 میرسونه.

----------


## Mani_rf

سلام دوست عزیز.
ورود شما را به جمع برنامه نویسان سایت خوش آمد می گویم.

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

و اما درباره  تاپیک شما.




> کی میگه نمیشه دوتا عدد رو تو سی شارپ به توان رسوند؟؟!!
> از تابع math.pow استفاده کنید حله.


کسی نگفت که نمی شود دو عدد را در #C به توان رساند. من گفتم که در #C مانند VB عملگر برای انجام این کار وجود ندارد و این کار را کمی دشوار تر می کند.




> فقط بی زحمت این کد را هم تبدیل کن تا بچه ها ببینن به *توان رساندن چند عدد تو C#‎‎ چقدر از VB دشوار تره .*
> 
> 
> Dim I As Double
> I = (2 ^ 3) ^ 6 ^ 2 ^ (8 ^ 2)
> 
> میگم یعنی به نظر شما C#‎‎ با همه بزرگیش نباید عملگر توان داشته باشه!!! البته دقت کن *عملگر* نه تابع. حتما می دانی که سرعت و راحتی کاربردشون چقدر فرق می کنه.


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

----------


## pirmard

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

هنوز نفرمودید که به نظر شما اگر وی بی فاکتوریل داشت بهتر بود یا نه ؟ چرا نگذاشتند فاکتوریل رو ؟ چرا مثلا خیلی از توابع/عملگرها که روتین هستند هنوز به وی بی اضافه نشدند ؟ 
ایا باید همه توابع/عملگرها رو اضافه کرد ؟ ملاک تشخیص شما چیه که یه تابع/عملگر رو فکر می کنید باید باشه و یه تابع/عملگر رو فکر می کنید لزومی نداره که باشه .

----------


## Mani_rf

سلام دوست عزیز من.
چه خبرا؟

اگر دقت می کردی من بالا نوشته بودم که قصد ندارم تاپیک را دوباره رونق بدم و دوباره بحث بی فایده را شروع کنم.
درباره این هم : 



> من یه سوال پرسیده بودم از شما که مشتاق شنیدن جوابش بودم و هستم . سوالم این بود :


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

(تمامی متن بالا نظرات شخصی بنده ، با برداشت های شخصی خودم؛ بنابراین ممکن است که کاملا غلت باشند.)

----------


## maXXis

من این پست رو امروز 2بار نوشتم.

این دو زبان از نظر قابلیت ها و توانایی ها هیچ تفاوت عمده ای ندارند، جز اینکه زبان سی شارپ به دلیل ارث بردن پاره ای خصوصیات از زبان پیشکسوت خود ، ++c ، هنوز به برنامه نویس اجازه می دهد که مستقیما حافظه را دستکاری و مدیریت کند. با این وجود هنوز هم بسیاری از برنامه نویسان و کارشناسان چه در ایران و چه در سایر نقاط دنیا بر این تصور اشتباه هستند که# c از vb.net قوی تر است اما واقعیت چنین نیست. دلیل این ادعا بسیار ساده است : هر دو زبان چیزی نیستند جز یک پوشش ظاهری برای زبان msil که هنگام کامپایل شدن سورس کد برنامه ای که با یک زبان دات نتی نوشته شده است تولید می شود. 
تمام برنامه هایی که برای پلتفرم دات نت نوشته می شوند پیش از اینکه به کد زبان ماشین (native code) تبدیل شود به یک زبان میانی به نامmicrosoft intermediate language تبدیل می شوند. زبان های پلتفرم دات نت به طور یکسان از این زبان میانی پشتیبانی می کنند. در واقع این زبان ها مجبورند که از استاندارد msil تبعیت کنند نه اینکه هر مقداری از آن که دلشان بخواهد را پشتیبانی کنند. بنابراین وقتی قرار باشد نتیجه کار هر دو زبان ویژوال بیسیک دات نت و سی شارپ در نهایت به کد msil تبدیل شود، دیگر چندان مهم نیست که مبدا این کد به چه زبانی نوشته شده است. بنابراین هر دو زبان به یک ترتیب از قابلیت های کلیدی چارچوب دات نت پشتیبانی می کنند. مثلا مدیریت حافظه در vb.net دقیقا به همان ترتیبی اتفاق می افتد که در سی شارپ. در گذشته چنین نبود و یکی از دلایل گزینش زبان ++c به جای ویژوال بیسیک ، برتری محسوس++c نسبت به ویژوال بیسیک در زمینه مدیریت حافظه و راندمان برنامه بود. این تفاوت دیگر از بین رفته است. مدیریت حافظه مستقیما توسط چارچوب دات نت انجام می شود و نوع زبان برنامه نویسی تاثیری ندارد. حتی برتری ویژوال بیسیک در زمینه rapid application development و معماری windows forms نیز در پلتفرم دات نت از بین رفته است. برنامه سازی در سی شارپ دقیقا به همان سادگی ویژوال بیسیک دات نت است.تفاوت های اصلی میان دو زبان بیشتر در گرامر و syntax زبان است. تنها چیزی که باقی می ماند این است که زبان سی شارپ زبان خلاصه تر و موجزتری است. این شاید بهترین توصیف برای سی شارپ باشد. به عبارت دیگر برای پیاده سازی یک قطعه کد در زبان سی شارپ به حجم برنامه نویسی کمتری نیاز است. یکی از تفاوت های شناخته شده میان دو زبان، امکان تعریف سندهای مربوط به سورس برنامه است. در زبان سی شارپ می توانید سندهایی از نوع xml ایجاد کنید که با سورس کد برنامه شما پیوند خورده است. به این ترتیب به موازات پیشرفت پروژه برنامه نویسی می توانید خیلی راحت documentation آن را نیز آماده کنید. چنین قابلیتی در vb.net وجود ندارد اما خبر خوب این است که در نسخه بعدی پلتفرم دات نت موسوم به (whidbey) این قابلیت به vb.net افزوده شده است. یک تفاوت دیگر بین دو زبان آن است که در سی شارپ می توانید عملگر ها یا operatorهای سفارشی بسازید. مثلا علامت را طوری تعریف کنید که عبارت today yesterday معنا پیدا کند و عملگرهای ریاضی بزرگتر و کوچکتر تنها محدود به اعداد نباشد. البته این قابلیت نیز در نسخه بعدی vb.net افزوده شده است. در حقیقت همین چند درصد تفاوت فعلی میان قابلیت های گرامر دو زبان ویژوال بیسیک دات نت و سی شارپ ، در نسخه شماره دو چارچوب دات نت ناپدید شده است. بنابراین دقت کنید که برتر بودن زبان سی شارپ نسبت به vb.net چیزی جز یک شایعه و افسانه نیست. این دو زبان حدود فقط 5 درصد با یکدیگر اختلاف دارند. حتی پیشرفته ترین مفاهیم برنامه نویسی oop نیز در vb.net وجود دارند مثل مفهوم. (delegates) کسانی که چنین اظهار نظرهایی می کنند یا هنوز فکر می کنند که همان تفاوت میان ++c و vb کماکان در مورد vb.net و C#‎‎.net نیز وجود دارد یا اینکه شناخت صحیحی از پلتفرم دات نت ندارند. در واقع خیلی رک بگویم مدیران و کارشناسان ارشد شرکت های نرم افزاری که به این توهم دچارند کمترین آشنایی فنی با چارچوب دات نت ندارند. اگر سی شارپ و VB.NET از نظر قدرت و توانایی با هم فرقی ندارند پس مایکروسافت چرا این دوتا را درست کرد؟ دلیلش اینست که مایکروسافت نمی توانست برنامه نویسان هریک از این دو گروه را وادار به پذیرش syntax زبان دیگر کند. بهتر بود که آنهایی که به syntax زبان سی عادت دارند با همان روش ادامه بدهند و آنهایی که به ویژوال بیسیک علاقه دارند به همان منوال ادامه دهند. البته کار کسانی که از VB6 به VB.NET می آیند خیلی مشکل است زیرا VB.NET یک زبان OOP پیشرفته است و این موضوع کار برنامه نویسان ویژوال بیسیک را که به راحت طلبی عادت کرده بودند سخت می کند. ولی برنامه نویسان C کار چندان مشکلی ندارند و می توانند از دانش خود در زمینه برنامه نویسی شیء گرا کماکان بهره بگیرند. زبان سی شارپ در اصل برای رقابت و چشم و همچشمی با جاوا خلق شده است و مزیت خاص دیگری نسبت به VB.NET ندارند. در واقع چون syntax سی شارپ خیلی شبیه جاوا و C است ، این ویژگی می تواند برخی از برنامه نویسان جبهه رقیب - جاوا - را قانع کند که ((بابا ! این سی شارپ و فناوری دات نت واقعا یک رقیب جدی برای جاوا است...)) همین ! واقعا زبان سی شارپ هیچ مزیت استراتژیک دیگری نسبت به ویژوال بیسیک دات نت ندارد. من خود با هر دو زبان کار کرده ام و از هر دو زبان خوشم میآید و هیچ تفاوت خاصی بین این دو نمی بینم.

----------


## Mani_rf

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

1-



> زبان سی شارپ به دلیل ارث بردن پاره ای خصوصیات از زبان پیشکسوت خود ، ++c ، هنوز به برنامه نویس اجازه می دهد که مستقیما حافظه را دستکاری و مدیریت کند.


من فکر نمی کنم C#‎‎‎ همانند ++C چنین اجازه ای به برنامه نویسی بدهد !
ممکن است یک مثال از کنترل حافظه در C#‎‎‎ بنویسید؟
برای مثال یکی از قابلیت های عالی ++C در این بود که شما می توانستید کد های اسمبلی را در آن بنویسید ({}ASM) ؛ آیا در C#‎‎‎ هم چنین قابلیتی وجود دارد؟
بعد از آن مگر خودتان نگفتید که :




> بنابراین هر دو زبان به یک ترتیب از قابلیت های کلیدی چارچوب دات نت پشتیبانی می کنند. مثلا مدیریت حافظه در vb.net دقیقا به همان ترتیبی اتفاق می افتد که در سی شارپ.


و :




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


2-



> در زبان سی شارپ می توانید سندهایی از نوع xml ایجاد کنید که با سورس کد برنامه شما پیوند خورده است. به این ترتیب به موازات پیشرفت پروژه برنامه نویسی می توانید خیلی راحت documentation آن را نیز آماده کنید. چنین قابلیتی در vb.net وجود ندارد


این قابلیت هم اکنون در VB.Net وجود دارد و خود من یک از کسانی هستم که فراوان از آن استفاده می کنم.

اگر حرف بنده را قبول ندارید می توانید امتحان کنید؛ یا یک مثال از مستند سازی تو C#‎‎‎ را بنویسید تا معادل آن را د ر VB نشانتان دهم.

3-



> یک تفاوت دیگر بین دو زبان آن است که در سی شارپ می توانید عملگر ها یا operatorهای سفارشی بسازید. مثلا علامت را طوری تعریف کنید که عبارت today yesterday معنا پیدا کند و عملگرهای ریاضی بزرگتر و کوچکتر تنها محدود به اعداد نباشد.


این امکان هم در VB.Net وجود دارد. مثال بفرمایید تا برایتان به VB تبدیل کنم.
اما با تایید همه گفته های شما این را هم یاد آور شوم که در زبان VB توابع و فرمان های وجود دارد که در C#‎‎‎ وجود ندارد. البته نبود آنها برنامه نویسی را بی معنا نمی کند اما بودن آنها برخی کارها را ساده تر می کند.
فراموش نکنید که بزرگترین مزیت زبان Basic سادگی ساختار برنامه نویسی ، دیباگ و توابع آن است.
البته در کل هر دوربان برای برنامه نویس فوق العاده عالی هستند که انتخاب بین آنها به خود فرد انتخاب کننده و سلیقه او بر می گردد.
با احترام...

----------


## sari-1369

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

هم توی تبدیل اکثر داده ها ، مثل String به integert و ...  مشکل نداره و خودش این کارو انجام میده .

دقیقا زمانی که کد رو تایپ میکنیم ، اون رو خطایابی میکنه که به نظر من واقعا یه مزیت بزرگه برای وی بی ، نسبت به C#‎ .

توی VB فقط با Enter هم خط رو میبندی و هم به خط بعد میری ، اما توی C#‎  اوب باید با ; خط رو تموم کنی بعد با Enter به خط بعد بری که این خودش از سرعت کد نویسی کم میکنه و یکم اعصاب خورد کن .

کلا ساختار vb ساده تره و به زبان گفتار هم نزدیک تر. 

و ...

----------


## Ali_Mor

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

----------


## emadfa

> مثلا مدیریت حافظه در vb.net دقیقا به همان ترتیبی اتفاق می افتد که در سی شارپ.* در گذشته چنین نبود و یکی از دلایل گزینش زبان ++c به جای ویژوال بیسیک ، برتری محسوس++c نسبت به ویژوال بیسیک در زمینه مدیریت حافظه و راندمان برنامه* *بود.* این تفاوت دیگر از بین رفته است. مدیریت حافظه مستقیما توسط چارچوب دات نت انجام می شود و نوع زبان برنامه نویسی تاثیری ندارد.


دوست عزیز! چرا در مورد چیزی که اطلاع نداری صحبت می کنی؟! 
آن چه که از گذشته و هم اینک باعث قدرتمند شدنC++‎شده مدیریت حافظه و سرعت بالای اونه! من حتی یک لحظه نمی تونم تصور کنم که نرم افزاری مثل photoshopیا office با .net یا java نوشته بشه! البته C++‎.Net تفاوتی با سایر زبان های .net نداره! 
اگر منطقی و با دلیل و مدرک صحبت کنید چنین off-topic هایی هم به وجود نمی آد!!!

----------


## maXXis

دوستان این حدوداً ترجمه مقاله معروف ماکروسافت هستش. اگر هم مشکلی دارید به گیتس بگین نه به من. :بامزه: .
لینک دانلودش.

http://www.ahurae.com/forum/viewtopic.php?f=8&t=32

----------


## محسن شامحمدی

دوست عزيز maxxis  چطور مي گي C++‎.net با ديگر زبانهاي دات نت فرق نمي كنه؟
اصلا بزرگترين فرقش باديگر زبان هاي دات نت توي امكان native كامپايل كردنشه 
با تشكر

----------


## babak2000

یکی از دلایلی که باعث مهاجرت به C#‎ میشه نبودن کلاس های آموزشی برای VB هستش 

چند جا رفتم همه C#‎ آموزش میدن همینطور برای کلاسهای وب Web  نیز بیشتر از زبان C#‎ استفاده میکنند

حالا از دوستان اگه جایی را برای آموزش وی بی VB مشناسند ممنون میشم تو پیام خصوصی بهم اطلاع بدین

مخصوصآ برای دور های آموزشی وب

----------


## morrning

بابا ما که vb کار میکنیم و از این راه هم پول در میاریم .
مهم این نیست که با چی مینویسی مهم ایه که بتونی توی زبان برنامه نویسیت ماهر باشی
و گر نه دو تا آکلاد بیشتر بزاری یا دو تا dim کمتر بنویسی که جایی نمیره

----------


## morrning

> دوست عزیز! چرا در مورد چیزی که اطلاع نداری صحبت می کنی؟! 
> آن چه که از گذشته و هم اینک باعث قدرتمند شدنC++‎‎‎شده مدیریت حافظه و سرعت بالای اونه! من حتی یک لحظه نمی تونم تصور کنم که نرم افزاری مثل photoshopیا office با .net یا java نوشته بشه! البته C++‎‎‎.Net تفاوتی با سایر زبان های .net نداره! 
> اگر منطقی و با دلیل و مدرک صحبت کنید چنین off-topic هایی هم به وجود نمی آد!!!


خوبه که جواب خودتو میدی :لبخند:

----------


## saman_itc

> یکی از دلایلی که باعث مهاجرت به C#‎‎ میشه نبودن کلاس های آموزشی برای VB هستش 
> 
> چند جا رفتم همه C#‎‎ آموزش میدن همینطور برای کلاسهای وب Web نیز بیشتر از زبان C#‎‎ استفاده میکنند
> 
> حالا از دوستان اگه جایی را برای آموزش وی بی VB مشناسند ممنون میشم تو پیام خصوصی بهم اطلاع بدین
> 
> مخصوصآ برای دور های آموزشی وب


شما بهتر زبانتو قوی کنی دوست من.دنبال کلاس vb نگرد msdn که هست برو کلاس زبان
از این دلیل ها جای دیگه نیار

----------


## saman_itc

> دوستان این حدوداً ترجمه مقاله معروف ماکروسافت هستش. اگر هم مشکلی دارید به گیتس بگین نه به من..
> لینک دانلودش.
> 
> http://www.ahurae.com/forum/viewtopic.php?f=8&t=32


 تبلیغات فروم دیگه فکر نمی کنم زیاد جالب باشه

----------


## pirmard

> شما بهتر زبانتو قوی کنی دوست من.دنبال کلاس vb نگرد msdn که هست برو کلاس زبان
> از این دلیل ها جای دیگه نیار


لول ! تیریپ نصیحت های پدربزرگا به بچه های دوساله ! چقدرم منطقی !

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

----------


## saman_itc

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


 شما فکر می کنی چون کلاس vb.net کمتر از #C این دلیل ضعف vb.net?

----------


## babak2000

دوستان بحث نکنید راستش من فقط نظر خودم را گفتم ( دلیل مهاجرت به C#‎) شاید بنظر منطقی نمی آید

ولی فکر  می کردم دوستان حرفه ای برنامه نویس  حتما درکلاسها و دوره های مقدماتی و پیشرفته آموزشگاه 

و یا جاهای دیگه شرکت کردند و گرنه 4 یا 5 سالی هست که با VB دارم دست و پنجه نرم میکنم و کلاس 

هم نرفتم البته زبانم خوبه ولی به پای دوستان نمیرسه مخصوصآ saman_itc  عزیز

----------


## CodeMasterX

با سلام خدمت همه دوستان سایت

اکثر پست ها رو خوندم، مطالبی که تو این پست می نویسم هم صرفا نظر و حاصل تجربه *شخصی* بنده هست. کل کل و حرف بی پایه و اساس و غیره جایی تو چنین سایت هایی ندارن و نباید هم داشته باشن.

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

اول از همه اینکه به نظر بنده (جسارت به هیچ یک از عزیزان نشه) خیلی از پست ها Off-Topic بود. به فرض هم که بخوایم دو زبان برنامه نویسی رو مقایسه کنیم، مثال های خیلی بهتری میشه زد و درباره مباحث خیلی بهتری میشه بحث کرد. تعریف متغیر ها، حلقه ها و دستورات شرطی خیلی ساده هستند و فکر نمی کنم فرق چندان زیادی تو قدرت و راحتی کار برنامه نویسا ایجاد کنن. می شد درباره مسائلی مثل Operator Overloading، OOP Concepts و غیره بحث کرد.

دوم اینکه اگر قرار دو یا چند چیز رو باهم مقایسه و بررسی کنید، شرط عقلانی اول اینه که هم جنس باشن. بعنوان مثال مقایسه زبان های دات نت با ++C و جاوا عملا بنظر بنده تو جاده خاکی سیر می کنه. مقایسه *فنی* وی بی و سی شارپ در دات نت هم همینطور. تکنولوژی دات نت یکی از اهداف اولیه اش از همان ابتدا عرضه چارچوبی بود که برنامه نویسا بتونن با آزاد بودن در انتخاب زبان برنامه نویسی، خروجی یکسانی تولید کنند. به قدرت و کارایی یکسانی دسترسی داشته باشن و بشه پروژه های چند زبانه رو براحتی مدیریت کرد و مسائلی از این دست که تمامشون تو دات نت به نتیجه رسیدند. پس نتیجتا *مقایسه فنی* این دو زبان و یا زبان های دیگه تو دات نت بیهوده و بی اساس است، چرا که همگی از یک IDE استفاده می کنند، Framework Class Library یکسان بوده، کد خروجی نهایی هم (IL) یکسان خواهد بود. اما اگر هدف مقایسه این دو زبان از نظر بازار کار و راحتی برنامه نویسان هست، بله میشه بحث کرد.

همونطور که دوستان زیادی هم اشاره کردند (و قبلا هم در سایت اشاره شده بود) سی شارپ برای مهاجرت برنامه نویسان جاوا و خانواده C به دات نت هدف گذاری شد، و وی بی برای برنامه نویسان وی بی. درسته که از لحاظ فنی این دو زبان شکاف بزرگی بینشون دیده نمیشه اما بازار کار ایران متاسفانه یا خوشبختانه بیشتر به سمت C#‎‎ سوق داده میشه. بیرون ایران هم تا جایی که بنده اطلاع دارم بازار گرم تری داره. اما بازهم دلیل قانع کننده ای نیست. به نظر شخصی بنده، به عنوان یک .NET Developer خوب و حرفه ای شما باید به هر دو زبان تسلط کافی داشته باشید. بارها برای همه برنامه نویسای دات نت پیش اومده و خواهد اومد، که Sample یا Source Code هایی که می خوان به زبان های مختلفی نوشته شدن. ممکنه تو پروژه ای شرکت کنید، تو شرکتی کار کنید و یا دنبال کار باشید و تسلط به زبان مقابل ازتون انتظار بره. نتیجتا باید به هر دو زبان تسلط کافی داشته باشید. همونطور که یکی از دوستان هم گفتن، برای برنامه نویسان با تجربه و خوب که به یکی از زبان های دات نت تسلط دارن یادگیری زبان دیگه وقت و انرژی زیادی نمی بره. چرا که تنها چیزی که باید یاد بگیرین یک Syntax جدید و یه سری Design Pattern هست.

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

 یه نکته ای که خیلی از اوقات همه ماها فراموش می کنیم اینه که هر تکنولوژی و ابزاری برای هدف و منظوری *خاص* طراحی، تولید و توسعه داده میشن. کسی برای تولید یک Web App سراغ ++C نمیره. برای تولید WinApp هایی که همه روزه همه جا می بینیم کسی ++C یا Java رو هدف نمی گیره. دقیقا به همون اندازه که کسی برای نوشتن Driver ها، نرم افزاری هایی مثل 3DMax، PhotoShop، Anti-Virus و غیره سراغ دات نت نمی ره. پس قبل از مقایسه فنی یا کاربردی چنین تکنولوژی ها و ابزار هایی باید هدف شما از تولید نرم افزارتون مشخص باشه.

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

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

برخی برنامه نویسا بجای استفاده از تکنولوژی هایی مثل Typed Datasets و Linq ترجیح میدن خودشون Wrapper هایی برای Data Access بنویسن و استفاده کنن. دلایلی هم مثل پایین بودن Performance و محدود بودن کنترل برنامه نویس و پروسه کاری میارن. اولا که بله، در سناریوهای معدودی که چنین چیزهای مد نظر هست می تونیم خودمون کلاس های لازم رو بسازیم و راه حل مورد نظر رو پیاده سازی کنیم. ولی مطمئنا مایکروسافت قبل از ارائه یک تکنولوژی تمام این مسائل مثل Compatibility و Performance رو بررسی کرده و بهترین نحو ممکن بهینه سازی ها رو انجام داده. ناگفته هم نماند که بنده شدیدا مخالفم که یک برنامه نویس مستقیما سراغ چیزی مثل Linq بره که با 4 تا کلیک ماوس کارش رو راه بندازه. شما باید اول دانش، تجربه و تسلط خوبی در زمینه Database Programming داشته باشین، با تکنولوژی هایی مثل SQL Server و غیره اشنا باشید، و بعد تنها برای *راحتی بیشتر* و یا استفاده از یکسری قابلیت های جدید سراغ همچین سیستم هایی برید.

 برخی به AJAX Control Toolkit و خود AJAX اطمینانی ندارن و ترجیح میدن یا از تکنولوژی های Third-Party استفاده کنن یا خودشون JavaScript و غیره بنویسن. باز هم شاید به این دلیل که از Compatible بودن و Performance این سیستم مطمئن نیستن. شاید به این دلیل که AJAX هنوز یک Community Product هست و *کاملا* بخشی از دات نت فریم ورک نبوده و از طرف مایکروسافت پشتیبانی نمیشه. دیدیم که در نسخه 3.5 دات نت، کتابخانه های اولیه AJAX رسما بخشی از دات نت شدند. اصلا هم بعید نیست که بزودی چیزی مثل AJAX Control Toolkit رو در نسخه های بعدی دات نت فریم ورک بعنوان بخشی از این تکنولوژی ببینیم. مثال های اینجوری زیاده، حالا نکته بنده چیه:

وقتی مایکروسافت، یکی از غول های نرم افزاری دنیا، با تیمی چند هزار نفره و بودجه های چند میلیون دلاری روی چند تکنولوژی و پروژه کار می کنه، و محصولی رو به شما عرضه می کنه، لطف کنید از مغزتون زیاد کار نکشین و به کار این مهندسین عزیز اطمینان کنید. بهتون اطمینان خاطر میدم که خیلی بیشتر از ماها به مباحث Performance، Flexibility & Scalibility و Compatibility اهمیت و توجه نشون دادن. 

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

فرض کنید یک کنترل ListBox داریم که شامل 10 آیتم میشه. حالا می خواهیم آیتم یازدهم رو بعد از آیتم اول (یعنی در جایگاه دوم یا اندیس 1) قرار بدیم. برنامه نویسی که از کنترل ListBox دانش درستی نداشته باشه ممکنه بیاد تمام آیتم ها رو یه جا ذخیره کنه، مثلا یک آرایه. بعد بیاد آیتم اول و آیتم جدید رو اضافه کنه، بعد مابقی آیتم ها رو به کنترل اضافه کنه. در صورتی که با دانش کافی از این کنترل می تونیم با متد Insert این آیتم جدید رو در اندیس مورد نظر اضافه کنیم. بدون نیاز به چرخوندن لقمه دور سرمون.

در آخر دوباره میگم، که بعنوان یه برنامه نویس دات نت خوب و کارآمد، باید به هر دو زبان، تکنولوژی ها و ابزار متعارف و مهم آشنایی کافی داشته باشیم. گرچه بعنوان یک *مهندس* نرم افزار حرفه ای تسلط به تکنولوژی هایی مثل ++C الزامی جلوه می کنه. یکی از زبان های دات نت رو انتخاب کنید و خوب یاد بگیرید. به تکنولوژی ها و متودولوژی های متعارف و مهم تسلط پیدا کنید. زبان دیگر رو هم یاد بگیرید، دست بکار شید و پول در بیارید.

موفق باشید.
روز و روزگار خوش.

----------


## bad_boy_2007

سلام دوستان
حدود 6 سال است که برنامه نویسی میکنم و 4 سال است بصورت تخصصی بر روی پروژه ای مالی کار میکنم . این سیستم دارای 26 تا DLL و حداقل در هر DLL 40 فرم و کلاس است . 4 تا C#‎ و مابقی VB . گروه ما (تیم 2 دو نفره برنامه نویس و 3 نفر امور فروش و بازاریابی) عادت داره تقریبا تمامی نیازهای مشتریان را قبول کنه و تا الان هم نتیجه خوبی گرفتیم .

نکته ای که وجود داره اینه که مشتری عادت نداره برای پیاده سازی درخواستش صبر کنه و این خیلی مهمه که درخواست مشتری حداکثر 3 - 4 روزه پیاده بشه و با تست و مراحل بعدی که شامل پکیج کردن ، ایجاد اسکریپت دیتابیس و افزودن پکیج به نسخه های ارتقاء برای مدیریت نسخه ها و .... نهایتا 10 روزه تحویل بشه . حالا به نظرتون زبان برنامه نویسی ای که ساده باشه و در انجام سریع این پروسه کمکتون کنه *بچه گانه است* ؟ جالب اینجاست که تعداد بسیار زیادی از مشتریان ما (که بعدا خودشان بازاریاب هایمان نیز میشوند) از فرآیند پیچیده و وقت گیر شرکتهای مشابه گلایه میکنند .

----------


## hesam_hma

با سلام
به نظر من با چه زبانی (سی شارپ یا وی بی) برنامه نوشتن مهم نیست!!! ، چه برنامه ای نوشتن و چگونه نوشتنش مهمه!!!
البته اگه دوستان به برنامه نویسی دشوار و سخت اعتقاد دارن پیشنهاد می کنم از زبان اسمبلی استفاده کنند!!!!!!  :متفکر:

----------


## nima898

> حالا به نظرتون زبان برنامه نویسی ای که ساده باشه و در انجام سریع این پروسه کمکتون کنه *بچه گانه است* ؟





> البته اگه دوستان به برنامه نویسی دشوار و سخت اعتقاد دارن پیشنهاد می کنم از زبان اسمبلی استفاده کنند!!!!!!


کاملا موافقم.

----------


## cardano7

من در مورد اینکه VB و C#‎‎‎‎‎ کدوم یکی بهتر هستند اصرار به بحث ندارم. اصلا فرض کنیم VB بهتره. اما در جواب کسانی که در مورد C#‎‎‎ ایراد مطرح می کنند و اون را زبانی پست تر می دونند لازمه توضیح بدم که:




> کد C#‎‎‎‎‎ به دلیل {} های بلوک ها و حلقه ها و () های جلوی if ها طولانی تر و بددست تر میشه.


در هر زبانی بلوک ها باید به شکلی مشخص بشند. C#‎‎‎‎‎ از نمادها استفاده می کنه و VB از لغات.
درسته که C#‎‎‎‎‎ کلی {} داره. اما VB در عوض مجبوره از عبارتهایی برای پایان بلوک ها استفاده کنه که طولانی تر هست.
C#‎‎‎‎‎ در جلوی if ها نیاز به () داره. اما VB به دلیل استفاده نکردن از پرانتزها مجبوره مثل زبان هایی همچون پاسکال از Then استفاده کنه.
C#‎‎‎‎‎ میگه که من به جای 

2 sum 3 equals 5 end
از 
2+3=5;
استفاده می کنم.

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




> در C#‎‎‎‎‎ به دلیل حساسیت حروف برنامه نویس ها به اشتباه می افتند.


من که تا حالا اشتباه نکردم. در عوض  می تونم دو متغیر متفاوت با نام n و N تعریف کنم.




> در #C نوشتن ; در آخر دستور مزاحم برنامه نویس میشه. فراموش کردن ; عامل خیلی خطاهاست


راستش اون اوایل که پاسکال کار می کردم اوایلش یادم میرفت. اما دیگه توی ++ C یا VC یا #C دیگه این اشتباه رو نمی کردم. و ننوشتن ; هست که من رو معذب می کنه. 
زبانهایی که در آنها ; وجود ندارد برای شکستن خط مجبورند از یک علامت اضافه استفاده کنند.
حالا این بحث پیش میاد که کدوم روش خواناتره و کدوم روش راحت تره. باز این بحث برای هیچ یک از طرفین برتری ایجاد نمی کنه.




> ویرایشگر C#‎‎‎‎‎ ضعیفتر هست.


به این نکته باید توجه داشت که در C#‎‎‎‎‎ به دلیل سادگی و کوتاهی خیلی از عبارات نیاز به ویرایشگر چندان خفنی نیست. نوشتن {} وقت کسی را نمی گیره. دست C#‎‎‎‎‎ کار ها روی این کلیدها سریع هست! اما در VB اگه ویرایشگر به برنامه نویس کمک زیادی نکنه برنامه نویس اذیت میشه.




> اینکه C#‎‎‎‎‎ قشنگتره یا VB ؟


این بحث تمومی نداره. پس ولش کنیم.




> فلان کد در C#‎‎‎‎‎ یا VB کوتاهتر هست


معمولا یا تفاوت ناچیزه که مهم نیست. یا زیاده که مربوط به کدهایی میشه که 10 قرن یک بار یکی ممکنه ازش استفاده کنه. مثلا yield در C#‎‎‎‎‎ که در VB کلی کد نویسی داره. اما باید بگم که من تا حالا به عمرم از چنین کدی استفاده نکردم. یا for های نامتعارف که در C#‎‎‎‎‎ میشه نوشت و معادل VB نداره. و به ندرت استفاده میشه ولی خیلی ها این بحث ها رو برای این پیش میارند که بگند ما زبانمون در فلان زمینه قدرتی داره که یک زبان دیگه نداره.(مثل اینه که یک عرب به یک انگلیسی بگه من می تونم از خودم صدای "ع" در بیارم ولی تو نمی تونی! آخه چه اهمیتی داره که زبانت چه قدرت مانورهای غیر ضروری یی داره؟)
بهتره سراغ "جرجیس کدها" نریم.




> اینکه فلان زبان مراجعش بیشتره یا اصیلتره یا تبلیغات روش بیشتره یا ...





> به جرئت می توانم بگم بیشتر از 80% از C#‎‎‎‎‎‎ کارهای فقط بخواطر بزرگی نام C به سمت C#‎‎‎‎‎‎ رفتن نه با تحقیق و دانش ؛ اما خوب این رو هم می دونید که هرکسی اسمش رستم بود که نمی تونه با اسفندیار بجنگه


وارد بحث غیر علمی نشیم.




> به نظر من VB خیلی بهتره . هم توابع زیادی داره که کار برنامه نویس رو راحت تر و کد نویسی رو سریع تر میکنه . 
> 
> هم توی تبدیل اکثر داده ها ، مثل String به integert و ... مشکل نداره و خودش این کارو انجام میده .


اگه منظور از تابع، توابع کتابخانه ای باشه که در C#‎‎‎‎‎ هم وجود داره.
در مورد تبدیل داده منظورتون از "خودش این کارو انجام میده" چیه؟
در C#‎‎‎‎‎ که کار راحته:
تبدیل رشته به عدد:
int.Parse(myString)
تبدیل عدد به رشته:
""+myInt




> در C#‎‎‎‎‎ برای توان نمادی نداریم


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




> در C#‎‎‎‎‎ توابع نمی تونند پارامتر اختیاری داشته باشند


پارامترهای optional ابهام ایجاد می کنند. در صورت نبودن پارامترهای optional به ازای هر پارامتر optional برنامه نویس مجبور میشه که در C#‎‎‎‎‎ چهار(و نه 300) خط کد اضافه تر جهت overload کردن بنویسه. به هر حال مزایا و معایب خودش رو داره. در VC از 10 سال پیش یادمه که میشد پارامتر optional نوشت. اگه تا حالا به C#‎‎‎‎‎ چنین قابلیتی اضافه نشده به دلیل اختلاف نظرها بر سر این هست که توابع optional تو برنامه باشند بهتره یا نباشند. به نظر من خیلی فرقی نداره. خود Microsoft که گفته در نسخه ی جدید به C#‎‎‎‎‎ این توابع را اضافه می کنه که به نظر من باز هم با توجه به معایب این کار C#‎‎‎‎‎ نه خیلی بهتر میشه و نه خیی بدتر.




> وجود \ های مزاحم در رشته ها


وجود \ نوشتن خیلی کاراکترها را در زبان راحت می کنند.
عبارتهایی مثل 
\0 \r \t \n \" \' 
کار ما رو راحت می کنه. اما به این بها که نوشتن 
\\
به جای \ گاهی آزار دهنده میشه. مخصوصا جایی که می خواهیم مسیر فایل ها رو مشخص کنیم:
filePath="G:\\AllProjs\\VS2008\\SQL_Editor";
C#‎‎‎‎‎ برای این مواقع راه اصولی در نظر گرفته. با استفاده از @ میشه در رشته، \ را تبدیل به یک کاراکتر عادی کرد:
filePath=@"G:\AllProjs\VS2008\SQL_Editor";


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

من باید بگم که شخصا با VC شروع کردم و خوشم نیومد. بعد از سالها رفتم سراغ VB و باهاش حال کردم و دو هفته بعد هم C#‎‎‎‎‎ رو باهاش آشنا شدم و احساس کردم که همون چیزی هست که دنبالش بودم.
در کل اینکه کدوم کد خوانا تره  -> وقتی C#‎‎‎‎‎ کارها میگند زبان ما و VB کارها میگند زبان ما، لابد بستگی به شخص داره.
اینکه کدوم خوش دست تر و تمیزترند  -> این هم مثل بحث بالا جوابش به جایی نمی رسه.
اینکه کدوم بهتره ....
کدوم ... تره ...

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

----------


## ACorvinus

سلام.

هیچ دلیلی برای مهاجرت از vb به #c وجود نداره. نمیدونم چرا هنوزم مردم در اینباره دارن بحث می کنن؟

خب یکی با vb راحته یکی با #c، اینکه بگیم این یکی از اون یکی بهتره یه کم دور از انصافه.
موفق باشین.

----------


## nima898

با عرض سلام



> نقل قول:
> در C#‎‎‎‎‎‎ به دلیل حساسیت حروف برنامه نویس ها به اشتباه می افتند. 
> من که تا حالا اشتباه نکردم. در عوض می تونم دو متغیر متفاوت با نام n و N تعریف کنم.


عجب من این موضوع رو نمیدونستم چه ناجوره



> راستش اون اوایل که پاسکال کار می کردم اوایلش یادم میرفت. اما دیگه توی ++ C یا VC یا C#‎‎ دیگه این اشتباه رو نمی کردم. و ننوشتن ; هست که من رو معذب می کنه. 
> زبانهایی که در آنها ; وجود ندارد برای شکستن خط مجبورند از یک علامت اضافه استفاده کنند.
> حالا این بحث پیش میاد که کدوم روش خواناتره و کدوم روش راحت تره. باز این بحث برای هیچ یک از طرفین برتری ایجاد نمی کنه


تو تمام نسخه های بیسیک (GWBASIC,BASICA,QBASIC,VB,VB.NET,...) از enter برای شکستن خط استفاده میکنن که نمایش داده نمیشه ولی ";" ...




> نقل قول:
> کد C#‎‎‎‎‎‎ به دلیل {} های بلوک ها و حلقه ها و () های جلوی if ها طولانی تر و بددست تر میشه. 
> در هر زبانی بلوک ها باید به شکلی مشخص بشند. C#‎‎‎‎‎‎ از نمادها استفاده می کنه و VB از لغات.
> درسته که C#‎‎‎‎‎‎ کلی {} داره. اما VB در عوض مجبوره از عبارتهایی برای پایان بلوک ها استفاده کنه که طولانی تر هست.
> C#‎‎‎‎‎‎ در جلوی if ها نیاز به () داره. اما VB به دلیل استفاده نکردن از پرانتزها مجبوره مثل زبان هایی همچون پاسکال از Then استفاده کنه.


vb.net خیلی از عبارات رو خودش مینویسه و راحت تر از تایپ {} و قسمت پایان حلقه های مختلف عناوین مختلف داره برنامه راحت تر خونده میشه(loop,endif,next,end.. و...)
ضمنا تو بیسیک هم از علامتهای + - / * = ... استفاده میشه

----------


## b.mahsa

این بحث vb و #c تمومی نداره . :چشمک: 
به نظر من توی برنامه نویسی ، زبان برنامه نویسی زیاد هم مهم نیست .
اگر قرار  به بهتر بودن بود microsoft اعلام میکرد vb کارا vb رو رها کنن و بیان سراغ #C . چند تا زبان میزاره تا تمام سلیغه ها رو پوشش بده. 
هر برنامه نویسی میتونه یه هفته ای از vb بره به #c یا برعکس . من خودم این کارو کردم.
این دوتا زبان تغریبا یکی ان. فرق زیادی ندارن.
فعلا که microsoft داره این دو تا زبان رو موازی جلو میبره . هر کسی طبق سلیغه ی خودش انتخاب کنه و جلو بره. :لبخند:

----------


## sinaone1

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

اما اگه تازه کارید  و می خواهید برید دنبال یه زبان برنامه نویسی توپ ، باید بگم اشتباه می کنید !!!!!!!!! 
چرا ، چون برنامه نویس کسی که حداقل زبان های ( vb.net , C#‎.net,Asp.net,HTml) رو حداقل فول بلد باشه چرا ؟
چون من زمانی که میرم توی یک شرکت برای انجام یه پروژه ، یکی می خواد C#‎ باشه دیگری vb.net و یکی دیگه هم می خواد web application بنویسه !!!! OK ????
اما شکه نشید ، همون استاد من دوباره میگفت ، اگه گفتند چه زبان برنامه نویسی بلدی بگو همه ی زبان ها ، چرا ؟
چون بلاک کلی همه زبان ها یکیه مثل if , for و غیره و فقط شکل دستورات با هم فرق داره ، پس اگه من فلان زبان رو بلد بودم کافیه که برم و شکل دستورات در زبان جدیدی که می خوام یاد بگیرم رو یاد بگیرم و دیگه اون زبان رو هم بلدم
و در آخر یه نکته و تاسف : متاسفم چون میبینم هنوز بعضی ها روی یه چیز تعصب دارند ، دوستان به هر کی که می پرستید تعصب باعث میشه که فقط عقب بیفتید ، منم قبلا مثل شما همینطور بودم و می گفتم که Asp.net سرعت کندی داره و مسخره است و این باعث شد چندین پروژه بزرگ رو از دست بدم ولی زمانی که اونو یاد گرفتم دیدم که چه اشتباهی کردم و پشیمون شدم و ( دیگه رو هیچ چیزی تعصب نشون ندادم و اونو با عقل سنجیدم ) 
نکته هم اینکه sql server , access و غیره رو همه بلدند ، اگه می خواهی پیشرفت کنی چیزی رو دنبال کن که بقیه بلد نیستند .

و در آخر آقا من متعجبم ، چرا ؟ چون این بحث بی فایده 17 صفحه طول کشیده !!!!!!!!!!!!!!!!!!!!!!! آخه چرا ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

----------


## mehrdad.gh

سلام

من یه دلیل برای مهاجرت ا زبان vb  به  C#‎  دارم  شخصا این اتفاق برام افتاده

ببینید هیچ فرقی بین نوشتن کد ها وجود نداره هیچکدوم از اون یکی شاخ تر نیست ولی وقتی به دانشگه میری کلا مغز ادما شست و شو میدن 

وقتی توی دانشگاه دارند هنوز زبانهای C++‎  ,  C   درس میدند  بعد از یه مدتی نزدیکیه بیشتری به زبان C#‎ پیدا میکنید برای خود من گذاشتن } اول برنامه یه چیزه مزخرفی بود و وقت گیر و اعصاب خورد کن به دلیل اینکه همیشه اگر یه جایی یکیشا یادت بره خطا یگری ولی دو ترم C  خواندن باعث شده که با vb.net  دیگه احصاص نزدیکی نکنم 

به طور کل من یکی از دلایلشا دروس دانشگاه میدونم

----------


## cardano7

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

*هر زبان زنده یی در ازای هر ایرادش یک حسن داره.*
هر چیزی یک بهایی داره.




> عجب من این موضوع رو نمیدونستم چه ناجوره


چرا باید ناجور باشه؟ در C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎ تمایز حروف عیب نیست. چون در ازای اون یک سری قابلیت های دیگه خواهید داشت. البته اگه کسی برای اولین بار با این زبان یا دیگر زبانهای حساس به حروف برنامه بنویسه در ابتدا یکم سختش هست اما بعد عادت می کنه.
دیگه سخت تر از لینوکس نیست که حتی برای اسم فایل ها هم به حروف بزرگ و کوچک حساسه!
خیلی زبان ها case-sensitive هستند مثل ++C و VC ولی چرا فقط به C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎ ایراد گرفته میشه؟ 
خود C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎ نویس ها case sensitivity را دوست دارند و انصافا اگه قرار  بر این می بود که خود کامپایلر C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎ رو طوری تغییر بدند که همه ی حروف اسم گذاری ها رو را به هنگام کامپایل به بزرگ یا کوچک تغییر بده، این کار برای مایکروسافت زحمتی نمی داشت اما مسلما با این کار خیلی از طرف دارانش رو از دست میده.
هر کسی در برنامه نویسی یک سلیقه یی داره.




> تو تمام نسخه های بیسیک (GWBASIC,BASICA,QBASIC,VB,VB.NET,...) از enter برای شکستن خط استفاده میکنن که نمایش داده نمیشه ولی ";" ...


گویا فقط ما ایرانی ها نیستیم که سر ; بحث داریم:
statements with semicolons 
لازمه بگم که خیلی زبان ها هستند که در اونها ; پایان دهنده ی statement هست.
Comparison of programming languages (syntax)
راستش باید بگم هر زبانی برای هر مزیتی که داره لازمه که یک بهایی بپردازه.
در C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎ نوشتن semicolon یک زحمت تایپی کوچک برای برنامه نویس داره. اما خوانایی برنامه رو بالا می بره. ممکنه بگید چه طوری خوانایی برنامه میره بالا؟ مگه این همه بدون ; برنامه نوشتیم بلایی سرمون اومده؟
راستش باید بگم که وقتی هم با زبانی برنامه بنویسید که semicolon statement terminator هست و هم با زبانی که پایان خط به معنی statement terminator هست، و بعد با هم مقایسه شون کنید، خودتون می بینید که ; چقدر خوانایی را بالا می بره. همیشه مسئله کوتاه نویسی محض نیست. 
این کار حتی به خود کامپایلر در جهت تشخیص statement ها کمک می کنه. مثلا اگه خطایی پیش بیاد محل و علت وقوع خطا بهتر تشخیص داده میشه. 
ما در 100 گذشته در زبان فارسی مون چیزی به نام نقطه ی آخر جمله نداشتیم ولی اروپایی ها داشتند. اما فارسی زبان ها به تقلید از غربی ها نقطه و کاما و ... را وارد زبان فارسی کردند. آیا نوشتن نقطه آخر هر جمله شما رو آزار میده؟
خیلی از کسانی که برنامه نویسی می کنند واقعا فرق بین Statement و Block و expression و ... رو نمی دونند. توی C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎ یک نفر که برنامه نویسی می کنه باید بدونه که Statement کجا به پایان رسده و در عوض هنگام خوندن برنامه، به راحتی پایان Statement ها رو میبینه. برای اینکه ببینیم کجا باید ; گذاشته بشه لازمه که یک سری مفاهیم اولیه به ویژه در مورد مفهوم Statement ها را بدونیم.
مثلا چرا در این مثال نمیشه بعد از اعلان تابع(خط اول) یک semicolon آورد؟
public float myFunc(int A)
{
	return Math.Sin(A)+MAth.Cos(A);
}

پس این طور هم نیست که پایان هر خط از ; استفاده بشه. و گر نه این کار بی معنی می بود!
بدیهی هست که در زبان C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ بین این دو کد تفاوت زیادی هست:

for(int i=0;i<10;i++)
	List.Item[i]=Row[i];
و
for(int i=0;i<10;i++);
	List.Item[i]=Row[i];

(به semicolon های آخر خطوط توجه کنید.)

یا اینکه چرا به جای استفاده از بلوک یک تابع نمیشه برنامه را به این شکل نوشت:
public float myFunc(int A)
	return Math.Sin(A)+MAth.Cos(A);

در حالی که اگه 
{
	return Math.Sin(A)+MAth.Cos(A);
}
داخل یک if بود می شد این کار رو کرد!

یا مثلا چرا چنین کاری ممکن نیست؟

try
	statement A;
catch
	statement B;

و باید به این شکل نوشت؟

try
{
	statement A;
}
catch
{
	statement B;
}


یک نکته ی دیگه اینه که VB به دلیل نداشتن statement terminator قابل نمایش، از داشتن Empty Statement ها محروم میشه:
for(.......)
;

در اینجا ممکنه بگید که خوب ما از یک بلوک خالی استفاده می کنیم. من هم نمی گم این کد معادل VB نداره. فقط می خوام بگم که ; یک سری مزایا هم داره.
خوب در زبان VB تمایز بین statement ها برای برنامه نویس کمرنگ تر به نظر می رسه. اما در عوض زحمت نوشتن ; رو نداره.
نمی خوام نتیجه بگیرم که زبان باید هر statement رو چطور تموم کنه. هر زبانی روش خودش رو داره. و صد البته مزایا و معایب خودش رو و شما باید ببینی از کدوم این روش ها خوشت میاد. C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎ به دنبال هدفی هست در راستای اون هدف مجبوره بهاش رو هم بپردازه.
جالبه بدونید خیلی زبان ها در مورد به کار گیری ; از C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎ سختگیرتر هستند. مثلا در پاسکال در اکثر مواقع لازمه که بعد از end هم از semicolon استفاده بشه:

if(A<B)
Begin
	statement A;
	statement B;
End
Else
Begin
	statement C;
	statement D;
End;

در این کد بعد از End اول نباید که ; بیاید چون بعد از اون داریم از Else استفاده می کنیم. بعد از  End دوم علامت ;  الزامی هست و اگر اون را حذف کنید کامپایلر ایراد می گیره. این یکی از رایج ترین خطاها در پاسکال هست.
یا در VC بعد از تعریف کلاس باید علامت ; آورد:

class myClass
{
.....
};

ننوشتن این ; عامل یکی از خطاهای رایج در این زبان هست. 
پس می بینید که C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎ نسبت به این زبان ها کاربرد ; را محدود تر کرده.




> vb.net خیلی از عبارات رو خودش مینویسه و راحت تر از تایپ {} و قسمت پایان حلقه های مختلف عناوین مختلف داره برنامه راحت تر خونده میشه(loop,endif,next,end.. و...)


خوب اینکه چرا C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ بلوک بعد از خیلی حلقه ها و شرط ها رو تکمیل نمی کنه هم علت داره. در C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ ، اگر بعد از if فقط یک statement تکی بیاد میشه بدون نوشتن بلوک ازش استفاده کرد:

if(A<B)
{
B=A;
}

معادل

if(A<B)
B=A;


خوب حالا شما بگید وقتی برنامه نویس خط if رو می نویسه Editor چطور پیشبینی کنه که شما می خواهید کدوم یکی از اینا رو به کار ببرید؟ پس نمیشه به جای شما {} ها رو بنویسه.
علاوه بر اینها ویرایشگر VB مزایای دیگری هم بر ویرایشگر C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ داره. مثلا خط کشی بین توابع. در عوض ویرایشگر C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ مزایای دیگری به ویرایشگر VB داره. از جمله رنگ آمیزی بهتر. 
در C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ مداخله ی Editor در کار برنامه نویس خیلی کمتره. اما اونجایی که بهش نیاز دارید حتما به کار شما رسیدگی می کنه. این مسئله می تونه خوب یا بد باشه. بستگی به خودتون داره.
در VB اگر یک if و while  تو در تو داشتیم به دلیل تفاوت های علامت های پایان بلوک مثل
end if
end while 
میشه تشخیص داد که کدوم پایان مال کدوم آغاز هست. در حالی که در C#‎‎‎‎‎‎‎‎‎ برای همه این پایان ها از یک علامت و اون هم آکولاد بسته استفاده میشه. این مسئله به ظاهر ایجاد ابهام می کنه. اما اگر روش دندانه این را درست استفاده کنید ابهامی به وجود نمیاد. در ضمن ویرایشگر C#‎‎‎‎‎‎‎‎‎ هنگامی که روی یکی از آکولاد بسته ها می روید، آکولاد باز نظیر اون را Highlight می کنه. و این جوری به شما کمک می کنه. در حالی که در VB این کار رو ندیدم انجام بده. حالا اگه از دو حلقه ی مشابه مثل while استفاده بشه و روش دندانه ای درست رعایت نشه معلوم نیست که هر کدوم از end while ها متعلق به کدام while هست. اما بدیهی هست که برای یک برنامه نویس خوب این جور مسائل حاشیه ای چندان اهمیت نداره.
هدف من در اینجا اینه که بین دو زبان مقایسه انجام بشه نه اینکه وقتمون رو صرف این کنیم که نتیجه را به این سمت بکشونیم که کدوم زبان بهتره.




> ضمنا تو بیسیک هم از علامتهای + - / * = ... استفاده میشه


منظور شما رو درست متوجه نشدم. اما اگه منظورتون اینه که در C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ در بلوک های شرطی از == به جای = استفاده میشه، باید این نکته را روشن کنم که ما دو مفهوم کاملا متفاوت از هم داریم.
یکی قیاس و یکی انتساب.
در VB می نوسیم:

a:=b

معادلش در C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ میشه:

a=b;

در VB این گونه دو عبارت را با هم مقایسه می کنیم:

if A=B Then

 و در C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ به این شکل:

if (A==B)

خوب زمانی که VB علامت = را برای قیاس استفاده می کنه ناچار میشه که برای انتساب از =: استفاده کنه. اما C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ علامت = را برای انتساب انتخاب کرده و بهاش اینه که == را برای قیاس استفاده کنه. پس این نشون دهنده ی نقطه ی قوت و ضعف در یک زبان نیست.
البته زبان هایی هم هستند که در اونها برای قیاس و انتساب هر دو از یک علامت = استفاده میشه اما این زبان ها به هیچ وجه اصولی نیستند.
نمونه زبانی که در اون روش مشابه VB به کار گرفته میشه:
Pascal
و نمونه زبانهایی که مشابه C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ عمل می کنند:
VC
C++‎‎

-------------------------------------------------------------------
لازمه دوباره بگم که هدف من این نیست که ثابت کنم کدوم زبان بهتره بلکه می خواهم نشون بدم که:
1- هر زبانی برای خودش *مزایایی* داره و برای اون داره *بهاش رو هم می پردازه*.
2- زبان C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ هم برای خودش اصولی داره که باید به طور علمی بررسی بشه. نه اینکه با احساسات با اون برخورد غیر منطقی کنیم. متاسفانه این روند به وجود اومده که *برخی دارند سعی می کنند زبان C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎ را مسخره و غیر منطقی جلوه بدند*. حرف من اینه که هر وقت در زبانی دیدیم با یک اصلی مشکل داریم قبل از نکوهش زبان دلیل اون زبان را برای اون اصل جویا بشیم. در اکثر موارد دلیل زبان منطقی هست.

در پایان باید بگم که این دو زبان به لحاظ ویژگی های باطنی(و نه ظاهری) دارند روز به روز به هم نزدیک تر میشند و نه دورتر.

----------


## hossein-khoshseyar

> در VB می نوسیم:
> 
> a:=b


مطمئني ؟ !!!!؟

----------


## hossein-khoshseyar

من تا حالا كه نديدم تو وي بي براي انتساب بنويسيم
a:=b
الان هم سعي كردم ولي نشد !

----------


## ACorvinus

> خوب زمانی که VB علامت = را برای قیاس استفاده می کنه ناچار میشه که برای انتساب از =: استفاده کنه.


سلام.

شما زبان Delphi و Pascal رو با Visual Basic اشتباه گرفتین. مطمئنین بی طرفانه دارین قضاوت می کنین؟!  :گیج: 

موفق باشین.

----------


## mhmoein

> سلام.
> 
> هیچ دلیلی برای مهاجرت از vb به C#‎‎ وجود نداره. نمیدونم چرا هنوزم مردم در اینباره دارن بحث می کنن؟
> 
> خب یکی با vb راحته یکی با C#‎‎، اینکه بگیم این یکی از اون یکی بهتره یه کم دور از انصافه.
> موفق باشین.


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

----------


## hossein-khoshseyar

> سلام.
> 
> شما زبان Delphi و Pascal رو با Visual Basic اشتباه گرفتین. مطمئنین بی طرفانه دارین قضاوت می کنین؟! 
> 
> موفق باشین.


متوجه منظورتون نمي شم
الان كه من  با وي بي كد مي نويسم هم براي انتساب و هم براي قياس از = استفاده مي كنم 
اين خود مفسر كه در زمان اجرا و ترجمه با توجه به جاي استفاه از = مي فهمه كه براي قياس به كار برده شده يا انتساب

من طرفداري بي خود نمي كنم و نمي گم كه وي بي بهتره 
من با هردوتا كار مي كنم و با اين قضيه مشكلي ندارم
*فقط وي بي براي انتساب و مقايسه از = استفاده مي كنه*

----------


## ACorvinus

if(A<B)
Begin
statement A;
statement B;
End
Else
Begin
statement C;
statement D;
End;

سلام دوباره.

متوجه شدم شما یه برنامه نویس نیستین.

----------


## ACorvinus

> متوجه منظورتون نمي شم
> الان كه من با وي بي كد مي نويسم هم براي انتساب و هم براي قياس از = استفاده مي كنم 
> اين خود مفسر كه در زمان اجرا و ترجمه با توجه به جاي استفاه از = مي فهمه كه براي قياس به كار برده شده يا انتساب
> 
> من طرفداري بي خود نمي كنم و نمي گم كه وي بي بهتره 
> من با هردوتا كار مي كنم و با اين قضيه مشكلي ندارم
> *فقط وي بي براي انتساب و مقايسه از = استفاده مي كنه*


 
سلام.

دوست عزیز من با Cardano7 بودم نه با شما. فکر کنم ایشون یه طرفدار پراپاقرص #C هستش و اصلا محیط VB رو ندیده!

موفق باشین.

----------


## hossein-khoshseyar

> if(A<B)
> Begin
> statement A;
> statement B;
> End
> Else
> Begin
> statement C;
> statement D;
> ...


شما كه برنامه نويسي توضيح بده
اين چيزي كه نوشتي يعني چي؟
يه تيكه كد وي بي بنويس و تو vs2008  چك كن ببين مي توني براي انتساب بنويسي :=

----------


## hossein-khoshseyar

> سلام.
> 
> دوست عزیز من با Cardano7 بودم نه با شما. فکر کنم ایشون یه طرفدار پراپاقرص C#‎‎ هستش و اصلا محیط VB رو ندیده!
> 
> موفق باشین.


اوكي مثل اينكه يه اشتباه صورت گرفته و يه سوء تفاهم پيش اومد كه حل شد
بدون توجه به نام نويسنده پست برا همديگه پست گزاشتيم

موفق باشي

----------


## ACorvinus

> شما كه برنامه نويسي توضيح بده
> اين چيزي كه نوشتي يعني چي؟
> يه تيكه كد وي بي بنويس و تو vs2008 چك كن ببين مي توني براي انتساب بنويسي :=


 
سلام.

فکر کنم شما با من مشکل دارین!!! من با شما نیستم حاجی. دارم به چیزایی که Cardano7 نوشته جواب میدم. منم میدونم که تو Net. اصلا =: وجود نداره!

حله؟!

----------


## hossein-khoshseyar

> سلام.
> 
> فکر کنم شما با من مشکل دارین!!! من با شما نیستم حاجی. دارم به چیزایی که Cardano7 نوشته جواب میدم. منم میدونم که تو Net. اصلا =: وجود نداره!
> 
> حله؟!



گفتم كه آقا حله 
سوء تفاهم پيش اومده بود
شادو پيروز باشي :کف کرده!:

----------


## Mani_rf

سلام مجدد به همه برنامه نویسان عزیز.
یادمه وقتی که جوان بودم با چندتا از بچه ها تو این تاپیک سر این تو سر و کله هم میزدیم که اونا میخواستم اثبات کنن که C#‎‎‎‎‎ از VB.Net برتره و من می خواستم این را ثابت کنم که هیچ برتری وجود نداره.
اگر به تاریخ پست ها توجه کرده باشین این بحث 3بار بسته شده و در هر بار یک نفر ترک زمین کرده.
اون موقع که تو این بحث شرکت میکردم زبان تخصصیم VB.NET بود و با C#‎‎‎‎‎ آشنا بودم؛ اما الان 3،4 ماه که دارم تو یک شرکتی با C#‎‎‎‎‎ کد میزنم و چند تا همکار کاملا حرفه ای C#‎‎‎‎‎ کار هم دارم؛ 

متاسفانه من تو این بحث به این نتیجه رسیدم که هر کدوم از طرفین که کم میارن به بیراهه میزنن و مثائلی را مطرح می کنن که اصلا ارزش فکر کردن نداره. برای همین من هم این بحث را رها کردم.

*اما الان میبینم که دوباره باید برگردم و این بحث را از سر بگیرم. با یک تفاوت ، از امروز اثبات خواهم کرد که VB.Net از C#‎‎‎‎‎ برتر است. هر کس که به این دو تسلت دارد و فکر میکند که C#‎‎‎‎‎ برتر است من آماده گفتگو های دوجانبه هستم.*

وقتی بین این دوتا مقایسه کلی میکنیم در کل تفاوت چندانی احساس نمی کنی اما به نظر من بعضی از امکانات که تو VB قرار داده شده واقعا کار را راحت میکنن که چند تا مزیت اصلی دارن :
1- سرعت کدنویسی را به شکل چشم گری افزایش میدن.
2- برنامه نویس را در کد نویسی بسیار راحت میکنن و از نوشتن خیلی چیز ها معصون می کنند.
3- خطاهای ایجاد شده در برنامه را به شکل چشمگیری کاهش میدن.
و...
من این نتیجه را گرفتم که در واقع گذاشتن و نگذاشتن; خیلی برنامه نویس را اذیت نمی کنه، (البته نبودنش بهتر و منطقی تره) و یا { } و END خیلی در عملکرد تفاوت چندانی ندارد و برای پروسجر های کوتاه کوتاه مانند رویداد ها خیلی برای برنامه نویس تفاوتی ندارد اما برخی چیز ها را نمی توان منکر شد که بودنش از نبودنش بهتر است
برای نموه یک مثال :
این دوتا کد را ببینید (پاسخ مدنظر : 0.6) :
*C#‎‎‎‎‎:* 
textBox1.Text = Convert.ToString(0.1);
textBox1.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) + 0.5); 
*VB.Net* TextBox1.Text = 0.1
TextBox1.Text += 0.5


واقعا نمی توان این توانایی را تو VB.NET نادیده گرفت، تبدیل خودکار متغییر ها یعنی آزاد شدن از هرگونه کدی برای تبدیل.

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

----------


## Open-Source

ای بابا.
توی چارچوب دات نت بین C#‎ , VB از نظر قدرت هیچ تفاوتی وجود نداره (انتخاب یک زبون توی چارچوب دات نت کاملا سلیقه ای هستش).
چرا این بحث بین C#‎,VB تموم شدنی نیست؟!!.
خواهشا اینجور تاپیک های تکراری رو اینقدر کشش ندید.
 :گریه:

----------


## cardano7

سلام
رفتم چند ساعت بعد که اومدم دیدم کلی انتقاد علیه =: شده.
من خیلی وقت هست که VB رو کنار گذاشته بودم و بهم حق بدید که خیلی هم یادم نمونده باشه. این را هم در نظر بگیرید که آدم بعد گذشت سالها ممکنه برخی مفاهیم را در برخی زبان ها از یاد ببره. به ویژه اگه چند زبان را بدونه امکان قاطی کردن اونا وجود داره.




> مطمئني ؟ !!!!؟





> من تا حالا كه نديدم تو وي بي براي انتساب بنويسيم
> a:=b
> الان هم سعي كردم ولي نشد !





> سلام.
> 
> شما زبان Delphi و Pascal رو با Visual Basic اشتباه گرفتین. مطمئنین بی طرفانه دارین قضاوت می کنین؟! 
> 
> موفق باشین.





> سلام.
> 
> دوست عزیز من با Cardano7 بودم نه با شما. فکر کنم ایشون یه طرفدار پراپاقرص C#‎‎‎‎‎‎‎‎ هستش و اصلا محیط VB رو ندیده!
> 
> موفق باشین.





> شما كه برنامه نويسي توضيح بده
> اين چيزي كه نوشتي يعني چي؟
> يه تيكه كد وي بي بنويس و تو vs2008 چك كن ببين مي توني براي انتساب بنويسي :=


آقا ببخشید. ما که با هم دعوا نداریم. یک نفر شما هم که این رو می گفت متوجه می شدم. مسئله فقط مقایسه ی بی طرفانه هست. و گرنه با این حرفا نه من VB نویس میشم و نه شما C#‎‎‎‎‎‎ نویس. و اگه هدف بحث غیر از این باشه همون حرفی میشه که خیلی ها میگند یعنی این بحث بی اساسه.

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

a=(b=c)&(d=e)

if (A=myClass.myFunc)=NULL then
	something;
end if

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




> شما زبان Delphi و Pascal رو با Visual Basic اشتباه گرفتین. مطمئنین بی طرفانه دارین قضاوت می کنین؟!


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




> if(A<B)
> Begin
> statement A;
> statement B;
> End
> Else
> Begin
> statement C;
> statement D;
> ...


میشه بگید که مشکلش سر چیه؟
اگه سر Then هست، حرف شما درست(پاسکال رو *11 سال* پیش گذاشتم کنار!). بحث اصلی چیز دیگه هست.




> برای نموه یک مثال :
> این دوتا کد را ببینید (پاسخ مدنظر : 0.6) :
> *C#‎‎‎‎‎‎‎‎‎‎‎:* 
> textBox1.Text = Convert.ToString(0.1);
> textBox1.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) + 0.5); 
> *VB.Net* TextBox1.Text = 0.1
> TextBox1.Text += 0.5
> 
> 
> [LEFT]واقعا نمی توان این توانایی را تو VB.NET نادیده گرفت، تبدیل خودکار متغییر ها یعنی آزاد شدن از هرگونه کدی برای تبدیل.


در مورد اولی باید بگم که خودم هیچ وقت چنین کاری نکردم و تبدیل عدد به رشته راحته:
TextBox1.Text = ""+0.1;
مورد دوم را قبول دارم. اما معادل C#‎‎‎‎‎‎ ش دیگه به اون طولانی هم نیست:
textBox1.Text = "" + (double.Parse(textBox1.Text) + 0.5);

البته این که در VB برخی عبارات کوتاهترند رو منکر نمشم. برخی عبارات هم در C#‎‎‎‎‎‎ کوتاهترند:
*C#‎‎‎‎‎‎*string S=12;
*VB.net*Dim S As String = 12

ولی مسلما برای یک برنامه نویس این معیار اصلی نیست.
به هر حال هر زبانی برای هر کاری دلیلی داره.
در C#‎‎‎‎ هم دلیل اینکه نمیشه برای اون هدف از 
TextBox1.Text += 4
استفاده کرد اینه که کلاس string خیلی عبارات را به معنایی دیگر تفسیر می کنه.
مثلا اگه همین خط رو در C#‎‎‎‎ بنویسی معنیش این میشه:
اگر TextBox1.Text برابر "12" باشه، حاصل "124" میشه.
و اگر برابر "Ali" باشه، حاصل اون برابر "Ali4" میشه. در حالی که در VB این کد طوری دیگه تفسیر میشه که باعث پرتاب Exception میشه.




> واقعا نمی توان این توانایی را تو VB.NET نادیده گرفت، تبدیل خودکار متغییر ها یعنی آزاد شدن از هرگونه کدی برای تبدیل.


در بسیاری مواقع برنامه نویس اشتباه می کنه و کامپایلر همین جا مچش رو میگیره. در حالی که در VB کامپایلر کد را به اون شکلی تقسیر می کنه که برای برنامه نویس راحت تر باشه در حالی که همیشه همون کدی نیست که برنامه نویس می خواسته بوده. در C#‎‎‎‎ امنیت از راحت بودن برنامه نویس مهم تر تلقی میشه. VB فرض رو بر این میگیره که شما درست می نویسی. کارت راحت تر میشه اما نباید هم اشتباه کنی.

به هر حال یک چیزی میدی و یک چیزی می گیره. حرف من هم همینه. 
*هیچ کدوم از این زبان ها برتری مطلق نسبت به دیگری ندارند.*
این حرف به هیچ وجه تعصب روی C#‎‎‎‎ یا VB نیست. اگر کسی فکر می کنه که روی زبان خاصی تعصب دارم بد نیست پست های قبل از اولین پست من رو یک نگاه بندازید و بعد قضاوت کنید که چه کسی متعصبه.

----------


## sari-1369

در کل Syntax ویبی خیلی راحت تره برای برنامه نویس .

----------


## b.mahsa

من با جناب sari  موافق نیستم البته ببخشیدا.
من خودم vb کارم ولی #c هم مینویسم vb روون تره. سادست. یه جورایی زبانش نزدیک به زبان گفتاریه .  ولی #c هم راحتی  های خاص خودش رو داره . اگر دستت بهش عادت کنه خوانا تر هم هست. وجود {} ها درون #C به خوانا بودنش کمک می کنه .

----------


## sari-1369

بنده C#‎ , vb  رو به صورت موازی یاد گرفتم و باهاشون کار کردم . و این تجربه شخصی خودم بود .
و دقیقا بخاطر همون نکته ای که شما هم بهش اشاره کردین [*یه جورایی زبانش نزدیک به زبان گفتاریه*] گفتم راحت تره . همین چیزی که میگیم رو مینویسیم . 

من خودم توی کد نویسی توی ویبی خیلی سریع تر تایپ میکنم و جلو میرم که این خودش یه مزیته .

در ضمن بنده که تا حالا با خوانایی کد های ویبی مشکلی نداشتم .
کلا ویبی راحت تره  :لبخند گشاده!:

----------


## cardano7

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

با این اوصاف باز هم میگیم که فارسی برای ما قشنگ تر هست.
شمایی که سال ها با VB برنامه نوشتی برای شما VB مثل زبان مادری شده. ولی من با اینکه VB رو زودتر از C#‎‎ یاد گرفتم دو هفته بیشتر این زبان رو نخوندم و بعد گذاشتمش کنار که فقط C#‎‎ بخونم. برای همین نمی تونم مثل شما فکر کنم.

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

----------


## علیرضا مداح

سلام،
قصد ورود به این بحث را نداشتم، اما با دیدن چند نکته، به این بحث وارد شدم تا این مسئله به طور منطقی مورد بررسی قرار گیرد،





> *از امروز اثبات خواهم کرد که VB.Net از C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ برتر است*


خوب، بحث را شروع می کنیم؛



> 1 - سرعت کدنویسی را به شکل چشم گری افزایش میدن.
> 2- برنامه نویس را در کد نویسی بسیار راحت میکنن و از نوشتن خیلی چیز ها  معصون می کنند.
> 3- خطاهای ایجاد شده در برنامه را به شکل چشمگیری کاهش میدن.


ببینید همه روزه با افرادی مواجه می شوم که سوال زیر را می پرسند:

چرا در C#‎‎‎‎‎‎‎‎‎‎‎‎ دستورات باید به ; ختم شوند؟
و در مقابل برنامه نویسان C#‎‎‎‎‎‎‎‎‎‎‎‎ می پرسند:

چرا در VB.Net برای نوشتن چند خط کد انقدر باید از واژگان زبان روزمره استفاده کنیم؟ چرا باید برای نشان دادن به ارث بری به جای علامت : از یک واژه مثل Inherits استفاده کنیم؟
توجه کنید که بین "راحت تر" بودن و "متفاوت بودن" مرز باریکی وجود دارد و نمی توان از این دلایل سطحی به عنوان برتری یک زبان نسبت به زبان دیگری یاد نمود،
حال به سراغ دو قطعه کد نوشته شده توسط شما می رویم،
در VB.Net گزینه ای به عنوان Option Strict قرار دارد که به طور پیش فرض بر روی Off قرار دارد، این گزینه ی وظیفه اعمال Strong-Typing، چک کردن Data Type ها هنگام تبدیل، Late-Binding(در صورت Off بودن) و ... را بر عهده دارد، در نتیجه ست کردن این گزینه بر روی Off که در پی آن باعث می شود کد "اشتباه" شما کامپایل شود، عواقب زیر را به دنبال دارد:

Performance برنامه کاهش پیدا می کند، یکی از دلایل این است که Data Type Conversion Rules در زمان Run-Time چک می شو.بنا بر مورد فوق، اشکال زدایی برنامه کاری دشوار خواهد شد، چون تا زمانی که کد به مرحله Run-Time نرسد، بعضی خطاها آشکار نمی گردند،قطعه کد زیر را ببینید و تصمیم بگیرید:

TextBox1.Text = "Hello World"
TextBox1.Text += 0.1 'throws exception
TextBox1.Text += 0.5


چند منبع جهت مطالعه ی بیشتر:

1.Because *Option Strict On* provides _strong typing_, prevents  unintended type conversions with data loss, disallows late binding, and  improves performance, its use is strongly recommended.
ref: http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx

2.With Option Strict on, you protect yourself from inadvertent late  binding and enforce a higher level of coding discipline. For a list of  the restrictions present with Option Strict, see the MSDN Library. The  caveat to this is that all narrowing type coercions must be explicitly  specified. However, this in itself may uncover other sections of your  code that are doing more work than you had previously thought, and it  may help you stomp some bugs in the process.
ref: http://msdn.microsoft.com/en-us/library/ms973839.aspx

3.Option  Strict  Off  considered harmful - VBInfoZine Article
4.GetDotNetCode - OPTION  STRICT ON
5...
تنها مورد مناسبی که از ست کردن Option Strict بر روی Off وجود دارد، هنگامی است که قصد استفاده از اشیاء COM را دارید، در غیر اینصورت و با ست کردن بر روی Off، با کدی مواجه خواهید شد که دارای Performance نامناسب، فاقد Reliability و دشوار در Debug کردن می باشد،

اینکه در VB.Net ممکن است کارهایی از این دست "مجاز" باشند و در بعضی موارد شما را به "اشتباه" بیاندازد و به قطعه کدی "غیر قابل اعتماد" منجر شود، دلیل بر "سادگی" و "قدرت" نیست،
برای اثبات برتری، به دلایل محکم و فنی احتیاج است،

منتظر شنیدن دلایل شما هستم،/

----------


## pirmard

> ،
> 1-چرا در VB.Net برای نوشتن چند خط کد انقدر باید از واژگان زبان روزمره استفاده کنیم؟ 
> 
> 2-در VB.Net گزینه ای به عنوان Option Strict قرار دارد که به طور پیش فرض بر روی Off قرار دارد، این گزینه ی وظیفه اعمال Strong-Typing، چک کردن Data Type ها هنگام تبدیل، Late-Binding(در صورت Off بودن) و ... را بر عهده دارد، در نتیجه ست کردن این گزینه بر روی Off که در پی آن باعث می شود کد "اشتباه" شما کامپایل شود، عواقب زیر را به دنبال دارد


1- برای بالا بردن ریدیبیلیتی ا خوانایی برنامه که مزیت حساب میشه (هر چند در قبالش رایتبیلیتی رو میاره پایین که عیب حساب میشه) استدلال شما که "چرا کدها بهزبان روزمره شبیه اند" در واقع یه قوت رو نشون میده. (که این readability خود بخود بر روی عوامل دیگه مانند : نگهداری و هزینه آموزش زبان هم تاثیر مثبت داره)

2- خوب هیچ وقت اونو off نکنین تا مثل سی شارپ مقید سازی به صورت early binding انجام بگیره  . کسی که مجبور نکرده شما اونو تغییر بدین و به دشواری در مثالی که زدین برسین !

----------


## pirmard

> در VB.Net گزینه ای به عنوان Option Strict قرار دارد که به طور پیش فرض بر روی Off قرار دارد، این گزینه ی وظیفه اعمال Strong-Typing، چک کردن Data Type ها هنگام تبدیل، Late-Binding(در صورت Off بودن) و ... را بر عهده دارد، در نتیجه ست کردن این گزینه بر روی Off که در پی آن باعث می شود کد "اشتباه" شما کامپایل شود، عواقب زیر را به دنبال دارد:
> 
> Performance برنامه کاهش پیدا می کند، یکی از دلایل این است که Data Type Conversion Rules در زمان Run-Time چک می شود.بنا بر مورد فوق، اشکال زدایی برنامه کاری دشوار خواهد شد، چون تا زمانی که کد به مرحله Run-Time نرسد، بعضی خطاها آشکار نمی گردند،
> .
> تنها مورد مناسبی که از ست کردن Option Strict بر روی Off وجود دارد، هنگامی است که قصد استفاده از اشیاء COM را دارید، در غیر اینصورت و با ست کردن بر روی Off، با کدی مواجه خواهید شد که دارای Performance نامناسب، فاقد Reliability و دشوار در Debug کردن می باشد،
> 
> اینکه در VB.Net ممکن است کارهایی از این دست "مجاز" باشند و در بعضی موارد شما را به "اشتباه" بیاندازد و به قطعه کدی "غیر قابل اعتماد" منجر شود،


یک سوال دارم صرحتا می خوام جواب شما رو بدونم :
*-یک زبان برنامه نویسی داریم زمانی که یک متغیر رو تعریف می کنیم با دستور زیر به این صورت عمل می کنه :
dim a as int
با این دستور میره و یه خونه از حافظه که آزاد باشه به مقدار نیاز میگیره و محتوای اونو صفر می کنه (مثل همه ی زبانهایی که دیدین مثلا وی بی)
حالا یه زبان دیگه با این دستور خونه ی حافظه رو می گیره اما مقدار قبلی اونو کاریش نداره . یعنی صفرش نمی کنه . 
مثلا این دو دستور در اون زبان رو در نظر بگیرین :
dim a as int
print a
حالا اینجا برای a ممکنه هر مقداری چاپ بشه ! بدون اینکه ما به اون مقداردهی اولیه کرده باشیم.

حالا این دو تا زبان رو با هم مقایسه کنید و بدی و خوبی های اونو بگین . 

سوال بعدی از شما :
ما یک آرایه تعریف می کنیم به این صورت :
dim a(5) as int

حالا تو برناممون میگیم که مقدار a(10) رو چاپ کن . و کامپایلر میره آدرس خونه ی دهم اون آرایه رو حساب می کنه (که اصلا متعلق به اون آرایه نیست!! و ممکنه به متغیر و ارایه ی دیگه ای مربوط باشه ) و محتویات اون خونه رو چاپ می کنه به عنوان عنصر 11 ام آرایه ی a . مزیت ها و معایب این روش رو هم در مقایسه حالت نرمال (حالت نرمال = حالتی که کامپایلر برای دسترسی به عناصر آرایه که تعریف نشده اند ارور میده) بگین

----------


## علیرضا مداح

> - برای بالا بردن ریدیبیلیتی ا خوانایی برنامه که مزیت حساب میشه (هر چند  در قبالش رایتبیلیتی رو میاره پایین که عیب حساب میشه) استدلال شما که "چرا  کدها بهزبان روزمره شبیه اند" در واقع یه قوت رو نشون میده. (که این  readability خود بخود بر روی عوامل دیگه مانند : نگهداری و هزینه آموزش  زبان هم تاثیر مثبت داره)


لطفا" دقت کنید، قصد من از مطرح کردن آن سوال نشان دادن تقابل بین کسانی بود که سوالی مشابه را در خصوص Syntax زبان C#‎‎ پرسیده بودند و اینکه نمی توان تنها به دلیل Syntax یک زبان آن را برتر دانست،
پس حرف بنده استدلال نبوده و از زبان یک برنامه نویس C#‎‎‎ نوعی گفته شده است،
در ضمن، بنده با هردوی این زبان ها در پلتفرم دات نت کار می کنم و تعصبی نسبت به زبان خاصی ندارم،




> 2- خوب هیچ وقت اونو off نکنین


خوب اگر این گزینه بر روی On باشد، کدی که جناب Mani_rf قرار دادند، اصلا" کامپایل نمی شود، در حالیکه این قطعه کد به عنوان دلیلی بر برتر بودن VB.Net نسبت به C#‎‎‎ آورده شده است،

در رابطه با پست دوم شما:
اولا" اینکه ما در حال بررسی نقاط مختلف C#‎‎‎ و VB.Net هستیم، پس حول همین موضوع به بحث بپردازید، و اگر سوالی دارید به صورت "شفاف" در این خصوص ارائه دهید،/


*پاورقی*: اینجا همه ی ما در حال بحث علمی هستیم و هدف ارتقاء سطح دانش یکدیگر است،/

----------


## Mani_rf

سلام.



> البته این که در VB برخی عبارات کوتاهترند رو منکر نمشم. برخی عبارات هم در C#‎‎‎‎‎‎‎‎‎ کوتاهترند


من درباره Syntax دو زبان حرفی نزدم ، و اگر دقت میکردین خودم گفتم گذاشتن ; وقتی از برنامه نویس نمی گیرد! اما تبدیل هوشمندانه با کوتاه بودن یا بلند بودن بسیار تفاوت دارد. این که شما برای تعریف متغیر از کاراکتر های کمتری استفاده کنید خیلی *متفاوت از آن است که بخواهید برای جمع دو عدد از نوع صحیح و اعشاری آنها را به هم تبدیل کنید*.




> استفاده کرد اینه که کلاس string خیلی عبارات را به معنایی دیگر تفسیر می کنه.
> مثلا اگه همین خط رو در C#‎‎‎‎‎‎‎ بنویسی معنیش این میشه:
> اگر TextBox1.Text برابر "12" باشه، حاصل "124" میشه.
> و اگر برابر "Ali" باشه، حاصل اون برابر "Ali4" میشه. در حالی که در VB این کد طوری دیگه تفسیر میشه که باعث پرتاب Exception میشه.


نه دوست عزیز، چنین اتفاقی نمی افتد و در VB.NEt هم همان اتفاق مد نظر شما می افتد(حاصل "124" و "Ali4" می شود)، امتحان کنید.

sari-369



> من خودم توی کد نویسی توی ویبی خیلی سریع تر تایپ میکنم و جلو میرم که این خودش یه مزیته .


من شخصا با این گفته موافق، هرچند که برای بستن انتهای IF در VB.net نیازی به نوشتن End IF نیست و IDE این کار را میکند؛ اما در VB6 که این کار به عهده برنامه نویس بود، من End if را سریع تر تایپ می کردم تا گرفتن Shift و زدن {}. (هرچند معتقدم این نمی تواند ملاک مقایسه باشد.)




> شمایی که سال ها با VB برنامه نوشتی برای شما VB مثل زبان مادری شده. ولی من با اینکه VB رو زودتر از C#‎‎‎‎‎ یاد گرفتم دو هفته بیشتر این زبان رو نخوندم و بعد گذاشتمش کنار که فقط C#‎‎‎‎‎ بخونم. برای همین نمی تونم مثل شما فکر کنم.
> برای شما VB خوش دست و زبان کوتاه و نزدیک به گفتار و با خوانایی بالا و اصولی و باحال هست.


کاملا همین طور است به این تفاوت که برخی امکانات VB برنامه نویس را راحت تر میکند که اگر در C#‎‎‎ وجود داشت دیگر این بحث به وجود نمی آمد. البته C#‎‎‎ زبانی با قدمتی طولانی نیست و همانطو رکه در .net framework 4 نوع پارامتر اختیاری را که در VB بود و در C#‎‎‎ نبود را اضافه کردن احتمالا خیلی امکانات کاربردی دیگر را نیز می افزایند.

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




> بینید همه روزه با افرادی مواجه می شوم که سوال زیر را می پرسند:
> •چرا در C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎ دستورات باید به ; ختم شوند؟
> و در مقابل برنامه نویسان C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎ می پرسند:


این دو سوال را من هم یک بار جواب میدهم.
1- گذاشتن یا نگذاشتن ; درسرعت عمل برنامه نویس تاثیر چندانی ندارد، اما به طوری که در بین برنامه نویسان رایج است، برای خوانایی بیشتر زبان هر کد در یک خط مجزا نوشته می شود و در موارد خاصی و نادری دو کد در یک خط؛ 
و این به این معنی است که برای پایان خط در VB.NEt : زدن Enter
و در C#‎‎‎ : گذاشتن ; و سپس زدن Enter
در نتیجه پایان دادن یک خط با Enter منطقی تر به منظر میرسد تا استفاده از ; و Enter. 

2- مگر در هر کلاس چند بار از Inherits یا کد های کم کاربرد (از نظر دفعات استفاده) اینچنینی استفاده می شود؟




> در VB.Net گزینه ای به عنوان Option Strict قرار دارد که به طور پیش فرض بر روی Off قرار دارد، این گزینه ی وظیفه اعمال Strong-Typing، چک کردن Data Type ها هنگام تبدیل، Late-Binding(در صورت Off بودن) و ... را بر عهده دارد، در نتیجه ست کردن این گزینه بر روی Off که در پی آن باعث می شود کد "اشتباه" شما کامپایل شود،


ببینید ، تعداد متغیر های عمومی که در برنامه های تعریف میشوند همیشه و در همه قسمت ها زیاد نیستند، + اینکه هنگامی که شما متغیری از نوع Integer تعریف کنید و بخواهید آن را با حروف پر کنید با خطای کامپایلر مواجه میشود، مثالی که من زدم فقط حکم نمونه را داشت وگرنه خود من هم برای جمع دو عدد یا افزایش مقدار داخل یک کنترل از این روش استفاده نمی کنم.
اما همانگونه که شما گفتید این امکانی است با قابلیت فعال و غیر فعال کردن که در C#‎‎‎ وجود ندارد و تمام VB.Net کار ها از آن استفاده میکنند و برنامه مینویسند بدون آنکه با مشکلاتی که شما گفته اید روبرو باشند. آیا بهتر نبود که حق انتخاب به برنامه نویس داده می شد تا خودش انتخاب کند که از آن استفاده کند یا نه؟
به نظر شما اگر این امکان در C#‎‎‎ وجود داشت یک فاجعه به وجود می آمد و یا اینکه هرکس که می خواست از آن استفاده می کرد و کسی هم که نیازی به آن نداشت آن را غیر فعال میکرد؟
(خواهشن پاسخ دهید.)

به نظر من این یعنی نمونه برتری برای VB.NEt. نظر شما چیست؟ 

موارد این چنینی زیادند، برای مثال در C#‎‎‎ برای کنترل خطا شما فقط باید از Try..catch استفاده کنید که در بلوک های بزرگ اصلا به صرفه نیست. در قبال آن در VB علاوه بر آن کلاس On Error نیز وجود دارد که توانایی های شگفتی دارد.

یا مثلا Module در C#‎‎‎ وجود ندارد و برنامه نویس فقط و فقط به Class محدود است. نگویید که Module چیز خوبی نیست و کارایی ندارد که مایکروسافت در MSDN درباره آن گفته :
A module (sometimes called a standard module)is similar to a class but with some important distinctions. 
(ماجول های همانند کلاس ها هستند اما با ویژگی هایی برتر) 
این هم لینک منبع : http://msdn.microsoft.com/en-us/libr...da(VS.80).aspx
و... 




> برای اثبات برتری، به دلایل محکم و فنی احتیاج است،


جناب مداح من و شما می دانیم که دو برادر دوقلو از تمامی لحاظ ها به یکدیگر شبیهند و تنها خصوصیات اجتماعی و اخلاقی آنها میتواند آنها را از هم متمایز کند.
VB.NET و C#‎‎‎ در کل فرق چندانی با هم ندارند و هر دوی آنها پوششی هستند برای .Net Farmework ، پس دلیل فنی برای برتری هیچ یک وجود ندارد؛
اما توانایی های ذاتی که در VB.NET وجود دارد که آنها را مدیون کهنسالی حدودا 18 ساله (1992 ارائه اولین نسخه از Visual Basic) خود است؛ می تواند دلایلی را برای این گفتگو ها به وجود بی آورد.

----------


## pirmard

quote]




> در رابطه با پست دوم شما:
> اولا" اینکه ما در حال بررسی نقاط مختلف C#‎‎‎‎ و VB.Net هستیم، پس حول همین موضوع به بحث بپردازید، و اگر سوالی دارید به صورت "شفاف" در این خصوص ارائه دهید،/


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

----------


## cardano7

> نه دوست عزیز، چنین اتفاقی نمی افتد و در VB.NEt هم همان اتفاق مد نظر شما می افتد(حاصل "124" و "Ali4" می شود)، امتحان کنید.


این حرف شما ناقض اون چیزی هست که در انتهای پست 179 نوشتید:
http://www.barnamenevis.org/sh...845#post990845




> هرچند که برای بستن انتهای IF در VB.net نیازی به نوشتن End IF نیست و IDE این کار را میکند؛


در C#‎‎‎‎‎‎‎‎ هم خیلی چیزها توسط IDE تکمیل میشه.




> در نتیجه پایان دادن یک خط با Enter منطقی تر به منظر میرسد تا استفاده از ; و Enter.


خود C#‎‎‎‎‎‎‎‎ نویس ها دستشون به ; روان شده. صاف بقل دست Enter  هم هست. یادمون باشه که طول هر عبارت را از لحاظ سادگی نباید با تعداد کاراکترها بسنجیم. برخی کاراکترها در تایپ، زدنشون ساده تر هست. 
مثلا زدن کیدهای ترکیبی از زدن دو کلید همزمان سخت تره. هر چند قراره که باز هم دو کلید با هم زده بشند. 
یا مثلا زدن کلید k از x راحت تره.
در کل خود C#‎‎‎‎‎‎‎‎ نویس ها هم عاشق ; هستند و هم عاشق {} و بر خلاف شما فکر می کنند.
خود مایکروسافت اگه بخواد ; رو از C#‎‎‎‎‎‎‎‎ حذف کنه محبوبیتش رو در بین اونا از دست میده!




> اما همانگونه که شما گفتید این امکانی است با قابلیت فعال و غیر فعال کردن که در C#‎‎‎‎‎‎‎‎‎‎ وجود ندارد و تمام VB.Net کار ها از آن استفاده میکنند و برنامه مینویسند بدون آنکه با مشکلاتی که شما گفته اید روبرو باشند. آیا بهتر نبود که حق انتخاب به برنامه نویس داده می شد تا خودش انتخاب کند که از آن استفاده کند یا نه؟
> به نظر شما اگر این امکان در C#‎‎‎‎‎‎‎‎‎‎ وجود داشت یک فاجعه به وجود می آمد و یا اینکه هرکس که می خواست از آن استفاده می کرد و کسی هم که نیازی به آن نداشت آن را غیر فعال میکرد؟


این مربوط به این میشه که کلاس string رو تشخیص دادند که در C#‎‎‎‎‎‎‎‎ این شکلی طراحی کنند. و گر نه میشد به همون شکلی طراحی کرد که در VB هست. کاری هم براشون نداشت. برای کلاس هایی که خود ما می نویسیم، بدون توجه به خواست compiler، برنامه نویس از طریق نحوه ی نوشتن کد تعیین می کنه که یک اوپراتور مثل + یا = چطور تفسیر بشه.




> یا مثلا Module در C#‎‎‎‎‎‎‎‎‎‎ وجود ندارد و برنامه نویس فقط و فقط به Class محدود است. نگویید که Module چیز خوبی نیست و کارایی ندارد که مایکروسافت در MSDN درباره آن گفته :
> A module (sometimes called a standard module)is similar to a class but with some important distinctions. 
> (ماجول های همانند کلاس ها هستند اما با ویژگی هایی برتر)


خود شما important را برتر معنی کردید! از نظر من میشه "اما با تمایزاتی مهم"
در C#‎‎‎‎‎‎‎‎ کلاس ها قابلیت static شدن را دارند و اون کاری را که یک Module در VB می تونه انجام بده در C#‎‎‎‎‎‎‎‎ توسط یک کلاس static قابل انجام هست.
تا اونجایی که من می دونم در VB نمیشه یک کلاس static تعریف کرد برای همین از Module استفاده میشه.
در MSDN این طور اومده که:
Visual Basic does not support static classes. The functional equivalent of a static class is provided by a module. For more information, see Module Statement.
(مرجع)




> اما توانایی های ذاتی که در VB.NET وجود دارد که آنها را مدیون کهنسالی حدودا 18 ساله (1992 ارائه اولین نسخه از Visual Basic) خود است؛ می تواند دلایلی را برای این گفتگو ها به وجود بی آورد.





> البته C#‎‎‎‎‎‎‎‎‎‎ زبانی با قدمتی طولانی نیست


البته این قدر VB تغییر کرده که اون رو هم نمیشه خیلی سابقه دار دونست.





> من End if را سریع تر تایپ می کردم تا گرفتن Shift و زدن {}.


اون وقت در ازای اون، VB نمی تونه بین single statement ها با بلوکی از statement ها تفاوت قائل بشه. هر چند به نظر من هم بحث خیلی مهمی نیست.




> VB.NET و C#‎‎‎‎‎‎‎‎‎‎ در کل فرق چندانی با هم ندارند و هر دوی آنها پوششی هستند برای .Net Farmework ساخته شده اند پس دلیل فنی برای برتری هیچ یک وجود ندارد؛


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

----------


## nima898

> نقل قول:
> ضمنا تو بیسیک هم از علامتهای + - / * = ... استفاده میشه 
> منظور شما رو درست متوجه نشدم. اما اگه منظورتون اینه که در C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎ ‎‎‎ در بلوک های شرطی از == به جای = استفاده میشه، باید این نکته را روشن کنم که ما دو مفهوم کاملا متفاوت از هم داریم.


جناب cardano7 قبلا فرموده بودید:



> C#‎‎‎‎‎‎‎ میگه که من به جای 
> 
> 
> کد:
> 2 sum 3 equals 5 end
> از 
> 
> کد:
> 2+3=5;
> ...

----------


## mortezaadi

من زبون اصلیم C#‎ بود و از سال 2003 تا 2008 سی شارپ کار میکردم ولی با اومدن vs2005 و بعد اون vs2008 کفه ترازو به سمت vb.net سنگینی کرده 
الان 2 ساله وی بی کار میکنم و خیلی هم با هاش حال میکنم 
( اینم بگم که اعتقاد دارم نیاید تعصبی به زبون برنامه نویسیمون نگاه کنیم مهم اینه که کار درست انجام بشه حالا میخوای batch فایل بنویس یا ........ من معمولا پروژه هام هایبرید میشه تا حالا نشده تو پروژه ای یکی دوتا dll با سی شارپ ننویسم  و یه دونه هم با C++‎ برای تامین امنیت برنامه ام )
همه  زبون های برنامه نویسی  رو دوست دارم ولی
 فاش میگویم و از گفته خود خوشنودم ==* عشق است vb.net*

----------


## cardano7

> جناب cardano7 قبلا فرموده بودید:


من هم منکرش نشدم. این فقط یک مثال فلسفی بود. و گر نه معلومه که 
2+3=5;
تو هیچ زبانی معنا نداره!

----------


## cardano7

> سلام.
> 
> دوست عزیز من با Cardano7 بودم نه با شما. فکر کنم ایشون یه طرفدار پراپاقرص C#‎‎ هستش و اصلا محیط VB رو ندیده!
> 
> موفق باشین.


حالا شما خودت محیط #C رو دیدی؟

----------


## cardano7

> if(A<B)
> Begin
> statement A;
> statement B;
> End
> Else
> Begin
> statement C;
> statement D;
> ...


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

----------


## cardano7

آخر کسی پیدا نشد که بگه در VB چرا = و == به یک معنا گرفته شده اند؟
این کار نه تنها مزیت نیست بلکه عیب بزرگی هم هست.

VB این کدها را چگونه تفسیر می کنه؟
(کدهایی که در هر زبان برنامه نویسی باید قابل تفسیر شدن به شکل دلخواه برنامه نویس باشند.)

a=(b=c)&(d=e)

if (A=myClass.myFunc)=NULL then
	something;
end if

----------


## ricky22

> آخر کسی پیدا نشد که بگه در VB چرا = و == به یک معنا گرفته شده اند؟
> این کار نه تنها مزیت نیست بلکه عیب بزرگی هم هست.
> 
> VB این کدها را چگونه تفسیر می کنه؟
> (کدهایی که در هر زبان برنامه نویسی باید قابل تفسیر شدن به شکل دلخواه برنامه نویس باشند.)
> 
> a=(b=c)&(d=e)
> 
> if (A=myClass.myFunc)=NULL then
> ...


vb موقع تفسیر این کدها error میده چون ; نداریم اخر دستورات در vb
با هر زبانی راحتید برنامه بنویسید

----------


## xxxxx_xxxxx

علت اینکه در VB.NET برای بعضی کارها دو روش کاملاً یکسان وجود داره، حفظ Backward Compatibility با VB6 هست. از یک طرف بایست اصول و قواعد مربوط به چارچوب NET. در اون رعایت بشه و از طرف دیگه باید کاربران مهاجر از VB6 رو راضی نگه داره.

راستی در این تاپیک فکر می کنم قبلاً بحث سر این بود که چرا در VB امکان ایجاد Optional Parameter وجود دارد ولی در #C نه.(نه به صراحت VB) عده ای این رو مزیت VB می دونستند و عده ای دیگر نه. حالا سؤال من اینجاست که اگر این یک مزیت نبود پس چطور شد در VS2010 این قابلیت به #C هم اضافه شده؟ :چشمک:

----------


## salehbagheri

من با هر دو زبان به دلخواه كار ميكنم و هيچ مشكلي ندارم.

مهاجرت به VB يا #C براي يك برنامه نويس نبايد معني بده، چون يك برنامه نويس برجسته بايد قادر باشه با هر دو زبان به خوبي برنامه نويسي كنه !

ترك يك زبان يك عمل غير فني و مضحكانه به نظر ميرسه.

ممكنه هر يك ويژگيهاي خاص خودشون رو داشته باشند ولي هيچ وقت نميتونيد صراحتاً برتري VB رو بر #C نشون بديد و بالعكس! چون همانقدر كه VB برتري هاي خاص خودش رو داره همونقدر هم #C داره!

----------


## Mani_rf

> آخر کسی پیدا نشد که بگه در VB چرا = و == به یک معنا گرفته شده اند؟
> این کار نه تنها مزیت نیست بلکه عیب بزرگی هم هست.
> 
> VB این کدها را چگونه تفسیر می کنه؟
> (کدهایی که در هر زبان برنامه نویسی باید قابل تفسیر شدن به شکل دلخواه برنامه نویس باشند.)
> 
> a=(b=c)&(d=e)
>  
> if (A=myClass.myFunc)=NULL then
> ...


چون شما نمی توانید این را درک کنید دلیل بر این نیست که VB هم نتواند ، 
اگر کمی فکر می کردید متوجه میشدید که در هر خط شما فقط میتوانید یک انتساب داشته باشید  (چه در VB و چه در #C و چه در هر زبانی دیگر) که به شکل کلی :
مقدار = متغییر 
یا
X=Y 
به کار میرود؛ پس قسمت قبل از اولین مساوی متغییر انتساب پذیر و مابقی آن باید شرط باشد؛
 در کد a=(b=c)&(d=e) که نوشته اید 
ابتدا B و C با هم مقایسه می شوند 
سپس D و E مقایسه میشوند
پس از آن حاصل & شده  b=c و d=e در متغییر a قرار میگیرد. (در شرایطی که فرض کنیم شما در VB به جای کلمه کلیدی AND از همانند #C از & استفاده نموده اید. که علت استفاده شما از این روش برای خودتان محفوض است)
با زیاد تر کردن تعداد مقایسه ها مشکلی برای کامپایلر به وجود نمی آید یا اگر شما این جمله را به زبان #C یعنی  a=(b==c)&&(d==e);بنویسید توانایی کامپایلر زیاد تر نمی شود.
به دنبال دلایل محکمتری باشید؛ مثلا این که چرا اگر بخواهید یک سری از خصوصیات شئی را تغییر دهید از وجود فرمانی مانند With محروم هستید و باید در هر خط نام شئ را بنویسید.
یا چرا باید برای جمع دو عدد از نوع صحیح و اعشاری آنها را به هم تبدیل کنید آن هم در شرایطی که حتی در ++C این کار را خود زبان انجام میداد.

----------


## cardano7

> چون شما نمی توانید این را درک کنید دلیل بر این نیست که VB هم نتواند ،
> اگر کمی فکر می کردید متوجه میشدید که در هر خط شما فقط میتوانید یک انتساب داشته باشید (چه در VB و چه در C#‎‎‎‎ و چه در هر زبانی دیگر)


نه!

در C#‎‎‎ این کد:
a=(b==c)&&(d==e);
در یک خط یک انتساب دارد.

اما 
a=(b=c)&&(d=e);
در یک خط سه انتساب دارد.

----------


## cardano7

> علت اینکه در VB.NET برای بعضی کارها دو روش کاملاً یکسان وجود داره، حفظ Backward Compatibility با VB6 هست. از یک طرف بایست اصول و قواعد مربوط به چارچوب NET. در اون رعایت بشه و از طرف دیگه باید کاربران مهاجر از VB6 رو راضی نگه داره.
> 
> راستی در این تاپیک فکر می کنم قبلاً بحث سر این بود که چرا در VB امکان ایجاد Optional Parameter وجود دارد ولی در C#‎‎ نه.(نه به صراحت VB) عده ای این رو مزیت VB می دونستند و عده ای دیگر نه. حالا سؤال من اینجاست که اگر این یک مزیت نبود پس چطور شد در VS2010 این قابلیت به C#‎‎ هم اضافه شده؟


#C با افزودن این قابلیت یک چیزایی به دست آورد و یک چیزایی هم از دست داد. در پست های قبلی این بیشتر را توضیح داده بودم.

----------


## Peyman.Gh

BMW بهتر است یا BENZ ؟!!!
#C و VB هم همین نسبت را با یکدیگر دارند.

----------


## alireza_s_84

> BMW بهتر است یا BENZ ؟!!!
> C#‎‎ و VB هم همین نسبت را با یکدیگر دارند.


من هم با پیمان موافقم من 4 سال با VB کار کردم از VB5 شروع کردم و سالها باهاش اخت بودم(هنوز هم هستم) الان هم حدود 1 ساله سی شارپ کار میکنم کارهایی رو که با VB6 انجام میدادم با VB.Net  هم تونستم انجام بدم و بالعکس و الن هم سی شارپ.
من کلا از سختگیری سی شارپ خیلی خوشم میاد. که یه خرده توی VB نیست ولی مقایسه دو زبان اصلا اصولی نیست چون خدا > God > الله همه یک معنی دارند و فقط توی زبانهای مختلف نوشته شده اند. حالا چون God یا خدا سه حرفی و الله 5حرفی لذا زبان فارسی و انگلیسی بهتر هستند بخصوص که زبان فارسی نیاز به علامتگذاری ندارد ولی عربی و انگلیسی دارند. مثلا باید بنویسی God و اگر نوشتی Gd نمیشه خوندش God محدودیت داره . خب هر زبانی قواعد حاکم بر خودش رو داری یکی با عربی حال میکنه یکی با انگلیسی یکی هم میاد *چونگ چانگ چینگ چن* میکنه پس نتیجه میگریم هرکس عشقش میکشه با VB مینویسه و هرکس عشقش میکشه با #C و یکی حال میکنه با پاسکال بنویسه.
*کدوم برتره؟ هیچکدوم.*

----------


## Mani_rf

> نه!
> 
> در C#‎‎‎‎ این کد:
> a=(b==c)&&(d==e);
> در یک خط یک انتساب دارد.
> 
> اما 
> a=(b=c)&&(d=e);
> در یک خط سه انتساب دارد.


خیلی جالب بود!
نمی دونستم که این امکان را داره اما خب کاربردش چیه؟

----------


## mmd2009

تنها دلیلی که من از vb رفتم به #c این بود که با ; خیلی حال می کنم  :قهقهه:

----------


## محمد فدوی

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

----------


## M.T.P

این همه مقایسه و ...  :متعجب: 

شما دوست عزیزیکه این تاپیک رو ساختی مطمئنا یکی دو تا مطلب رو تو vb بلد نبودی بلافاصله تصمیم به کوچ گرفتی!!!! برو عزیز من برو خدا به همرات ، کاشکی به جای تصمیم به کوچ یه کم به معلوماتت نسبت به vb اضافه میکردی و بلافاصله شونه خالی نمیکردی. شماییکه زبان به این سطح بالایی و قدرتش کارت رو راه نمیندازه مطمئن باش گام بعدیت بعد از C#‎‎ زبان های دیگه هست و آخرش آس و پاس همه رو میبوسی میزاری کنار.
از من به همه شما نصیحت:  :لبخند گشاده!: 
کوچ از یک زبان به زبان دیگه ====> عدم وجود پشتکار و حس کنجکاوی بی مورد.
کوچ در برنامه نویسی یه معنی داره اونم اینه که فرضا الان داری با سی شارپ 2008 برنامه مینویسی حالا 2010 اومده لازم میدونی آروم کاسه کوزه رو جمع میکنیم میریم سراغ 2010.  :لبخند:

----------


## nima898

> در C#‎‎‎‎‎‎‎‎ این کد:
> view source
> print?
> 
> 1.a=(b==c)&&(d==e);
> 
> 
> 
> در یک خط یک انتساب دارد.
> ...





> خیلی جالب بود!
> نمی دونستم که این امکان را داره اما خب کاربردش چیه؟


به نظرم منظور جناب cardano7 اینه که چرا تو vb.net تو یک خط سه تا انتساب انجام میشه و متوجه نشدن که دو تاش انتساب نیست





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


ایشون تو همین تاپیک vb.net رو انتخاب کردن:
https://barnamenevis.org/showpo...5&postcount=59

راستی جناب fastcode ادعا کردن vb.net قابل مقایسه با C#‎‎  نیست:
https://barnamenevis.org/showth...=226009&page=3

----------


## cardano7

> به نظرم منظور جناب cardano7 اینه که چرا تو vb.net تو یک خط سه تا انتساب انجام میشه و متوجه نشدن که دو تاش انتساب نیست


سه تا انتساب رو در مورد #C گفتم.
آخر کد هاش semi-colon داره!  :لبخند گشاده!:

----------


## Dr.Bronx

به قول بچه ها . همین یک صحنه مارا بس ( البته اگر قرار باشه مثل بعضی از دوستان با بی انصافی مقایسه کنم )

C#‎

Microsoft.VisualBasic.Interaction.Beep();

vb.net
Beep()

----------


## AntiViruse

VB.NET تو کد نویسی آسونتره و اکثرا مخفف تره (نگفتم %100 مخفف تره) ولی از لحاظ کارآیی یکین.
برای مثال تو C#‎‎‎ باید به بعضی مسائل ریز و درشت حواستون جمع باشه. مثل:

1.  اول sub ها از علامت  }  و در آخرشان از  علامت  {  استفاده کنن.
2.  در پایان کد هر خط از  علامت  ;  استفاده کنن.(بجز استثناها مثل if و for و .......)
3.  ...
4.  ...
.
.
.
100.  ...
... :خیلی عصبانی:  :گیج: 

من پیشنهاد میکنم دوستان عزیز تو هر کدوم هستن اونو عوزش نکنن و بجای تردید سعی در پیشرفت کردن در همان زبان داشته باشند. :تشویق:

----------


## cardano7

> C#‎‎
> 
> Microsoft.VisualBasic.Interaction.Beep();


قرار شد سر جرجیس ها نریم. 
حالا یک سوال. VB به چه دلیل اجازه ی دسترسی به یک منطقه ی Import نشده رو میده؟
بعد هم توی #C همه ی کد های از پیش نوشته ی آغاز کننده ی Application باز هست. توی VB نتونستم پیداش کنم. کجاستش؟ 
Reference ها رو هم در کجا میشه دید؟ فقط در Properties ؟
همچنین Propertyها و Settings را چطور؟

----------


## nima898

> سه تا انتساب رو در مورد C#‎‎‎‎‎‎‎‎ گفتم.
> آخر کد هاش semi-colon داره!


سه تا انتصاب  تو یه دستور چه کاربردی داره؟

----------


## sepehr.net

سلام

بابا این چه بحث ایه که راه انداختین!!!

حالا اینکه بفهمیم تعداد کاراکتر های C#‎‎ بیشتره یا Vb چی رو اثبات میکنه؟!

----------


## Aria.Paradise

C#‎‎‎ یا VB.NET: زبان های سرخ برای ارتباط با دنیای سبز رایانه ؟ 
این دو زبان از نظر قابلیت ها و توانایی ها هیچ تفاوت عمده ای ندارند، جز اینکه زبان سی شارپ به دلیل ارث بردن پاره ای خصوصیات از زبان پیشکسوت خود ، ++c ، هنوز به برنامه نویس اجازه می دهد که مستقیما حافظه را دستکاری و مدیریت کند. با این وجود هنوز هم بسیاری از برنامه نویسان و کارشناسان چه در ایران و چه در سایر نقاط دنیا بر این تصور اشتباه هستند که# c از vb.net قوی تر است اما واقعیت چنین نیست. دلیل این ادعا بسیار ساده است : هر دو زبان چیزی نیستند جز یک پوشش ظاهری برای زبان msil که هنگام کامپایل شدن سورس کد برنامه ای که با یک زبان دات نتی نوشته شده است تولید می شود. 

تمام برنامه هایی که برای پلتفرم دات نت نوشته می شوند پیش از اینکه به کد زبان ماشین (native code) تبدیل شود به یک زبان میانی به نامmicrosoft intermediate language تبدیل می شوند. زبان های پلتفرم دات نت به طور یکسان از این زبان میانی پشتیبانی می کنند. در واقع این زبان ها مجبورند که از استاندارد msil تبعیت کنند نه اینکه هر مقداری از آن که دلشان بخواهد را پشتیبانی کنند. بنابراین وقتی قرار باشد نتیجه کار هر دو زبان ویژوال بیسیک دات نت و سی شارپ در نهایت به کد msil تبدیل شود، دیگر چندان مهم نیست که مبدا این کد به چه زبانی نوشته شده است. بنابراین هر دو زبان به یک ترتیب از قابلیت های کلیدی چارچوب دات نت پشتیبانی می کنند. مثلا مدیریت حافظه در vb.net دقیقا به همان ترتیبی اتفاق می افتد که در سی شارپ. در گذشته چنین نبود و یکی از دلایل گزینش زبان ++c به جای ویژوال بیسیک ، برتری محسوس++c نسبت به ویژوال بیسیک در زمینه مدیریت حافظه و راندمانبرنامه بود. این تفاوت دیگر از بین رفته است. مدیریت حافظه مستقیما توسط چارچوب دات نت انجام می شود و نوع زبان برنامه نویسی تاثیری ندارد. حتی برتری ویژوال بیسیک در زمینه rapid application development و معماری windows forms نیز در پلتفرم دات نت از بین رفته است. برنامه سازی در سی شارپ دقیقا به همان سادگی ویژوال بیسیک دات نت است.تفاوت های اصلی میان دو زبان بیشتر در گرامر و syntax زبان است. تنها چیزی که باقی می ماند این است که زبان سی شارپ زبان خلاصه تر و موجزتری است. این شاید بهترین توصیف برای سی شارپ باشد. به عبارت دیگر برای پیاده سازی یک قطعه کد در زبان سی شارپ به حجم برنامه نویسی کمتری نیاز است. یکی از تفاوت های شناخته شده میان دو زبان، امکان تعریف سندهای مربوط به سورسبرنامه است. در زبان سی شارپ می توانید سندهایی از نوع xml ایجاد کنید که با سورس کد برنامه شما پیوند خورده است. به این ترتیب به موازات پیشرفت پروژه برنامه نویسی می توانید خیلی راحت documentation آن را نیز آماده کنید. چنین قابلیتی در vb.net وجود ندارد اما خبر خوب این است که در نسخه بعدی پلتفرم دات نت موسوم به (whidbey) این قابلیت به vb.net افزوده شده است. یک تفاوت دیگر بین دو زبان آن است که در سی شارپ می توانید عملگر ها یا operatorهای سفارشی بسازید. مثلا علامت را طوری تعریف کنید که عبارت today yesterday معنا پیدا کند و عملگرهای ریاضی بزرگتر و کوچکتر تنها محدود به اعداد نباشد. البته این قابلیت نیز در نسخه بعدی vb.net افزوده شده است. در حقیقت همین چند درصد تفاوت فعلی میان قابلیت های گرامر دو زبان ویژوال بیسیک دات نت و سی شارپ ، در نسخه شماره دو چارچوب دات نت ناپدید شده است. بنابراین دقت کنید که برتر بودن زبان سی شارپ نسبت به vb.net چیزی جز یک شایعه و افسانه نیست. این دو زبان حدود فقط 5 درصد با یکدیگر اختلاف دارند. حتی پیشرفته ترین مفاهیم برنامه نویسی oop نیز در vb.net وجود دارند مثل مفهوم. (delegates) کسانی که چنین اظهار نظرهایی می کنند یا هنوز فکر می کنند که همان تفاوت میان ++c و vb کماکان در مورد vb.net و C#‎‎‎ نیز وجود دارد یا اینکه شناخت صحیحی از پلتفرم دات نت ندارند. در واقع خیلی رک بگویم مدیران و کارشناسان ارشد شرکت های نرم افزاری که به این توهم دچارند کمترین آشنایی فنی با چارچوب دات نت ندارند.

منبع :پایگاه اطلاع رسانی فناوری اطلاعات و ارتباطات ایران

----------


## nima898

> حالا اینکه بفهمیم تعداد کاراکتر های C#‎‎‎ بیشتره یا Vb چی رو اثبات میکنه؟!


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

----------


## cardano7

> سه تا انتصاب  تو یه دستور چه کاربردی داره؟


این فقط یک مثال بود برای اینکه بگیم C#‎‎ برای تفاوت قائل شدن بین = و == دلیل قانع کننده داره.
البته این کاربرد هم داره.
مثال fopen در زبان C را به یاد میارید؟
if((myFile=fopen(".....","..."))==null)
     ....

اینجا نیاز به تفاوت = و == نشون به وضوح دیده میشه.




> حالا اینکه بفهمیم تعداد کاراکتر های C#‎‎‎ بیشتره یا Vb چی رو اثبات میکنه؟!


من هم موافقم.




> این دو زبان از نظر قابلیت ها و توانایی ها هیچ تفاوت عمده ای ندارند


من هم همین رو داشتم می گفتم. اما یک عده اصرار بر حرف خودشون دارند.

----------


## nima898

> این فقط یک مثال بود برای اینکه بگیم C#‎‎‎ برای تفاوت قائل شدن بین = و == دلیل قانع کننده داره.
> البته این کاربرد هم داره.


متوجه شدم



> اینجا نیاز به تفاوت = و == نشون به وضوح دیده میشه.


لطفا یه توضیحی در باره دستور بالا بدین

----------


## kamran00f

> شوخی می کنی؟؟؟؟ 
> برنامه نویسی با C#‎‎‎‎‎‎‎ جذاب تره .
> به نظر من بزرگترین مشکل C#‎‎‎‎‎‎‎ طریقه باز و بسته شدن دستورات است.
> 
> در VB.NET برای مثال فرمان های زیر به شکل زیر باز و بسته می شوند.
> IF .. Then 
> فرمان ها 
> Else
> فرمان ها 
> ...


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



 
 
while(x!=0)for (int i=0;I<=5;i++)       for (int J=2;J<=6;j++)            If (x>5)                  x-=2                        else                  x+=2                        

الان کدوم کد خوانا تره؟!

کلا به نظر من آکولاد ها و ایندنت ها باعث خوانا تر بودن برنامه میشن و کار باهاشونم راحت تره.

----------


## DigitalRain

> دوست عزیز خوب نوشتن 
> 
> if (IsHere)
> Trace.WriteLine("hello");
> راحتتر و جذابتره یا این ! :
> 
> IF IsHere Then
> Trace.WriteLine("hello")
> End If
> مشخص اولی !


ببخشید:

IF IsHere Then: Trace.WriteLine("hello")

----------


## kitcat_m18

سلام خدمت تمامی دوستان برنامه نویس  :لبخند: 

نمی دونم چند ساعته نشستم تو اتاق سرور و با اینهمه سر و صدا که اینجاست باعلاقه از ب بسم الله شروع کردم به خوندن این موضوع و تا الان که ساعت حدود 2 شبه رسیدم به صفحه آخرش  :گیج: 

دوستان لطف کنن منو راهنمایی کنن ممکنه خیلی از چیزا رو درست متوجه نشده باشم فقط منو نزنین  :لبخند گشاده!: 

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

چند وقتی هم تو C#‎‎ تمرین کردم و کد زدم که برام یه چیز مشخص شد:

عرضم به خدمتتون به نظر شخصی بنده که یه تازه کارم یاد گیری C#‎‎ سخت تر از ویژوال بیسیک بود چرا؟ چون ویزوال بیسیک به زبان محاوره ای نزدیکتره (خوانایی)

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

قصد شما از مقایسه این دو زبان در چه بعدیه؟؟؟

1- *مقایسه در بازار کار؟*
ار چه نظر؟؟؟؟
سرعت تحویل به مشتری؟؟؟
با درخواست مشتری در رابطه با زبان کد نویسی؟؟؟

2- *مقایسه در خوانایی و نوشتایی؟*
از چه نظر؟؟؟
خلاصه بودن کد ها یا توابع موجود در آن زبان؟؟؟
اصولا تا اونجایی که این بنده حقیر متوجه شدم می گن کد های C#‎‎ خلاصه شده اند اما کدها ی ویژوال استودیو کوتاه تر هستند خب این بر می گرده اولا به کارایی هر کدوم از این زبان ها و دوما به نسل های قبلیشون یه مثال کوچولو بزنم مثلا کسی که سی بلده خب مسلما براش راحت تره که بره تو محیط C#‎‎ هم کد بزنه چون فکر می کنم (دوستان اگر اشتباه می کنم اصلاح بفرمایند) تقریبا محیط IDE هر دوشون شبیه همه، اصلا به نظر من C#‎‎ رو برای کسایی ساختن که با C و زبان هایی امثالهم شروع کردن.

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

*به نظر بنده رو محیط IDE بحث نکنین نوع طراحی محیط IDE بر می گرده به نسل های قبل سعی فقط تشابه بوده.*

VS کارا به استفاده از Enter عادت کردن و C#‎‎ کارا هم به استفاده از سی می کالون مهم اینه که هر دو کارشونو بلدن منتها VS میشه سریعتر کد زد.

به راستی چرا توابع موجود در سی آماده نیستند و باید نوشته شوند؟؟؟
به نظر من به خاطر نوع کاربرد این زبانه.

سوال: برقراری ارتباط با سخت افزار ها و یا حتی نوشتن سیستم عامل تو نسل C بهتره؟

اما آیا تو برنامه نویسی بانک های اطلاعاتی و یا وب هم میشه قدرت وی بی رو نادیده گرفت؟؟؟

اینها هر دو زبان های قدرتمندی هستند ما باید بشینیم و ببینیم برای چه کاری می خوایم برنامه نویسی کنیم.

*نتیجه گیری نهایی از دید یه تازه کار:*
به نظر من یاد گیری هر دو زبان در کنار هم قدرت خاصی رو به برنامه نویس می بخشه.

با آرزوی ساعات خوش برای تمامی برنامه نویسان عزیز و گرامی و دوست داشتنی. :خجالت:  :بوس:  :قلب:

----------


## jerjis1912

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

----------


## connector

به نظر من که C#‎.Net خیلی قشنگ تر و قابل فهم تر از VB.Net هست.هم در موقع نوشتن و هم در موقع خواندن.من که به vb نگاه میکنم سرم درد میگیره.
زمانی که من از برنامه نویسی هیچی نمیدونستم از یه دوستم که VB کار بود سوال کردم که vb.Net یاد بگیرم یا C#‎.Net بهم  C#‎ رو پیشنهاد داد.گفت چون به بعدا راحت تر میتونم C++‎ رویاد بگیرم.

----------


## mansourii

مسلما كسي ميتونه اظهار نظر كنه كه هر دو زبان رو بطور كامل بلد باشه.
به نظر من اگه قاعده رو بلد باشيم: C#‎‎ فقط بازار كارش بهتره و مزيت ديگه اي رو نسبت به زبان برنامه نويسي ديگه نداره

البته اگه كامپايلر C#‎‎ برلند باشه حرف نداره.

----------


## محسن شامحمدی

دوستان چرا این تاپیک کاملا متعصبانه که کاملا هم فاقد بار علمیه رو بالا میارید؟
ای کاش مدیران این تاپیک رو قفل کنن.

----------


## FastCode

> دوستان چرا این تاپیک کاملا متعصبانه که کاملا هم فاقد بار علمیه رو بالا میارید؟
> ای کاش مدیران این تاپیک رو قفل کنن.


آخه چرا؟


میخوام تاپیک رو هدفمند کنم.
برای این کار از دوستان تقاضا میکنم به بقیه بفهمونن که زبونی که استفاده میکنن چرا چیزی رو که من در هر پست بهش اشاره میکنم داره یا نداره.
در آخر به هر زبون امتیاز میدیم و تصمیم میگیریم کدوم یکی خاک بخوره.
هر سوال 48 ساعت وقت داره.من خودم طرف C#‎ هستم.
لطفاً سوالات پیشنهادی تون رو هم PM بزنید.

حالا اشاره کنم به مواردی که اشاره نشده:
1.pointer arithmetic

هدف من از این کار:
1.تصمیم گرفتم VB رو شکست بدم.
اهداف اصلی تر:
1.همایت از ایدئولوژی edsger wybe dijkstra(اگر اسمش رو درست نوشته باشم.)
2.نزدیک تر کردن دوستان به یک زبان C Like

----------


## Mani_rf

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

----------

