yboyacigil

yboyacigil


0 takip ediyor | 0 takip ediliyor


Bilgi alanları


İlgi alanları

Ruby Haber Turu ( 28)

Cevap veriyorum: Hiçbiri! :)

Büyük(!) yazılımların tarafını tuttuğum ya da statükocu olduğuma dair ortaya atılan iddialarla hiç ilgilenmiyorum. Öyle bir adam değilim ki neden güceneyim? ;)

Bahsedilen yazımda dediğim gibi şu anda piyasayı domine eden programlama dilleri ve/veya platformların (web/desktop) arkasında büyük bir sermaye gücü var. Bu da onların neden bu kadar popüler olduklarını anlamamız için önemli sebeplerden biri. Ama sırf bu yüzden popüler değiller; sağladıkları kütüphaneler, getirdikleri standart yöntemler bunları tercih edilir kılıyor.

Ruby kitap satışlarının Python'u geçmesinden neden rahatsız olayım? Benim Python sevgim (öyle olmasa da) başkalarına göre tamamen subjektif olarak değerlendirilebilir. Bu benim umrumda bile olmaz. Üstelik Ruby, Python'dan daha iyi bir dil olsa dahi ben yine Python yazacağım. Bunu değiştirebilecek birisi var mı?

Benim asıl kızdığım (tekrar olacak ama) şu: Aynı işi defalarca yapıyoruz! Ve her seferinde bir grup insan çıkıp: "Bu en iyisidir!", "Bu şuna göre şöyle şöyle iyi!", "Bununla şunu ötekinden şöyle şöyle kolay yaparsınız!" "Bu x ayda şu kadar kişi tarafından indirildi!", "Bununla alakalı kitap satışları şöyle fırladı." gibi şeyler yazar/çizer/söylerler. Bu söylenenler kısmen doğru olsalar da bir takım kandırmalar var! Onları kaçırıyoruz. Safdillik yapıyoruz. Mesela script yönelimli bir web platformuyla, nesne yönelimli başka bir platformu nesneye yönelik programalama kriterleri ile karşılaştırılsa ve ikincisi daha iyi çıksa, birincisinin daha kolay, zahmetsiz şekilde iş görmeyi sağlıyor olmasını ya göz ardı ediyoruz ya da böyle birşey olabilir mi diye hiç sorgulamıyoruz. Önemli olan şudur: Kişi kendi işini en iyi şekilde yapabileceği, işinin gereklerini en optimum şekilde karşılayabilecek olan dil/platformları seçmelidir. Tabi bunun için bilgi/beceri sahibi olmak gerekir. Olmayınca da kolay şekilde kandırılırsınız. Bunlara dikkat çekmek istiyorum.

Bir dilin/platformun sadece açık kaynak kodlu olmasının onun üstün olduğu anlamına gelemeyeceğini herkes kabul etmelidir. Açık kaynak furyası başlayalı beri her ihtiyacı açık kaynak kodlu dil/platform/frameworklerle yapmak erdem kabul edilir oldu. Ama sadece açık kaynak kodlu yazılım kullanmak hatırına işe yarayan kapalı kodlu yazılımlara gözlerimizi kapamamız gerekir. Önemli olan amaç mı yoksa araç mı? Siz dünya piyasalarında rekabet edecek bir firma olmaya niyetlenseniz sadece araçlara mı özen gösterirsiniz?

Şuna da dikkatinizi çekeyim açık kaynak kod furyasından para kazanmak isteyenler bir şekilde bir anafor oluşturup kitleleri kendine çekmeye çalışarak yüksek karlar yapmak istiyorlar. Mesela Ruby'nin tutulmasını O'reilly herkesten çok ister. Çünkü daha çok kitap satacak. Bu onun işine gelir. Bunu O'reilly'yi kötülemek için söylemiyorum. Öyle de yapması gerekir. Birileri çıkar kendine rakip olan bir teknolojiyi yok etmek için üçüncü (piyon) bir teknolojinin öne çıkması için ona el altından destek çıkabilir. Ya da bizzat açık kaynaklı yazılımın yaratıcıları kitleleri önce kendine çeker, sonra lisans değişikliğine giderek bir tekel haline dönüşebilir. (bkz. Redhat'in yaptıgı şey.)

Açık kodlu özgür yazılımın elbette desteklenmesi/kullanılması/yaygınlaşması gerekir. Ama kuşkuculuğu elden bırakmadan uyanık şekilde!

Ruby Haber Turu ( 28)

Her yeni çıkan programlama dili/framework dünyanın tüm problemlerini çözeceğini(!) eskilerine üç beş basacağını iddia ederek çıkıyor karşıma ve ben asıl buna *tilt* oluyorum. Şimdi Ruby Rail web framework'ü kendinden önce gelenlerin başardığı şeyleri daha yeni yapabilir hale gelmişken bunu çok önemli bir gelişim gibi görmek sadece çıkmadan önce ruby kullananlar için için geçerli olabilir.

Yani şimdi ASP/X, JSP/Servlet, PHP, Python + Zope'dan çok mu iyi Ruby Rail? Herkes aynı şeyi yapıyor. En iyi dil/framework benimkidir diyor. Bunların çoğu subjektif kriterlere dayanarak yapılan iddialardır. Bu IT dünyasındaki herşeyi defalarca yapma hastalığından ne zaman kurtulacağız? Ruby Rail çıktı başımız göğe mi erdi? Bir şeyi adam akıllı öğrenmeden Ruby Rail yapayım bak ne kadar çok kitabı satmış(!) diye saf dillik edip onu da öğrenemeyecek bir sürü sivri zeka çıkar şimdi!

Ruby kitapları satışındaki *çok önemli* artışa ben de dikkatinizi çekmek istiyorum. %1552 sizi yanıltmasın sakın. Mesela geçen ay 1 tane satılan kitap bu ay 1552 tane satılmışsa da %1552'lik bir artış olur! Önemli olan kaç tane sattığı. Ben ruby'cilerin, ne yapacağını bilmeyen yeni birşeyler araştıranlar dışında Ruby Rail ile birilerinin ilgileneceğini sanıyorum. Aklı olan varsa yeni çıkmış ne yapacağı ve onu ne kadar etkili bir şekilde yapacağı belli olmayanı değil de herkes tarafından kabul görmüş, oturmuş dillere/frameworklere yönelsin. ASP/X, JSP/Servlet, PHP varken Ruby Rail sadece küçük bir azınlığın (mutlu/belki değil) platformu olur. Ruby'ciler üzülebilir buna ama böyle. Siz Ruby yazıp mutlu olmaya devam edebilirsiniz. (Write ruby, be happy)

fazlamesai.net'e Soralım: Test Driven Development Hakkında Ne Düşünüyorsunuz? ( 10)

TDD atik geliştirme (agile development) yöntem(leri)inin hüsn-ü kabul görmesinden beridir popüler hale geldi. Geliştirmeye önce test yazarak başlamak ve sadece o testi çalıştıracak kodu yazmak alışılmadık bir yöntem olduğu kadar hedefi net olarak belirleyerek (en azından yazılan testin ihtiyacını karşılayacak kadar net) gereksiz ıvır zıvırlarla kodu şişirmeden yazmayı mümkün kılabilir.

Yani geliştirmeye yön veren şey başlangıçta yazılan test veya testlerin ta kendisi. Başka bir şey değil. Böyle olunca da yazılımda istenen şeyi en iyi şekilde belirlemek için önce testlerin tam olarak belirlenmesi ve hazırlanması gerekiyor. Burada testleri hazırlayan grup geliştirmeyi yapacak olan programcı(lar) olabileceği gibi tamamen ayrı bir takım da olabilir. Hatta yazılım isteklerinin programcının önüne yüzlerce sayfalık dokumanlar veya sınıf, etkileşim, kullanım diyagramları olarak gelmektense bir satırı bile çalışmayacak olan test kodları halinde gelmesi ve programcının yap-boz yapar gibi test kodlarının çalışması için ilgil parçaları (sınıf/metodları) bir araya getirip resmi(programı) oluşturması bile mümkün olabilir. Acaba bu veya benzer şekilde bir istekler analizi yaptıktan sonra tasarımı programcılara alın bu testleri çalıştırın diyen/diyebilecek birileri var mıdır/olmuş mudur?

Ancak bunu yapmanın ne kadar zor ve sıkıntılı olabileceğini de göz ardı etmemek lazım. İşe girişince zamanla istekler değişecek ve testleri tekrar elden geçirmek belki de yeniden yazmak/düzenlemek gerekeecek bu hem test kodlarının hem de o ana kadar yazılmış kodların elden geçirilmesi demek. Gerçi atik geliştirme yapıyorsanız geri besleme ile devamlı olarak bir düzenleme sürecine kendinizi alıştırmanız gerekeceğinden ve kısa adımlarla çalışması olası "release"ler çıkarağınızdan bunun büyük bir sıkıntı getirmemesi gerekir. Bu kültüre alışık olmayanlar için yine de zor. Proje zamanının tuturulamaması riski de taşıyor olması ayrı bir sorun. Fazladan testleri de ikame (maintain) etmek zaman kaybı olarak görülecektir. (Sizin tarafınızdan olmasa da yöneticileriniz tarafından)

Gerçek zamanlı uygulamalar için bu testlerin çalıştırılmasının zorluğu başka bir engel olarak karşınıza çıkabilir. Ama bu zorluktan yalancı nesneler (mock objects) kullanılarak kaçılabilir. Başka bir sorun veri kaynaklarının kullanılması gereken durumlarda ortaya çıkabilir.

Sonuç olarak tam anlamıyla uygulanamasa da test kodlarının geliştirmeyi yönlendirmesi amaca yönelik çalışmak için iyi bir rehber olacaktır. TDD Türkiye'de uygulanabilir mi uygulanırsa başarılı olabilir mi diye soracak olur ve hemen kendim cevap verecek olursam atik geliştirme kültürünü kapmış, iyi programcılardan oluşan küçük ekiplerle bu başarılabilir. Ama genel olarak konuşacak olursam hiç sanmıyorum. Türkiye'de zaten oturmuş bir yazılım sektörü olmadığı gibi ciddi eğitim sorunları ve genel bir yetersizlikle karşı karşıyayız. Daha çok fırın ekmek yememiz lazım.

Eğitim şart! :)

Google: Aziz mi Şeytan Mı? ( 13)

Google'ın 10 kuralından birisi: "Don't be evil" buna Şeytanlaşma diyebiliriz. Bu ve bunun gibi kuralların google için ne kadar değerli olduğu ve bunlara sıkı sıkıya bağlı olduklarından dem vururyorlar.

Ama yaptıklarına değişik açılardan bakarsak hem şeytani hem de meleki açıdan değerlendirebiliriz google'i.

Açık kaynak kodu benimsemesi ve desteklemesi, bedava ya sağladığı oldukça kaliteli hizmetlere bakınca bu kadar iyiliği neredeyse hiç karşılık beklemeden yapmaları onu melekmiş gibi algılamamız için yeterli.

İşin öteki tarafında ise google basit bir arama motorundan hareketle tüm interneti tekeline alacak şekilde dev adımlarla ilerliyor. Bu bile aslında bizleri ürkütmek için yeterli olmalı. Bilgi çağının metası olan bilgi onun kontrolünde. Mesela google arama sonuçlarını manupüle edebilir. Böylelikle belirli kaynaklara ulaşma imkanını elimizden alabilir yada bizi kendi istediği veya birilerinin istediği bilgi kaynaklarıyla sınırlayabilir. Bu tam anlamıyla şeytani bir yaklaşım olur.

Bunun yanında google rakipleriyle tam bir savaş içerisinde. Bu söylendiği gibi sadece google'ın rakiplerinin onun büyümesinden duyduğu rahatsızlıktan değil bazen de (bu aralar çokça) google'ın kendisinden kaynaklanıyor.

Mesela geçenlerde M$'in bir elemanını çaldı ve kıyamet koptu. M$'in CEO'su bunu öğrenince sandalyeler havada uçuşmuş M$ karargahında. Google'dakiler bizde böyle şeyler olmaz diyorlar. Gülelim mi? Acaba aynı şey kendilerine olmuş mu? O zaman ne yaparlardı? Hariçten gazel okuyorlar.

Sonuca gelecek olursam bana göre google'da şeytan yani bizim şeytan diye kızdıklarımızdan, nefret ettiklerimizden mesela M$ gibi farklı değil. Ama kesinlikle M$'den akıllı. Ya da şartlar google'ın yanında da ondan öyle algılıyoruz.

Eskilerin kullandığı bir deyim var: Şeytan sadece soldan değil sağdan da yaklaşır. Kastedilen şeytan, iyi diye bilinen/kabul edilen şeylerle de insanın kanına girer onu kandırır. Bana kalırsa google sağdan vuracak gibi!