Acemi programcılara yardım ederken uygun kelimeler


9

Kendimi acemi programcılara nispeten sık yardım ederken buluyorum; kodlarının sorulduğunda neden çalışmadığını açıklayarak, çözümler ve benzerlerini önerir. Yardım ettiğim insanlar, Java'da birinci sınıf derece düzeyindeki bir modülden programlama konusunda resmi bir eğitim almışlar, ancak onlarla çok iyi iletişim kuramadığımı hissediyorum.

Örneğin: bir işlev yazılabilir, ancak neden yürütülmediğini anlamayabilir, onu çağırmayı unuttuklarını fark etmez. Gibi ifadeler kullanır "(make a) call (to) the function/it"ve "pass it the.."boş görünüyor olsun.

Normal işlemim, kodlarında dilden bir işlev çağırdıkları bir yer bulmak ve onlara kendi işlevlerini bu diğer işlev olarak adlandırdıkları gibi arayabileceklerini söylemek olacaktır. Bazen bu bile boş görünüyor.

Acemi programcılara yardımcı olmak için daha uygun (daha iyi?) Kelime dağarcığı var mı? Yoksa bu bir iletişim meselesi değil mi?


5
Elektronik tablo kullanıcıları bir işlevi nasıl arayacaklarını bilirler. Birçok kişi kendi yazabilir. Burada temelde yanlış olan bir şey var.
JeffO

@JeffO Bir şeylerin yanlış olduğunu düşünüyordum, ama bu modüle ve bu insanlara şüphenin faydasını vermek istedim
Andy Hunt

7
Bir dakika ne? Birlikte çalıştığınız programcılar 'fonksiyon çağırmanın' ve argümanların geçmesinin ne anlama geldiğini bilmiyorlar mı? Bu, onlara resim çizmeden ve kedi ve köpekleri içeren metaforları kullanmadan gidebileceğiniz kadar basit. Bu bir iletişim sorununun ötesine geçer ve maalesef bilgi eksikliği olan bir sorun olabilir. Sorunuzu yeniden okudum ve temelde giriş düzeyinde bir kurs almış gibi görünüyor ve hepsi bu kadar mı?
wkl

3
@AndyBursh: Bu öğrenciler ikinci yıla nasıl ulaştı? Sınavları geçmeyeceklerini ve yazılım geliştirme dışında bir iş seçmeyeceklerini umuyoruz.
Doc Brown

3
Belki çorap kuklaları yardımcı olur
MattDavey

Yanıtlar:


15

Sonunda uygun terimleri öğrenmek zorunda kalacaklar, ne kadar çabuk o kadar iyi.

Bunları doğru şekilde kullanın ve boş bir bakış açtığınızda onları açıklayın. Doğru sinyalleri göndermeye çalışın, anlamadıkları herhangi bir şey hakkında soru sormanın uygun olduğunu unutmayın - tek aptalca sorular sormadığınız sorulardır.


2
Sizinki yüklendikten sonra neredeyse aynı yanıtı göndermek üzereydim. :) +1
Tom Squires

Açıklamaları seviyelerine düşürmeyin, seviyelerini yükseltin.
Bent

2

Genel olarak

Bir kişi sizi anlamadığında iki alternatifiniz vardır:

  1. Kelime dağarcığını kişinin bildiklerine veya bilmediklerine göre uyarlayın,

  2. Kişiye anlamadığı terimleri açıklayın.

İlk durum, kişi teknik kelimeleri zaten iyi bildiğinde, ancak yeterli değil veya alan adınızda bilmediğinde iyi çalışır.

Örneğin, C # veya Java'da terim yöntemini kullanabilirsiniz ve çoğunlukla başka bir dille çalışan kişi bu terimi anlamaz. Daha sonra C # veya Java'da yöntemin genellikle işlev olarak adlandırdığımız öğeye (örneğin C'de) atıfta bulunduğunu ve C # veya Java'da işlev diye bir şey olmadığını açıklayacaksınız . Örneğin PHP'de , hem yöntemler hem de işlevler vardır ve farklı bir anlama sahiptir . Fark kişi için çok acı verici ise, basitlik uğruna işlevler hakkında konuşacaksınız .

