Kaynak Kodları Nasıl Programa Çevirilir?

Benzer şekilde 1.den fazla programlama dili kullanılmış (misal c++ ve Java kullanmış aynı uygulama için) dosyaları tek bir uygulama olarak derlemesi araştırıyorum bilginizi paylaşır mısınız?

Misal tüm bunlar nasıl Bi arada derlenip ortaya bi uygulama çıkarıyor?
 

Dosya Ekleri

  • IMG_20250210_133558.jpg
    IMG_20250210_133558.jpg
    43,2 KB · Görüntüleme: 32
Misal tüm bunlar nasıl Bi arada derlenip ortaya bi uygulama çıkarıyor?
Genelde Wrapper oluyor. Çoğu C++ da kullanabilmek için.
C++ ana dilin oluyor. Diğer diller ise senin yardımcıların gibi düşün.
C kullanıyor çünkü C ile geliştirilen bir lib vardır. Yada kendisi lib yazmıştır onu entegre etmiştir. C++, C kodunu çağırabiliyor. Çoğu C++ projede C kodlarınında olduğunu görürsün. Tekerleği yeniden icat etmeye gerek yok. Zamanında yazmışlar al kullan. C de yazılıyor ki hem C hemde C++ da kullanılabilsin diye.

Aynı şekilde GLSL ve Lua da C++ içinde kullabilirsin. Lua zaten yorumlanan bir dil. Python gibi, C++ içerisinden çağrım yapabiliyorsun. C++ ile fonksiyon oluşturup bunu Python yada Lua yada JavaScript içinde çağırıyorsun. Native function olarak geçer genelde.

Cmake zaten proje derleyicisi. O ayrı bir olay.

Java genelde çağrılmaz, Java içerisinden C++ çağrılıyor (Android Native vs). Ama tersi mümkün değil. Tabi yıl kaç oldu wrapper yazmışlardır kim bilir. Ama büyük ihtimalle basit bir tool için yazılmıştır. Ana projeye dahil değil, yardımcı tool geliştirmişlerdir Javada. Yada birkaç config dosyasını Java olarak görüyor da olabilir bilmiyorum. Ama Java, C++ projesinde genelde yer almaz. Ayrı bir projedir o. Mesela şöyle, C++ => Client, Java => Server gibi.
 
Genelde wrapper oluyor. Çoğu C++ da kullanabilmek için.
C++ ana dilin oluyor. Diğer diller ise senin yardımcıların gibi düşün.
C kullanıyor çünkü C ile geliştirilen bir lib vardır. Ya da kendisi lib yazmıştır onu entegre etmiştir. C++, C kodunu çağırabiliyor. Çoğu C++ projede C kodlarınında olduğunu görürsün. Tekerleği yeniden icat etmeye gerek yok. Zamanında yazmışlar al kullan. C de yazılıyor ki hem C hem de C++ da kullanılabilsin diye.

Aynı şekilde glsl ve Lua da C++ içinde kullabilirsin. Lua zaten yorumlanan bir dil. Python gibi, C++ içerisinden çağrım yapabiliyorsun. C++ ile fonksiyon oluşturup bunu Python'ya da Lua'ya da JavaScript içinde çağırıyorsun. Native function olarak geçer genelde.

Cmake zaten proje derleyicisi. O ayrı bir olay.

Java genelde çağrılmaz, Java içerisinden C++ çağrılıyor (Android native vs). Ama tersi mümkün değil. Tabii yıl kaç oldu wrapper yazmışlardır kim bilir. Ama büyük ihtimalle basit bir tool için yazılmıştır. Ana projeye dahil değil, yardımcı tool geliştirmişlerdir Java'da. Ya da birkaç Config dosyasını Java olarak görüyor da olabilir bilmiyorum. Ama Java, C++ projesinde genelde yer almaz. Ayrı bir projedir o. Mesela şöyle, C++ => Client, Java => server gibi.

Bunu örnek olarak atmıştım ancak az çok anladım demek istediğinizi herhangi bir şekilde Java dersi almadığımdan içerisinden çağırmayı anlamadım tam olarak ama merak ettiğim hepsini nasıl derleyip uygulama yapacağım GitHub'daki bazı uygulamaların derlenmiş halleri olmuyor çünkü ve geçen gün ders için fritzing diye bir uygulamayı bulmuş olsam da açık kaynaklı kodların derlenmış halini zorunlu bağışla indirmemize izin veriyorlardı forumlarında yapabilecek olan kendi derlesin uzun süren zor ve sıkıcı bir iş falan demişler kısacası kendim de yapmak istiyorum bu derleme işlerini.
 
Misal tüm bunlar nasıl Bi arada derlenip ortaya bi uygulama çıkarıyor?

20 tane farkli dil de kullansan ayni proje icinde; hepsini build edecek scriptler hazirlarsin ve bunlar binary hale getirilir. Sonra uygulamanin gereksinimine gore birbirlerine sorumluluk delege ederler. C++ ile yazdigin binary'i ayri bir process olarak calistirip data gonderirsin; Kotlin ile calisan byte kodu sunucu olarak calistirip REST istegi atarsin ya da Lua ile yazdigin scripti Rust ile yazdigin uygulamada runtime'da calistirirsin. Ya da C ile library yazarsin, Java ile yazdigin projede JNI ile native istek atarsin bu library i kullanirsin.

Her dil kendi build tooling i ile birlikte geliyor ve mantikli oldugu surece bir proje semsiyesi altinda istedigin kadar farkli dili birbirleri ile "konusacak" sekilde kullanabilirsin.

IPC konusunu inceleyebilirsin, ayri ayri calisan farkli process'lerin nasil iletisim kurabildigi; hangi metodun en verimlisi oldugu projeye gore belirlenir.

Bazi bolumleri farkli dillerde yazmanin sorumluluk dagitma gibi bir guzelligi de var. Bir tane Kotlin ekibi kurarsin ve onlar sadece o modulden sorumlu olurlar. Iletisim icin ortak bir interface belirlersin ve bu interface'e herkes uyacak sekilde bagimsiz olarak gelistirmesini yapar.
 

Technopat Haberler

Yeni konular

Geri
Yukarı