Tuesday 13 February 2018

المهنية تصميم نظام تداول الأسهم والأتمتة بدف


بناء أنظمة التداول الآلي.
الطبعة الأولى.
مع مقدمة في فيسوال C ++ 2005.
الوصول المؤسسي.
تأمين الخروج.
الشحن مجانا.
لا يوجد حد أدنى.
جدول المحتويات.
الفصل 1 مقدمة.
القسم الأول: مقدمة في فيسوال C ++ 2005.
الفصل 2 الإطار.
الفصل 3 تتبع المراجع.
الفصل 4 فئات والكائنات.
الفصل 5 أنواع المرجع.
الفصل 6 أنواع القيمة.
الفصل السابع الكائنات غير المدارة.
الفصل 8 التركيب.
الفصل 9 خصائص.
الفصل 10 الهياكل والعددات.
الفصل 11 الميراث.
الفصل 12 تحويل والصب.
الفصل 13 المشغل الزائد.
الفصل 14 المندوبون والأحداث.
الفصل 15 صفائف.
الفصل 16 توليد أرقام عشوائية.
الفصل 17 الوقت والموقتات.
الفصل 18 المدخلات والمخرجات تيارات.
الفصل 19 التعامل مع الاستثناءات.
الفصل 20 مجموعات.
الفصل 21 المحكمة الخاصة بلبنان / المحكمة الخاصة بلبنان.
الفصل 22 داتاسيتس.
الفصل 23 الاتصال بقواعد البيانات.
الفصل 24 لغة الاستعلام المنظمة.
الفصل 26 بروتوكول تبادل المعلومات المالية.
الفصل 27 التسلسل.
الفصل 28 خدمات ويندوز.
الفصل 29 إعداد وتركيب الحزم.
القسم الثاني: التزامن.
باب 30 خيوط.
الفصل 31 فئات التزامن.
الفصل 32 مقابس.
القسم الثالث: قابلية التشغيل البيني والتوصيلية.
الفصل 33 المارشالينج.
الفصل 34 مؤشرات الداخلية والرص.
الفصل 35 التوصيل إلى دلز المدارة.
الفصل 36 ربط دلز كائن كومبونينيت نموذج (كوم) مع كوم إنتيروب.
الفصل 37 ربط ل C ++ دلز مع خدمات الدعوة منصة.
الفصل 38 التوصيل إلى إكسيل.
الفصل 39 الاتصال ب تراديرابي.
الفصل 40 التوصيل ب XTAPIConnection_Example.
القسم الرابع: أنظمة التداول الآلي.
الفصل 41 بناء أنظمة التداول.
الفصل 42 ك "V منهجية تطوير نظام التداول.
الفصل 43 فئات نظام التداول الآلي.
الفصل 44 واحد مترابطة، نظام التحليل الفني.
باب 45 المنتج / المستهلك تصميم نمط.
الفصل 46 نظام الإحتكاك الإحصائي المتعدد.
وصف.
وعلى مدى السنوات القليلة القادمة، سوف تهاجر الصناعات المملوكة للتجارة والصناديق التحوطية إلى حد كبير إلى اختيار التجارة الآلي ونظم التنفيذ. والواقع أن هذا يحدث بالفعل. في حين أن العديد من الكتب المالية توفر C ++ رمز للمشتقات التسعير وأداء الحسابات العددية، لا شيء نهج الموضوع من منظور تصميم النظام. وسيتم تقسيم هذا الكتاب إلى قسمين - تقنيات البرمجة ونظام التداول الآلي (أتس) التكنولوجيا، وتعليم تصميم النظام المالي والتنمية من الأرض المطلقة باستخدام مايكروسوفت فيسوال C ++ 2005. تم اختيار مس فيسوال C ++ 2005 كلغة التنفيذ في المقام الأول لأن معظم الشركات التجارية والبنوك الكبيرة قد وضعت ومواصلة تطوير خوارزميات الملكية في إسو C ++ و فيسوال C ++ يوفر أكبر قدر من المرونة لدمج هذه الخوارزميات القديمة في أنظمة العمل. وعلاوة على ذلك، يوفر الإطار والبيئة الإنمائية أفضل المكتبات والأدوات اللازمة للتطوير السريع للنظم التجارية. القسم الأول من الكتاب يفسر فيسوال C ++ 2005 بالتفصيل ويركز على المعرفة البرمجة المطلوبة لتطوير نظام التداول الآلي، بما في ذلك تصميم المنحى الكائن والمندوبين والأحداث والعدود وتوليد رقم عشوائي وتوقيت وكائنات الموقت، وإدارة البيانات مع المحكمة الخاصة بلبنان والمجموعات. وعلاوة على ذلك، بما أن معظم التعليمات البرمجية ورموز النمذجة القديمة في الأسواق المالية تتم في إسو C ++، فإن هذا الكتاب يبحث بعمق في العديد من الموضوعات المتقدمة المتعلقة بإدارة الذاكرة المدارة / غير المدارة / كوم وقابلية التشغيل البيني. وعلاوة على ذلك، يقدم هذا الكتاب العشرات من الأمثلة التي توضح استخدام اتصال قاعدة البيانات مع أدو ومعالجة واسعة من سكل و فيكس و شمل / فيكسمل. تتم مناقشة موضوعات البرمجة المتقدمة مثل خيوط، ومآخذ، وكذلك استخدام C ++ للاتصال إكسيل أيضا في الطول وتدعمها الأمثلة. القسم الثاني من الكتاب يشرح المخاوف التكنولوجية ومفاهيم التصميم لأنظمة التداول الآلي. على وجه التحديد، يتم تخصيص فصول للتعامل مع تغذية البيانات في الوقت الحقيقي، وإدارة أوامر في كتاب ترتيب الصرف، واختيار الموقف، وإدارة المخاطر. يتم تضمين. dll في الكتاب الذي سيحاكي الاتصال إلى صناعة أبي المستخدمة على نطاق واسع (تقنيات التداول، وشركة زتابي) وتوفير طرق لاختبار الموقف وإدارة خوارزميات النظام. يتم تقديم أنماط التصميم لأنظمة أخذ السوق على أساس التحليل الفني وكذلك لأنظمة صنع السوق باستخدام فروقات إنتيرماركيت. كما تدور جميع الفصول حول برمجة الكمبيوتر للهندسة المالية وتطوير نظام التداول، وهذا الكتاب تثقيف التجار والمهندسين الماليين والمحللين الكمي والطلاب من التمويل الكمي وحتى المبرمجين ذوي الخبرة على القضايا التكنولوجية التي تدور حول تطوير التطبيقات المالية في مايكروسوفت والبيئة، وبناء وتنفيذ أنظمة التداول في الوقت الحقيقي والأدوات.
دلائل الميزات.
يعلم تصميم النظام المالي والتنمية من الألف إلى الياء باستخدام ميكروسوفت فيسوال C ++ 2005.
يقدم العشرات من الأمثلة التي توضح نهج البرمجة في الكتاب.
القراء.
الجمهور الأساسي: المهندسين الماليين، والمحللين الكميين، والمبرمجين في الشركات التجارية؛ طلاب الدراسات العليا في الهندسة المالية والأسواق المالية الدورات والبرامج.
الاستعراضات.
"بناء أنظمة التداول الآلي هو يجب أن تقرأ لأي شخص تطوير أنظمة التداول الخوارزمية المهنية، ويجلب كل جوانب التصميم والوظائف وتطبيق نظام في الوقت الحقيقي إلى تركيز واضح خطوة بخطوة. هذا الكتاب سيكون الدليل المرجعي الاختيار الأول ل مبرمج محترف خطير في تطوير نظام التداول ". - راسل ووجسيك، عضو مجلس إدارة شركة سم و كبوت، رئيس مركز إستراتيجية التداول، معهد إلينوي للتكنولوجيا "هذا الكتاب هو التمهيدي الممتاز لأي شخص مهتم في تطوير تطبيقات التداول الآلي أو شبه الآلي، ويغطي بن المعرفة البرمجة اللازمة لتطوير ناجحة يجب أن يكون للتجار الدخول في البرمجة والمبرمجين الدخول في التداول، وسوف تكون أيضا مرجعا مفيدا لتطوير أدوات التداول أكثر تطورا ". - ساجي P. مينتز، نائب الرئيس، تقنيات التداول، وشركة
التقييمات والمراجعات.
عن المؤلفين.
بنيامين فان فليت المؤلف.
بن فان فليت محاضر في معهد إلينوي للتكنولوجيا (إيت)، حيث يشغل أيضا منصب المدير المساعد ل M. S. برنامج الأسواق المالية. في إيت أنه يعلم دورات في التمويل الكمي، C ++ والبرمجة، ونظام الآلي تصميم نظام التداول والتنمية. وهو نائب رئيس معهد تكنولوجيا السوق، حيث يرأس المجلس الاستشاري لبرنامج مطور نظام التداول المعتمد (كتسد). كما أنه يعمل كمحرر سلسلة من سلسلة الأسواق المالية تكنولوجيا ل إلسفير / أكاديميك برس ويتشاور بشكل مكثف في صناعة الأسواق المالية.
السيد فان فليت هو أيضا مؤلف "نمذجة الأسواق المالية" مع روبرت هندري (2003، ماكجرو هيل) و "بناء أنظمة التداول الآلي" (2007، الصحافة الأكاديمية، بالإضافة إلى أنه نشر عدة مقالات في مجالات المالية والتكنولوجيا ، وقدم بحثه في العديد من المؤتمرات الأكاديمية والمهنية.
الانتماءات والخبرة.
محاضر في والمدير المشارك لبرنامج الماجستير في الأسواق المالية، مدرسة ستيوارت للأعمال، معهد إلينوي للتكنولوجيا، الولايات المتحدة الأمريكية.
طلب اقتباس.
إعفاء ضريبي.
المنتجات & أمب؛ حلول حلول البحث والتطوير الحلول السريرية منصات البحوث الاستخبارات البحثية خدمات التعليم المؤلفون المحررون المراجعون أمناء المكتبات & أمب؛ اكتشاف الكتب والمجلات الكاتب ويبشوب عن إلزيفير من نحن إلسيفير كونيكت وظائف كيف يمكننا أن نساعد؟ مركز الدعم.
كيف يمكن أن نساعد؟
كيف يمكن أن نساعد؟
كوبيرايت & كوبي؛ 2018 إلزيفير، باستثناء محتوى معين المقدمة من قبل طرف ثالث.
يتم استخدام ملفات تعريف الارتباط بواسطة هذا الموقع. لرفض أو معرفة المزيد، انتقل إلى صفحة ملفات تعريف الارتباط.
مسح الزوار إلزيفير.
نحن نبحث دائما عن طرق لتحسين تجربة العملاء على إلزيفير.
نود أن نطلب منك لحظة من وقتك لملء استبيان قصير، في نهاية زيارتك.

نظام التداول الخوارزمي: التصميم والتطبيقات.
فنغ وانغ كيرين دونغ زياوتي دينغ الكاتب البريد الإلكتروني.
تقدم هذه الورقة لمحة عامة عن البحث والتطوير في التداول الخوارزمي وتناقش القضايا الرئيسية التي تنطوي عليها الجهود الحالية لتحسينها، والتي من شأنها أن تكون ذات قيمة كبيرة للتجار والمستثمرين. يتم إدخال بعض الأنظمة الحالية للتجارة الخوارزمية، جنبا إلى جنب مع بعض الرسوم التوضيحية من وظائفها. ثم نقدم منصة اسمه فيسيم ونناقش تصميمها العام وكذلك بعض النتائج التجريبية في مقارنات استراتيجية المستخدم.
معاينة.
المراجع.
معلومات حقوق التأليف والنشر.
المؤلفين والانتماءات.
فنغ وانغ 1 كيرين دونغ 2 زياوتي دنغ 2 كاتب البريد الإلكتروني 1. مختبر مفتاح الدولة للهندسة البرمجيات جامعة ووهان ووهان الصين 2. قسم علوم الحاسب جامعة مدينة هونغ كونغ كولون، هونغ كونغ الصين.
حول هذه المقالة.
توصيات شخصية.
اقتباس المقال.
المراجع المرجعية ريس ريفوركس زوتيرو.
.BIB بيبتكس جابريف منديلي.
الوصول غير المحدود إلى المقال الكامل التحميل الفوري تشمل ضريبة المبيعات المحلية إن وجدت.
اقتباس المقال.
المراجع المرجعية ريس ريفوركس زوتيرو.
.BIB بيبتكس جابريف منديلي.
أكثر من 10 مليون وثيقة علمية في متناول يدك.
تبديل الطبعة.
&نسخ؛ 2017 سبرينجر الدولية للنشر أغ. جزء من الطبيعة سبرينجر.

تجارة الأسهم المهنية: تصميم النظام والأتمتة من قبل مارك R. كونواي.
تحميل المهنية تجارة الأسهم: تصميم النظام والأتمتة يبوك التي كتبها مارك R. كونواي.
النوع: بدف، إبوب، زيب، تكست.
الناشر: أسم ترادر ​​ليك.
صدر: يوليو 2002.
تحميل المرايا.
وصف.
وسأطرح هذا السؤال عدة مرات خلال الأسبوع أو الأسبوعين القادمين من أجل الحصول على مقطع عرضي جيد حقا. أنا تخصصت على المزمار ولم يكن أبدا قضية الدخول في مدرسة الموسيقى أو على الاختبارات، فقط لأن الكرات الغريبة فقط لا وجود لها أكثر من ذلك. & # 8211؛ ألبا آن؛ ألبا هو بعد فتاة صغيرة رأيت في الفيلم الذي وقعت في الحب مع. & # 8221؛ أو أي هجوم المياه. ليس لدي خبرة في هذا المجال على الإطلاق، أنا مجرد رجل لديه وظيفة في أنا لا أستطيع أن أقول لدي كتاب المفضلة. كنت تتحدث عن مراهق أمريكي يبلغ من العمر 14 عاما المهنية تجارة الأسهم: تصميم النظام والأتمتة نمت كامل المهنية تجارة الأسهم: تصميم النظام والأتمتة تصلب والخبرة البالغين. الأشخاص الطيبين الذين يتم حفظ المؤمنين في يسوع المسيح الذهاب إلى السماء. ولكن هل أحصل على المساعدة. ويطلق على الإلكترونات المحاصرين كما مراكز F أو مراكز الألوان لأنها مسؤولة عن إعطاء اللون إلى الكريستال. باند يساعد فقط وقوع الحوادث. إنها منظمة عظيمة. هناك في الواقع غودرادز. سوف أعطي أفضل إجابة عن السؤال الأكثر فائدة. وأنها ليست عفو عن غير شرعيين.
الكتاب الاليكتروني الكلمات:
المهنية تجارة الأسهم: تصميم النظام والأتمتة بدف تحميل المهنية تداول الأسهم: تصميم النظام وأتمتة كتاب 978-0971853645 إبوب تجارة الأسهم المهنية: تصميم النظام والأتمتة إبوب 978-0971853645 تحميل إيسبن تحميل المهنية تجارة الأسهم: تصميم النظام والأتمتة ل إبوب الحرة 0971853649 تحميل الأسهم أتمتة تصميم نظام المهنية والتجارة: بدف مجانا بدف 978-0971853645 0971853649 بدف مارك R. كونواي كتب تحميل إيسبن 0971853649 نظام والتجارة: أتمتة أتمتة تصميم الأسهم قراءة على الانترنت.
) أفريج سعر الجملة لمدة 2 أو 4 باب 1998 بونتياك الجائزة الكبرى غتب هو فقط تحت 4000 دولار أمريكي وفقا للكتاب الأسود و مانهيم تقرير إم ستعمل يجب أن تذهب مع غوبلو. يمكن أن تساعد ابنتك مع الواجبات المنزلية، وأيضا أن تكون مثل & # 8220؛ أخت كبيرة. وأعتقد أن فولدمورت اختار الإرث التي تنتمي إلى المؤسسين الأربعة من هوجورتس لإنشاء هوركروكسيس له لأنه كان مكانة هامة بالنسبة له شخصيا. تجارة الأسهم المهنية: تصميم النظام والأتمتة وحدها يدعي أنه يمكنك دفع له لمعرفة كيفية أن تصبح نبيا. هذا الكوكب هو أقرب شيء إلى الجحيم وأعتقد أنه كان تكتيكا خائفا التي تم تنفيذها للسيطرة على حياة الناس. الخضروات المفضلة القرنبيط 12.
الكتب الإلكترونية المشابهة:
تحميل التصميم التعاوني في البيئات الافتراضية (الأنظمة الذكية، التحكم والأتمتة: العلوم والهندسة) يبوك بي زيانغيو وانغ.
النوع: بدف، إبوب، زيب، تكست الناشر: سبرينجر صدر: 24 فبراير 2018 عدد العدسات: 220 اللغة: إنجليشسبن-10: 9400735146ISBN-13: 978-9400735149.
رابط التحميل: التصميم التعاوني في البيئات الافتراضية (الأنظمة الذكية، التحكم والأتمتة: العلوم والهندسة)
مرآة 1Mirror 2.
تحميل إيك / تر 62018-3 إد. 1.0 إن: 2002، إليكترونيك ديسين أوتوماتيون ليبراريز & # 8211؛ الجزء 3: نماذج من الدوائر المتكاملة ل إيمي المحاكاة السلوكية الكتاب الاليكتروني من قبل إيك تك / سك 93.
النوع: بدف، إبوب، زيب، تكست الناشر: مولتيبل. الموزعة من خلال المعايير الوطنية الأمريكية إنستيريرد: 19 أغسطس 2007 عدد الصفحات: 24 اللغة: الإنجليزية.
تحميل ماي ترادينغ جورنال: المصنف الخاص بك لتتبع وإدارة الأوراق المالية الخاصة بك الصفقات يبوك التي كتبها ساشا إفداكوف.
نوع: بدف، إبوب، الرمز البريدي، تكست الناشر: كريتسباس منصة النشر المستقلةأصدر: أغسطس 15، 2018Page كونت: 212 اللغة: إنجليشسبن-10: 1492175730ISBN-13: 978-1492175735.
رابط التحميل: ماي ​​ترادينغ جورنال: المصنف الخاص بك لتتبع وإدارة الصفقات الأسهم الخاصة بك.
مرآة 1Mirror 2.
تحميل مساحات التداول: اللون! يبوك من قبل بريان كرامر.
نوع: بدف، إبوب، الرمز البريدي، تكست الناشر: تلكريليسد: 19 أغسطس 2003 عدد الصفحات: 176 اللغة: إنجليش-10: 0696217260ISBN-13: 978-0696217265.
رابط التحميل: مساحات التداول: اللون!
مرآة 1Mirror 2.
تحميل إسو 10303-517: 2000، أنظمة الأتمتة الصناعية والتكامل & # 8211؛ تمثيل بيانات المنتج وتبادله & # 8211؛ الجزء 517: تطبيق تفسير البناء: الميكانيكية تصميم هندسي يبوك العرض بواسطة إسو تك 184 / سك 4.
النوع: بدف، إبوب، زيب، تكست الناشر: مولتيبل. موزعة من خلال المعايير الوطنية الأمريكية إنستيريرد: 23 أغسطس 2007 عدد الصفحات: 54 اللغة: الإنجليزية.
رابط التحميل: إسو 10303-517: 2000، أنظمة الأتمتة الصناعية.

