सबसे बड़ी भाषा सुविधा


974

आपकी राय में, आपके द्वारा सामना की गई सबसे आश्चर्यजनक, अजीब, अजीब या वास्तव में "डब्ल्यूटीएफ" भाषा की विशेषता क्या है?

कृपया प्रति उत्तर केवल एक सुविधा।


5
@gablin मुझे लगता है कि अगर आपने LISP delimiters को PerL regex के साथ जोड़ दिया तो जावास्क्रिप्ट का उपयोग करके आप 90% WTF कवर करेंगे ...
Talvi Watia

जवाबों:


1859

सी में, सरणियों को इस तरह अनुक्रमित किया जा सकता है:

a[10]

जो बहुत आम है।

हालांकि, कम ज्ञात रूप (जो वास्तव में काम करता है!) है:

10[a]

जिसका अर्थ उपरोक्त के समान है।


758
ऐसा इसलिए है क्योंकि एक [10] का अर्थ है * (a + 10) ... और 10 [a] का अर्थ है * (10 + a) :)
मिशेल गोकन

77
"हैलो वर्ल्ड" [i] मत भूलना। या मैं ["हैलो वर्ल्ड"]
रिचर्ड पेनिंगटन

167
या, अधिक उपयोगी रूप से, "0123456789abcdef" [x & 0xf]
डिपस्टिक

17
@ फारसी: यह हमेशा अपेक्षा के अनुरूप काम करता है। सूचक जोड़ पते पर साधारण पूर्णांक जोड़ के समान नहीं है। यह सराहनीय है कि प्रश्न में आकार किस प्रकार का है।
आर। मार्टिनो फर्नांडिस

