2011-03-04 29 views
8

मैं एमएल सीखना और उपयोग करना चाहता हूं लेकिन वहां कई कंपाइलर हैं। मैं की जरूरत है:एमएल सीखना/प्रयोग करना। मुझे किस प्रणाली का उपयोग करना चाहिए?

  • गति
  • कम स्मृति उपयोग
  • परिवर्तनशील सरणियों और रिकॉर्ड प्रकारों
  • निरंतरता
  • उत्पादन कोड
  • आसान ffi
  • तारीख तक के लिए तैयार सूत्रण
  • ... सहायता ful पुस्तकालयों
  • कुछ हद

लिए पोर्टेबल मैं की जरूरत नहीं है:

  • वस्तुओं खिड़कियों

उदाहरण के लिए मैं OCaml, OCaml Batteries include पाया के लिए

  • जीयूआई
  • समर्थन और MLton। मेरे लिए कोई सलाह जो मुझे चुननी चाहिए?

  • +0

    लिए पोर्टेबल मुझे लगता है कि OCaml बैटरियों शामिल एक ही भाषा है, लेकिन एक OCaml developement मंच नहीं है। – phimuemue

    उत्तर

    5
    खैर MLton के लिए

    :

    • स्पीड
      • पूरे कार्यक्रम optimisa टियां निश्चित रूप से आपको ओकैमल की तुलना में बेहतर गति देते हैं, हालांकि प्रत्येक पुनर्मूल्यांकन के लिए आप जो दंड देते हैं वह काफी परेशान हो सकता है। MLton और OCaml
    • का एक सरल अनौपचारिक तुलना थ्रेडिंग
      • के लिए this link देखें कोई समस्या नहीं है यहाँ, आप या तो MLton.Thread या CML
    • परिवर्त्य सरणियों और रिकॉर्ड प्रकारों
    • निरंतरता
      • मैं इसे पहले उपयोग नहीं किया है, लेकिन यह presentSML/NJ
    • उत्पादन कोड
      • जाहिर पुस्तकालयों आप उपयोग पर निर्भर करता है के लिए तैयार के रूप में है। लेकिन आधार पुस्तकालय ठोस है, हालांकि एमएलटन का अपना additions है और कुछ अन्य लोगों के पास here सूचीबद्ध एक्सटेंशन के साथ रेपो हैं। हालांकि MLton library project में कुछ अच्छा कोड है। हालांकि, इस तरह के कई पुस्तकालयों/एक्सटेंशन के साथ, वे स्वयं द्वारा बनाए गए अन्य एक्सटेंशन पर भरोसा करते हैं और इस प्रकार केवल उनके छोटे हिस्सों का उपयोग करना मुश्किल होता है।
    • आसान ffi
      • ForeignFunctionInterface और NoLonger-FFI महान हैं। हालांकि मुझे बड़े सी कोडबेस पर एनएल-एफएफआई के साथ गति के मुद्दे हैं, जो मुझे लगता है कि एमएलटन प्रेत प्रकारों को पूरी तरह से हटा नहीं रहा है। हालांकि यह सिर्फ एक अनुमान है, मैंने कुछ गलत किया होगा।
    • कुछ हद
    +1

    ध्यान दें कि एमएलटन, जबकि इसमें "धागे" हैं, वास्तव में उन धागे को एक साथ निष्पादित नहीं करते हैं। वे सभी एक ओएस धागे में निष्पादित करते हैं। इस प्रकार, आपको एकाधिक CPU कोर से कोई लाभ नहीं मिलता है। –

    +0

    ओकंपल के बारे में mlton.org पृष्ठ भी स्वीकार करता है कि ओकंपल mlton से तेज़ संकलित करता है: http://mlton.org/OCaml – johnbakers

    9

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

    अधिक आम तौर पर, एसएमएल बल्कि अधिक सुरुचिपूर्ण होता है, जबकि ओकैमल में कुछ और उन्नत सुविधाएं, क्विर्क और उपयोगकर्ता हैं। प्रदर्शन के अनुसार वे दोनों अच्छे हैं।

    +0

    +1 "अधिक उन्नत सुविधाएं, quirks, और उपयोगकर्ता।" (और आम तौर पर अच्छे उत्तर के लिए) –

    +1

    इसके अलावा, @knivil, आपको पता होना चाहिए कि ओकैमल का थ्रेडिंग समर्थन इस समय समानांतर गणना धागे का समर्थन नहीं करता है - एक ताला है जो एकाधिक धागे समानांतर में चलने से रोकता है। ओकैम धागे अभी भी आई/ओ के लिए काफी उपयोगी हैं (मानक I/O मॉड्यूल आईओ के लिए अवरुद्ध करते समय थ्रेड लॉक जारी करते हैं), और सी या फोरट्रान कोड अपने स्वयं के थ्रेड में चला सकता है जबकि अन्य ओकैमल कोड चलता है।वास्तविक समांतरता/समरूपता के लिए, प्लाज़्मा (वितरित नक्शा/कम), फ़ैक्टोरी (समानांतर गणना) हैं, और ओकैमलनेट 3 में मल्टीप्रोसेसिंग सुविधाएं हैं। –

    5

    OCaml संतुष्ट अपनी सूची में से सभी आवश्यकताओं को निरंतरता के अपवाद के साथ,

    (बेशक OCaml के वस्तुओं और बहुरूपी वेरिएंट प्रस्तुत नहीं कर रहे हैं this दोनों भाषाओं के ज्यादातर आम टुकड़े की एक वाक्यात्मक तुलना के लिए देखें।) । यह तेज़, मेमोरी कुशल, पोर्टेबल है, इसमें हल्के सहकारी धागे के लिए पॉज़िक्स थ्रेड बाइंडिंग और अच्छी लाइब्रेरी हैं। मानक पुस्तकालय बहुत सीमित है लेकिन कई third-party libraries हैं।

    ऐसी कई कंपनियां हैं जो सभी प्रकार की चीजों के लिए उत्पादन में ओकैमल का उपयोग करती हैं। कुछ कंपनियों का उल्लेख Caml consortium वेबसाइट पर किया गया है।

    मैं भी कुछ उत्कृष्ट OCaml अनुभव रिपोर्ट को पढ़ने की सलाह:

    OCaml at Jane Street Capital

    OCaml at XenSource

    +2

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