Dizileri, Dizeleri ve İşaretçileri Kullanma
Doktor programı (bkz. Platform Yazılım Geliştirme Seti'nde (SDK) \samples\rpc\doctor), dizi ve dize öznitelikleriyle ilgili tasarım dengelemelerini gösteren iyi bir uygulama örneğidir. Doktor programı, 1960'larda MIT'de yapay zeka araştırmacısı Joseph Weizenbaum tarafından geliştirilen, daha iyi bilinen bir programın küçük bir örnek sürümüdür. Program, doğal dil girişine yanıt vermek için basit desen eşleştirme kullanarak bir terapisti taklit eder.
Eliza programı aşağıdaki oturumu kaydetti.
Kullanıcı | Eliza |
---|---|
Erkekler birbirine benzer. | Ne şekilde? |
Bizi her zaman başka bir konuda rahatsız ediyorlar. | Belirli bir örnek düşünebiliyor musunuz? |
Erkek arkadaşım beni buraya getirdi. | Erkek arkadaşın seni buraya getirdi. |
Sürekli depresyonda olduğumu söylüyor. | Bunalımda olduğunu duyduğuma üzüldüm. |
Doğru, mutsuzum. | Sence buraya gelmen mutsuz olmana yardımcı olur mu? |
Yardıma ihtiyacım var. bu kadarı kesin gibi görünüyor. | Yardım alsan senin için anlamı ne olur? |
Belki annemle geçinmeyi öğrenebilirim. | Bana ailen hakkında daha fazla bilgi ver. |
Annem benimle ilgileniyor. | Ailende sana başka kim bakıyor? |
Babam. | Baban. |
Bazı yönlerden babam gibisin. | Ne gibi bir benzerlik görüyorsunuz? |
Doktor programı istemci tarafı ve sunucu tarafı uygulamalara ayrılabilir. İstemci tarafı hastadan giriş ister ve doktorun yanıtını görüntüler. Sunucu tarafı hasta girişini işler ve doktorun yanıtını oluşturur. Bu, istemci-sunucu uygulamasının klasik bir örneğidir: istemci kullanıcı etkileşiminden sorumluyken sunucu kapsamlı hesaplama yükünü işler. İşleve çok fazla veri geçirilmez ve geri döndürülmez, ancak veriler önemli miktarda işleme gerektirebileceğinden sunucu bunu işler.
Doktor programı giriş için bir karakter dizisi kullanır ve çıkış olarak başka bir karakter dizisi döndürür. Aşağıdaki tabloda, istemci ve sunucu arasında karakter dizilerini geçirmenin dört yolu ve her yaklaşımı uygulamak için gereken öznitelikler ve işlevler listelenmiştir.
Yaklaşım | Öznitelikler veya işlevler |
---|---|
Sayılan karakter dizileri | [ size_is], [ length_is], [ ref] |
Saplamayla yönetilen dizeler | [ dize], [ referans], sunucuda midl_user_allocate |
Saplamayla yönetilen dizeler | [ dize], [ benzersiz], istemci ve sunucuda midl_user_allocate işleviyle çalışır |
Dize döndüren işlev | [ benzersiz] |
Bu öznitelik birleşimleriyle ilişkili kısıtlamalar içinde, bir karakter dizisini istemciden sunucuya göndermenin ve sunucudan istemciye başka bir karakter dizisi döndürmenin alternatif yolları vardır.
Aşağıdaki konular, bu parametreleri yönetebilen çeşitli arabirimler arasındaki tasarım dengelemelerini gösterir.
- Sayılan Karakter Dizileri
- Dizeleri
- Birden Çok İşaretçi Düzeyi