2010-07-08 28 views
23

मैं एक नया Forth सिस्टम विकसित करना चाहता हूं, जिसका उद्देश्य एक या संभवतः कई रेट्रो कंसोल प्लेटफ़ॉर्म पर गेम विकास को आसान बनाना है। मैं एक फर्थ शुरुआत करने वाला हूं, और यह तय करने में आपकी सहायता की ज़रूरत है कि कौन सा फॉरवर्ड कोडबेस से पोर्टिंग शुरू करना है।से पोर्टिंग शुरू करने के लिए कौन सा फर्थ?

मैं मूल रूप से एक दूसरे के बनाम विशेष फर्थ के गुण/नुकसान की तलाश में हूं। मैंने स्रोत को JonesFORTH के साथ-साथ दोनों की प्रशंसा और आलोचना, और एएनएस पर चर्चाओं को पढ़ा है, और दुर्भाग्यवश दुर्भाग्य से भ्रमित महसूस कर रहा है। फर्थ समुदाय, जो मैं कह सकता हूं, मानकों के अनुपालन के मुद्दे के साथ काफी क्रूर रूप से विभाजित होता है, दोनों शिविरों द्वारा किए गए बहुत अच्छे तर्कों के साथ मानक क्यों एक अच्छा और भयानक बात है। हालांकि मुझे सामान्य व्यावहारिक सलाह के बारे में अच्छी व्यावहारिक सलाह नहीं मिल रही है, सामान्य ज्ञान के अलावा, यह चीजों को अधिक जटिल और ब्लॉटी बनाता है, जो शायद उन्हें होने की आवश्यकता है।

मैं प्रोग्रामर और शौकियों के लिए विकास को आसान बनाने की उम्मीद कर रहा हूं, वर्तमान में असेंबली या सी में विकास की संभावना से डर गया है, इसलिए मैं एक और अधिक सरल फर्थ की ओर झुका रहा हूं, लेकिन मुझे वास्तव में फर्थ के बारे में पर्याप्त जानकारी नहीं है अभी तक एक शिक्षित निर्णय लेने के लिए।

उत्तर

6

मैं इस तरह का हूं कि आप अभी कहां हैं। मैं थोड़ी देर के लिए फर्थ पर पढ़ रहा हूं और यह भी सोचता हूं कि इसमें बहुत सी संभावनाएं हैं - शायद स्क्रिप्टिंग के लिए भी। हालांकि, मैं किसी प्राधिकारी के पास कहीं भी नहीं हूं, लेकिन यहां मेरे विचार हैं।

सबसे पहले, फर्थ अंतिम प्रोग्राम करने योग्य प्रोग्रामिंग भाषा प्रतीत होता है - यहां तक ​​कि लिस्प से भी अधिक। इसके लिए, मुझे यकीन नहीं है कि आपको कितने सी या असेंबली को कोड करने की आवश्यकता होगी। मैं फर्थ में खुद को शब्दावली विकसित करने की दिशा में अधिक झुका रहा था। आखिरकार, इस तरह इसका इस्तेमाल किया जाना चाहिए।

दूसरा, मेरे द्वारा किए गए कार्यान्वयन के दूसरे, मुझे सबसे अच्छा Gforth और Pforth पसंद है।

आप किसका उपयोग कर रहे हैं?

  • Starting Forth
  • Thinking Forth
  • Forth Primer
  • Forth Language
  • Forth Tutorials
  • Pforth Tutorial
  • Gforth Manual
  • :

    अंत में, यहाँ ऑनलाइन आगे पढ़ने मुझे पता चला है की एक सूची है

  • Begin Forth
  • Forth Links
  • WikiForth
  • OLPC Forth
  • Lets Build a Compiler
  • Jones Forth
  • आप किसी भी अन्य लोगों ने पाया है?

    4

    एक बुनियादी फर्थ सिस्टम बहुत छोटा है और इसे तुरंत लागू किया जा सकता है। मुझे लगता है कि निम्नलिखित पृष्ठ आपके लिए बहुत उपयोगी होगा: "A sometimes minimal Forth compiler and tutorial for Linux/i386 systems"। यह एक फर्थ सिस्टम बूटस्ट्रैपिंग पर एक रैखिक ट्यूटोरियल है!

    परिभाषित शब्दों को लागू करना सुनिश्चित करें (संकलन समय पर निष्पादित शब्द)।यही वह जगह है जहां फर्थ की शक्ति आती है; यह वास्तव में विस्तार योग्य बनाते हैं।

    मैंने वास्तव में यह कोशिश नहीं की है, लेकिन मैं एक बार bigFORTH के लिए बस गया क्योंकि यह ओपन सोर्स लाइसेंस के साथ कुछ फर्थों में से एक है। यह भी सक्रिय रूप से बनाए रखा जाता है; उदाहरण के लिए इस साल की शुरुआत में एक रिलीज हुई थी।

    मैंने पिछले कुछ वर्षों में a set of annotated links about Forth एकत्र किया है। इसमें से कुछ सामान ढूंढना मुश्किल है।

    मानक बातों के बारे में: यह 20 साल पुरानी चर्चा है। मुझे लगता है कि वास्तव में बात करने के बजाए कुछ करना महत्वपूर्ण है: सॉफ़्टवेयर लागू करें, हत्यारा उदाहरण प्रदान करें, दस्तावेज लिखना, भाग लेने के लिए अन्य को आमंत्रित करना आदि। चार्ल्स मूर ने Forth chips, machineForth और ColorFORTH पर आगे बढ़कर काम किया है। यदि आप लिंक की एनोटेटेड सूची में "मशीनफर्थ" और "रंगीन" खोजते हैं तो कुछ दिलचस्प लेख और विवरण ढूंढना संभव है। चार्ल्स मूर में अब भी blog है।

    2

    मैं ईफर्थ को शिकार करने की सलाह देता हूं, एक टिंग ने लिखा था। कुछ तरीकों से एक आधुनिक फाग आगे की तरह। उसके पास सी में लिखा गया कर्नेल है, लेकिन ईफर्थ कर्नेल/सिस्टम पहले से ही कई प्लेटफार्मों/सीपीयू में पोर्ट किया गया है जिनमें अधिकांश असेंबली कर्नेल/कोर हैं। हालांकि, इस शांत तरह से आगे फैक्टर कहा जाता है। यह 'गेम के लिए' के ​​रूप में शुरू हुआ और प्रोग्रामिंग भाषा दुनिया के जंगली और मजेदार कोने में समाप्त हुआ

    2

    एक चीज जिसे आप पहले चरण के रूप में आजमा सकते हैं, कुछ उच्च स्तर की भाषा में एक फर्थ दुभाषिया लिखना है जावा, सी ++, पायथन, इत्यादि। इसमें मशीन-स्तरीय फर्थ के मुख्य लाभों की कमी होगी: गति और कॉम्पैक्टनेस, लेकिन अपनी खुद की आभासी मशीन लिखकर, आपको विभिन्न प्रकार के थ्रेडिंग इत्यादि की समझ प्राप्त होगी, फर्थ के विभिन्न स्वादों में।

    अधिकांश नए फर्थ कार्यान्वयन मूल रूप से सीपीयू को वर्चुअल मशीन के रूप में देखकर शुरू किए जाते हैं - इसलिए एक स्पष्ट वर्चुअल मशीन को समझना नहीं है जब किसी व्याख्या किए गए संस्करण से मशीन-कोड संस्करण में जाने के समय आते हैं। साथ ही, मशीन संस्करण बनाने के दौरान आपके पास क्रॉस-रेफरेंस के लिए अपने कोड का एक ब्लूप्रिंट होगा।

    यदि, वास्तव में, आप वास्तव में मशीन कोड के साथ वास्तव में आरामदायक हैं, तो आप शायद उपर्युक्त चरण को छोड़ सकते हैं और केवल मानक मानकों को बंद कर सकते हैं।

    मानकों तक, मैं कुछ मानक चुनता हूं, लेकिन शुरू करने के लिए न्यूनतम रहता हूं। यदि आपको उपयोगकर्ता द्वारा परिभाषित शब्दों के अलावा अन्य चीजों के संदर्भ में मानक से परे जाने की आवश्यकता है, तो आप हमेशा उस दिशा में बढ़ सकते हैं - या तो मानक या गैर मानक - कार्यान्वयन की आवश्यकता है। फर्थ के बारे में सबसे बढ़िया चीजों में से एक यह है कि यह इतना आसान है कि आप पूरे कंपाइलर को फिर से लिख सकते हैं, इससे पहले कि आप उस फॉर्थ कोड को फिर से लिख सकें, जिसे आप इस पर चल रहे हैं।

    1

    Gameduino, आर्डिनो के शीर्ष पर एक गेम डेवलपमेंट प्लेटफ़ॉर्म में, कम से कम CPU (J1 आगे) अंदर चल रहा है।

    J1 forth के वेरिलोग स्रोत कोड के अतिरिक्त, एक पीसी सिम्युलेटर भी है, जो Google go में लिखा गया एक कंपाइलर है, here सर्ज जैटसेव द्वारा।

    जे 1 पहले ही एक्सिलिनक्स एफपीजीए में लागू किया गया है। किसी भी आधुनिक एमसीयू पर जे 1 सीपीयू को "अनुकरण" करना भी संभव है।

    0

    एएनएसआई संगतता के संबंध में, यदि आप अपने स्वयं के आवेदन के लिए फर्थ का उपयोग कर रहे हैं, तो आप जिस चीज की आवश्यकता नहीं है उसे छोड़ सकते हैं, या उन चीज़ों को भी बदल सकते हैं जिन्हें आप पसंद नहीं करते हैं। अप्रत्यक्ष थ्रेडेड फर्थ्स 16 बिट प्रोसेसर पर सबसे कॉम्पैक्ट में से हैं (64-बिटर्स पर और नहीं)। तो यह शायद जाने का रास्ता है।

    अप्रत्यक्ष थ्रेड फर्थ के नामित एफआईजी-फर्थ की पारिवारिकता अभी भी शिक्षित सामग्री है। जोन्सफर्थ फर्थ का एक उदाहरण है जो एक ही नस में जाता है। मैं खुद को सीफर्थ का लेखक हूं जो जोन्सफोर्थ और ऑफफर्थ के लिए प्रेरणाओं में से एक था, जो शायद आपके समय के लायक है क्योंकि यह चीजों को डिजाइन करने के कारणों को समझाने की कोशिश करता है। टिंग का eforth (सभी जगह पर) और Camelforth भी अच्छे उदाहरण हैं। सी और उसके थोक के माध्यम से इसके चक्कर के साथ gforth आप के लिए कम मूल्यवान है।

    एक सामान्य सलाह, यदि आपको कोड शब्द की आवश्यकता है (असेंबलर में कोडित, फर्थ, निम्नतम स्तर नहीं) तो आप इसे चोरी करने से बेहतर होते हैं, फिर पुन: कार्यान्वित करते हैं। 32 बिट द्वारा 16 बिट विभाजित करने के लिए कोड सभी पर सबसे अस्पष्ट प्रोसेसर कहीं भी पाए जाते हैं। तो कुछ फर्थ का संग्रह करें जो आपके द्वारा उपयोग किए जा रहे प्रोसेसर पर लागू किए गए हैं।

    आपको एक प्रोसेसर का चयन करना होगा और यह आपको बहुत अधिक लॉक कर देगा, फिर आप केवल कैमफोर्थ के किसी एक का उपयोग कर सकते हैं (क्योंकि यह सबसे लोकप्रिय प्रोसेसर के लिए है) और अपने एप्लिकेशन से शुरू करें। यदि आप बहुत खुश नहीं हैं तो आप इसे अपना खुद का भविष्य बनने के लिए संशोधित कर सकते हैं। यदि आप 680 9 या रेनेसास प्रोसेसर, या 16 बिट i86 पर हैं तो आप मेरे सीफर्थ को शुरुआती बिंदु के रूप में उपयोग कर सकते हैं।