PHP में इंटरफेस क्यों है?


35

मैंने देखा कि PHP5 के रूप में, इंटरफेस को भाषा में जोड़ा गया है। हालाँकि, चूंकि PHP इतनी शिथिल टाइप की है, इसलिए ऐसा लगता है कि इंटरफेस का उपयोग करने का अधिकांश लाभ खो गया है। इसे भाषा में क्यों शामिल किया गया है?


5
मुझे लगता है कि सही सवाल है, क्यों नहीं?
अल्बर्टो फर्नांडीज

5
क्योंकि वे किसी भी लाभ की पेशकश नहीं करते हैं, इसलिए उन्हें शामिल क्यों करें?
GSto

4
@ हॉर्सकोल और इससे पहले कि वे लागू किए गए थे, उनका उपयोग नहीं किया गया था, इसलिए आप देख सकते हैं कि कैसे वे अप्रयुक्त और बेकार थे केवल एक संस्करण से पहले। आपको इस दावे को भी बनाना और समर्थन करना होगा कि उनका उपयोग किसी तरह से यह कहने के लिए सुधार है कि वे उपयोगी हैं।
रीन हेनरिक्स 21

6
@ हॉर्सकॉल बिल्कुल भी नहीं। हथौड़ा के मूल्य प्रस्ताव को प्रदर्शित करना आसान है। यह सवाल किसी को PHP इंटरफेस के मूल्य प्रस्ताव को प्रदर्शित करने के लिए कह रहा है, न कि केवल यह घोषित करने के लिए कि वे एक तर्कपूर्ण तरीके से मूल्यवान हैं।
रीन हेनरिक

3
और याद रखें कि इंटरफेस केवल टाइपिंग के बारे में नहीं हैं। एक इंटरफ़ेस एक अनुबंध है जिसमें कहा गया है कि एक कार्यान्वयन वर्ग में उन तरीकों को शामिल करना चाहिए जो इसे बाहर करता है। प्लगइन इंजन जैसी चीजों के लिए उपयोगी।
माइकल

जवाबों:


30

PHP में इंटरफेस का मुख्य लाभ यह है कि कक्षाएं कई इंटरफेस को लागू कर सकती हैं। यह आपको उन कक्षाओं को समूहीकृत करने की अनुमति देता है जो कुछ कार्यक्षमता साझा करते हैं लेकिन जरूरी नहीं कि वे मूल वर्ग को साझा करते हों। कुछ उदाहरणों में एक निश्चित तरीके से वर्ग के कैशिंग, आउटपुट या एक्सेसिंग गुण शामिल हो सकते हैं।

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

PHP कुछ पूर्वनिर्धारित इंटरफेस प्रदान करती है जो विभिन्न स्थितियों में काम आ सकते हैं: http://php.net/manual/en/reserved.interfaces.php

EDIT - एक उदाहरण जोड़ना

यदि आपके पास MyInterface नाम का एक इंटरफ़ेस है और आप विभिन्न वर्गों की कई वस्तुओं के साथ काम कर रहे हैं जो कुछ कार्यक्षमता साझा कर सकते हैं या नहीं कर सकते हैं, तो इंटरफेस आपको कुछ ऐसा करने की अनुमति देता है:

// Assume $objects is an array of instances of various classes
foreach($objects as $obj) {
 if($obj instanceof MyInterface) {
     $obj->a();
     $obj->b();
     $obj->c();
   }
}

23
दूसरे शब्दों में: "आप डायनामिक-टाइप की गई भाषाओं के सभी लाभों को पूरी तरह से अनदेखा कर सकते हैं"
कामिल तोमिक्क

11
@ कामिल, मुझे लगता है कि जब आप उन्हें नहीं छोड़ेंगे तो कमियां भुगतने के बिना स्थैतिक टाइपिंग के लाभों का लाभ उठा पाएंगे।
कार्ल ब्वेलफेल्ट

9
क्या आप गंभीर हैं? का उदाहरण? if-if-if-if-if-all-the-time, क्या यह परिचित नहीं है? आह, हाँ, प्रक्रियात्मक प्रोग्रामिंग।
कामिल टॉमकिक

23
@Kamil Tomšík फिर भी PHP की भाषा में एक और अपमान जो लोग इसे अक्षम रूप से उपयोग करते हैं। PHP में संपूर्ण ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए सभी उपकरण हैं। आप प्रोग्रामर तक उन का उपयोग करते हैं या नहीं। इसके अलावा, प्रक्रियात्मक प्रोग्रामिंग में और अपने आप में कुछ भी गलत नहीं है।
लोटस नोट्स

18
@ कामिल - कितना अजीब है, आपकी टिप्पणी को पढ़कर कोई भी व्यक्ति इस निष्कर्ष पर पहुँच सकता है कि ओओपी में इफ-एस नहीं हैं और किसी तरह, जादुई रूप से - चीजों को काम मिलता है। वाह।
माइकल जेवी

23

PHP शिथिल टाइप की है, लेकिन इसे विधि पैरामीटर जैसी चीजों के बारे में दृढ़ता से टाइप किया जा सकता है।

निम्नलिखित उदाहरण पर विचार करें:

interface Car { function go(); }

class Porsche { function go() {} }

function drive(Car $car) {}

$porsche = new Porsche();

drive($porsche);

उपरोक्त कोड आउटपुट होगा:

तर्क 1 ड्राइव करने के लिए पारित () इंटरफ़ेस कार को लागू करना चाहिए, दिए गए पॉर्श का उदाहरण


1
यकीन है, यह बहुत बुरा है। आपके पास nullपैरामीटर के लिए एक डिफ़ॉल्ट मान हो सकता है , हालांकि।
इमानुएल रूसेव

5
लेकिन अगर driveएक की आवश्यकता है Car, तो nullवैसे भी बहुत उपयोगी नहीं होगा ...
HorusKol

7
कभी अशक्त न करें। एक "स्पेशल केस" ऑब्जेक्ट (मार्टिन फॉलर की व्याख्या के लिए Google) का उपयोग करें।
मार्टिन ब्लेयर ने

2
@ संदर्भ यदि आप डिफ़ॉल्ट मान को अशक्त करने के लिए सेट करते हैं, तो आप अशक्त को टाइप किए गए तरीकों से पास कर सकते हैं। (सीएआर $ कार = नल) आपको इस पद्धति को एक तर्क के रूप में अशक्त करने की अनुमति देगा। यह एक बहुत मूर्खतापूर्ण अभ्यास होगा। पृथ्वी पर आप ऐसा क्यों कर पाएंगे?
dqhendricks

2
ठोस उदाहरण: function addView($name, Template $template, SecurityMode $securityMode = null, $methodName = null);आपके पास हो सकता है $methodNameलेकिन नहीं $securityMode
निकोल

7

इंटरफेस आपको खुले-बंद सिद्धांत को लागू करने, एक शिथिल युग्मित कोड आधार को बनाए रखने और कई बेहतरीन ओओपी पैटर्न को लागू करने की अनुमति देता है।

उदाहरण के लिए, यदि एक वर्ग दूसरे वर्ग को तर्क के रूप में स्वीकार करता है:

class A {

    public function __construct(B $class_b) {
        // use class b
        $class_b->run();
    }
}

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

चलो कहते हैं कि आप चाहते हैं कि क्लास ए उन सभी प्रकार की कक्षाओं का उपयोग करने में सक्षम हो जो एक रन () विधि है। यह मूल रूप से (लेकिन काफी नहीं) COMMAND डिजाइन पैटर्न है। हल करने के लिए, आप इसके बजाय एक ठोस वर्ग के बजाय एक इंटरफ़ेस का उपयोग करके संकेत देंगे। B वे उस इंटरफ़ेस को लागू करेंगे, और वर्ग ए के लिए एक तर्क के रूप में स्वीकार किया जाएगा। इस तरह वर्ग ए किसी भी वर्ग को स्वीकार कर सकता है जो उस इंटरफ़ेस को अपने निर्माता के लिए तर्क के रूप में उपयोग करता है।

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


1
या बी के किसी भी उपवर्ग
मेजर

7

@pjskeptic के पास एक अच्छा उत्तर है , और @Kamil Tomšík के पास उस उत्तर पर एक अच्छी टिप्पणी है।

PHP जैसी गतिशील रूप से टाइप की जाने वाली भाषाओं के बारे में महान बात यह है कि आप वस्तुओं पर विधियों का उपयोग करने का प्रयास कर सकते हैं और यह तब तक आपके ऊपर नहीं चिल्लाएगा जब तक कि विधि वहां मौजूद न हो।

PHP जैसी गतिशील रूप से टाइप की जाने वाली भाषाओं के साथ समस्या यह है कि आप ऑब्जेक्ट पर विधियों का उपयोग करने का प्रयास कर सकते हैं और जब यह विधि नहीं होगी तो यह आप पर चिल्लाएगा।

इंटरफेस किसी अज्ञात वस्तु पर कॉल करने के तरीकों का एक सुविधाजनक तरीका जोड़ते हैं और यह निश्चित करते हैं कि तरीके वहां हैं (ऐसा नहीं है कि वे आवश्यक रूप से सही हैं या काम पर जा रहे हैं)। यह किसी भाषा का आवश्यक हिस्सा नहीं है, लेकिन यह कोडिंग को अधिक सुविधाजनक बनाता है। यह दृढ़ता से टाइप किए गए OOP डेवलपरों को दृढ़ता से टाइप किए गए PHP कोड लिखने की अनुमति देता है, जो तब एक अलग PHP डेवलपर द्वारा लिखे गए शिथिल टाइप PHP कोड के साथ काम कर सकते हैं।

एक समारोह की तरह:

foo( IBar $bar )
{
  $baz = $bar->baz();
  ...
}

से अधिक सुविधाजनक है:

foo( $bar )
{
  if ( method_exists( $bar, 'baz' ) )
  {
    $baz = $bar->baz();
  }
  else
  {
    throw new Exception('OMGWTF NO BAZ IN BAR!');
  }
  ...
}

और IMHO सरल, पठनीय कोड बेहतर कोड है।


1
इसके बजाय आप क्या करते हैं, बस विधि और क्रैश की जांच न करें और जब कोई व्यक्ति आपके फ़ंक्शन को गलत डेटा के साथ कॉल करता है, तो उसे जलाएं। यदि कोई आपके फ़ंक्शन का गलत उपयोग करता है तो यह आपकी समस्या नहीं है।
रेयानोस

बिल्कुल नहीं - आपका उदाहरण किसी के लिए दुःस्वप्न है जो किसी भी गतिशील "बत्तख" को पास करना चाहते हैं, जैसे प्रॉक्सी, एडेप्टर, डेकोरेटर आदि
कामिल तोमिक्क

1
@Kamil? ऐसा कैसे। एक प्रॉक्सी कुछ के लिए एक आवरण वर्ग होगा जो इस फ़ंक्शन के साथ उपयोग करने की अनुमति देने के लिए इंटरफ़ेस को लागू नहीं करता है।
tylermac

@tylermac डायनामिक प्रॉक्सी का उपयोग __call () - और यदि __call एकमात्र तरीका है, तो यह बस IBar को लागू नहीं कर सकता है, जिसका अर्थ है कि आप इसे foo (IBar $ bar)
Kamil Tomšít

5

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

यह सभी प्रकार के डायनामिक मेटा-प्रोग्रामिंग (मैजिक मेथड्स) के लिए भी लागू होता है।


3

PHP नहीं है शिथिल या दृढ़ता, लेकिन गतिशील टाइप किया

इंटरफेस के बारे में, पहली बात जो आपको खुद से पूछनी चाहिए वह यह है: इंटरफेस के सबसे अधिक फायदे क्या हैं?

ओओपी में, इंटरफेस केवल प्रकारों के बारे में नहीं हैं, बल्कि व्यवहार के बारे में भी हैं।

चूंकि PHP में एक प्रकार का संकेत सुविधा भी है , इसलिए आप इंटरफेस का उपयोग उसी तरह कर सकते हैं जैसे आप शुद्ध oo भाषा में करते हैं, जैसे कि Java।

interface File
{
    public function getLines();
}

CSVFile implements File
{
    public function getLines()
    {}
}

XMLFile implements File 
{
    public function getLines()
    {}
}

JSONFile implements File 
{
    public function getLines()
    {}
}

class FileReader
{
    public function read(File $file)
    {
        foreach($file->getLines() as $line)
        {
            // do something
        }
    }
}

PHP इंटरफ़ेस के कार्यान्वयन के साथ, आप PHPUnit का उपयोग करके अमूर्त वर्गों के लिए mocks भी बनाते हैं - और यह एक फीचर का एक नरक है:

public function testSomething()
{
    $mock = $this->getMockForAbstractClass('File');

    $mock->expects($this->once())
         ->method('getLines')
         ->will($this->returnValue(array()));

    // do your assertions
}

तो, मूल रूप से, आप भाषा सुविधाओं का उपयोग करके PHP में एक ठोस संगत अनुप्रयोग हो सकते हैं , उनमें से एक इंटरफेस है।


0

कंक्रीट की तुलना में बहुत अधिक निर्भरता इंजेक्शन के लिए इंटरफेस उपयोगी होते हैं। एक नंगे स्वरुप के उदाहरण के रूप में:

interface Istore { 
  public function save(); 
}

class Article_DB implements Istore 
{ 
  public function save($data) 
  {
    // do save to format needed.
  } 
}

class Article
{
   private $content;

   public function content($content)
   {
     $this->content = $content;
   }

   public function save(Istore $store)
   {
     $store->save($this->content);
   }
}

$article = new Article();
$article->content('Some content');

$store = new Article_DB();
$article->save($store);

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

class Article_PDF implements Istore 
{ 
  public function save($data) 
  {
    // do save to format needed.
  } 
}


$article = new Article();
$article->content('Some content');

$store = new Article_PDF();
$article->save($store);

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


-1

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


-3

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

$ myVar = (int) 0; $ myOtherVar = '0';

तुलना करना ($ myVar == $ myVar) बराबर (बूल) सही होगा

लेकिन तुलना ($ myVar === $ myVar) बराबर (बूल) किसी भी "टाइप की गई" की तरह ही झूठी होगी

मैं वास्तव में चाहता हूं कि डेवलपर्स इन चीजों के बारे में बहस करना बंद कर दें, अगर आपको PHP के काम करने के तरीके में कोई समस्या है या तो जावा में प्रोग्राम करें और जियो और जीने दो, या इसे इस तरह से उपयोग करें कि यह वही करेगा जो आप इसे चाहते हैं .. क्या अच्छा है इसके बारे में कुतिया वैसे भी तुम्हारे लिए है? क्या आप पूरे दिन खराब करने का बहाना देते हैं? क्या आप किसी और से बेहतर दिखते हैं? वैसे यह बहुत अच्छा है कि आप अपने बारे में बहुत अधिक महसूस करते हैं कि आप किसी और को बुरा दिखने के लिए तैयार हैं लेकिन वास्तव में यह आपकी प्राथमिकता है और किसी पर भी आपका विश्वास करने के लिए मजबूर करता है वास्तव में उन्हें एक तरह से कोड बनाता है जो तीन चीजों को पैदा करने में सहज नहीं हैं:

1) वे आपके मानकों द्वारा आपके तरीके को "लेकिन गड़बड़" कोड देंगे (सोचिए, क्या आपने कभी एक जावा प्रोग्रामर को अपना पहला PHP प्रोग्राम या इसके विपरीत बनाते देखा है? यह उसी तरह होगा जो उनकी कार्यप्रणाली को बदल देगा या शायद और भी बदतर हो जाएगा।)

2) आपको कुछ और मिल जाएगा

3) उन्हें उत्पादन करने में शायद अधिक समय लगेगा। और शायद यह आपको अल्पावधि में बेहतर बना देगा, लेकिन एक पूरे के रूप में टीम इसके लिए बदतर दिखाई देगी (याद रखें कि आप किसी और की तुलना में धीमी गति से कोड कर सकते हैं और यह जरूरी नहीं है कि जब तक टीम एक उचित समय सीमा में डिलिवरेबल्स को पूरा करती है, तब तक यह बुरा नहीं है) लेकिन अपनी आदतों को किसी ऐसे व्यक्ति पर मजबूर करना, जिसने आम तौर पर थोड़ी तेजी से प्रदर्शन किया है, आपकी पूरी टीम को धीमा कर सकता है इस प्रकार, बहुत अधिक मांग में खराब दिखते हैं)

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


-4
  1. इंटरफेस OOP प्रतिमान का एक हिस्सा है। इसलिए यह कई मामलों में बहुत उपयोगी है जब आप ऑब्जेक्ट ओरिएंटेड पार्ट्स या आपके सिस्टम को बनाने की कोशिश कर रहे हैं।
  2. इसलिए। क्यों नहीं? ;-)

उदाहरण: आपको अपना डेटा कैश करना होगा। कैसे? कैशिंग के लिए कई अलग-अलग इंजन हैं, जो सबसे अच्छा है? कौन परवाह करता है अगर आपके पास अमूर्त परत है जिसमें कुछ ICacheDriver इंटरफ़ेस है जिसमें कुंजी, गेट, पुट, क्लियर आदि जैसे तरीकों का एक सेट है, बस इसे लागू करें जो आपको वर्तमान प्रोजेक्ट में चाहिए और जब आपको दूसरे की आवश्यकता हो तो इसे बदल दें। या स्टर्लिंग का सरल उपयोग। आपके पास विभिन्न प्रदर्शन योग्य वस्तुओं का एक सेट है। आप बस स्ट्रिंग इंटरफ़ेस को लागू करते हैं (जो कि स्ट्रींग विधि का वर्णन करता है [PHP में वास्तव में ऐसा कोई इंटरफेस नहीं है, लेकिन उदाहरण के लिए)) और बस (स्ट्रिंग) $ obj के साथ अपनी सभी वस्तु पर अंतर करना। स्विच (सच्चा) {केस $ obj isntanceof A1: "do 1" के बजाय आपको बस इतना करना है; टूटना; ...}

सरल। तो कोई सवाल नहीं है "क्यों?"। वहाँ है "कैसे है कि बेहतर उपयोग करने के लिए?"। ;-) सौभाग्य।


-5

मेरा अनुमान।

PHP का उपयोग कई एंट्री लेवल प्रोग्रामर्स द्वारा किया जाता है , कॉलेज में एंट्री लेवल प्रोग्रामर्स को जावा सिखाया जाता है

अपने प्रोग्रामिंग 101 कोर्स के बाद वे Zend को घूरना शुरू कर देते हैं, वे जावा सुविधाएँ चाहते हैं क्योंकि यही तरीका उन्हें सोचने के लिए सिखाया गया है, अपनी शर्तों पर एक सोच (या बतख टाइपिंग को समझना) यह कठिन है, जब आप केवल 20 हैं।

Zend व्यावहारिक है, यह सुविधा के अलावा अन्य को जोड़ना आसान है , जहां वे सही तरीके से दिखाते हैं।
यह भी उन्हें छोड़ने के बजाय अधिक उपयोगकर्ताओं में खरीदता है , इसलिए यह अच्छा होना चाहिए।

इस प्रक्रिया का एक और उदाहरण? .NET और जावा पाठ्यक्रम से बाहर के लोग भी फाउंडेशन क्लासेस के फ्रेमवर्क चाहते हैं , वे इसके बारे में तब तक नग करते हैं जब तक ज़ेंड ज़ेड फ्रेमवर्क से बाहर नहीं निकलता । यह और भी अधिक उपयोगकर्ताओं में खरीदता है। और पर और पर...

(केवल वही भाषा सुविधा जो PHP टीम को ज्ञात है कि वर्षों से, के खिलाफ संघर्ष किया गया है goto)


मेरी दृष्टि में, PHP12शायद दुनिया की सभी वाक्यविन्यास विशेषताएं होंगी (मुझे आशा है कि यह एक अमूर्त परत रनटाइम प्राप्त नहीं करता है, कठिन, जैसा कि पर्ल को मार डाला गया है) कार्यात्मक और डेटाटाइप प्रतिमानों के लिए एक पलक के साथ, और अभी भी नहीं goto
ZJR

"यह कठिन है, जब आप केवल 20 वर्ष के हैं" उन अवधारणाओं में से किसी को समझने के साथ उम्र का संभवतः कुछ भी हो सकता है?
इविक्टोस

@ इवीकाटोस हाई स्कूलर्स कार्यक्रम को क्रमबद्ध करते हैं, लेकिन उनके पास आमतौर पर खराब शिक्षक, खराब नामकरण परंपराएं होती हैं, और अकल्पनीय बूँदें पैदा होती हैं। वे कॉलेज शुरू करते समय सही प्रोग्राम करना सीखते हैं , इसे पूरा होने में कुछ साल लगते हैं। फिर वे कठिन-टाइप किए गए, उद्योग-धन्य, अकस्मात-प्रशंसित, उन भाषाओं से विचलित होने लगते हैं जो उन पहले वर्षों में सिखाई गई हैं, और अधिक व्यावहारिक, डक-टाइप किए गए हैं। मेरा मानना ​​है कि यह एक बुशिडो है जिसे कई प्रोग्रामर साझा करते हैं। तो फिर, यह आपके अनुभव को प्रतिबिंबित नहीं कर सकता है, आप एक स्व-सिखाया जा सकता है। यदि हां, तो हमें रास्ता दिखाएं।
ZJR
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.