K (programlama dili) - K (programming language)
| paradigma | dizi , işlevsel |
|---|---|
| Tarafından tasarlandı | Arthur Whitney |
| geliştirici | Kx Sistemleri |
| İlk ortaya çıktı | 1993 |
| Yazma disiplini | dinamik , güçlü |
| İnternet sitesi | kx |
| Tarafından etkilenmiş | |
| A+ , APL , Şema | |
| Etkilenen | |
| Q | |
K , Arthur Whitney tarafından geliştirilen ve Kx Systems tarafından ticarileştirilen tescilli bir dizi işleme programlama dilidir . Dil, bellek içi, sütun tabanlı bir veritabanı olan kdb+ ve diğer ilgili finansal ürünler için temel görevi görür . İlk olarak 1993'te geliştirilen dil, APL'nin bir türevidir ve Scheme öğelerini içerir . Dilin savunucuları, hızını, dizileri işlemedeki kolaylığını ve anlamlı sözdizimini vurgular.
Tarih
Arthur Whitney, K'yi geliştirmeden önce, önce Ken Iverson ve Roger Hui ile birlikte IP Sharp Associates'te ve daha sonra Morgan Stanley'de finansal uygulamalar geliştirerek APL ile yoğun bir şekilde çalışmıştı . Whitney, Morgan Stanley'de, APL uygulamalarının IBM ana bilgisayar bilgisayarlarından bir Sun iş istasyonu ağına taşınmasını kolaylaştırmak için APL'nin bir çeşidi olan A+'nın geliştirilmesine yardımcı oldu . A+, daha küçük bir ilkel işlevler kümesine sahipti ve hız için ve büyük zaman serisi veri kümelerini işlemek için tasarlandı.
1993 yılında Whitney, Morgan Stanley'den ayrıldı ve K dilinin ilk versiyonunu geliştirdi. Aynı zamanda ürünü ticarileştirmek için Kx Systems'ı kurdu ve Union Bank of Switzerland (UBS) ile özel bir sözleşme imzaladı . Sonraki dört yıl boyunca UBS için K kullanarak çeşitli finans ve ticaret uygulamaları geliştirdi.
Sözleşme 1997'de UBS'nin Swiss Bank ile birleşmesi ile sona erdi . 1998'de Kx Systems, K. kdb üzerine inşa edilmiş bir veritabanı olan kdb+'ı yayınladı ve bellek içi , sütun yönelimli bir veritabanıydı ve SQL benzeri bir sözdizimine sahip bir sorgu dili olan ksql'yi içeriyordu . O zamandan beri, K ve kdb+ ile çeşitli finansal ürünler geliştirilmiştir. KDB + / kene ve KDB + / Taq KDB + KDB + 'nın 64-bit sürümü 2003 yılında piyasaya çıktı ve 2001 yılında geliştirilmiştir KDB + / kene ve KDB + / Taq 2004 yılında yayımlanan KDB + dahil Q , işlevlerini birleşti bir dil temel K dili ve ksql.
Whitney, 2018'de Shakti adlı bir K türevi yayınladı.
genel bakış
K, APL ile temel özellikleri paylaşır. Her ikisi de kısa ve anlamlı sözdizimi için not edilen yorumlanmış , etkileşimli dillerdir. Sağdan sola değerlendirmeye dayalı basit öncelik kuralları vardır. Diller, dizileri işlemek için tasarlanmış zengin bir ilkel işlevler kümesi içerir. Bu ilkel işlevler, diziler üzerinde tam veri nesneleri olarak çalışan matematiksel işlemleri ve bir dizinin sırasını sıralama veya tersine çevirme gibi dizi işlemlerini içerir. Ek olarak, dil, yineleme ve özyineleme türlerini gerçekleştirmek için ilkel işlevlerle birleşen özel operatörler içerir. Sonuç olarak, bir veri kümesinin karmaşık ve genişletilmiş dönüşümleri, her bağlantının hesaplamanın bir bölümünü gerçekleştirmesi ve sonuçları zincirdeki bir sonraki bağlantıya geçirmesi ile bir alt ifadeler zinciri olarak ifade edilebilir.
APL gibi, ilkel işlevler ve operatörler tek veya çift karakterlerle temsil edilir; bununla birlikte, APL'den farklı olarak K, kendisini ASCII karakter kümesiyle sınırlar (başka bir APL varyantı olan J 'de olduğu gibi ). Buna izin vermek için, K için ilkel işlevler kümesi daha küçüktür ve iki veya daha fazla farklı işlevi veya işlemi temsil eden ASCII sembollerinin her biri ile aşırı derecede aşırı yüklenmiştir . Belirli bir ifadede, başvurulan gerçek işlev bağlam tarafından belirlenir. Sonuç olarak, K ifadeleri opak olabilir ve insanlar için ayrıştırılması zor olabilir. Örneğin, aşağıdaki yapmacık ifadede ünlem işareti ! üç farklı işlevi ifade eder:
2!!7!4
Sağdan sola ilk okuma !, 7 ve 4'te gerçekleştirilen ve 3 ile sonuçlanan modulo bölmedir. Sonraki !, numaralandırmadır ve 3'ten küçük tamsayıları listeler, sonuçta 0 1 2 !listesi elde edilir. sağ, 2 0 1 nihai sonucunu üreterek iki kez sola döndürülür.
K'nin ikinci temel ayrımı, fonksiyonların Scheme'den ödünç alınan bir kavram olan birinci sınıf nesneler olmasıdır . Birinci sınıf işlevler , bir veri değerinin kullanılabileceği bağlamlarda kullanılabilir. Fonksiyonlar anonim ifadeler olarak belirtilebilir ve doğrudan diğer ifadelerle birlikte kullanılabilir. İşlev ifadeleri, küme parantezleri kullanılarak K'de belirtilir . Örneğin, aşağıdaki ifadede ikinci dereceden bir ifade bir fonksiyon olarak tanımlanır ve 0 1 2 ve 3 değerlerine uygulanır:
{(3*x^2)+(2*x)+1}'!4
K'de, adlandırılmış işlevler, herhangi bir veri değerinin bir değişkende saklanmasıyla aynı şekilde bir değişkene depolanan işlev ifadeleridir.
a:25
f:{(x^2)-1}
Fonksiyonlar, başka bir fonksiyona argüman olarak iletilebilir veya bir fonksiyonun sonucu olarak döndürülebilir.
Örnekler
K, her ifadenin değerlendirildiği ve sonuçlarının anında görüntülendiği yorumlanmış bir dildir. Dizeler gibi değişmez ifadeler kendilerini değerlendirir. Sonuç olarak, Merhaba dünya programı önemsizdir:
"Hello world!"
Aşağıdaki ifade, dizelerin listesini uzunluklarına göre sıralar:
x@>#:'x
İfade sağdan sola şu şekilde değerlendirilir:
- #:'x, x listesindeki her kelimenin uzunluğunu döndürür.
- > bir değerler listesini azalan düzende sıralayacak dizinleri döndürür.
- @, orijinal dize listesine indekslemek için sağdaki tamsayı değerlerini kullanır.
Bir sayının asal olup olmadığını belirleyen bir fonksiyon şu şekilde yazılabilir:
{&/x!/:2_!x}
İşlev sağdan sola değerlendirilir:
- !x, x'ten küçük pozitif tam sayıları sıralar.
- 2_ numaralandırmanın (0 ve 1) ilk iki öğesini bırakır.
- x!/: orijinal tamsayı ile kesilmiş listedeki her bir değer arasında modulo bölme işlemi gerçekleştirir.
- &/ modulo sonuç listesinin minimum değerini bulun.
Eğer x asal değilse, modulo işlemi tarafından döndürülen değerlerden biri 0 ve dolayısıyla listenin minimum değeri olacaktır. x asal ise, minimum değer 1 olacaktır, çünkü x mod 2, 2'den büyük herhangi bir asal sayı için 1'dir.
Aşağıdaki fonksiyon, 1 ile R arasındaki tüm asal sayıları şu şekilde listelemek için kullanılabilir:
2_&{&/x!/:2_!x}'!R
İfade sağdan sola değerlendirilir
- !R, R'den küçük tamsayıları numaralandırır.
- ' numaralandırmanın her değerini soldaki asal sayı işlevine uygulayın. Bu, 0'lar ve 1'lerin bir listesini döndürür.
- & değerin 1 olduğu listenin dizinlerini döndürür.
- 2_ numaralandırmanın ilk iki öğesini bırakın (0 ve 1)
K finansal ürünler
K, bir finansal ürün ailesinin temelidir. Kdb+, ilişkisel bir veritabanı yönetim sistemiyle aynı işlevlerin çoğuna sahip, bellek içi, sütun tabanlı bir veritabanıdır . Veritabanı, SQL'e benzer bir sözdizimine sahip ve sütun tabanlı sorgular ve dizi analizi için tasarlanmış bir sorgu dili olan SQL , SQL-92 ve ksql'yi destekler .
Kdb+, Solaris , Linux , macOS ve Windows (32 bit veya 64 bit) dahil olmak üzere birçok işletim sistemi için kullanılabilir .
Ayrıca bakınız
Referanslar
Dış bağlantılar
- Resmi web sitesi , Kx Systems
- Resmi web sitesi , kdb+
- K'ye genel bakış (K referans kartına bağlantı ile)
- Dennis Shasha - Prototipleme Dili Olarak K
- Michael Schidlowsky - K ile Java'daki belirli bir sorunun çözümlerini karşılaştıran ekran görüntüsü
- Arthur Whitney tarafından K (2005)
- bir K klonu için oK REPL
- Kona açık kaynaklı bir K3 uygulaması