आरक्षित शब्दों से बचने के लिए जानबूझकर गलत वर्तनी


45

मैं अक्सर ऐसे कोड देखता हूं जिनमें सामान्य शब्दों के जानबूझकर गलत वर्तनी शामिल होते हैं जो बेहतर या बदतर के लिए आरक्षित शब्द बन गए हैं:

  • klassया clazzके लिए वर्ग :Class clazz = ThisClass.class
  • kountSQL में गणना के लिए :count(*) AS kount

व्यक्तिगत रूप से मुझे लगता है कि यह पठनीयता कम हो जाती है। अपने स्वयं के अभ्यास में मुझे बहुत सारे मामले नहीं मिले हैं जहाँ एक बेहतर नाम का उपयोग नहीं किया जा सका है - itemClassया recordTotal

कक्षा के लिए JavaDocs का एक उदाहरण मापदंडों में यह दिखाता है:

 public <U> Class<? extends U> asSubclass(Class<U> clazz)

क्या यह उचित उपयोग का मामला दिखाता है?


9
रिकॉर्ड के लिए: पायथन में, clsएक सामान्य (वास्तव में, एक मुहावरेदार) नाम है जो वास्तविक कक्षाओं से संबंधित चर / तर्कों के लिए है (जिन्हें आप classकीवर्ड के साथ घोषित करते हैं और जो सब कुछ एक उदाहरण है)।

14
आपको पसंद नहीं है typedef char ínt?
जेफ

14
@ मंटू तुम सही हो। मुझे इसके लिए कंपाइलर एरर्स भी मिलते हैं iñt। विश्व प्रभुत्व के लिए मेरी योजना है।
जेफ

1
मैंने इस नियम को तोड़ा है ... और अब मुझे शर्म आती है।
jmq

3
यह मत करो। मैं ईमानदारी से कह सकता हूं कि मैंने ऐसा पहले कभी नहीं देखा है, और अगर मैंने किया है, तो मैं तुरंत इसका नाम बदल दूंगा। बस संक्षिप्त आप अगर है एक गैर-वर्णनात्मक चर नाम (उपयोग करने के लिए Class c)।
कोडी ग्रे

जवाबों:


63

IMHO, यह एक बहुत बुरा विचार है। आरक्षित शब्द एक कारण के लिए आरक्षित हैं, और ऐसा करने से पठनीयता कम हो जाती है।

मैं आपके दूसरे बिंदु से भी पूरी तरह सहमत हूं। एक चर का नामकरण class, भले ही आप इसे कर सकते हों, यह नामकरण के समान ही बुरा होगा tmpया a। किस तरह की क्लास? किस वर्ग का? नाम वर्णनात्मक होना चाहिए।


15
"आरक्षित शब्द एक कारण के लिए आरक्षित हैं" <- यह। (जो, विडंबना से पर्याप्त है, आरक्षित है।)
trycatch

16
+1 क्योंकि आप सही हैं। लेकिन अगर आप क्लासरूम शेड्यूलिंग सॉफ्टवेयर, या कुछ और लिख रहे हैं, तो क्लास एक वैध वैरिएबल या क्लास नेम हो सकता है ...
CaffGeek

8
भावहीन। " आरक्षित शब्द एक कारण के लिए आरक्षित हैं ", जो यह है कि भाषा डिजाइनर आलसी हैं। काफी परिष्कृत भाषाएँ हैं जहाँ शब्द केवल उन विशिष्ट स्थानों पर आरक्षित हैं जहाँ उनका उपयोग किया जाता है। लेकिन रिची ने इस प्रवृत्ति की शुरुआत की जब उसे सी के लिए एक हल्के संकलक की आवश्यकता थी, और अधिकांश भाषा डिजाइनरों ने इसे वहां से सीखा है।
रॉस पैटरसन Ross

14
नहीं रॉस, यह इसलिए है क्योंकि प्रोग्रामर (और सामान्य रूप से पाठक) चीजों की एक अपेक्षा रखते हैं, जिसका अर्थ स्पष्ट रूप से अस्पष्ट अर्थ है (यही वजह है कि विदेशी भाषा सीखना अक्सर इतना कठिन होता है, सभी चीजें डबल अर्थ के साथ, या आपके द्वारा उठाए गए भाषा से अलग अर्थ रखती हैं) बचपन में जहां आप उन अस्पष्टताओं पर कभी ध्यान नहीं देते क्योंकि वे आपकी सांस्कृतिक विरासत का हिस्सा हैं)।
jwenting

3
@AlexanderMorou नोप, और न ही अधिकांश भाषा डिजाइनर हैं, वे सिर्फ किसी और के डिजाइन के साथ शुरू करते हैं। लेकिन Algol, Fortran, PL / I, Rexx और अन्य भाषाओं को C पर आधारित नहीं देखें, और आप देखेंगे कि आरक्षित शब्दों के बिना व्याकरण निश्चित रूप से संभव है, बस कठिन। रिची के पास एक अच्छा कारण था - यूनिक्स के लोगों ने महसूस किया कि कीस्ट्रोक के हर मामले में, और एक पीडीपी -11 पर, प्रत्येक सीपीयू चक्र ने मायने रखा। आज? इतना नहीं।
रॉस पैटरसन ने

21

पायथन की स्टाइल गाइड इस समस्या को विशेष रूप से बताती है, और सुझाव देती है:

यदि आपका सार्वजनिक विशेषता नाम किसी आरक्षित कीवर्ड से टकराता है, तो अपने विशेषता नाम में एकल अनुगामी अंडरस्कोर संलग्न करें। यह एक संक्षिप्त या दूषित वर्तनी के लिए बेहतर है।

यह एक बहुत अच्छा सामान्य नियम लगता है, यह मानते हुए कि यह किसी विशेष भाषा के शब्दार्थों के साथ संघर्ष नहीं करता है।


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

18
@Wayne: जब unionआप एक कीवर्ड (C के रूप में) है तो यूनियन-यूनियन स्ट्रक्चर में यूनियन ऑपरेशन का नाम कैसे रखेंगे ? क्या आप इसे fooसिर्फ इसलिए कह रहे हैं क्योंकि यह दिखना नहीं चाहिए union?
फ्रेड फू

OTOH, clsकक्षा विधि के लिए मानक तर्क नाम है। उदाहरण के लिए Django में ऑब्जेक्ट्स में .idविशेषता होती है, जो idबिल्ट-इन फ़ंक्शन के साथ संघर्ष करता है।
vartec

1
@GoloRoden मैंने कभी किसी को यह कहते नहीं सुना कि वे संघ की गणना करते समय दो सेट "एकजुट" कर रहे हैं। यह सिर्फ लिंगो का हिस्सा नहीं है। "मर्ज" बेहतर होगा, लेकिन एक mergeविधि को अभी भी दस्तावेज़ीकरण की आवश्यकता होगी, जिसमें स्पष्ट रूप से कहा गया है कि यह संघ को लागू करता है और विशुद्ध रूप से तकनीकी कारणों से इसका नाम बदल दिया गया।
फ्रेड फू

2
@GoloRoden मरियम-वेबस्टर के अनुसार यह एक क्रिया नहीं है, लेकिन इस उत्तर को देखें ।
माआर्टिनस

18

कोड गंध।

string stringVariable = "";

उपरोक्त कोड मुझे उन चरों के बारे में कुछ नहीं बताता है जिनका उपयोग अपेक्षित है।

class Klass

एक ही समस्या है

string UserNameString = "bmackey"

उपरोक्त कोड को चर नाम के लिए खोजशब्द स्ट्रिंग की आवश्यकता नहीं होनी चाहिए। यदि आपको चर नाम से प्रकारों की पहचान करने की आवश्यकता है, तो आपका कोड बहुत लंबा है। गाढ़ा-refactor।


यह आपको कुछ भी नहीं बताता है क्योंकि यह "कोड" नहीं है, यह एक अलग चर घोषणा है। एक "क्लास" या "क्लैस" बहुत अच्छी तरह से आप सभी को बता सकता है जिसे आपको जानना चाहिए। उदाहरण के लिए, जेनेरिक विधि से एक Class<T>पैरामीटर प्राप्त हो सकता है , और यह समझ में आ सकता है। इसलिए मैं असहमत हूं कि यह एक कोड गंध है।
एंड्रेस एफ।

5

व्यक्तिगत रूप से, मुझे लगता है कि यह आपकी कोड शैली के लिए पूरी तरह से वैध विकल्प है।

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

JDK 1.6 R21 के साथ बंडल किए गए स्रोत के माध्यम से जाने पर, मुझे "क्लैज़" की 917 घटनाएं मिलती हैं। जाहिर है, उन्हें लगा कि यह स्वीकार्य शैली है।

आपकी टीम इसके बारे में कैसा महसूस करती है? यदि आपको लगता है कि यह बुरा है, लेकिन आपकी टीम के अन्य 9 लोग सोचते हैं कि यह अच्छा है, तो आपको बुलेट को काटने और इसे स्वीकार करना होगा। जब तक संचार है कि क्या ठीक है और क्या नहीं है, और आप जिन मुद्दों को देख रहे हैं, आप उन्हें देख रहे हैं, तो यह ठीक होना चाहिए।

आपकी टीम कोड शैली के बारे में कैसा महसूस करती है, यह मेरी राय से अधिक महत्वपूर्ण है, या किसी और की इस पोस्ट में । यह इसके लिए और किसी भी अन्य कोड शैली निर्णय के लिए जाता है।


1
सही है, लेकिन अंततः आपकी टीम बदल जाएगी। सड़क के नीचे कई वर्षों से कुछ गरीब आदमी आपके कोड्स और क्लैज़ेस से भरा कोड देख रहा होगा और कह रहा होगा "डब्ल्यूटीएफ!"।
17

4
यदि आप दोनों का उपयोग कर रहे हैं klassऔर clazzयह एक बुरी बात है। आपको लगातार बने रहने की आवश्यकता है ताकि उन्हें केवल एक बार इसे सीखना पड़े। और आदर्श रूप से यह टीम शैली के दिशानिर्देशों में भी वर्तनी है, इसलिए यह बहुत आश्चर्य की बात नहीं है।
corsiKa

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

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

4

आरक्षित शब्दों से बचने के लिए जानबूझकर गलत वर्तनी एक बुरा विचार है।

  • गलत वर्तनी को सही वर्तनी से अलग करना मुश्किल है, इसलिए वे कोड को पढ़ने के लिए कठिन बनाते हैं।

  • गलत वर्तनी याद रखना मुश्किल है, ताकि कई असंगत मिसपेलिंग कोड के भीतर प्रतिस्पर्धा करने की संभावना रखते हैं, जिससे कोड को लिखना कठिन और पढ़ने में कठिन हो जाता है।

  • आरक्षित शब्द समस्या को हल करने के लिए इस्तेमाल की जा रही भाषा को संदर्भित करते हैं, समस्या को नहीं। एक चर नाम समस्या से संबंधित अवधारणा को इंगित करना चाहिए।

इसलिए बेहतर यह एक वैकल्पिक, विवरणात्मक नाम लेने के लिए है, या अगर कोई संतोषजनक विकल्प मौजूद है, करने के लिए अर्हता प्राप्त करने के रूप में आरक्षित शब्द:

public static Method findBenchmarkMethod(BenchmarkRecord benchmark) {
    Class<?> benchmarkedClass = ClassUtils.loadClass(benchmark.generatedClass());
    return findBenchmarkMethod(benchmarkedClass, benchmark.generatedMethod());
}

3

Class clazz"मैं एक अच्छे नाम के साथ आने की कोशिश करने के लिए परेशान नहीं था" जैसी गंध आती है। एक चर हमेशा कुछ का प्रतिनिधित्व करता है, और एक अच्छा नाम यह वर्णन करता है। मैं कल्पना करने से इनकार करता हूं कि clazzकिसी भी परिस्थिति में उदाहरण के लिए सबसे अच्छा नाम संभव है। क्या यह एक वर्ग -> class_reference का संदर्भ है, एक वर्ग वस्तु की एक प्रति है -> class_copy, आदि। संभवतः "वर्ग" को भी छोड़ देना और केवल वर्णनात्मक शब्द का उपयोग करना, जैसे।

java.lang.SecurityManager.checkMemberAccess(Class<?> clazz, int which)
Parameters
    clazz -- the class that reflection is to be performed on.

यहाँ क्लैज़ टारगेट क्लास है जिसे चेक पर किया जाना है, इसलिए

checkMemberAccess(Class<?> target, int which)

बहुत बेहतर वर्णन करेगा कि क्लैज की तुलना में पैरामीटर का क्या उपयोग किया जाता है।


IMHO यह बेहतर नहीं है, आप इसे 'classToBeAccessed' या जो भी कह सकते हैं, लेकिन किसी भी अधिक वर्णनात्मक नाम से ही स्पष्ट पता चलता है। मुझे केवल लंबे नाम पसंद हैं यदि वे उपयोगी जानकारी प्रदान करते हैं।
मातरिनस

1
classToBeAccessedवास्तव में एक अच्छा नाम है ( classToBeCheckedशायद और भी बेहतर होगा)।
१५:१५ को हवलदार

1

यदि वे एक चर के लिए आरक्षित नाम का उपयोग करते हैं, तो यह एक खराब नाम वाला चर है। भले ही यह एक वैध नाम है, जैसे कक्षा के लिए कक्षा सॉफ्टवेयर।

खराब नामित चर खराब विचार या आकस्मिक कोड का संकेत है - आपके द्वारा बनाए जा रहे सॉफ़्टवेयर के टुकड़े में अन्य गोचरों से सावधान रहें।


0

मुझे लगता है कि जानबूझकर और लगातार उपयोग किए जाने पर जानबूझकर गलत वर्तनी या संक्षिप्त विचार एक अच्छा विचार है ।

जावा में विचार करें:

class X { public X() { } }
X x = new X();
x.getClass;  // Wha?  How does "get" help anything?
x.class;     // Best, but requires more lexer/parser work
x.klass;     // At least as good as getClass
x.clazz;     // Same

गलत वर्तनी का उपयोग करने का स्थान आरक्षित शब्द स्पष्ट रूप से नौकरी के लिए सबसे अच्छा शब्द है। वहाँ दो स्थानों पर गलत वर्तनी का उपयोग नहीं किया जाता है, जहाँ आपको लुभाया जा सकता है।

  1. आप एक अच्छे नाम के बारे में नहीं सोच रहे हैं
  2. आप बस एक डमी चर चाहते हैं और इसे एक वर्णनात्मक नाम की आवश्यकता नहीं है

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

boolean isMyName(String testName) { return myName.equals(testName); }
boolean isMyName(String s) { return myName.equals(s); }

Date nextMeeting(Klass klass) { return /* something */ }
Date nextMeeting(Klass k) { return /* something */ }

जब कोड या विधि की संरचना आपको बताती है कि क्या होना चाहिए, तो आपको लघु चर नामों के साथ कुछ भी नहीं खोना है।


2
मुझे क्षमा करें, मैं सहमत नहीं हो सकता। नेक्स्टमेट कैसे काम करता है? तर्क अस्पष्ट है। आप मुझे हर बार क्लेस की परिभाषा देखने के लिए मजबूर कर रहे हैं क्योंकि मैं आपका कोड पढ़ रहा हूं क्योंकि नाम अर्थहीन है। अगर इसके बजाय आप अगली बैठक (मीटिंग मीटिंग) करें, तो मेरे पास पढ़ने के लिए एक कम वर्ग (क्लिक्स; क्लैज़?) की परिभाषा होगी और इस तरह से अधिक उत्पादक होगा। कोड लिखित की तुलना में बहुत अधिक पढ़ा जाता है।
MrFox

@suslik - nextMeeting(MeetingRoom r)काफी है। meetingRoomआपको वहां क्या मिल रहा है? अगर ti nextMeeting(int meetingRoom)मुझे समझ में आ रहा था , लेकिन जब अन्य स्रोतों से जानकारी पहले से ही उपलब्ध है तो मेरा बिंदु लघु चर नामों का उपयोग है
रेक्स केर

मेरी पोस्ट कोडबेस में क्लास की मौजूदगी के बारे में अधिक थी। मैं कभी-कभी छोटे चर नामों से सहमत हूं, लेकिन अगर आपके तरीके लंबे होते हैं और आपको यह सुनिश्चित करने के लिए srcolling रखना होगा कि "r" एक मीटिंगरूम है तो यह बहुत अच्छा नहीं है। मैं उत्सुक हूँ कि बैठक का नकारात्मक पक्ष क्या है? क्षैतिज स्थान? टाइप करने के लिए बहुत लंबा?
मोटोफॉक्स

@suslik - हां, आप लंबे चर नामों के साथ क्षैतिज संदर्भ खो देते हैं। आप लंबे तरीकों के साथ ऊर्ध्वाधर संदर्भ खो देते हैं, इसलिए उन लोगों से बचने की कोशिश करना सबसे अच्छा है (लेकिन मैं सहमत हूं कि अगर आप इसे वैसे भी करते हैं, तो आप शायद अपने चर नामों को बेहतर अनुस्मारक बनाना चाहते हैं)। Klassएक विकल्प था जब एक आरक्षित शब्द था । जब मूल वर्तनी उपलब्ध हो तो मैं गलत वर्तनी का उपयोग करने की सलाह नहीं देता!
रेक्स केर

0

मैंने देखा है कि Class klassजब आप वास्तव में Classकक्षा के एक उदाहरण के साथ काम करते हैं, तो आप क्या कर रहे हैं ।


2
सवाल यह नहीं है कि क्या कोई मामला है जहां आपके पास एक उदाहरण है, लेकिन क्या आपको उस वर्तनी का उपयोग करना चाहिए, या अधिक विवरणात्मक नाम जैसे कि userClassया कुछ अन्य विकल्प।
निकोल

