PDA

View Full Version : مقاله: بار دیگر ماکروسافت قدرت خود را با پیش نمایش نسخه ی 4 از #C به همگان اثبات کرد



h.jaza
دوشنبه 13 آبان 1387, 18:46 عصر
همون جور که همه ی برنامه نویسان ماکروسافتی اطلاع دارن، در چند روز پیش کنفرانس PDC که میشه گفت مهم ترین کنفرانس ماکروسافت برای پیش نمایشی از آینده ی محصولاتش هست، برگزار شد (27 تا 30 اوکتبر).

در این کنفرانس به بسیاری از مسائل از جمله: آینده ی #C، ویژوال استودیو و آینده ی توسعه ی وب، برنامه نویسی موازی برای توسعه دهندگان حرفه ای با نسخه ی جدید ویژوال استودیو، راهنمای طراحی فریم ورک، توسعه و پیشرفت ماکروسافت سورفیس، مروری بر استودیوی XNA بازی ماکروسافت، ویندوز 7 و ...، پرداخته شده است.

مقاله ای که در اینجا پیوست شده، درباره ی آینده ی زبان دوست داشتنی ماکروسافت، یعنی #C می باشد که توسط ماکروسافت (http://code.msdn.microsoft.com/csharpfuture/Release/ProjectReleases.aspx?ReleaseId=1686)ارائه شده.

امید وارم که از خوندنش لذت ببرین و مثل من کف کنید. :لبخند:

