CodeGym /Java Blogu /Rastgele /Bir programlama dili seçmek
John Squirrels
Seviye
San Francisco

Bir programlama dili seçmek

grupta yayınlandı
Programlamayla ilk kez okulda, bilgisayar bilimi ile ilgili derslerde karşılaştım. Bunlar, n'li sayı sistemlerinin nasıl çalıştığına dair bazı sıkıcı açıklamalardan oluşuyordu. Ve elbette, kendi web sitenizi yazmanızı gerektiren bir test vardı. O zamanlar bana bundan daha sıkıcı bir meslek olamaz gibi geliyordu. Ne kadar yanılmışım! Ne yazık ki, bir lise bilgisayar bilimi programı BT çalışmasının tam bir resmini sağlamaz ve bir programlama dilinin nasıl seçileceğini açıklamaz. Yeni başlayan biri "Hangi programlama dilini öğrenmeliyim?" sorusunu sormadan önce, hangi dillerin mevcut olduğunu ve birbirlerinden nasıl farklı olduklarını öğrenmelidir. Bir programlama dili seçme - 1

Giriş eşiği: Yüksek, düşük, orta

Programcılar genellikle "giriş eşiğinden" bahsederler - herhangi bir "genç geliştiricinin" bir programlama dilinde ilk ciddi programını yazıp bir iş bulması için yeterince iyi ustalaşması için gereken çaba miktarını yansıtan bir kavram. "Giriş eşiği" şu bilgiden oluşur:
  • dilin sözdizimi özellikleri ve nüansları
  • kütüphaneler
  • algoritmalar ve veri yapıları.
Excel'de çalışmak bir tür programlama bile denebilir. Bu arada, bu tanıdık ofis programı göründüğü kadar basit değil. Bir kullanıcı için giriş eşiği, tablo oluşturma yeteneği olabilir. Bir diğeri için, karmaşık formüller ve makrolar hakkında bilgi olabilir. Her iki durumda da, bu eşik küçüktür. Ardından, 1C programlama gibi yarı diller gelir . Sonra öğrenmesi en basit diller var, örneğin PHP . Ayrıca, Java ve JS gibi bellek yönetimi yapmanızı gerektirmeyen yerel sözdizimine sahip (genellikle İngilizce'den türetilmiştir) dillerimiz mevcuttur . Ayrıca, hafızanın, veri yapılarının ve algoritmaların son derece dikkatli bir şekilde ele alınmasını gerektiren diller vardır, örneğin C veC++ . Genç çoklu paradigma dilleri, örneğin Scala , belki de en yüksek giriş eşiğine sahiptir, çünkü bu dillerde ustalaşmak pek çok programlama paradigmasına derinlemesine dalmanızı gerektirir. Ancak bir dil seçmeden önce ne yapmak istediğinize karar vermelisiniz: web, kurumsal, masaüstü veya mobil cihazlar için geliştirme.

Web mi yoksa web değil mi?

Web programcıları, Ön Uç ve Arka Uç geliştiricileri olarak ayrılabilir . Bu terimlerin ne anlama geldiğini anlamalısınız. Frontend geliştiriciler client tarafında yani kullanıcının ne gördüğüyle ilgilenirler. "Arka uç", bir hizmetin bir sunucuda çalışan kısmı olan verileri işlemek ve depolamakla ilgilidir. Hangi programlama dilini öğreneceğine karar veren bir Frontend geliştiricisi için JavaScript ve JavaScript çerçeveleri (Angular JS, React ve diğerleri) esastır. CoffeeScript ve TypeScript gibi JS lehçeleri, ebeveynleri kadar popüler değildir, ancak yararlı da olabilirler. Bir de Flash AS var ve eskiden JScript ve VBScript vardı ama bunu sadece dinozorlar hatırlar =) Tüm bunların yanı sıra HTML'yi de anlamanız gerekiyorve CSS . Bir programlama dili seçme - 2Yeni başlayanların çoğu, JavaScript ve Java'nın neredeyse aynı şey olduğunu düşünür. Bu dilleri karıştırmayın. JS daha önce "LiveScript" olarak adlandırılıyordu ve şu anki adını yalnızca "Java" kelimesinin popülaritesi nedeniyle aldı. Bir web arka uç geliştiricisi için PHP, Python, Ruby, Perl ve Java uygundur. Burada PHP'ye odaklanmak istiyorum (diğer dillere daha sonra değineceğiz). PHP , düşük bir giriş eşiğine sahip, öğrenmesi en kolay dillerden biridir. Tanınmış web geliştiricileri arasında yapılan bir ankete göre, Ruby yavaş ama emin adımlarla popülerlik kazanıyor - özlülüğü ve güzelliği nedeniyle seviliyor.

Web değil (kurumsal, masaüstü, mobil)

Aşağıdaki programlama dillerini garip bir adla bu kategoride kasıtlı olarak birleştirdim. Çoğunu kurumsal, masaüstü ve hatta mobil uygulamalar yazmak için kullanabilirsiniz. Python, anlaşılması kolay, nesne yönelimli bir programlama dilidir ve makine öğreniminin (ML) büyümesi nedeniyle son zamanlarda inanılmaz derecede popüler hale geldi: Makine öğrenimi geliştiricileri, Python'u kapsamlı bir şekilde kullanıyor. makine öğrenimiBT'de oldukça yeni bir alandır ve bunun meyvesini verdiğini görmemize rağmen, bir programlama dili seçerken bu sektöre girmem. İlk olarak, MÜKEMMEL bir matematik anlayışına ihtiyacınız olacak. İkincisi, popülerlik dalgası "blok zinciri" veya "nanoteknoloji" için olduğu gibi geçebilir. Bununla birlikte, Python'un web geliştirmede kullanıldığını hatırlayabilirsiniz. C++: her şeyin "artı-artı" işleci üzerine kurulu olduğu klasik bir dil. Bu dil, tüm popüler nesne yönelimli programlama dillerinin atasıdır ve yeni başlayan biri kesinlikle buna dikkat etmelidir. Birçok popüler uygulama kullanılarak yazılmıştır. Ancak mükemmel "kendini ayağından vurma" şansı ve anlaşılması zor sözdizimi, yeni başlayan birinin bu programlama mastodonunda ustalaşma olasılığını sıfıra getirir. KotlinYenilikçiler için Java'ya benzeyen , OOP ve işlevsel programlamanın çılgın bir karışımıdır. Java'dan Kotlin'e geçiş yapan deneyimli bir geliştiricinin üretkenliğini ciddi şekilde artırabilmesi nedeniyle son zamanlarda popüler olmuştur. Deneyimli bir geliştirici, bu programlama dilinde hızla alışacaktır. Bu arada aynı şey Scala için de geçerli ama Kotlin Android dünyasında popüler. Java, yeni başlayanlar için öğrenmesi kolaydır. Özellikle CodeGym =) yardımıyla Java sözdizimi anlaşılır ve "kendi ayağınıza sıkma" riski olsa da kritik değildir.

OOP veya POP?

prosedürel yaklaşım

Prosedür odaklı yaklaşım, belirli bir dizi problemi etkili bir şekilde çözmek için birleşik bir bütün halinde birleştirilebilen sıralı ifadelerden oluşan bir program yazmayı içerir. Bu tür diller arasında C , PureBasic ve Pascal bulunur . Yani lise öğrencilerine ve lisans öğrencilerine umutsuzluk getiren diller. Nispeten genç GO da vardil. Bununla birlikte, prosedürel dillere aşina olmak, potansiyel bir geliştirici için çok faydalıdır. Prosedürel dillere dalmam Wolfram Mathematica sistemi ve üniversite araştırmasıyla geldi. Programın başından sonuna kadar doğrusal olarak ilerleyen uygun algoritmalar ve basit prosedürler, modern teorik fizikle ilgili değerleri hesaplamamı sağladı. Bu "sıralı" programlama dili, bazen manuel olarak hesaplamalar yapan kod yazmanın daha kolay olduğunu anlamanıza yardımcı olacak şeydir. Prosedür yönelimli programlamayı (POP) öğrenmek, bir işverenin bir iş adayında neredeyse her zaman görmek istediği iyi bir algoritmik eğitim sağlar. Kesinlikle BT'deki her şey prosedürel dillerin temeli üzerine inşa edilmiştir, bu yüzden onları hafife almayın. Bu arada, Hangi programlama dilini öğreneceğine karar veren yeni başlayanlar, genellikle yalnızca OOP dillerinin çoklu okumayı desteklediğini düşünür. Bu doğru değil. Prosedürel programlama dilleri de paralel hesaplamalara izin verir. Programlama dili seçme - 3

