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

2008 Yılında E-Öğrenmeyi Şekillendirecek 9 Trend

FZ

Bill Brandon’ın Learning Solutions e-Magazine’de dün yayınlanan “Nine Trends That Will Shape e-Learning in 2008″ başlıklı makalesi bu sene e-öğrenim dünyasında etkili olacak yeni ve gelişmekte olan eğilimleri ele alıp önemli noktalara dikkat çekiyor [1].

Linux Açılış Disketi NASIL

yalcink01

Hep hayalini kurduğum şey, kendi başıma imal ettiğim bir işletim sistemi idi. Baktım ki bu iş oldukça uzun bir zamana mal olacak, ben de hayalimi güncelledim ve kendi birleştirdiğim bir işletim sistemi yapmaya karar verdim. Hani legolar var ya onun gibi bir şey işte. Eh, Linux çekirdeği artı GNU araçları ve bilumum özgür yazılım etrafta cirit atıyor:) Al parçaları birleştirmeye başla dedim ama işte orada tıkandım kaldım. Parçaları bulmak kolay ama bir GNU/Linux İşletim Sistemi nasıl çalışır, temel parçalar nelerdir, kim kimi tetikliyor, kimin eli kimin cebinde konuları biraz karışık. Demokraside çare tükenmez deyip kendi yol planımı yaptım ve işe başladım: Öncelikle "bu sistem nasıl açılır, temel parçalar ve ana hatlar nelerdir?" sorununun yanıtını bulabilmek amacı ile The Linux Bootdisk HOWTO kılavuzunu hatim eyledik. Sırada Çekirdek Çitleme Kılavuzu (tldp tarafından şu an güncelleniyor) ve The Pocket Linux kılavuzu var.

Linux Açılış Disketi NASIL kılavuzu; bir açılış disketi yapımını anlatmakla birlikte -ki bu işin çok daha kolay bir yöntemi de mevcuttur:mkbootdisk- sistemin ilk ateşlemesini ve bu sistemin çalışması için gereken temel araçları açıklaması yönünden bence oldukça önemli bir başlangıç noktasını oluşturmakta. İyi bir başlangıç olmakla birlikte, sistem temellerini anlayabilmek için tek başına yeterli olmasını beklemeyin. Zaten kılavuzun ana hedefi de bu değil. Adı üstünde: açılış disketi nasıl yapılır, onu anlatıyor :)

Her halükarda okunması gereken ve Linux öğrenmeye çalışan benim gibiler için, uygulanması gereken bir kılavuz. Init'in ne olduğunu anlamadan önce, init'in herşeyin atası olduğunu anlamak gerekir, öyle değil mi?

http://www.geocities.com/yalcink01/bootdisk-howto/index.html adresinden belgeye ulaşabilirsiniz. Her zaman olduğu gibi: her türlü geribeslemeye kapımız açıktır

Nasıl Programcı Olunur

yalcink01

Robert L. READ tarafından yazılmış olan ve ESR'nin "Nasıl Hacker Olunur?" kılavuzunda da bahsi geçen "How to be a programmer" kılavuzunun "acemiler" için olan kısmının çevirisi bitti. Hem çevrilen kısmın imla, yazım, mantık ve bilumum hatalarının kontrolü için hem de programlamaya merak saran acemi vatandaşlara yol yordam göstersin diye bu kısmı yayınlamaya karar verdik. Çevrilmiş kısım hakkındaki fikir ve eleştirilerinizi bekliyorum. Hata ayıklama konusundaki yardımlarınız için şimdiden teşekkürler.

Saygılarımla,

Yalçın KOLUKISA
yanmasın diye kaz çevirmeye giden adam

Mayıs 2009 Sayısı ile e-Bergi sizlerle

ilke444

Aylık bilgisayar bilimi ve özgür yazılım derginiz e-bergi, Mayıs 2009 sayısında sizlere yine dopdolu bir içerik sunuyor.

Matematik Dünyası Dergisi

FZ

Prof. Dr. Ali Nesin yönetiminde çıkmaya başlayan Matematik Dünyası dergisi dolu dolu içeriği ile karşınızda.

Kapak konusu "Fonksiyonlar" olarak seçilmiş son sayıda, bunun yanı sıra, aramızdan ayrılan matematikçiler, topoloji köşesi, Fibonacci sayıları, bilgisayar bilimi köşesi (robotik ve diğer ilginç konular), geometri köşesi, paradoks ve satranç köşeleri gibi birçok başka bölüm de var.