मैंने गलती से एक स्कीम कर दी
“accidentally” एक Scheme-जैसी भाषा बना लेने वाले एक चंचल ब्लॉग पोस्ट ने इस पर चर्चाएँ छेड़ दीं कि वास्तव में Scheme किसे कहा जाए, और Greenspun’s rule तथा JavaScript की उत्पत्ति—जो कभी ब्राउज़र के अंदर Scheme बनने वाली थी, लेकिन मार्केटिंग और syntax संबंधी निर्णयों से सीमित हो गई—भी चर्चा में आए। टिप्पणीकार इंटरनेट स्लैंग से अपरिचित पाठकों के लिए मीम-आधारित, क्रिया-रहित शीर्षक की व्याख्या करते हैं, और Common Lisp, Scheme, Clojure, Janet, तथा Racket जैसे विभिन्न Lisp dialects को सीखने और इस्तेमाल करने पर संसाधन, किस्से, और राय साझा करते हैं। थ्रेड में macro systems और garbage collection से लेकर मज़े के लिए compilers और interpreters लिखने के आनंद (और कभी-कभी पीड़ा) तक, Lisp-family भाषाओं की वैचारिक शक्ति और सांस्कृतिक विचित्रताएँ दोनों उजागर होती हैं।
शीर्षक, मीम्स, और जानबूझकर की गई खराब व्याकरण
- कई टिप्पणियाँ “I accidentally a scheme.” में गायब क्रिया के बारे में पूछती हैं।
- अन्य लोग इसे एक पुराना इंटरनेट मीम (“I accidentally [missing verb] X”) बताकर समझाते हैं और इसे मिलते-जुलते मीम्स (“one does not simply…”, LOLcat शैली) से जोड़ते हैं।
- कई ESL वक्ताओं को यह प्रयोग उलझाने वाला या चिढ़ाने वाला लगता है; जबकि कुछ तर्क देते हैं कि यह चंचल, अनौपचारिक लहजा दिखाता है और जानबूझकर किया गया शब्द-खेल है, गलती नहीं।
- कुछ लोग इसे भाषावैज्ञानिक रूप से विश्लेषित करते हैं (छूटी हुई क्रिया, adverb-as-verb मज़ाक, garden-path प्रभाव)।
स्कीम क्या माना जाए (और JavaScript का उससे संबंध)
- इस पर बहस कि JavaScript “a Scheme” है, “Scheme-influenced” है, या बिल्कुल Scheme नहीं है।
- एक पक्ष कहता है कि Scheme स्पष्ट रूप से परिभाषित है (अपने reports के माध्यम से), इसलिए शुरुआती JS उस श्रेणी में नहीं आता।
- दूसरे लोग नोट करते हैं कि सम्मानित भाषा-डिज़ाइनरों ने JS को Scheme कहा है, और तर्क देते हैं कि वर्गीकरण धुंधला और कुछ हद तक निरर्थक है।
- ऐतिहासिक किस्से: JS शुरू में ब्राउज़र के अंदर Scheme के रूप में बनाया जाना था, फिर प्रबंधन और मार्केटिंग के कारण बदला गया; इसे “Lisp in Java clothing” कहा गया।
- Greenspun’s rule का उल्लेख होता है: जटिल सिस्टम/DSL समय के साथ “accidentally a Scheme” बन जाते हैं।
S-Types और S-Expressions
- एक टिप्पणीकार को शोध इंटर्नशिप के दौरान सुने गए अस्पष्ट “S-types” याद आते हैं: मूलतः अच्छी तरह निर्दिष्ट S-expressions, जो डेटा इंटरचेंज फ़ॉर्मेट के रूप में इस्तेमाल होते थे।
- एक अन्य इसे क्रिप्टोग्राफ़िक सिस्टम्स (SPKI/SDSI) के लिए मानकीकृत S-expression syntax से जोड़ता है; और आश्चर्य जताता है कि वह spec फिर से जीवित हुआ है।
Lisp सीखना और इस्तेमाल करना
- Lisp सीखने के लिए काफ़ी उत्साह दिखाया गया है; कई लोग कहते हैं कि Lisp प्रोग्रामर ज़्यादा मज़ा लेते दिखते हैं।
- सुझाव:
- Common Lisp: तेज़, परिपक्व, शक्तिशाली tooling।
- Clojure: अच्छे नौकरी के अवसर; immutability और elegant composition सिखाती है; puzzle sites की भी प्रशंसा।
- Racket: खास तौर पर आनंददायक बताया गया।
- Janet: हल्की, embeddable; मज़ेदार community, लेकिन traditional cons cells नहीं हैं, इसलिए कुछ लोगों को कम “lispy” लगती है।
- कई लोग SICP और उसकी lectures की सिफ़ारिश करते हैं।
- “अपना Lisp खुद लिखो” वाले प्रोजेक्ट्स (जैसे MAL) सीखने के रास्ते के रूप में सुझाए जाते हैं, लेकिन कुछ लोग चेतावनी देते हैं कि अपना dialect अकेले गढ़ने से mainstream Lisp संस्कृति और अवधारणाओं की समझ सीमित हो सकती है।
इम्प्लीमेंटेशन विवरण, GC, और data structures
- REPLs, image-based development, और restarts पर चर्चा होती है, जिन्हें Lisp अनुभव का “मज़ेदार” हिस्सा माना जाता है।
- कुछ लोगों को Common Lisp का image/distribution मॉडल पसंद नहीं; दूसरे source-driven workflows से इसे कामचलाऊ बनाते हैं।
- Janet के array/tuple फ़ोकस के कारण linked-list बनाम array performance पर बहस होती है; कुछ का कहना है कि linked lists बहुत कम मामलों में सही उत्तर होती हैं, जबकि दूसरे problem-dependent trade-offs पर ज़ोर देते हैं।
- Garbage collectors पर संक्षिप्त चर्चा होती है: एक टिप्पणीकार सामान्य रूप से GC के खिलाफ़ है, जबकि अन्य वैकल्पिक GCs (जैसे Whiffle) में रुचि और दूसरे प्रोजेक्ट्स में GCs का परीक्षण करने की बात करते हैं।
लिंक्ड लेख की लेखन-शैली
- कई लोग निबंध की prose की प्रशंसा करते हैं: चंचल, सघन, और “pompous in a good way.”
- कुछ लोग कहते हैं कि यह शैली ब्लॉग्स के लिए आनंददायक है, लेकिन तकनीकी दस्तावेज़ीकरण के लिए खराब होगी।