Arkadaşlar forumda gezinirken bu terimi gördüm ve araştırdım ama anlayamadım wikipedia da yazılanları
bana bu konuda bir yazı linki atar mısınız? veya bu terimi anladığınız şekilde bana da anlatır mısınız?
Muhtemelen @aib 'in bir postunu gordun, benim gibi. Ben de gorunce arastirdim. Ve buldum:
https://duckduckgo.com/?q=cooperative+multitasking&t=h_&ia=web&atb=v238-1
…
@reo siz orda yazılanlardan ne çıkardınız?
Bir thread’in (task’in) kontrolun kendisinden baskasina gececegi zamanlari kendisi secmesi.
for e in elements: # Uzun is
e.hesapla()
kontrolu_birak()
Genellikle isletim sistemine veya kullanilan bir async kutuphanesine yapilan cagrilar bu kontrol birakmayi otomatik yapar.
golang ile ilgili bu konuda Parametric polymorphism terimini de kullanmıştınız bu ikisi arasındaki bağlantı ne?
hocam
Baglanti yok; biri iyi yaptigi, digeri (henuz? iyi?) yapamadigi bir sey.
Turlerin parametre oldugu (“generic”) fonksiyonlar mesela: T add<T>(T a, T b) { return a+b; }
Iki tanimi da kafadan yazdim, akademik/resmi tanimlari farkli olabilir.
std::vector gibi yani
farklı tiplerle yani farklı şekillerde kullanılabilirler
Aynen
Ad hoc polymorphism de “elle” yapmak: int add(int a, int b); string add(string a, string b);
veya def add(a, b): if a instanceof str: ...
function overloading ile yani
template mi deniyor
<type> şeklinde çalışabilenlere hocam?
Ikinci ornekte (python’da) overloading yok
C++'ta template.
Java’da/C#'ta generics.
Az once yanlis anlam cikardigimi fark ettim.
iyiki bu konuyu açmışım o zaman
Polimorfizm, bir class’in birden fazla sinifi miras almasina yaramiyor muydu? Ben java’da oyle hatirliyorum. Yazilanlardan bisey anlamadim ama, arastirip doneyim bir.
burayı tam anlayamadım hocam
kontrolu bırakmak ne demek tam anlayamadım sanırım
bir methodun veya bir fonksiyonun birden fazla kullanımı olmasıydı sanırım
yanlışım varsa düzeltin hocam @aib
hocam bu isinstance() olmayacak mı?
Pseudo kod yazılmış.
polymorphism bir type’ın başka bir type olarak davranabilmesiimiş
yani başka bir type olarak kullanılabilmesi imiş
Yani bir kaynak, mesela dosya, bağlantı, yazıcı, kritik değişkenler vs, üzerinde çalışan thread’ler varken başka threadler bu kaynağı bekliyor olabilir. Thread’lerin uzun süre beklememesi için (açlık çekmemesi için) veya başka bir zorunlu sebepten dolayı bazen kaynaklar bırakılır, kontroller diğerlerine devredilir. Normalde thread’lere dışarıdan müdahale etmek doğru değildir, o yüzden kontrolü kendisi devredebileceği mekanizmalar kullanılır.
Tam olarak böyle değil.
Mesela
Bir magic function olan __add__
, polimorfiktir.
a = 1
print(a.__add__(2))
b = "hello"
print(b.__add__("hello"))
c = [1]
print(c.__add__(["hello"]))
Yani farklı tipteki nesnelere göre farklı işlemlerin yapılmasını sağlayan nesneler polimorfik özelliktedir.