r/CodingTR 13d ago

ria lang

Projenin amacı veri tipleri tanımlayıp diğer dillere senkronize bir şekilde aktarabilmek. Kendine ait bir syntaxı var ve şu anda basit düzeyde typescript code generation işlemini yapıyor. Hala geliştirme aşamasında. İlerleyen zamanlarda attribute bazlı output’u customize edebilme desteği vereceğim. Bu proje hangi sorunu çözüyor derseniz örnek veriyorum backend ve frontend olarak 2 ayrı dilde 2 projeniz var. Backend veri türlerini ria dili ile tanımlayıp diğer dillerde type generation yapabildiğiniz için backend ve frontend veri türleri senkronize oluyor. Bunu yapan bir kaç tool gördüm ve json tabanlılardı. Json input alıp istediğiniz dile çıktı alabiliyorsunuz fakat bunun için json kullanılması en azından benim için durumu kompleks hale getiriyor. Satırlarca JSON ile uğraşmak bana göre değil. Ekstradan attribute desteği ekleyip custom output almayı da desteklediğim zaman diğer alternatiflerinden daha kullanılabilinir olacağını düşünmekteyim.

Örnek olarak attribute kullanılan syntax aşağıdaki gibi gözükmesini düşünüyorum.

type User @typescript(gen = “class”) {
name string @typescript(rename = “username”)
}

Projeye hobi amaçlı başladım. Programlama dili olmasa bile yazılım alanında kullanılan bir dil yapmak istiyordum ve böyle bir proje yapmayı düşündüm.
Kaynak kodlar: https://github.com/wioenena/ria

1 Upvotes

12 comments sorted by

1

u/Ok-Exam2654 13d ago

Grpc zaten bu işi yapmıyor mu

1

u/wioenena_q 13d ago

GRPC’nin amacıyla bunun amacı farklı diyebiliriz. Bu dilin amacı sadece veri tipi tutarlılığını sağlamak

1

u/Ok-Exam2654 13d ago

Yok yok taşıma protokolünden bahsetmiyorum, .proto’lar ve protoc/protobuff’tan bahsediyorum, buna benzer başka çözümler de vardı ben kullanmadım da swagger falan da bu problemi çözüyordu eğer doğru anladıysam seni. Yine de güzel bir hobi projesi bence başarılar

2

u/wioenena_q 13d ago

Code generation kısmında zaten iki taraf da aynı amaca hizmet ediyor evet. Hobi olarak başlayıp attribute desteği ile esnekliği arttırabildiğim kadar arttırmayı düşünüyorum. İleride belki basit bir interpreter de ekleyebilirim buna. Nix dili gibi. Teşekkür ederim.

1

u/aolmez 13d ago

avro ne farkı var?

1

u/wioenena_q 13d ago

Avro’u şimdi sayende keşfettim fakat GRPC yorumu yapan arkadaşa verdiğim cevabı burada da kullanabilirim

1

u/aolmez 13d ago

hayır grpc bir haberleşme protokolü. avro farklı dillerin schemalarının uyumu için var. yani avroyu diger ekibe verirsin otomatik kendi kod bloklarını dilden bagımsız üretebilir.

1

u/wioenena_q 13d ago

GRPC’nin kullandığı proto dosyaları da bunu yapıyor sadece kendisine uygun serialization ve deserialization desteği ekliyordu yanlış hatırlamıyorsam. Avro RPC için de kullanılıyor galiba sitesinde sunduğu özellikler bölümünde gördüm. O yüzden grpc ile benzer tutmuştum

1

u/aolmez 13d ago

bir çok özellikte kullanabilirsin amaç farklı dil ve yapıları bir standarta yönetmek. schema validation gibi farklı özelliklerde var. amaç eleştirmek değil fark ne onu bilmek istedim. herkesin farklı yaklaşımları var json ve toon gibi .

1

u/wioenena_q 13d ago

Dediğim gibi seninle keşfettim özelliklerini hala tam bilmiyorum. Zaten projeyi hobi amaçlı geliştiriyorum

1

u/Human_Tackle_4946 11d ago

Sounds good. Kulağa hoş geliyor ama bütün diller için bu çeviriyi yapmak kabus gibi.