Kesin durumda, ilkini neredeyse seçemezsiniz: "işleve çağrı yapmak" daha basit bir şekilde yeniden biçimlendirilemez. Çağrı bir çağrıdır. Bunu daha fazla basitleştiremezsiniz.

Bu, ikinci yolu seçmeniz gerektiği anlamına gelir: her teknik terimi kişiye açıklayın.

  1. Kişiyi bir sözlük veya Wikipedia'ya yönlendirerek temel kavramlar ve terminoloji için çok iyi çalışır.

    Bunu sık kullanılan terimler için seçerdim . Örneğin, kişiyi polimorfizm veya kovaryans ve karşıtlık nedir anlamak için Wikipedia'yı okumaya davet ediyorum. Bu terimler çok iyi açıklanmış, bu yüzden burada tekerleği yeniden icat etmeye gerek yok.

  2. Veya kendi sözlerinizle açıklayın .

    Bunu , bağlama özgü ve / veya geniş tanım yelpazesini kabul eden terimler için seçerdim . Örneğin, Wikipedia, Microsoft'un bulut bilgi işlem vizyonunu anlamak için çok yararlı değildir ve kendime Windows Azure uygulaması üzerinde çalışacak birine bulutun ne olduğunu açıklamayı tercih ederim.

Sizin durumunuzda

Konuştuğunuz kişiler, programlamada kullanılan en temel kavram ve terimlerden yoksundur. Bu temel kelimeleri öğrenmeden devam edemezler , çünkü hiç iletişim kuramazlar : programlama veya bloglar hakkında kitap okuyamazlar, meslektaşlarını dinleyemezler ve hatta gerçekten soru soramazlar. Kimse ne istediklerini anlayamayacağından Exchange web sitelerini yığını.

Sizin durumunuzda, uygun kelimeleri aramak yerine, birkaç gün veya hafta geçirerek onlara bazı temel programlama kavramlarını ve yaygın olarak kullanılan terimleri öğretirim . Birkaç gün sonra, sürekli olarak "resim çizmek ve kedileri ve köpekleri içeren metaforları kullanmak" zorunda kalmadan onlarla konuşabileceksiniz .


1

Fonksiyonlar yerine alt rutinler ile başlayın . Onlara bir programın sadece bir talimat listesi olduğunu, bilgisayara bir şeylerin nasıl yapılacağını söyleyen bir tarif olduğunu söyleyin. Ve bir talimat birbiri ardına yürütülüyor (paralel olarak bazı adımlar atma olasılığı var, ancak daha sonra bunun hakkında daha fazla bilgi).

Bazı görevler oldukça yaygın ve tekrarlayıcıdır, bu yüzden onları tekrar tekrar yazmak zorunda kalmamız korkunç olurdu, bu yüzden onları sadece bir kez yazıyoruz ve bundan "daha küçük bir program" yapıyoruz - bir alt program , programın diğer bölümleri. Bir kereden fazla yürütebilmek için programımızda anlamlı bir isim veriyoruz. Ve daha sonra, bu "küçük programı" daha büyük bir programın parçası olarak yürütmek istediğimizde, bu adla çağırarak kullanabiliriz .

Arayan bir alt program gibi bir iblis çağırma tarafından, bu görevi gerçekleştirmek bilen isim o şeytanın. Bu yüzden programımızda bu özel görevi yapmak istediğimizde, "Argoth adlı şeytanı ara" yazıyoruz ve şeytan, bizim için talimat verdiğimiz gibi ortaya çıkıyor ve bizim için yapıyor ve sonra gidiyor ve devam edebiliyoruz. iş.

Bazen iblis, hangi görevleri yerine getireceğine veya ondan gerçekten ne istediğimize karar veremediği bazı ek bilgiler gerektirir. Örneğin, iblisin bir kale inşa etmesi gerekiyorsa, onu nerede inşa etmesi gerektiğini ya da ne kadar büyük olduğunu bilmesi gerekebilir . Bunlar iblise aktarılan argümanlardır ... Yani, şimdi gerçekleşen altyordam parametreli .

Parametreler , görevi yerine getirmek için eksik olan ancak gerekli olan bilgi parçalarıdır. Altyordamın neler yapabileceğini biraz değiştirirler. Onlar, tarif etmeden önce doldurmamız gereken boş yuvalar gibidirler.

Diğer yandan argümanlar , bu parametreler için sağladığımız gerçek bilgilerdir (değerler).

Paralel yürütmeye gelince, bunu şu şekilde düşünebiliriz: her zaman programı yürüten biri (veya bir şey ) vardır (talimatlar listesi). Ya başka bir insan ("bilgisayarın" bir zamanlar hesaplamayı yapan kişi için bir isim olduğunu biliyor muydunuz ?) Veya bir makine. Bir program sadece talimatların bir listesidir, kendi başına çalışmaz. Hesaplama sürecini yapacak birisi ya da bir şey olmalı(bu işlemleri listeden gerçekleştirin). Ve bazen bu eylemler paralel olarak yapılabilir - listenin kopyalarını birkaç kişiye dağıtabilir ve birbirlerini kesintiye uğratmadıkları sürece her birinin listeden farklı bir görev kümesi yapmasına izin verebiliriz veya ' başkasının çalışmasının sonuçlarını beklemek zorunda değilsiniz. Bu sizin için çoklu kullanım ;)

Fonksiyonlar ve altyordamlar arasındaki farka gelince ( prosedürler de denir ), olağan fark, prosedürler sadece eğlence için yürütülürken , yürütme sonucu döndürdüğü belirli bir değeri hesaplamak için bir fonksiyonun çağrılmasıdır ;) AKA "yan etkileri" için - sadece listeden yapılan işlemler uğruna.

Ancak, bir yordamı veya işlevi çağırmak ilk başta bazı sorunlara neden oluyorsa, bir zamanlar popüler olan başka bir terimi kullanabilirsiniz: atlama . Biri bir alt rutine atlayabilir , yani şu anda yaptığınız her şeyi yürütmeyi bırakabilirsiniz ve görevlerini yerine getirmek için listedeki başka bir yere (veya başka bir listeye) (alt programa) " atlayabilirsiniz ". Sonra, bitirdiğinizde, "geri atlar" - yani, kesintiye uğradığınız yere geri dönersiniz , böylece önceki görevinize devam edebilirsiniz. Arama ve atlama arasındaki fark, şimdi iblis olmanızdır .

Gelince yöntemlerle birileri tarafından burada belirtilen veya bazı diller "işlevler yok, sadece yöntemleri" gerçeği - yöntemler nedeniyle, oldukça doğru değil olan fonksiyonlar! - bunlardan özel bir tür : bir nesnenin içinde kapsüllenmiş bazı bilgileri almak veya bunlar üzerinde işlem yapmak için kullanılan işlevlerdir. Bunlar "bu veriler üzerinde çalışma yöntemi" dir. Ad, verinin nesnelerle çevrelendiği ve doğrudan "yöntem" adı verilen özel işlevlerle çalıştırılamadığı, nesne yönelimli paradigmadan geldi.

Bir yöntem başka bir şekilde özeldir: hangi belirli nesneyi çalıştırması / çağrılması gerektiğini ("bu" nesne) bilmelidir . Bu nedenle yöntemler genellikle çağrıldığı nesne ("bu" işaretçisi) hakkında bilgi depolayan ek bir gizli parametre ile süslenir. Bu, işlevin biraz çağrılma şeklini zorlaştırır, ancak bir programcının ne yaptığını bildiği sürece çok fazla rahatsız etmemesi gereken bir "uygulama detayı" dır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.