12
@mcv - [[१०] "* (+ + १०)" के समान है, जहाँ अभिव्यक्ति "ए + १०" सूचक अंकगणित है (और चूंकि एक छोटा है, आपके उदाहरण में, + १० का अर्थ है 'प्रारंभ ’ एक पता, और 10 शॉर्ट्स, यानी 20 बाइट्स) को स्थानांतरित करें। एक्सप्रेशन 10 [a] को "* (10 + a)" के रूप में रखा गया है, जहां "10 +" भी सूचक अंकगणितीय है, और बिल्कुल उसी तरह से व्यवहार किया जाता है।
एडन मूर

1292

जावास्क्रिप्ट में:

 '5' + 3 gives '53'

जहाँ तक

 '5' - 3 gives 2

81
मुझे याद है कि जब मैंने पहली बार इस तरह की तकनीक का उपयोग करके जावास्क्रिप्ट का उपयोग स्ट्रिंग्स में संख्याओं को जोड़ने के लिए किया था: "111" - - "222" 333 देता है जबकि "111" + "222" "111222" देता है।
कैलम रोजर्स

112
+स्ट्रिंग संकेतन के लिए भयानक है
मत्तेयो रीवा

416
+ समवर्ती के लिए समस्या नहीं है। कमजोर टाइपिंग है।
फोगबर्ड

270
@FogleBird न तो वास्तव में समस्या है। यह असंगत ज़बरदस्ती नियमों के साथ सिर्फ दो का संयोजन है।
टीएम।

70
इसलिए मूल रूप से, + जब एक स्ट्रिंग शामिल है, तो अवतल होता है। वे '123456' - 456 = '123' जैसे कुछ कोड क्यों नहीं कर सकते? यह दिलचस्प होगा।
जिम्मी लिन

872

जावास्क्रिप्ट में, निम्नलिखित निर्माण

return
{
    id : 1234,
    title : 'Tony the Pony'
};

रिटर्न केundefined बाद नई सीमा पर डरपोक निहित अर्धविराम सम्मिलन के कारण एक वाक्यविन्यास त्रुटि है return। निम्नलिखित काम करता है क्योंकि आप उम्मीद करेंगे:

return {
    id : 1234,
    title : 'Tony the Pony'
};

इससे भी बदतर, यह एक काम करता है (क्रोम में, कम से कम):

return /*
*/{
    id : 1234,
    title : 'Tony the Pony'
};

यहाँ एक ही समस्या का एक संस्करण है जो एक सिंटैक्स त्रुटि उत्पन्न नहीं करता है, बस चुपचाप विफल रहता है:

return
    2 + 2;

225
अर्धविराम सम्मिलन जावास्क्रिप्ट के सबसे बुरे हिस्सों में से एक है।

230
आप हमेशा समस्याओं में भाग लेते हैं जब आप इस धारणा के चारों ओर भाषा सुविधाएँ डिज़ाइन करते हैं कि आपके उपयोगकर्ता ज्यादातर बेवकूफ होंगे।
रोब वान डैम

8
मुझे वास्तव में वह समस्या थी, स्वयं सी # डेवलपर होने के नाते, मैंने नई लाइन में ब्रेस डाल दिया। मुझे एहसास हुआ कि समस्या क्या थी। जब मैंने इस मुद्दे को हल कर लिया तब भी मुझे नहीं पता था कि जब तक मैं आपका जवाब नहीं पढ़ता, तब तक क्या समस्या थी!
फेडर हज्दू

24
निक रिटालैक: क्योंकि, जावास्क्रिप्ट के सी-जैसे घुंघराले कोष्ठक और अर्धविराम वाक्य-विन्यास के कारण, यह बिल्कुल भी स्पष्ट नहीं है कि नई रूपरेखा महत्वपूर्ण हैं।
तमस Czinege

19
यदि आप जावास्क्रिप्ट में प्रोग्रामिंग करते समय सी शैली का उपयोग करने के लिए नहीं हैं, तो यह सी-स्टाइल सिंटैक्स चुनने के लिए जावास्क्रिप्ट भाषा डिजाइनरों की विकृत थी।
रयान लुन्डी

795

जावास्क्रिप्ट सत्य तालिका:

''        ==   '0'           // false
0         ==   ''            // true
0         ==   '0'           // true
false     ==   'false'       // false
false     ==   '0'           // true
false     ==   undefined     // false
false     ==   null          // false
null      ==   undefined     // true
" \t\r\n" ==   0             // true

स्रोत: डौग क्रॉकफोर्ड


237
अच्छी चीज़ जावास्क्रिप्ट का === ऑपरेटर है, फिर।
बेनामी

65
तो ==भाषा डिजाइनर की नजर में क्या उद्देश्य है ?
क्रिस एस

137
लोगों को भ्रमित कर रहे हैं।
जेवियर

123
यह अच्छा होगा अगर ==इसका अर्थ होता है ===, और फिर एक और ऑपरेटर था, जो कुछ इस तरह ~=की अनुमति देता है।
टीएम।

18
@ ओटो वास्तव में, क्योंकि हम बाहर देख रहे हैं, उसका उदाहरण दिखाता है कि == सममित नहीं है। फिलहाल, मैंने यह नहीं देखा कि बाइनरी रिलेशन के लिए कम्यूटेटिविटी को कैसे निर्दिष्ट किया जाएगा।
पीटरअलेनवेब

660

C और C ++ में ट्रिग्राफ।

int main() {
   printf("LOL??!");
}

यह प्रिंट करेगा LOL|, क्योंकि ट्रिग्राफ ??!को रूपांतरित किया गया है |


71
शीघ्र! सभी C / b / प्रोग्रामर को बताएं!
एस्टेबन कुबेर

235
ट्रिग्राफ अद्भुत हैं, क्योंकि आप सुनिश्चित हो सकते हैं कि कोई भी--पता नहीं क्या करेगा ??! पहले से ही नाम जाने बिना Google से मतलब होगा।
जरतुस्तरा

56
जीसीसी में डिफ़ॉल्ट रूप से ट्रिग्राफ अक्षम हैं।
sastanin

360
ये आपको "डब्ल्यूटीएफ ऑपरेटर" का उपयोग करने देते हैं: (foo ()! = ERROR) ??! ?? cerr << "त्रुटि हुई" << endl;
user168715

57
जब उन्हें पेश किया गया तो ट्रिग्राफ एक आवश्यक बुराई थी। कुछ प्लेटफार्मों में भाषा के लिए कुछ वर्णों की कुंजी शामिल नहीं थी, इसलिए यह या तो "ट्रिग्राफ" था या "आपके पास सी कंपाइलर अवधि-अंत-कथन नहीं हो सकता है इसलिए उपयोग कोडांतरक"। "सी ++ प्रोग्रामिंग लैंग्वेज" में स्ट्रॉस्ट्रुप के विवरण की जाँच करें।
यूरो माइकेल

573

ऑटो बॉक्सिंग के साथ मज़ा और जावा में पूर्णांक कैश:

Integer foo = 1000;
Integer bar = 1000;

foo <= bar; // true
foo >= bar; // true
foo == bar; // false

//However, if the values of foo and bar are between 127 and -128 (inclusive)
//the behaviour changes:

Integer foo = 42;
Integer bar = 42;

foo <= bar; // true
foo >= bar; // true
foo == bar; // true

व्याख्या

जावा स्रोत कोड पर एक त्वरित झांकना निम्नलिखित होगा:

/**
 * Returns a <tt>Integer</tt> instance representing the specified
 * <tt>int</tt> value.
 * If a new <tt>Integer</tt> instance is not required, this method
 * should generally be used in preference to the constructor
 * {@link #Integer(int)}, as this method is likely to yield
 * significantly better space and time performance by caching
 * frequently requested values.
 *
 * @param  i an <code>int</code> value.
 * @return a <tt>Integer</tt> instance representing <tt>i</tt>.
 * @since  1.5
 */
public static Integer valueOf(int i) {
    if (i >= -128 && i <= IntegerCache.high)
        return IntegerCache.cache[i + 128];
    else
        return new Integer(i);
}

नोट: किसी संपत्ति द्वारा निर्धारित किए IntegerCache.highजाने 127तक चूक ।

ऑटो बॉक्सिंग के साथ क्या होता है कि दोनों फू और बार एक ही पूर्णांक वस्तु को कैश से पुनर्प्राप्त किए जाते हैं जब तक कि स्पष्ट रूप से निर्मित नहीं किया जाता है: जैसे foo = new Integer(42), संदर्भ समानता की तुलना करते समय, वे झूठे के बजाय सही होंगे। इंटेगर मूल्य की तुलना करने का उचित तरीका उपयोग कर रहा है.equals;


31
मुझे यह देखने के लिए कुछ सेकंड मिले कि क्यों ... जावा को -128 और 128 के बीच मूल्यों के लिए इंटेगर के उदाहरणों का एक पूल रखना चाहिए, अन्यथा यह एक नया इंटेगर, सही का आवंटन करता है?
माइक अकर्स

18
हालाँकि, ध्यान रखें कि यदि आप नया इंटगर (42) निर्दिष्ट करते हैं, तो यह पूल से उदाहरण का उपयोग नहीं करेगा इसलिए foo == बार का मूल्यांकन झूठा
z -

10
यदि संभव हो तो मैं हमेशा इंटेगर के बजाय ints का उपयोग करता हूं, लेकिन अगर मुझे किसी कारण से इंटेगर का उपयोग करना था, तो क्या मुझे == के बजाय सिर्फ (।) का उपयोग करना चाहिए?
मेट्रिक्सफ्रॉग

246
तो खुशी है कि मैं एक C # प्रोग्रामर हूं।

87
@Will: C # में कुछ बहुत ही समान है। ब्लॉग
spookylukey

373

नील फ्रेजर का उद्धरण (उस पृष्ठ के अंत में देखें),

try {
    return true;
} finally {
    return false;
}

(जावा में, लेकिन व्यवहार स्पष्ट रूप से जावास्क्रिप्ट और पायथन में समान है)। परिणाम पाठक के लिए एक अभ्यास के रूप में छोड़ दिया जाता है।

संपादित करें: जब तक हम इस विषय पर हैं, इस पर भी विचार करें:

try {
    throw new AssertionError();
} finally {
    return false;
}

42
+1। किसी कारण के लिए, मुझे यह प्रफुल्लित करने वाला लगता है और यह जोर नहीं रोक सकता।
आउटिस

153
शुक्र है कि C # इस तरह के पागलपन की अनुमति नहीं देता है ...Control cannot leave the body of a finally clause
रिचर्ड ईव

64
यह रिटर्न, झूठा, करता है? यह एक डब्ल्यूटीएफ की तरह लग सकता है (और संभवतः यह एक है), लेकिन मैं नियम से रहता हूं: अंत में हमेशा जीतता है, जब तक कि आप मशीन को पहले क्रैश नहीं करते।
माइकल Stum

28
: निष्पक्ष होना करने के लिए, मैं याद है कि अंत में हमेशा जीत होती है जब तक आप सत्ता कॉर्ड झटका के लिए TDWTF के अच्छा स्पष्टीकरण दोष thedailywtf.com/Articles/My-Tales.aspx
माइकल Stum

22
मुझे यकीन नहीं है कि इस मामले में कोड को क्या लौटना चाहिए। लेकिन मुझे पूरा यकीन है कि आपको क्लॉज़ returnमें नहीं डालना चाहिए finally
JFS

325

APL (इसके अलावा सभी), किसी भी प्रोग्राम को सिर्फ एक लाइन में लिखने की क्षमता।

जैसे । एपीएल में एक लाइन में कॉनवे का जीवन का खेल :

alt text http://catpad.net/michael/APLLife.gif

अगर वह रेखा डब्ल्यूटीएफ नहीं है, तो कुछ भी नहीं है!

और यहाँ एक वीडियो है


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

24
यूनानियों के लिए एक भाषा की तरह दिखता है।
एस्को

45
@ एरिक: लेखन कोड में पाया जाने वाला आनंद है जो पूरी तरह से आप जो चाहते हैं, उसके बारे में है, न कि इस बारे में कि वहां कैसे पहुंचा जाए। एक अभिव्यक्ति के रूप में अपने कोड को व्यक्त करने का। यह परम परिपूर्ण कटान की तरह है। बेशक, एक असली लड़ाई में मुझे एक बंदूक चाहिए।
डैनियल सी। सोबरल

7
@ डैनियल: आप कोड की एक पंक्ति लिखने के लिए पूरी दोपहर बिताते हैं ... और कोड की एक पंक्ति को पढ़ने के लिए एक पूरा सप्ताह । ;-)
जुरगेन ए। इरहाद

93
APL एक Sci-Fi एक्शन फिल्म में देखने के लिए बहुत बढ़िया होगा। मैं कल्पना कर सकता हूं कि कोई तीन रंगों के टर्मिनल पर बैठा हो, "दुश्मन मिसाइल वेक्टर को फिर से खोलना ... संक्रमण करना ... पीआई बार लघुगणक ... ग्रेड ऊपर - और - निष्पादित करें!" इसके बाद विस्फोट और चीयरिंग हुई।
जॉय एडम्स

321

C ++ टेम्प्लेट के लिए अजीब चीजों का उपयोग किया जा सकता है, "मल्टी-डायमेंशनल एनालॉग लिटरल" द्वारा सबसे अच्छा प्रदर्शन किया गया है जो "तैयार" आकृतियों के क्षेत्र की गणना करने के लिए टेम्प्लेट का उपयोग करता है। निम्नलिखित कोड एक 3x3 आयत के लिए मान्य C ++ है

#include"analogliterals.hpp"
using namespace analog_literals::symbols;

          unsigned int c = ( o-----o
                             |     !
                             !     !
                             !     !
                             o-----o ).area;

या, एक 3 डी घन के साथ एक और उदाहरण:

  assert( ( o-------------o
            |L             \
            | L             \
            |  L             \
            |   o-------------o
            |   !             !
            !   !             !
            o   |             !
             L  |             !
              L |             !
               L|             !
                o-------------o ).volume == ( o-------------o
                                              |             !
                                              !             !
                                              !             !
                                              o-------------o ).area * int(I-------------I) );

18
जबकि ईलिस के एनालॉग शाब्दिक महान हैं, क्या वे एक अजीब भाषा विशेषता हैं , या केवल एक सुविधा का उपयोग करने का एक अजीब तरीका है ?

85
असली डब्ल्यूटीएफ उन लोगों में से एक द्वारा उत्पन्न संकलक त्रुटि होगी जो विकृत है।
एंड्रयू मैकग्रेगर

6
यह कितना बीमार है..मुझे फिर से ऊपर उठना है जब एनालॉगलिटरल का एक संस्करण है जो एक्लिप्स में एक्स, वाई और जेड अक्ष के चारों ओर शाब्दिक रूप से समर्थन करता है ... अब जो "दृश्य प्रोग्रामिंग" को एक नया वास्तविक अर्थ देगा।
TheBlastOne

2
क्या ओ और एल के आदेश का आदेश है?
मिंग-तांग

4
आदेश मायने रखता है, क्योंकि टेम्पलेट ऑपरेटर ओवरलोडिंग का रचनात्मक उपयोग करते हैं। (वास्तविक कोड के साथ ऐसा न करें, दुरुपयोग करने वाले ऑपरेटर कोड को पढ़ने में कठिन बनाते हैं)
josefx

292

पर्ल के कई अंतर्निहित चर:

  • $#- नहीं टिप्पणी !
  • $0, $$और$? - उसी नाम से शेल वेरिएबल की तरह
  • , $&और$' - अजीब मिलान चर
  • $" तथा $, - सूची और आउटपुट-क्षेत्र-विभाजकों के लिए अजीब चर
  • $!- errnoएक संख्या के रूप में लेकिनstrerror(errno) रूप में एक स्ट्रिंग के रूप में
  • $_- चुपके चर, हमेशा इस्तेमाल किया है और कभी नहीं देखा
  • $#_ - पिछले सबरूटीन तर्क की सूचकांक संख्या ... हो सकता है
  • @_ - (गैर) वर्तमान फ़ंक्शन के नाम ... शायद
  • $@ - अंतिम उठाया अपवाद
  • %:: - प्रतीक तालिका
  • $:, $^, $~, $-, और $=- उत्पादन प्रारूपों के साथ कुछ करने के लिए
  • $.और $%- इनपुट लाइन नंबर, आउटपुट पेज नंबर
  • $/और $\- इनपुट और आउटपुट रिकॉर्ड विभाजक
  • $| - आउटपुट बफरिंग कंट्रोलर
  • $[- 0 से आधारित 1-आधारित को 42-आधारित करने के लिए अपने सरणी आधार को बदलें: WHEEE!
  • $}- कुछ भी नहीं, अजीब तरह से पर्याप्त!
  • $<, $>, $(, $)- वास्तविक और प्रभावी UIDs और GIDs
  • @ISA - वर्तमान पैकेज के प्रत्यक्ष सुपरक्लेसेस के नाम
  • $^T - एपोकैप सेकंड में स्क्रिप्ट स्टार्ट-अप समय
  • $^O - वर्तमान ऑपरेटिंग सिस्टम नाम
  • $^V - पर्ल का यह कौन सा संस्करण है

और भी बहुत कुछ है जहाँ से आए हैं। पूरी सूची यहां पढ़ें ।


83
$[चर इन सबमें सबसे अधिक दुष्ट है।
ब्रैड गिल्बर्ट

24
निश्चित रूप से इसकी सराहना करेंगे यदि पर्ल 6 ऐसा कुछ था जिसे मैं perldoc perlvarहर पांच सेकंड की जांच के बिना कोड कर सकता था । (हालांकि मैं स्वीकार करता हूं कि आधा समय मैं यह सोचकर जांच करता हूं "मुझे पता है कि एक विशेष चर है जो मेरे लिए ऐसा कर सकता है, मुझे अभी याद नहीं है कि कौन सा ..." = पी)
क्रिस लुत्ज़

17
इसके साथ समस्या use English;यह है कि यह RegExp प्रदर्शन को प्रभावित करता है। मैं झूठ नहीं बोल रहा। perldoc.perl.org/English.html#PERFORMANCE
डेव वेब

13
@Dave: आपके द्वारा लिंक किए गए पृष्ठ में -no_match_vars विकल्प के कारण यह कोई समस्या नहीं है। @ ब्रैड: $ [एसओ बुराई है। इसके पीछे की मंशा बुराई है, हाँ, लेकिन यह भी काम नहीं करता है! @Artem: perlvar से "पर्ल आइडेंटिफ़ायर जो अंकों, नियंत्रण वर्णों या विराम चिह्नों से शुरू होते हैं, पैकेज घोषणा के प्रभावों से मुक्त होते हैं और उन्हें हमेशा पैकेज मेन में रहने के लिए मजबूर किया जाता है; वे" var "त्रुटियों से भी मुक्त होते हैं।" तो इसका मतलब है कि @ $ बनाया जाएगा और बिना किसी त्रुटि के भी उसे सौंपा जाएगा। ओह!
rjh

4
@ ब्रायन: आप सिंटैक्स सीखने का प्रस्ताव कैसे करते हैं जब आधिकारिक दस्तावेज खुद कहता है कि ऐसी परिस्थितियां हैं जहां पर्ल दुभाषिया हेयुरस्टीली अनुमान लगाता है कि वर्णों के अनुक्रम का क्या अर्थ है? उदाहरण के लिए /$foo[bar]/, क्या [bar]एक चरित्र वर्ग या सरणी के लिए एक सबस्क्रिप्ट है @foo? भयानक जवाब के लिए Grep perldata।
j_random_hacker

289

स्ट्रिंग्स में PHP के संख्यात्मक मानों को संभालना । देखें एक अलग प्रश्न को यह पिछले जवाब में पूरी जानकारी है, लेकिन संक्षेप में, के लिए:

"01a4" != "001a4"

यदि आपके पास दो तार हैं जिनमें विभिन्न प्रकार के वर्ण हैं, तो उन्हें समान नहीं माना जा सकता है। अग्रणी शून्य महत्वपूर्ण हैं क्योंकि ये तार संख्या नहीं हैं।

"01e4" == "001e4"

PHP स्ट्रिंग्स को पसंद नहीं करती है। यह किसी भी बहाने की तलाश में है जो आपके मूल्यों को संख्याओं के रूप में मान सकता है। थोड़ा और अचानक उन स्ट्रिंग्स में हेक्साडेसिमल वर्णों को बदलें, PHP तय करता है कि ये किसी भी अधिक तार नहीं हैं, वे वैज्ञानिक संकेतन में संख्याएं हैं (PHP परवाह नहीं करता है कि आपने उद्धरणों का उपयोग किया है) और वे बराबर हैं क्योंकि अग्रणी शून्य संख्याओं के लिए अनदेखा किए जाते हैं। इस बिंदु को सुदृढ़ करने के लिए आप पाएंगे कि PHP भी "01e4" == "10000"सही के रूप में मूल्यांकन करता है क्योंकि ये समतुल्य मान वाले अंक हैं। यह प्रलेखित व्यवहार है, यह बहुत समझदार नहीं है।


56
बस === और = == का उपयोग करें। जब तक ढीले प्रकार की तुलना की आवश्यकता न हो, तब तक इसका उपयोग किया जाना चाहिए।
दयक्कम

14
@Dykam, यदि आप फुलर उत्तर के लिंक का अनुसरण करते हैं, तो आप देखेंगे कि मैंने === ऑपरेटर के उपयोग को संबोधित किया है।
डैन डायर

18
कमजोर टाइपिंग फिर से हमलों!
२०:५० पर गिलांबा

43
मैं हमेशा से जानता था कि PHP एक पाप था। अब तक मुझे एहसास नहीं हुआ कि यह एक अक्षम्य पाप था: D
थॉमस ईडिंग

2
उन्हें किसी भी प्रोग्रामिंग बुक या ट्यूटोरियल में === का उपयोग करने के लिए लोगों को प्रशिक्षित करना चाहिए। जोड़ा गया नोट: बुरी तरह से लिखे गए PHP ऐप पर मैं अपने पासवर्ड के रूप में आपूर्ति करने में सक्षम था जो कि समान संख्या के रूप में पार्स किया गया था।
पेपिजन

282

आइए सभी भाषाओं (जैसे PL / I) के लिए एक वोट दें, जो आरक्षित शब्दों के साथ दूर करने की कोशिश करें।

और कहाँ आप कानूनी रूप से इस तरह के मनोरंजक अभिव्यक्ति लिख सकते हैं:

IF IF THEN THEN = ELSE ELSE ELSE = THEN

( IF, THEN, ELSEचर नाम कर रहे हैं)

या

IF IF THEN THEN ELSE ELSE

( IFएक चर है, THENऔर ELSEसबरूटीन्स हैं)


1
@quark: कि यह एक अलग जवाब है! ;) ... (और हाँ, आप अंग्रेजी के साथ प्रोग्राम कर सकते हैं, बस इसे अन्य डेवलपर्स के रूप में लागू कर सकते हैं;)
मैके

28
@RoadieRich भैंस का एक समूह स्पष्ट रूप से भैंस से नहीं है, वे सिर्फ भैंस के भैंसे हैं।
जुरगेन ए। इरहार्ड

18
जॉन, जहां जेम्स पड़ा था, शिक्षक पर बेहतर प्रभाव पड़ा था।
गेमफ्रीक

4
मैंने दूसरे दिन एक बेन और जेरी आइसक्रीम फैक्टरी के बाहर कुछ साइन निर्माताओं को देखा। मैंने उनके काम की आलोचना की, मैंने उन्हें बताया कि बेन और और और और जेरी के बीच पर्याप्त जगह नहीं थी।
टॉम गुलेन

9
शायद भविष्य के अस्थायी कार्यक्रमों के लिए इसकी आवश्यकता होगी। अगर यह = अभी && यहां = फिर क्या है = जब अभी ELSEWHERE = ELSEWHERE
केली एस। फ्रेंच

282

जावास्क्रिप्ट ऑक्टल रूपांतरण 'सुविधा' के बारे में जानने के लिए एक अच्छा एक है:

parseInt('06') // 6
parseInt('07') // 7
parseInt('08') // 0
parseInt('09') // 0
parseInt('10') // 10

अधिक जानकारी यहाँ


60
एक बग पर अटक गया कि सभी संख्याओं ने 8 और 9 को छोड़कर काम किया !! पागल हो रहा था !!! धन्यवाद ब्रायन!
फ़ारुज

10
@ यदा तुम अष्टाध्यायी नहीं हो? हेक्साडेसिमल 0x है।
लुइसुबल

48
और यही कारण है कि parseInt एक (वैकल्पिक) अतिरिक्त तर्क :) लेता है।
लीरनूना

10
अग्रणी 0 का अर्थ है अष्टक संख्या। चूँकि 8 एक वैध अष्टक अंक नहीं है, इसलिए परिणाम 0. होना चाहिए
devio

22
... और parseInt ('010') -> 8 सिर्फ आपको भ्रमित करने के लिए।
रिचर्ड गैडसन

213

C में डफ का उपकरण!

C में एक स्विच स्टेटमेंट के साथ / do को इंटरलेस कर सकता है। इस विधि का उपयोग करते हुए एक मेमेकपी का उदाहरण:

void duff_memcpy( char* to, char* from, size_t count ) {
    size_t n = (count+7)/8;
    switch( count%8 ) {
    case 0: do{ *to++ = *from++;
    case 7:     *to++ = *from++;
    case 6:     *to++ = *from++;
    case 5:     *to++ = *from++;
    case 4:     *to++ = *from++;
    case 3:     *to++ = *from++;
    case 2:     *to++ = *from++;
    case 1:     *to++ = *from++;
            }while(--n>0);
    }
}

9
Duff की डिवाइस स्विच स्टेटमेंट के लिए डिफ़ॉल्ट रूप से ब्रेक न होने का एक अच्छा कारण है;; हालांकि, मैंने अभी तक इंटरलेस्ड स्विच और लूप का कोई अन्य अच्छा उपयोग नहीं देखा है - लेकिन शायद एक है। ओह रुको, हां, एक और उपयोग है: कोरटाइन और प्रोटोथ्रेड्स।
फ्राँसी

16
@frunsi: "डफ का डिवाइस शायद स्विच स्टेटमेंट के डिफ़ॉल्ट रूप से ब्रेक न होने का एक अच्छा कारण है" - हमेशा सामान्य स्थिति को डिफ़ॉल्ट बनाएं। मैं बिल्कुल नहीं कहूंगा कि यह सामान्य मामला है ..
ब्लूराजा - डैनी पफ्लुगुएफ्ट

6
@ mcv शायद सबसे आसान है यदि आप इसे असेंबली कोड के रूप में पढ़ने की कोशिश करते हैं, यानी whileअंत में (सशर्त) JMPवापस आ जाता है do, जो बताता है कि आप इसे क्यों छोड़ सकते हैं doऔर अभी भी लूप में समाप्त हो सकते हैं ।
WDS

14
यह ध्यान रखें कि डफ़ का डिवाइस आमतौर पर आधुनिक संकलक के लिए सामान्य लूपिंग स्टेटमेंट की तुलना में WORSE कोड का उत्पादन करता है, जो जानता है कि आप (बेहतर) लूप को हाथ से कैसे कर सकते हैं।
बिली ओनली

37
@frunsi: डफ ने स्वयं, इसे प्रकाशित करते हुए, कुछ इस तरह का दावा किया: "यह निश्चित रूप से चर्चा में एक तर्क प्रदान करता है कि क्या स्विच डिफ़ॉल्ट रूप से गिरना चाहिए, लेकिन मुझे यकीन नहीं है कि तर्क इसके लिए या इसके खिलाफ है।"
एसएफ।

204

अल्गोल नाम से पास (सी सिंटैक्स का उपयोग करके सचित्र):

int a[3] = { 1, 2, 3 };
int i = 1;

void f(int j)
{
    int k;
    k = j;  // k = 2
    i = 0;
    k = j;  // k = 1 (!?!)    
}

int main()
{
    f(a[i]);
}

33
यदि आप इसके बारे में सोचते हैं, तो यह वास्तव में किसी प्रकार का मुड़ अर्थ है
RCIX

90
यह अंतिम "संदर्भ द्वारा पास" है।
१am

3
हालांकि यह स्काला में संभव है ( def f(j : => int))
डारियो

10
तो यह कुछ ऐसा है ... template<typename T> struct by_name { virtual operator T&() = 0; }; void f(by_name<int> j) { ... } int main() { f(struct : by_name<int> { operator int&() { return a[i]; } }); }?
साइमन बुकान

2
यह वास्तव में बहुत सीधा-आगे है: आप कोड का एक छोटा सा टुकड़ा उत्पन्न करते हैं (आमतौर पर इसे "थंक" कहा जाता है, इसलिए ऊपर दिया गया मेरा वाक्य) जो इस मामले में अभिव्यक्ति से उत्पन्न पते की गणना करता है, और इस मामले में [i]। इस फ़ंक्शन के लिए एक पॉइंटर को फ़ंक्शन कहा जाता है, जो तब पैरामीटर को एक्सेस किए जाने पर वर्तमान पते की गणना करने के लिए इसका उपयोग करता है।
रिचर्ड पेनिंगटन

189

पायथन में:

>>> x=5
>>> 1<x<10
True
>>> 1<x<3
False

डब्ल्यूटीएफ नहीं, बल्कि एक उपयोगी सुविधा है।


176
काश हर दूसरी भाषा में यह सुविधा हो
vava

32
बहुत ही शांत पायथन सुविधा के साथ, यह गुइडो की तरह दिखता है, जो कि केवल एक लिस्प फीचर का सिंटैक्स ALGOL-ized है। :-)
केन

