Aklımda Java'yı ikinci dilim olarak öğrendiğimi ayarladım (Perl geliştiricisiyim). Ancak, çevrimiçi öğreticilerin bir kısmını okurken, ikisi arasında gerçekten benzerlik bulamıyorum. Java öğrenirken neyi kolay anlayacağım?
Aklımda Java'yı ikinci dilim olarak öğrendiğimi ayarladım (Perl geliştiricisiyim). Ancak, çevrimiçi öğreticilerin bir kısmını okurken, ikisi arasında gerçekten benzerlik bulamıyorum. Java öğrenirken neyi kolay anlayacağım?
Yanıtlar:
Perl, üst düzey, genel amaçlı, çok paradigmalı, yorumlanmış, dinamik bir programlama dilidir. Java, üst düzey, genel amaçlı, çoğunlukla tek paradigmalı, statik olarak yazılmış bir programlama dilidir.
Yani, her ikisi de üst düzey :
Üst düzey bir programlama dili, bilgisayarın ayrıntılarından güçlü soyutlamaya sahip bir programlama dilidir.
ve genel amaçlı :
Bilgisayar yazılımında genel amaçlı bir programlama dili (GPL), çok çeşitli uygulama alanlarında yazılım yazmak için kullanılmak üzere tasarlanmış bir programlama dilidir.
Esasında bu Perl ile yapabileceğiniz her şeyin Java ile yapabileceğiniz anlamına gelir. Ve @KyleHodgson'un belirttiği gibi , her iki sözdizimi de C ve C ++ 'dan türetilir ve for
döngüler ve if
ifadeler gibi basit şeyler için sözdizimi esasen aynıdır - ve @DipanMehta notlarında her ikisi de çöp toplanır . Ve elbette her ikisi de son derece popüler ve canlı topluluklara sahip.
Ama benzerlikler burada durmaktadır. Perl çok çeşitli paradigmadır ve çok çeşitli programlama paradigmalarını destekler:
Perl tek bir paradigmayı teşvik etmez, esasen eşittir ve bina ne olursa olsun en uygun olanı hangisi seçerseniz seçin, elbette sizi tek bir paradigma ile sınırlandırmadan, karıştırabilir ve eşleştirebilirsiniz. Öte yandan, Java çoğunlukla sınıfa dayalı bir nesnedir. Genel programlama desteği vardır, ancak yeni başlayan biri olarak Java'yı kesinlikle sınıf tabanlı nesne yönelimli bir dil olarak düşünmelisiniz.
Yani Perl kodunuzu yapısı için birden fazla yol verir 1 , Java oysa sadece bir. Bu kötü bir şey (ya da iyi bir şey) değil, sadece farklı. Nesneye yönelik bir Perl kodu yazmadıysanız, Java ilk başta biraz yabancı görünebilir. Cesaretiniz kırılmasın, nesne yönelimi, yazılım geliştirmede kariyer yapmayı düşünüyorsanız, sonunda öğrenmeniz gereken bir şeydir ve Java'yı öğrenmek, nesne yöneliminin temel kavramlarını öğrenmenin iyi bir yoludur - mükemmel bir yol değil, ama kesinlikle iyi bir yol.
Bildiğiniz gibi, Perl yorumlanırken, Java ... tamamen ... tamamen farklı bir canavardır . Java'da kodunuzu Perl'de yaptığınız gibi yazarsınız ve sonra derlersiniz . Sonuç yürütülebilir bir dosya değil, Java bayt kodu . Bu intermediatery formatında (nihayet!) Yürütüldüğünde Java Virtual Machine olduğunu biraz Perl yorumlayıcısı benzer. Bir Java programının çalışması için, bir Perl betiğini yürütmek için bir Perl yorumlayıcısını nasıl kurmanız gerektiği konusunda önceden bir JVM kurulmalıdır 2 .
Bir Perl arka planından geliyorsa, hatırlanması gereken en önemli şey bytecode adımına derleme: Bir Java kaynak dosyasında her değişiklik yaptığınızda, onu yeniden derlemeniz gerekir. İlk başta çılgınca gelebilir, ancak derlemenin çok güzel bir sonucu vardır: Kodunuz bu aşamada çeşitli hatalar için kontrol edilir ve derleyici varsa işlemi bitirmeyi reddeder ve bazen hataları saptamanıza yardımcı olur. yararlı mesajlar (Her zaman mesaj vardır, ancak sadece bazen yardımcı olurlar).
Bu da bizi son büyük farka getiriyor:
Perl dinamik 3 :
Dinamik programlama dili, bilgisayar bilimlerinde, çalışma zamanında diğer dillerin derleme sırasında gerçekleştirebileceği birçok yaygın davranışı yürüten bir üst düzey programlama dili sınıfını tanımlamak için yaygın olarak kullanılan bir terimdir. Bu davranışlar, programın yürütülmesi sırasında yeni kod ekleyerek, nesneleri ve tanımları genişleterek veya tür sistemini değiştirerek programın genişletilmesini içerebilir.
ve dinamik olarak yazılmıştır 4 :
Bir programlama dilinin, tip kontrolünün büyük çoğunluğunun derleme zamanında aksine çalışma zamanında gerçekleştirildiği zaman dinamik olarak yazıldığı söylenir.
ve Java statik olarak yazılmıştır :
Bir programlama dilinin çalışma zamanı yerine derleme zamanı sırasında tip denetimi yapıldığında statik yazmayı kullandığı söylenir.
Bu, mümkün olduğunca basit bir şekilde ifade etmek gerekirse, Java'da değişkenlerinizi ve yöntemlerinizi kullanmadan önce bildirmeniz gerektiği anlamına gelir. Başka farklılıklar da var, ama onları kendiniz keşfetmenin eğlencesini bozmak istemem :)
Ve son olarak, çok önemli bir fark var: Java, akademik ortamın 5 ve kurumsal dünyanın tatlı dilidir , ancak Perl ile artık akademik bir ortamda nadiren karşılaşacaksınız (onunla ilk tanıştığım yer) ve kariyer perspektifleri küçülüyor (yine de birkaç iş, ancak Java, .Net dilleri veya PHP kadar yakın bir yerde). Sebepleri hakkında yorum yapmayacağım, sadece (üzücü) gerçekleri belirtiyorum. Hala çok genç olduğunuz için, Java öğrenerek bir Bilgisayar Bilimi derecesi için biraz daha hazırlıklı olacaksınız, eğer bu yolu takip etmeyi seçtiyseniz.
Elbette Perl'den vazgeçmeyin, Java'yı keşfedin. Benzerlerinden daha farklı olmaları, oldukça farklı yaklaşımları ve programlama zihniyetlerini öğreneceğiniz anlamına gelir, bu zor bir yol ama sonuçta sizi daha iyi bir programcı yapacak olan bir yoldur.
2 Perl topluluğu, Parrot aracılığıyla bir Perl sanal makinesinin olasılığını aktif olarak araştırıyor .
3 Dinamik her zaman dinamik olarak yazılan anlamına gelmez.
4 Perl dinamik olarak kullanıcı tanımlı türler için yazılmıştır, dizileri, karmaları, skalerleri ve alt rutinleri ayırt etmek için statik olarak yazılmıştır ve güçlü bir şekilde yazılmıştır use strict
, bu yüzden aslında değişken bir sistem sistemidir, ancak bir akıl sağlığını korumak için dinamik olarak diyelim yazdınız.
5 Joel Spolsky'nin JavaSchools Perils'e yazdığı gibi, kötüye kullanım noktasına .
Her ikisi de C benzeri bir sözdizimi kullanır - noktalı virgül, kıvırcık parantez ve benzeri. Şahsen, birkaç yıl önce Perl'den Java'ya geçmeye çalıştığımda - beni harekete geçiren en büyük şey nesne yönelimli programlama oldu. Perl'de bazı nesneler geliştirmiştim, ama İsimler Krallığı'nda yaşamı hayal etmeye çalışmak başımı incitti.
Şu anda seçili olandan beri alternatif bir cevabı saplamak, ikisi arasındaki farklara odaklanıyor gibi görünüyor (gerçekten Perl ve Java arasında çok fazla benzerlik yok).
Perl kodunuz çok titiz ve dik ise (iyi test edilmiş, iyi belgelenmiş, Moose veya katı nesne yönelimi kullanır), bu kavramlar Java'ya çok iyi taşınacaktır, çünkü Java son derece diktir ve etkileyici değildir.