Bir Programlama Dilini Öğrenmenin Gerçekten En Kolay Yolu :)

Yeni bir programlama dilini öğrenmek için çok değişik yöntemler olabilir. Burada ben size en kestirme olanından bahsetmek istiyorum. Bu yöntemi kullanarak son bir kaç ay içinde dart, swift ve typescript dillerinde ve android, ios ve flutter ile çok rahat kod yazar hale geldim.

Yeni bir programlama dili öğrenmenin yolu bir yöntemden değil, bir araçtan geçiyor. Bu aracın ismi Github Copilot. Daha önce denemediyseniz, mutlaka bir göz atın, ne demek istediğimi anlayacaksınız.

Burada geniş çaplı bir Github Copilot tanıtımı yapmayacağım. Kullanmaya başladığınız andan itibaren ne kadar güçlü bir araç olduğunu göreceksiniz. Sizi sadece uyarmak istediğim bir konu var! Eğer herhangi bir programlama diline ve genel programlama konseptlerine hakim değilseniz, Github Copilotın sundukları sizin için Stackoverflow dan copy/paste edilen kod parçalarından farksız olacaktır. Buradaki önemli nokta yepyeni bir programlama dilini öğreniyor olsanız bile, Copilot tarafından sunulan çözümün ne anlama geldiğini kavrayabilmektir. Eğer bu varsa, yeni dili öğrenmeye başlıyorsunuz. Copilot tarafından sunulan kod parçasının teknik olarak ne anlama geldiğini göremiyorsanız, bu copy/paste den öteye gidemeyen bir çabaya dönüşecektir.

Şimdi gelelim esas mevzuya. Yeni bir programlama dilini nasıl öğrenebilirim? İlk etapta Hello World denemelerini terk etmek gerekiyor. Bir dili semantik yapısını oluşturan öğelerin nasıl çalıştığını anlayarak öğrenmeniz çok zor. Bu insanların kullandığı gerçek diller için de geçerli bir durum. İstediğiniz kadar kelimi hazineniz geniş olsun ve tüm gramere hakim olun, konuşma pratiğiniz yoksa, o dili konuşamazsınız. Pratik dediğiniz şey derdinizi bir başkasına başka bir dilde anlatma çabasına girdiğinizde gerçek anlamda vücut bulan birşeydir. Bunu şimdi programcılığa aktaralım.

Ortada çözmek istediğiniz bir problem varsa, kullanacağınız programlama dili bir araç haline gelir. Burada amaç dili öğrenmek değil, problemi çözmektir. Bunu aksine Hello World ile dili öğrenmeye çalıştığınızda dil araç değil, amaç haline gelmektedir. Amaç olan bir dili derinlemesine öğrenmeniz imkansızdır, çünkü onun gerçek yüzünü görecek derinliğe inemezsiniz. Bu sadece bir problem çözerken gerçekleşebilecek birşeydir. Bu yüzden bir programlama dili öğrenmek için kullanmanız gereken iki şey vardır: 1. Github Copilot, 2. Yeni bir proje.

Son zamanlarda bir startup projesi üzerinde çalışıyorum. Bu proje bünyesinde bir mobil uygulama mevcut. Bu mobil uygulamayı önce Android/Java ile yıllardır mobil uygulama geliştirici edasıyla kısa bir zamanda tamamladım. Akabinde aynı uygulamayı İOS/Swift ile geliştirdim. Bu noktada aynı uygulamanın iki değişik platform için iki değişik teknoloji ile yazılmasının çok anlamsız olduğunu anladım. Şimdilerde aynı projeyi flutter ile geliştiriyorum. Hadi Android/Java çok zor değildi diyelim, çünkü yıllarca Java dilinde kod yazdım. Ama İOS/Swift benim için tamamen yeni bir dünyaydı. Ama Copilot ile Swift dilini öğrenmek çok kolay oldu. Aslında ben Swift dilini öğrenmedim, sadece mobil projeyi geliştirmek zorunda olduğum için problem çözerek ilerledim ve bu sayede Swift dilini yakından tanıma ve kullanma fırsatı buldum. Amacım Swift öğrenmek değildi. Amacım Swift ile bir mobil uygulama geliştirmekti. Problemleri çözerken Swift dilini bilmediğim için hiç zorlanmadım, çünkü Github Copilot çözüm için gerekli kod parçalarını bana sundu. Ben sadece bana sunulan bu kod parçalarının ne anlama geldiğini anlamaya çalıştım ve bu esnada aslında Swift dilini öğrendim. Burada Copilot tarafından sunulan kod parçalarını anlamamdaki en önemli etken Java diline ve programlama konseptlerine olan hakimiyetimdi. Eğer bu olmasaydı derinlemesine Swift dilini öğremem mümkün olmayacaktı.

Şimdilerde Flutter/Dart ile tekrar aynı uygulamayı geliştiriyorum ve Github Copilotın ne kadar güçlü bir araç olduğuna tekrar şahit oluyorum.

Bana istediğiniz bir dili öğrenmem için tavsiye edebilirsiniz. Benim aklıma gelen ilk soru bu dili nasıl öğrenirim olmayacaktır. Aklıma gelecek ilk soru hangi projeyi yaparak, bu dil ile bir problem çözerim olacaktır.

Özcan Acar
EOF (End Of Fun)