4
जेफ्री, यह एक सुविधा है, और (10 > 5 > 1) != ((10 > 5) > 1)पायथन में।
sastanin

18
इसके अलावा, यह सिर्फ एक बार मूल्यांकन करता है, इसलिए (funct_a(5)+5 > b > funct_a(5))केवल funct_a(5)एक बार कॉल करता है । यह एक महान सुविधा है!
खेलबेन

57
@ किल्बेन: नहीं, funct_aउस उदाहरण में दो बार बुलाया जाएगा। इसमें b > funct_a(5) > cकेवल एक बार ही बुलाया जाएगा, जैसा कि विरोध किया गया है b > funct_a(5) and funct_a(5) > c
बाफ़ बॉयज़

189

जावा में:

int[] numbers() {
  return null;
}

के रूप में लिखा जा सकता है:

int numbers() [] {
  return null;
}

23
वाह! काश मैं दीवार पर एक मक्खी हो सकता था जब उस सरणी सिंटैक्स को डिज़ाइन किया गया था!
एडम पेन्न्टर

29
मुझे यह कहने से नफरत है लेकिन डब्ल्यूटीएफ एक सी प्रकार प्रणाली का एक निरंतर विस्तार है। यदि C फ़ंक्शंस को सरणियाँ वापस करने की अनुमति दी गई थी, तो यह कैसा दिखेगा। अच्छे व्यक्ति इसे अधिक पठनीय बनाने के लिए एक निरंतरता उल्लंघन है। बहुत कुछ "कास्ट चार * वर्" बनाम "चार कास्ट * वर्"।
गॉर्डन Wrigley

15
@ अदम - यह वास्तव में समझ में आता है जब आप समझते हैं कि चर घोषणा समान रूप से दोनों "int सामान []" और "int [] सामान" की अनुमति देती है। वे सिर्फ वही नियम विधि घोषणा के लिए काम करते हैं।
ब्रैंडन यारब्रॉट

2
@ लिम्बस: वास्तव में, const T*और T const*समतुल्य है, यह T* constसूचक को संकुचित करता है। इसके अलावा, मुझे फैंस से नफरत है।
सिमोन बुकान

3
आखिर, numbers()[2]एक कानूनी बयान है।
badp 16

184

INTERCAL शायद सबसे अजीब भाषा सुविधाओं का सबसे अच्छा संग्रह है। मेरा व्यक्तिगत पसंदीदा COMEFROM बयान है जो (लगभग) गोटो के विपरीत है।

COMEFROM लगभग GOTO के विपरीत है कि यह कोड में किसी भी मनमाने बिंदु से COMEF कथन के लिए निष्पादन स्थिति ले सकता है। कोड में वह बिंदु जहां राज्य स्थानांतरण होता है, आमतौर पर COMEFROM के पैरामीटर के रूप में दिया जाता है। क्या निर्दिष्ट हस्तांतरण बिंदु पर निर्देश से पहले या बाद में स्थानांतरण होता है या नहीं, यह प्रयुक्त भाषा पर निर्भर करता है। उपयोग की गई भाषा के आधार पर, एक ही प्रस्थान बिंदु को संदर्भित करने वाले कई COMEFROMs अमान्य हो सकते हैं, गैर-नियतात्मक हो सकते हैं, किसी प्रकार की परिभाषित प्राथमिकता में निष्पादित किए जा सकते हैं, या यहां तक ​​कि समानांतर या अन्यथा समकालिक रूप से थ्रेडेड इंटरलोक में देखे जाने के लिए प्रेरित करते हैं। "COMEFROM x" स्टेटमेंट का एक सरल उदाहरण एक लेबल x है (जो कि इसके संबंधित COMEFROM के पास कहीं भी भौतिक रूप से स्थित होने की आवश्यकता नहीं है) जो "ट्रैप डोर" के रूप में कार्य करता है। जब कोड निष्पादन लेबल तक पहुंचता है, तो COMEFROM के बाद नियंत्रण को नियंत्रण में दिया जाता है। इसका प्रभाव मुख्य रूप से डिबगिंग (और प्रोग्राम के नियंत्रण प्रवाह को समझना) को अत्यंत कठिन बनाना है, क्योंकि लेबल के पास कोई संकेत नहीं है कि नियंत्रण रहस्यमय तरीके से कार्यक्रम के किसी अन्य बिंदु पर कूद जाएगा।


16
काफी बुरा - GOTO में लेबल बदल जाता है। ऐसा लगता है कि एक भाषा फीचर हैकर्स के लिए भीख माँगता होगा ...
RCIX

114
ठीक है, लेकिन INTERCAL को मजाकिया माना जाता है - यह वास्तव में आश्चर्यजनक नहीं है "गोचा"। INTERCAL कंपाइलर वास्तव में प्रोग्राम को संकलित करने से इंकार कर सकता है यदि आप PLEASEपर्याप्त रूप से संशोधक का उपयोग नहीं करते हैं !
ग्रू

10
एओपी की तरह लगता है :)
अकुं

6
मुझे सबसे अधिक आश्चर्य इस बात का है कि "कमर्शियल टीआई की दुनिया" में सिस्टम आवश्यकता विश्लेषण, COMEFROMs का उपयोग वास्तव में टेक्स्ट फाइलों में किया जाता है, जो उपयोग मामलों का वर्णन करते हैं। (गंभीरता से: यहाँ कुछ विश्लेषकों ने MS के कार्यालय के बजाय OpenOffice के लिए एक कॉर्पोरेट व्यापक प्रवासन में देरी की क्योंकि पूर्व एक लिंक में आवश्यक ग्रैन्युलैरिटी के साथ "कमफ्रोम" को ठीक से संदर्भित नहीं कर सकता था)
jsbueno

5
ग्रू: यह बदतर है। कृपया बार-बार उपयोग करें और यह आपके प्रोग्राम को संकलित करने से इंकार करता है क्योंकि आप ग्रूवल कर रहे हैं (C-INTERCAL को 33% और 66% बयानों के बीच PLEASE संशोधक की आवश्यकता है)।
वेटाइन

160

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

f(1)

कंपाइलर निरंतर 1 के पते को निरंतर पूल में फ़ंक्शन में पास करेगा। यदि आपने फ़ंक्शन में पैरामीटर को एक मान दिया है, तो आप प्रोग्राम में विश्व स्तर पर मूल्य (इस मामले में 1 का मान) को बदल देंगे। जिससे सिर में कुछ खरोंच आई।


124
ऊह। तो 2+2 कर सकते हैं के बराबर 5(के बहुत बड़े मूल्यों के लिए 2निश्चित रूप से!)।
आलोक सिंघल

12
उम, 2 का क्या मान "2 + 2" == "5" बना देगा? मुझे नहीं पता कि कोई भी पूर्णांक मान 2 उस पर खरा उतर सकता है।
आरोन

36
@ पर्लज़: मुझे संदेह है कि यह एक बिट वैल पैटर्न के अभिन्न मूल्य के रूप में हवा होगा। दूसरी ओर, आप शायद इस तरह से 5 से 4 सेट कर सकते हैं (इसलिए छोटे मूल्यों के लिए 2+2बराबर होगा )। 55
डेविड थॉर्नले

18
क्षमा करें, आलोक, लेकिन यह प्रारंभिक फोरट्रान है जिसके बारे में हम बात कर रहे हैं। यह सच नहीं होगा 2 + 2 = 5; यह एक सिंटैक्स त्रुटि होगी। क्या सच हो जाएगा 2 + 2 .EQ. 5
डेविड थॉर्नले

3
हास्केल में निम्नलिखित स्निपेट 5 का मूल्यांकन करता है: "2 + 2 = 5 को 2 + 2" में दें :)
तिरपन

153

नहीं जानते कि क्या इसे भाषा की विशेषता माना जा सकता है, लेकिन, C ++ में टेम्पलेट्स से संबंधित लगभग कोई भी कंपाइलर त्रुटि, दैनिक आधार पर दुनिया भर के कई C ++ प्रोग्रामर को काफी मात्रा में WTF वितरित करता है :)


15
यह ठीक है, टेम्प्लेट से संबंधित अधिकांश कोड पहले से ही दुनिया भर में बहुत सारे डब्ल्यूटीएफ बनाता है।
जोरिस टिम्मरमन्स

43
ओह अब आ जाओ। d std :: basic_ostream <char, std :: char_traits <char>> & std :: ऑपरेटर << <std :: char_traits <char>> (std :: basic_ostream <char, std :: char_traits <char> > &, चार कास्ट *) 'पूरी तरह से पठनीय है!
मैट ग्रीर

10
मुझे एक बार एक टेम्प्लेट-संबंधित कंपाइलर त्रुटि हुई थी जो पांच लाइनों में थी, जिनमें से सबसे छोटी सत्रह हजार वर्ण (एक गहरी टेम्प्लेटेड प्रोग्राम में क्लासिक 'एक्स के लिए कोई मिलान नहीं') थी। यह डब्ल्यूटीएफ है, पहली जगह में सुविधा नहीं, टेम्पलेट अद्भुत हैं।
एंड्रयू मैकग्रेगर

111
यहां तक ​​कि अगर कोई त्रुटि नहीं है, तो यह पता लगाने की कोशिश करें कि कौन से फ़ंक्शन आपके प्रोफाइलर के साथ सबसे लंबे समय तक लगते हैं। ओह देखो, यहstd::vector<std::pair<int, std::complex>, std::allocator<std::pair<int, std::complex> > >::vector< std::vector<std::pair<int, std::complex>, std::allocator<std::pair<int, std::complex> > >::iterator>(std::vector<std::pair<int, std::complex>, std::allocator<std::pair<int, std::complex> > >::iterator, std::vector<std::pair<int, std::complex>, std::allocator<std::pair<int, std::complex> > >::iterator, std::allocator<std::pair<int, std::complex> >)
rlbond

12
मुझे लगता है कि यह यहाँ फिट बैठता है: आउटपुट पठनीय बनाने के लिए bdsoft.com/tools/stlfilt.html पर STLFilt देखें
9

150

C के कई नाम रिक्त स्थान:

typedef int i;

void foo()
{
    struct i {i i;} i;
    i: i.i = 3;
    printf( "%i\n", i.i);
}

या पात्रों के साथ:

typedef char c;

void foo()
{
    struct c {c c;} c;
    c: c.c = 'c';
    printf( "%c\n", c.c);
}

कैसे नरक इस संकलन को स्पष्ट रूप से करता है !?
अर्लज़

13
Enums और स्ट्रक्चर्स के लिए +1 टैग आइडेंटिफिकेशन C imho का सबसे भ्रामक हिस्सा है। कुछ लोग समझते हैं कि एक संरचना के लिए एक संकेतक टाइप करने के लिए मुहावरे ऐसा क्यों दिखता है।
तदेउस्ज़ ए। कदलोबोस्की

11
यह संकलित करता है क्योंकि उनमे से हर एक के पास संदर्भ के कारण असंदिग्ध नाम स्थान है।
एंड्रयू मैकग्रेगर

149

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

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

उदाहरण के लिए, यदि मेरे पास 4 रिक्त स्थान है और इसे 8 खंडों वाले इंडेंट के ब्लॉक के अंत में पेस्ट किया गया है, तो मेरे संपादक (सभी संपादक?) को पता नहीं है कि क्या पेस्ट किया गया कोड 8-स्पेस ब्लॉक या बाहरी से संबंधित है? खंड मैथा। OTOH, अगर मेरे पास स्पष्ट सीमांकक है तो यह स्पष्ट है कि कोड किस ब्लॉक का है और इसे कैसे (पुनः) इंडेंट किया जाना चाहिए - यह ऐसा होता है जो समझदारी से ब्लॉक डेलिमिटर की तलाश करता है।

संपादन 2: कुछ लोग जो टिप्पणियां प्रदान करते हैं, उन्हें लगता है कि यह एक ऐसी विशेषता है जिससे मैं घृणा करता हूं या मुझे लगता है कि अजगर को एक गरीब भाषा बनाता है। फिर, सच नहीं है। जबकि मुझे यह सब पसंद नहीं है, बस यही बात है। सवाल सबसे अजीब भाषा सुविधा के बारे में है, और मुझे लगता है कि यह अजीब है, इसके द्वारा कुछ बहुत, बहुत कम (लेकिन> 0) भाषाओं का उपयोग किया जाता है।


63
अगर यह आपकी उत्पादकता के रास्ते में हो जाता है तो आपका गैर-पायथन कोड बहुत पठनीय नहीं हो सकता है ...
Tor Valamo

27
पायथन से पहले आपने किस भाषा का उपयोग किया था? आप अन्य लोगों के साथ कैसे काम कर पा रहे थे और उस भाषा को नहीं अपना रहे थे? कोई किसी भाषा में गैर-इंडेंट कोड के साथ कैसे रख सकता है ? क्या आपने जीनियस से भरे कमरे में काम किया था, जिन्हें सोर्स कोड में विजुअल क्यूज़ की ज़रूरत नहीं थी?
एस.लॉट

53
+1 अधिक सहमत नहीं हो सकता है, अगर मेरा संपादक (Emacs) मेरे कोड को कुछ अलग (जैसे ब्रेसिज़ / शुरू, अंत / आप इसे नाम) के आधार पर इंडेंट नहीं कर सकता है, तो यह गंभीर रूप से मूर्खतापूर्ण है। बहुत ज्यादा किसी भी "बड़े" समारोह में आप जो भी करते हैं, वह वास्तव में बुरा अनुभव हो सकता है।
दिमित्री

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

38
मैं पायथन में व्हॉट्सएप का बुरा नहीं मानता। डब्ल्यूटीएफ यह है कि इसे लगातार लागू नहीं किया जाता है। आप इंडेंट स्तर और टैब को मिला सकते हैं, जब तक कि वे अपने भाई-बहनों के अनुरूप हों। तो पहला इंडेंट स्तर एक स्थान हो सकता है, और दूसरा दो TAB हो सकता है, और यह सिंटैक्स त्रुटि नहीं है।
२०

