CodeGym /Java Blogu /Rastgele /Takılmak? Java Öğrenmenin En Zor Kısımları ve Bunların Üs...
John Squirrels
Seviye
San Francisco

Takılmak? Java Öğrenmenin En Zor Kısımları ve Bunların Üstesinden Gelme Yolları

grupta yayınlandı
Bildiğiniz gibi, kodlamaya yeni başlayanların Java ile programlama dillerini öğrenmeye başlamalarını öneriyoruz ve CodeGym, Java öğrenme sürecini en hazırlıksız öğrenciler için bile sindirilebilir hale getirmek için her şeye sahiptir. Ancak oyunlaştırma öğeleri, kolay giden hikaye ve komik karakterler bu süreci kolaylaştırmaya yardımcı olsa da, Java'nın temellerini tam anlamıyla öğrenmek, yeni öğrenenlerin çoğu için nadiren zorluk çekmeden geçer. Takılmak?  Java Öğrenmenin En Zor Kısımları ve Bunların Üstesinden Gelme Yolları - 1Bugün, Java programlama temellerindeki en zor alanlardan bazılarına göz atacağız, birçok insanın neden bunları zor bulduğunu ve bu konuda sizin için yapabileceğiniz bir şey olup olmadığını anlamaya çalışacağız.

1. Jenerikler

Java'daki jenerikler, parametresi olan türlerdir. Genel bir tür oluştururken, yalnızca bir türü değil, çalışacağı veri türünü de belirtirsiniz. Jeneriklerden Java öğrenenler tarafından Java'nın anlaşılması en zor kısımlarından biri olarak bahsedilir. “Asıl sorunum hala Jeneriklerle uğraşmak. İzlenecek parametrelere sahip yöntemleriniz olduğunda çok daha kolay, ancak kendi yönteminizi yazmanız gerektiğinde kafa karıştırıcı hale geliyor," dedi anonim bir Java öğrencisi.

İpuçları ve öneriler

Deneyimli bir programcı ve üniversite profesörü olan Ravi Reddy'den Java'daki Generics hakkında bir görüş : "Java Generics, C++ şablonlarının yapmadığı bir şeyi yapıyor: tür güvenliği sağlıyor. C++ şablonlarının uygulanması basit bir ön işlemci hilesidir ve tip güvenliğini garanti etmez. Java'daki jenerikler, C++ şablonları gibidir, ancak ek tip güvenliği vardır. Ve IMHO, tür güvenliği, herhangi bir iyi geliştirme ortamının temel bir özelliğidir. Ve evet! Parametreler ve türler arasındaki zihinsel geçişlerimiz nedeniyle kafa karıştırıcı olabilirler. Ama onlara hakim olmak için zaman ayırmanın çabaya değer olduğuna inanıyorum. Çünkü arabirimleri ve Jenerikleri anladığımda kendimi Java'da çok daha iyi "düşünürken" buldum."

2. Çoklu kullanım

Java'da çoklu okuma, uygulama tarafından maksimum CPU kullanımını sağlamak için iki veya daha fazla iş parçacığını aynı anda yürütme işlemidir. Multithreading çok önemli görevleri çözer ve programlarımızı daha hızlı hale getirebilir. Genellikle birçok kez daha hızlı. Ancak, Java'yı yeni öğrenen birçok kişinin takılıp kaldığı konulardan biri olarak kabul edilir. Bunun nedeni, multithreading'in sorunları çözmek yerine sorunlara da yol açabilmesidir. Çoklu iş parçacığının yaratabileceği iki özel sorun vardır: kilitlenme ve yarış koşulları. Kilitlenme, birden çok iş parçacığının birbiri tarafından tutulan kaynakları beklediği ve hiçbirinin çalışmaya devam edemediği bir durumdur. Yarış koşulu, sistemin veya uygulamanın çalışmasının kodun bölümlerinin yürütülme sırasına bağlı olduğu çok iş parçacıklı bir sistem veya uygulamadaki bir tasarım hatasıdır.

İpuçları ve öneriler

İşte iyi bir tavsiyeyazılım mimarı ve popüler bir Soru-Cevap web sitesi olan StackExchange'in aktif kullanıcısı olan S.Lott'tan çoklu iş parçacığı ile nasıl başa çıkılacağı konusunda: "Çoklu iş parçacığı basit. Bir uygulamayı çoklu iş parçacığı için kodlamak çok ama çok kolaydır. Basit bir numara var ve bu, diziler arasında veri iletmek için iyi tasarlanmış bir mesaj kuyruğu kullanmaktır (kendi sıranızı almayın). Zor kısım, birden çok iş parçacığının paylaşılan bir nesneyi bir şekilde sihirli bir şekilde güncellemesini sağlamaya çalışmaktır. İşte o zaman hataya açık hale gelir çünkü insanlar mevcut yarış koşullarına dikkat etmezler. Pek çok kişi mesaj sıralarını kullanmaz ve paylaşılan nesneleri güncellemeye ve kendileri için sorun yaratmaya çalışır. Zorlaşan şey, verileri birkaç sıra arasında geçirirken iyi çalışan bir algoritma tasarlamaktır. Bu zor.

3. Sınıf yolu sorunları

Sınıf yolu hataları, Java geliştiricilerinin günlük işlerinde karşılaştıkları en çok şikayet edilen sorunlardan biri olarak kabul edilir. "Sınıf yolu sorunları, hata ayıklamak için zaman alıcı olabilir ve olabilecek en kötü zamanlarda ve yerlerde ortaya çıkma eğilimindedir: sürümlerden önce ve genellikle geliştirme ekibinin erişiminin çok az olduğu veya hiç olmadığı ortamlarda. Deneyimli bir Java/Javascript geliştiricisi ve programlamayla ilgili öğreticiler yazarı olan Vasco Ferreira, IDE düzeyinde de gerçekleşebilir ve üretkenliğin azalmasına neden olabilir” diyor .

İpuçları ve öneriler

“Sınıf yolu sorunları ilk bakışta göründüğü kadar düşük seviyeli veya ulaşılmaz değildir. Her şey zip dosyalarının (kavanozların) belirli dizinlerde bulunması/bulunmaması, bu dizinlerin nasıl bulunacağı ve sınırlı erişime sahip ortamlarda sınıf yolunun nasıl hata ayıklanacağı ile ilgilidir. Sınıf Yükleyiciler, Sınıf Yükleyici Zinciri ve Önce Ebeveyn / Ebeveyn Son modları gibi sınırlı sayıda kavram bilinerek, bu sorunlar etkili bir şekilde çözülebilir," diye açıklıyor uzman.

4. Polimorfizm ve doğru kullanımı

OOP ilkeleri söz konusu olduğunda, birçok kişi polimorfizmi anlamakta zorlandıklarını söylüyor. Polimorfizm, bir programın, nesnenin belirli türü hakkında bilgi olmadan, aynı arayüze sahip nesneleri aynı şekilde ele alma yeteneğidir. Polimorfizm oldukça temel bir konu olmasına rağmen, oldukça kapsamlıdır ve Java'nın temelinin iyi bir bölümünü oluşturur. Birçok öğrenci için polimorfizm, Java öğrenmede ilk zorluktur. Bunun nedeni, farklı bağlamlarda kullanılan ve kafa karıştırıcı olabilecek farklı polimorfizm biçimleri olmasıdır.

İpuçları ve öneriler

Çok biçimlilik ile başa çıkmanın onu öğrenmekten başka bir yolu yoktur. Kopenhag Üniversitesi'nde programlama dersleri veren Torben Mogensen bunu şöyle açıklıyor :Bu kavram: “Basit aşırı yükleme: + hem tamsayı toplama, hem de kayan nokta toplama ve (bazı dillerde) dizi birleştirme anlamına gelebilir. Alt tip polimorfizmi: B, A'nın bir alt tipiyse (herhangi bir A tipinden miras alırsa), A tipi bir değer bekleyen bir bağlamda B tipinin herhangi bir değeri kullanılabilir. Parametrik polimorfizm: Bir tip, tip parametreleriyle parametreleştirilebilir; farklı bağlamlar farklı tür argümanları sağlayabilir, bu nedenle parametreleştirilmiş türü farklı somut türlere somutlaştırırsınız. Buna "şablonlar" veya "jenerikler" de denir ve genellikle açılı ayraçlar (TA<A> gibi) kullanılarak belirtilen OO dillerinde bulunur. Arayüz polimorfizmi. Bu temel olarak, alt tip polimorfizmini belirli bir arayüzü uygulayan alt tiplerle veya parametrik polimorfizmi belirli bir arayüzü uygulayan tip parametreleriyle sınırladığınız bir mekanizmadır.”

5. Yansıma

Yansıma, çalışırken bir program hakkındaki verileri keşfetme mekanizmasıdır. Yansıma, alanlar, yöntemler ve sınıf kurucuları hakkındaki bilgileri keşfetmenizi sağlar. Ayrıca, derleme zamanında mevcut olmayan ancak çalıştırma sırasında kullanılabilir hale gelen türlerle çalışmanıza da olanak tanır. Hata bilgisi vermek için yansıtma ve mantıksal olarak tutarlı bir model, doğru dinamik kodun oluşturulmasını mümkün kılar. Ancak birçok insan için Reflection'ı nasıl kullanacağını anlamak o kadar kolay değil.

İpuçları ve öneriler

“Yansıma ve Java durumunda, yansıtma, statik olarak yazılmak üzere tasarlanan Java'nın dinamik olarak yazılmasına izin verir. Dinamik yazma doğası gereği kötü değildir. Evet, programcının belirli OOP ilkelerini çiğnemesine izin verir, ancak aynı zamanda çalışma zamanı proxy'si ve bağımlılık enjeksiyonu gibi birçok güçlü özelliğe de izin verir. Evet, Java, yansımayı kullanarak kendi ayağınıza vurmanıza izin verir. Ancak, silahı çok açık bir şekilde ayağınıza doğrultmanız, emniyeti kaldırmanız ve tetiği çekmeniz gerekiyor," diye açıklıyor deneyimli bir Java programcısı ve uygulama mimarı olan Jayesh Lalwani.

6. Giriş/Çıkış akışları

Akışlar, herhangi bir veri kaynağıyla çalışmanıza izin verir: İnternet, bilgisayarınızın dosya sistemi veya başka bir şey. Akışlar evrensel bir araçtır. Bir programın herhangi bir yerden veri almasına (giriş akışları) ve herhangi bir yere göndermesine (çıkış akışları) izin verirler. Görevleri aynı: bir yerden veri alıp başka bir yere göndermek. İki tür akış vardır: giriş akışları (veri almak için kullanılır) ve çıkış akışları (veri göndermek için). Birçok kişinin akışları kullanmayı anlamasını zorlaştıran şey, Java'nın birden çok I/O akış sınıfına sahip olmasıdır.

İpuçları ve öneriler

"Java, temel olarak katkıda bulunan iki faktör nedeniyle çok fazla G/Ç akışı sınıfına sahiptir. Birincisi miras. Bazı sınıflar, tarihsel nedenlerle hala oradadır ve zararlı olarak görülmedikleri için kullanımdan kaldırılmazlar. İkincisi, esneklik. Farklı uygulamaların farklı gereksinimleri vardır ve bu nedenle gereksinimlerinize bağlı olarak birden fazla seçeneğiniz vardır. Yararlı soyutlamalar, okuduğunuzda netlik sağlar ve birkaç satır kodla çok şey yapabilirsiniz," diyor İsveç'ten bir Java uzmanı olan Jonas Mellin. Java'nın hangi yönlerini anlamakta en çok zorlandınız veya bir süredir takılıp kaldınız? Deneyimlerinizi yorumlarda paylaşın.
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION