Merhaba,
Nacizane bir yorum da ben yapayım; veritabanı içerisinde başka hiç bir çaremin kalmadığı durumlar haricinde asla mantık içeren bir kod bulunmasına izin vermiyorum. Tabi ki yazılım gibi bir alanda genelleme yapmak çok yanlış, eminim buna mecbur kalınan bir çok notka da vardır. Özellikle çok büyük miktarda veri söz konusu olduğu zaman firmadaki oracle üstadı arkadaşlara işi devredip, onların çözüme müdahale etmesine izin veriyorum. Ama %99 oranında çok katmanlı kurumsal yazılımlar geliştirilen bir firmada çalışan birisi olarak, yine çok büyük yüzde ile db seviyesinde bu tarz teknolojileri kullanmamaktan yanayız. Nedenlerine uzun uzun girmek istemiyorum, bambaşka bir tartışma konusu; ama temel olarak java ve db bağımsızlığına yaptığımız yatırımın bize iş modeli ve dolayısı ile stratejik avantaj olarak çok ciddi geri dönüşleri var. Yani DB den bağımsız olmak zorunda olan multi milyon dolarlık bir yatırım söz konusu, ve ben bazı durumlarda işi ne kadar kolaylaştırsa da bahsi geçen türde çözümleri kullanamam. Ha tam bu tarz bir şeye ne zaman ihtiyacım oldu? Bir oracle forms uygulamasının web servislerini çağırması gerektiğinde, web servisi de yapı olarak ssl falan kullanan bir parça karmaşık bir şey olduğu için oracle db içindeki jvm ile web servisi çağıran bir java programcığı yazdım. Tabi orada da bir sürü sorun çıktı , ama sonuç olarak kişisel olarak çok faydalı bir deneyim olabileceğine katılsam da, oldukça uçlarda bir proje olur diye düşünmekeyim. Tabi gezegen geniş; mutlaka kullanacak birisi de çıkar, ama harcanacak eforu bir iki katman yukarı çekerek daha geniş kitlelere hitap eden, ve kullanılması daha yaygın olacak bir proje tercih edilebilir. O da paradan puldan ziyade, kullanıcı kitleri oluşan bir proje kolay kolay ölmez şeklinde bir düşünceden dolayı

İyi çalışmalar
Şeref Arıkan


Emre Sevinç wrote:



Volkan YAZICI wrote:

Merhaba,

Aranızda daha önceden PostgreSQL kullanmış olanlar varsa, bunlar
PostgreSQL tarafından bir çok prosedürel dilin desteklendiğini
hatırlyacaktır. PL/pgSQL, PL/perl, PL/python, PL/ruby, PL/php, PL/R,
PL/tcl, PL/sh, PL/java, ... Bu liste böyle uzayıp gider. Sizin de
tahmin edeceğiniz gibi ben bu listeye bir de PL/scheme (ya da PL/lisp)
eklemek istiyorum. Bu noktada kolları sıvamadan önce bir kamuoyu
yoklaması ve araştırmasının yararlı olabileceğini düşündüm.

[1] Durduk yere zaten var olan onlarca prosedürel dil arasına bir tane
   daha eklemenin ve bunun bakımı ile uğraşmanın hiçbir anlamı yok. Bu
   noktada eğer bir şey eklenecekse bunun öyle ya da böyle daha önceden
   kapatılmayan bi boşluğu dolduruyor olması gerek.

   Bence, Lisp programlama dili tarafından sunulan fonksiyonel
   programlama ve rekürsif işlem kolaylığının, esnekliğinin, veri
   işlemede çok başarılı bir şekilde kullanılabilir. Konu hakkında
   sizin fikirleriniz nelerdir? Sizce gerçekten Lisp sözdizimi
   yukarıda bahsi geçen prosedürel dillere ile kıyaslandığında veri
   işlemede bunca çabaya değebilecek bir artı sağlar mı? Böyle bir
   özelliği "Evet ben kullanırım!", "Şunu şunu yapan adamlar kesin
   kullanır." diyebilecek olanımız var mı?


Veritabani isleri ile yogun olarak ugrasiyorum ama MS teknolojileri ile. Yillardir MS SQL Server kullaniyorum. MS SQL Server'da PostgreSQL'e benzer bir durum olusmaya basladi. Simdiye dek sadece T-SQL denen bir dil ile stored procedure yazilabilirken artik yavas yavas C#
dili ile yazma destegi de geliyor.

Kendi durumumu düsünüyorum, mesela C# ile stored procedure yazmak ister miydim,
bu ne avantaj saglardi?

Birincisi homojenlik: Uygulamami C# ile yaziyorum. Uygulamamin kullanacagi veritabani kodunu da C# ile yazmaya baslarsam zirt pirt farkli mantaliteler ve sözdizimleri
arasinda gidip gelmem gerekmez.

Ikincisi: Framework, yani .NET ve C# ile gelen binlerce "class library". String islemlerinden tutun XML konusuna ve baska pek cok seye dair her zaman elimin altinda olan islevselligin artik veritabaninin icinde de ayni sekilde kullaniliyor olmasi güzel bir nokta olur.

Ucüncüsü: Nesneye yönelik programlama mantalitesini ve algoritmik karmasikligi
yine daha alisik oldugum bir dille ifade edebilme gücü.

Simdi bu baglamda Lisp'i ve hic kullanmamis biri olarak PostgreSQL'i düsünmeye calisiyorum.

Hangi uygulamalarda kullanilacak ne tür prosedürlerde Lisp'in ifade gücüne
ihtiyac duyulacak?

Stored procedure icinde Lisp tarzi makro tanimlayip kullanmak güzel olur muydu, bence olurdu. Daha fazlasi yapilabilir mi? Evet, mesela konu dil ifade gücü vermekse Haskell ve OCaml dillerindeki bazi güclü dil yapilarini Lisp tarzinda sunan Qi gibi bir dilin de özelliklerini barindiran karma bir veritabani programlama dili bazi durumlarda isleri muazzam bir esneklikte halletmeye imkan verebilirdi.

Yine ayni noktaya takiliyoruz: Bu muazzam güce su anda PostgreSQL kullananlarin kacta kaci ihtiyac duyar. Diyelim ki bir kismi duyar pekiyi zaten tasarlamis olduklari
bir sistemi oturup bu yeni dili kullanarak yazarlar mi? Maliyeti yüksek.



[2] Yukarıda bahsettiğim programlama dillerine baktığınızda, hepsi tek
   bir noktadan kontrol ediliyor. (Onlarca değil, - ana olarak - tek
   bir Perl ya da Python yorumlayıcısı var.) Bu da ilgili prosedürel
   dilin geliştiricilerine büyük bir kolaylık sağlıyor. Sadece o
   implementasyon için gerekli kodları yazıyorlar. Ama aynı şeyi Scheme
   ya da Common Lisp için diyemiyoruz. Bu noktada tavsiye olarak hangi
   yorumlayıcının kullanılmasını tavsiye edersiniz?

   [Bir de unutmadan, prosedürel veri işlemede yapılan iş normal bir
   programda olduğu kadar karmaşık değildir.


Sanirim yukarida kast edilen yani "prosedürel" derken, "stored procedure" mi kast ediliyor?

Eger öyle ise benim daha önce yazdiklarim akla geliyor. O kadar karmasik bir sey degilse o zaman basa cikilmasi gereken bir karmasiklik yok. Eger bu yoksa, neyi cözmeye
calisiyoruz sorusu tekrar gündeme gelir.

Bu önemli cünkü gelistirilen seyin kullanimini etkiler. Eger pek cok veritabani gelistiricisi bunu kullanmazsa o zaman dogru dürüst geribesleme gelmez. Yapilabildigi gösterilmis olur ama o sekilde kalir. "Proof of concept" kabilinden bir sey olur yani.
Istenen bu mudur? Yoksa daha fazlasi mi?


Bu yüzden Scheme'i seçmek
   bana daha mantıklı geliyor. (Bu da ayrıca tartışılabilir. Ama bu
   satırdan sonraki yazılanlarda, Scheme'i baz alarak ilerleyeceğim.)]


Yukarida "framework"e deginmistim. Bilmedigim icin sorayim, ben simdi PostgreSQL stored procedure'larini Perl ile yazacak olsam, istedigim CPAN modülünü bunun icinden kullanabiliyor muyum? Eger öyle ise cok saglam islevsellik zaten elimin altinda demektir, dilin avantajlarina
ek olarak.

Benzer sey secilecek Lisp icin de söylenebilir. Bu implement edildiginde o dilin cevresini olusturan islev kütüphaneleri de bir parcasi olacak mi? Bu durumda Scheme mi yoksa CL mi?

Birinin avantaji ne zaman dezavantaja dönüsür?



   Bu noktada bence öyle bir yorumlayıcı şeçilmeli ki, gelişimi aktif
   olarak devam ediyor (ve edecek) olmalı. Ayrıca her şeyden önemlisi,
   bir çok sistemde kurulu olarak bulunma olasılığı çok yüksek olmalı.
   Bu kriterleri göz önüne aldığımda aklıma Guile'dan başka çözüm
   gelmiyor. Sizin düşünceleriniz nelerdir?


Performansi nasil? PostgreSQL icine gömüldügünde diger dillere göre performansi nasil olur?
Bunu etkileyen faktörler neler olur?


[3] Kimseyi korkutmak istemem ama... Böyle bir iş için taşın altına
   elini koyabilecek başkaları da var mı? (Kısmen ileri düzey bir C
   bilgisi şart, bunun dışında Lisp/Scheme ya da PostgreSQL biliyor
   olmasına bile gerek yok.)

Sanırım V0 hızı için bu kadar soru yeterli.






--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.10.4/399 - Release Date: 7/25/2006


_______________________________________________
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap