
Aslında doğru soru şu olmalıdır: Yazılım sorunlarını nasıl daha iyi çözebilirim?
Julia en sevilen programlama dili olarak Python‘u geçebilir. Julia, istatistik ve makine öğrenimi için çok paradigmalı, işlevsel bir programlama dilidir. Python, genellikle nesne yönelimli olarak düşünülse de, makine öğreniminde de kullanılan çok paradigmalı bir programlama dilidir.
Daha önce insanlar Julia programlama dilinin pek farkında olmasalar da, şimdi oldukça hype kazandı. Bu yılki Stack Overflow Geliştirici Anketinde Julia, en popüler programlama dilleri için altıncı sırada yer alan Python’dan ve 33. sırada yer alan R’den daha üst sıralarda yer aldı.
Her geliştiricinin farklı bir teknoloji yığını kullandığını gözlemlediğinizde, hangisinin doğru olduğunu merak etmek çok mantıklı geliyor. Mesele şu ki, hepsi eldeki soruna bağlı. Hiçbir teknoloji tek başına iyi ya da kötü değildir; bu sadece ne tür bir sorunu çözmek istediğinize bağlıdır. Programlama, bilgisayar kullanarak problem çözmektir.
Problemleri nasıl çözeriz
Programcılar ve veri bilimciler için bu, kodlamaya başlamadan önce sorunu anlamak ve üst düzey çözümler bulmak için zaman harcamak anlamına gelir. Ortalama bir kodlama mülakatında, adayların zamanlarının yarısından daha azını gerçekten kod yazmakla, daha fazla zamanı ise sorunu anlamakla geçirmeleri beklenir.
1- Problemi anla
Bu adımı asla atlamayın!Abraham Lincoln’ün, “Bir ağacı kesmem için altı saatim varsa, ilk dördünü baltayı bilemekle harcarım” dediği aktarılır.
Bir sorunu anlayıp anlamadığınızı bilmenin anahtarı, onu aşina olmayan birine açıklayıp açıklayamayacağınızdır. Düz İngilizce veya anadilinizde yazmaya çalışın; küçük bir diyagram çizin; ya da bir arkadaşınıza bundan bahsedin. Arkadaşınız neden bahsettiğinizi anlamıyorsa, sorun ifadesine geri dönmeniz gerekir.
Sorulacak anahtar sorular şunlardır:
Girdiler nelerdir? İstenilen çıktılar nelerdir?
Örneğin, girdi bir veri dizisi olabilir ve çıktı, veriler üzerinde doğrusal bir regresyon olabilir.
Problemin altında yatan varsayımlar nelerdir?
Örneğin, verilerinizde (neredeyse) hiçbir ölçüm hatası olmadığını varsayıyor olabilirsiniz.
Bu sorunu karmaşık hale getiren nedir?
Örneğin, sahip olduğunuz veriler eksik olabilir veya veri kümesi net sonuçlar çıkarmak için çok küçük olabilir.
2- Ana problemi küçük parçalara böl
Her büyük problem, birçok küçük problemden oluşur. Doğrusal regresyonla ilgili önceki örneğimiz göz önüne alındığında, aşağıdaki alt problemleri göz önünde bulundurmak isteyebilirsiniz:
Verileri temizleme
Verilerdeki hangi değişkenlerin regresyon için anlamlı olduğunu ve hangilerinin güvenli bir şekilde ihmal edilebileceğini bulmak
Regresyon yapmak için doğru aracı aramak (programlama dilleri ve çerçeveleri hakkındaki eski sorunun devreye girdiği yer burasıdır)
Sonuçlarınızı değerlendirme ve hata kontrolü
Sorunu parçalamak, işiniz için uygun bir plan yapmanıza yardımcı olur.
Aynı zamanda daha motive edici çünkü yol boyunca küçük ama önemli kilometre taşlarına ulaşacaksınız. Bu, bir iş dağının önünde oturmaktan ve ilerlemiyormuş gibi hissetmekten çok daha tatmin edici.
3- Bir örnekle başla
Şeytan her zaman ayrıntılarda gizlidir.
Tüm projeyle başlamak yerine, ondan küçük bir parça alın. Planınızın işe yarayıp yaramadığını veya öngörülemeyen zorluklar nedeniyle onu uyarlamanız gerekip gerekmediğini deneyin.
Bu, kafanızın zor kısımlarını almanıza yardımcı olur. Pek çok sorun kulağa basit geliyor, ancak onları oluşturmaya başladığınızda birbiri ardına bir barikat var.
Örneğimizde, ilgili tüm değişkenleri kullanmak yerine, önce birkaç değişken üzerinde doğrusal bir regresyon gerçekleştirilebilir. Bu size projenin tamamlanması için herhangi bir puan kazandırmaz; ancak, hala az miktarda veriyle uğraşırken komut dosyalarınızdaki hataları bulmak hayat kurtarıcı olabilir.
Tüm verilerinizi makineye attığınızda, saatlerce çalıştırdığınızda ve ardından komut dosyasının yarıda kapandığını fark ettiğinizde, çok sinirli olacaksınız.
Önce küçük testler yapın ve çözümünüzün hayal ettiğiniz gibi çalıştığından emin olun.
4- Çalıştır
Artık büyük probleminiz için bir çözüm oluşturabilirsiniz.
Tüm verilerinizi koda atın. Havalı bir model çalıştırın.
Hatalar varsa, zaten her şeyi anlayıp anlamadığınızı ve herhangi bir hatayı gözden kaçırmadığınızı görmek için 1-3. adımlara geri dönmeniz gerekebilir.
5- Çözümü gözden geçir
Tek bir çözüm bulmuş olmanız, en iyi çözümü bulduğunuz anlamına gelmez. Çözümünüzü nasıl optimize edebileceğinizi ve ona nasıl farklı şekilde yaklaşabileceğinizi düşünün.
Meslektaşlarınızla fikir alışverişinde bulunmak ve sorunu nasıl çözeceklerini sormak isteyebilirsiniz. Onların yaklaşımı sizinkinden farklı mı?
Çözümünüzdeki en büyük darboğazları, yani yürütülmesi en fazla zaman ve kaynak gerektiren parçaları belirlemeye de çalışabilirsiniz. Onları nasıl iyileştirebilirsin?
Son olarak, çözümünüzün gelecekte nasıl gelişebileceğini düşünün. Yeni yazılım çerçeveleri veya yapay zeka kullanımı çözümünüzü daha iyi hale getirir mi? Çözümünüz diğer, hatta daha karmaşık sorunların çözümüne nasıl katkıda bulunabilir?
Bazı yazılımcılar, farklı programlama dillerine ve her şeyi 1000 kat daha verimli hale getirebilecek en yeni frameworklere kafayı takma eğilimindedir. Ancak mucize bir yazılım dili maalesef yoktur.