2012-05-24 13 views
13

मैं आदेश जानने के लिए और हमेशा की तरह वेब तकनीकों का आज Node.js, jQuery, आदि जैसेकार्यात्मक जावास्क्रिप्ट?

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

  • जावास्क्रिप्ट कार्यात्मक रास्ता:, के रूप में बड़े पैमाने पर के रूप में मैं कर सकते हैं जावास्क्रिप्ट के कार्यात्मक भागों का प्रयोग अंडरस्कोर या अन्य कार्यात्मक पुस्तकालयों का इस्तेमाल कर रही। इस दृष्टिकोण के लिए पेशेवर "मां भाषा" सीखना होगा। मेरे लिए विपक्ष यह है कि मुझे वास्तव में इसके वाक्यविन्यास पसंद नहीं हैं और जावास्क्रिप्ट में "कार्यात्मक पहले" कार्यक्रम के लिए बहुत स्वाभाविक महसूस नहीं करते हैं।
  • कॉफीस्क्रिप्ट + अंडरस्कोर: मैंने कॉफ़ीस्क्रिप्ट + अंडरस्कोर का उपयोग करके कुछ उदाहरण देखे हैं जो आकर्षक लगते हैं। उदाहरण के लिए: http://autotelicum.github.com/Smooth-CoffeeScript/SmoothCoffeeScript.html#toc-Chapter-7
    यह पेशेवर होगा कि कॉफ़ीस्क्रिप्ट जंगली रूप से फैल रहा है और जावास्क्रिप्ट वीएम के उपयोग के लिए डिज़ाइन की गई भाषाओं के डिफैक्टो मानक को लगता है। यह वाक्यविन्यास मेरे लिए अधिक प्राकृतिक लगता है और मैं कुछ चीजों को कार्यात्मक तरीके से एक आसान तरीके से प्रोग्राम कर सकता हूं।
    विपक्ष जावास्क्रिप्ट से बहुत दूर हो रहा है (जो वास्तव में मेरे लिए एक समस्या का बहुत अधिक नहीं है) और गैर सचमुच कार्यात्मक के मध्य मैदान में होना चाहिए।
  • Livescript: कोको से व्युत्पन्न (जिसे स्वयं कोफफेस्क्रिप्ट से लिया गया था), इसमें मेरे लिए अधिक आकर्षक वाक्यविन्यास है (यहां तक ​​कि मेरी प्यारी पाइपलाइन '|> ऑपरेटर एफ # से भी है)। पेशेवर यह है कि यह दृष्टिकोण की तरह सबसे कार्यात्मक है। विपक्ष यह होगा कि यह बहुत फैलता नहीं है (मैंने एसओ में एक खोज की है और इसके बारे में वास्तव में कुछ भी नहीं है) और जो कुछ भी दर्शाता है (ज्यादा समुदाय, समर्थन, ट्यूटोरियल आदि नहीं)।

यह सब पर थोड़ी देर के लिए सोच के बाद, मैं कोई वास्तविक निष्कर्ष है, तो यह बहुत अच्छा होगा अगर लोग जावास्क्रिप्ट, CoffeeScript, आदि के साथ काम करने के लिए इस चिंताओं का वास्तविक महत्व पर मेरा मार्गदर्शन कर सकता है के लिए इस्तेमाल किया।

शायद ज़रुरत पड़े ... मैं वास्तव में का उपयोग कर Pit (और इसलिए एफ # का उपयोग जारी रखने) क्योंकि हालांकि यह जावास्क्रिप्ट को संकलित करता है, मुझे लगता है कि इसके बाद के संस्करण की तरह किसी भी जावास्क्रिप्ट पुस्तकालय के साथ एकीकृत नहीं है और नहीं करता है पर विचार किया है जावास्क्रिप्ट पारिस्थितिकी तंत्र के साथ-साथ सूचीबद्ध विकल्पों के साथ एक ही वर्कफ़्लो का पालन करें या एकीकृत करें।

बहुत बहुत धन्यवाद!

+5

दिलचस्प, लेकिन SO के लिए उपयुक्त कोई प्रश्न नहीं है। –

+1

पीएसटी की तरह कहा: शायद एसओ के लिए अच्छी तरह से उपयुक्त सवाल नहीं है। लेकिन वैसे भी: मैं कहूंगा कि यदि आप जावास्क्रिप्ट सीखना चाहते हैं, तो _javaScript_ सीखें जिसमें सभी प्रोटोटाइप/ओओपी/गैर-कार्यात्मक सामान शामिल हैं - जेएस को किसी ऐसे चीज़ में बनाने की कोशिश न करें जिसे आप पहले से जानते हैं या आपके सामने गैर-कार्यात्मक को अनदेखा करते हैं यहां तक ​​कि शुरू करो। मैं आपको कम से कम शुरू करने के लिए प्रोत्साहित करता हूं - अन्यथा आप अमूर्तता और अनुवाद की परतों के खिलाफ कोडिंग करेंगे। आप बाद में उसमें प्रवेश कर सकते हैं। इसके अलावा, स्क्रैच से शुरू करना वह जगह है जहां आप वास्तव में सीखते हैं। – Flambino

+0

@pst, मैंने इसके कारण पहले पोस्ट नहीं किया था ... शायद प्रोग्रामर.स्टैक एक्सचेंज के लिए बेहतर अनुकूल है? यदि ऐसा है, तो मुझे आशा है कि कोई इसे बंद कर देगा और मैं वहां कोशिश करूंगा। –

उत्तर

2

आप मूल रूप से दो विकल्प हैं:

  • CoffeeScript की तरह एक जे एस व्युत्पन्न भाषा
  • जे एस संकलक करने के लिए एक कार्यात्मक भाषा का प्रयोग करें का उपयोग करें

विकल्प 1, के लिए अच्छी तरह से, यह शायद अपने सबसे अच्छा है अन्य जेएस कोड के साथ अंतःक्रियाशीलता के लिए विकल्प। यह वास्तव में आपका सबसे अच्छा विकल्प भी है यदि आप वास्तव में अन्य जेएस डेवलपर्स के साथ काम करना चाहते हैं जो <insert functional language> से परिचित नहीं हो सकते हैं।

यदि आप वास्तव में जेएस से बहुत परिचित नहीं हैं, तो मैं विकल्प 1 का सुझाव दूंगा। यह समझना मुश्किल हो सकता है कि चीजें कैसे काम करती हैं, खासकर यदि आप समझ में नहीं आती हैं तो आप अपनी पसंद के भाषा/उपकरण में बग में भाग लेते हैं जेएस अंडरपिनिंग्स।

विकल्प 2 उपयोग करने के लिए और अधिक दिलचस्प हो सकता है क्योंकि आपको शायद जेएस में अपनी पसंदीदा भाषा का लाभ मिलेगा। आपके द्वारा उल्लेख किए गए पिट प्रोजेक्ट के अलावा, जेएस में हास्केल संकलन करने के कुछ प्रयास हैं जो एक विकल्प भी हो सकते हैं।

विकल्प 2 की डाउनसाइड्स शायद तथ्य यह है कि परियोजनाएं इस दिन तक बहुत उन्नत नहीं हैं (और यह बहुत ही कुशल जेएस कोड में संकलित नहीं हो सकती है।

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

+0

कोई विचार नहीं है कि आप इसका क्या जिक्र कर रहे हैं, लेकिन [क्लोजर] (http://clojure.org/) ज्यादातर एक कार्यात्मक भाषा है और जावास्क्रिप्ट को संकलित करता है। – obmarg

+0

@obmarg: ज्यादातर, क्लोजर जावा वर्चुअल मशीन बाइटकोड में संकलित करता है। जावा (और जेवीएम) के पास मार्केटिंग सिनेर्जी के लिए चुने गए नाम समानता के अलावा जावास्क्रिप्ट के साथ कुछ लेना देना नहीं है। (हालांकि लोगों ने जावा में जावास्क्रिप्ट दुभाषियों को लिखा है, विशेष रूप से राइनो)। ** संपादित करें **: (धन्यवाद, मैं नहीं हूं) हालांकि, क्लोजरस्क्रिप्ट नामक क्लोजर का एक बंदरगाह है जो इसके बजाय जावास्क्रिप्ट को संकलित करता है; यकीन नहीं है कि यह कितना परिपक्व है। –

+0

@ मार्ककिड: मैं एक ही टिप्पणी छोड़ने वाला था, लेकिन फिर मैंने क्लोजर के होमपेज पर इसे पढ़ा * * क्लोजर एक गतिशील प्रोग्रामिंग भाषा है जो जावा वर्चुअल मशीन (और सीएलआर, और जावास्क्रिप्ट) को लक्षित करती है। "* ऐसा लगता है कि वहां एक है क्लोजरस्क्रिप्ट परियोजना। –

2

और फ़ंक्शनल "फ़ंक्शन" की एक लाइब्रेरी के बारे में क्या है, + कॉफ़ीस्क्रिप्ट + अंडरस्कोर;)!

http://osteele.com/sources/javascript/functional/

+0

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

10

मैं शायद थोड़ा पक्षपाती (मैं LiveScript के निर्माता हूँ), लेकिन आप LiveScript की कोशिश करनी चाहिए! मैं वर्तमान में इसके लिए एक मानक पुस्तकालय पर काम कर रहा हूं जो अंडरस्कोर से बेहतर एकीकृत करेगा। जैसा कि आप कहते हैं, अभी तक बहुत से लोग इसका उपयोग नहीं कर रहे हैं, लेकिन एक समुदाय को कहीं से शुरू करना है! जैसा कि आपने बताया है, ऐसा लगता है कि यह अन्य सभी चीजों के बराबर होने का सबसे अच्छा विकल्प है - इसलिए एक गोता लें और इसे आजमाएं!

+0

हाय @gkz! आपसे सीधे सुनकर बहुत अच्छा लगा। मेरी मुख्य चिंता यह है कि आप इसे विकसित करने के थक गए हैं, जारी रखने का समय नहीं है, आदि ... मेरे पास वास्तव में सामान्य कार्यात्मक प्रोग्रामिंग और जावास्क्रिप्ट के बारे में ज्ञान नहीं है जो कि किसी भी महान चीज़ का योगदान करने में सक्षम हो। समर्थन पक्ष पर, क्या आपके पास कोई योजना है? शायद एसओ में कम से कम 'लाइफस्क्रिप्ट' टैग है? मैंने इसे बनाने की कोशिश की लेकिन पोस्ट की आवश्यक संख्या नहीं है। यदि आप पूछते हैं, लाइवस्क्रिप्ट के निर्माता होने के नाते मुझे लगता है कि कोई समस्या नहीं होगी। अभी मैं सीएस + फंक्शनल/अंडरस्कोर या लाइवस्क्रिप्ट की तरफ झुका रहा हूं। हम्म ... –

+0

एलएस के साथ बात यह है कि, सबसे खराब स्थिति में यह अनजान हो जाता है, मैं हमेशा अनुवादित जावास्क्रिप्ट कोड का उपयोग कर सकता हूं और परियोजनाओं को सीधे जेएस में जारी रख सकता हूं या किसी भी जावास्क्रिप्ट का उपयोग कॉफीस्क्रिप्ट अनुवादकों को भी कर सकता हूं यदि मैं चाहता हूं कॉफीस्क्रिप्ट के साथ जारी रखें। मैं समय खो दूंगा लेकिन कोड नहीं, जो हमेशा एक अच्छी बात है। क्या आपने एफ # की किसी भी समवर्ती तकनीक को शामिल करने के बारे में सोचा है? मुझे वास्तव में पसंद है कि वे उस विभाग में क्या कर रहे हैं, हालांकि जावास्क्रिप्ट वीएम की सीमाएं इस मामले में हैं ... और आखिरी लेकिन कम से कम नहीं, एलएस में डिफ़ॉल्ट रूप से मूल्य अपरिवर्तनीय हैं? Thx! –

+1

मैं लगभग हर दिन [टैग: लाइफस्क्रिप्ट] जांचूंगा और किसी भी प्रश्न का उत्तर दूंगा। लाइवस्क्रिप्ट में अन्य योगदानकर्ता हैं, जिनके प्रोजेक्ट लाइवस्क्रिप्ट को फोर्क किया गया है। अगर किसी कारण से मैं जारी रखने में सक्षम नहीं हूं तो मैं उन्हें व्यवस्थापक अधिकार सौंप दूंगा। – gkz

संबंधित मुद्दे