81
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Skate 22 Nisan 2025, 19:26:28 »Arkadaşlar, şu sıralar bu projeye destek verecek vakit bulamamışken arada lafa girip gereksiz yer işgal etmek istemiyorum ama @Ref'in son yorumu üzerine iki noktanın altını çizmek isterim.
1) Visual Studio ve Visual Studio Code, her ikisinin de yeterli derecede JavaScript / TypeScript destekleri var. C# elbette ki Visual Studio'nun öz evladı. Ama ben bir çok farklı dili Visual Studio ile sorunsuz kullanıyorum. Hatta Unity'de JavaScript desteği varken (UnityScript diye geçiyordu) Visual Studio ile kullanıldığını hatırlıyorum. Tabii Unity yıllar önce çöpe attı JavaScript desteğini ama o zamana kadar yanlış hatırlamıyorsam yine Visual Studio ile kullanılıyordu. Özetle Visual Studio'yu C#/C++/VB.Net vs ile sınırlı olarak düşünmeyin. Çok daha fazla dile destek veriyor. Verdiği destekler her zaman kusursuz olmuyor. Örneğin 2010-2012 yılı civarınlarında C++ ve C++/CLI desteği yerlerde sürünüyordu, intellisense çalışmıyordu ki official olarak durum böyleydi, bug değildi yani. MS forumlarında MS çalışanları third party plugin öneriyorlardı. Kısacası evet, C# öz evlat, diğerleri üvey evlat. Ama Visual Studio JavaScript desteklemiyor gibi bir algı yanlış.
https://visualstudio.microsoft.com/tr/vs/features/javascript/
2) Eğer bir şey yalnızca tool ise farklı dilden olması bence "bir yere kadar" sorun değil. Örneğin @Ref C#'dan bir data exporter yazar, ana proje JavaScript olur, kardeş kardeş çalışır her ikisi yan yana. Ama şu noktada sıkıntı çıkıyor. Örneğin @Ref bir structure/class oluşturuyor ve datayı tam o formatta serialize edip kaydediyor, @dashersw aynı datayı yükleteceği noktada eğer aynı dil kullanılmış olsa iki source code ortak library bile kullanabiliyor. Yani üç proje oluyor;
* OpenFRPOSCore
* OpenFRPOSEditor
* OpenFRPOSEngine
gibi. OpenFRPOSCore her iki proje tarafından da kullanılıyor. O zaman dil ya da en azından reflection seviyesinde ortak bir interface kullanımı çok ideal oluyor. Ben geçmişte bir çok projemde bu yapıyı kullandım. Export / import edilen, serialized data yapısı değiştikçe ona göre Core library'i değiştiriyordum, hem toollar, hem engine ikisi de Core üzerinden güncel yapıyı kullanıyordu.
Ancak dil ortak olmadığı durumda da çözümler yok değil. Protobuf gibi kütüphaneler var. Tabii kendiniz de benzerini geliştirebilirsiniz ama bu işinizi epey kolaylaştırabilir.
https://protobuf.dev/
Böyle bir şey kullandığınız durumda çok fazla dil desteği olduğu için farklı iki dil kullanmanız sorun olmuyor. Her ikiniz de farklı iki dilden protobuf kullanıyorsunuz. İki farklı dilden aynı ortak structure üzerinden serialization yapabiliyorsunuz.
Fiilen bir fayda sağlayamadığım noktada bu konudaki yorumlarımı yapıp, hızla uzaklaşıyorum.
1) Visual Studio ve Visual Studio Code, her ikisinin de yeterli derecede JavaScript / TypeScript destekleri var. C# elbette ki Visual Studio'nun öz evladı. Ama ben bir çok farklı dili Visual Studio ile sorunsuz kullanıyorum. Hatta Unity'de JavaScript desteği varken (UnityScript diye geçiyordu) Visual Studio ile kullanıldığını hatırlıyorum. Tabii Unity yıllar önce çöpe attı JavaScript desteğini ama o zamana kadar yanlış hatırlamıyorsam yine Visual Studio ile kullanılıyordu. Özetle Visual Studio'yu C#/C++/VB.Net vs ile sınırlı olarak düşünmeyin. Çok daha fazla dile destek veriyor. Verdiği destekler her zaman kusursuz olmuyor. Örneğin 2010-2012 yılı civarınlarında C++ ve C++/CLI desteği yerlerde sürünüyordu, intellisense çalışmıyordu ki official olarak durum böyleydi, bug değildi yani. MS forumlarında MS çalışanları third party plugin öneriyorlardı. Kısacası evet, C# öz evlat, diğerleri üvey evlat. Ama Visual Studio JavaScript desteklemiyor gibi bir algı yanlış.
https://visualstudio.microsoft.com/tr/vs/features/javascript/
2) Eğer bir şey yalnızca tool ise farklı dilden olması bence "bir yere kadar" sorun değil. Örneğin @Ref C#'dan bir data exporter yazar, ana proje JavaScript olur, kardeş kardeş çalışır her ikisi yan yana. Ama şu noktada sıkıntı çıkıyor. Örneğin @Ref bir structure/class oluşturuyor ve datayı tam o formatta serialize edip kaydediyor, @dashersw aynı datayı yükleteceği noktada eğer aynı dil kullanılmış olsa iki source code ortak library bile kullanabiliyor. Yani üç proje oluyor;
* OpenFRPOSCore
* OpenFRPOSEditor
* OpenFRPOSEngine
gibi. OpenFRPOSCore her iki proje tarafından da kullanılıyor. O zaman dil ya da en azından reflection seviyesinde ortak bir interface kullanımı çok ideal oluyor. Ben geçmişte bir çok projemde bu yapıyı kullandım. Export / import edilen, serialized data yapısı değiştikçe ona göre Core library'i değiştiriyordum, hem toollar, hem engine ikisi de Core üzerinden güncel yapıyı kullanıyordu.
Ancak dil ortak olmadığı durumda da çözümler yok değil. Protobuf gibi kütüphaneler var. Tabii kendiniz de benzerini geliştirebilirsiniz ama bu işinizi epey kolaylaştırabilir.
https://protobuf.dev/
Böyle bir şey kullandığınız durumda çok fazla dil desteği olduğu için farklı iki dil kullanmanız sorun olmuyor. Her ikiniz de farklı iki dilden protobuf kullanıyorsunuz. İki farklı dilden aynı ortak structure üzerinden serialization yapabiliyorsunuz.
Fiilen bir fayda sağlayamadığım noktada bu konudaki yorumlarımı yapıp, hızla uzaklaşıyorum.
