Python Paradoksu

0
FZ
Paul Graham, geçenlerde (2004 Ağustos'unda) kısa bir makale yazmış, bakalım ne demiş:

"Kısa bir süre önce gerçekleştirdiğim bir konuşmada pek çok insanı hayalkırıklığına uğratan bir laf ettim: Python tabanlı bir proje için bulabileceğiniz programcılar, Java tabanlı bir projeye çekebileceğiniz programcılardan daha zeki olacaktır.

Kast ettiğim Java programcılarının aptal olduğu değil. Kast ettiğim şey, Python programcılarının daha akıllı olduğu. Yeni bir programlama dilini sıfırdan öğrenmek çaba gerektirir. Ve insanlar Python'u yeni bir iş bulabilirler diye öğrenmiyorlar; insanlar Python'u öğreniyor çünkü gerçekten programlamayı seviyorlar ve halihazırda kullandıkları dillerden memnun değiller.
Tam da yukarıda sayılan sebep onları şirketlerin gözünde değerli kılıyor. İşte bu sebepten ötürü, bu durumu isimlendirmek için daha iyi bir tabir bulamadım ve buna "Python Paradoksu" dedim: Eğer bir şirket göreli olarak az kullanılan bir dilde yazmayı seçerse daha iyi programcıları çalıştırabilecektir çünkü bu mantalitedeki bir şirket ancak o programlama dilini öğrenmek için gerekli çabayı sarf etmiş programcılarla muhatap olacaktır. Programcılar açısından ise paradoks şöyle özetlenebilir: Eğer iyi bir iş istiyorsanız öğrenmeniz gereken dil öyle bir dil ki insanlar o dili bir iş bulmak için öğrenmiyorlar.

Şimdiye dek bu durumun farkına varacak kadar akıllı davranabilen çok az şirket oldu. Ancak burada da bir tür doğal seçilim var: Bu akıllı şirketler programcıların nezdinde en çekici şirketler, söz gelimi Google. Bu şirket Java programlama ile ilgili iş ilanı verirken Python deneyimini de artı puan olarak belirtiyor.

Popüler dillerin hemen tümünü iyi bilen programcı bir dostum uzunca bir süredir pek çok projesi için Python kullanıyor. Dostumun dediğine göre temel sebeplerden biri kaynak kodun görüntüsü. Bir programlama dilini tercih etmek için bu garip bir sebep gibi görünebilir ancak biraz dikkatli düşünülürse durum daha iyi anlaşılır: Program yazarken kod okumak için harcadığınız zaman kod yazmak için harcanan zamandan çok daha fazladır. Tıpkı bir heykeltraşın elindeki malzemeyi şekillendirdiği gibi siz de kaynak kodu şekillendirmekle uğraşırsınız. O halde kaynak kodun çirkin görünmesi iyi bir programcı için çıldırtıcı ve korkunç bir durumdur tıpkı fazlalıkların bir heykeltraşı çıldırtması gibi.

Pek çok kişi kaynak kodun karmaşık görünmesi kavramı ile karşılaştığında öncelikli olarak Perl programlama dilini düşünür ancak Perl'ün yüzeysel karmaşıklığı değil bahsettiğim. Gerçek çirkinlik sert görünümlü bir sözdizim değildir, gerçek çirkinlik programları yanlış kavramlar ve yapılar üzerinden kurmaya kalkışmaktır. Perl küfreden bir çizgi film karakteri gibi görünebilir ancak kavramsal olarak Python'a basıp geçtiği yerler de yok değildir.

Neyse, bildiğiniz gibi iki dil de hareketli hedeftir. Bu dillerin Ruby (ve Icon, Joy, J, LISP ve Smalltalk) ile birlikte paylaştıkları bir şey vardır: Bu diller programlamayı seven ve bunu ciddiye alan kişiler tarafından geliştirilmiştir ve yine bu tür kişiler tarafından kullanılmaktadır. Bu programcılar da programlama işini genellikle daha iyi yapmaktadır."

Kaynak: http://www.paulgraham.com/pypar.html

Görüşler

0
lifesdkver0_1
Paul Graham'in javadan nefret etmesinin geçmişe dayalı bir sebebi olmalı :) daha önceki bir kaç makalesinde de buna benzer seyler soyluyordu. bu arada, aynı fikirde olup da java'ya da yakın olmak isteyenler, groovy [groovy.codehaus.org]'e göz atmalılar...
0
sundance
Bence ortada bir Java düşmanlığı yok. Üstadın özellikle 2002 tarihli yazısında [www.paulgraham.com] belirttiği; " Diyelim ki bir yazılım üretmeniz gerekiyor. Sivri saçlı patronunuzun [www.dilbert.com]
bu yazılımın nasıl çalışması gerektiği, ya da bir programlama dilinin diğerinden ne farkı olduğu konusunda en ufak bir bilgisi yoktur, yine dettam olarak hangi dille yazmanız gerektiğini bilir Java ile yazacaksınız

Niye böyle düşünür ? Gelin sivri saçlı patronun beynine bir bakalım. Java bir standarttır. Öyle olmalı çünkü devamlı basında bunla ilgili bir şeyler okuyorum [aslında okuyorum demek yanlış olur, zamanım yok teknoloji konusunda okumaya Ed.]Standart olduğuna göre onu kullanırsam başım derde girmez. Ayrıca bu demektir ki ortada da devamli birsürü Java programcısı olacak, öyleyse eğer şu an benim için çalışan programcılar işten çıkarsa ki ilginçtir benim için çalışan programcılar genellikle bir süre sonra ayrılırlar, her zaman için yerine yenilerini bulabilirim"



0
FZ
Bir ``yönetici´´nin bakış açısı gayet güzel özetlenmiş ;-)

Aslında tek bir cümleyle de özetlenebilir bu kategorideki insanların bilgi işleme ve teknolojiye bakış açıları: ``Kimse IBM aldığı için işten atılmamıştır.´´

Paul Graham´ın fikirleri elbette tartışılabilir ancak gerçekten çok güzel yazıyor ve çarpıcı örnekler veriyor, yukarıdaki kısa makalesinin sonunda ortaya koyduğu mantaliteye ise diyecek söz yok.

Üstadın Mayıs ayında yayınlanmış olan ``Hackers and Painters: Big Ideas from the Computer Age´´ isimli kitabına da bir göz atmak lazım (eğer kitaptaki makaleler daha önce Internet´ten okunmadıysa tabii ;-)

http://www.amazon.com/exec/obidos/tg/detail/-/0596006624/qid=1092904515/sr=1-1/ref=sr_1_1/002-6191629-7065665?v=glance&s=books
0
lifesdkver0_1
türkiye yazılım piyasasında gerçekten boyle patronlar var mı merak ediyorum. elindeki programcılarının bildiği dillerden bihaber mesela..
0
robertosmix
Herhangi bir dilin bir diğerinden daha üstün olduğunu savunan yada herhangi bir dile düşman gibi görünen insanları pek ciddiye almamak gerekir. Ciddiye almanın da "akıllı" bir yazılımcı için zaman kaybı olduğunu bilmek gerekir.



0
sundance
(sanırım bu söylediğini ciddiye alamayacağım)
0
skoylu
Ben derim ki LISP ile ugrasmak abesle istigaldir devirmizde..

Peki buna ne buyrulur ?
0
FZ
Profesyonel bir LISP programcısı olan Paul Graham´ın burayı takip ettiğini, takip etse de Türkçe bilmediği için tartışmaya katılabileceğini ya da bu soruya cevap verebileceğini sanmam ancak burayı zaman zaman takip ettiğini bildiğim bm takma isimli üyemiz bildiğim kadarı ile ``devrimizde´´ LISP ile profesyonel yazılım geliştiren birisi olarak buna bir şey diyebilir (eğer takip ediyorsa yani).

LISP ile geliştirilmiş, benim ve çevremin sık kullandığı enteresan bir program var bir tür görsel RegExp editörü, hata ayıklayıcısı, vs. görebildiğim kadarı ile türünün en iyisi, sanırım Perl´cilerle LISP´ciler arasında bir kapışma sonucu bir Alman programcı tarafından kısa sürede geliştirişmiş olan RegEx Coach: http://www.weitz.de/regex-coach/

Yine bildiğim kadarı ile bir hayli hacimli olan ticari bir havayolları bilet satış, vs. sistemi LISP ile yazılmış durumda.

Buna ek olarak teknoloji üretemesi ile ünlü MIT´de programlamaya giriş dersi olarak kullanılan yazılım geliştirme platformu da LISP kökenli bir dil olan Scheme. Herhalde bu adamlar bu tarz bir yaklaşımla yazılımın temel ilkelerini vermeyi abesle işgal etmek olarak görmüyor olacaklar ki hala buna devam ediyorlar ve pek çok üniversite de MIT benzeri yol izliyor.

Keza doğal dil işleme ilgili, özellikle ABD kökenli önemli kitaplara bakılacak olursa algoritmaların uygulanmasının LISP ile verildiği görülür (Avrupa´lılar ise bu konuda genellikle Prolog tercih eder).

Kaldı ki burada sonu gelmez ``efenim Assembler süperdir, hayır hayır efendim ben C ile makinayı uçururum hatta bakın Linux´un kaynak koduna bile müdahale ediyorum yaa, o da bi şey mi asıl sen benim C++ ve OpenGL ile alete nasıl göbek attırdığımı ne manyak optimizasyon yaptırdığımı gör, off be olm bak ben LISP ile ne biçin doğal dil işleme programı yazdırdım´´ tartışmalarını da (zevkli bulmakla beraber) artık pek de bir şey katıcı, fayda sağlayıcı bulmuyorum. Çalışılan konuya göre popüler olan diller, araçlar vardır, bunlarda ustalaşmanız ve verimli, hatasız şekilde iş çıkarmanız gerekir, konu ne ise ona göre bir tavır belirlersiniz. Misal bugün hala bilimsel ortamlarda FORTRAN´ın ciddi ciddi ve gayet performanslı bir şekilde kullanılması gibi. İşin dışındakiler için ölü bir dildir, işin içindeki binlerce insan içinse olmazsa olmazdır ve gayet de güzel iş görmektedir.

En nihayetinde, Graham´ın söz konusu makalesini çevirmiş olmamın sebebi Python, LISP, Java, C, vs. filan değil, adamın programlama, iş dünyası, bir işi yaparkenki ruh hali, vs. bu gibi konulara dair ettiği ve önemli olduğunu düşündüğüm laflar, iddialar.
0
malkocoglu_2
|| ... bir hayli hacimli olan ticari bir havayolları
||bilet satış, vs. sistemi LISP ile yazılmış durumda.

Yazilim muhendisligi abidesi Emacs'i de bu listeye eklemek isterim. Bu esnek editor'u kullandigim son 10 senedir cogu kez Stallman'a bu yazdigi saglam LISP kodu icin tesekkur etmisimdir. Son yaptigim sayima gore eklentiler, vs, toplam yazilmis LISP kodu 144,709 satirdir (find -name '*.el' | xargs wc -l). Az buz degil. Emacs buyuk bir proje olarak gorulebilir, ve bir LISP basarisidir.

0
mentat
bir sure oncesine kadar ben de ayni seyi dusunuyordum.

FZ'nin NLP ve Lisp uzerine soylediklerine ek olarak su tartisma gayet ilginc ve egitici gelebilir ilgilenenlere.
What's so great about Lisp

ozellikle SabreMan denen ukala kisiligin dediklerine dikkat etmek lazim.
0
FZ
Common Lisp Wiki (binlerce farklı Lisp uygulamasına dair bilgi):

- http://www.cliki.net/index
0
malkocoglu_2
Cok kisa bir sure icinde C++ ile binlerce satirlik bir finans (ya da baska bir bilgi islem) uygulamasi yazmak zorunda kalinca, dil dusmanligini daha iyi anlasiliyor. Zamaninda en ince ayrintisini bilmis oldugum C++ dilinden "nefret ederim". Cunku, is uygulamari icin gereksiz ozellikleri vardir. Fakat, durum oyledi ki, 80'li yillarda C bilen insanlarin nesnesel programcilik yapmak istemeleri butun piyasayi C++ yonune dogru itmistir (bu dalgadan daha sonra Java da yararlandi tabii) ama ortada piyasanin bir teknoloji secimini zorlamis olma durumu vardir. Bunu normal karsilamak lazim, ama bu, C++'a karsi memnuniyetimi belli etmeyecegim ve ilk sansi buldugumda bu dili kaldirip atmayacagim anlamina gelmez (ki oyle yaptim). Ayrica o zamanki sirketimiz icinde bu tur memnuiyetsizliklerin, genel olarak, Java'ya olan geciste cok buyuk etkisi olmustur. Kanimca Java'ya gecisin de, genel bilgi islem sektoru bazinda verimliligin (productivity) artisinda buyuk faydalari olmustur. Daha baska diller daha baska verimlilik arttirimi saglayabilirler. Bu yonde arayis durmamalidir.







Görüş belirtmek için giriş yapın...

İlgili Yazılar

IT Sektöründe Profesyonel Olmak

anonim

Eğer Fazlamesai sitesini takip ediyorsanız hepinizin bir şekilde yolu IT sektöründen geçiyordur. IT sektöründe profesyonel olmak göründüğü kadar kolay değildir. Sadece ünvanınızın önüne '... Specialist' eklemek yetmiyor.

Sıradışılıkla Kazanmak - Bir Common Lisp Başarı Öyküsü

FZ

1990'lı yılların ortasında Lisp ile geliştirdiği e-ticaret sistemini Yahoo şirketine 40.000.000$'a satan Paul Graham'ın Beating The Averages başlıklı makalesini FM üyeleri ile paylaşıyor ve faydalı olmasını, olabildiğince geribesleme üretmesini ümit ediyoruz. Çeviriye önayak olan, sponsorluğu üstlenen değerli FM üyesi bm'ye ve çevirinin ilk halini gerçekleştiren İstanbul Bilgi Üniversitesi, Bilgisayar Bilimleri Bölümü öğrencilerinden Çağıl Uluşahin'e teşekkürlerimizi sunuyoruz. Bu belgenin orjinal adresine buradan erişebilirsiniz.

Visualizing Data: Bir Kitap Eleştirisi ve Görselleştirme Örneği

FZ

Bu yazıda son zamanlarda gittikçe önem kazanmaya başlayan veri görselleştirme konusuna kısa bir giriş yaptıktan sonra Processing programlama ortamının geliştiricisi Ben Fry'ın bu sene çıkardığı 'Visualizing Data: Exploring and Explaining Data with the Processing Environment' kitabının tanıtımı ve eleştirisini gerçekleştireceğim.

Başka bir deyişle, görselleştirme konusuna ve önemine kısaca değindikten sonra kitabın bu konuda neler söylediği aktaracak ve kitaptan aldığım ilham ile iş dünyasına dair basit bir görselleştirme uygulaması örneği vereceğim: Bilgi Üniversitesi'nin eMBA programına gerçekleşen başvuruların yıllara ve coğrafyaya göre dağılımının animasyonu.

Essentials of Metaheuristics yayınlandı

okanakyuz

Sean Luke yeni kitabı Essentials of Metaheuristics yayınlandı. Kitap özellikle yapısal kestirim, popülasyon metotları, paralel hesaplama, Kovelasyon, Çok hedefli optimizasyon, Karınca kolonileri, Genetik algoritmalar, Genetik programlama, evrimsel yazılım metotları gibi birbirinden populer yapay zeka konularını içerisinde barındırıyor. Gösterilen algoritmalar rahatlıkla C/C++,Java, Python, Lisp gibi bir dilde programlanabilecek sadelikte. Özellikle yapay zeka meraklısı arkadaşlara tavsiye ederim.

Kitap creative common lisans ile korunmuş olarak yazarın George Mason Üniverstesindeki sitesinde bedava olarak pdf formatında dağtılmakta. (http://cs.gmu.edu/~sean/book/metaheuristics/)

Port Tarayıcıların Tehlikeleri, Yöntemleri, Karşı Savunma Stratejileri

FZ

Bilindiği gibi internet üzerindeki cihazların birbirleriyle konuşmasını sağlayan protokol ailesi TCP/IP'dir. Bu protokol grubunu düşündüğünüzde, asla herkese açık bir ağ üzerinden gizli bilgiyi gönderilmek amacıyla tasarlanmadığını görülür. Tasarlandığı dönemde, her zaman iletişimin özel ve güvenli hatlar üzerinde olacağı düşünüldüğünden bu yönden her hangi bir geliştirme düşünülmemiştir.

Serbülent ``Nightwalker´´ Ünsal´ın bu çalışmasında, bu gerçeği en ustaca kullanan araçlardan biri, port tarayıcılar incelenmiştir. Ancak burada şunu belirtmek gerekir ki; konun çok geniş bir kapsamı olması sebebiyle makalede büyük ağların ve ana bilgisayarların değil, genel olarak son kullanıcıların ve kişisel sistemler ile küçük ağların bu tehdit karşısındaki durumları incelenmiştir.