138

मैंने इस बारे में थोड़ा संघर्ष किया:

1;

पर्ल में, मॉड्यूल को कुछ सच लौटने की जरूरत है


29
कुछ मॉड्यूल रनटाइम ऑपरेशन के आधार पर मान लौटा सकते हैं। यदि आप हमेशा सच लौटाते हैं, तो भी आपको इसके बारे में अनिश्चित
बेनामी

8
यदि मेरी पर्ल मेमोरी मुझे सही ढंग से काम करती है, तो मॉड्यूल से सच लौटना इंगित करता है कि मॉड्यूल सफलतापूर्वक लोड हुआ है। एक गलत मान लौटने का मतलब था कि कुछ गलत हो गया था और कार्यक्रम को चलने से रोका जाएगा (यदि पकड़ा नहीं गया)।
बैरी ब्राउन

यह एक मान्य सी स्टेटमेंट है, केवल कुछ भी नहीं लौटाया जाता है।
सिगाजाइस

24
मार्क डोमिनस ने लिखा, "मैंने बहुत कम ही उपयोग किया है 'Cogito ergo sum';जो सभी को पता है कि सभी संभव ब्रह्मांडों में स्व-स्पष्ट है। यह अधिकतम पोर्टेबिलिटी सुनिश्चित करता है।"
ग्रेग बेकन

PHP <?=1;?>1. <?=true;?>रिटर्न 1. <?=false;?>रिटर्न।
तलवी वटिया

135

मुझे आश्चर्य है कि किसी ने भी Visual Basic के 7 लूप निर्माण का उल्लेख नहीं किया है ।

For i As Integer = 1 to 10 ... Next
While True ... End While
Do While True ... Loop
Do Until True ... Loop
Do ... Loop While True
Do ... Loop Until True
While True ... Wend

क्योंकि चिपकना एक! आपकी स्थिति के सामने रास्ता बहुत जटिल है!


47
उन्हें इसे " Whileऔर Whend" बनाना चाहिए था, क्योंकि कुछ लोग ऐसे हैं जो शब्द का उच्चारण करते हैं "जबकि" ध्वनिरहित लेबिरिज्ड वेलर अंदाज से। और निश्चित रूप से यह अच्छा है, और कोड है कि ऊपर लाइनों अच्छा है।
ड्रीमलैक्स

43
तुम इतनी निष्ठुरता से काम क्यों कर रहे हो?
एरिक फोर्ब्स

48
वाह। जब मुझे लगता है कि मैं थोड़े उदासीन हो जाता हूं। पहली बार जब मैंने कभी वीबी का उपयोग किया था तो 9 साल की उम्र में वापस आ गया था। मैं स्वेद से हूँ, और फिर अंग्रेजी में बहुत कुशल नहीं था। अब, एक सिन शब्द है जिसे "vänd" कहा जाता है जिसका मूल अर्थ है "वापस मुड़ना" और इसका उच्चारण "wend" के समान होता है। उसके कारण मुझे लगा कि यह बहुत मायने रखता है ... :)
एमिल एच

61
! VB में नहीं है, यह "नहीं" है। या यह है? हाँ, नहीं है, लेकिन नहीं है।
1

7
हां, "वेंड" एक अंग्रेजी शब्द है, जिसका अर्थ है किसी कोर्स या रास्ते पर जाना या आगे बढ़ना ( google.com/search?q=define%3A+wend )। मुझे यकीन नहीं है कि अगर मदद करता है या दर्द होता है।
माइकल मायर्स

134

जो नहीं जानते हैं, bcउनके लिए "मनमाना सटीक कैलकुलेटर भाषा" है, और मैं इसे त्वरित गणना के लिए अक्सर उपयोग करता हूं, खासकर जब इसमें शामिल संख्याएं बड़ी होती हैं ( $शीघ्र होती है):

$ bc -lq
12^345
20774466823273785598434446955827049735727869127052322369317059031795\
19704325276892191015329301807037794598378537132233994613616420526484\
93077727371807711237016056649272805971389591721704273857856298577322\
13812114239610682963085721433938547031679267799296826048444696211521\
30457090778409728703018428147734622401526422774317612081074841839507\
864189781700150115308454681772032

bcलंबे समय तक एक मानक यूनिक्स कमांड रहा है।

अब "डब्ल्यूटीएफ सुविधा" के लिए। यह man bc(जोर मेरा) से है:

छोड़ दिया : जब छोड़ दिया बयान पढ़ा जाता है, तो bc प्रोसेसर को समाप्त कर दिया जाता है, भले ही वह कथन कहां से मिला हो। उदाहरण के लिए, "अगर (0 == 1) छोड़ दिया" बीसी को समाप्त करने का कारण होगा।

हॉल्ट : हॉल्ट स्टेटमेंट (एक एक्सटेंशन) एक निष्पादित स्टेटमेंट है, जो बीसी प्रोसेसर को केवल तभी छोड़ता है जब इसे निष्पादित किया जाता है। उदाहरण के लिए, "अगर (0 == 1) पड़ाव" को समाप्त करने के लिए बीसी का कारण नहीं होगा, क्योंकि पड़ाव निष्पादित नहीं किया जाता है।


41
मैं इस सामान के लिए हास्केल का उपयोग करता हूं।
थॉमस ईडिंग

8
Google कैलकुलेटर?
igul222

7
मैंने खुद पायथन का उपयोग करना शुरू कर दिया है, और यदि आप ऑनलाइन हैं तो Google कैलकुलेटर अच्छा है। लेकिन मैं bcउससे पहले उपयोग करता था, और bcमैन पेज के महान उद्धरणों के कारण अपनी पोस्ट में लिखना चाहता था ।
आलोक सिंघल

6
@ ब्रायन, तब आप पसंद करेंगे: echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq'|dc(हालाँकि आप यह पहले से ही जानते होंगे)।
आलोक सिंघल

2
मैं irb (रूबी इंटरैक्टिव शेल) का उपयोग करता हूं। लेकिन दिन में वापस, मैं हमेशा डीसी के लिए पहुंच गया - जैसे कि बीसी, लेकिन रिवर्स पॉलिश का उपयोग करता है। Geektastic!
ट्राएगोमस्कालोस

134

मैं हमेशा सोचता था कि सबसे सरल कार्यक्रम क्यों था:

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

जबकि यह हो सकता है:

print "Hello World!"

शायद यह पहली जगह में कंप्यूटर विज्ञान के छात्रों को डराने के लिए है ...


34
कुछ भाषाओं में, "हैलो वर्ल्ड!" एक वैध कार्यक्रम है।
डेविड थोरले

31
@SoMoS: पायथन, रूबी, या पर्ल प्रिंट जैसी सबसे गतिशील भाषाओं में "हैलो वर्ल्ड!" या कुछ मामूली भिन्नता (जैसे प्रिंट के बजाय पुट) एक वैध और पूर्ण कार्यक्रम है।
डेव किर्बी

36
@ लामामास्टर: निहितार्थ था कि "सभी कोड एक वर्ग में हैं" या "सभी कोड एक फ़ंक्शन में हैं" अनावश्यक बाधाएं हैं
जिमी

19
सिर्फ इसलिए कि एक भाषा वस्तुओं के उपयोग को लागू करती है, इसका मतलब यह नहीं है कि इसका उपयोग उचित वस्तु-उन्मुख प्रोग्रामिंग के लिए किया जा रहा है। जावा या सी # में प्रक्रियात्मक रूप से कार्यक्रम करना पूरी तरह से संभव है। यही स्टैटिक तरीके हैं।
jdmichal

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