2
ऐसे मामले में मैं पसंद करते हैं classInstanceअधिक klass
कोनराड मोरावस्की

2
@KonradMorawski: लेकिन आपके द्वारा काम की जाने वाली सभी वस्तुएं उदाहरण हैं, इसलिए classInstanceबहुत बेमानी है। इसके अलावा, मैं कुछ कल्पना कर सकता था class klass; Object classInstance = klass.newInstance;
मातरिनस

0

मैं अक्सर ऐसे कोड देखता हूं जिनमें सामान्य शब्दों के जानबूझकर गलत वर्तनी शामिल होते हैं जो बेहतर या बदतर के लिए आरक्षित शब्द बन गए हैं:

क्लास के लिए क्लैज़ या क्लैज़: क्लास क्लज़ = ThisClass.class

SQL में गिनती के लिए kount: काउंट (*) AS kount

व्यक्तिगत रूप से मुझे लगता है कि यह पठनीयता कम हो जाती है। अपने स्वयं के अभ्यास में मुझे बहुत सारे मामले नहीं मिले हैं जहाँ एक बेहतर नाम का उपयोग नहीं किया जा सकता है - आइटमक्लास या रिकॉर्डटोटल।

हालाँकि, यह इतना सामान्य है कि मैं मदद नहीं कर सकता, लेकिन आश्चर्य है कि अगर मैं एक ही हूँ? किसी को भी किसी भी सलाह या बेहतर है, इस अभ्यास पर अच्छी तरह से सम्मानित प्रोग्रामर से सिफारिशें उद्धृत?

स्थानीय चर और औपचारिक तर्कों के लिए, यह कोई फर्क नहीं पड़ता।

कोई भी नाम तब तक ठीक है जब तक कि यह जानबूझकर भ्रामक या कष्टप्रद रूप से विचलित करने वाला नहीं है। आपके उदाहरण में:

public static Method findBenchmarkMethod(BenchmarkRecord benchmark) {
    Class<?> clazz = ClassUtils.loadClass(benchmark.generatedClass());
    return findBenchmarkMethod(clazz, benchmark.generatedMethod());
}

इससे कोई फर्क नहीं पड़ता कि एकल स्थानीय चर "क्लैज़" या "क्लैस" या "क्लस" या केवल "सी" है। मैं शायद सिर्फ अभिव्यक्ति को इनलाइन करूंगा:

return findBenchmarkMethod(ClassUtils.loadClass(benchmark.generatedClass()),
                           benchmark.generatedMethod());

एक चर नाम की लंबाई चर के दायरे से संबंधित होनी चाहिए। छोटी विधियों में स्थानीय चर के लिए (और वे सभी कम होने चाहिए), बहुत कम नाम ठीक हैं।


आपकी इनलाइन गलत दिखती है ClassUtils.loadClass(benchmark.generatedClass())=> benchmark.generatedClass()- ClassUtils.loadClassरास्ते में खो गई
gnat

0

मुझे लगता है कि गलत वर्तनी हमेशा एक बुरा विचार है। यह सिर्फ अपने पाठकों पर अच्छा नहीं है। मैं, एक के लिए, सोच रहा होगा कि क्या मुझे शब्द देखने पर कुछ याद आया klass। (क्या उनका मतलब था class, या उनका मतलब समुद्री डाकू था?) कम से कम मेरे लिए, सभी गलतियाँ जो मुझे पहचानती हैं वे चिड़चिड़ी हैं।

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

  • यदि यह एक फ़ंक्शन तर्क है, तो aClassइसके बजाय का उपयोग करें class

  • यदि यह एक स्थानीय या सदस्य चर है, तो myClassइसके बजाय का उपयोग करें class

  • यदि यह एक्सेसर है, तो getClass()इसके बजाय का उपयोग करें class()

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


0

रचनात्मक वर्तनी में एक लाभ, बेहतर खोज-क्षमता है। मुझे लगता है कि आम चीज़ों की तुलना में, अनोखी चीज़ों के लिए एक पूर्ण कोड खोज करना कहीं अधिक आसान है, जहाँ अक्सर आपको सभी गलत चीजें मिलेंगी, और उनमें से 1000। एक उदाहरण के रूप में, मैं kzpg.com का मालिक था। Google अब और आप केवल कुछ हिट देखेंगे। यह अद्वितीय है और इसलिए बहुत ही खोजने योग्य है।

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


वह लिंक अब टूट गया है।
पीटर मोर्टेंसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.