Herhangi bir bilgisayar bilimi öğrencisi için, özyineleme ve tasarım kalıpları konuları çok önemlidir. Özyinelemeli programlama normalde zor kabul edilirken, belirli bir soruna tasarım örüntüleri kavramlarını uygulamak da o kadar basit değildir. Bu makalede, bu iki konuyu incelerken benimsediğim yaklaşımı sunacağım, böylece daha sonra kendi yinelemeli programımı geliştirebilir ve bir problem için tasarım kalıpları kavramlarını uygulayabilirim.
Özyineleme, bir fonksiyonun kendisini çağırdığı bir bilgisayar programlama tekniğidir. Özyinelemeli işlevde, programcının bir çıkış koşulu sağlamak için dikkatli olması gerekir, aksi takdirde sonsuz bir döngüye girecektir. Özyineleme yığını kullanır ve normalde kontrol akışını takip etmek zordur.
Üniversite günlerinde, özyineleme kullanılarak yazılan kodu anlamakta zorluk çektim ve bir sorunu özyineleme uygulayarak çözmem neredeyse imkansızdı. Sorunla karşılaştım çünkü kontrol akışını takip etmeye çalıştım.
Örnek: Bir programcının normalde karşılaştığı ilk özyinelemeli program, n'inci fibonacci sayısını bulmaktır. İşlev fib (int n) ise, yinelemeli kısım fib (n - 1) + fib (n - 2) içerir. Kontrol akışını takip ederek yinelemeli çağrıyı anlamaya çalışırsam, kaybolabilirim.
Yaklaşımım : Özyinelemeli bir işlevde kontrol akışının nasıl gerçekleştiğine vurgu yapmıyorum. Daha ziyade sadece çıkış koşulunu düşünüyorum ve özyinelemeli çağrı söz konusu olduğunda, sadece kendi rolünü yapacağını ve bana sonucu vereceğini varsayıyorum.
Yukarıdaki fibonacci serisi örneğinde, önce çıkış koşulunu yazıyorum - if (n <= 1), n döndürür; ve fib (n -1) + fib (n-2) söz konusu olduğunda, fib (n -1) 'in (n-1) th fibonacci sayısını vereceğini ve fib (n-2)' nin (n- 2) th fibonacci numarası. Bu yaklaşımı kullanarak, yığının kullanılma şeklini tamamen göz ardı etmiyorum. Özyinelemeli çağrıyı yaptıktan sonra bazı ifadeler yazmam gerekirse, yığının nasıl kullanıldığını anlamak da önemlidir. Ancak kontrol akışı içinde kaybolmamalı, yoksa özyineli bir fonksiyon yazmak zor olacaktır.
Tasarım kalıpları, yazılım tasarımında yaygın olarak ortaya çıkan sorunlara tipik çözümlerdir.
Kişi biraz deneyim kazanana kadar tasarım modellerini takdir etmeyebilir. Bir üniversite öğrencisinin ortak eğilimi işi halletmektir, ancak kişi deneyim kazandıkça, yazılımın kalitesi ve sürdürülebilirliği önemli hale gelir. Daha sonra tasarım modellerinin önemi anlaşılır.
Çevrimiçi olarak bazı videoları inceleyerek tasarım kalıplarını incelemeye başladığımda, öğreticiyi takip edebildiğimi düşündüm. Öğreticinin herhangi bir noktasında, kodun ne yaptığını anlamanın karmaşıklığı, yinelemeli bir program kadar karmaşık değildi. Kişi tüm tasarım örüntüsü öğreticisini gözden geçirebilir ve ne yaptığını anlayabilir, ancak uygulama söz konusu olduğunda zorluklarla karşılaşılabilir.
Yaklaşımım : Bir tasarım modeli eğitiminden geçerken, sınıfların tasarlanma şeklinin arkasındaki motivasyonu anlamaya çalışıyorum. Yazarın neden belirli bir yaklaşım düşündüğünün cevabını bulmaya çalışıyorum. Ayrıca vurgu yapmadığım yinelemeli programın aksine kontrol akışını da derinden takip ediyorum.
Yukarıdaki yaklaşımı takiben, problemin tasarım modeli aracılığıyla nasıl çözüldüğünü anlamıyorum, aynı zamanda benzer problemlerle karşılaşıldığında kavramları etkili bir şekilde uygulayacak bir konuma geliyorum.
Bilgisayar programlama alanındaki görüşmelerin çoğunda, her zaman yineleme ve tasarım modelleriyle ilgili sorular vardır. Aksi halde, günlük işlerde de bu kavramlar yoğun bir şekilde kullanılmaktadır. Özyinelemeyi nasıl çalıştığımla tasarım kalıpları arasında bir fark var. Yineleme için, kontrol akışına daha az vurgu yaparken, tasarım modellerinde motivasyona ve kontrol akışına çok fazla ağırlık veriyorum. En azından benim için, bu stratejiyi sürdürmek yardımcı oldu ve şimdi bağımsız olarak özyinelemeli fonksiyonlar yazabiliyorum ve tasarımda da daha iyi hale geliyorum.
Yapay Zeka (AI), endüstrilerde devrim yaratma, yaşama ve çalışma şeklimizi değiştirme ve topluma sayısız fayda sağlama potansiyeline sahip, hızla gelişen bir teknolojidir. Ancak, her yeni teknolojide olduğu gibi, dikkate alınması gereken etik hususlar da vardır.
Yapay Zekaya Giriş Yapay Zeka (AI), endüstrilerde devrim yaratma, yaşama ve çalışma şeklimizi değiştirme ve topluma sayısız fayda sağlama potansiyeline sahip, hızla gelişen bir teknolojidir. Ancak, her yeni teknolojide olduğu gibi, dikkate alınması gereken etik hususlar da vardır.
Kasım 2020'nin başlarında SalesForce, açıklanamayacak şekilde JARM adlı yeni bir aktif TLS parmak izi alma aracını duyurdu. JARM'ın temeli, bir hedef sunucu özel olarak hazırlanmış çeşitli farklı TCP "İstemci merhaba" paketleri kullanılarak tarandığında, elde edilen yanıtların birleştirilip, paylaşılan veya benzer bir uygulama veya sunucunun göstergesi olan bir parmak izi sağlamak için karma hale getirilebilmesidir. yığını.
Harika geliştiriciler yapan teknik olmayan şeyler Bir süredir bu makaleyi yazmayı erteliyorum - yazmak için hiç nitelikli hissetmedim. Bugün onu yazma zamanının geldiğini düşündüm.
Teknoloji endüstrisindeki bir pozisyon için mülakat yaparken, herhangi bir teklif değerlendirilmeden önce genellikle en az üç tur mülakattan geçeceksiniz. Mermiler genellikle şuna benzer: Eğer öyle düşünüyorsan, yanılıyorsun.
Pragmatik Programcı ilk olarak 1999'da yayınlandı ve o zamandan beri tüm zamanların en iyi programlama kitabı seçildi. Yazarlar Andy Hunt ve David Thomas, Agile Manifesto'nun orijinal yazarları arasındaydı ve bazı ciddi referanslara sahipler.