132

जावास्क्रिप्ट ऑब्जेक्ट ओरिएंटेड है, है ना? इसलिए शाब्दिक तार और संख्याओं पर चलने के तरीके काम करने चाहिए। जैसा "hello".toUpperCase()और 3.toString()। पता चला है कि दूसरा एक वाक्यविन्यास त्रुटि है, क्यों? चूँकि पार्सर एक संख्या की अपेक्षा करता है जिसके बाद डॉट एक फ्लोटिंग पॉइंट शाब्दिक होता है। यह डब्ल्यूटीएफ नहीं है, डब्ल्यूटीएफ यह है कि आपको इसे काम करने के लिए केवल एक और डॉट जोड़ना होगा:

3..toString()

कारण यह है कि शाब्दिक 3.रूप में व्याख्या की गई है 3.0, और 3.0.toString()ठीक काम करता है।


8
इस तरह से पायथन में भी काम करता है (कोशिश 3..__add__(4))। फिर मुझे लगता (3).__add__(4)है कि यह करने के लिए बहुत कम मस्तिष्क क्षतिग्रस्त तरीका है :)
बैड जूल

49
आप बस (3) .toString ()
जोसेफ मोंटानेज़

13
@ गोरिल्ला 3 डी: हाँ, लेकिन यह एक अजीब भाषा विशेषता नहीं है, क्या यह है?
थियो

25
3.0.toString()मेरी आँखों में खुजली होती है।
बेन ब्लैंक

18
127.0.0.1.toInt ()
बर्कस

130

जावास्क्रिप्ट में:

2 == [2]

// Even stranger
2 == [[[2]]]

// And down-right nutty
var a = { "abc" : 1 };
a[[[["abc"]]]] === a["abc"]; // this is also true

सौभाग्य से stackoverflow.com पर दयालु लोगों ने मुझे पूरी बात समझाई: जावास्क्रिप्ट में 2 == [2] क्यों होता है?


6
इसलिए आपको ===इसके बजाय उपयोग करना चाहिए ।
गुम्बो

10
यह उपयोगी btw है, अगर आपके पास एक फ़ंक्शन है जो एक नंबर देता है और आप इसके साथ कुछ अतिरिक्त मेटाडेटा वापस करना चाहते हैं, तो आप कुछ अतिरिक्त फ़ील्ड्स के साथ [संख्या] वापस कर सकते हैं। सरल कोड कभी नहीं जान पाएंगे कि यह एक वास्तविक संख्या नहीं है, और अन्य कोड आवश्यक मेटाडेटा प्राप्त कर सकते हैं।
एंड्री शेकिन

36
@ इसके अलावा, अगर मुझे कभी ऐसा कोड बनाए रखना है जो आपको सुझाव देता है, तो मैं बहुत जल्द इसके लेखक की मृत्यु की कामना करूंगा।
ब्रेटन

@ और, यह एक महान विचार है! आप भी Number(n)कुछ ऐसा ही करने के लिए उपयोग कर सकते हैं । दुर्भाग्य से हमारे दोनों घोल ==== (
Xavi

5
+1: मैंने अपने आप को एक ज्ञानी js प्रोग्रामर माना है, और मैंने इस बारे में कभी नहीं जाना है: D
थॉमस Eding

126

मेरी सबसे बड़ी नफरत वाली विशेषता किसी भी कॉन्फ़िगरेशन फ़ाइल सिंटैक्स है जिसमें सशर्त तर्क शामिल हैं। इस तरह की बात जावा दुनिया में व्याप्त है (चींटी, मेवेन, आदि। आप जानते हैं कि आप कौन हैं!)।

आप सीमित एसी डीबगिंग और सीमित संपादक समर्थन के साथ एसी ** पी भाषा में प्रोग्रामिंग समाप्त करते हैं।

यदि आपको अपने कॉन्फ़िगरेशन में तर्क की आवश्यकता है, तो एक वास्तविक भाषा में कॉन्फ़िगरेशन को कोड करने का "पायथोनिक" दृष्टिकोण बहुत बेहतर है।


24
Tcl ने फिर से आविष्कार किया कि अजगर के जन्म से बहुत पहले और लिस्प ने उससे पहले इसका आविष्कार किया था। तो आइए इसे पाइथोनिक न कहें, आइए इसे Emacs-ish कहें।
स्लीवेटमैन

46
चलो इसे सही कहते हैं।
मितले १le'१० को १:५०

30
तथास्तु। यदि आपका कॉन्फ़िगरेशन या बिल्ड भाषा पूर्ण रूप से ख़राब हो रही है, तो आप इसे गलत कर रहे हैं। मैं आपको सीएमके / ऑटोटूलस देख रहा हूं।
जोसेफ गार्विन

16
यह वही है जो लुआ के लिए डिज़ाइन किया गया था, मूल रूप से
कोगव्हील

1
ठीक है, यदि आपका कोड पायथन में है, तो आपकी कॉन्फ़िगरेशन फ़ाइल पायथन फ़ाइल होना एक बहुत अच्छा विचार है, क्योंकि आप तब फ़ाइल आयात करते हैं और मॉड्यूल की विशेषताओं को पढ़ते हैं। और आपको अपने config फाइल में 100% ट्यूरिंग पॉवर ऑफ़ पाइथन मिलता है।
asmeurer

113

पॉवरबेसिक (www.powerbasic.com) में कंपाइलर निर्देश शामिल हैं:

# BLOAT {bloatsize}

यह <bloatsize>बाइट्स द्वारा संकलित निष्पादन योग्य के आकार को बढ़ाता है । यह संकलक में डाल दिया गया था जब लोगों को निष्पादन योग्य बनाने से उत्पन्न निष्पादन योग्य के छोटे आकार को पसंद नहीं है। यह EXE फूला हुआ प्रोग्रामिंग भाषाओं के साथ प्रतिस्पर्धा करने के लिए बड़ा लगता है :)


9
हा युक। मैंने डेवलपर्स के बारे में जानबूझकर कुछ ऑपरेशन (जैसे एक खोज) को धीमा कर दिया है क्योंकि यह लोगों को यह विश्वास दिलाने में मदद करता है कि यह वास्तव में कुछ कर रहा है। इसी तरह की बात मैं अनुमान लगाता हूं।
डेविड

42
यह मुझे हाल ही में पढ़ी गई कुछ की याद दिलाता है। वे एक एफपीएस का परीक्षण कर रहे थे और बदमाशों की संख्या को बढ़ाने का फैसला किया था। फिर उन्होंने परीक्षकों से पूछा कि वे एआई कैसे थे, और उन्होंने कसम खाई कि यह बहुत चालाक था। लेकिन एआई नहीं बदला था, सिर्फ हिट अंक। लोगों के सिर में दुनिया के बारे में एक निश्चित आख्यान है, और यदि आप उनकी अपेक्षाओं को समझते हैं और मेल खाते हैं तो वे यह मान लेंगे कि यह उनके कथन को मान्य करता है।
नैट सीके

5
मैं अपने कार्यक्रमों में बहुत सी अतिरिक्त सुस्ती मिलाता था ताकि वे यह देख सकें कि वे कुछ जटिल कर रहे थे। प्राथमिक विद्यालय में वापस, कि है।
मत्ती वीरकुंकेन

3
स्कूल में वापस हमारे पास 80286 मशीनें थीं और मुझे वाजिब गति पाने के लिए विधानसभा में कुछ स्क्रीन आउटपुट दिनचर्या लिखनी थी (यानी क्रॉल नहीं)।
बर्कस

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