nesne yönelimli yaklaşım

Prosedürel dillerle başlayanlar genellikle matematik, algoritmalar ve veri yapıları konusunda bilgilidir (teknik üniversitelerin bu alanlara verdiği önem nedeniyle). Yine de, bugünün gerçeği, başarılı programcıların genellikle farklı bir programlama yaklaşımına hakim olan kişilerdir: nesne yönelimli paradigma. OOP ideolojisi, gerçekten küresel sistemler oluşturmanıza izin verir. Bu yaklaşımın bir özelliği, gerçek dünya ile benzerliğidir:
  • Farklı nesneler birbirleriyle etkileşime girer ve birbirlerinden bağımsız olarak var olurlar.
  • Nesnelerin bir hiyerarşisi vardır ve atalarının davranışlarını benimseyebilir veya değiştirebilirler.
  • Soyut kavramları kullanabilirsiniz, ancak yalnızca gerçekten var olan nesneler etkileşime girebilir.

Örnek

Prosedür odaklı diller, belirli sorunları çözmek için kullanılan araçlardır. Göreviniz biraz da olsa değişirse, muhtemelen tüm algoritmaları yeniden yazmak için zaman ve çaba harcamanız gerekecektir.

Hem yeni hem de kullanılmış araba ve kamyon satan bir araba bayiliğini tanımlayan bir program düşünün. Prosedürel bir dilde, her varlık için veri girişini veya çıkışını işleyen işlevleri tanımlamanız gerekir: yeni bir araba, yeni bir kamyon, kullanılmış bir araba ve kullanılmış bir kamyon. OOP ne sunuyor? Nesne yönelimli bir yaklaşımla, tüm araç türleri tarafından paylaşılan özellikleri depolayan bir Araç temel sınıfı tanımlamamız yeterlidir:

  • Yapmak
  • Motor hacmi
  • Beygir gücü
  • Yıl
  • Yeni veya kullanılmış
  • Fiyat

Ve bilgi alma ve gönderme yöntemleri. Ardından Araç sınıfının özelliklerini miras alan nesneler yaratıyoruz: Araba ve Kamyon. Giriş/çıkış yöntemlerinin yanı sıra özellikle bu araç türlerine ilişkin bilgiler içerirler.

Aniden, bayi yönetimi motosiklet de sunarak ürün yelpazesini genişletmeye karar verir. Prosedürel yaklaşım altında, yeni ve kullanılmış motosikletler için tüm mantığı yeniden oluşturmamız gerekirken, bir OOP dili, Araç üst sınıfının tüm özelliklerini devralan ve motosiklete özgü iyileştirmeler içeren yeni bir Motosiklet sınıfı oluşturmamıza izin verir.

Ve çeşitli araçları eklersek ne olur? Prosedürel bir uygulama, OOP'den daha fazla çalışma gerektirecektir. Dahası, diziliş ne kadar büyük olursa, nesneleri içeren o kadar az işlem gerekir.

OOP, verileri ve yöntemleri tek bir varlıkta birleştirmenize ve bunlarla birleşik bir nesne olarak çalışmanıza izin veren bir programlama stilidir. Varlıklar bir hiyerarşi içinde düzenlenebilir ve birbirlerinin dahili uygulama ayrıntılarına girmeden birbirleriyle etkileşime girebilir. OOP'nin benim için daha ilerici bir yaklaşım olmasının üç nedenini göstereceğim:
  1. OOP, bireysel modüllerin bağımsız olarak geliştirilmesini içerir ve bir programcının veya ekibin iletişim ve bilgi alışverişi yöntemini ve sınırlarını seçmesine izin verir.
  2. Küçük modüllere bölünmüş kodun okunması, yekpare prosedürlerden çok daha kolaydır. Sonuç olarak, dışarıdan biri kodunuzu hızlı bir şekilde anlayabilir ve aynı şekilde gerekirse yeni bir projeye katılabilirsiniz.
  3. Bir sınıf, diğerinin etkileşimini etkilemeden değiştirilebilir, ancak böyle bir değişiklik, alt nesnelerin hiyerarşisini etkileyebilir. Bu yaklaşımda ustalaştıktan sonra, bir programı genişletmek ve değiştirmek önemsiz hale gelir.
Bir yaklaşımın diğeriyle çelişmediğini, ancak OOP'nin hiyerarşide hala daha yüksekte olduğunu unutmayın. Öyleyse neden Java'yı öneriyorum? Aşağıdaki nedenleri vurgulayabilirim:
  1. Çapraz platform.

    Java sanal makinesi (JVM) sayesinde Java her yerde çalışır. Bu dilin ana avantajlarından biri, platformlar arası doğasıdır: hangi kitaplığın ekleneceğini veya belirli bir işlemcinin mimarisini düşünmeye gerek yoktur. "Bir kez yazın, her yerde çalıştırın."

  2. Belgeler.

    Muazzam bir dokümantasyon tabanı var: resmi Oracle dokümantasyonu, eğitim portalları ve sürekli gelişen bir topluluk. Geliştirme sırasında ortaya çıkan soruların çoğunun yanıtları birkaç dakika içinde bulunabilir. Ana şey, arama motoruna ne girileceğini anlamaktır =)

  3. Popülerlik.

    Java, dünyadaki en popüler programlama dilidir: yukarıda belirtilen Android ve web geliştiricilerine ek olarak, hemen hemen her kurumsal geliştirici Java'da yazar. Girişim, büyük şirketlerin ihtiyaçları için gerekli olan iç kurumsal gelişimi ifade eder.

    Nefret edenler her yıl "Java'nın ölümü" kehanetinde bulunurlar. " Kahin desteğini kesecek. Boşuna zaman harcıyorsun " diyorlar . Bu doğru değil! Her altı ayda bir Java'nın yeni sürümlerini yayınlama sözü veriyorlar.

    Benim için Java 8'deki lambda ifadeleri, yeni sürümler bir yana, devrim niteliğindeydi ve bir keşifti! Şu anda "eski" bir proje üzerinde çalışıyorum, bu yüzden en son yenilikleri araştırmıyorum, ancak Java'nın hayatta olduğu bir gerçek.

    Programlama dili seçme - 4
  4. Android.

    Android, son 4 yıldır sürekli olarak cep telefonu pazarının %80'inden fazlasını elinde tutuyor . TV'ler, medya oynatıcılar ve hatta araba bilgi-eğlence sistemleri bu işletim sisteminde çalışır. Ve bu işletim sistemi için uygulama geliştirme, çoğunlukla Java'da gerçekleşir. Açılan umutları hayal edin. Bir Android geliştiricisi olarak işe girdiğimde, geliştirmekte olduğum ürünün değerinin ne kadar olduğunu merak ettim. Anlaşıldığı üzere, fiyat yılda yaklaşık 5 dolardı. Bu, "o zaman bu ofis, maaşlar, yemek odası, masa tenisi masası, robotlar ve diğer ikramiyeler için para nereden geliyor? Cevap hacimde yatıyor: uygulamamızın 20 milyon kullanıcısı var.

  5. maaşlar.

    Ve şimdi pastanın üzerindeki krema: Bir Java geliştiricisinin maaşı sektördeki en yüksek maaşlar arasındadır. Ne de olsa, belirli bir amaç için programlama eğitimi almayı planlıyorsunuz: iyi bir iş bulmak için.

Programlama dilinin popülaritesi

Resmi bilgi kaynakları var, o yüzden onlara dönelim. TIOBE'ye göre Java, Ekim 2019 itibarıyla birinci sırada yer alıyor. PYPL sıralamasında Java, JS'nin çok önünde ve popüler Python'a rakip olarak ikinci sırada yer alıyor.

Çözüm

Yeni başlayan biri bir programlama dili seçmeyi düşünürken, dikkat etmesi gereken şey şudur:
  • Popülarite (Java sürekli olarak lider konumdadır)
  • Giriş eşiği (Java için orta düzeydedir: işverenler oldukça geniş bir beceri yelpazesi gerektirir)
  • Mevcut malzemeler (CodeGym'e hoş geldiniz =))
  • Uygulama alanları: Bir programlama dilinin kullanıldığı daha fazla alan, pazarda daha fazla uzmana ihtiyaç duyar. Java'nın platformlar arası geliştirmeyi nasıl desteklediğinden daha önce bahsetmiştim, ancak bunu tekrarlamaktan asla yorulmayacağım.
Elbette her yerde tuzaklar vardır, ancak adım atan kişi ileriye doğru hareket eder: hangi programlama dilini seçeceğinize yalnızca siz karar verebilirsiniz. Öğrenmede iyi şanslar!
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION