ما هي الأدوات التي تم إنشاؤها باستخدام أنفسهم ؟ [مغلقة]

StackOverflow https://stackoverflow.com/questions/258740

  •  06-07-2019
  •  | 
  •  

سؤال

أنا غريبة عن ما هي الأدوات المستخدمة في بناء النسخة المقبلة من أنفسهم.

على سبيل المثال ، دلفي طالما ادعى "دلفي هو مكتوب في دلفي".

أفترض Visual Studio هو مكتوب باستخدام Visual Studio.

ما هي بعض الأمثلة الأخرى من الأدوات التي كتبت في أنفسهم ؟

هل كانت مفيدة؟

المحلول

Bjarne Stroustrup المذكورة في تصميم وتطور C++ أن أول برنامج التحويل البرمجي C++ كان مكتوب في C++.

لقد لاحظت هذا أيضا سؤال في أسئلة وأجوبة:

أول برنامج التحويل البرمجي C++ (Cfront) كان مكتوب في C++.أن بناء هذا أولا تستخدم C لكتابة "ج مع الطبقات"-إلى-ج المعالج."ج مع دروس" كان ج اللهجة التي أصبحت فورا الجد C++.أن المعالج ترجمة "ج مع الطبقات" بنيات (مثل فصول والمنشئات) إلى C.كان التقليدية المعالج الذي لم فهم كل من اللغة اليسار أكثر من نوع التحقق من ج مترجم القيام به ، ترجمة فرد يبني دون إكمال المعرفة.ثم كتب أول نسخة من Cfront في "ج مع الطبقات".

نصائح أخرى

ومن المثير للاهتمام، وVB.NET & C # المجمعين مكتوبة أنفسهم في غير المدارة C ++ (مما أدى إلى فريق C ++ تي شيرت: "يا مترجم لك جمعت"). وC # يأمل الفريق أن يكون لها بالكامل المدارة C # استضافت C # مترجم VS2010.

وهذا هو خارج الموضوع، ولكن بالمعنى الدقيق للكلمة، بل هو مثال للأداة التي تبني نفسها.

reprap - آلة النماذج 3D مفتوحة المصدر، الذي مؤخرا أعطى "الولادة" إلى "أول كاملة لها تعمل نسخة تكرارها".

وأنا أحب هذا النوع من الاشياء.

وبشكل عام تحدث، والمجمعين C مكتوبة عادة في C ... * يتم تجميع حبات لا شىء على * لا شىء، وما إلى ذلك.

وبالإضافة إلى ذلك، هناك من pypy المشروع الذي يوفر مترجم Python مكتوبة في بيثون.

ومتى كانت دول مجلس التعاون الخليجي (مترجم جنو C http://gcc.gnu.org/ ) لا على نطاق واسع، كان عليك أن ترجمة ذلك من مصدر، وتجميع مترجم stage1، ثم ترجمة stage2 مع stage1، حتى يكون لديك مترجم النهائي. أفترض أنه يجب أن يكون نفس اليوم.

وهنا مثال آخر: C # مترجم مونو هو النفس استضافة - أي انها مكتوبة في C # ويستخدم لتجميع نفسها.

الكلب فودينج يشير إلى ممارسة المزيد العامة للشركة باستخدام المنتجات الخاصة بها داخليا، وخصوصا خلال تطورها.

والكثير من الناس ترغب في النظر في كيفية <لأ href = "http://www.cs.aau.dk/~normark/prog3-03/html/notes/languages_themes-list-in-lisp.html" يختلط = "نوفولو noreferrer"> يمكن تنفيذها اللثغة في اللثغة .

صرير هو تطبيق من Smalltalk-80 كتب في حد ذاته.

<اقتباس فقرة>   هو مكتوب

وحتى آلة افتراضية تماما في من Smalltalk مما يجعل من السهل لتصحيح وتحليل والتغيير.

ومنذ فترة طويلة مكتوبة مترجم جافا صن في جاوة. ومع ذلك، الأخيرة عمل يكتب مترجم JIT في جاوة كذلك. هذا هو العنصر الذي يحول JVM رمز بايت جافا لتعليمات معالج الأم.

ونحن نستخدم لتطوير استخدام REALbasic الذي. يتم كتابة IDE في حد ذاته، أو حتى لقد تؤدي I الاعتقاد.

وشركة الخليج القابضة، مترجم هاسكل، هو في الغالب كتب في هاسكل.

TCC هو آخر المترجم C-استضافة الذاتية ل x86 و ARM. مطالبتها إلى الشهرة ويجري، أيضا، صغيرة (100K أو نحو ذلك لالمعالج، مترجم، المجمع، ورابط).

أود أن نفترض أن أي حد كبير أداة هذا جزء من نموذجية عملية التنمية ستشارك في تنميته ، إلى أي مدى ممكن.وهذا يشمل:

  • بعض لغات البرمجة وخصوصا المترجمة منها
  • ايديس
  • النص المحررين
  • أنظمة التحكم في الإصدار
  • علة بتتبع
  • بناء أنظمة

إذا كنت على بناء فريق واحد من هذه الأدوات ، وكنت غير النامية لفترة محددة مكانة هذا لا ينطبق على فريق العمل الخاص بك, أنا لا أعرف لماذا كنت لا تستخدم لبناء نفسها.بعد أن المطورين يمكن المستخدمين من المنتج هي واحدة من أفضل الطرق للعثور على التحسينات الممكنة.

لوأميغا أو إس كان هناك مترجم الأساسية طرف ثالث (لا تذكر الاسم) التي يمكن في وقت لاحق شراء مترجم. تم تسليم مترجم كمصدر، لذلك كان لديك لاستخدام مترجم لتشغيل مجمع لتجميع نفسها ...

ليستشهد كينت بيك:

<اقتباس فقرة>   

... قد يبدو قليلا مثل أداء عملية جراحية في الدماغ على نفسك.

وVisual Studio ثم فريق مؤسسة خادم بناء أنفسهم. انه دعا تجربة استخدام ، وهو مصطلح إذا لم تنشأ في Microsoft، فمن المؤكد <لأ href = " http://weblogs.asp.net/scottgu/archive/2003/02/21/2743.aspx "يختلط =" نوفولو noreferrer "> يحب

تطبيقات أوراكل اكسبرس : عبارة عن أداة تطوير تطبيقات الويب التي بنيت في حد ذاته.

بنيت الكسوف IDE عموما وتطويرها باستخدام الكسوف IDE.

ومن المعتاد إلى حد ما أن يكون مترجم لغات مكتوبة في لغته الخاصة. وهذا ما يسمى استضافة النفس أو <وأ href = "HTTP: // داخلي. wikipedia.org/wiki/Bootstrapping_(compilers) "يختلط =" نوفولو noreferrer "> إلباس الحذاء .

Maven2 بنيت باستخدام Maven2. حسنا، انها لم تبن (أي كتب ) باستخدام نفسها، وإنما هي أداة لبناء (أي ترجمة ) مشروع، ولكنه يستخدم التعليمات البرمجية الخاصة به لتجميع .. .

ولقد دهشت مع JSLint

وباختصار فقد وصفت بأنها "مترجم" جافا سكريبت باستخدام جافا سكريبت.

وأنا بناء مولد رمز القائمة على IDE، وأنا استخدامه لبناء نفسها. إذا الواقع، كما فعل Stroustrup، وأنا أولا بناء نموذج مولد صالح وباستخدام ما قبل المعالج لبناء رمز النهائية C ++ إلى ترجمة. مرة واحدة لدي نسخة عمل جيدة من IDE، سأبدأ استخدامه لبناء إصدارات أخرى من نفسها.

وانها مثل إعطاء بعدا جديدا لمعنى "البرمجة متكررة"!

وAFAIK يفعل OpenJDK بناء نفسه أولا مع جافا المثبتة وبعد ذلك مع نفسه.

وبطبيعة الحال يستخدم فريق Jetbrains IDE الخاص بها فكرة IntelliJ لتطوير هذا IDE.

وافترض أن هذا ينطبق على معظم البائعين IDE.

وبقدر ما أعرف، عند بناء EMACS من المصدر، وألبس الحذاء كافة التعليمات البرمجية ELISP. لقد وجدت أن يذكر تماما.

وليس تماما ما كنت طالبا، ولكن بيئة تطوير كاملة للثورة http://www.runrev.com بنيت استخدام الثورة نفسها، وتتعرض بشكل كامل المصدر (باستثناء أجزاء صغيرة أن فرض الترخيص) في شكل المصدر. حتى إذا كنت لا تحب الطريقة التي يتم بها تنفيذ بيئة ديف، يمكنك تغييره. العثور على خطأ، إصلاحه. يمكنك أيضا بسهولة بناء أدوات إضافية للتنمية ودمجها.

وادا والرابع

وأعطى من Smalltalk-80 إجابة زيادة طفيفة. أفضل، المثال الأكثر أناقة أستطيع أن أفكر في. يذكر السؤال لي أيضا من مشكلة تتعلق قليلا أن تستخدم لتكون شعبية: كتابة البرنامج الذي النواتج نفسها. لا نفس المستوى من إلباس الحذاء، ولكن قليلا من المرح اللغز البرمجة للتسلية الخاص بك. ربما لم يكن ممكنا في جميع اللغات؟

ووWATCOM C القديم / C ++ تم بناء المجمع باستخدام نفسها.

أور-مخطط هو مثال جيد ل<م > صغيرة مترجم غير بديهي مكتوبة في حد ذاته. أن الروابط الصفحة إلى عدة مصادر جيدة أكثر في هذا السياق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top