مصاحبه کامل با خالق ++C
Full Interview With the Creator of C++
By popular demand, and a request from the man himself, we’ve decided to release the full interview with esteemed computer scientist Bjarne Stroustrup (aka the creator of C++). We cover a bunch of topics so check the chapters to find what interests you the most! Filmed last year. Enjoy and happy trails!
00:00-02:42 Getting into programming
02:42-03:26 Programming being versatile
03:26-06:07 Industry changes
06:07-10:20 Inventing and maintaining C++
10:20-12:02 Key to making a successful language
12:02-16:04 Greatest lessons
16:14-20:06 Moving to the US
20:06-23:20 Advice to devs
IFoo<string> s = ...; IFoo<object> b = s;
class Animal {} class Bear : Animal {} class Camel : Animal {} public class Stack<T> { int position; T[] data = new T[100]; public void Push (T obj) => data[position++] = obj; public T Pop() => data[--position]; }
Stack<Bear> bears = new Stack<Bear>(); Stack<Animal> animals = bears; // Compile-time error
animals.Push (new Camel()); // Trying to add Camel to bears
public class ZooCleaner { public static void Wash (Stack<Animal> animals) {...} }
class ZooCleaner { public static void Wash<T> (Stack<T> animals) where T : Animal { ... } }
Stack<Bear> bears = new Stack<Bear>(); ZooCleaner.Wash(bears);
Bear[] bears = new Bear[3]; Animal[] animals = bears; // OK
animals[0] = new Camel(); // Runtime error
public interface IPoppable<out T> { T Pop(); }
var bears = new Stack<Bear>(); bears.Push (new Bear()); // Bears implements IPoppable<Bear>. We can convert to IPoppable<Animal>: IPoppable<Animal> animals = bears; // Legal Animal a = animals.Pop();
public class ZooCleaner { public static void Wash (IPoppable<Animal> animals) { ... } //cast covariantly to solve the reusability problem }
public interface IPushable<in T> { void Push (T obj); }
IPushable<Animal> animals = new Stack<Animal>(); IPushable<Bear> bears = animals; // Legal bears.Push (new Bear());
public interface IComparer<in T> { // Returns a value indicating the relative ordering of a and b int Compare (T a, T b); }
var objectComparer = Comparer<object>.Default; // objectComparer implements IComparer<object> IComparer<string> stringComparer = objectComparer; int result = stringComparer.Compare ("Hashem", "hashem");
برای مطالعهی بیشتر
Covariant and Contravariant
آناتومی یک گزارش خطای خوب
تصور اینکه تمام پرسش کنندگان در حین طرح سؤالی، نکات مطلب جاری را رعایت کنند، بیهوده است. به همین جهت میتوان با ارائهی قالبهایی از پیش تعیین شده، آنها را مقید به پر کردن جاهای خالی کنیم. برای این منظور در GitHub
- در صفحهی اول پروژه، بر روی دکمهی ایجاد یک فایل جدید کلیک کنید:
- سپس نام فایل را دقیقا معادل github/issue_template.md. وارد کنید (این نام ویژه توسط GitHub شناسایی میشود).
- در ادامه محتوای آنرا به چیزی مانند متن ذیل تنظیم تنظیم کنید:
# Summary of the issue ## Environment ``` The in-use version: Operating system: IDE: (e.g. Visual Studio 2015) ``` ## Example code/Steps to reproduce: ``` paste your core code ``` ## Output: ``` Exception message: Full Stack trace: ```
اکنون با کلیک بر روی دکمهی new issue، این قالب از پیش تعیین شده جهت تکمیل جاهای خالی آن نمایش داده میشود و میتواند راهنمایی برای پرسش کنندگان باشد.
At Build 2019, Microsoft announced the release date for .NET Core 3.0 to be this coming September. This release includes the highly touted support for desktop platforms like WinForms and WPF. Today, there’s still a large developer base that’s building desktop applications using these .NET Windows desktop frameworks and by using .NET Core 3.0, you can now build desktop applications on the .NET Core platform.
Build Events
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\editbin.exe
"C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\editbin.exe" /STACK:1000000 "$(TargetPath)"
You can start this tool only from the Visual Studio command prompt. You cannot start it from a system command prompt or from Windows Explorer.
call "$(DevEnvDir)..\Tools\vsvars32.bat"
C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat
call "$(DevEnvDir)..\Tools\vsvars32.bat" "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\editbin.exe" /STACK:1000000 "$(TargetPath)"
call "$(DevEnvDir)..\Tools\vsvars32.bat" "editbin.exe" /STACK:1000000 "$(TargetPath)"