مقایسه پایتون و سی شارپ بر اساس قواعد تعریف فضای خالی (Whitespac
یک کدام از تفاوتهای اساسی دربین پایتون و سیشارپ، طرز تعریفوتمجید قواعد خلأ برای معین کردن بلاکهای اپلیکیشن طراحی سایت در مشهد
برنامه نرم افزار اپلیکیشن میباشد. پایتون از قواعد خلأ معنایی (Semantic Whitespace) برای معین کردن و جداسازی بلاکهای دستوری در یک اپ به کارگیری مینماید. به عبارت دیگر، برای تمایز قائل گردیده در بین بلاکهای دستوری، از قواعد «تورفتگی یا این که دندانهگذاری» (Indentation) به کار گیری می گردد.
text = input()
for c in text:
if c == \" \":
print(\"Found space!\")
1
2
3
4
text = input()
for c in text:
if c == \" \":
print(\"Found space!\")
اگر که سطح تورفتگی یا این که دندانهگذاری تابع print را کاهش دهید، هنگام اجرای اوامر بالا با خطایی به صورت ذیل مواجه خواهید شد:
File \".\\whitespaces\\whitespace.py\", line 4 print(\"Found space!\") ^ IndentationError: expected an indented block
1
File \".\\whitespaces\\whitespace.py\", line 4 print(\"Found space!\") ^ IndentationError: expected an indented block
در نقطه مقابل، تورفتگی یا این که دندانهگذاری کدهای سیشارپ هیچ تاثیری در اجرای آنها نخواهند داشت؛ با این هم اکنون، خوانایی کدهای درج شده به گویش سیشارپ را به شدت ارتقا می دهد. قطعه کدهای ذیل، اوامر دارای اعتبار و قابل انجام در گویش سیشارپ میباشند:
قطعه کد سیشارپ، با رعایت قواعد تورفتگی یا این که دندانهگذاری:
string text = Console.ReadLine();
foreach (char c in text)
{
if (c == \" \")
{
Console.WriteLine(\"Found space!\");
}
}
1
2
3
4
5
6
7
8
string text = Console.ReadLine();
foreach (char c in text)
{
if (c == \" \")
{
Console.WriteLine(\"Found space!\");
}
}
قطعه کد سیشارپ، فارغ از رعایت قواعد تورفتگی یا این که دندانهگذاری (خوانایی این کدها، به شدت کاهش پیدا مینماید):
string text=Console.ReadLine();
foreach(char c in text)
{
if(c==\" \")
{
Console.WriteLine(\"Found space!\");
}
}
1
2
3
4
5
6
7
8
string text=Console.ReadLine();
foreach(char c in text)
{
if(c==\" \")
{
Console.WriteLine(\"Found space!\");
}
}
مقایسه پایتون و سی شارپ در تعریف و تمجید نوعهای دادهای متغیرها
یکیاز معیارهایی که ممکن میباشد نرمافزارنویسان را به سمت استعمال از یک کدام از لهجههای پایتون یا این که سی شارپ بکشاند، معیار انعطافپذیری آنان در تعریفوتمجید نوعهای داداهای متغیرها میباشد. همانگونه که قبلا نیز اشاره شد، گویش پایتون، یک لهجه نرمافزارنویسی پویا محسوب میشود، در حالی که لهجه سیشارپ، در زمره لهجههای اپنویسی با نوعهای دادهای استاتیک قرار می گیرد. کد ذیل به راحتی بوسیله مفسر پایتون انجام میگردد:
greeting = \"Hello, world\"
greeting = 100
1
2
greeting = \"Hello, world\"
greeting = 100
در حالی که اجرای کد متناظر آن در گویش سیشارپ، منجر ساختوساز خطای تبدیل نوع در خروجی شود:
string greeting = \"Hello world\";
greeting = 100;
1
2
string greeting = \"Hello world\";
greeting = 100;
خروجی:
Cannot implicitly convert type \"int\" to \"string\" [static.csx].
1
Cannot implicitly convert type \"int\" to \"string\" [static.csx].
ولی، از ورژن 4 کامپایلر لهجه سیشارپ، کلمه و واژه کلیدی به اسم dynamic بهاین لهجه اضافه گردیده است. این واژه کلیدی برای کامپایلر مشخص و معلوم مینماید که نوع دادهای یک متغیر ممکن میباشد تغییرو تحول نماید و تا فرصت ایفا نامشخص میباشد.
C#
dynamic greeting = \"Hello world\";
greeting = 100;
1
2
dynamic greeting = \"Hello world\";
greeting = 100;