h.jaza
دوشنبه 13 آبان 1387, 18:51 عصر
برای اطلاعات کامل تر راجع به کنفرانس PDC می توانید به سایت رسمی آن (http://www.microsoftpdc.com/) مراجعه کنید.

همچنین برای اطلاع از کل برنامه های این کنفرانس به این لینک (https://sessions.microsoftpdc.com/public/timeline.aspx) و برای مشاهده ی تصویری آینده ی #C می توانید به این لینک (http://channel9.msdn.com/pdc2008/TL16/) مراجعه کنید.

با تشکر

Mehdi Asgari
دوشنبه 13 آبان 1387, 19:14 عصر
سلام دوست عزیز
تاپیکتون تکراریه (قبلا در http://barnamenevis.org/forum/showthread.php?t=129553 به این خبر همراه با لینک های مربوطه اشاره شده)
در ضمن چون این خبر فقط مربوط به برنامه نویسان C# میشه ، بهتره در بخش C# گنجونده بشه)
در ضمن منظورتون رو از "...قدرت خود را با ارائه ی ... اثبات کرد" متوجه نمیشم. نسخه ی 4 واقعا هیچ ویژگی خارق العاده ای نداره که ما الان نتونیم انجامش بدیم.
اگه مدیر بخش اجازه بدن ، همینجا در این مورد بحث می کنیم

h.jaza
دوشنبه 13 آبان 1387, 19:34 عصر
اولا من مقاله ی شما رو در بخش برنامه نویسی با #C دیدم و بسیار هم بهره بردم و از شما بابت آن تشکر می کنم ولی به نظر اومد اینجا جای بهتری باشه چرا که اولا C# 4.0 هنوز نیومده و مرتبط به تازه های دنیای ماکروسافت میشه و ثانیا اینجا دید بیشتری نسبت به اونجا داره.

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

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

نسخه ی 4 واقعا هیچ ویژگی خارق العاده ای نداره
من با دیدن این فیلم (http://channel9.msdn.com/pdc2008/TL16/) واقعا کف کردم و به خارق العاده بودنش نسخه ی 4 سی شارپ پی بردم؛ شما هم ببینید، نظرتون حتما عوض میشه. اگر غیر از اینه، بیان کنید.

با تشکر

Mehdi Asgari
دوشنبه 13 آبان 1387, 21:44 عصر
به نظر اومد اینجا جای بهتری باشه چرا که اولا C# 4.0 هنوز نیومده
من متوجه این جمله تون نشدم


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


ثانیا اینجا دید بیشتری نسبت به اونجا داره.
چرا ؟


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


شما هم ببینید، نظرتون حتما عوض میشه
زیاد مطمئن نباشید (البته هنوز فیلم رو ندیدم) در این که آندرس قشنگ حرف می زنه و یه آدم استثناییه شک ندارم و تمامی ویدئوهایی که ازش دیدم یا مصاحبه هایی که خوندم زیبا و با دلایل مستحکم (هم علمی و هم عملی) بودن.
ما در تمام نسخه های C# (به جز 4) ویژگی هایی رو دیدیم که ما رو impressed می کرد و در بعضی مواقع روی نحوۀ فکر کردن برنامه نویس (برای حل مسائل) تاثیر می ذاشت (مثل LINQ)
در نسخه های قبلی ما هر دفعه ویژگی بزرگی دیدیم. در نسخه ی 1 زبانی داشتیم با کلی ویژگی high level (کلاس ، interface ، delegate ، event ، property ، type safety ، GC و ... )
در نسخه ی 2 ، Generics و متد های بی نام
در نسخه ی 3 هم LINQ (و البته قابلیت نوشتن کد شبیه زبان های تابعی ، مثل توابع لامبدا و expression tree (msdn.microsoft.com/en-us/library/bb397951.aspx))
من به شخصه به عنوان یک برنامه نویس چیزی به toolboxم اضافه نشد (البته از BCL (http://en.wikipedia.org/wiki/Base_Class_Library)خبرای خوبی شنیده میشه مثل TPL (http://en.wikipedia.org/wiki/Parallel_FX_Library#TPL))
آیا قراره C# همون C++ بعدی باشه ؟ (در اون صورت من میرم فقط کد LISP می زنم تا آخر عمر!)
من فکر کنم Anders داره از فلسفه ی "Design Simplicity" (http://www.artima.com/intv/simplexity.html) در طراحی سی شارپ دور میشه.


...C# is a simple, modern, object-oriented, and type-safe programming language that
اینو همیشه میگه آندرس (هم تو specification (http://download.microsoft.com/download/3/8/8/388e7205-bc10-4226-b2a8-75351c669b09/CSharp%20Language%20Specification.doc)هم تو کتابش (http://www.amazon.ca/exec/obidos/search-handle-url/188-8645385-8952844?_encoding=UTF8&search-type=ss&index=books-ca&field-author=Anders%20Hejlsberg))
شما dynamic programming رو با Reflection هم می تونید انجام بدید (در هر دوشون هم در صورت بروز اشتباه در run-time به خطا برخواهیم خورد)
درسته که این کار با مثلا Office رو راحت تر می کنه ولی بهای اون بزرگ تر شدن زبان هست.
قرار نیست C# زبانی برای انجام همۀ کارها باشه.
(در مورد قابلیت های زبان های تابعی در C# دلایل خوبی وجود داره که می تونیم در مورد اونا هم بحث کنیم)

h.jaza
دوشنبه 13 آبان 1387, 23:00 عصر
من متوجه این جمله تون نشدم
کجاش نامفهومه؟ آیا سی شارپ 4 الان ارائه شده، یا فقط تو کنفرانس PDC اومدن راجع بهش اطلاعاتی رو گفتن؟


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

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

چرا ؟
چرا نداره که؛ خوب این بخش، مکانی هست که همه از #C کار و ASP.NET کار و ...، بهش سر می زنن و می بیننش.

پلی مورفیک حرف می زنید
کجاش پلی مورفیک هست؟

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

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

Mehdi Asgari
دوشنبه 13 آبان 1387, 23:40 عصر
آیا سی شارپ 4 الان ارائه شده
http://barnamenevis.org/forum/showthread.php?t=129017


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

این که آندرس خوب حرف می زنه و می ترکونه! برای من اهمیتی نداره (با وجودی که یه جورایی بت من هست تو برنامه نویسی)
مهم اینه که آندرس بتونه مثل قبل همچنان ایده های قشنگ بده و زندگی ما رو بهتر کنه (شایدم داره پیر میشه.
البته من همیشه انتظار ایده های خفن و ویژگی های بزرگ و فوق العاده ندارم ، ولی انتظار هم ندارم یهو یه ورژن major بدن بیرون. اینا سیاست های تجاری و ... پشتشونه. من هنوز یه خط کد WCF ننوشتم ، هنوز LINQ رو کامل بلد نیستم ، اون وقت باید خودم رو آمادۀ نسخه ی بعدی کنم.

h.jaza
سه شنبه 14 آبان 1387, 01:08 صبح
ما در تمام نسخه های C# (به جز 4) ویژگی هایی رو دیدیم که ما رو impressed می کرد و در بعضی مواقع روی نحوۀ فکر کردن برنامه نویس (برای حل مسائل) تاثیر می ذاشت (مثل LINQ)
در نسخه های قبلی ما هر دفعه ویژگی بزرگی دیدیم. در نسخه ی 1 زبانی داشتیم با کلی ویژگی high level (کلاس ، interface ، delegate ، event ، property ، type safety ، GC و ... )
در نسخه ی 2 ، Generics و متد های بی نام
در نسخه ی 3 هم LINQ (و البته قابلیت نوشتن کد شبیه زبان های تابعی ، مثل توابع لامبدا و expression tree (http://msdn.microsoft.com/en-us/library/bb397951.aspx))
من به شخصه به عنوان یک برنامه نویس چیزی به toolboxم اضافه نشد (البته از BCL (http://en.wikipedia.org/wiki/Base_Class_Library)خبرای خوبی شنیده میشه مثل TPL (http://en.wikipedia.org/wiki/Parallel_FX_Library#TPL))
آیا قراره C# همون C++ بعدی باشه ؟ (در اون صورت من میرم فقط کد LISP می زنم تا آخر عمر!)
من فکر کنم Anders داره از فلسفه ی "Design Simplicity" (http://www.artima.com/intv/simplexity.html) در طراحی سی شارپ دور میشه.
اینو همیشه میگه آندرس (هم تو specification (http://download.microsoft.com/download/3/8/8/388e7205-bc10-4226-b2a8-75351c669b09/CSharp%20Language%20Specification.doc)هم تو کتابش (http://www.amazon.ca/exec/obidos/search-handle-url/188-8645385-8952844?_encoding=UTF8&search-type=ss&index=books-ca&field-author=Anders%20Hejlsberg))
شما dynamic programming رو با Reflection هم می تونید انجام بدید (در هر دوشون هم در صورت بروز اشتباه در run-time به خطا برخواهیم خورد)
درسته که این کار با مثلا Office رو راحت تر می کنه ولی بهای اون بزرگ تر شدن زبان هست.
قرار نیست C# زبانی برای انجام همۀ کارها باشه.
(در مورد قابلیت های زبان های تابعی در C# دلایل خوبی وجود داره که می تونیم در مورد اونا هم بحث کنیم)


در اینجا به اجمال به این مسئله می پردازم:
C# 1.0: کد های مدیریت شده
C# 2.0: جنرینک ها
C# 3.0: زبان جستجوی یکپارچه (Language Integrated Query)
که در اینجا نمی خوام این سه تا رو توضیح بدم، اما در مورد نسخه ی بعدی:
C# 4.0: برنامه نویسی پویا (Dynamic Programming)
هسته ی اصلی در سی شارپ 4، برنامه نویسی پویای اونه. در واقع اشیاء و ابجکت ها به زیر شاخه ی نرم پویا تبدیل می شوند، یعنی ساختار و رفتار آنها دیگر به یک تایپ استاتیک یا حداقل یکی از تایپ های شناخته شده ی کامپایلر، منحصر نمی شه.
موضوع بعدی هم، co-evolution هست.
خصوصیات سی شارپ 4 رو میشه در 4 بخش اصلی مطرح کرد:
مراجعه ی پویا (Dynamic Look up)
مراجعه ی پویا به ما این امکان رو میده که تابع، عملگر، فراخوانی ایندکسر، پروپرتی و فیلد های دسترسی و حتی احزار اشیاء را طوری بنویسیم که زمان چک تایپ های استاتیک سی شارپ رو به جای زمان کامپایل، به زمان ران تایم تغییر بدیم.
پارامتر های اختیاری و مشخص شده (Named and Optional Parameters)
پارامترها در سی شارپ 4 می تونن خصوصی سازی شوند مشروط به داشتن مقدار پیش فرض در تعریف اعضاشون. زمانی که یک عضو فراخوانی می شه، آرگومان های اختیاری می تونن حذف بشن. به علاوه هر آرگومانی می تونه با نام پارمترش در جایی غیر از مکان از پیش تعریف شدش، بیان بشه.
COM Specific interop features
مراجعه ی پویا و پارامتر های اختیاری و مشخص شده، هر دو سختی های برنامه نویسی COM را کاهش می دن. با این وجود، در سی شارپ 4 خصوصیات دیگری هم اضافه شده که باعث بهبود هر چه بیشتر این مسئله شده.
ناسازگاری (Variance)
همون طور که می دونید <IEnumerable<string زیر شاخه ی <IEnumerable<object نیست. اما سی شارپ 4، تایپ ایمن و سازگار رو در بر گرفته و تایپ های BCL رایج برای بهره بردن از آن بروز می شوند.

می دونم خیلی سنگین گفتم :لبخند:، ولی ببخشید. :خجالت:
آندرس حدود 1 ساعت و 10 دقیقه راجع به سی شارپ 4 و خصوصیاتش صحبت کرده و من اینجا فقط 4 خط بیشتر ننوشتم، در نتیجه، نتیجه واضحه ... :لبخند:

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

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

البته شخص خاصی مد نظرم نیست، کاملا کلی دارم میگم.

با تشکر

vcldeveloper
سه شنبه 14 آبان 1387, 04:17 صبح
خواهش می کنم، ماکدا، که تا این فیلم رو به طور کامل ندیدن و یا چند تا مقاله (از جمله اونی رو گذاشتم) نخوندین، از اظهار نظر کار ناشناسانه، خود داری کنین.لطفا قبل از اینکه از قابلیت هایی مثل Dynamic Programming یا Default Parameters ذوق زده بشید، یک نگاهی به زبان های اطراف خودتان بیاندازید!
در اون تاپیکی که آقای mehdi314ggg در این زمینه ایجاد کردند، گفتم که این چیزی که تحت عوان Dynamic Programming برای مشتاقان این زبان Present شده، توی هر زبانی که از COM پشتیبانی کنه، پیدا میشه. همیشه هم چیز جالبی نیست، چون احتمال اینکه کدهای مشکل دار بنویسید را افزایش میده، و در زمان نوشتن برنامه هم از امکانات IDE مثل Code insight (فکر کنم توی VS بهش میگن Intellisense یا یه چیزی توی همین مایه ها) محروم میشید. Late-Binding از نظر کارایی هم کندتر از Early-Binding هست، البته این بیشتر در زبان های Native صادق هست، نمیدونم توی زبانی مثل #C که با JIT کامپایل میشه، چقدر تاثیر منفی روی سرعت میزاره.
Default Parameters هم که از خیلی وقت پیش در زبان های مختلف بود. اصلا من تا قبل از اینکه خبر C# 4.0 را ببینم، فکر می کردم #C هم همچین قابلیت ابتدایی را دارد.
تنها قابلیتی که تا حدی قابل توجه هست، Variance هست، که اون هم کاربردهای محدودی داره.

شما بهتر هست بجای اینکه اصرار بیجا روی دیدن یک فیلم یا خواند یک مقاله داشته باشید، دلایل فنی مطرح کنید که چرا برنامه نویسان #C باید از دیدن این قابلیت های ابتدایی اضافه شده هیجان زده بشند؟! فکر کنم مایکروسافت اینقدر در نسخه های قبلی #C درگیر اضافه کردن قابلیت های جدید بود که یادش رفت این قابلیت های ابتدایی را به زبانش اضافه کنه، الان تازه یادش اومده! حالا نمیدونم چرا این اقدام دیرهنگام ورژن محصول را یک واحد بالا برده! حداقل اسمش را میگذاشتند C# 3.3.

Microsoft.net
سه شنبه 14 آبان 1387, 21:29 عصر
لطفا قبل از اینکه از قابلیت هایی مثل Dynamic Programming یا Default Parameters ذوق زده بشید، یک نگاهی به زبان های اطراف خودتان بیاندازید!
در اون تاپیکی که آقای mehdi314ggg در این زمینه ایجاد کردند، گفتم که این چیزی که تحت عوان Dynamic Programming برای مشتاقان این زبان Present شده، توی هر زبانی که از COM پشتیبانی کنه، پیدا میشه. همیشه هم چیز جالبی نیست، چون احتمال اینکه کدهای مشکل دار بنویسید را افزایش میده، و در زمان نوشتن برنامه هم از امکانات IDE مثل Code insight (فکر کنم توی VS بهش میگن Intellisense یا یه چیزی توی همین مایه ها) محروم میشید. Late-Binding از نظر کارایی هم کندتر از Early-Binding هست، البته این بیشتر در زبان های Native صادق هست، نمیدونم توی زبانی مثل #C که با JIT کامپایل میشه، چقدر تاثیر منفی روی سرعت میزاره.
Default Parameters هم که از خیلی وقت پیش در زبان های مختلف بود. اصلا من تا قبل از اینکه خبر C# 4.0 را ببینم، فکر می کردم #C هم همچین قابلیت ابتدایی را دارد.
تنها قابلیتی که تا حدی قابل توجه هست، Variance هست، که اون هم کاربردهای محدودی داره.

شما بهتر هست بجای اینکه اصرار بیجا روی دیدن یک فیلم یا خواند یک مقاله داشته باشید، دلایل فنی مطرح کنید که چرا برنامه نویسان #C باید از دیدن این قابلیت های ابتدایی اضافه شده هیجان زده بشند؟! فکر کنم مایکروسافت اینقدر در نسخه های قبلی #C درگیر اضافه کردن قابلیت های جدید بود که یادش رفت این قابلیت های ابتدایی را به زبانش اضافه کنه، الان تازه یادش اومده! حالا نمیدونم چرا این اقدام دیرهنگام ورژن محصول را یک واحد بالا برده! حداقل اسمش را میگذاشتند C# 3.3.

من نمی دونم چرا آقای کشاورز توی تمام تاپیکهاشون اینقدر اصرار داره بگه دلفی هنوز بهترین است ! بهر حال به نظر اکثر صاحبنظران علوم کامپیوتری جهت گیری مایکروسافت در زمینه محصولات نرم افزاری در آینده قابل ستایشه ؛ یکی از ویژگیهای جدیدی که قراره با 2010 بیرون بیاد DryadLINQ است که در واقع قراره رقیبی برای MPI و Open MP در پردازش موازی باشه ، که نشون میده روی ابداع LINQ و گسترش و توسعه اون چقدر فکر و کار کارشناسی شده .

Mehdi Asgari
سه شنبه 14 آبان 1387, 22:36 عصر
حالا نمیدونم چرا این اقدام دیرهنگام ورژن محصول را یک واحد بالا برده! حداقل اسمش را میگذاشتند C# 3.3
منم همچین نظری دارم


من نمی دونم چرا آقای کشاورز توی تمام تاپیکهاشون اینقدر اصرار داره بگه دلفی هنوز بهترین است !
من نمی دونم آقای کشاورز در کجای این پستشون همچین حرفی زدن! (فراموش نکنید که طراح سی شارپ قبلا دلفی رو ایجاد کرده بود و خیلی از ویژگی های C# رو از دلفی برداشته منتها با سینتکس سی)


در واقع قراره رقیبی برای MPI و Open MP در پردازش موازی باشه
مایکروسافت که خودش OpenMP رو تو VC++ پیاده سازی کرده. (http://msdn.microsoft.com/en-us/library/tt15eb9t(VS.80).aspx)
(در این زمینه هنوز به یه اجتماع نرسیدن :OpenMP ، TBB (http://www.threadingbuildingblocks.org/)، Erlang ، Clean ، TPL، Cilk (http://en.wikipedia.org/wiki/Cilk) و ......)
MPI چه ربطی داشت ؟
مایکروسافت فقط داره برای دات نت همچین چیزی رو اضافه می کنه و این هیچ ربطی به مثلا POSIX Threads یا native threading یا ... نداره

(نمی دونم آندرس بود یا Eric Gunnerson که توی یه مصاحبه حدود سال 2003 در جواب این که چرا سی شارپ پارامترهای پیش فرض نداره ، مسئلۀ Versioning رو پیش کشیده و به جاش Overloaded Methods رو پیشنهاد داد. سرچ کنید لینکشو پیدا می کنید)

Bayazee
سه شنبه 14 آبان 1387, 22:53 عصر
سلام
تو اولین نگاه منم احساس می کنم برخی مطالب زیادی پررنگ شده و شاید بر می گرده به شور شوقی که یک برنامه نویس می تونه از کوچکترین تغییر مثبت توی زبان مورد علاقش داشته باشه وگر نه منم احساس می کنم بسیاری از این تغییرات و ویژگی هایی که سعی می شه ابتکاری و به عنوان اولین و یا بهترین نمونه ذکر بشه مدت ها پیش موجود بوده و استفاده می شده . در حقیقت به نظرم یه پروپوگاندا هست که توسط مایکروسافت برای تبلیغ زبانش و اهداف تجاریش راه افتاده و بیشتر تبلیغاتی هست .
برای مثال ویژگی چون Dynamic Programming یا late binding در زبانی چون ویژال بیسیک و از ۱۹۹۷ موجود بوده !! اما اگر هم منظور زبانی باشه که در حالت عادی استاتیک باشه ولی بتونه برنامه نویسی پویا و داینامیک رو هم ساپورت کنه بد نیست نگاهی به زبانی چون Boo بندازید که از سال ۲۰۰۳ موجود هست .
بقیه موارد هم به همین صورت یا زیاد مهم نیست یا ...
شرکت هایی چون مایکروسافت و سان بخاطر ترس از اینکه برنامه نویس ها زبانه ها و نرم افزار های اونارو کنار بذارن و از جاوا یا #C به زبان دیگری برند سعی می کنند تمام ویژگی ها و تکنولوژی های موجود رو که می بینند و احساس می کنند موفق بوده تو تکنولوژی و زبان خودشون بیارن که یه جورایی اختراع دوباره چرخ هست و قرض گرفتن هر چیزی از یه موجودیت و به نظر من صحیح نیست . در واقع ماهیت و خوبی هر چیزی به ذات اون چیز بر می گرده و خوب هست و از برداشتن هر چیزی از یه جایی می تونه نتیجه عکس بده .
یاد اون داستانی افتادم که می خواستن یه حیون خیلی خوشگل و زیبا درست کنند . از هر حیون بهترن خصوصیتش رو برداشتن . آخرش یه حیون عجیب قریب و زشت شد !
اضافه شدن امکانات و ویژگی های جدید بنظر من داره عجولانه و بدون در نظر گرفتن برخی موارد انجام می شه ! پیچیدگی طراحی و پیاده سازی و همچنین استفاده از #C بسیار بیشتر خواهد شد .
البته باید منتظر بود و دید نتیجه خروجی چی می شه ولی به توجه به سایست های قبلی مایکروسافت نتایج همچین غیر قابل حدث هم نیست . تو انجمن ها و لیست ها و کانال های IRC هم بسیاری مخالف این تغییرات و سیاست های مایکروسافت بودند .

Microsoft.net
سه شنبه 14 آبان 1387, 23:05 عصر
MPI چه ربطی داشت ؟
مایکروسافت فقط داره برای دات نت همچین چیزی رو اضافه می کنه و این هیچ ربطی به مثلا POSIX Threads یا native threading یا ... نداره



MPI یا همون Message passing Interface مدل معماری قیاس پذیر (Scalable) در سیستم های None Shared Memory است و تفاوتش با OpenMP که یک مدل قیاس ناپذیر (Not Scalable) و در سیستمهای Shared Memory در همین دو نکته است و اصلا ربطی به Threads نداره !
به علت اینکه در مدل MPI ما یک مدل حافظه اشتراکی(Shared Memory) نداریم برنامه نویسی سخت تر میشه ولی در عوضش به سرعت قابل توسعه و تغییر هست ، یک نمونه از مدل های معروف MPI میشه به مدل معماری Hyper Cube اشاره کرد که در واقع سیستم ها (یا پروسسور ها) به صورت یک مکعب به هم متصل میشند .
بحث Thread Programing یک بحث کاملا جدا است و خیلی ها اصلا اونرو جزو پردازش موازی بحساب نمیارن
اتفاقا مایکروسافت دقیقا MPI رو هدف گرفته ، دلایلش هم به نوعی به بنبست خوردن طراحی مایکروپروسسور هاست و نیاز به Performance فوق العاده بالا در محاسبات هست که هزینه تولید اون توسط سیستم های حافظه اشتراکی بالا و قیاس پذیری اون پایینه

vcldeveloper
چهارشنبه 15 آبان 1387, 17:46 عصر
من نمی دونم چرا آقای کشاورز توی تمام تاپیکهاشون اینقدر اصرار داره بگه دلفی هنوز بهترین است ! بهر حال به نظر اکثر صاحبنظران علوم کامپیوتری جهت گیری مایکروسافت در زمینه محصولات نرم افزاری در آینده قابل ستایشه ؛ یکی از ویژگیهای جدیدی که قراره با 2010 بیرون بیاد DryadLINQ است که در واقع قراره رقیبی برای MPI و Open MP در پردازش موازی باشه ، که نشون میده روی ابداع LINQ و گسترش و توسعه اون چقدر فکر و کار کارشناسی شده .
والله من خودم هم به شک افتادم، و یک بار دیگه پست خودم را خوندم، ولی هر چی نگاه کردم، خبری از دلفی نبود. فکر کنم تنها بخش مربوط به دلفی اش Code Insight بود. ما بهش میگیم Code Insight چون من با IDE دلفی کار میکنم. در Visual Studio بهش میگن Intellisense یا یه چیزی شبیه به این. چون مطمئن نبودم، Code Insight را هم آوردم که کسی نگه متوجه منظورم نشه.

چیزی که من متوجه نشدم اینه که این پست شما چه ربطی به اون سه ویژگی مطرح شده برای C# 4.0 داشت؟! این دوستمون میگه مایکروسافت با عرضه سه ویژگی Dynamic Programming، Default Parameters, و Variance برتری خودش را اثبات کرده! DryadLINQ چه ربطی به اون سه ویژگی داره؟!
شما انتظار دارید که ما چیکار کنیم؟! چون شرکتش مایکروسافت بوده، و زبانش هم #C، از اینکه یک سری قابلییت هایی که سال ها در سایر زبان ها وجود داشتند را به #C اضافه کردند، ذوق زده بشیم؟!

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

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

موفق باشید

h.jaza
پنج شنبه 16 آبان 1387, 11:54 صبح
I've just seen an article detailing the new C#4.0 'dynamic' feature (http://www.codethinked.com/post/2008/10/28/C-40-New-Features-Part-1-dynamic-keyword.aspx) previewed at the PDC 2008 and I wondered what people thought of it ? I'm wondering:

* what are good examples of the benefit of such an addition to the language
* possible disadvantages
* performance implications

I guess people with experience of dynamic languages or else any lucky soul with the 2010 CTPs from PDC may have given it a whirl...

UPDATE: Please do keep posting your thoughts, it's kinda cool to see lists of for / against arguments and, at the very least times that it'll be appropriate and issues to consider.

Benefits:

* dynamic lover with a host of links - Curt Hagenlocher (http://stackoverflow.com/questions/244302?answer=244495#244495)
This really is an explicit opt-in design decision -- you have to explicitly use the dynamic keyword in order to opt-in. :) There are hundreds of ways to write faulty code, and only some of them are caught by static type checks. If you have proper test coverage of your code, then you'll know it's working the way you expect even with dynamic types.
I love dynamic, but then I'm totally biased.
Edit: with regard to performance, the first trip through any dynamic call site is going to be very expensive compared to a normal method call. But subsequent calls should be roughly as expensive as a call through a delegate. That's because information is actually cached at the call site (http://en.wikipedia.org/wiki/Polymorphic_Inline_Cache) so it's not regenerated on subsequent calls.
Edit 2: I'm a bit curious as to why people think this would be "abused"? Some newbie programmer is going to make his or her code compile correctly by avoiding explicit types where possible and therefore losing out on Intellisense? That hardly seems likely.
Links:
Anders' talk on "The Future of C#" (http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/TL16.wmv)
Jim Hugunin's talk on "Dynamic Languages in Microsoft .NET" (http://channel9.msdn.com/pdc2008/TL10/)
Alex Turner's talk on "Natural Interop with Diverse Object Models" (http://channel9.msdn.com/pdc2008/TL54/)
Chris Burrows' Blog (http://blogs.msdn.com/cburrows/)

* New C# 4.0 Features Microsoft reference (docx) - Hugo (http://stackoverflow.com/questions/244302?answer=244382#244382)
Microsoft has a document describing (http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=csharpfuture&DownloadId=3550) the reasoning around the new features. It tells you the motivation for them in a prosaic nice way. (Read it!) It talks a lot about using COM and dynamic-language objects from managed code.

* Objective-C comparison - John Rudy (http://stackoverflow.com/questions/244302?answer=244336#244336)
I see this feature, and the first thing which pops into my mind is the message-oriented architecture of Objective-C. Very cool and powerful, if used appropriately. I haven't had the problem space this addresses yet, but I could definitely see places where it would be useful functionality to have.
The blog post you link to discusses performance somewhat, but bear in mind that CTPs are exactly that: Previews. Until release time, performance measurements don't mean anything.
But wicked cool, nonetheless. The ability to cleanly deal with unknown types rocks verily.



* I think kenny likes the idea (http://stackoverflow.com/questions/244302?answer=244339#244339)
I'm sincerely disappointed by this new addition.
Compile-time type safety is a massively effective mechanism for eliminating a whole class of bugs.
Bugs that can't be detected until runtime can be very dangerous, particularly if they're associated with edge conditions.
While I acknowledge the need for dynamic typing in certain circumstances, I really think this should be an explicit opt-in design decision, either through the use of a compiler pragma or (preferably, IMO) from a different assembly written in a dynamically-typed language.
Factor in the performance overhead and there's very little positive about it for me.



* Visual Studio 2010 and C#4.0 CTPs with language features - Chris Conway (http://stackoverflow.com/questions/244302?answer=244410#244410)
FYI... CTP can be downloaded here: http://www.microsoft.com/downloads/details.aspx?familyid=922b4655-93d0-4476-bda4-94cf5f8d4814&displaylang=en&tm

* Interop benefits - ffp (http://stackoverflow.com/questions/244302?answer=244418#244418)
Having recently been buried in IDispatch and .NET, I welcome anything that might make it easier (or even work properly). There are many gotchas in the Interop world and I think that the dynamic keyword as well as the abilities to call-by-name, and provide default values will make this much easier to deal with from within C#.

* duck typing - Rob Walker (http://stackoverflow.com/questions/244302?answer=244347#244347)
This has been available in boo (http://boo.codehaus.org/) for a while as duck typing (http://boo.codehaus.org/Duck+Typing). It also harks back to Visual Basic and COM's IDispatch.
I think it is a worthwhile addition, but am not sure it will prove broadly useful. You need to have a class you know will have a method with a given name at some point in the future but doesn't now.
Reflection obviously lets you specify the method (or property) name at runtime, this doesn't (at least as described in the article).
I'd like to have syntax that lets me write something like:
string method = "Zot";
obj.method();
Where the method name can be supplied at runtime too.



Potential issues:

* Fears of type safety - Steve Morgan (http://stackoverflow.com/questions/244302?answer=244485#244485)
I'm sincerely disappointed by this new addition.
Compile-time type safety is a massively effective mechanism for eliminating a whole class of bugs.
Bugs that can't be detected until runtime can be very dangerous, particularly if they're associated with edge conditions.
While I acknowledge the need for dynamic typing in certain circumstances, I really think this should be an explicit opt-in design decision, either through the use of a compiler pragma or (preferably, IMO) from a different assembly written in a dynamically-typed language.
Factor in the performance overhead and there's very little positive about it for me.


* C# for C# - SoloBold (http://stackoverflow.com/questions/244302?answer=244448#244448)
Why not program in a language that isn't built to be C-like? This stuff seems woefully out of place in a strongly-typed language (http://en.wikipedia.org/wiki/Strongly-typed_programming_language) like C#. There's nothing this does that a good application of interfaces and/or inheritance doesn't solve more cleanly in a C-like language. Plus interfaces and inheritance can be checked at compile time.
Someone mentioned objective-C (http://en.wikipedia.org/wiki/Objective-C)'s messaging (well really it was first widely implemented in SmallTalk (http://en.wikipedia.org/wiki/Smalltalk)). This is similar. While I enjoy that feature set in ObjC, what is it doing in C#? Is it adding anything useful? Is it adding anything that a library couldn't add? No. Instead, it needlessly muddies the language and changes its purpose. C# is great partly because it is strongly typed.
There are already good dynamically-typed (http://en.wikipedia.org/wiki/Type_system#Dynamic_typing) languages such as Python (http://www.python.org/). They are good if you problem fits their domain and you like using them. Some of us prefer strongly-typed languages and the explicit nature of code written for them. They are both valid paradigms, so don't let someone tell you one makes you more productive (for which types of programs? Under what circumstances?). Writing bank software in Python would be stupid as would writing simple scripts in C#. For everything in between, strongly- and dynamically-typed languages are about even - and that gives developers choice and the ability to code in a style they like.
I'm just saying use the right tools for the job. Don't try to bend a hammer into a screwdriver when you have a screwdriver right next to you.
If you wanted to add something to C# how about more features from the functional programming (http://en.wikipedia.org/wiki/Functional_programming) and/or concurrency (http://www.erlang.org/) world? That could add something and take C# forward; this takes C# in circles.


* On its way to php (and a nice discussion on his blog) - Omer van Kloeten (http://stackoverflow.com/questions/244302?answer=244548#244548)
It's amazing how instead of going in the right direction (Spec#), the design team is going in the wrong one (DLR).
The dynamic keyword is going be abused so much... C# is on its way to becoming PHP.
Edit: I've written much more thoroughly about this on my blog (http://weblogs.asp.net/okloeten/archive/2008/10/29/6708812.aspx), with a suggestion on how to improve the feature that you might find interesting.


* fears of abuse - Jonathan Holland (http://stackoverflow.com/questions/244302?answer=244421#244421)
I dislike it.
Runtime method dispatch is available via reflection, making it easy like this will just make it prone to abuse.


* excusing poor desgin - Robert C. Barth (http://stackoverflow.com/questions/244302?answer=245319#245319)
The pink elephant here is the crappy developers who will make their entire codebase dynamic because it's "easier" or "faster" or whatever silly excuse is usually given for poorly-designed, fragile software, and then you'll get to inherit that mess, and you'll curse the day the word "dynamic" made its way into the C# specification. Because, the simple truth is this: if it's there, people will abuse it. Especially those that don't know any better. And there are a lot of those people in the software engineering field.

* C# a Frakenstein chilf of C - Nelson LaQuet (http://stackoverflow.com/questions/244302?answer=245480#245480)
I knew this would happen when I saw the "partial" keyword in 2.0 - and my suspicions were confirmed upon learning about the "var" keyword in 3.0... But this has to be the biggest slap in the face yet. C# is going downhill. Its pure OOness is turning into a smorgasbord of language extensions that slowly turn it into the Frankenstein of C's children.
Some of their ideas are great. Who does not love LINQ or generics? Both encourage good design and help you write more reusable code quicker. The dynamic keyword may allow you to write things quicker because you no longer care about the type - but the overhead plus the confusion it will cause make it not worthwhile.
I'm fine with C#'s clearly java roots; but I draw the line when they add in loosely typedness with similarities to PHP.
dynamic... var... anonymous classes... lambada expressions... Man, this is sure sounding like Javascript which, in my mind, is the epitome of loosely-typedness.


* Late Binding and co- and contravariance - Thedric Walker (http://stackoverflow.com/questions/244302?answer=245344#245344)
The late-binding is really what I was stoked about. I like the co- and contravariance feature. It means that the CLR is moving closer to Haskell style type class definition which would be cool.
I don't see how the dynamic keyword is a new feature. It seems like plain old reflection to me you just have a keyword for it now. So do you want them to get rid of reflection? Did reflection become a bad thing because it now has a keyword associated to it? I hope not as it is a very handy tool. I agree with Mr Barth. People abuse reflection all the time because the don't know any better. So really, what's changed?


* Wish it was var - Orion Edwards (http://stackoverflow.com/questions/244302?answer=245536#245536)
It's awesome. The only thing wrong with it, is that it's not called var
dynamic is too long a word to be used like that. It's similar to if they made you type integer everywhere instead of just int
To clarify: Ideally I would like to be able to use var everywhere, and if the compiler can infer the type, it would, and if not, it would be dynamic. I realise this may not be possible/practical - so for a more realistic solution, I'd like to see the keyword be dyn or dvar or something like that, just to cut down on typing.



اینها یه سری تجزیه تحلیلن که توسط یه سری از برنامه نویس ها در سایت استک اور فلو (http://stackoverflow.com/) در این تاپیکش (http://stackoverflow.com/questions/244302/what-do-you-think-of-the-new-c-40-dynamic-keyword)، انجام شده.

میشه گفت تقریبا جامعه.

با تشکر

h.jaza
پنج شنبه 16 آبان 1387, 11:56 صبح
اینم (http://stackoverflow.com/questions/tagged/c%234.0) یه لینک مفیده دیگه راجع به سی شارپ 4 در همین سایت.

اینم چند تا لینک مفید دیگه:
http://channel9.msdn.com/tags/Microsoft+Dynamics+CRM+4.0/
http://weblogs.asp.net/okloeten/archive/2008/10/29/6708812.aspx
http://channel9.msdn.com/tags/CSharp+4.0/
http://channel9.msdn.com/shows/Going+Deep/Inside-C-40-dynamic-type-optional-parameters-more-COM-friendly/

Mehdi Asgari
جمعه 17 آبان 1387, 13:10 عصر
سلام
الان فیلم رو دیدم
جالب بود (البته از آندرس غیر از این هم انتظار نمی رفت)
در مورد پارامتر های پیش فرض ، آندرس اشاره می کنه به فشار مشتری ها و کاربران (چون قبلا گفته بود که همچین چیزی چه عواقبی داره و method overloading رو به جاش پیشنهاد داده بود)
کار برنامه نویسای آفیس هم خیلی راحت تر شد

ولی جدای همۀ این ها جالب ترین قسمت این ارائه (از نظر من) اواخر بحث بود که آندرس دربارۀ آینده و Metaprogramming و ... بحث می کرد که یه ویژگی به اسم Compiler as a service ارائه داد.
خیلی جالب بود ، این که بتونیم به یه کد دینامیک (که در زمان اجرا ایجاد خواهد شد) در زمان کامپایل ارجاع کنیم (از طریق delegate) و اون رو فراخوانی کنیم و در آخر زیباترین قسمتش رو که همون Csharp eval بود نشون داد (یه چیزی مثل fsi برای F#)

Mehdi Asgari
جمعه 17 آبان 1387, 13:19 عصر
در ضمن برای کسانی که ممکنه var و dynamic و object رو با هم قاطی کنن:
object با توجه به این که مادر تمام کلاس ها در .NET هست پس می تونه به هر چیزی اشاره کنه (و strong typed هست) البته نیاز به casting برای باز گردوندن مقدار داریم.
var هم strong typed هست و فقط و فقط می تونه به یک نوع اشاره کنه (یعنی وقتی می گیم


var v = x;

v فقط میتونه از نوعی که شی x از اون نوع هست ، باشه. همین
dynamic هم میتونه به هر نوع شی ای اشاره کنه ، منتها method resolution در موقع اجرا انجام خواهد شد

http://tirania.org/blog/archive/2008/Nov-03-1.html

h.jaza
جمعه 17 آبان 1387, 13:28 عصر
خوب، پس mehdi311ggg (http://barnamenevis.org/forum/member.php?u=12705) جان ظاهرا کمی نظرت تغییر کرد.

این که من گفتم ماکروسافت بار دیگر پوکوند، به خاطر همینه. تولید داینامیک کد چیز کمی نیست و فکر نمی کنم زبون دیگه ای هم، همچین چیزی رو داشته باشه و البته Compiler As A Service یا Meta Programming که خودتم اشاره کردی یا از بین رفتن مشکلات ref misssing ها تبدیل خیلی ساده ی اونها فقط با اضافه کردن پارامتر های پیش فرض و خیلی چیز های دیگه.

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

با تشکر

Bayazee
جمعه 17 آبان 1387, 18:47 عصر
تولید داینامیک کد چیز کمی نیست و فکر نمی کنم زبون دیگه ای هم، همچین چیزی رو داشته باشه و البته Compiler As A Service یا Meta Programming که خودتم اشاره کردی یا از بین رفتن مشکلات ref misssing ها تبدیل خیلی ساده ی اونها فقط با اضافه کردن پارامتر های پیش فرض و خیلی چیز های دیگه.


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


چون شرکتش مایکروسافت بوده، و زبانش هم #C، از اینکه یک سری قابلییت هایی که سال ها در سایر زبان ها وجود داشتند را به #C اضافه کردند، ذوق زده بشیم؟!

باید اعتراف کنیم اطلاعات زیاد و دقیقی از #C ندارم . ولی تقریبا تمامی این ویژگی ها که می گید همگی سالهاست داره استفاده می شه و موجود هست . برای مثال Metaprogramming یا تولید و اجرای داینامیک کد اگر اشتباه نکنم از سال ۲۰۰۳ تو زبان پایتون که زبان پیشفرض بنده هست موجوده . حالا قرار هست تو #C نسخه ۴ همین اضافه بشه یا کار جدیدی قرار روش انجام بگیره ؟

موارد دیگری هم مثل Csharp eval اگر درست متوجه شده باشم که اجرای داینامیک و موقع اجرای (runtime) کد هست هم درپایتون از سالهای پیش موجود بوده . پایتون رو مثال می زنم چون اشراف بهتری روش دارم . ولی به احتمال زیاد توی زبانهای دیگه هم این امکان ها موجود بوده .
چیزی که جالب به نظرم می یاد این هست که مایکروسافت در بسیاری موارد ایده هاشو رو از سایر زبان ها مخصوصا پایتون داره می گیره و سپس اونارو با سروصدای زیاد و بصورت تجاری و انحصاری ! ارائه می کنه .
یه چند تا مثال می زنم . دوباره می گم قصدم تبلیغ یا نفی یک زبان نیست . بیشتر می خوام سیاست های انحصاری و استعماری و بسته مایکروسافت رو نشون بدم . چرا پایتون ؟ چون بیشتر از بقیه بلدم ! :چشمک:
تو پست های قبلی از Linq بحث شده . چند نمونه مثال از #C و معادل پایتون اونا . دقت کنید که این ویژگی ها در پایتون تقریبا از سال ۲۰۰۰ به بعد وجود داشته !


Where - Simple 1

C# version:

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var lowNums = from n in numbers where n < 5 select n;

Python version:

numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0]
low_nums = (n for n in numbers if n < 5)



Select - Simple 1

C# version:

var numsPlusOne = from n in numbers select n + 1;

Python version:

nums_plus_one = (n + 1 for n in numbers)


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


def class_with_method(func):
class klass:
pass
setattr(klass, func.__name__, func)
return klass

def say_foo(self):
print 'foo'

Foo = class_with_method(say_foo)
foo = Foo()
foo.say_foo()


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


>>> s = "print 'Python is fun!'"
>>> exec(s)
Python is fun!


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

h.jaza
جمعه 17 آبان 1387, 20:00 عصر
من راجع به پایjون چیزی نمی دونم وسه همین راجع بهش نمی تونم اظهار نظر کنم.

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

این انتقاد درسته نه ....

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

با تشکر

Mehdi Asgari
جمعه 17 آبان 1387, 20:17 عصر
خوب، پس mehdi311ggg جان ظاهرا کمی نظرت تغییر کرد.
نظر من و تو مهم نیست. مهم اینه که قدرت و ثروت دست کیه. به هر حال این ویژگی ها در C# 4.0 خواهند بود.


همونطور که می بینید خیلی از این موارد قبلا موجود بوده و من در عجبم که چرا اینا با این همه دیرکرد داره به #C اضافه می شه .
خب ، همیشه بزرگان روی شونه های بزرگان دیگر می ایستن. و یکی از زبان هایی که سی شارپ خیلی ازش قرض گرفته (این عبارتیه که خود آندرس به کار می بره) پایتون هست. و کسی هم خجالت نمی کشه که بگه من در طراحی زبانم از فلان زبان ها ایده گرفتم. دلیل تاکید رسانه های برنامه نویسی (مثل فروم ها و بلاگ ها) بر این ویژگی ها ، یکی استاتیک بودن سی شارپه (وگرنه همه می دونیم که پایتون دینامیکه) و دیگری اینه که در ابتدا در طراحی .NET Framework برای چیزایی مثل Functional Programming و Dynamic Programming فکر زیادی نشده بود ، در حالی که الان شاهد F# و DLR (IronPython,..( هستیم.
کسی ادعا نکرد سی شارپ اولین زبان با این ویژگی هاست.


من راجع به پایفون چیزی نمی دونم
پایتون درست هست (Python (http://en.wikipedia.org/wiki/Python_programming_language))

Mehdi Asgari
جمعه 17 آبان 1387, 20:47 عصر
یه چیز دیگه که الان به ذهنم رسید:
نمیشه گفت لزوما زبان های استاتیک بهترن یا دینامیک. آندرس تو این ارائه اش ، مزایای هر دوی این روش ها رو تو یه جدول نشون میده (گرچه خودش میگه در کل طرفدار زبان های استاتیکه)
مزایای زبان های استاتیک:
Robust
Performant
Intelligent tools
Better scaling

و زبان های دینامیک:
Simple and succint
Implicitly typed
Meta-programming
No compilation

این رو هم بخونید:
http://pico.vub.ac.be/~wdmeuter/RDL04/papers/Meijer.pdf

Bayazee
جمعه 17 آبان 1387, 21:14 عصر
سلام
من با قرض گرفتن از یک زبان یا تکنولوژی مشکلی ندارم . خودم یک طرفدار نرم افزار آزاد هستم و کاملا طرفدار این موارد . اما کار مایکروسافت کمی فرق داره ! اینکه از زبان ها و تکنولوژی های آزاد که سورس اونها در دسترس هست ایده بگیری و یا حتی بصورت مستقیم استفاده کنی و بعد قوانین انحصاری و محدود کننده روش بذاری ! این منو یاد شرکت های ایرانی خودمون می نداره ! یک نرم افزار غیر قانونی رو دانلود می کنند ، کرک می کنند و در حقیقت می دزند و بعد موقع پخش رو سی دی می نوسن کپی غیر مجاز و غیر شرعی هست !! جالب هست چندین بار بزرگان مایکروسافت و مخالفان نرم افزار آزاد و آزادی نرم افزار نام عده سرطانی رو برای نرم افزار آزاد و لینوکس گذاشتند ! قدرت مایکروسافت رو قبول دارم ولی قدرت نرم افزار آزاد رو خیلی بیشتر می دونم ! که البته بخش زیادیش بصورت بلقوه هست ! که داره بلفعل می شه . زبانی مثل پایتون رو هم دست کم نگیرید . بسیاری از بخش های سروس های ایمیل و نقشه گوگل و کل سایت یوتویب از جمله محصول این زبان هستند .
ولی حداقل بنده از خوندن مطالب این پست اینطوری برداشت کردم که برخی احساس می کنند بسیاری از این ویژگی های جدید ابداعی و بسیار جدید هستند یا همه یکجا نبوده اند . هنر این نیست همه چیز یکجا جمع باشه ! هنر اینه با کمترین موارد مورد نیاز و راحتترین و ساده ترین روش به بهترین روش به هدف رسید .
یکی دیگه از اهداف من از گفتن این موارد مشکلی هست که در جامعه ما وجود داره ! مثل پرنده هایی که تو آسمون پرواز می کنن یهو همه راه می افتن دنبال یک چیز ! بدون اینکه دلیل واقعی انتخاب اون راه یا اون وسیله رو بدونن ! با بقیه موارد و موجودیت ها و راه ها با تعصب خاص برخورد می کنند . و این باعث عقب موندگی می شه . من هر روز بار ها می بینم دلیل انتخاب یک زبان تقریبا بدون مطالعه و تحقیق هست . البته به دوستان و همکاران با تجربه قصد توهین ندارم . و بنظرم هر زبانی نیاز و مهم هست و در جایگاه خودش مهم و ضروروی . ولی قبول کنید که در کشور ما یهو بعضی هارو تب می گیره !! تب جاوا ! تب دات نت و ... ! منظور من این نیست که جاوا یا دات نت بده ! منم خیلی مواقع نیاز بوده و سراغ اینا رفتم .
مورد دیگه ای هم که هست یاد گرفتن برنامه نویسی مهم هست نه زبان ! کسی که رانندگی بلد باشه با هر ماشینی می تونه رانندگی کنه . زبان برنامه نویسی یک ابزار موقت هست .

Mehdi Asgari
جمعه 17 آبان 1387, 22:40 عصر
اما کار مایکروسافت کمی فرق داره ! اینکه از زبان ها و تکنولوژی های آزاد که سورس اونها در دسترس هست ایده بگیری و یا حتی بصورت مستقیم استفاده کنی و بعد قوانین انحصاری و محدود کننده روش بذاری !
میشه در زمینه ی مورد بحثمون ، بحث کنید ؟
مایکروسافت این اواخر سیاستش خیلی open تر شده (دادن کد .NET Framework ، SSCLI ، استاندارد کردن زبان سی شارپ و پلتفرم دات نت ، کتب و ویدئوهای آموزشی رایگان و ...)


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


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


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


یاد گرفتن برنامه نویسی مهم هست نه زبان
That's the point

vcldeveloper
جمعه 17 آبان 1387, 22:45 عصر
یکی دیگه از اهداف من از گفتن این موارد مشکلی هست که در جامعه ما وجود داره ! مثل پرنده هایی که تو آسمون پرواز می کنن یهو همه راه می افتن دنبال یک چیز ! بدون اینکه دلیل واقعی انتخاب اون راه یا اون وسیله رو بدونن ! با بقیه موارد و موجودیت ها و راه ها با تعصب خاص برخورد می کنند.
به قول Larry Ellison مدیرعامل اوراکل:



The computer industry is the only industry that is more fashion-driven than women's fashion.

vcldeveloper
شنبه 18 آبان 1387, 22:45 عصر
Allen Bauer یکی از توسعه دهندگان دلفی در زمان حضور اندرس هلزبرگ در بورلند هست که بعد از مهاجرت افرادی همچون هلزبرگ، Jazdzewski، Thorpe ، و... به عنوان Chief Scientist در بورلند مشغول به کار شد، و با تیم توسعه دهنده دلفی از بورلند جدا شده و به شرکت تازه تاسیس CodeGear که بخش جدا شده ابزارهای توسعه دهندگان بورلند بود، پیوست.

Allen Bauer در وبلاگش درباره Presentation اندرس هلزبرگ در PDC درباره C# 4.0 و صحبت کوتاهی که با هلزبرگ درباره Dynamic programming داشته، مطلبی نوشته:
http://blogs.codegear.com/abauer/2008/11/07/38879

بخش مربوط به صحبتش با هلزبرگ:


I had a chance to meet with Anders for a few moments out in the "Big Room" and I mentioned that the whole "dynamic" thing looked remarkably like the old Variant dispatching stuff. He chuckled and mentioned that the C# model allows for doing different kinds of dispatching and not just COM IDispatch… Hmm… I smiled and reminded him that Delphi does as well. I explained that since Delphi initially introduced the Variant dispatching in D3, we’ve added support for custom variant types. We now support all kinds kind of dynamic dispatching by creating your own custom variant type by descending from TInvokableVariantType over in the Variants unit. He paused a moment, chucked again, and explained that really none of these concepts are new, we’re just all learning how to reconcile the strongly-type world with the dynamically typed world of JavaScript, Python, and Ruby.