صعود نهاية العالم البرمجيات.
وهناك مجموعة صغيرة من المبرمجين يريدون تغيير الكيفية التي نحددها قبل وقوع كارثة.
الأكثر شعبية.
إهانة عزيز الأنصاري.
كيتلين فلاناغان 14 يناير، 2018.
عزيز الأنصاري ومفارقة "لا"
ميغان جاربر جان 16، 2018.
هل هذا بداية نهاية فقاعة بيتكوين؟
ديريك تومبسون 16 يناير 2018.
ترامب يكتشف تكاليف تقويض الحقيقة.
ديفيد أ. جراهام 16 يناير، 2018.
يمكن للرئيس رسم ساعة.
جيمس هامبلين جان 16، 2018.
جيمس سومرز 26 سبتمبر، 2017 تقنية شير تويت & # x2026.
T هنا كانت ست ساعات خلال ليلة 10 أبريل 2018، عندما كان جميع سكان ولاية واشنطن لا يوجد لديه 911 خدمة. الناس الذين دعوا للمساعدة حصلت على إشارة مشغول. امرأة واحدة سياتل طلب 911 على الأقل 37 مرة بينما كان شخص غريب يحاول اقتحام منزلها. عندما زحف أخيرا في غرفة المعيشة من خلال نافذة، وقالت انها التقطت سكين المطبخ. فر الرجل.
و 911 انقطاع، في ذلك الوقت أكبر من أي وقت مضى ذكرت، تم تتبعها إلى البرمجيات التي تعمل على ملقم في إنغلوود، كولورادو. يعمل الخادم من قبل مزود أنظمة يدعى إنترادو، وأبقى الخادم عدادا جاريا لعدد المكالمات التي وجهها إلى 911 مرسل في جميع أنحاء البلاد. وقد وضع المبرمجون إنترادو عتبة لكيفية ارتفاع العداد يمكن أن تذهب. اختاروا عددا بالملايين.
قبل منتصف الليل بقليل من 10 أبريل، تجاوز العداد هذا الرقم، مما أدى إلى الفوضى. لأن العداد كان يستخدم لتوليد معرف فريد لكل مكالمة، تم رفض مكالمات جديدة. ولأن المبرمجين لم يتوقعوا المشكلة، فإنهم لم يخلقوا الإنذارات لاسترعاء الانتباه إليها. لا أحد يعرف ما يحدث. وركزت مراكز الإرسال في واشنطن وكاليفورنيا وفلوريدا وكارولينا ومينيسوتا، التي تخدم 11 مليون أمريكي، على فهم التقارير بأن المتصلين كانوا يحصلون على إشارات مزدحمة. استغرق الأمر حتى الصباح أن ندرك أن برنامج إنترادو في إنغلوود كان مسؤولا، وأن الإصلاح كان لتغيير رقم واحد.
منذ وقت ليس ببعيد، تم التعامل مع مكالمات الطوارئ محليا. وكانت حالات الانقطاع صغيرة وسهلة التشخيص والثابتة. صعود الهواتف المحمولة ووعد قدرات جديدة - ماذا لو كنت يمكن أن نص 911؟ أو إرسال أشرطة الفيديو إلى المرسل؟ - drove تطوير نظام أكثر تعقيدا التي تعتمد على شبكة الإنترنت. لأول مرة، يمكن أن يكون هناك شيء من هذا القبيل 911 انقطاع الوطني. وهناك الآن أربع سنوات في سنوات عديدة.
وقد قيل أن البرنامج هو "أكل العالم". المزيد والمزيد، والنظم الحرجة التي كانت تسيطر مرة واحدة ميكانيكيا، أو من قبل الناس، وتأتي إلى الاعتماد على التعليمات البرمجية. وربما لم يكن ذلك أكثر وضوحا مما كان عليه في صيف عام 2018، عندما قامت شركة الخطوط الجوية المتحدة في يوم واحد بتشييد أسطولها بسبب مشكلة في نظام إدارة رحيلها؛ تم تعليق التداول في بورصة نيويورك بعد الترقية؛ تحطمت الصفحة الأولى من موقع صحيفة وول ستريت جورنال؛ و 911 نظام سياتل ذهب مرة أخرى، وهذه المرة لأن فشل جهاز التوجيه مختلفة. فشل في وقت واحد من هذا العدد الكبير من أنظمة البرمجيات رائحة في البداية من هجوم سيبراني منسق. والأكثر إثارة للخوف تقريبا هو تحقيق، في وقت متأخر من اليوم، أنه كان مجرد مصادفة.
يقول نانسي ليفسون، أستاذ الطيران والملاحة الفضائية في معهد ماساتشوستس للتكنولوجيا الذي يدرس سلامة البرمجيات منذ 35 عاما: "عندما كان لدينا أنظمة الكهروميكانيكية، كنا نستطيع أن نختبرها على نحو شامل". أصبحت معروفة عن تقريرها على ثيراك-25، وهو جهاز العلاج الإشعاعي الذي أسفر عن مقتل ستة مرضى بسبب خطأ في البرمجيات. "كنا نستطيع أن نفكر في كل الأشياء التي يمكن أن نفعلها، كل الدول التي يمكن أن ندخل فيها." التعشيق الكهروميكانيكية التي تسيطر على حركات القطار في معابر السكك الحديدية، على سبيل المثال، لديها فقط الكثير من التشكيلات. يمكن أن تصف بعض الأوراق ورقة النظام بأكمله، ويمكنك تشغيل القطارات المادية ضد كل تكوين لنرى كيف سيكون سلوكه. مرة واحدة كنت قد بنيت واختبارها، وكنت أعرف بالضبط ما كنت تتعامل معها.
يختلف البرنامج. فقط عن طريق تحرير النص في ملف في مكان ما، نفس قطعة من السيليكون يمكن أن تصبح الطيار الآلي أو نظام مراقبة المخزون. هذه المرونة هي معجزة البرمجيات، ولعنة لها. لأنه يمكن تغييرها بثمن بخس، يتم تغيير البرنامج باستمرار؛ ولأنه غير مرغوب فيه من أي شيء جسدي - وهو برنامج أكثر من ألف مرة تعقيدا من آخر يأخذ نفس المساحة الفعلية - فإنه يميل إلى النمو دون ملزمة. يقول ليفيسون في كتاب: "المشكلة هي أننا نحاول بناء أنظمة تتجاوز قدرتنا على إدارتها فكريا".
البرنامج بالضبط ما قيل للقيام به. والسبب الذي فشلت فيه هو أنه قيل لها أن تفعل الشيء الخطأ.
إن إطارنا المعياري للتفكير في الفشل الهندسي، الذي انعكس، على سبيل المثال، في اللوائح الخاصة بالأجهزة الطبية، تم تطويره بعد فترة وجيزة من الحرب العالمية الثانية، قبل ظهور البرمجيات، للنظم الكهروميكانيكية. وكانت الفكرة هي أن تجعل شيئا موثوقا به من خلال جعل أجزائه موثوق بها (على سبيل المثال، يمكنك بناء المحرك الخاص بك لتحمل 40،000 دورات الإقلاع والهبوط) وعن طريق التخطيط لانهيار تلك الأجزاء (لديك اثنين من المحركات). ولكن البرنامج لا كسر. عتبة إنترادو الخاطئة ليست مثل برشام الخاطئ الذي يؤدي إلى تحطم طائرة. البرنامج بالضبط ما قيل للقيام به. في الواقع انها فعلت ذلك تماما. والسبب الذي فشلت فيه هو أنه قيل لها أن تفعل الشيء الخطأ. فشل البرمجيات هو فشل الفهم، والخيال. وكان إنترادو في الواقع جهاز التوجيه النسخ الاحتياطي، والتي، كان قد تحولت تلقائيا، كان قد أعاد 911 خدمة على الفور تقريبا. ولكن، كما هو موضح في تقرير إلى لجنة الاتصالات الفيدرالية، "حدث الوضع عند نقطة في منطق التطبيق الذي لم يكن مصمما لأداء أي إجراءات تصحيحية تلقائية".
هذه هي المشكلة مع جعل الأشياء من التعليمات البرمجية، بدلا من شيء مادي. "التعقيد"، كما يضعه ليفيسون، "غير مرئي للعين".
يحاول أن يحاول الآن تغيير كيفية جعل البرنامج يبدو أن تبدأ مع نفس الفرضية: كود من الصعب جدا أن نفكر. قبل محاولة فهم المحاولات نفسها، ثم، فإنه يستحق فهم لماذا قد يكون هذا: ما هو عن التعليمات البرمجية التي تجعل من ذلك الأجنبي للعقل، وذلك على عكس أي شيء الذي جاء قبل ذلك.
التقدم التكنولوجي المستخدم لتغيير طريقة نظر العالم - هل يمكن مشاهدة الطرق الحصول على معبدة؛ هل يمكن أن نرى ارتفاع المنحدرات. اليوم يمكنك بالكاد أن تقول عندما شيء هو مجدد، لأنه في كثير من الأحيان يتم إعادة ترميمها من قبل التعليمات البرمجية. عند الضغط على قدمك إلى أسفل على مسرع سيارتك، على سبيل المثال، كنت لم تعد السيطرة على أي شيء مباشرة؛ ليس هناك وصلة ميكانيكية من دواسة لخنق. بدلا من ذلك، كنت إصدار أمر إلى قطعة من البرمجيات التي تقرر كم الهواء لإعطاء المحرك. السيارة هي جهاز كمبيوتر يمكنك الجلوس داخل. قد تكون عجلة القيادة والدواسات كذلك مفاتيح لوحة المفاتيح.
قصص ذات الصلة.
مثل أي شيء آخر، وقد تم حوسبة السيارة لتمكين الميزات الجديدة. عندما يكون البرنامج مسؤولا عن خنق الفرامل، فإنه يمكن إبطاء لكم عندما كنت قريبة جدا من سيارة أخرى، أو بالتحديد التحكم في حقن الوقود لمساعدتك على توفير على الغاز. عندما تسيطر على القيادة، فإنه يمكن أن تبقي لكم في حارة الخاص بك كما يمكنك البدء في الانجراف، أو إرشادك إلى مكان لوقوف السيارات. تعذر إنشاء هذه الميزات بدون شفرة. إذا حاولت، سيارة قد تزن 40،000 جنيه، كتلة غير المنقولة من العمل على مدار الساعة.
وقد مكنتنا البرمجيات لجعل الآلات الأكثر تعقيدا التي كانت موجودة من أي وقت مضى. ومع ذلك لم نلاحظ بالكاد، لأن كل هذا التعقيد معبأة في رقائق السيليكون الصغيرة والملايين والملايين من خطوط التعليمات البرمجية. ولكن فقط لأننا لا نستطيع أن نرى تعقيد لا يعني أنه قد ذهب بعيدا.
كتب مبرمج، عالم الكمبيوتر الهولندي الشهير إدسجر ديجسترا في عام 1988، "يجب أن يكون قادرا على التفكير من حيث الهرمية المفاهيمية التي هي أعمق بكثير من عقل واحد من أي وقت مضى بحاجة إلى مواجهة من قبل." ديكسترا يعني هذا بمثابة تحذير. كما سكب المبرمجون بفارغ الصبر البرمجيات في النظم الحرجة، وأصبحوا، أكثر وأكثر، لينشبينز من العالم بنيت و ديجكسترا يعتقدون أنها ربما بالغت في تقدير أنفسهم.
"مهندسو البرمجيات لا يفهمون المشكلة التي يحاولون حلها ولا يهتمون بها".
ما جعل البرمجة صعبة للغاية أنه كان يتطلب منك التفكير مثل جهاز كمبيوتر. كان غرابة منه في بعض المعنى أكثر وضوحا في الأيام الأولى من الحوسبة، عندما اتخذ رمز شكل الحرفية والأصفار. أي شخص يبحث على كتف مبرمج كما أنها بوريد على خط بعد خط مثل "100001010011" و "000010011110" قد رأيت كيف الغريب المبرمج كان من المشاكل الفعلية التي كانوا يحاولون حلها؛ كان من المستحيل معرفة ما إذا كانوا يحاولون حساب مسارات المدفعية أو محاكاة لعبة تيك تاك تو. إدخال لغات البرمجة مثل فورتران و C، التي تشبه اللغة الإنجليزية، والأدوات، والمعروفة باسم "بيئات التنمية المتكاملة"، أو إيدس، التي تساعد على تصحيح الأخطاء البسيطة (مثل المدقق النحوي ميكروسوفت ورد ولكن لرمز)، حجب، على الرغم من أن القليل لم في الواقع التغيير، وهذا الاغتراب الأساسي - حقيقة أن مبرمج لم يعمل على مشكلة مباشرة، وإنما قضى أيامهم كتابة تعليمات للآلة.
يقول ليفيسون، خبير السلامة في برمجيات معهد ماساتشوستس للتكنولوجيا: "المشكلة هي أن مهندسي البرمجيات لا يفهمون المشكلة التي يحاولون حلها ولا يهتمون بها. والسبب هو أنها ملفوفة جدا في الحصول على التعليمات البرمجية للعمل. يقول: "مهندسو البرمجيات يرغبون في تقديم جميع أنواع الأدوات والأشياء من أجل أخطاء الترميز"، في إشارة إلى إيدس. "إن المشاكل الخطيرة التي حدثت مع البرمجيات تتعلق بالمتطلبات، وليس أخطاء الترميز". عندما تقوم بكتابة رمز يتحكم في خنق السيارة، على سبيل المثال، ما هو مهم هو القواعد حول متى وكيف وكم عن طريق فتح ذلك. ولكن هذه الأنظمة أصبحت معقدة جدا بحيث لا يستطيع أحد أن يبقيه مستقيما في رأسه. يقول ليفيسون: "هناك 100 مليون سطر من السيارات في السيارات الآن. "أنت فقط لا يمكن أن نتوقع كل هذه الأمور."
في سبتمبر 2007، كان جان بوكوت يقود السيارة على الطريق السريع مع أفضل صديق لها في سيارة تويوتا كامري عندما بدا مسرع أن تتعثر. عندما أخذت قدمها قبالة دواسة، السيارة لم تبطئ. حاولت الفرامل ولكن يبدو أنها فقدت قوتها. كما أنها انتقلت نحو منحدر تسير 50 ​​ميلا في الساعة، وقالت انها سحبت الفرامل في حالات الطوارئ. تركت السيارة علامة انزلاق 150 قدما قبل أن تصل إلى جسر على جانب الطريق. وقد قتل الراكب. استيقظت بوكوت في المستشفى بعد شهر.
كان الحادث واحدا من بين العديدين فى تحقيق استمر عشر سنوات تقريبا فى ادعاءات ما يسمى بالتسارع غير المقصود فى سيارات تويوتا. وقد ألقت تويوتا باللوم على الحوادث على أرضيات سيئة التصميم، ودواسات "لزجة"، وخطأ السائق، ولكن الغرباء يشتبه في أن البرامج الخاطئة قد تكون مسؤولة. استضافت إدارة السلامة المرورية على الطرق السريعة الوطنية خبراء البرمجيات من ناسا لإجراء مراجعة مكثفة لرمز تويوتا. وبعد ما يقرب من 10 أشهر، لم يجد فريق ناسا دليلا على أن البرمجيات كانت السبب - ولكنهم قالوا إنهم لم يتمكنوا من إثبات ذلك.
كان أثناء التقاضي من حادث بوكوت أن شخصا ما وجدت أخيرا اتصال مقنع. مايكل بار، وهو شاهد خبير للمدعي، وكان فريق من خبراء البرمجيات قضاء 18 شهرا مع رمز تويوتا، والتقاط حيث توقفت وكالة ناسا. وصف بار ما وجدوه "رمز السباغيتي،" مبرمج لغة للبرمجيات التي أصبحت فوضى متشابكة. رمز يتحول إلى السباغيتي عندما يتراكم على مدى سنوات عديدة، مع ميزة بعد ميزة تتراكم على رأس، ويجري المنسوجة حولها، ما هو موجود بالفعل؛ في نهاية المطاف يصبح من المستحيل اتباع التعليمات البرمجية، ناهيك عن اختبار شامل للعيوب.
"إذا كان من المفترض أن البرنامج الأعطال ونفس البرنامج الذي تحطمت لإنقاذ اليوم، فإنه لا يمكن".
وباستخدام نفس طراز كامري الذي شارك في الحادث، أظهر فريق بار أن هناك أكثر من 10 ملايين طريقة لمهام رئيسية على الكمبيوتر على متن الطائرة للفشل، مما قد يؤدي إلى تسارع غير مقصود. * وأظهرت أن القليل من الوجه قليلا - واحد في ذاكرة الكمبيوتر تصبح الصفر أو العكس بالعكس - يمكن أن تجعل السيارة خارج نطاق السيطرة. لم يكن الكود المأمون الذي وضعته تويوتا في مكانه كافيا لوقفه. يقول بار: "لديك برنامج يشاهد البرنامج". "إذا أعطل البرنامج ونفس البرنامج أو نفس التطبيق الذي تحطمت من المفترض أن ينقذ اليوم، فإنه لا يمكن انقاذ اليوم لأنه لا يعمل."
قدمت شهادة بار القضية للمدعي، مما أدى إلى 3 ملايين دولار في الأضرار ل بوكوت وعائلة صديقها. وفقا لصحيفة نيويورك تايمز، كانت هذه هي أول حالات عديدة مماثلة ضد تويوتا لجلب مشاكل المحاكمة مع نظام التحكم الخانق الإلكتروني، وهي المرة الأولى التي تم العثور على تويوتا مسؤولة من قبل هيئة محلفين لحادث ينطوي على تسارع غير مقصود. وقرر الطرفان تسوية القضية قبل منح تعويضات عقابية. وبشكل عام، استذكرت تويوتا أكثر من 9 ملايين سيارة، ودفعت ما يقرب من 3 مليارات دولار في المستوطنات والغرامات المتعلقة بالتسارع غير المقصود.
تي هنا سيكون أكثر أيام سيئة للبرمجيات. من المهم أن نحسن من تحقيق ذلك، لأننا إذا لم نفعل ذلك، كما أن البرمجيات تصبح أكثر تطورا ومتصلة - حيث أنها تسيطر على وظائف أكثر أهمية - تلك الأيام يمكن أن تزداد سوءا.
المشكلة هي أن المبرمجين لديهم صعوبة في مواكبة الإبداعات الخاصة بهم. ومنذ الثمانينيات، تغيرت طريقة عمل المبرمجين والأدوات التي يستخدمونها بشكل ملحوظ. هناك جوقة صغيرة ولكنها متنامية تخشى الوضع الراهن غير مستدام. يقول كريس غرانجر، مطور برمجيات، الذي عمل كرائد في شركة ميكروسوفت على فيسوال ستوديو، وهو برنامج إيد يكلف 1،199 دولار في السنة، ويستخدم من قبل ما يقرب من 1،199 دولار سنويا "حتى المبرمجين الجيدين جدا يكافحون من أجل فهم الأنظمة التي يعملون معهم" ثلث جميع المبرمجين المحترفين. وقال لي أنه في حين كان في مايكروسوفت، وقال انه رتب دراسة نهاية إلى نهاية من فيسوال ستوديو، الوحيد الذي تم القيام به من أي وقت مضى. لمدة شهر ونصف، شاهد وراء مرآة في اتجاه واحد كما كتب الناس رمز. "كيف يستخدمون الأدوات؟ كيف يفكرون؟ ". "كيف يجلسون على الكمبيوتر، هل تلمس الماوس، هل لا تلمس الماوس؟ كل هذه الأشياء التي لدينا عقيدة حول أننا لم تختبر فعلا تجريبيا ".
فاجأته النتائج. "فيسوال ستوديو هو واحد من أكبر قطعة واحدة من البرامج في العالم"، قال. "إنها أكثر من 55 مليون خط من التعليمات البرمجية. واحدة من الأشياء التي وجدت في هذه الدراسة أكثر من 98 في المئة منه هو غير ذي صلة تماما. وقد تم وضع كل هذا العمل في هذا الشيء، لكنه غاب عن المشاكل الأساسية التي يواجهها الناس. وكان أكبر واحد أن أخذت بعيدا عن ذلك هو أن الناس يلعبون أساسا الكمبيوتر داخل رؤوسهم ". وكان المبرمجين مثل لاعبي الشطرنج في محاولة للعب مع عصابة العينين على الكثير من الطاقة العقلية تنفق فقط محاولة لصورة حيث القطع هي أن هناك بالكاد أي ترك للتفكير في اللعبة نفسها.
وقد تضاعفت أجهزة الكمبيوتر في السلطة كل 18 شهرا على مدى السنوات الأربعين الماضية. لماذا لم تتغير البرمجة؟
وكان جون ريسيغ يلاحظ نفس الشيء بين طلابه. ريسيغ هو مبرمج يحتفل به من برامج جافا سكريبت كتب أكثر من نصف جميع المواقع، وقيادة التكنولوجيا في موقع التعليم الإلكتروني خان أكاديمي. وفي أوائل عام 2018، كان يعاني من مناهج علوم الحاسوب في الموقع. لماذا كان من الصعب جدا أن تعلم كيفية البرمجة؟ ويبدو أن المشكلة الأساسية هي أن هذا الرمز كان مجردا. لم يكن برنامج الكتابة مثل صنع جسر من العصي المصاصة، حيث يمكنك أن ترى العصي وتلمس الغراء. ل "جعل" برنامج، قمت بكتابة الكلمات. عندما كنت ترغب في تغيير سلوك البرنامج، سواء كان ذلك لعبة، أو موقع على شبكة الانترنت، أو محاكاة الفيزياء، ما تغيرت فعلا النص. لذلك كان الطلاب الذين فعلوا جيدا - في الواقع الوحيدين الذين نجوا على الإطلاق - أولئك الذين يمكن أن خطوة من خلال هذا النص تعليمات واحدة في وقت واحد في رأسهم، والتفكير في الطريقة التي الكمبيوتر، في محاولة لتتبع كل حساب وسيطة. ريسيغ، مثل غرانجر، بدأت تتساءل عما إذا كان يجب أن يكون بهذه الطريقة. وقد تضاعفت أجهزة الكمبيوتر في السلطة كل 18 شهرا على مدى السنوات الأربعين الماضية. لماذا لم تتغير البرمجة؟
في الوقت نفسه، لم يكن من قبيل الصدفة أن اثنين منهم كانوا يفكرون في نفس المشكلة بنفس المصطلحات. وقد رأينا كلاهما مجرد نفس الحديث الرائع، نظرا لمجموعة من طلاب هندسة البرمجيات في فندق مونتريال من قبل باحث في الكمبيوتر يدعى بريت فيكتور. ويبدو أن الحديث، الذي كان ساريا عندما تم نشره على الإنترنت في فبراير / شباط 2018، يقدم مطالبات جريئة. الأول هو أن الطريقة التي نجعل بها البرمجيات هو في الأساس كسر. والثاني هو أن فيكتور يعرف كيفية إصلاحه.
B ريت فيكتور لا يحب أن يكتب التعليمات البرمجية. يقول: "يبدو غريبا". "عندما أريد أن أفعل شيئا، وخصوصا عندما أريد أن خلق شيئا في البرمجيات، وهناك هذه الطبقة الأولية من الاشمئزاز التي يجب أن تدفع من خلال، حيث أنا لا التلاعب الشيء الذي أريد أن أجعل، أنا أكتب مجموعة من النصوص في محرر النصوص ".
"هناك قناعة قوية جدا بأن هذا هو الطريق الخطأ للقيام بالأشياء".
فيكتور لديه مين ديفيد فوستر والاس، مع الذكاء البرق الذي ينبض تحت باتينا من الخدع أوكس شاكس. يبلغ من العمر 40 عاما، مع آثار رمادية وحية رقيقة، غير متعمدة. صوته لطيف، نادرا تقريبا، لكنه يريد أن يشارك ما هو في رأسه، وعندما يحصل على لفة انه سوف يبدو لتخطي المقاطع، كما لو أنها تفوق آلاته الصوتية الخاصة.
على الرغم من انه يدير المختبر الذي يدرس مستقبل الحوسبة، وقال انه يبدو أقل اهتماما في التكنولوجيا في حد ذاتها مما كانت عليه في أذهان الناس الذين يستخدمونه. مثل أي صانع جيد، لديه طريقة للنظر إلى العالم الذي هو أجزاء متساوية التقنية والإنسانية. تخرج من فصوله في معهد كاليفورنيا للتكنولوجيا للهندسة الكهربائية، ثم استمر، بعد المدرسة العليا في جامعة كاليفورنيا، بيركلي، للعمل في الشركة التي تطور المزج الموسيقى. لقد كانت مشكلة تتطابق تماما مع شخصيته المزدوجة: فبإمكانه أن يقضي وقتا طويلا في التفكير في الطريقة التي يقوم بها الفنان بأداء الموسيقى باستخدام لوحة المفاتيح، حيث يصبح امتدادا لأيديهم، حيث يمكنه التفكير في الرياضيات في معالجة الإشارات الرقمية .
وبحلول الوقت الذي أعطى فيه الحديث الذي جعل اسمه، الذي رأى ريسيغ و غرانجر في أوائل عام 2018، فيكتور قد هبطت أخيرا على المبدأ الذي يبدو خيط من خلال كل من عمله. (كان يسمى في الواقع الحديث "اختراع على المبدأ"). وكان المبدأ هذا: "المبدعين في حاجة إلى اتصال فوري مع ما يخلقون." وكانت المشكلة مع البرمجة أنه ينتهك المبدأ. هذا هو السبب في أن أنظمة البرمجيات كان من الصعب جدا للتفكير، ومتشعبة جدا مع البق: مبرمج، يحدق في صفحة من النص، واستخرجت من كل ما كانت عليه في الواقع جعل.
"مفهومنا الحالي لما هو برنامج الكمبيوتر"، وقال "هو مشتق مباشرة من فورتران و ألغول في أواخر 50s. تم تصميم هذه اللغات لبطاقات اللكمة ". هذا الرمز يأخذ الآن شكل الحروف على شاشة بلغة مثل C أو جافا (مشتقات فورتران و ألغول)، بدلا من كومة من البطاقات مع الثقوب في ذلك، لا يجعل أي أقل ميتا، أي أقل مباشرة.
إلى فيكتور، فكرة أن الناس كانوا يحاولون فهم السرطان من خلال يحدق في محرر النص كان مروعا.
هناك تشبيه لمعالجة النصوص. كان من المفترض أن يكون كل ما يمكن أن ترى في برنامج لكتابة الوثائق هو النص نفسه، وتغيير تخطيط أو الخط أو الهوامش، كان لديك لكتابة "رموز التحكم" الخاصة أو الأوامر التي من شأنها أن تخبر الكمبيوتر أنه، ل على سبيل المثال، "يجب أن يكون هذا الجزء من النص بخط مائل". وكانت المشكلة هي أنك لم تتمكن من رؤية تأثير تلك الرموز حتى تقوم بطباعة المستند. كان من الصعب التنبؤ بما كنت تسير للحصول عليه. كان عليك أن تتخيل كيف كانت الرموز سوف تفسر من قبل الكمبيوتر، وهذا هو، كان لديك لتشغيل الكمبيوتر في رأسك.
ثم جاء ويسيويغ (وضوحا "ويززيويغ") على طول. وقفت ل "ما تراه هو ما تحصل عليه". عندما كنت علامة مرور كما كانت مائلة، الحروف يميل هناك حق على الشاشة. إذا كنت ترغب في تغيير الهامش، هل يمكن سحب حاكم في الجزء العلوي من الشاشة، ونرى تأثير هذا التغيير. وبالتالي جاءت الوثيقة ليشعر وكأنه شيء حقيقي، شيء يمكن أن كزة و برود في. فقط من خلال النظر هل يمكن أن أقول إذا كنت قد فعلت شيئا خاطئا. التحكم في نظام متطور - تخطيط المستند ومحرك التنسيق - أصبح متاحا لأي شخص يمكنه النقر على الصفحة.
كانت نقطة فيكتور أن البرمجة نفسها يجب أن تكون من هذا القبيل. بالنسبة له، كانت فكرة أن الناس يقومون بعمل مهم، مثل تصميم أنظمة التحكم في الرحلات البحرية التكيفية أو محاولة فهم السرطان، من خلال التحديق في محرر النصوص، كانت مروعة. وكان العمل المناسب للمبرمجين للتأكد من أنه في يوم من الأيام أنها لن تضطر إلى.
كانت هناك سابقة كافية تشير إلى أن هذه ليست فكرة مجنونة. فالفوتوشوب، على سبيل المثال، يضع خوارزميات معالجة الصور القوية في أيدي الأشخاص الذين قد لا يعرفون حتى ما هي الخوارزمية. انها قطعة معقدة من البرمجيات، ولكن معقدة في طريقة موالفة جيدة معقدة، مع المقابض والأزرار والمتزلجون أن المستخدم يتعلم للعب مثل أداة. سكوارزباس، وهي الشركة التي قد تكون معروفة على نطاق واسع للإعلانات بقوة على البودكاست، يجعل أداة تمكن المستخدمين من بناء المواقع عن طريق الإشارة والنقر، بدلا من كتابة التعليمات البرمجية في هتمل و كس. أنها قوية بما فيه الكفاية للقيام بالعمل الذي كان يمكن القيام به مرة واحدة من قبل مصمم ويب المهنية.
ولكن تلك كانت مجرد حفنة من الأمثلة. كان الواقع الساحق هو أنه عندما يريد شخص ما أن يفعل شيئا مثيرا للاهتمام مع جهاز كمبيوتر، كان لديهم لكتابة التعليمات البرمجية. فيكتور، الذي هو شيء مثالي، رأى هذا ليس بقدر فرصة ولكن كخطأ أخلاقي للمبرمجين بشكل عام. وكان حديثه دعوة إلى السلاح.
في قلب ذلك كان سلسلة من العروض التوضيحية التي حاولت أن تظهر كيف بدائية الأدوات المتاحة كانت لمختلف المشاكل - تصميم الدوائر، والرسوم المتحركة الكمبيوتر، خوارزميات التصحيح، وما أفضل منها قد تبدو. وكانت عروضه افتراضية. كانت تلك التي استحوذت على خيال الجميع، بما فيه الكفاية، تلك التي كانت على وجهها الأكثر تافهة. وأظهرت شاشة تقسيم مع اللعبة التي بدا مثل ماريو على جانب واحد والرمز الذي يسيطر عليه من جهة أخرى. كما تغير فيكتور رمز، تغيرت الأمور في عالم اللعبة: انخفض عدد واحد، وقوة الجاذبية، وطابع ماريو عائم. وقال انه زاد آخر، وسرعة اللاعب، وماريو تسابق عبر الشاشة.
لنفترض أنك تريد تصميم مستوى حيث ماريو، والقفز وكذاب قبالة السلحفاة، من شأنه أن يجعل فقط في ممر صغير. تم استخدام مبرمجي اللعبة لحل هذا النوع من المشاكل على مرحلتين: أولا، كنت يحدق في التعليمات البرمجية الخاصة بك - رمز السيطرة على كيفية قفز ماريو عالية، ومدى سرعة ركض، وكيف نطاط ظهر السلاحف وكان، وأدخلت بعض التغييرات عليه في الخاص بك محرر النصوص، وذلك باستخدام خيالك للتنبؤ ما تأثير لديهم. ثم، كنت إعادة اللعبة لمعرفة ما حدث فعلا.
الظل ماريوس تتحرك على النصف الأيسر من الشاشة كما الفأر المتزلجون المتزلجون على النصف الأيمن. كوزيك / فيميو.
أراد فيكتور شيئا أكثر إلحاحا. “If you have a process in time,” he said, referring to Mario’s path through the level, “and you want to see changes immediately, you have to map time to space.” He hit a button that showed not just where Mario was right now, but where he would be at every moment in the future: a curve of shadow Marios stretching off into the far distance. What’s more, this projected path was reactive: When Victor changed the game’s parameters, now controlled by a quick drag of the mouse, the path’s shape changed. It was like having a god’s-eye view of the game. The whole problem had been reduced to playing with different parameters, as if adjusting levels on a stereo receiver, until you got Mario to thread the needle. With the right interface, it was almost as if you weren’t working with code at all; you were manipulating the game’s behavior directly.
When the audience first saw this in action, they literally gasped. They knew they weren’t looking at a kid’s game, but rather the future of their industry. Most software involved behavior that unfolded, in complex ways, over time, and Victor had shown that if you were imaginative enough, you could develop ways to see that behavior and change it, as if playing with it in your hands. One programmer who saw the talk wrote later: “Suddenly all of my tools feel obsolete.”
W hen John Resig saw the “Inventing on Principle” talk, he scrapped his plans for the Khan Academy programming curriculum. He wanted the site’s programming exercises to work just like Victor’s demos. On the left-hand side you’d have the code, and on the right, the running program: a picture or game or simulation. If you changed the code, it’d instantly change the picture. “In an environment that is truly responsive,” Resig wrote about the approach, “you can completely change the model of how a student learns . [They] can now immediately see the result and intuit how underlying systems inherently work without ever following an explicit explanation.” Khan Academy has become perhaps the largest computer-programming class in the world, with a million students, on average, actively using the program each month.
Chris Granger, who had worked at Microsoft on Visual Studio, was likewise inspired. Within days of seeing a video of Victor’s talk, in January of 2018, he built a prototype of a new programming environment. Its key capability was that it would give you instant feedback on your program’s behavior. You’d see what your system was doing right next to the code that controlled it. It was like taking off a blindfold. Granger called the project “Light Table.”
In April of 2018, he sought funding for Light Table on Kickstarter. In programming circles, it was a sensation. Within a month, the project raised more than $200,000. The ideas spread. The notion of liveness , of being able to see data flowing through your program instantly, made its way into flagship programming tools offered by Google and Apple. The default language for making new iPhone and Mac apps, called Swift, was developed by Apple from the ground up to support an environment, called Playgrounds, that was directly inspired by Light Table.
But seeing the impact that his talk ended up having, Bret Victor was disillusioned. “A lot of those things seemed like misinterpretations of what I was saying,” he said later. He knew something was wrong when people began to invite him to conferences to talk about programming tools. “Everyone thought I was interested in programming environments,” he said. Really he was interested in how people see and understand systems—as he puts it, in the “visual representation of dynamic behavior.” Although code had increasingly become the tool of choice for creating dynamic behavior, it remained one of the worst tools for understanding it. The point of “Inventing on Principle” was to show that you could mitigate that problem by making the connection between a system’s behavior and its code immediate.
“I’m not sure that programming has to exist at all.”
In a pair of later talks, “Stop Drawing Dead Fish” and “Drawing Dynamic Visualizations,” Victor went one further. He demoed two programs he’d built—the first for animators, the second for scientists trying to visualize their data—each of which took a process that used to involve writing lots of custom code and reduced it to playing around in a WYSIWYG interface. Victor suggested that the same trick could be pulled for nearly every problem where code was being written today. “I’m not sure that programming has to exist at all,” he told me. “Or at least software developers.” In his mind, a software developer’s proper role was to create tools that removed the need for software developers. Only then would people with the most urgent computational problems be able to grasp those problems directly, without the intermediate muck of code.
Of course, to do that, you’d have to get programmers themselves on board. In a recent essay, Victor implored professional software developers to stop pouring their talent into tools for building apps like Snapchat and Uber. “The inconveniences of daily life are not the significant problems,” he wrote. Instead, they should focus on scientists and engineers—as he put it to me, “these people that are doing work that actually matters, and critically matters, and using really, really bad tools.” Exciting work of this sort, in particular a class of tools for “model-based design,” was already underway, he wrote, and had been for years, but most programmers knew nothing about it.
“I f you really look hard at all the industrial goods that you’ve got out there, that you’re using, that companies are using, the only non-industrial stuff that you have inside this is the code.” Eric Bantégnie is the founder of Esterel Technologies (now owned by ANSYS), a French company that makes tools for building safety-critical software. Like Victor, Bantégnie doesn’t think engineers should develop large systems by typing millions of lines of code into an IDE. “Nobody would build a car by hand,” he says. “Code is still, in many places, handicraft. When you’re crafting manually 10,000 lines of code, that’s okay. But you have systems that have 30 million lines of code, like an Airbus, or 100 million lines of code, like your Tesla or high-end cars—that’s becoming very, very complicated.”
Bantégnie’s company is one of the pioneers in the industrial use of model-based design, in which you no longer write code directly. Instead, you create a kind of flowchart that describes the rules your program should follow (the “model”), and the computer generates code for you based on those rules. If you were making the control system for an elevator, for instance, one rule might be that when the door is open, and someone presses the button for the lobby, you should close the door and start moving the car. In a model-based design tool, you’d represent this rule with a small diagram, as though drawing the logic out on a whiteboard, made of boxes that represent different states—like “door open,” “moving,” and “door closed”—and lines that define how you can get from one state to the other. The diagrams make the system’s rules obvious: Just by looking, you can see that the only way to get the elevator moving is to close the door, or that the only way to get the door open is to stop.
“The people know how to code. The problem is what to code.”
It’s not quite Photoshop. The beauty of Photoshop, of course, is that the picture you’re manipulating on the screen is the final product. In model-based design, by contrast, the picture on your screen is more like a blueprint. Still, making software this way is qualitatively different than traditional programming. In traditional programming, your task is to take complex rules and translate them into code; most of your energy is spent doing the translating, rather than thinking about the rules themselves. In the model-based approach, all you have is the rules. So that’s what you spend your time thinking about. It’s a way of focusing less on the machine and more on the problem you’re trying to get it to solve.
“Typically the main problem with software coding—and I’m a coder myself,” Bantégnie says, “is not the skills of the coders. The people know how to code. The problem is what to code. Because most of the requirements are kind of natural language, ambiguous, and a requirement is never extremely precise, it’s often understood differently by the guy who’s supposed to code.”
On this view, software becomes unruly because the media for describing what software should do—conversations, prose descriptions, drawings on a sheet of paper—are too different from the media describing what software does do, namely, code itself. Too much is lost going from one to the other. The idea behind model-based design is to close the gap. The very same model is used both by system designers to express what they want and by the computer to automatically generate code.
Of course, for this approach to succeed, much of the work has to be done well before the project even begins. Someone first has to build a tool for developing models that are natural for people—that feel just like the notes and drawings they’d make on their own—while still being unambiguous enough for a computer to understand. They have to make a program that turns these models into real code. And finally they have to prove that the generated code will always do what it’s supposed to. “We have benefited from fortunately 20 years of initial background work,” Bantégnie says.
Esterel Technologies, which was acquired by ANSYS in 2018, grew out of research begun in the 1980s by the French nuclear and aerospace industries, who worried that as safety-critical code ballooned in complexity, it was getting harder and harder to keep it free of bugs. “I started in 1988,” says Emmanuel Ledinot, the Head of Scientific Studies for Dassault Aviation, a French manufacturer of fighter jets and business aircraft. “At the time, I was working on military avionics systems. And the people in charge of integrating the systems, and debugging them, had noticed that the number of bugs was increasing.” The 80s had seen a surge in the number of onboard computers on planes. Instead of a single flight computer, there were now dozens, each responsible for highly specialized tasks related to control, navigation, and communications. Coordinating these systems to fly the plane as data poured in from sensors and as pilots entered commands required a symphony of perfectly timed reactions. “The handling of these hundreds of and even thousands of possible events in the right order, at the right time,” Ledinot says, “was diagnosed as the main cause of the bug inflation.”
Ledinot decided that writing such convoluted code by hand was no longer sustainable. It was too hard to understand what it was doing, and almost impossible to verify that it would work correctly. He went looking for something new. “You must understand that to change tools is extremely expensive in a process like this,” he said in a talk. “You don’t take this type of decision unless your back is against the wall.”
Most programmers like code. At least they understand it.
He began collaborating with Gerard Berry, a computer scientist at INRIA, the French computing-research center, on a tool called Esterel—a portmanteau of the French for “real-time.” The idea behind Esterel was that while traditional programming languages might be good for describing simple procedures that happened in a predetermined order—like a recipe—if you tried to use them in systems where lots of events could happen at nearly any time, in nearly any order—like in the cockpit of a plane—you inevitably got a mess. And a mess in control software was dangerous. In a paper, Berry went as far as to predict that “low-level programming techniques will not remain acceptable for large safety-critical programs, since they make behavior understanding and analysis almost impracticable.”
Esterel was designed to make the computer handle this complexity for you. That was the promise of the model-based approach: Instead of writing normal programming code, you created a model of the system’s behavior—in this case, a model focused on how individual events should be handled, how to prioritize events, which events depended on which others, and so on. The model becomes the detailed blueprint that the computer would use to do the actual programming.
Ledinot and Berry worked for nearly 10 years to get Esterel to the point where it could be used in production. “It was in 2002 that we had the first operational software-modeling environment with automatic code generation,” Ledinot told me, “and the first embedded module in Rafale, the combat aircraft.” Today, the ANSYS SCADE product family (for “safety-critical application development environment”) is used to generate code by companies in the aerospace and defense industries, in nuclear power plants, transit systems, heavy industry, and medical devices. “My initial dream was to have SCADE-generated code in every plane in the world,” Bantégnie, the founder of Esterel Technologies, says, “and we’re not very far off from that objective.” Nearly all safety-critical code on the Airbus A380, including the system controlling the plane’s flight surfaces, was generated with ANSYS SCADE products.
Part of the draw for customers, especially in aviation, is that while it is possible to build highly reliable software by hand, it can be a Herculean effort. Ravi Shivappa, the VP of group software engineering at Meggitt PLC, an ANSYS customer which builds components for airplanes, like pneumatic fire detectors for engines, explains that traditional projects begin with a massive requirements document in English, which specifies everything the software should do. (A requirement might be something like, “When the pressure in this section rises above a threshold, open the safety valve, unless the manual-override switch is turned on.”) The problem with describing the requirements this way is that when you implement them in code, you have to painstakingly check that each one is satisfied. And when the customer changes the requirements, the code has to be changed, too, and tested extensively to make sure that nothing else was broken in the process.
The cost is compounded by exacting regulatory standards. The FAA is fanatical about software safety. The agency mandates that every requirement for a piece of safety-critical software be traceable to the lines of code that implement it, and vice versa. So every time a line of code changes, it must be retraced to the corresponding requirement in the design document, and you must be able to demonstrate that the code actually satisfies the requirement. The idea is that if something goes wrong, you’re able to figure out why; the practice brings order and accountability to large codebases. But, Shivappa says, “it’s a very labor-intensive process.” He estimates that before they used model-based design, on a two-year-long project only two to three months was spent writing code—the rest was spent working on the documentation.
We already know how to make complex software reliable, but in so many places, we’re choosing not to.
As Bantégnie explains, the beauty of having a computer turn your requirements into code, rather than a human, is that you can be sure—in fact you can mathematically prove—that the generated code actually satisfies those requirements. Much of the benefit of the model-based approach comes from being able to add requirements on the fly while still ensuring that existing ones are met; with every change, the computer can verify that your program still works. You’re free to tweak your blueprint without fear of introducing new bugs. Your code is, in FAA parlance, “correct by construction.”
Still, most software, even in the safety-obsessed world of aviation, is made the old-fashioned way, with engineers writing their requirements in prose and programmers coding them up in a programming language like C. As Bret Victor made clear in his essay, model-based design is relatively unusual. “A lot of people in the FAA think code generation is magic, and hence call for greater scrutiny,” Shivappa told me.
Most programmers feel the same way. They like code. At least they understand it. Tools that write your code for you and verify its correctness using the mathematics of “finite-state machines” and “recurrent systems” sound esoteric and hard to use, if not just too good to be true.
It is a pattern that has played itself out before. Whenever programming has taken a step away from the writing of literal ones and zeros, the loudest objections have come from programmers. Margaret Hamilton, a celebrated software engineer on the Apollo missions—in fact the coiner of the phrase “software engineering”—told me that during her first year at the Draper lab at MIT, in 1964, she remembers a meeting where one faction was fighting the other about transitioning away from “some very low machine language,” as close to ones and zeros as you could get, to “assembly language.” “The people at the lowest level were fighting to keep it. And the arguments were so similar: ‘Well how do we know assembly language is going to do it right?’”
“Guys on one side, their faces got red, and they started screaming,” she said. She said she was “amazed how emotional they got.”
You could do all the testing you wanted and you’d never find all the bugs.
Emmanuel Ledinot, of Dassault Aviation, pointed out that when assembly language was itself phased out in favor of the programming languages still popular today, like C, it was the assembly programmers who were skeptical this time. No wonder, he said, that “people are not so easily transitioning to model-based software development: They perceive it as another opportunity to lose control, even more than they have already.”
The bias against model-based design, sometimes known as model-driven engineering, or MDE, is in fact so ingrained that according to a recent paper, “Some even argue that there is a stronger need to investigate people’s perception of MDE than to research new MDE technologies.”
Which sounds almost like a joke, but for proponents of the model-based approach, it’s an important point: We already know how to make complex software reliable, but in so many places, we’re choosing not to. لماذا ا؟
I n 2018, Chris Newcombe had been working at Amazon for almost seven years, and had risen to be a principal engineer. He had worked on some of the company’s most critical systems, including the retail-product catalog and the infrastructure that managed every Kindle device in the world. He was a leader on the highly prized Amazon Web Services team, which maintains cloud servers for some of the web’s biggest properties, like Netflix, Pinterest, and Reddit. Before Amazon, he’d helped build the backbone of Steam, the world’s largest online-gaming service. He is one of those engineers whose work quietly keeps the internet running. The products he’d worked on were considered massive successes. But all he could think about was that buried deep in the designs of those systems were disasters waiting to happen.
“Human intuition is poor at estimating the true probability of supposedly ‘extremely rare’ combinations of events in systems operating at a scale of millions of requests per second,” he wrote in a paper. “That human fallibility means that some of the more subtle, dangerous bugs turn out to be errors in design; the code faithfully implements the intended design, but the design fails to correctly handle a particular ‘rare’ scenario.”
Newcombe was convinced that the algorithms behind truly critical systems—systems storing a significant portion of the web’s data, for instance—ought to be not just good, but perfect. A single subtle bug could be catastrophic. But he knew how hard bugs were to find, especially as an algorithm grew more complex. You could do all the testing you wanted and you’d never find them all.
“Few programmers write even a rough sketch of what their programs will do before they start coding.”
This is why he was so intrigued when, in the appendix of a paper he’d been reading, he came across a strange mixture of math and code—or what looked like code—that described an algorithm in something called “TLA+.” The surprising part was that this description was said to be mathematically precise: An algorithm written in TLA+ could in principle be proven correct. In practice, it allowed you to create a realistic model of your problem and test it not just thoroughly, but exhaustively . This was exactly what he’d been looking for: a language for writing perfect algorithms.
TLA+, which stands for “Temporal Logic of Actions,” is similar in spirit to model-based design: It’s a language for writing down the requirements—TLA+ calls them “specifications”—of computer programs. These specifications can then be completely verified by a computer. That is, before you write any code, you write a concise outline of your program’s logic, along with the constraints you need it to satisfy (say, if you were programming an ATM, a constraint might be that you can never withdraw the same money twice from your checking account). TLA+ then exhaustively checks that your logic does, in fact, satisfy those constraints. If not, it will show you exactly how they could be violated.
The language was invented by Leslie Lamport, a Turing Award–winning computer scientist. With a big white beard and scruffy white hair, and kind eyes behind large glasses, Lamport looks like he might be one of the friendlier professors at the American Hogwarts. Now at Microsoft Research, he is known as one of the pioneers of the theory of “distributed systems,” which describes any computer system made of multiple parts that communicate with each other. Lamport’s work laid the foundation for many of the systems that power the modern web.
For Lamport, a major reason today’s software is so full of bugs is that programmers jump straight into writing code. “Architects draw detailed plans before a brick is laid or a nail is hammered,” he wrote in an article. “But few programmers write even a rough sketch of what their programs will do before they start coding.” Programmers are drawn to the nitty-gritty of coding because code is what makes programs go; spending time on anything else can seem like a distraction. And there is a patient joy, a meditative kind of satisfaction, to be had from puzzling out the micro-mechanics of code. But code, Lamport argues, was never meant to be a medium for thought. “It really does constrain your ability to think when you’re thinking in terms of a programming language,” he says. Code makes you miss the forest for the trees: It draws your attention to the working of individual pieces, rather than to the bigger picture of how your program fits together, or what it’s supposed to do—and whether it actually does what you think. This is why Lamport created TLA+. As with model-based design, TLA+ draws your focus to the high-level structure of a system, its essential logic, rather than to the code that implements it.
Newcombe and his colleagues at Amazon would go on to use TLA+ to find subtle, critical bugs in major systems, including bugs in the core algorithms behind S3, regarded as perhaps the most reliable storage engine in the world. It is now used widely at the company. In the tiny universe of people who had ever used TLA+, their success was not so unusual. An intern at Microsoft used TLA+ to catch a bug that could have caused every Xbox in the world to crash after four hours of use. Engineers at the European Space Agency used it to rewrite, with 10 times less code, the operating system of a probe that was the first to ever land softly on a comet. Intel uses it regularly to verify its chips.
But TLA+ occupies just a small, far corner of the mainstream, if it can be said to take up any space there at all. Even to a seasoned engineer like Newcombe, the language read at first as bizarre and esoteric—a zoo of symbols. For Lamport, this is a failure of education. Though programming was born in mathematics, it has since largely been divorced from it. Most programmers aren’t very fluent in the kind of math—logic and set theory, mostly—that you need to work with TLA+. “Very few programmers—and including very few teachers of programming—understand the very basic concepts and how they’re applied in practice. And they seem to think that all they need is code,” Lamport says. “The idea that there’s some higher level than the code in which you need to be able to think precisely, and that mathematics actually allows you to think precisely about it, is just completely foreign. Because they never learned it.”
“I hope people won’t be allowed to write programs if they don’t understand these simple things.”
Lamport sees this failure to think mathematically about what they’re doing as the problem of modern software development in a nutshell: The stakes keep rising, but programmers aren’t stepping up—they haven’t developed the chops required to handle increasingly complex problems. “In the 15th century,” he said, “people used to build cathedrals without knowing calculus, and nowadays I don’t think you’d allow anyone to build a cathedral without knowing calculus. And I would hope that after some suitably long period of time, people won’t be allowed to write programs if they don’t understand these simple things.”
Newcombe isn’t so sure that it’s the programmer who is to blame. “I’ve heard from Leslie that he thinks programmers are afraid of math. I’ve found that programmers aren’t aware—or don’t believe—that math can help them handle complexity. Complexity is the biggest challenge for programmers.” The real problem in getting people to use TLA+, he said, was convincing them it wouldn’t be a waste of their time. Programmers, as a species, are relentlessly pragmatic. Tools like TLA+ reek of the ivory tower. When programmers encounter “formal methods” (so called because they involve mathematical, “formally” precise descriptions of programs), their deep-seated instinct is to recoil.
Most programmers who took computer science in college have briefly encountered formal methods. Usually they’re demonstrated on something trivial, like a program that counts up from zero; the student’s job is to mathematically prove that the program does, in fact, count up from zero.
“I needed to change people’s perceptions on what formal methods were,” Newcombe told me. Even Lamport himself didn’t seem to fully grasp this point: Formal methods had an image problem. And the way to fix it wasn’t to implore programmers to change—it was to change yourself. Newcombe realized that to bring tools like TLA+ to the programming mainstream, you had to start speaking their language.
For one thing, he said that when he was introducing colleagues at Amazon to TLA+ he would avoid telling them what it stood for, because he was afraid the name made it seem unnecessarily forbidding: “Temporal Logic of Actions” has exactly the kind of highfalutin ring to it that plays well in academia, but puts off most practicing programmers. He tried also not to use the terms “formal,” “verification,” or “proof,” which reminded programmers of tedious classroom exercises. Instead, he presented TLA+ as a new kind of “pseudocode,” a stepping-stone to real code that allowed you to exhaustively test your algorithms—and that got you thinking precisely early on in the design process. “Engineers think in terms of debugging rather than ‘verification,’” he wrote, so he titled his internal talk on the subject to fellow Amazon engineers “Debugging Designs.” Rather than bemoan the fact that programmers see the world in code, Newcombe embraced it. He knew he’d lose them otherwise. “I’ve had a bunch of people say, ‘Now I get it,’” Newcombe says.
This code has created a level of complexity that is entirely new. And it has made possible a new kind of failure.
He has since left Amazon for Oracle, where he’s been able to convince his new colleagues to give TLA+ a try. For him, using these tools is now a matter of responsibility. “We need to get better at this,” he said.
“I’m self-taught, been coding since I was nine, so my instincts were to start coding. That was my only—that was my way of thinking: You’d sketch something, try something, you’d organically evolve it.” In his view, this is what many programmers today still do. “They google, and they look on Stack Overflow” (a popular website where programmers answer each other’s technical questions) “and they get snippets of code to solve their tactical concern in this little function, and they glue it together, and iterate.”
“And that’s completely fine until you run smack into a real problem.”
I n the summer of 2018, a pair of American security researchers, Charlie Miller and Chris Valasek, convinced that car manufacturers weren’t taking software flaws seriously enough, demonstrated that a 2018 Jeep Cherokee could be remotely controlled by hackers. They took advantage of the fact that the car’s entertainment system, which has a cellular connection (so that, for instance, you can start your car with your iPhone), was connected to more central systems, like the one that controls the windshield wipers, steering, acceleration, and brakes (so that, for instance, you can see guidelines on the rearview screen that respond as you turn the wheel). As proof of their attack, which they developed on nights and weekends, they hacked into Miller’s car while a journalist was driving it on the highway, and made it go haywire; the journalist, who knew what was coming, panicked when they cut the engines, forcing him to a slow crawl on a stretch of road with no shoulder to escape to.
Although they didn’t actually create one, they showed that it was possible to write a clever piece of software, a “vehicle worm,” that would use the onboard computer of a hacked Jeep Cherokee to scan for and hack others; had they wanted to, they could have had simultaneous access to a nationwide fleet of vulnerable cars and SUVs. (There were at least five Fiat Chrysler models affected, including the Jeep Cherokee.) One day they could have told them all to, say, suddenly veer left or cut the engines at high speed.
“We need to think about software differently,” Valasek told me. Car companies have long assembled their final product from parts made by hundreds of different suppliers. But where those parts were once purely mechanical, they now, as often as not, come with millions of lines of code. And while some of this code—for adaptive cruise control, for auto braking and lane assist—has indeed made cars safer (“The safety features on my Jeep have already saved me countless times,” says Miller), it has also created a level of complexity that is entirely new. And it has made possible a new kind of failure.
In the world of the self-driving car, software can’t be an afterthought.
“There are lots of bugs in cars,” Gerard Berry, the French researcher behind Esterel, said in a talk. “It’s not like avionics—in avionics it’s taken very seriously. And it’s admitted that software is different from mechanics.” The automotive industry is perhaps among those that haven’t yet realized they are actually in the software business.
“We don’t in the automaker industry have a regulator for software safety that knows what it’s doing,” says Michael Barr, the software expert who testified in the Toyota case. NHTSA, he says, “has only limited software expertise. They’ve come at this from a mechanical history.” The same regulatory pressures that have made model-based design and code generation attractive to the aviation industry have been slower to come to car manufacturing. Emmanuel Ledinot, of Dassault Aviation, speculates that there might be economic reasons for the difference, too. Automakers simply can’t afford to increase the price of a component by even a few cents, since it is multiplied so many millionfold; the computers embedded in cars therefore have to be slimmed down to the bare minimum, with little room to run code that hasn’t been hand-tuned to be as lean as possible. “Introducing model-based software development was, I think, for the last decade, too costly for them.”
One suspects the incentives are changing. “I think the autonomous car might push them,” Ledinot told me—“ISO 26262 and the autonomous car might slowly push them to adopt this kind of approach on critical parts.” (ISO 26262 is a safety standard for cars published in 2018.) Barr said much the same thing: In the world of the self-driving car, software can’t be an afterthought. It can’t be built like today’s airline-reservation systems or 911 systems or stock-trading systems. Code will be put in charge of hundreds of millions of lives on the road and it has to work. That is no small task.
“Computing is fundamentally invisible,” Gerard Berry said in his talk. “When your tires are flat, you look at your tires, they are flat. When your software is broken, you look at your software, you see nothing.”
“So that’s a big problem.”
* This article originally stated that there were 10 million ways for the Toyota Camry to cause unintended acceleration. We regret the error.
الفيديو ذات الصلة.
أحدث فيديو.
Not Your Average Brazilian Model.
For rising models in one of the largest favelas of Rio de Janeiro, fashion is an opportunity for self-actualization.
عن المؤلف.
الأكثر شعبية.
Mario Anzuoni / Reuters.
The Humiliation of Aziz Ansari.
Allegations against the comedian are proof that women are angry, temporarily powerful—and very, very dangerous.
Sexual mores in the West have changed so rapidly over the past 100 years that by the time you reach 50, intimate accounts of commonplace sexual events of the young seem like science fiction: You understand the vocabulary and the sentence structure, but all of the events take place in outer space. You’re just too old.
This was my experience reading the account of one young woman’s alleged sexual encounter with Aziz Ansari, published by the website Babe this weekend. The world in which it constituted an episode of sexual assault was so far from my own two experiences of near date rape (which took place, respectively, during the Carter and Reagan administrations, roughly between the kidnapping of the Iran hostages and the start of the Falklands War) that I just couldn’t pick up the tune. But, like the recent New Yorker story “Cat Person”—about a soulless and disappointing hookup between two people who mostly knew each other through texts—the account has proved deeply resonant and meaningful to a great number of young women, who have responded in large numbers on social media, saying that it is frighteningly and infuriatingly similar to crushing experiences of their own. It is therefore worth reading and, in its way, is an important contribution to the present conversation.
Aziz Ansari and the Paradox of ‘No’
A viral story highlights the lingering difference between the language—and the practice—of consent.
It was true that everything did seem okay to me, so when I heard that it was not the case for her, I was surprised and concerned. I took her words to heart and responded privately after taking the time to process what she had said.
I continue to support the movement that is happening in our culture. It is necessary and long overdue.
That was Aziz Ansari, responding to a story that was published about him over the weekend, a story that doubled for many readers as an allegation not of criminal sexual misconduct, but of misbehavior of a more subtle strain: aggression. Entitlement. Excessive persistence. His statement, accordingly—not an apology but not, either, a denial—occupies that strange and viscous space between defiance and regret. I was surprised and concerned. I took her words to heart .
Is This the Beginning of the End of the Bitcoin Bubble?
The cryptocurrency was meant to be stateless and leaderless. Ironically, the culprits of its latest plunge are . state leaders.
Bitcoin is a bubble.
That much was clear to economists, investors, and analysts for quite some time. But one of the shortcomings of such analysis is that certainty of an economic bubble offers little insight on how, when, or why that bubble will pop. “I can say almost with certainty that they will come to a bad ending,” Warren Buffett said last week, to the great consternation of crypto fans. “When it happens or how or anything else, I don't know.”
Maybe — maybe — it’s finally happening.
The price of bitcoin plummeted by as much as 20 percent on Tuesday to $12,000, or about 40 percent below its all-time high in December. Other popular cryptocurrencies, like ethereum and Ripple, also posted double-digit losses.
Trump Discovers the Costs of Undermining Truth.
At the same time that the president sows doubt and confusion to undermine his adversaries, he finds those forces depriving him of credit he believes he deserves.
A long weekend with lots of executive time, simmering tensions with politicians of both parties, a looming government shutdown: It’s the most potent cocktail that Donald Trump, a teetotaler, could imbibe, and it produced a predictably jarring and erratic series of statements.
Over the course of several days, mostly in tweets, Trump tried to make three points. First, he sought to discredit the idea that he had referred to African nations as “shithole countries” and said, “Why do we need more Haitians? Take them out.” (Trump also declared to a reporter that he was “the least racist person you have ever interviewed.”) Second, he jockeyed for position in negotiations over funding the government, arguing Democrats were imperiling the military as he tried to preemptively shift blame to them. Finally, for good measure, he whined a little bit that he doesn’t get more credit for what he’s done:
The President Can Draw a Clock.
The cognitive test that Trump passed was neither thorough nor difficult.
Amid growing speculation about President Trump’s unfitness to hold the nuclear codes he has threatened to use, anyone who was suspicious that he could not identify a camel or draw the face of a clock can rest more easily tonight.
This afternoon the president’s physician, Navy Rear Admiral Ronny L. Jackson, said that the president “did exceedingly well” on a test called the Montreal Cognitive Assessment, reporting a score of 30 out of 30.
The Montreal Cognitive Assessment is a 10-minute test. It’s one of the commonly used screening exams for dementia. The questions on the test vary in difficulty, but they include:
Six points for knowing the date and where you are.
One point if you can identify what a train and a bicycle have in common, and another for watch and ruler.
The New Age of Astrology.
In a stressful, data-driven era, many young people find comfort and insight in the zodiac—even if they don’t exactly believe in it.
Astrology is a meme, and it’s spreading in that blooming, unfurling way that memes do. On social media, astrologers and astrology meme machines amass tens or hundreds of thousands of followers, people joke about Mercury retrograde, and categorize “the signs as . ” literally anything: cat breeds, Oscar Wilde quotes, Stranger Things characters, types of french fries. In online publications, daily, weekly, and monthly horoscopes, and zodiac-themed listicles flourish.
This isn’t the first moment astrology’s had and it won’t be the last. The practice has been around in various forms for thousands of years. More recently, the New Age movement of the 1960s and ’70s came with a heaping helping of the zodiac. (Some also refer to the New Age as the “Age of Aquarius”—the 2,000-year period after the Earth is said to move into the Aquarius sign.)
Blue Planet II Is the Greatest Nature Series Of All Time.
Seventeen years after the original Blue Planet , the BBC Natural History Unit has perfected the art of the blockbuster documentary.
Across seven episodes of Blue Planet II , viewers are treated to a number of wondrous images. Orcas stun schools of herring by slapping them with their tails. Cuttlefish mesmerize shrimp by splaying out their arms and sending moving clouds of pigment across their skin, like a living gif. Mobula rays cavort in the deep, stirring glow plankton as they move, creating an ethereal scene that looks like a clip from Moana . Cutthroat eels slink into a lake of super-salty water at the bottom of the ocean, and some tie themselves into knots in the throes of toxic shock. Pods of bottlenose dolphins and false killer whales meet in the open ocean, greeting each other as if reuniting with old friends.
The series first aired in the United Kingdom last year and finally premieres in the United States this Saturday. It is the latest program from the BBC’s indefatigable Natural History Unit—arguably the greatest producers of such documentaries in the world.
Five Decades of White Backlash.
President Trump is the embodiment of over 50 years of resistance to the policies Martin Luther King Jr. fought to enact.
On April 4, 1968, Martin Luther King Jr. was assassinated. In response, a week later President Lyndon B. Johnson scrambled to sign into law the Fair Housing Act, a final major civil-rights bill that had languished for years under the strain of white backlash to the civil-rights movement.
Five years later a New York developer and his son—then only a few years out of college—became two of the first targets of a massive Department of Justice probe for an alleged violation of that landmark act. After a protracted, bitter lawsuit, facing a mountain of allegations that the two had engaged in segregating units and denying applications of black and Puerto Rican applicants, in 1975 Trump Management settled with the federal government and accepted the terms of a consent decree prohibiting discrimination. So entered Donald Trump onto the American stage.
Who Wins in the Name Game?
From dating to job prospects, a name has remarkable power over the path of its owner's life.
I was at a party for Bastille Day in Paris a few years back, and we were leaning over the balcony to watch the fireworks. A cute French girl sat next to me, but after a few flirty glances the moment was entirely ruined with the most basic of interactions: “What’s your name?” she asked in French. “Cody,” I said.
That was it. We were done. “Co-zee?” she said, sounding out the entirely foreign name, looking more disgruntled with each try. “Col-bee?” “Cot-ee?”
I tried a quick correction, but I probably should’ve just lied, said my name was Thomas or Pierre like I did whenever I ordered take-away or made restaurant reservations. Not being able to pronounce a name spells a death sentence for relationships. That’s because the ability to pronounce someone’s name is directly related to how close you feel to that person. Our brains tend to believe that if something is difficult to understand, it must also be high-risk.
50 Years Ago in Photos: A Look Back at 1968.
A half-century ago, much of the world appeared to be in a state of crisis, with protests around the world, the Vietnam War, and the assassinations of Dr. Martin Luther King Jr. and Senator Robert Kennedy. But there was some progress to be found as well.
A half-century ago, much of the world appeared to be in a state of crisis. Protests erupted in France, Czechoslovakia. Germany, Mexico, Brazil, the United States, and many other places. Some of these protests ended peacefully; many were put down harshly. Two of the biggest catalysts for protest were the U. S. involvement in the Vietnam War and the ongoing lack of civil rights in the U. S. and elsewhere. Two of America’s most prominent leaders, Dr. Martin Luther King Jr. and Senator Robert F. Kennedy, were assassinated within months of each other. But some lessons were being learned and some progress was being made—this was also the year that NASA first sent astronauts around the moon and back, and the year President Lyndon Johnson signed the Civil Rights Act into law. It’s fitting that I post this retrospective today, since it is the day I was born—January 10, 1968. So, a 50th birthday present from me to you today: a look back at 1968.
Why Women Prefer Male Bosses.
The overbearing “queen bee” boss stereotype is a toxic feedback loop.
The Ghosts of Cyclists That Haunt City Streets.
Ghost bikes serve as memorials of lives tragically lost—and reminders of our own fragility.
How the Internet Is Changing Friendship.
Does social media make all friendships last forever?
Get 10 issues a year and save 65% off the cover price.

Professional stock trading system design and automation pdf


Pull requests 5.
تاريخ جيثب اليوم.
جيثب هي موطن لأكثر من 20 مليون مطورين يعملون معا لاستضافة ومراجعة التعليمات البرمجية، وإدارة المشاريع، وبناء البرمجيات معا.
استنساخ مع هتبس.
استخدام جيت أو الخروج مع سفن باستخدام ورل على شبكة الإنترنت.
A collection of awesome libraries, tools, frameworks, and software.
Contributions are always welcome! Please take a look at the contribution guidelines and quality standard pages first. We accept proprietary and commercial software too.
Thanks to all contributors, you're awesome and wouldn't be possible without you! The goal is to build a categorized community-driven collection of very well-known resources.
To the extent possible under law, Vitali Fokin has waived all copyright and related or neighboring rights to this work.
Algorithmia - Algorithm and data-structure library for 3.5 and up. Algorithmia contains sophisticated algorithms and data-structures like graphs, priority queues, command, undo-redo and more. C# Algorithms - A C# plug-and-play class-library project of standard Data Structures and Algorithms. It contains 35+ Data Structures and 30+ Algorithms designed as Object-Oriented isolated components.
NancyFx - Lightweight, low-ceremony, framework for building HTTP-based services on and Mono ASP Web API - Framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices Breeze - API framework enabling rich data access by using the OData 3 protocol. Client libraries available for JavaScript and C#. Mobius: C# API for Spark - Mobius adds C# language binding to Apache Spark, enabling the implementation of Spark driver code and data processing operations in C#. ServiceStack - Thoughtfully architected, obscenely fast, thoroughly enjoyable web services for all Nelibur - Nelibur is message based web service framework on the pure WCF. Nelibur simplifies creating high-performance and message-based web services and you certainly have all the power of the WCF. WebAPI Contrib - Collection of open source projects to help improve your work with ASP Web API.
ASP Boilerplate - A starting point for new modern ASP MVC web applications with best practices and most popular tools. ASP MVC Boilerplate Framework - ASP MVC Extensions and Helper NuGet packages. Orleans - Orleans is a framework that provides a straight-forward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns CoreFX - The corefx repo contains the library implementation (called "CoreFX") for Core. It includes System. Collections, System. IO, System. Xml and many other components. It builds and runs on Windows. You can 'watch' the repo to see Linux and Mac support being added over the next few months. CSLA - business layer development framework cslanet/ Mono - Open source ECMA CLI, C#, F#, VB and implementation Mono-Addins - Mono. Addins is a generic framework for creating extensible applications, and for creating add-ins which extend those applications peasy - Peasy is a middle tier framework that offers an easy to use and flexible rules engine and was designed to address common challenges such as concurrency handling, transactional support, fault tolerance, threading, scalability, async and multiple client support, and easy testability, all without a huge learning curve! Spring - Spring is an open source application framework that makes building enterprise applications easier DotNetty - DotNetty is a port of Netty, asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & عملاء. AspectCore Framework - AspectCore Framework is an Aspect-Oriented Programming based cross platform framework for Core and Framework. Core support for aspect-interceptor, dependency injection integration , web applications , data validation , and more.
ASP Core Starter Kit - backend: Core, EF Core, C#; frontend: Babel, Webpack, React, CSS Modules ASP MVC Boilerplate - Professional ASP MVC templates for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. MVC. Template - ASP Core MVC project starter template. ProjectScaffold - A prototypical solution recommended by the F# Foundation---includes file system setup, Paket for dependencies and FAKE for build/test automation. By default, build process also compiles documentation and generates NuGet packages. Serene - Serenity is an ASP MVC application platform designed to simplify and shorten development of data-centric business applications with a service-based architecture. Serene is a starter template to build Serenity applications. Side-Waffle - Large collection of useful templates for Web and Desktop development. Template10 - Windows 10 templates with design patterns.
AIMLBot (Program#) - A small, fast, standards-compliant yet easily customizable implementation of an AIML (Artificial Intelligence Markup Language) based chatter bot in C#. SIML - Synthetic Intelligence Markup Language, a next generation Chatbot & Digital Assistant Language.
Fody - Extensible tool for weaving assemblies Mono. Cecil - Cecil is a library to generate and inspect programs and libraries in the ECMA CIL form.
Cassette - Manages web application assets (scripts, css and templates) NodeAssets - Asset Manager for that has live CSS updates using SignalR and can optionally leverage Node. js compilers Bundle Transformer - Modular extension for Microsoft ASP Web Optimization Framework. Its modules supports LESS, Sass, CoffeeScript, TypeScript, Mustache, Handlebars, Autoprefixer along with a bunch of different JS and CSS minifiers. Bundler - Compile & Minify Less/Sass/Stylus/Css/JS/CoffeeScript/LiveScript files. Integrates with MVC and ServiceStack SquishIt - Lets you easily bundle some CSS and JavaScript.
ASP Identity - New membership system for ASP applications DotNetOpenAuth - A C# implementation of the OpenID, OAuth and InfoCard protocols Logibit Hawk - A F# Hawk authentication library IdentityModel - Helper library for identity & access control in 4.5 and MVC4/Web API. IdentityServer - Extensible OAuth2 and OpenID Connect provider framework. OAuth - A very lightweight library for generating OAuth 1.0a signatures written in C# Stuntman - Stuntman is a library for impersonating users during development leveraging Claims Identity.
Core in Action - teaches how to write applications and libraries with Core. [$] C# in Depth - 3rd edition, 4th edition (early access) - deep dive into the details of the C# language. [$] CLR via C# - Dig deep and master the intricacies of the common language runtime, C#, and development. [$] Functional Programming in C# - teaches how to best leverage the functional features of the C# language. [$] Microservices in Core - shows you how to build maintainable, secure and operations-friendly microservices using Nancy and Core. [$] Dependency Injection in 2nd edition - teaches you to use Dependency Injection to reduce hard-coded dependencies between application components in . [$]
Psake - - based build automation tool written in PowerShell FAKE - F# Make, a cross-platform build automation system Invoke-Build - PowerShell build and test automation tool inspired by Psake. MSBuild - The Microsoft Build Engine (MSBuild) is the build platform for and Visual Studio Cake - Cake (C# Make) is a cross-platform build automation system with a C# DSL. Nake - Magic script-based C# task runner Nuke - Cross-platform build automation system.
CacheCow - An ASP Web API HTTP caching implementation both on client and server Akavache - An asynchronous, persistent key-value store CacheManager - A common interface and abstraction layer for caching. CacheAdapter - Another common cache abstraction layer for caching with enhanced cache API usage. Foundatio - A common interface with in memory, Redis and hybrid implementations. Cashew - a library for caching responses easily with an HttpClient through an API that is simple and elegant yet powerful.
Command Line Parser - The Command Line Parser Library offers to CLR applications a clean and concise API for manipulating command-line arguments and related tasks Fluent Command Line Parser - A simple, strongly typed C# command-line parser library using a fluent easy to use interface Power Args - PowerArgs converts command-line arguments into objects that are easy to program against. It also provides a ton of optional capabilities such as argument validation, auto generated usage, tab completion, and plenty of extensibility Argu - Declarative CLI argument & XML configuration parser for F# applications. Appccelerate - Command Line Parser - A command-line parser with fluent definition syntax, different argument types, required and optional arguments, value restrictions, aliases, type conversion and semi-automatic usage help message composition Colorful. Console - Colorful console output. EntryPoint - Composable CLI Argument Parser for Core & Framework 4.5+. clipr - A CLI library inspired by Python's argparse that transforms a command line into a strongly-typed object. It supports custom argument types, automated (and localized) help generation, and a variety of ways to store parsed arguments. ReadLine - A GNU-Readline like library for / Core. SharpNetSH - A simple netsh library for C#. Docopt - Command-line interface description language that will make you smile.
CoreCLR - The coreclr repo contains the complete runtime implementation (called "CoreCLR") for Core. It includes RyuJIT, the GC, native interop and many other components. It builds and runs on Windows. You can 'watch' the repo to see Linux and Mac support being added over the next few months.
Composite C1 - A web CMS that focus on UX and adaptability mojoPortal - MojoPortal is an extensible, cross database, mobile friendly, web content management system (CMS) and web application framework written in C# ASP N2CMS - Open source, lightweight, code-first CMS able to seamlessly integrate into any MVC project. Orchard - Free, open source, community-focused project aimed at delivering applications and reusable components on the ASP platform Piranha CMS - Piranha is the fun, fast and lightweight framework for developing cms-based web applications with an extra bite. It's built on ASP MVC and Web Pages and is fully compatible with both Visual Studio and WebMatrix. piranhacms Umbraco - Umbraco is a free open source Content Management System built on the ASP platform BetterCMS - Open Source Intuitive User Interface for Developer and Publisher DotNetNuke - DNN Platform is our free, open source web CMS and the foundation of every professional DNN solution. Over 750,000 organizations worldwide have built websites powered by the DNN Platform. BlogEngine - Simple but full featured ASP blog.
Compiler Platform ("Roslyn") Analyzers - A number of Roslyn diagnostic analyzers initially developed to help flesh out the design and implementation of the static analysis APIs. NDepend - is a Visual Studio and VS Team Services extension that estimates your code quality and Technical-Debt, that lets create code rules with C# LINQ syntax, visualize code structure and focus on changes and evolution. [$] App. Metrics - App Metrics is an open-source and cross-platform library used to record and report metrics within an application and reports it's health. See the docs for me details. CodeMaid - Visual studio extension to cleanup, dig through and simplify C#, C++, F#, VB, PHP, JSON, XAML, XML, ASP, HTML, CSS, LESS, SCSS, JavaScript and TypeScript coding. StyleCop - StyleCop analyzes C# source code to enforce a set of style and consistency rules Gendarme - Extensible rule-based tool to find problems in applications and libraries Metrics-Net - Capturing CLR and application-level metrics. So you know what's going on. AspNet. Metrics - Capturing CLR, application-level web request metrics. Middleware and extensions using Metrics-Net BenchmarkDotNet - Powerful library for benchmarking. Codinion - Enhanced syntax highlighting for C# and some other "Visual" features. NsDepCop - Static code analysis tool to enforce namespace dependency rules in C# projects.
Fiddle - Write, compile and run C# code in the browser. The C# equivalent of JSFiddle. Gistlyn - Create, run and share your executable C# GitHub Gists. TryRoslyn - Run C# code using different branches and versions of Roslyn.
Bridge - Open Source C# to JavaScript Compiler https://bridge/ ClojureCLR - A port of Clojure to the CLR, part of the Clojure project F# - The F# compiler, core library and tools - a functional programming language for safer, faster, better code writing. FunScript - F# to JavaScript compiler with jQuery etc. mappings through a TypeScript type provider. IronScheme - R6RS Scheme compiler, runtime and many standard libraries JSIL - CIL to JavaScript Compiler jsil/ Mono-basic - Visual Basic Compiler and Runtime Nemerle - Nemerle is a high-level statically-typed programming language for the platform. It offers functional, object-oriented and imperative features. It has a simple C#-like syntax and a powerful meta-programming system. Netjs - to TypeScript and JavaScript compiler. Portable Class Libraries work great for this. You can even pass EXEs. P - P is a language for asynchronous event-driven programming. Roslyn - The Compiler Platform ("Roslyn") provides open-source C# and Visual Basic compilers with rich code analysis APIs. It enables building code analysis tools with the same APIs that are used by Visual Studio. Testura. Code - Wrapper around the Roslyn API and used for generation, saving and and compiling C# code. It provides methods and helpers to generate classes, methods, statements and expressions. VisualFSharp - The Visual F# compiler and tools Fable - F# to JavaScript Compiler LinqOptimizer - An automatic query optimizer-compiler for Sequential and Parallel LINQ Roslyn-linq-rewrite - Compiles C# code by first rewriting the syntax trees of LINQ expressions using plain procedural code, minimizing allocations and dynamic dispatch.
SharpCompress - SharpCompress is a compression library for /Mono/Silverlight/WP7 that can unrar, un7zip, unzip, untar unbzip2 and ungzip with forward-only reading and file random access APIs. Write support for zip/tar/bzip2/gzip are implemented DotNetZip. Semverd - An open-source project that delivers a library for handling ZIP files, and some associated tools. (fork of Unmaintained DotNetZip) SharpZipLib - a Zip, GZip, Tar and BZip2 library written entirely in C# for the platform Snappy for Windows - Snappy compression library for baked on P/Invoke Snappy. Sharp - An implementation of Google's Snappy compression algorithm in C#.
TeamCity - Ready to work, extensible and developer-friendly build server — out of the box [$] MyGet - Continuous Integration and Deployment, Hosted Package Repository for NuGet, NPM, Bower and VSIX. [Free for OSS] [$] AppVeyor - Continuous Integration and Deployment as a service. [$] [Free for OSS]
BouncyCastle - Together with the System. Security. Cryptography, the reference implementation for cryptographic algorithms on the CLR. HashLib - HashLib is a collection of nearly all hash algorithms you've ever seen, it supports almost everything and is very easy to use libsodium-net - libsodium for - A secure cryptographic library Pkcs11Interop - Managed wrapper for unmanaged PKCS#11 libraries that provide access to the cryptographic hardware StreamCryptor - Stream encryption & decryption with libsodium and protobuf SecurityDriven. Inferno - crypto library. Professionally audited.
BrightstarDb - BrightstarDB is a native RDF triple store Event Store - The open-source, functional database with Complex Event Processing in JavaScript. https://eventstore/ LiteDB - A NoSQL Document Store in a single data file - litedb RavenDB - A LINQ-enabled document database for Marten - PostgreSQL as a document database and event store for applications Realm Xamarin - A fast, easy-to-use alternative to SQLite & ORMs - https://realm. io/docs/xamarin/latest/ Streamstone - Event store for Azure Table Storage Ignite - Distributed in-memory platform: document database with SQL and LINQ support; distributed computations; distributed services and events. Yessql - A document database working on any RDBMS JsonFlatFileDataStore - Simple JSON flat file data store with support for typed and dynamic data.
MySQL Connector - Connector/Net is a fully-managed ADO driver for MySQL Npgsql - data provider for PostgreSQL MongoDB - Official MongoDB C# driver RethinkDb. Driver - A RethinkDB database driver in C# striving for 100% ReQL API compatibility and completeness. ServiceStack Redis - 's leading C# Redis client StackExchange Redis - General purpose Redis client from StackExchange Cassandra - DataStax driver for Apache Cassandra Couchbase - Official Couchbase client library, based on the Enyim memcached client Firebird - The Data provider is written in C# and provides a high-performance, native implementation of the Firebird API.
NodaTime - Noda Time is an alternative date and time API for . It helps you to think about your data more clearly, and express operations on that data more precisely. https://nodatime/ DateTimeExtensions - Common Date Time operations on the form of extensions to System. DateTime , including holidays and working days calculations on several culture locales. Exceptionless. DateTimeExtensions - DateTimeRange, Business Day and various DateTime , DateTimeOffset , TimeSpan extension methods.
dnSpy - open-source assembly browser, editor, decompiler and debugger ILSpy - ILSpy is the open-source assembly browser and decompiler JustDecompile Engine - The decompilation engine of JustDecompile dotPeek - Free-of-charge standalone tool based on ReSharper's bundled decompiler. It can reliably decompile any assembly into equivalent C# or IL code. It can create Visual Studio solutions based on the original binary files in a straight-forward way. [Proprietary] [Free]
Unfold - PowerShell-based deployment solution for web applications DbUp - library that helps you to deploy changes to SQL Server databases. It tracks which SQL scripts have been run already, and runs the change scripts that are needed to get your database up to date Octo Pack - Used to build NuGet packages of your application for deployment using tools such as Octopus Deploy.
SlimDX - DirectX framework wrapper for applications SharpDX - SharpDX is an open-source project delivering the full DirectX API for on all Windows platforms, allowing the development of high performance game, 2D and 3D graphics rendering as well as real-time sound application.
Orleans - Orleans is a framework that provides a straight-forward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research. Orleankka - Orleankka is a functional API for Microsoft Orleans framework. It is highly suitable for scenarios where having composable, uniform communication interface is preferable, such as: CQRS, event-sourcing, re-routing, FSM, etc. Additional API avaiable for F# called Orleankka. FSharp. Akka - Akka is a port of the popular Java/Scala framework Akka to . This is a community-driven port and is not affiliated with Typesafe who makes the original Java/Scala version. Zebus - Zebus is a lightweight, highly versatile, peer-to-peer service bus, built with CQRS principles in mind. It allows applications to communicate with each other in a fast and easy manner. Most of the complexity is hidden in the library and you can focus on writing code that matters to you, not debugging messaging code. A very fundamental base for any distributed application. FsShelter - F# library for authoring Apache Storm components and topologies. Offering high-level abstractions for distributed and fault-tolerant event stream processing. Foundatio - Pluggable foundation blocks for building distributed apps. MBrace - Integrated Data Scripting for the Cloud protoactor-dotnet - Proto Actor - Ultra fast distributed actors for Golang and C#
cmd - C# library to run external programs in a simpler way. Demonstration of "dynamic" features of C#.
Sandcastle - Sandcastle Help File Builder similar to NDoc SharpDox - A C# documentation tool SourceBrowser - Source browser website generator that powers https://referencesource. microsoft and source. roslyn. io Swashbuckle - Seamlessly adds a Swagger to Web API projects. F# Formatting - Tools for documenting F# and C# projects from F# script files, Markdown documents and inline XML or Markdown comments DocFX - Tools for building and publishing API documentation for projects DocNet - Your friendly static documentation generator, using markdown files to build the content.
Paypal Merchant SDK - Official PayPal Merchant SDK for NopCommerce - nopCommerce. Free open-source e-commerce shopping cart (ASP MVC) ServiceStack. Stripe - Typed clients for stripe REST APIs SmartStoreNET - Free ASP MVC e-commerce Shopping Cart Solution https://smartstore/en/net Stripe - Stripe is a full service API for https://stripe/ BeYourMarket - BeYourMarket is a peer-to-peer marketplace framework beyourmarket Virto Commerce - Virto Commerce is the second generation release and is the only enterprise level e-commerce product fully available under Open Source license. Virto Commerce is based on 4.5 with extensive use of MVC, IoC, EF, Azure, AngularJS and many other cutting edge technologies. It can be deployed in Microsoft Cloud (Azure), Amazon Web Services (AWS) and on-premise. https://virtocommerce SimplCommerce - Super simple ecommerce system built on Core. Simple to use and easy to customize. Thanks to Core, you can run the SimplCommerce on Windows, Linux. With various RDBMS: Microsoft SQL Server, PostgreSQL, MySQL.
Dotnet CLI - The cross-platform Core command-line toolchain utility.
Reactive ETL - Reactive ETL is a rewrite of Rhino ETL using the reactive extensions for .
Mediator - A simple mediator for for sending command, publishing event and request response with pipelines supported MediatR - Simple, unambitious mediator implementation in Rx Event Aggregator - Super-simple Reactive-Extension code from Reactive. EventAggregator TinyMessenger - A lightweight event aggregator/messenger for loosely coupled communication. Xer. Cqrs - A simple library for creating applications based on the CQRS pattern with support for attribute routing and hosted handlers. Developed in C# targeting Standard 1.0.
Exceptionless - Exceptionless Client.
ExtensionMethods - Site with collection of extension methods Z. ExtensionMethods - Over a 1000 useful extension methods.
language-ext - This library uses and abuses the features of C# 6+ to provide a functional 'Base class library', that, if you squint, can look like extensions to the language itself. It also includes an 'Erlang like' process system (actors) that can optionally persist messages and state to Redis (note you can use it without Redis for in-app messaging). The process system additionally supports Rx streams of messages and state allowing for a complete system of reactive events and message dispatch. Optional - A robust option type for C#
MonoGame - One framework for creating powerful cross-platform games CocosSharp - CocosSharp is a C# implementation of the Cocos2D and Cocos3D APIs that runs on any platform where MonoGame runs Duality - Duality is a 2D game development framework. Focused on modularity, comes with a visual editor. Xenko - Xenko is a 2D/3D cross-platform game engine featuring a scene editor, particles, physically based rendering (PBR), scripting, and much more Wave Engine - Wave engine is a free C# component-based modern game engine which allows you to create cross-platform games supporting Kinect, Oculus Rift, Vuforia, Cardboard, Leap Motion and much more. [Free][Proprietary] UrhoSharp - UrhoSharp is a C# implementation of the Urho3D game engine that runs on iOS, Mac, Windows, Android and Linux systems Nez - Nez is a free 2D-focused framework that works with MonoGame and FNA.
NetTopologySuite A GIS solution that is fast and reliable for the platform SharpMap An easy-to-use mapping library for use in web and desktop applications OsmSharp - C# library to work with OpenStreetMap (OSM) data. Provides reading, writing and route-planning for OSM data. GeoJSON4EntityFramework - A library to create GeoJSON from Entity Framework Spatial Data or Well-Known Text (WKT) inputs. GeoJSON - library for GeoJSON types & corresponding Json (de)serializers.
Bonobo Git Server - Bonobo Git Server for Windows is a web application you can install on your IIS and easily manage and connect to your Git repositories. https://bonobogitserver/ GitExtensions - GitExtensions is a shell extension, a Visual Studio 2008/2018/2018/2018 plugin and a standalone Git repository tool. gitextensions. github. io/ GitLink - let's users step through their code hosted on GitHub or BitBucket GitVersion - Generate a Semantic Version Number based on the state of your Git repository LibGit2Sharp - LibGit2Sharp brings all the might and speed of libgit2, a native Git implementation, to the managed world of and Mono. NGit - NGit is a port of JGit to C# posh-git - A PowerShell environment for Git RepoZ - A Git repository information aggregator with Windows Explorer & CLI-enhancements Git Credential Manager for Windows - Helps solving issues of credentials, made by Microsoft.
LibTessDotNet - port of the famous GLU Tessellator, triangulates polygons Oxyplot - OxyPlot is a cross-platform plotting library for OpenTK - The Open Toolkit is an advanced, low-level C# library that wraps OpenGL, OpenCL and OpenAL NGraphics - NGraphics is a cross-platform library for rendering vector graphics on Live-Charts - An Animated, MVVM oriented and modern charting library.
QtSharp - Mono/ Bindings for Qt MahApps. Metro - Toolkit for creating Metro-styled WPF apps Callisto - A control toolkit for Windows 8 XAML applications. Contains some UI controls to make it easier to create Windows UI style apps for the Windows Store in accordance with Windows UI guidelines. ObjectListView - ObjectListView is a C# wrapper around a ListView. It makes the ListView much easier to use and teaches it some new tricks DockPanelSuite - The Visual Studio inspired docking library for WinForms AvalonEdit - The WPF-based text editor component used in SharpDevelop XWT - A cross-platform UI toolkit for creating desktop applications with and Mono Gtk# - Gtk# is a Mono/ binding to the cross platform Gtk+ GUI toolkit and the foundation of most GUI apps built with Mono MaterialDesignInXamlToolkit - Toolkit for creating Material Design styled WPF apps Eto. Forms - Cross-platform GUI framework for desktop and mobile applications in and Mono Dragablz - Dragable, tearable WPF tab control (similar to Chrome) which supports layouts and is full themeable, including themese compatible with MahApps and Material Design. Fluent. Ribbon - Fluent Ribbon Control Suite is a library that implements an Office - and Windows 8-like Ribbon for WPF. Office Ribbon - A library that implements MS Office Ribbon for WinForms. MaterialSkin - Theming WinForms, C# or VB, to Google's Material Design principles. Xamarin. Forms - Build native UIs for iOS, Android and Windows from a single, shared C# codebase. SciterSharp - Create cross-platform desktop apps using not just HTML, but all features of Sciter engine: CSS3, SVG, scripting, AJAX, <video>. Sciter is free for commercial use Empty Keys UI - Multi-platform and multi-engine XAML based user interface library [Free][Proprietary] UWP Community Toolkit - The UWP Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP apps for Windows 10. ScintillaNET - Windows Forms control for the Scintilla text editor component (Scintilla is used by Notepad++) FastColoredTextBox - Fast Colored TextBox is text editor component for . Allows you to create custom text editor with syntax highlighting. It works well with small, medium, large and very-very large files. Avalonia - A multi-platform UI framework (formerly known as Perspex). Modern UI for WPF - MUI - Set of controls and styles to convert WPF applications into a great looking Modern UI apps. WinApi - A simple, direct, ultra-thin CLR library for high-performance Win32 Native Interop with automation, windowing, DirectX, OpenGL and Skia helpers. Neutronium - Build desktop applications using HTML, CSS, javascript and MVVM bindings such as with WPF.
AngleSharp - Complete HTML5 DOM and CSS3 OM construction dotless - port of the Ruby Less CSS lib dotlesscss ExCSS - CSS3 parser library for C# FluentBootstrap - Makes the Bootstrap CSS framework easier to use from ASP MVC or WebPages. HtmlAgilityPack - an agile HTML parser that builds a read/write DOM and supports plain XPath or XSLT LibSass Host - wrapper around the libSass library with the ability to support a virtual file system.
Http. fs - A functional HTTP client for F#. RestSharp - Simple REST and HTTP API client for Flurl. Http - Fluent, portable, testable REST/HTTP client library EasyHttp - HTTP library for C# Refit - The automatic type-safe REST library for Xamarin and RestEase - Easy-to-use typesafe REST API client library, which is simple and customisable. Heavily inspired by Refit RestLess - The automatic type-safe-reflectionless REST API client library for Standard. HttpClientGoodies - utilities for working with HttpClient.
SharpDevelop - A free IDE for programming languages MonoDevelop - MonoDevelop is a cross-platform IDE mostly aimed at Mono/ developers Visual Studio Express - The free lightweight version of Visual Studio for programming. Visual Studio Community - A full-featured IDE Waf DotNetPad - A simple and fast code editor that makes fun program with C# or Visual Basic. Visual Studio Code - Excellent open source editor from Microsoft, based on Electron. Ionide - An Atom Editor and Visual Studio Code package suite for cross platform F# development. Rider - A cross-platform C# IDE based on the IntelliJ platform and ReSharper RoslynPad - A simple C# editor based on Roslyn and AvalonEdit. Consulo - A cross-platform IDE with C# & Java support, fork of IntelliJ IDEA Community Edition.
ImageResizer - Add commands to image URLs to get altered versions in milliseconds. Resizing, editing etc of images in real-time. ImageProcessor - Open-source library to manipulate images on-the-fly. DynamicImage - High-performance open-source image manipulation library for ASP. MetadataExtractor - Extracts Exif, IPTC, XMP, ICC and other metadata from image files. Emgu CV - Cross-platform wrapper for the OpenCV library. DotImaging - Minimalistic imaging portable platform Magick - wrapper for the ImageMagick library. OpenCvSharp - Cross platform wrapper of OpenCV for Framework.
Wix Toolset - The most powerful set of tools available to create your Windows installation experience Squirrel - Squirrel is both a set of tools and a library, to completely manage both installation and updating your desktop Windows application. Chocolatey - like yum or apt-get , but for Windows. Wax - An interactive editor for WiX projects.
i18n - Smart internationalization for ASP MVC MessageFormat - ICU MessageFormat implementation in lets you write contextual UI messages (PCL library) ResX Resource Manager - The most popular free tool to localize all kind of applications with resx-based resources.
CppSharp - Tools to surface C++ APIs to C# Sharpen - Sharpen is an Eclipse plugin created by db4o that allows you to convert your Java project into C# CXXI - C++ interop framework pythonnet - Python and interop framework LegacyWrapper - LegacyWrapper uses a wrapper process to call DLLs from a process of the opposing architecture (x86 or AMD64).
Castle Windsor - Castle Windsor is best of breed, mature Inversion of Control container available for and Silverlight Unity - Lightweight extensible dependency injection container with support for constructor, property, and method call injection Autofac - An addictive IoC container DryIoc - Simple, fast all fully featured IoC container. Ninject - The ninja of dependency injectors StructureMap - The original IoC/DI Container for Spring - Spring is an open source application framework that makes building enterprise applications easier LightInject - A ultra lightweight IoC container Simple Injector - Simple Injector is an easy-to-use Dependency Injection (DI) library for 4+ that supports Silverlight 4+, Windows Phone 8, Windows 8 including Universal apps and Mono. Microsoft. Extensions. DependencyInjection - The default IoC container for ASP Core applications. Scrutor - Assembly scanning extensions for Microsoft. Extensions. DependencyInjection. VS MEF - Managed Extensibility Framework (MEF) implementation used by Visual Studio. TinyIoC - An easy to use, hassle free, Inversion of Control Container for small projects, libraries and beginners alike.
ClearScript - A library that makes it easy to add scripting to your applications. It currently supports JavaScript (via V8 and JScript) and VBScript. Edge. js - Run and Node. js code in-process on Windows, macOS, and Linux Jint - JavaScript interpreter for which provides full ECMA 5.1 compliance and can run on any platform. Jurassic - A implementation of the ECMAScript language and runtime. It aims to provide the best performing and most standards-compliant implementation of JavaScript for .
Essential Diagnostics - Extends the inbuilt features of System. Diagnostics namespace to provide flexible logging NLog - NLog - Advanced and Silverlight logging Logazmic - Open source NLog viewer for Windows ELMAH - Official ELMAH site Elmah MVC - Elmah for MVC Logary - Logary is a high performance, multi-target logging, metric, tracing and health-check library for Mono and . 's answer to DropWizard. Supports many targets, built for micro-services. Log4Net - The Apache log4net library is a tool to help the programmer output log statements to a variety of output targets Serilog - A no-nonsense logging library for the NoSQL era. Combines the best of traditional and structured diagnostic logging in an easy-to-use package. StackExchange. Exceptional - Error handler used for the Stack Exchange network Semantic Logging Application Block (SLAB) - Extends the inbuilt features of System. Diagnostics. Tracing namespace (EventSource class) to log to several sinks including Azure Tables, Databases, files (JSON, XML, text). Supports in-process and out-of-process logging through ETW, and Rx for real-time filtering/aggregating of events. Foundatio - A fluent logging API that can be used to log messages throughout your application. Exceptionless - Exceptionless Client Loupe - Centralized logging and monitoring. [Proprietary] [Free Tier] elmah. io - Cloud logging for web applications using ELMAH. Find bugs before you go live. Powerful search, API, integration with Slack, GitHub, Visual Studio and more. [Free for OSS] [$] BugSnag - Logs errors. Includes useful diagnostic info like stack trace, session, release, etc. Has a free tier. [Free for OSS][$]
Infer - A framework for running Bayesian inference in graphical models. It can also be used for probabilistic programming. [Proprietary] [Free] [Research] Accord - Machine learning framework combined with audio and image processing libraries (computer vision, computer audition, signal processing and statistics). Accord Extensions - Advanced image processing and computer vision algorithms made as fluent extensions. AForge - Framework for developers and researchers in the fields of Computer Vision and Artificial Intelligence (image processing, neural networks, genetic algorithms, machine learning, robotics). Deedle - Data frame and (time) series library for exploratory data manipulation with C# and F# support FsLab - A collection of data science and machine learning libraries for F# and numl - Designed to include the most popular supervised and unsupervised learning algorithms while minimizing the friction involved with creating the predictive models. R Provider - Type provider that exposes R packages and functions in a type-safe way to F# callers F# Data - F# type providers for accessing XML, JSON, CSV and HTML files (based on sample documents) and for accessing WorldBank data Spreads - Series and Panels for Real-time and Exploratory Analysis of Data Streams. Spreads library is optimized for performance and memory usage. It is several times faster than other open source projects.
MarkdownSharp - Open source C# implementation of Markdown processor, as featured on Stack Overflow. F# Formatting - Tools for documenting F# and C# projects. The library contains extensible Markdown parser as a core component. CommonMark - Implementation of CommonMark specification in C# for converting Markdown documents to HTML. Optimized for maximum performance and portability. markdig - A fast, powerful, CommonMark compliant, extensible Markdown processor for .
FluentEmail - A fluent wrapper for System. Mail with Razor templating support. MailKit - A complete cross-platform mail stack including IMAP, POP3, SMTP, authentication and more. Built on top of MimeKit. MimeKit - A cross-platform MIME creation and parser library with support for S/MIME, PGP, TNEF and Unix mbox spools. PreMailer - C# library that moves your stylesheets to inline style attributes, for maximum compatibility with e-mail clients. StrongGrid - Client for SendGrid's v3 API. Not only allows you to send emails, but also allows you to bulk import contacts, manage lists and segments, create custom fields for your lists, etc. Also includes a parser for SendGrid Webhooks.
MathNet - Math is an open source initiative to build and maintain toolkits covering fundamental mathematics, targetting advanced but also every day needs of developers Microsoft Automatic Graph Layout - A set of tools for graph layout and viewing. UnitConversion - Expansible Unit Conversion Library for Core and Framework ALGLIB - ALGLIB is a cross-platform numerical analysis and data processing library. It supports several programming languages (C++, C#, Delphi) and several operating systems (Windows and POSIX, including Linux) [Proprietary] and [Free Edition] AutoDiff - AutoDiff is a library for quickly computing gradients of functions defined by expressions. Mainly useful in numerical optimization.
TagLib# - TagLib# (aka taglib-sharp) is a library for reading and writing metadata in media files, including video, audio, and photo formats NAudio - Playback, decode and encode audio in a variety of file formats such as MP3, MP4, WAV, AIFF, Speex, etc.
C# StatsD Client - C# client for Etsy's StatsD Foundatio - A common interface with in-memory, Redis, StatsD, and Metrics implementations.
Micro Framework Interpreter - Microsoft® Micro Framework (NETMF) for developing embedded applications on small devices using Visual Studio.
Microsoft Ajax Minifier - Contains JS and CSS minifiers which have a highest performance, because its have been specifically designed for . Optionally produce Source Maps for JS code. Web Markup Minifier - library that contains a set of markup minifiers. The objective of this project is to improve the performance of web applications by reducing the size of HTML, XHTML and XML code.
CSharp Pad - A web-based C# REPL with awesome code completion. AzureCrawler - Take HTML Snapshots for your Angular, Ember, Durandal or any JavaScript applications BitSharp - C# Bitcoin Node CSScript - CS-Script is a CLR based scripting system which uses C# as a programming language. CS-Script currently targets Microsoft implementation of CLR ( 2.0/3.0/3.5/4.0/4.5) with full support on Mono. Comes with many additional features, such as script hosting. CsvHelper - Library to help reading and writing CSV files https://github/JoshClose/CsvHelper FlatMapper - A library to import and export data from and to plain text files in a LINQ-compatible way. FluentValidation - A small validation library for that uses a fluent interface and lambda expressions for building validation rules. Valit - Valit is dead simple, fluent validation for Core. Humanizer - Humanizer meets all your needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities LINQPad - a C#/VB/F# scratchpad that instantly executes any expression, statement block or program with rich output formatting and a wealth of features. Also lets you interactively query databases in LINQ. [$] Polly - Express transient-exception-handling and resilience policies such as Retry, Wait-and-Retry, Circuit Breaker, and Bulkhead Isolation in a fluent manner. Fully thread-safe and full async support. (4.0 / 4.5 / Core / Standard / Xamarin). Rant - The Rant Procedural Text Generation DSL berkin. me/rant/ ScriptCS - Write C# apps with a text editor, NuGet and the power of Roslyn! Shielded - Software Transactional Memory (STM) implementation for MSBuild ILMerge task - MSBuild ILMerge task is a NuGet package allows you to use the famous ILMerge utility in automated builds and/or Visual Studio projects. ReactJS - ReactJS is a library that makes it easier to use Babel along with Facebook's React and JSX from C#. Aeron - Efficient reliable UDP unicast, UDP multicast, and IPC message transport - port of Aeron TypeShape - TypeShape is a small, extensible F# library for practical generic programming Streams - A lightweight F#/C# library for efficient functional-style pipelines on streams of data. Warden - Define "health checks" for your applications, resources and infrastructure. Keep your Warden on the watch ByteSize - ByteSize is a utility class that makes byte size representation in code easier by removing ambiguity of the value being represented. ByteSize is to bytes what System. TimeSpan is to time. Jot - a library for persisting and restoring application state (a better alternative to. settings files). Enums - Enums is a high-performance type-safe enum utility library HidLibrary - This library enables you to enumerate and communicate with Hid compatible USB devices in . SystemWrapper - SystemWrapper is library for easier testing of system APIs. Sprache - A simple, lightweight library for constructing parsers directly in C# code YoutubeExplode - Ultimate library for extracting metadata and downloading Youtube videos and playlists. DeviceId - Generate a 'device ID' that can be used to uniquely identify a computer.
Caliburn. Micro - A small, yet powerful framework, designed for building applications across all XAML platforms. Its strong support for MV* patterns will enable you to build your solution quickly, without the need to sacrifice code quality or testability. MVVM Light Toolkit - The main purpose of the toolkit is to accelerate the creation and development of MVVM applications in WPF, Silverlight, Windows Store (RT) and for Windows Phone Catel - Catel is an application development platform with the focus on MVVM (WPF, Silverlight, Windows Phone and WinRT) and MVC (ASP MVC). The core of Catel contains an IoC container, models, validation, memento, message mediator, argument checking, etc. UpdateControls - Update Controls does not require that you implement INotifyPropertyChanged or declare a DependencyProperty . It connects controls directly to CLR properties. This makes it perfect for the Model/View/ViewModel pattern. ReactiveUI - An MVVM framework for that integrates the Reactive Extensions (Rx) framework, enabling developers to build elegant, testable applications using WPF, Windows Store Apps, WP8 or Xamarin. Okra App Framework - An app centric MVVM framework for Windows 8.1 built with dependency injection in mind, including a full set of Visual Studio MVVM templates. Prism - A cross-platform desktop and mobile MVVM development framework. Win Application Framework (WAF) - A lightweight Framework that helps you to create well structured WPF and UWP Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel pattern. MVVMCross - Cross-platform mvvm mobile development framework for WPF, Silverlight for WP7 and WP8, Mono for Android, MonoTouch for iOS, Windows Universal projects (WPA8.1 and Windows 8.1 Store apps). Makes extensive use of Portable Class Libraries (PCL) to provide maintainable cross platform C# native applications. Stylet - Minimal MVVM framework inspired by Caliburn Micro, with good documentation, high test coverage, and its own IoC container Gemini - IDE framework similar in concept to the Visual Studio Shell. Built on WPF, AvalonDock, and Caliburn Micro. Toms Toolbox - Visual Composition framework to easily build modularized MVVM applications based on the Managed Extensibility Framework (MEF). MVVM Dialogs - Framework simplifying the concept of opening dialogs from a view model when using MVVM in WPF or UWP.
AutoMapper - A convention-based object-object mapper in . automapper TinyMapper - A tiny and quick object mapper for . ExpressMapper - A lightweight, lighting fast mapper to map one type of object(s) to another in automated and easy way. ExpressMapper relies completely on the expression trees. AgileMapper - A zero-configuration Object-Object mapper supporting Standard 1.0.
ExcelDna - ExcelDna makes it easier to create and deploy Excel Add-Ins using C#, F# or VB ClosedXML - ClosedXML makes it easier for developers to create Excel 2007/2018 files NPOI - This project is the version of POI Java project at poi. apache/. EPPlus - EPPlus is a library that reads and writes Excel 2007/2018 files using the Open Office XML format (xlsx). Open XML SDK - The Open XML SDK provides open-source libraries for working with Open XML Documents (DOCX, XLSX, and PPTX). DocX - DocX is a library that allows developers to manipulate Word 2007/2018/2018 files, it does not require Microsoft Word or Office to be installed. ExcelDataReader - Lightweight and fast library written in C# for reading Microsoft Excel files (2.0-2007).
Entity Framework 6 - Object-relational mapper that enables developers to work with relational data using domain-specific objects Entity Framework Core - Object-relational mapper that enables developers to work with relational data using domain-specific objects Dapper - A simple object mapper for by StackExchange Dapper Extensions - Small library that complements Dapper by adding basic CRUD operations (Get, Insert, Update, Delete) for your POCOs Dapper. FastCRUD - The fastest micro-ORM extension for Dapper NHibernate - NHibernate Object Relational Mapper Fluent NHibernate - Fluent, XML-less, compile safe, automated, convention-based mappings for NHibernate. FluentMigrator - Fluent Migrations framework for ServiceStack. OrmLite - Light, simple and fast convention-based POCO ORM [Free for OSS] [$] Massive - A small, happy, data access tool that will love you forever. LINQ to DB - The fastest LINQ database access library offering a simple, light, fast, and type-safe layer between your POCO objects and your database. MicroLite ORM MicroLite ORM is a micro Object Relational Mapper for the framework. It is designed to be easy to use, extensible and testable. PetaPoco - A tiny ORM-ish thing for your POCOs AsyncPoco - A long-"awaited" fully asynchronous PetaPoco fork NPoco - Simple microORM that maps the results of a query onto a POCO object. Based on Schotime's branch of PetaPoco Limebean - Hybrid ORM which uses SQL fragments and doesn't require Model Classes. LLBLGen Pro - Entity Modeling solution for Entity Framework, NHibernate, Linq to SQL and its own ORM framework: LLBLGen Pro Runtime Framework. [$][Free Lite version] Insight. Database - Insight. Database is a fast, lightweight, micro-ORM for DbExtensions - Data-access framework with a strong focus on query composition, granularity and code aesthetics.
NuGet - The package manager MyGet - Hosted Package Repository for NuGet, NPM, Bower and VSIX. Also provides CI as-a-Service. [Free for OSS] [$] Paket - A package dependency manager for with support for NuGet packages and GitHub repositories. fsprojects. github. io/Paket/
ITextSharp - iText is a PDF library that allows you to CREATE, ADAPT, INSPECT and MAINTAIN documents in the Portable Document Format (PDF) [$]****[Free for OSS] PdfiumViewer - PdfiumViewer is a PDF viewer based on the PDFium project.
MiniProfiler - A simple but effective mini-profiler for ASP websites Glimpse - The open source diagnostics platform for the web.
SSH - A Secure Shell (SSH) library for , optimized for parallelism. Provides SSH commands, SFTP/SCP uploads and downloads, and SOCKS4/SOCKS5/HTTP proxies. FluentFTP - An FTP and FTPS library for , optimized for speed. Provides extensive FTP commands, file uploads/downloads and FTP proxies. SharpSnmpLib - An open source SNMP implementation for /Mono/Xamarin. Versioin 1, 2c, and 3 are supported. DNS - A library for parsing and serializing DNS messages. Includes a basic DNS client and server.
PushSharp - A server-side library for sending Push Notifications to iOS, OSX, Android, Chrome, Windows Phone, Windows 8, Blackberry, and Amazon devices.
SqlKata - Elegant SQL query builder, that supports complex queries, joins, sub queries, nested where conditions, vendor engine targets and more.
CAP - An EventBus with local persistent message functionality for RabbitMQ or Kafka. NServiceBus - The most popular service bus for Hangfire - Incredibly easy way to perform fire-and-forget, delayed and recurring tasks inside ASP applications RabbitMQ - Implementation of an AMQP client library for C#, and a binding exposing AMQP services via WCF NetMQ - NetMQ is 100% native C# port of ZeroMQ MassTransit - MassTransit is lean service bus implementation for building loosely coupled applications using the Framework. Rebus - Rebus is a lean service bus implementation for , similar in nature to NServiceBus and MassTransit, only leaner RestBus - A service-oriented messaging library for RabbitMQ. RawRabbit - A modern Core library for RabbitMQ. EasyNetQ - An easy to use API for RabbitMQ Warewolf ESB - An easy to use service bus and microservices platform. Easily build applications and services in a visual IDE. Kafka Client - implementation of the Apache Kafka Protocol that provides basic functionality through Producer/Consumer classes. Foundatio - A common interface with in-memory, Redis and Azure implementations. Kafunk - F# Kafka client from Jet.
Rx - The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators Dynamic Data - Reactive Extensions (Rx) for collections.
FluentScheduler - Task scheduler with fluent interface that runs automated jobs from your application NCrontab - Class library for parsing & formatting crontab expressions as well as calculating occurrences of time based on a crontab schedule QuartzNet - Quartz Enterprise Scheduler Hangfire - An easy way to perform fire-and-forget, delayed and recurring tasks inside apps Chroniton - A simple, fully integrable, and customizable library for running strongly typed jobs (tasks) on schedules. DurableTask - This framework allows users to write long running persistent workflows in C# using the async/await capabilities.
AWS SDK - The AWS SDK for enables developers to easily work with Amazon Web Services Azure PowerShell - A set of PowerShell cmdlets for developers and administrators to develop, deploy and manage Microsoft Azure applications Octokit - A GitHub API client library for DropNet - Client library for the Dropbox API.
Elasticsearch - Elasticsearch & NEST PlainElastic - Plain client for ElasticSearch SolrNet - Solr client for SolrExpress) - A simple and lightweight query library for Solr, in a controlled, buildable and fail fast way Lucene - Lucene is a port of the Lucene search engine library, written in C# and targeted at runtime users.
Protobuf - Protocol buffers is the name of the binary serialization format used by Google for much of their data communications Json - Popular high-performance JSON framework for ServiceStack. Text - JSON, JSV and CSV Text Serializers used in servicestack Msgpack-Cli - MessagePack implementation for Common Language Infrastructure Jil - Fast JSON serializer, built on Sigil (used by StackOverflow) ProtoBuf - Generate C# code for protocol buffer serialization from a. proto specification. F# Data - F# type providers for accessing XML, JSON, CSV and HTML files (based on sample documents) and for accessing WorldBank data Bond - cross-platform framework for working with schematized data. It supports cross-language de/serialization and powerful generic mechanisms for efficiently manipulating data. Hyperion - A high performance polymorphic serializer for the framework. FileHelpers - free and easy to use library to import or export data from fixed length or delimited records in files, strings or streams. FsPickler - A fast multi-format message serializer for Migrant - Fast and flexible serialization framework usable on undecorated classes. Utf8Json - Fast and Zero Allocation JSON Serializer for C#(, Core, Unity and Xamarin), this serializer write/read directly to UTF8 binary so boostup performance.
Twilio-csharp - A C#/ Library for sending and receiving phone calls and text messages with Twilio.
Stateless - Create state machines and lightweight state machine-based workflows directly in code Automatonymous - A state machine library for - allows you to write fluent style state machines Appccelerate - State Machine - A powerful state machine library - configured with a fluent API and synchrounous and asynchronous state transition support LiquidState - Efficient asynchronous and synchronous state machines for .
FsBlog - Blog aware, static site generation using F# Pretzel - A site generation tool (and then some) for platforms Sandra. Snow - Jekyll-inspired static site generation for Wyam - A simple to use, highly modular, and extremely configurable static content generator.
C# Style Guide - StackOverflow Q & A on style guides C# Coding Conventions - Official MSDN C# code conventions.
RazorEngine - Open source templating engine based on Microsoft's Razor parsing engine RazorLight - Open source template engine based on Microsoft's Razor parsing engine supporting Standart 2.0 Nustache - Open source library for logic-less templates Stubble - Trimmed down > templates in . Successor of Nustache. DotLiquid - C# port of the Ruby Liquid templating language Mustache Sharp - An extension of the mustache text template engine for .
AutoFixture - AutoFixture is an open source framework for designed to minimize the 'Arrange' phase of your unit tests BDDfy - BDDfy is the simplest BDD framework EVER! Bogus - A simple and sane fake data generator for C#. Based on and ported from the famed faker. js. ExpressionToCode - Use plain C# syntax in assertions that include both the expression expression and subexpression values in the failure message. FakeItEasy - The easy mocking library for https://fakeiteasy. github. io Fluent Assertions - A set of extension methods that allow you to more naturally specify the expected outcome of a TDD or BDD-style test FluentAutomation - Simple Fluent API for UI Automation FsCheck - Random Testing for . Fuchu - A unit-testing library for F# with tests-as-values which makes DSLs extemely easy to create. Machine. Specifications - Machine. Specifications (MSpec) is a context/specification framework that removes language noise and simplifies tests. Moq - The most popular and friendly mocking framework for NBuilder - Rapid generation of test objects NCrunch - An automated continuous & concurrent testing tool for Visual Studio. [$] NSubstitute - A friendly substitute for mocking frameworks NUnit - A unit-testing framework for all languages Rhino Mocks - Dynamic Mocking Framework for Shouldly - Shouldly is an assertion framework which focuses on giving great error messages when the assertion fails while being simple and terse. SpecFlow - Binding business requirements to code xBehave - An xUnit extension for describing your tests using natural language. xbehave. github. io xUnit - A free, open source, community-focused unit testing tool for the Framework. https://xunit. github. io/ Canopy - Canopy is a free, open source F# web automation and testing framework Expecto - A smooth testing framework for F# with tests as values. Unit testing, property based testing, performance testing and stress testing.
Fiddler - The free web debugging proxy for any browser, system or platform Open Live Writer - Blog writer which integrated with WordPress, Blogger, et. الله. Open Live Writer makes it easy to write, preview, and post to your blog. For more information see openlivewriter . CodeHub - CodeHub is the best way to browse and maintain your GitHub repositories on any iOS device! ShareX - ShareX is a free and open source program that lets you capture or record any area of your screen and share it with a single press of a key. It also allows uploading images, text or other types of files to over 80 supported destinations you can choose from. Myrtille - A native HTML4/5 Remote Desktop Protocol client, HTTP gateway written in C# for Opserver - Stack Exchange's Monitoring System CatLight - Build status notifications for TFS/Jenkins/Travis/Appveyor. Cross-platform desktop app based on Core and Electron. [Free][Proprietary] Netling - A load tester client for easy web testing. It is extremely fast while using little CPU or memory. Papercut - Papercut is an open source ( based) test email viewer that runs locally with a built-in SMTP server designed to receive and notify of test email messages. Visual Studio Uninstaller - Uninstall and clean up all components of Visual Studio. Fake JSON Server - Fake REST API for prototyping or as a CRUD Back End. No need to define types, uses dynamic typing. Data is stored to a single JSON file. Has authentication, WebSocket notifications, async long running operations, random generation for errors/delays and experimental GraphQL support. posh-dotnet - PowerShell tab completion for the dotnet CLI.
Lean - Lean Engine is an open-source fully managed C# algorithmic trading engine built for desktop and cloud usage. https://quantconnect/lean/ StockSharp - Trading and algorithmic trading open source platform (stock markets, forex, bitcoins and options). stocksharp.
Atata - Automated web testing full featured framework based on Selenium WebDriver. Managed Windows API - Introspect and automate third-party Windows / VC++ applications without needing its source code.
Web Essentials - Web Essentials extends Visual Studio with lots of new features that web developers have been missing for many years VsVIM - VIM in Visual Studio Nuget Package Manager - NuGet is the package manager for the Microsoft development platform including SideWaffle - A collection of Item Templates for Visual Studio 2018/2018 that makes any web developer's life much easier Resharper - Developer Productivity Tool for Visual Studio [$] Refactoring Essentials - Open source extension for C# and VB refactorings, including code best practice analyzers. CodeContracts - Source code for the CodeContracts tools for Git Diff Margin - Displays live Git changes of the currently edited file on Visual Studio margin and scroll bar Productivity Power Tools - A set of extensions to Visual Studio Professional (and above) which improves developer productivity. VSColorOutput - Color highlighting for Build, Find and Debug output windows. Custom match patterns and colors can be added. Developer Assistant - Developer Assistant for Visual Studio enables developers to find and reuse over 21 million code snippets and code sample projects from within the Visual Studio IDE. CodeLineage - Easy access to a cumulative diff view between file revisions (supports svn, git, mercurial, perforce). OzCode - OzCode is a Visual Studio Extension which cuts down on debugging time and increases productivity by detecting and isolating bugs, making them easy to fix. [$]
CefSharp - HTML5, CSS3 and JS web browser powered by Chromium, for WinForms and WPF.
ASP MVC - ASP is a free web framework for building great web sites and applications FubuMVC - A front-controller style MVC framework for NancyFx - Lightweight, low-ceremony, framework for building HTTP-based services on and Mono IISNode - Host Node. js applications in IIS Suave. IO - Framework/library/web server that makes you cry tears of joy after finishing your project ahead-of-time when you look at the beautiful code you've written in F#. DotVVM - MVVM framework for people who don't like to write JavaScript, with OWIN and ASP Core support and a free extension for Visual Studio 2018 and 2017. Giraffe - Functional (F#) ASP Core micro framework for building rich web applications.
Kestrel - A web server for ASP Core based on libuv EmbedIO - Web server built on Mono and cross-platform XSP - Mono's ASP hosting server. This module includes an Apache Module, a FastCGI module that can be hooked to other web servers as well as a standalone server used for testing (similar to Microsoft's Cassini)
Fleck - Fleck is a WebSocket server implementation in C#. Branched from the Nugget project SignalR - Library for ASP developers that makes it incredibly simple to add real-time web functionality to your applications SuperSocket - SuperSocket is a light weight extensible socket application framework Websocket-Sharp - A C# implementation of the WebSocket protocol client and server WebSocket4NET - WebSocket client for 2.0+, Xamarin, Mono, Silverlight, Windows Phone, & WinRT Crossertech - Provides a great set of tools for you to build real-time applications on the Microsoft plattform and much more. [$] WampSharp - A C# implementation of The Web Application Messaging Protocol - a protocol that provides messaging patterns of Remote Procedure Calls and Publish/Subscribe over WebSockets. NetGain - A high performance WebSocket server library powering Stack Overflow. Websockets. PCL - WebSockets. PCL is a portable class library, profile 259, C# WebSocket implementation.
TopShelf - An easy service hosting framework for building Windows services using .
Data Grid Extensions - Modular extensions for the WPF DataGrid control, like filtering, additional column events, extended star-size column behavior, and more.
-libraries-that-make-your-life-easier - Open Source libraries that make your life easier awesome-LINQ - A curated collection of awesome LINQ libraries, tools, and more. awesome-analyzers - A curated list of Compiler Platform ("Roslyn") diagnostic analyzers and code fixes. C# Algorithms, Data Structures - A list of algorithms and data structures implementations. Awesome Core - A collection of awesome core libraries, tools, frameworks and software ASP Core Library and Framework Support - A list of what libraries and frameworks are currently supported by ASP Core and Core). Awesome Performance - A curated list of awesome Performance books, courses, trainings, conference talks, blogs and most inspiring open source contributors. awesome-ddd - A curated list of Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), Event Sourcing, and Event Storming resources Awesome Unity - A categorized community-driven collection of high-quality awesome Unity assets, projects, and resources. Awesome Xamarin - A collection of interesting libraries/tools for Xamarin mobile projects.
Weekly C# Digest - Weekly email newsletter with manually curated top 5 links from the community.
&نسخ؛ 2018 جيثب، Inc. شروط الخصوصية تعليمات حالة الأمان.
لا يمكنك تنفيذ هذا الإجراء في الوقت الحالي.
لقد سجلت الدخول باستخدام علامة تبويب أو نافذة أخرى. أعد التحميل لتحديث الجلسة. لقد سجلت الخروج في علامة تبويب أو نافذة أخرى. أعد التحميل لتحديث الجلسة.

1 comment: